Herwig++
2.7.0
|
Implementation of the MRST PDFs. More...
#include <MRST.h>
Public Member Functions | |
Standard constructors and destructors. | |
MRST () | |
Default constructor. | |
Virtual functions from PDFBase | |
virtual bool | canHandleParticle (tcPDPtr particle) const |
Return true if this PDF can handle the extraction of parton from the given particle ie. | |
virtual cPDVector | partons (tcPDPtr p) const |
Return the parton types which are described by these parton densities. | |
virtual double | xfx (tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps=0.0, Energy2 particleScale=ZERO) const |
Return x times the pdf for the given parameters. | |
virtual double | xfvx (tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps=0.0, Energy2 particleScale=ZERO) const |
Return x times the valence pdf for the given parameters. | |
virtual double | xfsx (tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps=0.0, Energy2 particleScale=ZERO) const |
The sea density. | |
Functions used by the persistent I/O system. | |
void | persistentOutput (PersistentOStream &os) const |
Function used to write out object persistently. | |
void | persistentInput (PersistentIStream &is, int version) |
Function used to read in object persistently. | |
Static Public Member Functions | |
static void | Init () |
The standard Init function used to initialize the interfaces. | |
Protected Member Functions | |
Clone Methods. | |
virtual IBPtr | clone () const |
Make a simple clone of this object. | |
virtual IBPtr | fullclone () const |
Make a clone of this object, possibly modifying the cloned object to make it sane. | |
Standard Interfaced functions. | |
virtual void | doinitrun () |
Initialize this object. | |
Private Types | |
enum | PDFFlavour { upValence = 1, dnValence, glu, upSea, chm, str, bot, dnSea } |
Enumeration to storage the types of partons. | |
enum | PDFType { Sea, Valence, Total } |
Enum for type of pdf to return. | |
Private Member Functions | |
MRST & | operator= (const MRST &) |
The assignment operator is private and must never be called. | |
double | lookup (PDFFlavour i, int n, int m, double u, double t) const |
This function interpolates the PDF value for the given bin numbers and fractional positions inside the bin. | |
double | pdfValue (double x, Energy2 q2, tcPDPtr particle, tcPDPtr parton, PDFType type) const |
This function calculates the PDF value for the given particles and a given x and q. | |
int | locate (double xx[], int n, double x) const |
Returns an integer j such that x lies inbetween xx[j] and xx[j+1]. | |
double | polderivative (double x1, double x2, double x3, double y1, double y2, double y3) const |
Return the estimate of the derivative at obtained by a polynomial interpolatio using the three points . | |
virtual void | readSetup (istream &) |
Read the data from the file. | |
void | initialize (bool reread=true) |
Initialize the data. | |
Private Attributes | |
unsigned | _inter |
Use FORTRAN or C++ MRST interpolation. | |
double | _xswitch |
X value to switch from cubic to linear. | |
string | _file |
The name of the file. | |
vector< vector< vector< double > > > | data |
Array containing the data to be interpolated. | |
vector< vector< vector< double > > > | fdata |
Array containing the data to be interpolated. | |
double | c [np+1][nx][nq][5][5] |
Coefficients used for interpolation. | |
Static Private Attributes | |
static ClassDescription< MRST > | initMRST |
The static object used to initialize the description of this class. | |
static double | xx [nx+1] |
The values for interpolation. | |
static double | lxx [nx+1] |
The values for interpolation. | |
static double | lxxb [nx+1] |
The values for interpolation. | |
static double | qq [nq+1] |
The values for interpolation. | |
static double | lqq [nq+1] |
The values for interpolation. | |
static double | n0 [np+1] |
The powers n0 for the FORTRAN interpolation. | |
static bool | initialized |
where or not initialized | |
static const int | np = 8 |
Parameters for the MRST data tables. | |
static const int | nx = 49 |
Number of points in for the interpolation. | |
static const int | nq = 37 |
Number of points in for the interpolation. | |
static const int | nqc0 = 2 |
bin where charm introduced | |
static const int | nqb0 = 11 |
bin where bottom introduced | |
static const int | ntenth = 23 |
Parameter for the FORTRAN interpolation. | |
static const double | xmin |
Minimum value of . | |
static const double | xmax |
Maximum value of . | |
static const Energy2 | qsqmin |
Minimum value of . | |
static const Energy2 | qsqmax |
Maximum value of . | |
static const Energy2 | mc2 |
Mass squared of the charm quark. | |
static const Energy2 | mb2 |
Mass squared of the bottom quark. |
Implementation of the MRST PDFs.
virtual bool Herwig::MRST::canHandleParticle | ( | tcPDPtr | particle | ) | const [virtual] |
Return true if this PDF can handle the extraction of parton from the given particle ie.
if the particle is a proton or neutron.
particle | The particle |
Implements ThePEG::PDFBase.
virtual IBPtr Herwig::MRST::clone | ( | ) | const [inline, protected, virtual] |
Make a simple clone of this object.
Implements ThePEG::InterfacedBase.
virtual void Herwig::MRST::doinitrun | ( | ) | [protected, virtual] |
Initialize this object.
Called in the run phase just before a run begins.
Reimplemented from ThePEG::InterfacedBase.
virtual IBPtr Herwig::MRST::fullclone | ( | ) | const [inline, protected, virtual] |
Make a clone of this object, possibly modifying the cloned object to make it sane.
Reimplemented from ThePEG::InterfacedBase.
static void Herwig::MRST::Init | ( | ) | [static] |
The standard Init function used to initialize the interfaces.
Called exactly once for each class by the class description system before the main function starts or when this class is dynamically loaded.
Reimplemented from ThePEG::PDFBase.
void Herwig::MRST::initialize | ( | bool | reread = true | ) | [private] |
Initialize the data.
reread | Whether or not to reread the data |
int Herwig::MRST::locate | ( | double | xx[], |
int | n, | ||
double | x | ||
) | const [inline, private] |
Returns an integer j such that x lies inbetween xx[j] and xx[j+1].
xx | The x values |
n | The number of values |
x | The x value |
double Herwig::MRST::lookup | ( | PDFFlavour | i, |
int | n, | ||
int | m, | ||
double | u, | ||
double | t | ||
) | const [inline, private] |
This function interpolates the PDF value for the given bin numbers and fractional positions inside the bin.
It is a helper function for pdfValue()
i | The PDF flavour |
n | The x bin index |
m | The q^2 bin index |
u | The fractional position along the current x bin |
t | The fractional position along the current q^2 bin |
The assignment operator is private and must never be called.
In fact, it should not even be implemented.
virtual cPDVector Herwig::MRST::partons | ( | tcPDPtr | p | ) | const [virtual] |
Return the parton types which are described by these parton densities.
p | The particle |
Implements ThePEG::PDFBase.
double Herwig::MRST::pdfValue | ( | double | x, |
Energy2 | q2, | ||
tcPDPtr | particle, | ||
tcPDPtr | parton, | ||
PDFType | type | ||
) | const [private] |
This function calculates the PDF value for the given particles and a given x and q.
x | The energy fraction |
q2 | The scale |
particle | The beam particle |
parton | The parton for which to return the PDF. |
type | Type of PDF, sea, valence or total. |
void Herwig::MRST::persistentInput | ( | PersistentIStream & | is, |
int | version | ||
) |
Function used to read in object persistently.
is | the persistent input stream read from. |
version | the version number of the object when written. |
Reimplemented from ThePEG::PDFBase.
void Herwig::MRST::persistentOutput | ( | PersistentOStream & | os | ) | const |
Function used to write out object persistently.
os | the persistent output stream written to. |
Reimplemented from ThePEG::PDFBase.
double Herwig::MRST::polderivative | ( | double | x1, |
double | x2, | ||
double | x3, | ||
double | y1, | ||
double | y2, | ||
double | y3 | ||
) | const [inline, private] |
Return the estimate of the derivative at obtained by a polynomial interpolatio using the three points .
x1 | The value at the first point |
x2 | The value at the second point |
x3 | The value at the third point |
y1 | The value at the first point |
y2 | The value at the second point |
y3 | The value at the third point |
virtual double Herwig::MRST::xfsx | ( | tcPDPtr | particle, |
tcPDPtr | parton, | ||
Energy2 | partonScale, | ||
double | x, | ||
double | eps = 0.0 , |
||
Energy2 | particleScale = ZERO |
||
) | const [virtual] |
The sea density.
Return the pdf for the given cvalence parton inside the given particle for the virtuality partonScale and momentum fraction x. The particle is assumed to have a virtuality particleScale. If not overidden by a sub class this implementation will assume that the difference between a quark and anti-quark distribution is due do valense quarks.
Reimplemented from ThePEG::PDFBase.
virtual double Herwig::MRST::xfvx | ( | tcPDPtr | particle, |
tcPDPtr | parton, | ||
Energy2 | partonScale, | ||
double | x, | ||
double | eps = 0.0 , |
||
Energy2 | particleScale = ZERO |
||
) | const [virtual] |
Return x times the valence pdf for the given parameters.
particle | The beam particle |
parton | The parton for which to return the PDF. |
partonScale | The scale at which to evaluate the PDF. |
x | The momentum fraction |
eps | ??? an unknown parameter from ThePEG. |
particleScale | The scale for the particle |
Reimplemented from ThePEG::PDFBase.
virtual double Herwig::MRST::xfx | ( | tcPDPtr | particle, |
tcPDPtr | parton, | ||
Energy2 | partonScale, | ||
double | x, | ||
double | eps = 0.0 , |
||
Energy2 | particleScale = ZERO |
||
) | const [virtual] |
Return x times the pdf for the given parameters.
particle | The beam particle |
parton | The parton for which to return the PDF. |
partonScale | The scale at which to evaluate the PDF. |
x | The momentum fraction |
eps | ??? an unknown parameter from ThePEG. |
particleScale | The scale for the particle |
Reimplemented from ThePEG::PDFBase.
ClassDescription<MRST> Herwig::MRST::initMRST [static, private] |
const int Herwig::MRST::np = 8 [static, private] |