33 #ifndef Pythia8_PartonDistributions_H 34 #define Pythia8_PartonDistributions_H 36 #include "Pythia8/Basics.h" 37 #include "Pythia8/Info.h" 38 #include "Pythia8/MathTools.h" 39 #include "Pythia8/ParticleData.h" 40 #include "Pythia8/PythiaStdlib.h" 41 #include "Pythia8/SharedPointers.h" 55 idSav(9), xSav(-1), Q2Sav(-1.), isSet(true), isInit(false),
64 virtual bool init(
int,
string,
int,
Logger*) {
return true;}
71 idBeamAbs = abs(
idBeam); idSav = 9; xSav = -1.; Q2Sav = -1.;
76 void setValenceContent(
int idVal1In,
int idVal2In,
int idVal3In) {
77 idVal1 = idVal1In; idVal2 = idVal2In; idVal3 = idVal3In;}
83 double xf(
int id,
double x,
double Q2);
86 double xfVal(
int id,
double x,
double Q2);
87 double xfSea(
int id,
double x,
double Q2);
93 virtual double alphaS(
double) {
return 1.;}
103 double centralPDF, errplusPDF, errminusPDF, errsymmPDF, scalePDF;
104 vector<double> pdfMemberVars;
105 PDFEnvelope() : centralPDF(-1.0), errplusPDF(0.0), errminusPDF(0.0),
106 errsymmPDF(0.0), scalePDF(-1.0), pdfMemberVars(0.0) {};
111 virtual void calcPDFEnvelope(pair<int,int>, pair<double,double>,
double,
131 virtual void xPom(
double = -1.0) {}
134 virtual double xfFlux(
int ,
double ,
double ) {
return 0.; }
135 virtual double xfApprox(
int ,
double ,
double ) {
return 0.; }
136 virtual double xfGamma(
int ,
double ,
double ) {
return 0.; }
137 virtual double intFluxApprox() {
return 0.; }
138 virtual bool hasApproxGammaFlux() {
return false; }
142 virtual double getXhadr() {
return 0.; }
143 virtual double sampleXgamma(
double ) {
return 0.; }
144 virtual double sampleQ2gamma(
double ) {
return 0.; }
145 virtual double fluxQ2dependence(
double ) {
return 0.; }
148 virtual double xfMax(
int id,
double x,
double Q2) {
return xf(
id, x, Q2); }
151 virtual double xfSame(
int id,
double x,
double Q2) {
return xf(
id, x, Q2); }
158 bool cSymmetric()
const {
return cSymmetricSave; }
159 bool bSymmetric()
const {
return bSymmetricSave; }
163 void cSymmetric(
bool cSymmetricIn) { cSymmetricSave = cSymmetricIn; }
164 void bSymmetric(
bool bSymmetricIn) { bSymmetricSave = bSymmetricIn; }
169 int idBeam, idBeamAbs, idSav, idVal1, idVal2, idVal3;
172 double xu, xd, xs, xubar, xdbar, xsbar, xc, xb, xcbar, xbbar,
192 bool cSymmetricSave =
true, bSymmetricSave =
true;
195 virtual void xfUpdate(
int id,
double x,
double Q2) = 0;
199 if (loggerPtr) loggerPtr->errorMsg(loc, errMsg);
200 else cout <<
"Error in " + loc +
": " + errMsg << endl;
204 double xfRaw(
int id)
const;
208 return id != 0 && (
id == idVal1 ||
id == idVal2 ||
id == idVal3); }
223 LHAGrid1(
int idBeamIn = 2212,
string pdfWord =
"void",
224 string xmlPath =
"../share/Pythia8/xmldoc/",
Logger* loggerPtr = 0)
225 :
PDF(idBeamIn), doExtraPol(false), nx(), nq(), nqSub(), xMin(), xMax(),
226 qMin(), qMax(), pdfVal(), pdfGrid(), pdfSlope(nullptr) {
227 init( pdfWord, xmlPath, loggerPtr); };
231 :
PDF(idBeamIn), doExtraPol(false), nx(), nq(), nqSub(), xMin(), xMax(),
232 qMin(), qMax(), pdfVal(), pdfGrid(), pdfSlope(nullptr) {
233 init( is, loggerPtr); };
237 for (
int iq = 0; iq < nq; ++iq)
delete[] pdfGrid[iid][iq];
238 delete[] pdfGrid[iid]; }
239 if (pdfSlope) {
for (
int iid = 0; iid < 12; ++iid)
delete[] pdfSlope[iid];
240 delete[] pdfSlope;} };
251 double xMin, xMax, qMin, qMax, pdfVal[12];
252 vector<double> xGrid, lnxGrid, qGrid, lnqGrid, qDiv;
253 double** pdfGrid[12];
260 void init(
string pdfSet,
string pdfdataPath,
Logger* loggerPtr);
266 void xfUpdate(
int id,
double x,
double Q2)
override;
269 void xfxevolve(
double x,
double Q2);
288 void xfUpdate(
int ,
double x,
double Q2)
override;
291 double grvv (
double x,
double n,
double ak,
double bk,
double a,
292 double b,
double c,
double d);
293 double grvw (
double x,
double s,
double al,
double be,
double ak,
294 double bk,
double a,
double b,
double c,
double d,
double e,
double es);
295 double grvs (
double x,
double s,
double sth,
double al,
double be,
296 double ak,
double ag,
double b,
double d,
double e,
double es);
315 void xfUpdate(
int ,
double x,
double Q2)
override;
337 string pdfdataPath =
"../share/Pythia8/pdfdata/",
Logger* loggerPtr = 0)
338 :
PDF(idBeamIn), iFit(), alphaSorder(), alphaSnfmax(), mCharm(), mBottom(),
339 alphaSQ0(), alphaSMZ(), distance(), tolerance(), xx(), qq(),
340 c() {
init( iFitIn, pdfdataPath, loggerPtr);}
344 :
PDF(idBeamIn), iFit(), alphaSorder(), alphaSnfmax(), mCharm(), mBottom(),
345 alphaSQ0(), alphaSMZ(), distance(), tolerance(), xx(), qq(),
346 c() {
init( is, loggerPtr);}
351 static const int np, nx, nq, nqc0, nqb0;
352 static const double xmin, xmax, qsqmin, qsqmax, xxInit[65], qqInit[49];
355 int iFit, alphaSorder, alphaSnfmax;
356 double mCharm, mBottom, alphaSQ0, alphaSMZ, distance, tolerance,
357 xx[65], qq[49], c[13][64][48][5][5];
363 void init(
int iFitIn,
string pdfdataPath,
Logger* loggerPtr);
369 void xfUpdate(
int ,
double x,
double Q2)
override;
372 double parton(
int flavour,
double x,
double q);
373 double parton_interpolate(
int flavour,
double xxx,
double qqq);
374 double parton_extrapolate(
int flavour,
double xxx,
double qqq);
377 int locate(
double xx[],
int n,
double x);
378 double polderivative1(
double x1,
double x2,
double x3,
double y1,
379 double y2,
double y3);
380 double polderivative2(
double x1,
double x2,
double x3,
double y1,
381 double y2,
double y3);
382 double polderivative3(
double x1,
double x2,
double x3,
double y1,
383 double y2,
double y3);
408 CTEQ6pdf(
int idBeamIn = 2212,
int iFitIn = 1,
double rescaleIn = 1.,
409 string pdfdataPath =
"../share/Pythia8/pdfdata/",
Logger* loggerPtr = 0)
410 :
PDF(idBeamIn), doExtraPol(false), iFit(), order(), nQuark(), nfMx(),
411 mxVal(), nX(), nT(), nG(), iGridX(), iGridQ(), iGridLX(), iGridLQ(),
412 rescale(rescaleIn), lambda(), mQ(), qIni(), qMax(), tv(), xMin(), xv(),
413 upd(), xvpow(), xMinEps(), xMaxEps(), qMinEps(), qMaxEps(), fVec(),
414 tConst(), xConst(), dlx(), xLast(),
415 qLast() {
init( iFitIn, pdfdataPath, loggerPtr);}
418 CTEQ6pdf(
int idBeamIn, istream& is,
bool isPdsGrid =
false,
419 Logger* loggerPtr = 0) :
PDF(idBeamIn), doExtraPol(false), iFit(),
420 order(), nQuark(), nfMx(), mxVal(), nX(), nT(), nG(), iGridX(), iGridQ(),
421 iGridLX(), iGridLQ(), rescale(), lambda(), mQ(), qIni(), qMax(), tv(),
422 xMin(), xv(), upd(), xvpow(), xMinEps(), xMaxEps(), qMinEps(), qMaxEps(),
423 fVec(), tConst(), xConst(), dlx(), xLast(),
424 qLast() {
init( is, isPdsGrid, loggerPtr); }
432 static const double EPSILON, XPOWER;
436 int iFit, order, nQuark, nfMx, mxVal, nX, nT, nG,
437 iGridX, iGridQ, iGridLX, iGridLQ;
438 double rescale, lambda, mQ[7], qIni, qMax, tv[26], xMin, xv[202], upd[57773],
439 xvpow[202], xMinEps, xMaxEps, qMinEps, qMaxEps, fVec[5],
440 tConst[9], xConst[9], dlx, xLast, qLast;
446 void init(
int iFitIn,
string pdfdataPath,
Logger* loggerPtrIn);
449 void init( istream& is,
bool isPdsGrid,
Logger* loggerPtrIn);
452 void xfUpdate(
int id,
double x,
double Q2)
override;
455 double parton6(
int iParton,
double x,
double q);
458 double polint4F(
double xgrid[],
double fgrid[],
double xin);
474 :
PDF(idBeamIn), loggerPtr(loggerPtrIn) {}
479 static const double ALPHAEM, Q2MAX, Q20, A, B, C;
482 void xfUpdate(
int ,
double x,
double Q2)
override;
485 double phiFunc(
double x,
double Q);
502 GRVpiL(
int idBeamIn = 211,
double vmdScaleIn = 1.) :
503 PDF(idBeamIn) {vmdScale = vmdScaleIn;}
506 void setVMDscale(
double vmdScaleIn = 1.)
override {vmdScale = vmdScaleIn;}
514 void xfUpdate(
int ,
double x,
double Q2)
override;
528 GRSpiL(
int idBeamIn = 211,
double vmdScaleIn = 1.) :
529 PDF(idBeamIn) {vmdScale = vmdScaleIn;}
532 void setVMDscale(
double vmdScaleIn = 1.)
override {vmdScale = vmdScaleIn;}
540 void xfUpdate(
int ,
double x,
double Q2)
override;
553 PomFix(
int idBeamIn = 990,
double PomGluonAIn = 0.,
554 double PomGluonBIn = 0.,
double PomQuarkAIn = 0.,
555 double PomQuarkBIn = 0.,
double PomQuarkFracIn = 0.,
556 double PomStrangeSuppIn = 0.) :
PDF(idBeamIn),
557 PomGluonA(PomGluonAIn), PomGluonB(PomGluonBIn),
558 PomQuarkA(PomQuarkAIn), PomQuarkB(PomQuarkBIn),
559 PomQuarkFrac(PomQuarkFracIn), PomStrangeSupp(PomStrangeSuppIn),
560 normGluon(), normQuark() {
init(); }
565 double PomGluonA, PomGluonB, PomQuarkA, PomQuarkB, PomQuarkFrac,
566 PomStrangeSupp, normGluon, normQuark;
575 void xfUpdate(
int ,
double x,
double)
override;
591 PomH1FitAB(
int idBeamIn = 990,
int iFit = 1,
double rescaleIn = 1.,
592 string pdfdataPath =
"../share/Pythia8/pdfdata/",
Logger* loggerPtr = 0)
593 :
PDF(idBeamIn), doExtraPol(false), nx(), nQ2(), rescale(rescaleIn), xlow(),
594 xupp(), dx(), Q2low(), Q2upp(), dQ2(), gluonGrid(), quarkGrid()
595 {
init( iFit, pdfdataPath, loggerPtr); }
599 Logger* loggerPtr = 0) :
PDF(idBeamIn), doExtraPol(false), nx(), nQ2(),
600 rescale(rescaleIn), xlow(),xupp(), dx(), Q2low(), Q2upp(), dQ2(),
601 gluonGrid(), quarkGrid() {
init( is, loggerPtr); }
611 double rescale, xlow, xupp, dx, Q2low, Q2upp, dQ2;
612 double gluonGrid[100][30];
613 double quarkGrid[100][30];
619 void init(
int iFit,
string pdfdataPath,
Logger* loggerPtr);
625 void xfUpdate(
int ,
double x,
double )
override;
641 PomH1Jets(
int idBeamIn = 990,
int iFit = 1,
double rescaleIn = 1.,
642 string pdfdataPath =
"../share/Pythia8/pdfdata/",
Logger* loggerPtr = 0)
643 :
PDF(idBeamIn), doExtraPol(false), rescale(rescaleIn), xGrid(), Q2Grid(),
644 gluonGrid(), singletGrid(), charmGrid()
645 {
init( iFit, pdfdataPath, loggerPtr);}
649 Logger* loggerPtr = 0) :
PDF(idBeamIn), doExtraPol(false),
650 rescale(rescaleIn), xGrid(), Q2Grid(), gluonGrid(), singletGrid(),
651 charmGrid() {
init( is, loggerPtr); }
663 double gluonGrid[100][88];
664 double singletGrid[100][88];
665 double charmGrid[100][88];
671 void init(
int iFit,
string pdfdataPath,
Logger* loggerPtr);
677 void xfUpdate(
int id,
double x,
double )
override;
691 Logger* loggerPtrIn = 0) :
PDF(idBeamIn), pPDFPtr(ppdf),
692 xPomNow(-1.0), hixpow(4.0), newfac(1.0) {
693 loggerPtr = loggerPtrIn;
694 hixpow = settings.parm(
"PDF:PomHixSupp");
695 if ( settings.mode(
"Angantyr:SASDmode") == 3 ) newfac =
696 log(settings.parm(
"Beams:eCM")/settings.parm(
"Diffraction:mMinPert"));
697 if ( settings.mode(
"Angantyr:SASDmode") == 4 ) newfac = 0.0;
704 void xPom(
double xpom = -1.0)
override { xPomNow = xpom; }
724 void xfUpdate(
int ,
double x,
double Q2)
override;
737 Lepton(
int idBeamIn = 11) :
PDF(idBeamIn), m2Lep(), Q2maxGamma(),
738 infoPtr(), rndmPtr() {}
742 :
PDF(idBeamIn), m2Lep() { Q2maxGamma = Q2maxGammaIn;
743 infoPtr = infoPtrIn; rndmPtr = infoPtrIn->
rndmPtr; }
747 {
return Q2min * pow(Q2maxGamma / Q2min, rndmPtr->flat()); }
752 static const double ALPHAEM, ME, MMU, MTAU;
755 void xfUpdate(
int id,
double x,
double Q2)
override;
758 double m2Lep, Q2maxGamma;
782 void xfUpdate(
int ,
double ,
double )
override {xlepton = 1; xgamma = 0.;}
803 void xfUpdate(
int ,
double ,
double )
override {xlepton = 1; xgamma = 0.;}
819 rndmPtr = rndmPtrIn; }
834 static const double ALPHAEM, Q02, Q2MIN, Q2REF, LAMBDA, MC, MB;
840 void xfUpdate(
int ,
double x,
double Q2)
override;
843 double pointlikeG(
double x,
double s);
844 double pointlikeU(
double x,
double s);
845 double pointlikeD(
double x,
double s);
846 double pointlikeC(
double x,
double s,
double Q2);
847 double pointlikeB(
double x,
double s,
double Q2);
850 double hadronlikeG(
double x,
double s);
851 double hadronlikeSea(
double x,
double s);
852 double hadronlikeVal(
double x,
double s);
853 double hadronlikeC(
double x,
double s,
double Q2);
854 double hadronlikeB(
double x,
double s,
double Q2);
873 PDFPtr gammaPDFPtrIn,
Info* infoPtrIn)
874 :
PDF(idBeamIn), m2lepton(m2leptonIn), Q2max(Q2maxGamma), xGm(),
875 sampleXgamma(true), gammaPDFPtr(gammaPDFPtrIn),rndmPtr(infoPtrIn->rndmPtr),
879 void xfUpdate(
int id,
double x,
double Q2)
override;
881 double xfMax(
int id,
double x,
double Q2)
override;
882 double xfSame(
int id,
double x,
double Q2)
override;
886 {
return Q2min * pow(Q2max / Q2min, rndmPtr->flat()); }
891 static const double ALPHAEM, Q2MIN;
892 double m2lepton, Q2max, xGm;
922 void xfUpdate(
int ,
double ,
double )
override { xgamma = 1.;}
942 static const double ALPHAEM, Q20;
945 void xfUpdate(
int ,
double x,
double Q2)
override;
946 double fluxQ2dependence(
double Q2)
override;
963 PDF(idBeamIn), a(), z(), bMin(bMinIn), mNucleon(mNucleonIn)
964 { initNucleus(idBeamIn); }
969 static const double ALPHAEM;
972 void initNucleus(
int idBeamIn);
975 void xfUpdate(
int ,
double x,
double Q2)
override;
981 double bMin, mNucleon;
995 PDFPtr gammaPDFPtrIn,
Info* infoPtrIn,
Logger* loggerPtrIn = 0)
996 :
PDF(idBeamIn),
m2(m2In), Q2max(), Q2min(), xMax(), xMin(), xHadr(),
997 norm(), xPow(), xCut(), norm1(), norm2(), integral1(), integral2(),
998 bmhbarc(), approxMode(0), isLHA(false), gammaFluxPtr(gammaFluxPtrIn),
999 gammaPDFPtr(gammaPDFPtrIn), infoPtr(infoPtrIn),
1000 rndmPtr(infoPtrIn->rndmPtr), settingsPtr(infoPtrIn->settingsPtr),
1004 void xfUpdate(
int ,
double x,
double Q2)
override;
1007 double xfFlux(
int id,
double x,
double Q2 = 1.)
override;
1008 double xfGamma(
int id,
double x,
double Q2)
override;
1009 double xfApprox(
int id,
double x,
double Q2)
override;
1010 double intFluxApprox()
override;
1017 double getXhadr()
override {
return xHadr; }
1020 double sampleXgamma(
double xMinIn)
override;
1021 double sampleQ2gamma(
double Q2minIn)
override;
1032 static const double ALPHAEM;
1033 double m2, Q2max, Q2min, xMax, xMin, xHadr, norm, xPow, xCut,
1034 norm1, norm2, integral1, integral2, bmhbarc;
1039 PDFPtr gammaFluxPtr;
1065 nPDF(
int idBeamIn = 2212, PDFPtr protonPDFPtrIn = 0) :
PDF(idBeamIn), ruv(),
1066 rdv(), ru(), rd(), rs(), rc(), rb(), rg(), a(), z(), za(), na(),
1067 protonPDFPtr() { initNPDF(idBeamIn, protonPDFPtrIn); }
1070 void xfUpdate(
int id,
double x,
double Q2)
override;
1073 virtual void rUpdate(
int,
double,
double) = 0;
1076 void initNPDF(
int idBeamIn, PDFPtr protonPDFPtrIn = 0);
1080 int getZ() {
return z;}
1084 void setMode(
double zaIn) { za = zaIn; na = 1. - za; }
1085 void resetMode() { za = double(z)/double(a); na = double(a-z)/double(a); }
1091 double ruv, rdv, ru, rd, rs, rc, rb, rg;
1101 PDFPtr protonPDFPtr;
1115 Isospin(
int idBeamIn = 2212, PDFPtr protonPDFPtrIn = 0)
1116 :
nPDF(idBeamIn, protonPDFPtrIn) {}
1131 EPS09(
int idBeamIn = 2212,
int iOrderIn = 1,
int iSetIn = 1,
1132 string pdfdataPath =
"../share/Pythia8/pdfdata/",
1133 PDFPtr protonPDFPtrIn = 0,
Logger* loggerPtrIn = 0)
1134 :
nPDF(idBeamIn, protonPDFPtrIn), iSet(), iOrder(), grid(),
1135 loggerPtr(loggerPtrIn) {
init(iOrderIn, iSetIn, pdfdataPath);}
1138 void rUpdate(
int id,
double x,
double Q2)
override;
1146 static const double Q2MIN, Q2MAX, XMIN, XMAX, XCUT;
1147 static const int Q2STEPS, XSTEPS;
1151 double grid[31][51][51][8];
1160 void init(
int iOrderIn,
int iSetIn,
string pdfdataPath);
1163 double polInt(
double* fi,
double* xi,
int n,
double x);
1176 string pdfdataPath =
"../share/Pythia8/pdfdata/",
1177 PDFPtr protonPDFPtrIn = 0,
Logger* loggerPtrIn = 0)
1178 :
nPDF(idBeamIn, protonPDFPtrIn), iSet(), grid(), logQ2min(),
1179 loglogQ2maxmin(), logX2min(), loggerPtr(loggerPtrIn)
1180 {
init(iSetIn, pdfdataPath); }
1183 void rUpdate(
int id,
double x,
double Q2)
override;
1191 static const double Q2MIN, Q2MAX, XMIN, XMAX, XCUT;
1192 static const int Q2STEPS, XSTEPS, NINTQ2, NINTX, NSETS;
1196 double grid[41][31][80][8];
1197 double logQ2min, loglogQ2maxmin, logX2min;
1206 void init(
int iSetIn,
string pdfdataPath);
1209 double polInt(
double* fi,
double* xi,
int n,
double x);
virtual int sampleGammaValFlavor(double)
Sample the valence content for photons.
Definition: PartonDistributions.h:122
virtual double xGamma()
Return the sampled value for x_gamma.
Definition: PartonDistributions.h:128
Lepton2gamma(int idBeamIn, double m2leptonIn, double Q2maxGamma, PDFPtr gammaPDFPtrIn, Info *infoPtrIn)
Constructor.
Definition: PartonDistributions.h:872
MSTWpdf(int idBeamIn, istream &is, Logger *loggerPtr=0)
Constructor with a stream.
Definition: PartonDistributions.h:343
void printErr(string loc, string errMsg, Logger *loggerPtr=nullptr)
Small routine for error printout, depending on loggerPtr existing or not.
Definition: PartonDistributions.h:198
PomHISASD(int idBeamIn, PDFPtr ppdf, Settings &settings, Logger *loggerPtrIn=0)
Basic constructor.
Definition: PartonDistributions.h:690
Definition: PartonDistributions.h:1110
void resetValenceContent()
Set valence content.
Definition: PartonDistributions.cc:24
Gives electron (or other lepton) parton distribution when unresolved.
Definition: PartonDistributions.h:772
CJKL(int idBeamIn=22, Rndm *rndmPtrIn=0)
Constructor. Needs the randon number generator to sample valence content.
Definition: PartonDistributions.h:818
PDF(int idBeamIn=2212)
Constructor.
Definition: PartonDistributions.h:54
Rndm * rndmPtr
Pointer to the random number generator.
Definition: Info.h:89
A proton masked as a Pomeron for use within the Heavy Ion machinery.
Definition: PartonDistributions.h:685
virtual bool insideBounds(double, double)
Check whether x and Q2 values fall inside the fit bounds (LHAPDF6 only).
Definition: PartonDistributions.h:90
CTEQ5L(int idBeamIn=2212)
Constructor.
Definition: PartonDistributions.h:310
Definition: PartonDistributions.h:957
CTEQ6pdf(int idBeamIn=2212, int iFitIn=1, double rescaleIn=1., string pdfdataPath="../share/Pythia8/pdfdata/", Logger *loggerPtr=0)
Constructor.
Definition: PartonDistributions.h:408
bool sSymmetricSave
Whether to treat flavoured PDFs as symmetric, for efficiency.
Definition: PartonDistributions.h:191
void xPom(double xpom=-1.0) override
(re-)Set the x_pomeron value.
Definition: PartonDistributions.h:704
virtual void setExtrapolate(bool)
Allow extrapolation beyond boundaries. This is optional.
Definition: PartonDistributions.h:80
Definition: PartonDistributions.h:793
Nucleus2gamma(int idBeamIn, double bMinIn, double mNucleonIn)
Constructor.
Definition: PartonDistributions.h:962
Definition: PartonDistributions.h:331
LeptonPoint(int idBeamIn=11)
Constructor.
Definition: PartonDistributions.h:777
void setVMDscale(double vmdScaleIn=1.) override
Allow for new rescaling factor of the PDF for VMD beams.
Definition: PartonDistributions.h:506
virtual double xfMax(int id, double x, double Q2)
Normal PDFs unless gamma inside lepton -> an overestimate for sampling.
Definition: PartonDistributions.h:148
LHAGrid1(int idBeamIn=2212, string pdfWord="void", string xmlPath="../share/Pythia8/xmldoc/", Logger *loggerPtr=0)
Constructor.
Definition: PartonDistributions.h:223
~PomHISASD()
Delete also the proton PDF.
Definition: PartonDistributions.h:701
Gives photon parton distribution when unresolved.
Definition: PartonDistributions.h:912
double xf(int id, double x, double Q2)
Read out parton density.
Definition: PartonDistributions.cc:122
PomH1FitAB(int idBeamIn=990, int iFit=1, double rescaleIn=1., string pdfdataPath="../share/Pythia8/pdfdata/", Logger *loggerPtr=0)
Constructor.
Definition: PartonDistributions.h:591
double xfVal(int id, double x, double Q2)
Read out valence and sea part of parton densities.
Definition: PartonDistributions.cc:222
double sampleQ2gamma(double Q2min) override
Sample the Q2 value.
Definition: PartonDistributions.h:885
virtual double xfIntegratedTotal(double)
The total x-integrated PDFs. Relevant for MPIs with photon beams.
Definition: PartonDistributions.h:125
void setVMDscale(double vmdScaleIn=1.) override
Allow for new rescaling factor of the PDF for VMD beams.
Definition: PartonDistributions.h:532
virtual void xfUpdate(int id, double x, double Q2)=0
Update parton densities.
GRV94L(int idBeamIn=2212)
Constructor.
Definition: PartonDistributions.h:283
LHAGrid1(int idBeamIn, istream &is, Logger *loggerPtr=0)
Constructor with a stream.
Definition: PartonDistributions.h:230
GRSpiL(int idBeamIn=211, double vmdScaleIn=1.)
Constructor.
Definition: PartonDistributions.h:528
void setErrorSet(int iSetIn)
Use other than central set to study uncertainties.
Definition: PartonDistributions.h:1186
virtual double xfSame(int id, double x, double Q2)
Normal PDFs unless gamma inside lepton -> Do not sample x_gamma.
Definition: PartonDistributions.h:151
nPDF(int idBeamIn=2212, PDFPtr protonPDFPtrIn=0)
Constructor.
Definition: PartonDistributions.h:1065
virtual bool init(int, string, int, Logger *)
Definition: PartonDistributions.h:64
double xfRaw(int id) const
Get the raw stored value for the quark variable corresponding to the id.
Definition: PartonDistributions.cc:101
double xGamma() override
Return the sampled value for x_gamma.
Definition: PartonDistributions.h:880
virtual double xfFlux(int, double, double)
Return accurate and approximated photon fluxes and PDFs.
Definition: PartonDistributions.h:134
Gives electron (or muon, or tau) parton distribution.
Definition: PartonDistributions.h:732
bool sSymmetric() const
Return if s/sbar, c/cbar, and b/bbar PDFs are symmetric.
Definition: PartonDistributions.h:157
bool hasGammaInLepton
True if a photon beam inside a lepton beam, otherwise set false.
Definition: PartonDistributions.h:188
Definition: PartonDistributions.h:305
void setExtrapolate(bool doExtraPolIn) override
Allow extrapolation beyond boundaries. This is optional.
Definition: PartonDistributions.h:427
void setErrorSet(int iSetIn)
Use other than central set to study uncertainties.
Definition: PartonDistributions.h:1141
void sSymmetric(bool sSymmetricIn)
Set s/sbar, c/cbar, and b/bbar PDFs symmetric.
Definition: PartonDistributions.h:162
virtual double mQuarkPDF(int)
Return quark masses used in the PDF fit (LHAPDF6 only).
Definition: PartonDistributions.h:96
void rUpdate(int, double, double) override
Only the Isospin effect so no need to do anything here.
Definition: PartonDistributions.h:1119
Definition: PartonDistributions.h:218
Error envelope from PDF uncertainty.
Definition: PartonDistributions.h:102
int beamType
Definition: PartonDistributions.h:185
Equivalent photon approximation for sampling with external photon flux.
Definition: PartonDistributions.h:989
Definition: PartonDistributions.h:278
virtual void setBeamID(int idBeamIn)
Switch to new beam particle identities; for similar hadrons only.
Definition: PartonDistributions.h:70
MSTWpdf(int idBeamIn=2212, int iFitIn=1, string pdfdataPath="../share/Pythia8/pdfdata/", Logger *loggerPtr=0)
Constructor.
Definition: PartonDistributions.h:336
double sampleQ2gamma(double Q2min) override
Sample the Q2 value.
Definition: PartonDistributions.h:746
bool hasApproxGammaFlux() override
This derived class use approximated flux for sampling.
Definition: PartonDistributions.h:1013
~LHAGrid1()
Destructor.
Definition: PartonDistributions.h:236
void setExtrapolate(bool doExtraPolIn) override
Allow extrapolation beyond boundaries. This is optional.
Definition: PartonDistributions.h:243
double xfSea(int id, double x, double Q2)
Only sea part of parton densities.
Definition: PartonDistributions.cc:301
double xu
Stored quantities.
Definition: PartonDistributions.h:172
GRVpiL(int idBeamIn=211, double vmdScaleIn=1.)
Constructor.
Definition: PartonDistributions.h:502
A derived class for nuclear PDFs. Needs a pointer for (free) proton PDFs.
Definition: PartonDistributions.h:1060
EPAexternal(int idBeamIn, double m2In, PDFPtr gammaFluxPtrIn, PDFPtr gammaPDFPtrIn, Info *infoPtrIn, Logger *loggerPtrIn=0)
Constructor.
Definition: PartonDistributions.h:994
PomH1Jets(int idBeamIn, double rescaleIn, istream &is, Logger *loggerPtr=0)
Constructor with a stream.
Definition: PartonDistributions.h:648
bool isSetup()
Confirm that PDF has been set up (important for LHAPDF and H1 Pomeron).
Definition: PartonDistributions.h:67
Proton2gammaDZ(int idBeamIn=2212)
Constructor.
Definition: PartonDistributions.h:937
NeutrinoPoint(int idBeamIn=12)
Constructor.
Definition: PartonDistributions.h:798
void setExtrapolate(bool doExtraPolIn) override
Allow extrapolation beyond boundaries. This is optional.
Definition: PartonDistributions.h:654
virtual void xPom(double=-1.0)
Keep track of pomeron momentum fraction.
Definition: PartonDistributions.h:131
GammaPoint(int idBeamIn=22)
Constructor.
Definition: PartonDistributions.h:917
int idBeam
Store relevant quantities.
Definition: PartonDistributions.h:169
ProtonPoint(int idBeamIn=2212, Logger *loggerPtrIn=0)
Constructor.
Definition: PartonDistributions.h:473
Nuclear modifications from EPS09 fit.
Definition: PartonDistributions.h:1126
virtual double gammaPDFRefScale(int)
Provide the reference scale for logarithmic Q^2 evolution for photons.
Definition: PartonDistributions.h:119
void setMode(double zaIn)
Definition: PartonDistributions.h:1084
void setExtrapolate(bool doExtraPolIn) override
Allow extrapolation beyond boundaries. This is optional.
Definition: PartonDistributions.h:604
Definition: PartonDistributions.h:932
Gives generic Q2-independent Pomeron PDF.
Definition: PartonDistributions.h:548
virtual double gammaPDFxDependence(int, double)
Approximate photon PDFs by decoupling the scale and x-dependence.
Definition: PartonDistributions.h:116
int getA()
Return the number of protons and nucleons.
Definition: PartonDistributions.h:1079
double getXmin() override
Kinematics.
Definition: PartonDistributions.h:1016
double m2(const Vec4 &v1)
The squared invariant mass of one or more four-vectors.
Definition: Basics.cc:605
CTEQ6pdf(int idBeamIn, istream &is, bool isPdsGrid=false, Logger *loggerPtr=0)
Constructor with a stream.
Definition: PartonDistributions.h:418
virtual void calcPDFEnvelope(int, double, double, int)
Calculate PDF envelope.
Definition: PartonDistributions.h:110
Definition: PartonDistributions.h:523
Base class for parton distribution functions.
Definition: PartonDistributions.h:49
Header for classes to set beam momentum and interaction vertex spread.
Definition: Analysis.h:20
Definition: PartonDistributions.h:468
virtual void setVMDscale(double=1.)
Allow for new scaling factor for VMD PDFs.
Definition: PartonDistributions.h:154
bool isValence(int id) const
Check whether the specified id is a valence quark.
Definition: PartonDistributions.h:207
PomH1FitAB(int idBeamIn, double rescaleIn, istream &is, Logger *loggerPtr=0)
Constructor with a stream.
Definition: PartonDistributions.h:598
Nuclear modifications from EPPS16 fit.
Definition: PartonDistributions.h:1170
Definition: PartonDistributions.h:636
virtual int nMembers()
Return number of members of this PDF family (LHAPDF6 only).
Definition: PartonDistributions.h:99
PomH1Jets(int idBeamIn=990, int iFit=1, double rescaleIn=1., string pdfdataPath="../share/Pythia8/pdfdata/", Logger *loggerPtr=0)
Constructor.
Definition: PartonDistributions.h:641
Lepton(int idBeamIn=11)
Constructor.
Definition: PartonDistributions.h:737
virtual ~PDF()
Virtual destructor.
Definition: PartonDistributions.h:59
Definition: PartonDistributions.h:813
virtual double alphaS(double)
Access the running alpha_s of a PDF set (LHAPDF6 only).
Definition: PartonDistributions.h:93
Definition: PartonDistributions.h:586
Isospin(int idBeamIn=2212, PDFPtr protonPDFPtrIn=0)
Constructor.
Definition: PartonDistributions.h:1115
virtual double getXmin()
Return the kinematical limits and sample Q2 and x.
Definition: PartonDistributions.h:141
double ruv
Definition: PartonDistributions.h:1091
EPPS16(int idBeamIn=2212, int iSetIn=1, string pdfdataPath="../share/Pythia8/pdfdata/", PDFPtr protonPDFPtrIn=0, Logger *loggerPtrIn=0)
Constructor.
Definition: PartonDistributions.h:1175
Definition: PartonDistributions.h:497
Definition: PartonDistributions.h:403
PomFix(int idBeamIn=990, double PomGluonAIn=0., double PomGluonBIn=0., double PomQuarkAIn=0., double PomQuarkBIn=0., double PomQuarkFracIn=0., double PomStrangeSuppIn=0.)
Constructor.
Definition: PartonDistributions.h:553
Definition: Settings.h:195
Definition: PartonDistributions.h:867
EPS09(int idBeamIn=2212, int iOrderIn=1, int iSetIn=1, string pdfdataPath="../share/Pythia8/pdfdata/", PDFPtr protonPDFPtrIn=0, Logger *loggerPtrIn=0)
Constructor.
Definition: PartonDistributions.h:1131
Lepton(int idBeamIn, double Q2maxGammaIn, Info *infoPtrIn)
Constructor with further info.
Definition: PartonDistributions.h:741