23 #ifndef Pythia8_PartonDistributions_H
24 #define Pythia8_PartonDistributions_H
26 #include "Pythia8/Basics.h"
27 #include "Pythia8/Info.h"
28 #include "Pythia8/ParticleData.h"
29 #include "Pythia8/PythiaStdlib.h"
42 PDF(
int idBeamIn = 2212) {idBeam = idBeamIn; idBeamAbs = abs(idBeam);
43 setValenceContent(); idSav = 9; xSav = -1.; Q2Sav = -1.;
44 xu = 0.; xd = 0.; xs = 0.; xubar = 0.; xdbar = 0.; xsbar = 0.; xc = 0.;
45 xb = 0.; xg = 0.; xlepton = 0.; xgamma = 0.; xuVal = 0.; xuSea = 0.;
46 xdVal = 0.; xdSea = 0.; isSet =
true; isInit =
false;
47 hasGammaInLepton =
false; }
53 virtual bool isSetup() {
return isSet;}
56 virtual void newValenceContent(
int idVal1In,
int idVal2In) {
57 idVal1 = idVal1In; idVal2 = idVal2In;}
60 virtual void setExtrapolate(
bool) {}
63 virtual double xf(
int id,
double x,
double Q2);
66 virtual double xfVal(
int id,
double x,
double Q2);
67 virtual double xfSea(
int id,
double x,
double Q2);
70 virtual bool insideBounds(
double,
double) {
return true;}
73 virtual double alphaS(
double) {
return 1.;}
76 virtual double mQuarkPDF(
int) {
return -1.;}
79 virtual int nMembers() {
return 1;}
83 double centralPDF, errplusPDF, errminusPDF, errsymmPDF, scalePDF;
84 vector<double> pdfMemberVars;
85 PDFEnvelope() : centralPDF(-1.0), errplusPDF(0.0), errminusPDF(0.0),
86 errsymmPDF(0.0), scalePDF(-1.0), pdfMemberVars(0.0) {};
90 virtual void calcPDFEnvelope(
int,
double,
double,
int) {}
91 virtual void calcPDFEnvelope(pair<int,int>, pair<double,double>,
double,
93 virtual PDFEnvelope getPDFEnvelope() {
return PDFEnvelope(); }
96 virtual double gammaPDFxDependence(
int,
double) {
return 0.; }
99 virtual double gammaPDFRefScale(
int) {
return 0.; }
102 virtual int sampleGammaValFlavor(
double) {
return 0.; }
105 virtual double xfIntegratedTotal(
double) {
return 0.; }
108 virtual double xGamma() {
return 1.; }
111 virtual void xPom(
double = -1.0) {}
114 virtual double xfFlux(
int ,
double ,
double ) {
return 0.; }
115 virtual double xfApprox(
int ,
double ,
double ) {
return 0.; }
116 virtual double xfGamma(
int ,
double ,
double ) {
return 0.; }
119 virtual double getQ2min() {
return 0.; }
120 virtual double getXmin() {
return 0.; }
121 virtual double getXhadr() {
return 0.; }
122 virtual double getGammaFluxNorm() {
return 0.; }
123 virtual double sampleXgamma(
double ) {
return 0.; }
124 virtual double sampleQ2gamma(
double ) {
return 0.; }
127 virtual double xfMax(
int id,
double x,
double Q2) {
return xf(
id, x, Q2); }
130 virtual double xfSame(
int id,
double x,
double Q2) {
return xf(
id, x, Q2); }
133 virtual void setVMDscale(
double = 1.) {}
141 int idBeam, idBeamAbs, idSav, idVal1, idVal2;
143 double xu, xd, xs, xubar, xdbar, xsbar, xc, xb, xg, xlepton, xgamma,
144 xuVal, xuSea, xdVal, xdSea;
148 double xsVal, xcVal, xbVal, xsSea, xcSea, xbSea;
151 bool hasGammaInLepton;
154 void setValenceContent();
157 virtual void xfUpdate(
int id,
double x,
double Q2) = 0;
160 void printErr(
string errMsg, Info* infoPtr = 0) {
161 if (infoPtr !=0) infoPtr->errorMsg(errMsg);
162 else cout << errMsg << endl;
172 class GRV94L :
public PDF {
177 GRV94L(
int idBeamIn = 2212) : PDF(idBeamIn) {}
182 void xfUpdate(
int ,
double x,
double Q2);
185 double grvv (
double x,
double n,
double ak,
double bk,
double a,
186 double b,
double c,
double d);
187 double grvw (
double x,
double s,
double al,
double be,
double ak,
188 double bk,
double a,
double b,
double c,
double d,
double e,
double es);
189 double grvs (
double x,
double s,
double sth,
double al,
double be,
190 double ak,
double ag,
double b,
double d,
double e,
double es);
199 class CTEQ5L :
public PDF {
204 CTEQ5L(
int idBeamIn = 2212) : PDF(idBeamIn) {}
209 void xfUpdate(
int ,
double x,
double Q2);
225 class MSTWpdf :
public PDF {
230 MSTWpdf(
int idBeamIn = 2212,
int iFitIn = 1,
231 string xmlPath =
"../share/Pythia8/xmldoc/", Info* infoPtr = 0)
232 : PDF(idBeamIn) {init( iFitIn, xmlPath, infoPtr);}
235 MSTWpdf(
int idBeamIn, istream& is, Info* infoPtr = 0)
236 : PDF(idBeamIn) {init( is, infoPtr);}
241 static const int np, nx, nq, nqc0, nqb0;
242 static const double xmin, xmax, qsqmin, qsqmax, xxInit[65], qqInit[49];
245 int iFit, alphaSorder, alphaSnfmax;
246 double mCharm, mBottom, alphaSQ0, alphaSMZ, distance, tolerance,
247 xx[65], qq[49], c[13][64][48][5][5];
250 void init(
int iFitIn,
string xmlPath, Info* infoPtr);
253 void init( istream& is, Info* infoPtr);
256 void xfUpdate(
int ,
double x,
double Q2);
259 double parton(
int flavour,
double x,
double q);
260 double parton_interpolate(
int flavour,
double xxx,
double qqq);
261 double parton_extrapolate(
int flavour,
double xxx,
double qqq);
264 int locate(
double xx[],
int n,
double x);
265 double polderivative1(
double x1,
double x2,
double x3,
double y1,
266 double y2,
double y3);
267 double polderivative2(
double x1,
double x2,
double x3,
double y1,
268 double y2,
double y3);
269 double polderivative3(
double x1,
double x2,
double x3,
double y1,
270 double y2,
double y3);
290 class CTEQ6pdf :
public PDF {
295 CTEQ6pdf(
int idBeamIn = 2212,
int iFitIn = 1,
double rescaleIn = 1.,
296 string xmlPath =
"../share/Pythia8/xmldoc/", Info* infoPtr = 0)
297 : PDF(idBeamIn), doExtraPol(false) {rescale = rescaleIn,
298 init( iFitIn, xmlPath, infoPtr);}
301 CTEQ6pdf(
int idBeamIn, istream& is,
bool isPdsGrid =
false,
302 Info* infoPtr = 0) : PDF(idBeamIn), doExtraPol(false) {
303 init( is, isPdsGrid, infoPtr);}
306 void setExtrapolate(
bool doExtraPolIn) {doExtraPol = doExtraPolIn;}
311 static const double EPSILON, XPOWER;
315 int iFit, order, nQuark, nfMx, mxVal, nX, nT, nG,
316 iGridX, iGridQ, iGridLX, iGridLQ;
317 double rescale, lambda, mQ[7], qIni, qMax, tv[26], xMin, xv[202], upd[57773],
318 xvpow[202], xMinEps, xMaxEps, qMinEps, qMaxEps, fVec[5],
319 tConst[9], xConst[9], dlx, xLast, qLast;
322 void init(
int iFitIn,
string xmlPath, Info* infoPtr);
325 void init( istream& is,
bool isPdsGrid, Info* infoPtr);
328 void xfUpdate(
int id,
double x,
double Q2);
331 double parton6(
int iParton,
double x,
double q);
334 double polint4F(
double xgrid[],
double fgrid[],
double xin);
344 class ProtonPoint :
public PDF {
349 ProtonPoint(
int idBeamIn = 2212, Info* infoPtrIn = 0)
350 : PDF(idBeamIn), infoPtr(infoPtrIn) {}
355 static const double ALPHAEM, Q2MAX, Q20, A, B, C;
358 void xfUpdate(
int ,
double x,
double Q2);
361 double phiFunc(
double x,
double Q);
373 class GRVpiL :
public PDF {
378 GRVpiL(
int idBeamIn = 211,
double rescaleIn = 1.) :
379 PDF(idBeamIn) {rescale = rescaleIn;}
382 void setVMDscale(
double rescaleIn = 1.) {rescale = rescaleIn;}
390 void xfUpdate(
int ,
double x,
double Q2);
398 class PomFix :
public PDF {
403 PomFix(
int idBeamIn = 990,
double PomGluonAIn = 0.,
404 double PomGluonBIn = 0.,
double PomQuarkAIn = 0.,
405 double PomQuarkBIn = 0.,
double PomQuarkFracIn = 0.,
406 double PomStrangeSuppIn = 0.) : PDF(idBeamIn),
407 PomGluonA(PomGluonAIn), PomGluonB(PomGluonBIn),
408 PomQuarkA(PomQuarkAIn), PomQuarkB(PomQuarkBIn),
409 PomQuarkFrac(PomQuarkFracIn), PomStrangeSupp(PomStrangeSuppIn)
415 double PomGluonA, PomGluonB, PomQuarkA, PomQuarkB, PomQuarkFrac,
416 PomStrangeSupp, normGluon, normQuark;
422 void xfUpdate(
int ,
double x,
double);
433 class PomH1FitAB :
public PDF {
438 PomH1FitAB(
int idBeamIn = 990,
int iFit = 1,
double rescaleIn = 1.,
439 string xmlPath =
"../share/Pythia8/xmldoc/", Info* infoPtr = 0)
440 : PDF(idBeamIn), doExtraPol(false) {rescale = rescaleIn;
441 init( iFit, xmlPath, infoPtr);}
444 PomH1FitAB(
int idBeamIn,
double rescaleIn, istream& is,
445 Info* infoPtr = 0) : PDF(idBeamIn), doExtraPol(false) {
446 rescale = rescaleIn; init( is, infoPtr);}
449 void setExtrapolate(
bool doExtraPolIn) {doExtraPol = doExtraPolIn;}
456 double rescale, xlow, xupp, dx, Q2low, Q2upp, dQ2;
457 double gluonGrid[100][30];
458 double quarkGrid[100][30];
461 void init(
int iFit,
string xmlPath, Info* infoPtr);
464 void init( istream& is, Info* infoPtr);
467 void xfUpdate(
int ,
double x,
double );
478 class PomH1Jets :
public PDF {
483 PomH1Jets(
int idBeamIn = 990,
int iFit = 1,
double rescaleIn = 1.,
484 string xmlPath =
"../share/Pythia8/xmldoc/", Info* infoPtr = 0)
485 : PDF(idBeamIn), doExtraPol(false) {rescale = rescaleIn;
486 init( iFit, xmlPath, infoPtr);}
489 PomH1Jets(
int idBeamIn,
double rescaleIn, istream& is,
490 Info* infoPtr = 0) : PDF(idBeamIn), doExtraPol(false) {rescale = rescaleIn;
494 void setExtrapolate(
bool doExtraPolIn) {doExtraPol = doExtraPolIn;}
503 double gluonGrid[100][88];
504 double singletGrid[100][88];
505 double charmGrid[100][88];
508 void init(
int iFit,
string xmlPath, Info* infoPtr);
511 void init( istream& is, Info* infoPtr);
514 void xfUpdate(
int id,
double x,
double );
526 :
PDF(idBeamIn), pPDFPtr(ppdf), xPomNow(-1.0), hixpow(4.0), newfac(1.0) {
528 hixpow = settings.parm(
"PDF:PomHixSupp");
529 if ( settings.mode(
"Angantyr:SASDmode") == 3 ) newfac =
530 log(settings.parm(
"Beams:eCM")/settings.parm(
"Diffraction:mMinPert"));
531 if ( settings.mode(
"Angantyr:SASDmode") == 4 ) newfac = 0.0;
538 void xPom(
double xpom = -1.0) { xPomNow = xpom; }
558 void xfUpdate(
int ,
double x,
double Q2);
571 Lepton(
int idBeamIn = 11) :
PDF(idBeamIn) {}
574 Lepton(
int idBeamIn,
double Q2maxGammaIn, Info* infoPtrIn,
575 Rndm* rndmPtrIn = 0) : PDF(idBeamIn) { Q2maxGamma = Q2maxGammaIn;
576 infoPtr = infoPtrIn; rndmPtr = rndmPtrIn; }
579 double sampleQ2gamma(
double Q2min)
580 {
return Q2min * pow(Q2maxGamma / Q2min, rndmPtr->flat()); }
585 static const double ALPHAEM, ME, MMU, MTAU;
588 void xfUpdate(
int id,
double x,
double Q2);
591 double m2Lep, Q2maxGamma;
605 class LeptonPoint :
public PDF {
610 LeptonPoint(
int idBeamIn = 11) : PDF(idBeamIn) {}
615 void xfUpdate(
int ,
double ,
double ) {xlepton = 1; xgamma = 0.;}
624 class NeutrinoPoint :
public PDF {
629 NeutrinoPoint(
int idBeamIn = 12) : PDF(idBeamIn) {}
634 void xfUpdate(
int ,
double ,
double ) {xlepton = 2; xgamma = 0.;}
650 class NNPDF :
public PDF {
655 NNPDF(
int idBeamIn = 2212,
int iFitIn = 1,
656 string xmlPath =
"../share/Pythia8/xmldoc/", Info* infoPtr = 0)
657 : PDF(idBeamIn), fPDFGrid(NULL), fXGrid(NULL), fLogXGrid(NULL),
658 fQ2Grid(NULL), fLogQ2Grid(NULL), fRes(NULL) {
659 init( iFitIn, xmlPath, infoPtr); };
662 NNPDF(
int idBeamIn, istream& is, Info* infoPtr = 0)
663 : PDF(idBeamIn), fPDFGrid(NULL), fXGrid(NULL), fLogXGrid(NULL),
664 fQ2Grid(NULL), fLogQ2Grid(NULL), fRes(NULL) { init( is, infoPtr); };
669 for (
int i = 0; i < fNFL; i++) {
670 for (
int j = 0; j < fNX; j++)
671 if (fPDFGrid[i][j])
delete[] fPDFGrid[i][j];
672 if (fPDFGrid[i])
delete[] fPDFGrid[i];
676 if (fXGrid)
delete[] fXGrid;
677 if (fLogXGrid)
delete[] fLogXGrid;
678 if (fQ2Grid)
delete[] fQ2Grid;
679 if (fLogQ2Grid)
delete[] fLogQ2Grid;
680 if (fRes)
delete[] fRes;
686 static const double fXMINGRID;
689 static const int fNFL = 14;
690 static const int fM = 4;
691 static const int fN = 2;
703 void init(
int iFitIn,
string xmlPath, Info* infoPtr);
706 void init( istream& is, Info* infoPtr);
709 void xfUpdate(
int id,
double x,
double Q2);
712 void xfxevolve(
double x,
double Q2);
715 void polint(
double xa[],
double ya[],
int n,
double x,
716 double& y,
double& dy);
717 void polin2(
double x1a[],
double x2a[],
double ya[][fN],
718 double x1,
double x2,
double& y,
double& dy);
726 class LHAPDF :
public PDF {
731 LHAPDF(
int idIn,
string pSet, Info* infoPtrIn);
735 bool isSetup() {
if (pdfPtr)
return pdfPtr->isSetup();
return false;}
738 void newValenceContent(
int idVal1In,
int idVal2In) {
739 if (pdfPtr) pdfPtr->newValenceContent(idVal1In, idVal2In);}
742 void setExtrapolate(
bool extrapolate) {
743 if (pdfPtr) pdfPtr->setExtrapolate(extrapolate);}
746 double xf(
int id,
double x,
double Q2) {
747 if (pdfPtr)
return pdfPtr->xf(
id, x, Q2);
else return 0;}
750 double xfVal(
int id,
double x,
double Q2) {
751 if (pdfPtr)
return pdfPtr->xfVal(
id, x, Q2);
else return 0;}
752 double xfSea(
int id,
double x,
double Q2) {
753 if (pdfPtr)
return pdfPtr->xfSea(
id, x, Q2);
else return 0;}
756 bool insideBounds(
double x,
double Q2) {
757 if(pdfPtr)
return pdfPtr->insideBounds(x, Q2);
else return true;}
760 double alphaS(
double Q2) {
761 if(pdfPtr)
return pdfPtr->alphaS(Q2);
else return 1.;}
764 double mQuarkPDF(
int idIn) {
765 if(pdfPtr)
return pdfPtr->mQuarkPDF(idIn);
else return -1.;}
769 if(pdfPtr)
return pdfPtr->nMembers();
else return 1;}
773 void calcPDFEnvelope(
int idNow,
double xNow,
double Q2Now,
int valSea) {
774 if (pdfPtr) pdfPtr->calcPDFEnvelope(idNow, xNow, Q2Now, valSea);}
775 void calcPDFEnvelope(pair<int,int> idNows, pair<double,double> xNows,
776 double Q2Now,
int valSea) {
777 if (pdfPtr) pdfPtr->calcPDFEnvelope(idNows,xNows,Q2Now,valSea);}
778 PDFEnvelope getPDFEnvelope() {
if (pdfPtr)
return pdfPtr->getPDFEnvelope();
779 else return PDFEnvelope(); }
784 void setValenceContent() {
if (pdfPtr) pdfPtr->setValenceContent();}
787 void xfUpdate(
int id,
double x,
double Q2) {
788 if (pdfPtr) pdfPtr->xfUpdate(
id, x, Q2);}
791 typedef PDF* NewLHAPDF(
int,
string,
int, Info*);
792 typedef void DeleteLHAPDF(PDF*);
793 typedef void (*Symbol)();
796 Symbol symbol(
string symName);
817 CJKL(
int idBeamIn = 22,
Rndm* rndmPtrIn = 0 ) :
PDF(idBeamIn) {
818 rndmPtr = rndmPtrIn; }
821 double gammaPDFxDependence(
int id,
double);
822 double gammaPDFRefScale(
int);
825 int sampleGammaValFlavor(
double Q2);
828 double xfIntegratedTotal(
double Q2);
833 static const double ALPHAEM, Q02, Q2MIN, Q2REF, LAMBDA, MC, MB;
839 void xfUpdate(
int ,
double x,
double Q2);
842 double pointlikeG(
double x,
double s);
843 double pointlikeU(
double x,
double s);
844 double pointlikeD(
double x,
double s);
845 double pointlikeC(
double x,
double s,
double Q2);
846 double pointlikeB(
double x,
double s,
double Q2);
849 double hadronlikeG(
double x,
double s);
850 double hadronlikeSea(
double x,
double s);
851 double hadronlikeVal(
double x,
double s);
852 double hadronlikeC(
double x,
double s,
double Q2);
853 double hadronlikeB(
double x,
double s,
double Q2);
868 LHAGrid1(
int idBeamIn = 2212,
string pdfWord =
"void",
869 string xmlPath =
"../share/Pythia8/xmldoc/",
Info* infoPtr = 0)
870 :
PDF(idBeamIn), doExtraPol(
false), pdfGrid(NULL), pdfSlope(NULL) {
871 init( pdfWord, xmlPath, infoPtr); };
875 :
PDF(idBeamIn), doExtraPol(
false), pdfGrid(NULL), pdfSlope(NULL) {
876 init( is, infoPtr); };
879 ~
LHAGrid1() {
if (pdfGrid) {
for (
int iid = 0; iid < 12; ++iid) {
880 for (
int ix = 0; ix < nx; ++ix)
delete[] pdfGrid[iid][ix];
881 delete[] pdfGrid[iid]; }
delete[] pdfGrid; }
882 if (pdfSlope) {
for (
int iid = 0; iid < 12; ++iid)
delete[] pdfSlope[iid];
883 delete[] pdfSlope;} };
886 void setExtrapolate(
bool doExtraPolIn) {doExtraPol = doExtraPolIn;}
894 double xMin, xMax, qMin, qMax, pdfVal[12];
895 vector<double> xGrid, lnxGrid, qGrid, lnqGrid, qDiv;
900 void init(
string pdfSet,
string xmlPath,
Info* infoPtr);
903 void init( istream& is,
Info* infoPtr);
906 void xfUpdate(
int id,
double x,
double Q2);
909 void xfxevolve(
double x,
double Q2);
927 Lepton2gamma(
int idBeamIn,
double m2leptonIn,
double Q2maxGamma,
928 PDF* gammaPDFPtrIn,
Info* infoPtrIn,
Rndm* rndmPtrIn) :
PDF(idBeamIn) {
929 m2lepton = m2leptonIn; Q2max = Q2maxGamma; gammaPDFPtr = gammaPDFPtrIn;
930 infoPtr = infoPtrIn; rndmPtr = rndmPtrIn; hasGammaInLepton =
true;
931 sampleXgamma =
true; }
934 void xfUpdate(
int id,
double x,
double Q2);
935 double xGamma() {
return xGm; }
936 double xfMax(
int id,
double x,
double Q2);
937 double xfSame(
int id,
double x,
double Q2);
940 double sampleQ2gamma(
double Q2min)
941 {
return Q2min * pow(Q2max / Q2min, rndmPtr->flat()); }
946 static const double ALPHAEM, Q2MIN;
947 double m2lepton, Q2max, xGm;
977 void xfUpdate(
int ,
double ,
double ) { xgamma = 1.;}
990 static const double ALPHAEM;
991 double m2, Q2max, Q2min, xMax, xMin, xHadr, norm;
1014 Rndm* rndmPtrIn ) :
PDF(idBeamIn) { m2 = m2In,
1015 gammaFluxPtr = gammaFluxPtrIn; gammaPDFPtr = gammaPDFPtrIn;
1016 hasGammaInLepton =
true; infoPtr = infoPtrIn; settingsPtr = settingsPtrIn;
1017 rndmPtr = rndmPtrIn; init(); }
1020 void xfUpdate(
int ,
double x,
double Q2);
1023 double xfFlux(
int id,
double x,
double Q2);
1024 double xfGamma(
int id,
double x,
double Q2);
1025 double xfApprox(
int id,
double x,
double Q2);
1028 double getQ2min() {
return Q2min; }
1029 double getXmin() {
return xMin; }
1030 double getXhadr() {
return xHadr; }
1031 double getGammaFluxNorm() {
return norm; }
1034 double sampleXgamma(
double xMinIn)
1035 {
double xMinSample = (xMinIn < 0.) ? xMin : xMinIn;
1036 return xMinSample * pow(xMax / xMinSample, rndmPtr->flat()); }
1037 double sampleQ2gamma(
double )
1038 {
return Q2min * pow(Q2max / Q2min, rndmPtr->flat()); }
1051 nPDF(
int idBeamIn = 2212,
PDF* protonPDFPtrIn = 0) :
PDF(idBeamIn)
1052 { initNPDF(protonPDFPtrIn); }
1055 void xfUpdate(
int id,
double x,
double Q2);
1058 virtual void rUpdate(
int,
double,
double) = 0;
1061 void initNPDF(
PDF* protonPDFPtrIn = 0);
1064 int getA() {
return a;}
1065 int getZ() {
return z;}
1069 void setMode(
double zaIn) { za = zaIn; na = 1. - za; }
1070 void resetMode() { za = double(z)/double(a); na = double(a-z)/double(a); }
1076 double ruv, rdv, ru, rd, rs, rc,
rb, rg;
1100 Isospin(
int idBeamIn = 2212,
PDF* protonPDFPtrIn = 0)
1101 :
nPDF(idBeamIn, protonPDFPtrIn) {}
1104 void rUpdate(
int ,
double ,
double ) {}
1116 EPS09(
int idBeamIn = 2212,
int iOrderIn = 1,
int iSetIn = 1,
1117 string xmlPath =
"../share/Pythia8/xmldoc/",
PDF* protonPDFPtrIn = 0,
1118 Info* infoPtrIn = 0) :
nPDF(idBeamIn, protonPDFPtrIn)
1119 { infoPtr = infoPtrIn; init(iOrderIn, iSetIn, xmlPath);}
1122 void rUpdate(
int id,
double x,
double Q2);
1125 void setErrorSet(
int iSetIn) {iSet = iSetIn;}
1130 static const double Q2MIN, Q2MAX, XMIN, XMAX, XCUT;
1131 static const int Q2STEPS, XSTEPS;
1135 double grid[31][51][51][8];
1141 void init(
int iOrderIn,
int iSetIn,
string xmlPath);
1144 double polInt(
double* fi,
double* xi,
int n,
double x);
1156 EPPS16(
int idBeamIn = 2212,
int iSetIn = 1,
1157 string xmlPath =
"../share/Pythia8/xmldoc/",
PDF* protonPDFPtrIn = 0,
1158 Info* infoPtrIn = 0) :
nPDF(idBeamIn, protonPDFPtrIn)
1159 { infoPtr = infoPtrIn; init(iSetIn, xmlPath);}
1162 void rUpdate(
int id,
double x,
double Q2);
1165 void setErrorSet(
int iSetIn) {iSet = iSetIn;}
1170 static const double Q2MIN, Q2MAX, XMIN, XMAX, XCUT;
1171 static const int Q2STEPS, XSTEPS, NINTQ2, NINTX, NSETS;
1175 double grid[41][31][80][8];
1176 double logQ2min, loglogQ2maxmin, logX2min;
1182 void init(
int iSetIn,
string xmlPath);
1185 double polInt(
double* fi,
double* xi,
int n,
double x);
1192 #endif // Pythia8_PartonDistributions_H