ThePEG  1.8.0
BudnevPDF.h
1 // -*- C++ -*-
2 #ifndef THEPEG_BudnevPDF_H
3 #define THEPEG_BudnevPDF_H
4 //
5 // This is the declaration of the BudnevPDF class.
6 //
7 
8 #include "ThePEG/PDF/PDFBase.h"
9 
10 namespace ThePEG {
11 
12 using namespace ThePEG;
13 
20 class BudnevPDF: public PDFBase {
21 
22 public:
23 
27  BudnevPDF();
28 
35  virtual bool canHandleParticle(tcPDPtr particle) const;
36 
41  virtual cPDVector partons(tcPDPtr particle) const;
42 
49  virtual double xfl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
50  double l, Energy2 particleScale = ZERO) const;
51 
60  virtual double xfvl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
61  double l, Energy2 particleScale = ZERO) const;
62 
76  virtual double flattenScale(tcPDPtr particle, tcPDPtr parton,
77  const PDFCuts & cut, double l, double z,
78  double & jacobian) const;
79 
80 
91  virtual double flattenL(tcPDPtr particle, tcPDPtr parton, const PDFCuts &cut,
92  double z, double & jacobian) const;
94 
95 public:
96 
103  void persistentOutput(PersistentOStream & os) const;
104 
110  void persistentInput(PersistentIStream & is, int version);
112 
119  static void Init();
120 
121 protected:
122 
129  virtual IBPtr clone() const {return new_ptr(*this);}
130 
135  virtual IBPtr fullclone() const {return new_ptr(*this);}
137 
138 private:
139 
145 
150  BudnevPDF & operator=(const BudnevPDF &);
151 
152 private:
153 
157  Energy2 _q2min;
158 
162  Energy2 _q2max;
163 
167  const Energy2 _q02;
168 
172  const double _mup2;
173 
174 
179  double gm2(Energy2 q2) const;
180 
181 
186  double ge2(Energy2 q2) const;
187 
188 
189 };
190 
191 }
192 
193 #include "ThePEG/Utilities/ClassTraits.h"
194 
195 namespace ThePEG {
196 
201 template <>
202 struct BaseClassTrait<BudnevPDF,1> {
204  typedef PDFBase NthBase;
205 };
206 
209 template <>
210 struct ClassTraits<BudnevPDF>
211  : public ClassTraitsBase<BudnevPDF> {
213  static string className() { return "ThePEG::BudnevPDF"; }
221  static string library() { return "BudnevPDF.so"; }
222 };
223 
226 }
227 
228 #endif /* THEPEG_BudnevPDF_H */
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Ptr< T >::pointer new_ptr()
Simple interface to the PtrTraits<Ptr>::create()
Definition: PtrTraits.h:195
PersistentIStream is used to read persistent objects from a stream where they were previously written...
virtual double xfl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double l, Energy2 particleScale=ZERO) const
The density.
double gm2(Energy2 q2) const
Helper function for magnetic a electric form factors in Budnev flux.
Here is the documentation of the BudnevPDF class.
Definition: BudnevPDF.h:20
The PDFCuts class is used to specify cuts on scale and momentum fractions for which a PDFBase object ...
Definition: PDFCuts.h:27
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data...
virtual double xfvl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double l, Energy2 particleScale=ZERO) const
The valence density.
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
TransientConstRCPtr is a simple wrapper around a bare const pointer which can be assigned to and from...
Definition: RCPtr.h:681
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: BudnevPDF.h:135
Energy2 _q2max
Maximum for the photon.
Definition: BudnevPDF.h:162
virtual double flattenScale(tcPDPtr particle, tcPDPtr parton, const PDFCuts &cut, double l, double z, double &jacobian) const
Generate scale (as a fraction of the maximum scale).
BudnevPDF()
Default constructor.
const double _mup2
Magenetic moment of the proton .
Definition: BudnevPDF.h:172
virtual bool canHandleParticle(tcPDPtr particle) const
Return true if this PDF can handle the extraction of partons from the given particle.
static void Init()
The standard Init function used to initialize the interfaces.
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: BudnevPDF.h:129
PDFBase is the base class for implementing parton density functions for particles with sub-structure...
Definition: PDFBase.h:40
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual double flattenL(tcPDPtr particle, tcPDPtr parton, const PDFCuts &cut, double z, double &jacobian) const
Generate a momentum fraction.
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
vector< cPDPtr > cPDVector
A vector of pointers to const ParticleData objects.
Definition: Containers.h:36
const ZeroUnit ZERO
ZERO can be used as zero for any unitful quantity.
Definition: PhysicalQty.h:33
const Energy2 _q02
Fitted scale .
Definition: BudnevPDF.h:167
The default concrete implementation of ClassTraitsBase.
Definition: ClassTraits.h:134
double ge2(Energy2 q2) const
Helper function for magnetic a electric form factors in Budnev flux.
BudnevPDF & operator=(const BudnevPDF &)
The assignment operator is private and must never be called.
virtual cPDVector partons(tcPDPtr particle) const
Return the partons which this PDF may extract from the given particle.
static ClassDescription< BudnevPDF > initBudnevPDF
The static object used to initialize the description of this class.
Definition: BudnevPDF.h:144
Energy2 _q2min
Minimum for the photon.
Definition: BudnevPDF.h:157
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52