10 #ifndef Pythia8_TimeShower_H
11 #define Pythia8_TimeShower_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 TimeDipoleEnd() : iRadiator(-1), iRecoiler(-1), pTmax(0.), colType(0),
36 chgType(0), gamType(0), isrType(0), system(0), systemRec(0), MEtype(0),
37 iMEpartner(-1), isOctetOnium(
false), isHiddenValley(
false), colvType(0),
38 MEmix(0.), MEorder(
true), MEsplit(
true), MEgluinoRec(
false),
40 TimeDipoleEnd(
int iRadiatorIn,
int iRecoilerIn,
double pTmaxIn = 0.,
41 int colIn = 0,
int chgIn = 0,
int gamIn = 0,
int isrIn = 0,
42 int systemIn = 0,
int MEtypeIn = 0,
int iMEpartnerIn = -1,
43 bool isOctetOniumIn =
false,
bool isHiddenValleyIn =
false,
44 int colvTypeIn = 0,
double MEmixIn = 0.,
bool MEorderIn =
true,
45 bool MEsplitIn =
true,
bool MEgluinoRecIn =
false,
46 bool isFlexibleIn =
false) :
47 iRadiator(iRadiatorIn), iRecoiler(iRecoilerIn), pTmax(pTmaxIn),
48 colType(colIn), chgType(chgIn), gamType(gamIn), isrType(isrIn),
49 system(systemIn), systemRec(systemIn) , MEtype(MEtypeIn),
50 iMEpartner(iMEpartnerIn), isOctetOnium(isOctetOniumIn),
51 isHiddenValley(isHiddenValleyIn), colvType(colvTypeIn), MEmix(MEmixIn),
52 MEorder (MEorderIn), MEsplit(MEsplitIn), MEgluinoRec(MEgluinoRecIn),
53 isFlexible(isFlexibleIn) { }
56 int iRadiator, iRecoiler;
58 int colType, chgType, gamType, isrType, system, systemRec,
60 bool isOctetOnium, isHiddenValley;
63 bool MEorder, MEsplit, MEgluinoRec;
68 double mRad, m2Rad, mRec, m2Rec, mDip, m2Dip, m2DipCorr,
69 pT2, m2, z, mFlavour, asymPol, flexFactor;
92 UserHooks* userHooksPtrIn) { infoPtr = infoPtrIn;
93 settingsPtr = settingsPtrIn; particleDataPtr = particleDataPtrIn;
94 rndmPtr = rndmPtrIn; coupSMPtr = coupSMPtrIn;
95 partonSystemsPtr = partonSystemsPtrIn; userHooksPtr = userHooksPtrIn;}
103 int beamOffsetIn = 0) {beamAPtr = beamAPtrIn; beamBPtr = beamBPtrIn;
104 beamOffset = beamOffsetIn;}
107 virtual bool limitPTmax(
Event& event,
double Q2Fac = 0.,
111 double enhancePTmax() {
return pTmaxFudge;}
114 virtual int shower(
int iBeg,
int iEnd,
Event& event,
double pTmax,
118 double pTLastInShower() {
return pTLastBranch;}
121 virtual void prepare(
int iSys,
Event& event,
bool limitPTmaxIn =
true);
124 virtual void rescatterUpdate(
int iSys,
Event& event);
127 virtual void update(
int iSys,
Event& event);
130 virtual double pTnext(
Event& event,
double pTbegAll,
double pTendAll);
133 virtual bool branch(
Event& event,
bool isInterleaved =
false);
136 int system()
const {
return iSysSel;};
139 virtual void list( ostream& os = cout)
const;
171 double pTmaxFudge, pTLastBranch;
176 static const double SIMPLIFYROOT, XMARGIN, XMARGINCOMB, TINYPDF, LARGEM2,
177 THRESHM2, LAMBDA3MARGIN;
179 static const bool FIXRESCATTER, VETONEGENERGY;
180 static const double MAXVIRTUALITYFRACTION, MAXNEGENERGYFRACTION;
183 bool doQCDshower, doQEDshowerByQ, doQEDshowerByL, doQEDshowerByGamma,
184 doMEcorrections, doMEafterFirst, doPhiPolAsym, doInterleave,
185 allowBeamRecoil, dampenBeamRecoil, recoilToColoured,
186 allowRescatter, canVetoEmission, doHVshower, brokenHVsym,
187 globalRecoil, useLocalRecoilNow;
188 int pTmaxMatch, pTdampMatch, alphaSorder, nGluonToQuark,
189 alphaEMorder, nGammaToQuark, nGammaToLepton, nCHV, idHV,
191 double pTdampFudge, mc, mb, m2c, m2b, alphaSvalue, alphaS2pi,
192 Lambda3flav, Lambda4flav, Lambda5flav, Lambda3flav2, Lambda4flav2,
193 Lambda5flav2, pTcolCutMin, pTcolCut, pT2colCut, pTchgQCut,
194 pT2chgQCut, pTchgLCut, pT2chgLCut, mMaxGamma, m2MaxGamma,
195 octetOniumFraction, octetOniumColFac, mZ, gammaZ, thetaWRat,
196 CFHV, alphaHVfix, pThvCut, pT2hvCut, mHV, pTmaxFudgeMPI;
204 double pT2damp, kRad, kEmt;
207 vector<TimeDipoleEnd> dipEnd;
212 void setupQCDdip(
int iSys,
int i,
int colTag,
int colSign,
Event& event,
213 bool isOctetOnium =
false,
bool limitPTmaxIn =
true);
214 void setupQEDdip(
int iSys,
int i,
int chgType,
int gamType,
Event& event,
215 bool limitPTmaxIn =
true);
216 void setupHVdip(
int iSys,
int i,
Event& event,
bool limitPTmaxIn =
true);
219 void pT2nextQCD(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
223 void pT2nextQED(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
227 void pT2nextHV(
double pT2begDip,
double pT2sel,
TimeDipoleEnd& dip,
234 int findMEparticle(
int id,
bool isHiddenColour =
false);
237 double gammaZmix(
Event& event,
int iRes,
int iDau1,
int iDau2);
244 double calcMEcorr(
int kind,
int combiIn,
double mixIn,
double x1,
245 double x2,
double r1,
double r2,
double r3 = 0.);
251 bool rescatterPropagateRecoil(
Event& event,
Vec4& pNew);
259 #endif // Pythia8_TimeShower_H