10 #ifndef Pythia8_SpaceShower_H
11 #define Pythia8_SpaceShower_H
14 #include "BeamParticle.h"
17 #include "ParticleData.h"
18 #include "PartonSystems.h"
19 #include "PythiaStdlib.h"
21 #include "StandardModel.h"
22 #include "UserHooks.h"
35 SpaceDipoleEnd(
int systemIn = 0,
int sideIn = 0,
int iRadiatorIn = 0,
36 int iRecoilerIn = 0,
double pTmaxIn = 0.,
int colTypeIn = 0,
37 int chgTypeIn = 0,
int MEtypeIn = 0,
bool normalRecoilIn =
true) :
38 system(systemIn), side(sideIn), iRadiator(iRadiatorIn),
39 iRecoiler(iRecoilerIn), pTmax(pTmaxIn), colType(colTypeIn),
40 chgType(chgTypeIn), MEtype(MEtypeIn), normalRecoil(normalRecoilIn),
41 nBranch(0), pT2Old(0.), zOld(0.5) { }
44 void store(
int idDaughterIn,
int idMotherIn,
int idSisterIn,
45 double x1In,
double x2In,
double m2DipIn,
double pT2In,
double zIn,
46 double xMoIn,
double Q2In,
double mSisterIn,
double m2SisterIn,
47 double pT2corrIn) {idDaughter = idDaughterIn; idMother = idMotherIn;
48 idSister = idSisterIn; x1 = x1In; x2 = x2In; m2Dip = m2DipIn;
49 pT2 = pT2In; z = zIn; xMo = xMoIn; Q2 = Q2In; mSister = mSisterIn;
50 m2Sister = m2SisterIn; pT2corr = pT2corrIn;}
53 int system, side, iRadiator, iRecoiler;
55 int colType, chgType, MEtype;
59 int nBranch, idDaughter, idMother, idSister, iFinPol;
60 double x1, x2, m2Dip, pT2, z, xMo, Q2, mSister, m2Sister, pT2corr,
61 pT2Old, zOld, asymPol;
84 infoPtr = infoPtrIn; settingsPtr = settingsPtrIn;
85 particleDataPtr = particleDataPtrIn; rndmPtr = rndmPtrIn;
86 partonSystemsPtr = partonSystemsPtrIn; userHooksPtr = userHooksPtrIn;}
93 {beamAPtr = beamAPtrIn; beamBPtr = beamBPtrIn;}
96 virtual bool limitPTmax(
Event& event,
double Q2Fac = 0.,
100 virtual double enhancePTmax()
const {
return pTmaxFudge;}
103 virtual void prepare(
int iSys,
Event& event,
bool limitPTmaxIn =
true);
107 virtual void update(
int ,
Event& ) {}
110 virtual double pTnext(
Event& event,
double pTbegAll,
double pTendAll,
114 virtual bool branch(
Event& event);
117 int system()
const {
return iSysSel;}
120 bool doRestart()
const {
return rescatterFail;}
123 virtual void list(ostream& os = cout)
const;
157 static const bool DEBUG;
158 static const int MAXLOOPTINYPDF;
159 static const double CTHRESHOLD, BTHRESHOLD, EVALPDFSTEP, TINYPDF,
160 TINYKERNELPDF, TINYPT2, HEAVYPT2EVOL, HEAVYXEVOL, EXTRASPACEQ,
161 LAMBDA3MARGIN, LEPTONXMIN, LEPTONXMAX, LEPTONPT2MIN, LEPTONFUDGE;
164 bool doQCDshower, doQEDshowerByQ, doQEDshowerByL, useSamePTasMPI,
165 doMEcorrections, doMEafterFirst, doPhiPolAsym, doPhiIntAsym,
166 doRapidityOrder, canVetoEmission;
167 int pTmaxMatch, pTdampMatch, alphaSorder, alphaEMorder, nQuarkIn,
169 double pTdampFudge, mc, mb, m2c, m2b, alphaSvalue, alphaS2pi,
170 Lambda3flav, Lambda4flav, Lambda5flav, Lambda3flav2, Lambda4flav2,
171 Lambda5flav2, pT0Ref, ecmRef, ecmPow, pTmin, sCM, eCM, pT0,
172 pTminChgQ, pTminChgL, pT20, pT2min, pT2minChgQ, pT2minChgL,
173 pTmaxFudgeMPI, strengthIntAsym;
180 bool sideA, dopTdamp;
181 int iNow, iRec, idDaughter, nRad, idResFirst, idResSecond;
182 double xDaughter, x1Now, x2Now, m2Dip, m2Rec, pT2damp, pTbegRef;
185 vector<SpaceDipoleEnd> dipEnd;
188 int iDipNow, iSysNow;
194 void pT2nextQCD(
double pT2begDip,
double pT2endDip);
198 double m2Threshold,
double xMaxAbs,
double zMinAbs,
202 void pT2nextQED(
double pT2begDip,
double pT2endDip);
205 int findMEtype(
int iSys,
Event& event);
208 double calcMEmax(
int MEtype,
int idMother,
int idDaughterIn);
211 double calcMEcorr(
int MEtype,
int idMother,
int idDaughterIn,
double M2,
212 double z,
double Q2);
223 #endif // Pythia8_SpaceShower_H