Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:38:28

0001 // -*- C++ -*-
0002 //
0003 // GRV94L.h is a part of ThePEG - Toolkit for HEP Event Generation
0004 // Copyright (C) 1999-2019 Leif Lonnblad
0005 //
0006 // ThePEG is licenced under version 3 of the GPL, see COPYING for details.
0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
0008 //
0009 #ifndef ThePEG_GRV94L_H
0010 #define ThePEG_GRV94L_H
0011 // This is the declaration of the GRV94L class.
0012 
0013 #include "ThePEG/PDF/GRVBase.h"
0014 
0015 namespace ThePEG {
0016 
0017 /**
0018  * GRV94L inherits from PDFBase via the GRVBase class and implements
0019  * the GRV94L parton densities for (anti) protons and neutrons.
0020  *
0021  * @see \ref GRV94LInterfaces "The interfaces"
0022  * defined for GRV94L.
0023  */
0024 class GRV94L: public GRVBase {
0025 
0026   /**
0027    * Return the cutoff scale.
0028    */
0029   Energy2 mu2() const { return 0.23*GeV2; }
0030 
0031   /**
0032    * Return the square of \f$\Lambda_{QCD}\f$ used.
0033    */
0034   Energy2 lam2() const { return sqr(0.2322*GeV); }
0035 
0036 protected:
0037 
0038   /**
0039    * Setup the \a l\f$=\log{1/x}\f$ and \a scale \f$Q^2\f$ to be used
0040    * in the following call to uv(), dv)=, etc.
0041    */
0042   virtual void setup(double l, Energy2 scale) const;
0043 
0044   /**
0045    * Return the value of the u valens density for the values previously given
0046    * by setup().
0047    */
0048   virtual double uv() const;
0049 
0050   /**
0051    * Return the value of the d valens density for the values previously given
0052    * by setup().
0053    */
0054   virtual double dv() const;
0055 
0056   /**
0057    * Return the value of the difference between the u and d sea
0058    * densities for the values previously given by setup().
0059    */
0060   virtual double del() const;
0061 
0062   /**
0063    * Return the value of the average u and d sea densities for the
0064    * values previously given by setup().
0065    */
0066   virtual double udb() const;
0067 
0068   /**
0069    * Return the value of the s density for the values previously given by
0070    * setup().
0071    */
0072   virtual double sb() const;
0073 
0074   /**
0075    * Return the value of the c density for the values previously given by
0076    * setup().
0077    */
0078   virtual double cb() const;
0079 
0080   /**
0081    * Return the value of the b density for the values previously given by
0082    * setup().
0083    */
0084   virtual double bb() const;
0085 
0086   /**
0087    * Return the value of the gluon densities for the values previously
0088    * given by setup().
0089    */
0090   virtual double gl() const;
0091 
0092 public:
0093 
0094   /**
0095    * Standard Init function used to initialize the interface.
0096    */
0097   static void Init();
0098 
0099 protected:
0100 
0101   /** @name Clone Methods. */
0102   //@{
0103   /**
0104    * Make a simple clone of this object.
0105    * @return a pointer to the new object.
0106    */
0107   virtual IBPtr clone() const;
0108 
0109   /** Make a clone of this object, possibly modifying the cloned object
0110    * to make it sane.
0111    * @return a pointer to the new object.
0112    */
0113   virtual IBPtr fullclone() const;
0114   //@}
0115 
0116 private:
0117 
0118   /**
0119    * Describe a concrete class without persistent data.
0120    */
0121   static NoPIOClassDescription<GRV94L> initGRV94L;
0122 
0123   /**
0124    *  Private and non-existent assignment operator.
0125    */
0126   GRV94L & operator=(const GRV94L &) = delete;
0127 
0128 };
0129 
0130 /** @cond TRAITSPECIALIZATIONS */
0131 
0132 /** This template specialization informs ThePEG about the
0133  *  base classes of GRV94L. */
0134 template <>
0135 struct BaseClassTrait<GRV94L,1>: public ClassTraitsType {
0136   /** Typedef of the first base class of GRV94L. */
0137   typedef GRVBase NthBase;
0138 };
0139 
0140 /** This template specialization informs ThePEG about the name of the
0141  *  GRV94L class and the shared object where it is defined. */
0142 template <>
0143 struct ClassTraits<GRV94L>: public ClassTraitsBase<GRV94L> {
0144   /** Return a platform-independent class name */
0145   static string className() { return "ThePEG::GRV94L"; }
0146   /** Return the name of the shared library be loaded to get access to
0147    *  the GRV94L class and every other class it uses (except
0148    *  the base class). */
0149   static string library() { return "GRV94L.so"; }
0150 };
0151 
0152 /** @endcond */
0153 
0154 }
0155 
0156 #endif /* ThePEG_GRV94L_H */