herwig is hosted by Hepforge, IPPP Durham
Herwig++  2.7.0
Herwig::MRST Class Reference

Implementation of the MRST PDFs. More...

#include <MRST.h>

Inheritance diagram for Herwig::MRST:

List of all members.

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

MRSToperator= (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 $x_2$ obtained by a polynomial interpolatio using the three points $(x_i,y_i)$.
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< MRSTinitMRST
 The static object used to initialize the description of this class.
static double xx [nx+1]
 The $x$ values for interpolation.
static double lxx [nx+1]
 The $x$ values for interpolation.
static double lxxb [nx+1]
 The $x$ values for interpolation.
static double qq [nq+1]
 The $q^2$ values for interpolation.
static double lqq [nq+1]
 The $q^2$ 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 $x$ for the interpolation.
static const int nq = 37
 Number of points in $q^2$ for the interpolation.
static const int nqc0 = 2
 $q^2$ bin where charm introduced
static const int nqb0 = 11
 $q^2$ bin where bottom introduced
static const int ntenth = 23
 Parameter for the FORTRAN interpolation.
static const double xmin
 Minimum value of $x$.
static const double xmax
 Maximum value of $x$.
static const Energy2 qsqmin
 Minimum value of $q^2$.
static const Energy2 qsqmax
 Maximum value of $q^2$.
static const Energy2 mc2
 Mass squared of the charm quark.
static const Energy2 mb2
 Mass squared of the bottom quark.

Detailed Description

Implementation of the MRST PDFs.

See also:
The interfaces defined for MRST.

Definition at line 29 of file MRST.h.


Member Function Documentation

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.

Parameters:
particleThe particle

Implements ThePEG::PDFBase.

virtual IBPtr Herwig::MRST::clone ( ) const [inline, protected, virtual]

Make a simple clone of this object.

Returns:
a pointer to the new 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.

Returns:
a pointer to the new object.

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.

Parameters:
rereadWhether 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].

Parameters:
xxThe x values
nThe number of values
xThe 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()

Parameters:
iThe PDF flavour
nThe x bin index
mThe q^2 bin index
uThe fractional position along the current x bin
tThe fractional position along the current q^2 bin
MRST& Herwig::MRST::operator= ( const MRST ) [private]

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.

Parameters:
pThe 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.

Parameters:
xThe energy fraction
q2The scale
particleThe beam particle
partonThe parton for which to return the PDF.
typeType of PDF, sea, valence or total.
void Herwig::MRST::persistentInput ( PersistentIStream is,
int  version 
)

Function used to read in object persistently.

Parameters:
isthe persistent input stream read from.
versionthe version number of the object when written.

Reimplemented from ThePEG::PDFBase.

Function used to write out object persistently.

Parameters:
osthe 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 $x_2$ obtained by a polynomial interpolatio using the three points $(x_i,y_i)$.

Parameters:
x1The $x$ value at the first point
x2The $x$ value at the second point
x3The $x$ value at the third point
y1The $y$ value at the first point
y2The $y$ value at the second point
y3The $y$ 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.

Parameters:
particleThe beam particle
partonThe parton for which to return the PDF.
partonScaleThe scale at which to evaluate the PDF.
xThe momentum fraction
eps??? an unknown parameter from ThePEG.
particleScaleThe 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.

Parameters:
particleThe beam particle
partonThe parton for which to return the PDF.
partonScaleThe scale at which to evaluate the PDF.
xThe momentum fraction
eps??? an unknown parameter from ThePEG.
particleScaleThe scale for the particle

Reimplemented from ThePEG::PDFBase.


Member Data Documentation

The static object used to initialize the description of this class.

Indicates that this is a concrete class with persistent data.

Definition at line 168 of file MRST.h.

const int Herwig::MRST::np = 8 [static, private]

Parameters for the MRST data tables.

Number of distributions to interpolate

Definition at line 243 of file MRST.h.


The documentation for this class was generated from the following file: