14 #include "Pythia8/Pythia.h" 27 TopRecoilHook(
bool doTopRecoilIn =
true,
bool useOldDipoleIn =
false,
bool doListIn =
false) {
32 wtCorr =
new Hist(
"corrective weight", 100, 0., 2.);
41 bool recoilToColoured = settingsPtr->flag(
"TimeShower:recoilToColoured");
60 int iTop = partonSystemsPtr->getInRes(iSys);
61 if (iTop == 0 || event[iTop].idAbs() != 6)
65 int sizeOut = partonSystemsPtr->sizeOut(iSys);
71 int iEmt = sizeOld + 1;
72 int iRec = sizeOld + 2;
77 iRad =
event[iRad].mother1();
78 iRec =
event[iRec].mother1();
82 if (event[iEmt].
id() != 21)
84 if (event[iTop].
id() == 6) {
85 if (event[iEmt].
col() != event[iTop].
col())
88 if (event[iEmt].acol() != event[iTop].acol())
93 if (event[iRec].idAbs() != 24) {
98 double pRadRec =
event[iRad].p() *
event[iRec].p();
99 double pRadEmt =
event[iRad].p() *
event[iEmt].p();
100 double pRecEmt =
event[iRec].p() *
event[iEmt].p();
101 double wtW = 2. * pRadRec / (pRadEmt * pRecEmt) - pow2(event[iRad].
m() / pRadEmt);
104 wtW -= pow2(event[iRec].
m() / pRecEmt);
107 double pRadTop =
event[iRad].p() *
event[iTop].p();
108 double pTopEmt =
event[iTop].p() *
event[iEmt].p();
110 2. * pRadTop / (pRadEmt * pTopEmt) - pow2(event[iRad].
m() / pRadEmt) - pow2(event[iTop].
m() / pTopEmt);
117 partonSystemsPtr->list();
122 return (wtT < wtW * rndmPtr->flat());
bool doVetoFSREmission(int sizeOld, const Event &event, int iSys, bool inResonance) override
bool initAfterBeams() override
TopRecoilHook(bool doTopRecoilIn=true, bool useOldDipoleIn=false, bool doListIn=false)
bool canVetoFSREmission() override
~TopRecoilHook() override