thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
GRVBase.h
1 // -*- C++ -*-
2 //
3 // GRVBase.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2019 Leif Lonnblad
5 //
6 // ThePEG is licenced under version 3 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef ThePEG_GRVBase_H
10 #define ThePEG_GRVBase_H
11 // This is the declaration of the GRVBase class.
12 
13 #include "ThePEG/PDF/PDFBase.h"
14 
15 namespace ThePEG {
16 
24 class GRVBase: public PDFBase {
25 
26 public:
27 
33  GRVBase();
34 
38  virtual ~GRVBase();
40 
41 public:
42 
49  virtual bool canHandleParticle(tcPDPtr particle) const;
50 
55  virtual cPDVector partons(tcPDPtr p) const;
56 
62  virtual double xfl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
63  double l, Energy2 particleScale) const;
64 
70  virtual double xfvl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
71  double l, Energy2 particleScale) const;
73 
74 public:
75 
82  double S() const { return theS; }
83 
88  double S2() const { return theS2; }
89 
94  double S3() const { return theS3; }
95 
100  double rootS() const { return theRootS; }
101 
105  double x() const { return thex; }
106 
111  double lx() const { return theLx; }
112 
116  double eps() const { return theEps; }
117 
122  double rootx() const { return theRootx; }
123 
125 
126 protected:
127 
132  virtual void setup(double l, Energy2 scale) const = 0;
133 
138  void setup(double l, Energy2 scale, Energy2 mu2, Energy2 lam2) const;
139 
143  double valens(double N, double ak, double bk,
144  double a, double b, double c, double d) const;
145 
150  double lightsea(double al, double be, double ak, double bk, double a,
151  double b, double c, double d, double e, double es) const;
152 
156  double heavysea(double sth, double al, double be, double ak, double ag,
157  double b, double d, double e, double es) const;
158 
163  virtual double uv() const = 0;
164 
169  virtual double dv() const = 0;
170 
175  virtual double del() const = 0;
176 
181  virtual double udb() const = 0;
182 
187  virtual double sb() const = 0;
188 
193  virtual double cb() const = 0;
194 
199  virtual double bb() const = 0;
200 
205  virtual double gl() const = 0;
206 
211  double fuv() const { return uvSave >= 0.0? uvSave: ( uvSave = uv() ); }
212 
217  double fdv() const { return dvSave >= 0.0? dvSave: ( dvSave = dv() ); }
218 
223  double fdel() const { return delSave >= 0.0? delSave: ( delSave = del() ); }
224 
229  double fudb() const { return udbSave >= 0.0? udbSave: ( udbSave = udb() ); }
230 
235  double fsb() const { return sbSave >= 0.0? sbSave: ( sbSave = sb() ); }
236 
241  double fcb() const { return cbSave >= 0.0? cbSave: ( cbSave = cb() ); }
242 
247  double fbb() const { return bbSave >= 0.0? bbSave: ( bbSave = bb() ); }
248 
253  double fgl() const { return glSave >= 0.0? glSave: ( glSave = gl() ); }
254 
255 public:
256 
260  static void Init();
261 
262 private:
263 
268  mutable double theLx;
269 
273  mutable double thex;
274 
278  mutable double theEps;
279 
283  mutable double theRootx;
284 
288  mutable Energy2 Q2;
289 
293  mutable Energy2 theLam2;
294 
298  mutable Energy2 theMu2;
299 
304  mutable double theS;
305 
309  mutable double theS2;
310 
314  mutable double theS3;
315 
319  mutable double theRootS;
320 
324  mutable double uvSave;
325 
329  mutable double dvSave;
330 
334  mutable double delSave;
335 
339  mutable double udbSave;
340 
344  mutable double sbSave;
345 
349  mutable double cbSave;
350 
354  mutable double bbSave;
355 
359  mutable double glSave;
360 
361 private:
362 
366  GRVBase & operator=(const GRVBase &) = delete;
367 
368 };
369 
370 }
371 
372 #endif /* ThePEG_GRVBase_H */
double S3() const
Return last selected .
Definition: GRVBase.h:94
double heavysea(double sth, double al, double be, double ak, double ag, double b, double d, double e, double es) const
The form of the heavy sea density functions.
double sbSave
Saved values from the different functions.
Definition: GRVBase.h:344
double fcb() const
fcb() returns the saved values from the cb() functions if present.
Definition: GRVBase.h:241
GRVBase inherits from PDFBase and is used as a base class for all GRV parton densities.
Definition: GRVBase.h:24
double S2() const
Return last selected .
Definition: GRVBase.h:88
double valens(double N, double ak, double bk, double a, double b, double c, double d) const
The form of the valens density functions.
Energy2 theLam2
The last used .
Definition: GRVBase.h:293
TransientConstRCPtr is a simple wrapper around a bare const pointer which can be assigned to and from...
Definition: RCPtr.h:696
double eps() const
Return one minus the last selected momentum fraction, eps .
Definition: GRVBase.h:116
double glSave
Saved values from the different functions.
Definition: GRVBase.h:359
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
GRVBase()
Default constructor.
virtual double dv() const =0
Return the value of the d valens density for the values previously given by setup().
double x() const
Return last selected momentum fraction, .
Definition: GRVBase.h:105
double dvSave
Saved values from the different functions.
Definition: GRVBase.h:329
double fgl() const
fgl() returns the saved values from the gl() functions if present.
Definition: GRVBase.h:253
virtual double bb() const =0
Return the value of the b density for the values previously given by setup().
virtual double xfl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double l, Energy2 particleScale) const
Return the value of the density of parton at the given a scale and log fractional momentum l (the opt...
double cbSave
Saved values from the different functions.
Definition: GRVBase.h:349
virtual double xfvl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double l, Energy2 particleScale) const
Return the valaens partof the density of parton at the given a scale and log fractional momentum l (t...
PDFBase is the base class for implementing parton density functions for particles with sub-structure...
Definition: PDFBase.h:40
virtual double gl() const =0
Return the value of the gluon densities for the values previously given by setup().
double delSave
Saved values from the different functions.
Definition: GRVBase.h:334
double theS2
Return last selected .
Definition: GRVBase.h:309
double rootx() const
Return the square root of the last selected momentum fraction, .
Definition: GRVBase.h:122
double fdv() const
fdv() returns the saved values from the dv() functions if present.
Definition: GRVBase.h:217
Energy2 theMu2
The last used .
Definition: GRVBase.h:298
vector< cPDPtr > cPDVector
A vector of pointers to const ParticleData objects.
Definition: Containers.h:36
double theLx
The last selected logarithmic momentum fraction .
Definition: GRVBase.h:268
double bbSave
Saved values from the different functions.
Definition: GRVBase.h:354
double thex
THe last selected momentum fraction, .
Definition: GRVBase.h:273
double fudb() const
fudb() returns the saved values from the udb() functions if present.
Definition: GRVBase.h:229
double S() const
Return last selected .
Definition: GRVBase.h:82
double theRootx
The square root of the last selected momentum fraction, .
Definition: GRVBase.h:283
double theEps
One minus the last selected momentum fraction, eps .
Definition: GRVBase.h:278
double uvSave
Saved values from the different functions.
Definition: GRVBase.h:324
virtual bool canHandleParticle(tcPDPtr particle) const
Return true if this PDF can handle the extraction of parton from the given particle, ie.
virtual double cb() const =0
Return the value of the c density for the values previously given by setup().
double fuv() const
fuv() returns the saved values from the quv() functions if present.
Definition: GRVBase.h:211
double fsb() const
fsb() returns the saved values from the sb() functions if present.
Definition: GRVBase.h:235
double theRootS
Return last selected .
Definition: GRVBase.h:319
static void Init()
Standard Init function used to initialize the interface.
double lightsea(double al, double be, double ak, double bk, double a, double b, double c, double d, double e, double es) const
The form of the light sea and gluon density functions.
virtual double sb() const =0
Return the value of the s density for the values previously given by setup().
virtual double del() const =0
Return the value of the difference between the u and d sea densities for the values previously given ...
GRVBase & operator=(const GRVBase &)=delete
Private and non-existent assignment operator.
double lx() const
Return last selected logarithmic momentum fraction .
Definition: GRVBase.h:111
double theS
The last selected .
Definition: GRVBase.h:304
virtual cPDVector partons(tcPDPtr p) const
Return the parton types which are described by these parton densities.
virtual double udb() const =0
Return the value of the average u and d sea densities for the values previously given by setup()...
virtual double uv() const =0
Return the value of the u valens density for the values previously given by setup().
double udbSave
Saved values from the different functions.
Definition: GRVBase.h:339
double rootS() const
Return last selected .
Definition: GRVBase.h:100
virtual ~GRVBase()
Destructor.
virtual void setup(double l, Energy2 scale) const =0
Setup the l and scale to be used in the following call to uv(), dv)=, etc.
double fdel() const
fdel() returns the saved values from the del() functions if present.
Definition: GRVBase.h:223
Energy2 Q2
The last selected scale.
Definition: GRVBase.h:288
double theS3
Return last selected .
Definition: GRVBase.h:314
double fbb() const
fbb() returns the saved values from the bb() functions if present.
Definition: GRVBase.h:247