|
|
|||
File indexing completed on 2026-08-06 09:38:28
0001 // -*- C++ -*- 0002 // 0003 // GRVBase.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_GRVBase_H 0010 #define ThePEG_GRVBase_H 0011 // This is the declaration of the GRVBase class. 0012 0013 #include "ThePEG/PDF/PDFBase.h" 0014 0015 namespace ThePEG { 0016 0017 /** 0018 * GRVBase inherits from PDFBase and is used as a base class for all 0019 * GRV parton densities. 0020 * 0021 * @see \ref GRVBaseInterfaces "The interfaces" 0022 * defined for GRVBase. 0023 */ 0024 class GRVBase: public PDFBase { 0025 0026 public: 0027 0028 /** @name Standard constructors and destructors. */ 0029 //@{ 0030 /** 0031 * Default constructor. 0032 */ 0033 GRVBase(); 0034 0035 /** 0036 * Destructor. 0037 */ 0038 virtual ~GRVBase(); 0039 //@} 0040 0041 public: 0042 0043 /** @name Virtual functions required by the PDFBase class. */ 0044 //@{ 0045 /** 0046 * Return true if this PDF can handle the extraction of parton from the 0047 * given particle, ie. if the particle is a proton or neutron. 0048 */ 0049 virtual bool canHandleParticle(tcPDPtr particle) const; 0050 0051 /** 0052 * Return the parton types which are described by these parton 0053 * densities. 0054 */ 0055 virtual cPDVector partons(tcPDPtr p) const; 0056 0057 /** 0058 * Return the value of the density of parton at the given a scale 0059 * and log fractional momentum l (the optional virtuality of the 0060 * incoming particle is not used). 0061 */ 0062 virtual double xfl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, 0063 double l, Energy2 particleScale) const; 0064 0065 /** 0066 * Return the valaens partof the density of parton at the given a 0067 * scale and log fractional momentum l (the optional virtuality of 0068 * the incoming particle is not used). 0069 */ 0070 virtual double xfvl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, 0071 double l, Energy2 particleScale) const; 0072 //@} 0073 0074 public: 0075 0076 /** @name Access derived kinematical quantities. */ 0077 //@{ 0078 /** 0079 * Return last selected 0080 * \f$S\f$. \f$S=\log(\log(Q^2/\mu^2)/\log(Q^2/\Lambda_{QCD}^2))\f$ 0081 */ 0082 double S() const { return theS; } 0083 0084 /** 0085 * Return last selected 0086 * \f$S^2\f$. \f$S=\log(\log(Q^2/\mu^2)/\log(Q^2/\Lambda_{QCD}^2))\f$ 0087 */ 0088 double S2() const { return theS2; } 0089 0090 /** 0091 * Return last selected 0092 * \f$S^3\f$. \f$S=\log(\log(Q^2/\mu^2)/\log(Q^2/\Lambda_{QCD}^2))\f$ 0093 */ 0094 double S3() const { return theS3; } 0095 0096 /** 0097 * Return last selected 0098 * \f$\sqrt{S}\f$. \f$S=\log(\log(Q^2/\mu^2)/\log(Q^2/\Lambda_{QCD}^2))\f$ 0099 */ 0100 double rootS() const { return theRootS; } 0101 0102 /** 0103 * Return last selected momentum fraction, \f$x\f$. 0104 */ 0105 double x() const { return thex; } 0106 0107 /** 0108 * Return last selected logarithmic momentum fraction 0109 * \f$l=\log(1/x)\f$. 0110 */ 0111 double lx() const { return theLx; } 0112 0113 /** 0114 * Return one minus the last selected momentum fraction, eps\f$=1-x\f$. 0115 */ 0116 double eps() const { return theEps; } 0117 0118 /** 0119 * Return the square root of the last selected momentum fraction, 0120 * \f$x\f$. 0121 */ 0122 double rootx() const { return theRootx; } 0123 0124 //@} 0125 0126 protected: 0127 0128 /** 0129 * Setup the \a l\f$=\log{1/x}\f$ and \a scale \f$Q^2\f$ to be used 0130 * in the following call to uv(), dv)=, etc. 0131 */ 0132 virtual void setup(double l, Energy2 scale) const = 0; 0133 0134 /** 0135 * Setup the \a l\f$=\log{1/x}\f$ and \a scale \f$Q^2\f$ to be used 0136 * in the following call to uv(), dv)=, etc. 0137 */ 0138 void setup(double l, Energy2 scale, Energy2 mu2, Energy2 lam2) const; 0139 0140 /** 0141 * The form of the valens density functions. 0142 */ 0143 double valens(double N, double ak, double bk, 0144 double a, double b, double c, double d) const; 0145 0146 /** 0147 * The form of the light sea and gluon density 0148 * functions. 0149 */ 0150 double lightsea(double al, double be, double ak, double bk, double a, 0151 double b, double c, double d, double e, double es) const; 0152 0153 /** 0154 * The form of the heavy sea density functions. 0155 */ 0156 double heavysea(double sth, double al, double be, double ak, double ag, 0157 double b, double d, double e, double es) const; 0158 0159 /** 0160 * Return the value of the u valens density for the values previously given 0161 * by setup(). 0162 */ 0163 virtual double uv() const = 0; 0164 0165 /** 0166 * Return the value of the d valens density for the values previously given 0167 * by setup(). 0168 */ 0169 virtual double dv() const = 0; 0170 0171 /** 0172 * Return the value of the difference between the u and d sea 0173 * densities for the values previously given by setup(). 0174 */ 0175 virtual double del() const = 0; 0176 0177 /** 0178 * Return the value of the average u and d sea densities for the 0179 * values previously given by setup(). 0180 */ 0181 virtual double udb() const = 0; 0182 0183 /** 0184 * Return the value of the s density for the values previously given by 0185 * setup(). 0186 */ 0187 virtual double sb() const = 0; 0188 0189 /** 0190 * Return the value of the c density for the values previously given by 0191 * setup(). 0192 */ 0193 virtual double cb() const = 0; 0194 0195 /** 0196 * Return the value of the b density for the values previously given by 0197 * setup(). 0198 */ 0199 virtual double bb() const = 0; 0200 0201 /** 0202 * Return the value of the gluon densities for the values previously 0203 * given by setup(). 0204 */ 0205 virtual double gl() const = 0; 0206 0207 /** 0208 * fuv() returns the saved values from the quv() functions if 0209 * present. Otherwise uv() is called, saved and returned. 0210 */ 0211 double fuv() const { return uvSave >= 0.0? uvSave: ( uvSave = uv() ); } 0212 0213 /** 0214 * fdv() returns the saved values from the dv() functions if 0215 * present. Otherwise dv() is called, saved and returned. 0216 */ 0217 double fdv() const { return dvSave >= 0.0? dvSave: ( dvSave = dv() ); } 0218 0219 /** 0220 * fdel() returns the saved values from the del() functions if 0221 * present. Otherwise del() is called, saved and returned. 0222 */ 0223 double fdel() const { return delSave >= 0.0? delSave: ( delSave = del() ); } 0224 0225 /** 0226 * fudb() returns the saved values from the udb() functions if 0227 * present. Otherwise udb() is called, saved and returned. 0228 */ 0229 double fudb() const { return udbSave >= 0.0? udbSave: ( udbSave = udb() ); } 0230 0231 /** 0232 * fsb() returns the saved values from the sb() functions if 0233 * present. Otherwise sb() is called, saved and returned. 0234 */ 0235 double fsb() const { return sbSave >= 0.0? sbSave: ( sbSave = sb() ); } 0236 0237 /** 0238 * fcb() returns the saved values from the cb() functions if 0239 * present. Otherwise cb() is called, saved and returned. 0240 */ 0241 double fcb() const { return cbSave >= 0.0? cbSave: ( cbSave = cb() ); } 0242 0243 /** 0244 * fbb() returns the saved values from the bb() functions if 0245 * present. Otherwise bb() is called, saved and returned. 0246 */ 0247 double fbb() const { return bbSave >= 0.0? bbSave: ( bbSave = bb() ); } 0248 0249 /** 0250 * fgl() returns the saved values from the gl() functions if 0251 * present. Otherwise gl() is called, saved and returned. 0252 */ 0253 double fgl() const { return glSave >= 0.0? glSave: ( glSave = gl() ); } 0254 0255 public: 0256 0257 /** 0258 * Standard Init function used to initialize the interface. 0259 */ 0260 static void Init(); 0261 0262 private: 0263 0264 /** 0265 * The last selected logarithmic momentum fraction 0266 * \f$l=\log(1/x)\f$. 0267 */ 0268 mutable double theLx; 0269 0270 /** 0271 * THe last selected momentum fraction, \f$x\f$. 0272 */ 0273 mutable double thex; 0274 0275 /** 0276 * One minus the last selected momentum fraction, eps\f$=1-x\f$. 0277 */ 0278 mutable double theEps; 0279 0280 /** 0281 * The square root of the last selected momentum fraction, \f$x\f$. 0282 */ 0283 mutable double theRootx; 0284 0285 /** 0286 * The last selected scale. 0287 */ 0288 mutable Energy2 Q2; 0289 0290 /** 0291 * The last used \f$\Lambda_{QCD}^2\f$. 0292 */ 0293 mutable Energy2 theLam2; 0294 0295 /** 0296 * The last used \f$\mu^2\f$. 0297 */ 0298 mutable Energy2 theMu2; 0299 0300 /** 0301 * The last selected 0302 * \f$S\f$. \f$S=\log(\log(Q^2/\mu^2)/\log(Q^2/\Lambda_{QCD}^2))\f$ 0303 */ 0304 mutable double theS; 0305 0306 /** 0307 * Return last selected \f$S^2\f$. 0308 */ 0309 mutable double theS2; 0310 0311 /** 0312 * Return last selected \f$S^3\f$. 0313 */ 0314 mutable double theS3; 0315 0316 /** 0317 * Return last selected \f$\sqrt{S}\f$. 0318 */ 0319 mutable double theRootS; 0320 0321 /** 0322 * Saved values from the different functions. 0323 */ 0324 mutable double uvSave; 0325 0326 /** 0327 * Saved values from the different functions. 0328 */ 0329 mutable double dvSave; 0330 0331 /** 0332 * Saved values from the different functions. 0333 */ 0334 mutable double delSave; 0335 0336 /** 0337 * Saved values from the different functions. 0338 */ 0339 mutable double udbSave; 0340 0341 /** 0342 * Saved values from the different functions. 0343 */ 0344 mutable double sbSave; 0345 0346 /** 0347 * Saved values from the different functions. 0348 */ 0349 mutable double cbSave; 0350 0351 /** 0352 * Saved values from the different functions. 0353 */ 0354 mutable double bbSave; 0355 0356 /** 0357 * Saved values from the different functions. 0358 */ 0359 mutable double glSave; 0360 0361 private: 0362 0363 /** 0364 * Private and non-existent assignment operator. 0365 */ 0366 GRVBase & operator=(const GRVBase &) = delete; 0367 0368 }; 0369 0370 } 0371 0372 #endif /* ThePEG_GRVBase_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|