thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
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 &) = delete;
151 
152 private:
153 
158 
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 */
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 IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: BudnevPDF.h:135
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...
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:696
double gm2(Energy2 q2) const
Helper function for magnetic a electric form factors in Budnev flux.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
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).
virtual cPDVector partons(tcPDPtr particle) const
Return the partons which this PDF may extract from the given particle.
BudnevPDF()
Default constructor.
const double _mup2
Magenetic moment of the proton .
Definition: BudnevPDF.h:172
static void Init()
The standard Init function used to initialize the interfaces.
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
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: BudnevPDF.h:129
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
BudnevPDF & operator=(const BudnevPDF &)=delete
The assignment operator is private and must never be called.
const Energy2 _q02
Fitted scale .
Definition: BudnevPDF.h:167
virtual bool canHandleParticle(tcPDPtr particle) const
Return true if this PDF can handle the extraction of partons from the given particle.
The default concrete implementation of ClassTraitsBase.
Definition: ClassTraits.h:134
virtual double xfl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double l, Energy2 particleScale=ZERO) const
The density.
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
double ge2(Energy2 q2) const
Helper function for magnetic a electric form factors in Budnev flux.
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
constexpr ZeroUnit ZERO
ZERO can be used as zero for any unitful quantity.
Definition: PhysicalQty.h:35
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52
virtual double xfvl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double l, Energy2 particleScale=ZERO) const
The valence density.