00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef ThePEG_PDF_H
00010 #define ThePEG_PDF_H
00011
00012
00013 #include "ThePEG/PDF/PartonBinInstance.h"
00014
00015 namespace ThePEG {
00016
00022 class PDF {
00023
00024 public:
00025
00031 PDF() {}
00032
00036 PDF(tcPBIPtr pb) {
00037 if ( !pb ) return;
00038 thePDF = pb->pdf();
00039 theParticle = pb->particleData();
00040 }
00041
00045 PDF(tcPDFPtr pdf, tcPDPtr pd)
00046 : thePDF(pdf), theParticle(pd) {}
00048
00049 public:
00050
00058 double xfl(tcPPtr parton, Energy2 partonScale, double l,
00059 Energy2 particleScale = ZERO) const {
00060 return xfl(parton->dataPtr(), partonScale, l, particleScale);
00061 }
00062
00068 double xfx(tcPPtr parton, Energy2 partonScale, double x,
00069 double eps = 0.0, Energy2 particleScale = ZERO) const {
00070 return xfx(parton->dataPtr(), partonScale, x, eps, particleScale);
00071 }
00072
00078 double xfvl(tcPPtr parton, Energy2 partonScale, double l,
00079 Energy2 particleScale = ZERO) const {
00080 return xfvl(parton->dataPtr(), partonScale, l, particleScale);
00081 }
00082
00088 double xfvx(tcPPtr parton, Energy2 partonScale, double x,
00089 double eps = 0.0, Energy2 particleScale = ZERO) const {
00090 return xfvx(parton->dataPtr(), partonScale, x, eps, particleScale);
00091 }
00092
00098 double xfl(tcPDPtr parton, Energy2 partonScale, double l,
00099 Energy2 particleScale = ZERO) const {
00100 return thePDF?
00101 thePDF->xfl(theParticle, parton, partonScale, l, particleScale): 0.0;
00102 }
00103
00109 double xfx(tcPDPtr parton, Energy2 partonScale, double x,
00110 double eps = 0.0, Energy2 particleScale = ZERO) const {
00111 return thePDF?
00112 thePDF->xfx(theParticle, parton, partonScale, x, eps, particleScale): 0.0;
00113 }
00114
00120 double xfvl(tcPDPtr parton, Energy2 partonScale, double l,
00121 Energy2 particleScale = ZERO) const {
00122 return thePDF?
00123 thePDF->xfvl(theParticle, parton, partonScale, l, particleScale): 0.0;
00124 }
00125
00131 double xfvx(tcPDPtr parton, Energy2 partonScale, double x,
00132 double eps = 0.0, Energy2 particleScale = ZERO) const {
00133 return thePDF?
00134 thePDF->xfvx(theParticle, parton, partonScale, x, eps, particleScale): 0.0;
00135 }
00137
00138
00142 tcPDFPtr pdf() const { return thePDF; }
00143
00147 tcPDPtr particle() const { return theParticle; }
00148
00149 private:
00150
00154 tcPDFPtr thePDF;
00155
00159 tcPDPtr theParticle;
00160
00161 };
00162
00163 }
00164
00165 #endif