thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.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#include "ThePEG/Utilities/Maths.h"
10
11namespace ThePEG {
12
13using namespace ThePEG;
14
21class BudnevPDF: public PDFBase {
22
23public:
24
29
36 virtual bool canHandleParticle(tcPDPtr particle) const;
37
42 virtual cPDVector partons(tcPDPtr particle) const;
43
50 virtual double xfl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
51 double l, Energy2 particleScale = ZERO) const;
52
61 virtual double xfvl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
62 double l, Energy2 particleScale = ZERO) const;
63
77 virtual double flattenScale(tcPDPtr particle, tcPDPtr parton,
78 const PDFCuts & cut, double l, double z,
79 double & jacobian) const;
80
81
92 virtual double flattenL(tcPDPtr particle, tcPDPtr parton, const PDFCuts &cut,
93 double z, double & jacobian) const;
95
96public:
97
105
111 void persistentInput(PersistentIStream & is, int version);
113
120 static void Init();
121
122protected:
123
130 virtual IBPtr clone() const {return new_ptr(*this);}
131
136 virtual IBPtr fullclone() const {return new_ptr(*this);}
138
139private:
140
145 BudnevPDF & operator=(const BudnevPDF &) = delete;
146
147private:
148
153
158
163
167 const double _mup2;
168
169
174 double gm2(Energy2 q2) const {
175 return ge2(q2)*_mup2;
176 }
177
182 double ge2(Energy2 q2) const {
183 return Math::powi((1 + q2/_q02),-4);
184 }
185
186};
187
188}
189
190#endif /* THEPEG_BudnevPDF_H */
The BudnevPDF class implements the PDF for the radiation of a photon from the proton.
Definition: BudnevPDF.h:21
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: BudnevPDF.h:130
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 & operator=(const BudnevPDF &)=delete
The assignment operator is private and must never be called.
const Energy2 _q02
Fitted scale .
Definition: BudnevPDF.h:162
virtual cPDVector partons(tcPDPtr particle) const
Return the partons which this PDF may extract from the given particle.
static void Init()
The standard Init function used to initialize the interfaces.
virtual bool canHandleParticle(tcPDPtr particle) const
Return true if this PDF can handle the extraction of partons from the given particle.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
const double _mup2
Magenetic moment of the proton
Definition: BudnevPDF.h:167
double ge2(Energy2 q2) const
Helper function for magnetic a electric form factors in Budnev flux.
Definition: BudnevPDF.h:182
BudnevPDF()
Default constructor.
virtual double flattenL(tcPDPtr particle, tcPDPtr parton, const PDFCuts &cut, double z, double &jacobian) const
Generate a momentum fraction.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: BudnevPDF.h:136
Energy2 _q2min
Minimum for the photon.
Definition: BudnevPDF.h:152
virtual double xfl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double l, Energy2 particleScale=ZERO) const
The density.
Energy2 _q2max
Maximum for the photon.
Definition: BudnevPDF.h:157
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
double gm2(Energy2 q2) const
Helper function for magnetic a electric form factors in Budnev flux.
Definition: BudnevPDF.h:174
virtual double xfvl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double l, Energy2 particleScale=ZERO) const
The valence density.
PDFBase is the base class for implementing parton density functions for particles with sub-structure.
Definition: PDFBase.h:40
The PDFCuts class is used to specify cuts on scale and momentum fractions for which a PDFBase object ...
Definition: PDFCuts.h:27
PersistentIStream is used to read persistent objects from a stream where they were previously written...
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
TransientConstRCPtr is a simple wrapper around a bare const pointer which can be assigned to and from...
Definition: RCPtr.h:696
double powi(double x, int p)
Return x rased to the integer power p, using recursion.
Ptr< T >::pointer new_ptr()
Simple interface to the PtrTraits<Ptr>::create()
Definition: PtrTraits.h:195
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
constexpr ZeroUnit ZERO
ZERO can be used as zero for any unitful quantity.
Definition: PhysicalQty.h:35
vector< cPDPtr > cPDVector
A vector of pointers to const ParticleData objects.
Definition: Containers.h:36