9 #ifndef Pythia8_VinciaFSR_H 10 #define Pythia8_VinciaFSR_H 12 #include "Pythia8/TimeShower.h" 13 #include "Pythia8/VinciaAntennaFunctions.h" 14 #include "Pythia8/VinciaCommon.h" 15 #include "Pythia8/VinciaISR.h" 16 #include "Pythia8/VinciaMergingHooks.h" 17 #include "Pythia8/VinciaTrialGenerators.h" 18 #include "Pythia8/VinciaQED.h" 19 #include "Pythia8/VinciaEW.h" 20 #include "Pythia8/VinciaWeights.h" 21 #include "Pythia8/VinciaDiagnostics.h" 64 vector<int> iIn) : sectorShower(sectorShowerIn) {
65 reset(iSysIn, event, iIn);
70 int iIn0,
int iIn1,
int iIn2=0) : sectorShower(sectorShowerIn) {
71 reset(iSysIn, event, iIn0, iIn1, iIn2);
78 void reset(
int iSysIn,
Event& event, vector<int> iIn);
81 void reset(
int iSysIn,
Event& event,
int i0In,
int i1In,
int i2In = 0) {
82 vector<int> iIn {i0In, i1In};
if (i2In >= 1) iIn.push_back(i2In);
83 reset(iSysIn,event,iIn);}
86 int i0()
const {
return (iSav.size() >= 1) ? iSav[0] : -1;}
87 int i1()
const {
return (iSav.size() >= 2) ? iSav[1] : -1;}
88 int i2()
const {
return (iSav.size() >= 3) ? iSav[2] : -1;}
89 int iVec(
unsigned int i)
const {
return (iSav.size() > i) ? iSav[i] : -1;}
90 vector<int> iVec() {
return iSav;}
91 int id0()
const {
return (idSav.size() >= 1) ? idSav[0] : -1;}
92 int id1()
const {
return (idSav.size() >= 2) ? idSav[1] : -1;}
93 int id2()
const {
return (idSav.size() >= 3) ? idSav[2] : -1;}
94 vector<int> idVec()
const {
return idSav;}
95 int colType0()
const {
return (colTypeSav.size() >= 1) ? colTypeSav[0] : -1;}
96 int colType1()
const {
return (colTypeSav.size() >= 2) ? colTypeSav[1] : -1;}
97 int colType2()
const {
return (colTypeSav.size() >= 3) ? colTypeSav[2] : -1;}
98 vector<int> colTypeVec()
const {
return colTypeSav;}
99 int col0()
const {
return (colSav.size() >= 1) ? colSav[0] : 0;}
100 int col1()
const {
return (colSav.size() >= 2) ? colSav[1] : 0;}
101 int col2()
const {
return (colSav.size() >= 3) ? colSav[2] : 0;}
102 vector<int> colVec()
const {
return colSav;}
103 int acol0()
const {
return (acolSav.size() >= 1) ? acolSav[0] : 0;}
104 int acol1()
const {
return (acolSav.size() >= 2) ? acolSav[1] : 0;}
105 int acol2()
const {
return (acolSav.size() >= 3) ? acolSav[2] : 0;}
106 vector<int> acolVec()
const {
return acolSav;}
107 int h0()
const {
return (hSav.size() >= 1) ? hSav[0] : -1;}
108 int h1()
const {
return (hSav.size() >= 2) ? hSav[1] : -1;}
109 int h2()
const {
return (hSav.size() >= 3) ? hSav[2] : -1;}
110 vector<int> hVec()
const {
return hSav;}
111 double m0()
const {
return (mSav.size() >= 1) ? mSav[0] : -1;}
112 double m1()
const {
return (mSav.size() >= 2) ? mSav[1] : -1;}
113 double m2()
const {
return (mSav.size() >= 3) ? mSav[2] : -1;}
114 vector<double> mVec()
const {
return mSav;}
115 vector<double> getmPostVec() {
return mPostSav;}
116 int colTag() {
return colTagSav;}
120 virtual double getQ2Max(
int) = 0;
124 double mAnt()
const {
return mAntSav;}
125 double m2Ant()
const {
return m2AntSav;}
126 double sAnt()
const {
return sAntSav;}
127 double kallenFac()
const {
return kallenFacSav;}
128 double enhanceFac()
const {
return enhanceSav;}
129 double q2Trial()
const {
return q2NewSav;}
130 enum AntFunType antFunTypePhys()
const {
return antFunTypeSav;}
133 virtual double genQ2(
int evTypeIn,
double q2MaxNow,
Rndm* rndmPtr,
135 vector<double> headroomIn, vector<double> enhanceFacIn,
142 invariants.clear();
return false;}
150 virtual double getpTscale();
153 virtual double getXj();
157 virtual int idNew()
const {
return 0;}
158 virtual double mNew()
const {
return 0.0;}
161 virtual bool getNewParticles(
Event& event, vector<Vec4> momIn,
162 vector<int> hIn, vector<Particle> &pNew,
Rndm* rndmPtr,
167 virtual void list(
string header=
"none",
bool withLegend=
true)
const;
170 virtual void setidPost();
171 virtual vector<double> setmPostVec();
172 virtual void setStatPost();
173 virtual void setMaps(
int);
180 virtual int posR()
const {
return -1;}
184 virtual int posF()
const {
return -1;}
188 return iSectorWinner;
207 if (trialGenPtr !=
nullptr) {
208 trialGenPtr->needsNewTrial();
215 if (trialGenPtr !=
nullptr) {
216 trialGenPtr->resetTrial();
220 shared_ptr<TrialGenerator> trialGenPtr = {};
224 map<int, pair<int, int> > daughters2mothers;
230 vector<int> iSav, idSav, colTypeSav, hSav, colSav, acolSav;
231 vector<int> idPostSav, statPostSav;
232 vector<double> mSav, mPostSav;
233 int colTagSav{}, evTypeSav{};
239 double mAntSav{}, m2AntSav{}, kallenFacSav{}, sAntSav{};
242 bool hasTrialSav{
false};
243 double headroomSav{1.}, enhanceSav{1.}, q2BegSav{}, q2NewSav{};
244 vector<double> invariantsSav;
272 Brancher(iSysIn, event, sectorShowerIn, iIn) {
274 initBrancher(zetaGenSet);
280 Brancher(iSysIn, event, sectorShowerIn, iIn0, iIn1) {
282 initBrancher(zetaGenSet);
289 double genQ2(
int evTypeIn,
double q2MaxNow,
Rndm* rndmPtr,
291 vector<double> headroomIn, vector<double> enhanceFacIn,
int verboseIn);
296 virtual bool genInvariants(vector<double>& invariants,
Rndm* rndmPtr,
297 int verboseIn,
Logger* loggerPtr);
302 virtual double pAccept(
const double antPhys,
Logger* loggerPtr,
306 double getQ2Max(
int evType);
309 virtual void setMaps(
int sizeOld);
312 virtual int idNew()
const {
return 21;}
313 virtual double mNew()
const {
return 0.0;}
316 virtual bool getNewParticles(
Event& event, vector<Vec4> momIn,
317 vector<int> hIn, vector<Particle> &pNew,
Rndm* rndmPtr,
338 Brancher(iSysIn, event, sectorShowerIn, iIn) {
340 initBrancher(zetaGenSet);
348 Brancher(iSysIn, event, sectorShowerIn, iIn0, iIn1) {
350 initBrancher(zetaGenSet, col2acol);
359 virtual bool isXG()
const {
return isXGsav;}
362 virtual int idNew()
const {
return idFlavSav;}
363 virtual double mNew()
const {
return mFlavSav;}
367 double genQ2(
int evTypeIn,
double q2MaxNow,
Rndm* rndmPtr,
369 vector<double> headroomIn, vector<double> enhanceFacIn,
int verboseIn);
373 virtual bool genInvariants(vector<double>& invariants,
Rndm* rnmdPtr,
374 int verboseIn,
Logger* loggerPtr);
379 virtual double pAccept(
const double antPhys,
Logger* loggerPtr,
383 double getQ2Max(
int evType);
384 virtual vector<double> setmPostVec();
385 virtual void setidPost();
386 virtual void setStatPost();
387 virtual void setMaps(
int sizeOld);
390 virtual bool getNewParticles(
Event& event, vector<Vec4> momIn,
417 vector<int> allIn) :
Brancher(iSysIn, event, sectorShowerIn, allIn) {}
420 virtual void initRF(
Event& event, vector<int> allIn,
421 unsigned int posResIn,
unsigned int posFIn,
double q2cut,
426 unsigned int posResIn,
unsigned int posFIn,
double q2cut,
428 reset(iSysIn, event, allIn);
429 initRF(event, allIn, posResIn, posFIn, q2cut, zetaGenSet);
434 void setMaps(
int sizeOld);
437 int posR()
const {
return int(posRes);}
438 int posF()
const {
return int(posFinal);}
441 double getQ2Max(
int evType) {
return evType == 1 ? q2MaxSav : 0.;}
446 double getsAK(
double mA,
double mK,
double mAK);
447 double calcQ2Max(
double mA,
double mAK,
double mK);
450 bool vetoPhSpPoint(
const vector<double>& invariants,
int verboseIn);
454 unsigned int posRes{}, posFinal{};
470 map<unsigned int,unsigned int> posNewtoOld{};
487 vector<int> allIn,
unsigned int posResIn,
unsigned int posFIn,
489 BrancherRF(iSysIn, event, sectorShowerIn, allIn) {
491 initBrancher(event, allIn, posResIn, posFIn, q2cut, zetaGenSet);
495 void initBrancher(
Event& event, vector<int> allIn,
unsigned int posResIn,
497 void initRF(
Event& event, vector<int> allIn,
unsigned int posResIn,
499 initBrancher(event, allIn, posResIn, posFIn, q2cut, zetaGenSet);}
502 vector<double> setmPostVec()
override;
503 void setidPost()
override;
504 void setStatPost()
override;
507 bool getNewParticles(
Event& event, vector<Vec4> momIn, vector<int> hIn,
511 double genQ2(
int evTypeIn,
double q2MaxNow,
Rndm* rndmPtr,
513 vector<double> headroomIn, vector<double> enhanceFacIn,
514 int verboseIn)
override;
518 bool genInvariants(vector<double>& invariants,
Rndm* rndmPtr,
519 int verboseIn,
Logger* loggerPtr)
override;
523 double pAccept(
const double,
Logger* loggerPtr,
int verboseIn)
override;
539 vector<int> allIn,
unsigned int posResIn,
unsigned int posFIn,
541 BrancherRF(iSysIn, event, sectorShowerIn, allIn) {
543 initBrancher(event, allIn, posResIn, posFIn, q2cut, zetaGenSet);
547 void initBrancher(
Event& event, vector<int> allIn,
unsigned int posResIn,
549 void initRF(
Event& event, vector<int> allIn,
unsigned int posResIn,
551 initBrancher(event, allIn, posResIn, posFIn, q2cut, zetaGenSet);}
554 vector<double> setmPostVec()
override;
555 void setidPost()
override;
556 void setStatPost()
override;
559 bool getNewParticles(
Event& event, vector<Vec4> momIn,
563 double genQ2(
int evTypeIn,
double q2MaxNow,
Rndm* rndmPtr,
565 vector<double> headroomIn, vector<double> enhanceFacIn,
566 int verboseIn)
override;
594 verbose = 0; headerIsPrinted =
false; isInit =
false;
595 isPrepared =
false; diagnosticsPtr = 0;}
613 bool limitPTmax(
Event& event,
double q2Fac,
double q2Ren)
override;
617 int shower(
int iBeg,
int iEnd,
Event& event,
double pTmax,
618 int nBranchMax = 0)
override;
621 int showerQED(
int iBeg,
int iEnd,
Event& event,
double pTmax)
override;
625 int showerQEDafterRemnants(
Event& event)
override;
630 void prepareProcess(
Event& process,
Event& event,
631 vector<int>& iPosBefShow)
override;
637 void prepare(
int iSys,
Event& event,
bool limitPTmaxIn)
override;
644 void update(
int iSys,
Event& event,
bool hasWeakRad =
false)
override;
647 double pTnext(
Event& event,
double pTbegAll,
double pTendAll,
648 bool isFirstTrial =
false,
bool doTrialIn =
false)
override;
652 double pTresDecMax = 0.;
653 iHardResDecSav = -1 ;
654 for (
size_t i=0; i<pTresDecSav.size(); ++i) {
655 if (pTresDecSav[i] > pTresDecMax) {
656 pTresDecMax = pTresDecSav[i];
664 bool branch(
Event& event,
bool isInterleaved =
false)
override;
671 bool resonanceShower(
Event& process,
Event& event, vector<int>& iPos,
672 double qRestart)
override;
675 void list()
const override;
685 int system()
const override {
return iSysWin;}
710 shared_ptr<VinciaISR> isrPtrIn,
MECs* mecsPtrIn,
716 diagnosticsPtr = diagnosticsPtrIn;
721 ewShowerPtr = ewShowerPtrIn;
726 qedShowerHardPtr = qedShowerPtrIn;
731 qedShowerSoftPtr = qedShowerPtrIn;
739 return antSetPtr->getAntFunPtr(antFunType);}
742 return antSetPtr->getAntFunTypes();}
749 isTrialShower=isTrialShowerIn;
751 void setIsTrialShowerRes(
bool isTrialShowerResIn){
752 isTrialShowerRes=isTrialShowerResIn;
757 void saveBornState(
int iSys,
Event& born);
759 void saveBornForTrialShower(
Event& born);
762 bool check(
int iSys,
Event &event);
770 static const int NLOOPMAX;
773 void initEvolutionWindows(
void);
775 double getQ2Window(
int iWindow,
double q2cutoff);
779 double getkMu2(
bool isEmit);
782 double getMu2(
bool isEmit);
784 void clearContainers();
786 bool setupQCDantennae(
int iSys,
Event& event);
788 void setStartScale(
int iSys,
Event& event);
791 virtual double calcPTresDec(
Particle& res) {
792 if (resDecScaleChoice == 0)
return res.mWidth();
793 double virt =
pow2(res.m()) -
pow2(res.m0());
794 if (resDecScaleChoice == 1)
return abs(virt) / res.m0();
795 else if (resDecScaleChoice == 2)
return sqrt(abs(virt));
800 template <
class T>
bool q2NextQCD( vector<shared_ptr<T> > &brancherVec,
801 const map<double, EvolutionWindow>& evWindows,
const int evType,
802 const double q2Begin,
const double q2End,
bool isEmit);
806 bool q2NextEmitQCD(
const double q2Begin,
double q2End);
807 bool q2NextSplitQCD(
const double q2Begin,
double q2End);
808 bool q2NextEmitResQCD(
const double q2Begin,
const double q2End);
809 bool q2NextSplitResQCD(
const double q2Begin,
const double q2End);
810 bool q2NextEmitQED(
double q2Begin,
const double q2End);
811 bool q2NextSplitQED(
double q2Begin,
const double q2End);
814 bool branchQCD(
Event& event);
816 bool branchEW(
Event& event);
823 double pAcceptCalc(
double antPhys);
825 bool genFullKinematics(
int kineMap,
Event event, vector<Vec4> &pPost);
827 bool acceptTrial(
Event& event);
830 vector<Particle> &newParts);
841 double getMEC(
int iSys,
const Event& event,
847 void updatePartonSystems();
849 void saveEmitterFF(
int iSysIn,
Event& event,
int i0,
int i1);
851 void saveEmitterRF(
int iSys,
Event& event, vector<int> allIn,
852 unsigned int posResIn,
unsigned int posFIn,
bool colMode);
854 void saveSplitterRF(
int iSysIn,
Event& event, vector<int> allIn,
855 unsigned int posResIn,
unsigned int posFIn,
bool colMode);
857 void saveSplitterFF(
int iSysIn,
Event& event,
int i0,
int i1,
bool col2acol);
859 void updateEmittersFF(
Event& event,
int iOld,
int iNew);
861 void updateEmitterFF(
Event& event,
int iOld1,
int iOld2,
int iNew1,
864 void updateSplittersFF(
Event& event,
int iOld,
int iNew);
866 void updateSplitterFF(
Event& event,
int iOld1,
int iOld2,
int iNew1,
867 int iNew2,
bool col2acol);
870 void removeSplitterFF(
int iRemove);
872 bool updateEmittersRF(
int iSysRes,
Event& event,
int iRes);
874 void updateEmittersRF(
int iSysRes,
Event& event, vector<int> resSysAll,
875 unsigned int posRes,
unsigned int posPartner,
bool isCol);
877 bool updateAntennae(
Event& event);
879 bool updateAfterEW(
Event& event,
int sizeOld);
881 void printLookup(unordered_map< pair<int, bool>,
unsigned int>&
882 lookupEmitter,
string name);
886 vector<double> getHeadroom(
int iSys,
bool isEmit,
double q2Next);
888 vector<double> getEnhance(
int iSys,
bool isEmit,
double q2Next);
891 bool isInit{}, isPrepared{};
894 double eCMBeamsSav{}, m2BeamsSav{};
897 bool doFF{}, doRF{}, doII{}, doIF{}, doQED{}, doWeak{};
898 int ewMode{}, ewModeMPI{};
904 bool helicityShower{}, sectorShower{};
905 int evTypeEmit{}, evTypeSplit{}, nGluonToQuark{};
906 double q2CutoffEmit{}, q2CutoffSplit{};
908 map<int,int> resSystems;
913 int pTmaxMatch{}, pTdampMatch{};
914 double pTmaxFudge{}, pT2maxFudge{}, pT2maxFudgeMPI{}, pTdampFudge{};
919 double alphaSvalue{}, alphaSmax{}, alphaSmuFreeze{}, alphaSmuMin{};
920 double aSkMu2Emit{}, aSkMu2Split{};
923 double mu2freeze{}, mu2min{};
926 map<double, EvolutionWindow> evWindowsEmit;
927 map<double, EvolutionWindow> evWindowsSplit;
930 vector< shared_ptr<BrancherEmitRF> > emittersRF;
931 vector< shared_ptr<BrancherEmitFF> > emittersFF;
932 vector< shared_ptr<BrancherSplitRF> > splittersRF;
933 vector< shared_ptr<BrancherSplitFF> > splittersFF;
938 unordered_map< pair<int, bool>,
unsigned int> lookupEmitterRF{};
939 unordered_map< pair<int, bool>,
unsigned int> lookupSplitterRF{};
941 unordered_map< pair<int, bool>,
unsigned int> lookupEmitterFF{};
943 unordered_map< pair<int, bool>,
unsigned int> lookupSplitterFF{};
946 BrancherPtr winnerQCD{};
947 VinciaModulePtr winnerEW{};
948 double q2WinSav{}, pTLastAcceptedSav{};
952 enum AntFunType antFunTypeWin{AntFunType::NoFun};
953 bool hasWeaklyRadiated{
false};
960 vector<Particle> pNew;
962 vector<double> pAccept;
965 bool doCR{}, CRjunctions{};
968 bool enhanceInHard{}, enhanceInResDec{}, enhanceInMPI{};
969 double enhanceAll{}, enhanceBottom{}, enhanceCharm{}, enhanceCutoff{};
972 bool hasUserHooks{}, canVetoEmission{}, canVetoISREmission{};
975 map<int, bool> isHardSys{}, isResonanceSys{}, polarisedSys{}, doMECsSys{};
976 map<int, bool> stateChangeSys{};
977 bool stateChangeLast;
980 map<int, double> q2Hat{};
981 vector<bool> doPTlimit{}, doPTdamp{};
982 map<int, double> pT2damp{};
985 map<int, int> nBranch, nBranchFSR;
988 map<int, double> mSystem;
991 map<int, int> nG, nQ, nLep, nGam;
994 map<int, bool> savedBorn;
995 map<int, bool> resolveBorn;
996 map<int, map<int, int>> nFlavsBorn;
1000 unordered_map<pair<int, pair<bool,bool> >, vector<double> > headroomSav;
1001 unordered_map<pair<int, pair<bool,bool> >, vector<double> > enhanceSav;
1004 map<int, bool> hasResJunction;
1005 map<int, ResJunctionInfo> junctionInfo;
1008 bool doMerging, isTrialShower, isTrialShowerRes;
1012 bool headerIsPrinted{};
1015 shared_ptr<VinciaDiagnostics> diagnosticsPtr{};
1018 bool allowforceQuit{}, forceQuit{};
1030 shared_ptr<VinciaISR> isrPtr{};
1035 VinciaModulePtr ewShowerPtr{};
1036 VinciaModulePtr qedShowerHardPtr{};
1037 VinciaModulePtr qedShowerSoftPtr{};
1039 VinciaModulePtr ewHandlerHard{};
1046 bool doFSRinResonances{
true}, doInterleaveResDec{
true};
1047 int resDecScaleChoice{-1}, iHardResDecSav{}, nRecurseResDec{};
1048 vector<int> idResDecSav, iPosBefSav;
1049 vector<double> pTresDecSav;
History class for the Vincia shower.
Definition: VinciaHistory.h:247
virtual int idNew() const
Definition: VinciaFSR.h:157
constexpr double pow2(const double &x)
Powers of small integers - for balance speed/code clarity.
Definition: PythiaStdlib.h:182
~VinciaFSR()
Destructor.
Definition: VinciaFSR.h:598
virtual int getSector()
Return sector label.
Definition: VinciaFSR.h:187
virtual ~Brancher()
Base class must have a virtual destructor.
Definition: VinciaFSR.h:75
Brancher(int iSysIn, Event &event, bool sectorShowerIn, int iIn0, int iIn1, int iIn2=0)
Wrapper for 2- and 3-parton parents.
Definition: VinciaFSR.h:69
Definition: StandardModel.h:23
bool hasTrial() const
Definition: VinciaFSR.h:203
The Event class holds all info on the generated event.
Definition: Event.h:453
The TimeShower class does timelike showers.
Definition: TimeShower.h:33
Definition: BeamParticle.h:133
Simple struct to store information about a 3 -> 2 clustering.
Definition: VinciaCommon.h:278
virtual int posF() const
Definition: VinciaFSR.h:184
BrancherSplitFF(int iSysIn, Event &event, bool sectorShowerIn, int iIn0, int iIn1, bool col2acol, ZetaGeneratorSet *zetaGenSet)
Definition: VinciaFSR.h:346
vector< enum AntFunType > getAntFunTypes()
Wrapper to return all AntFunTypes that are contained in antSetPtr.
Definition: VinciaFSR.h:741
Definition: VinciaCommon.h:211
Definition: VinciaFSR.h:481
void setIsTrialShower(bool isTrialShowerIn)
Communicate information about trial showers for merging.
Definition: VinciaFSR.h:748
int iEndCol
Which of the three ends of iJunction are we talking about.
Definition: VinciaFSR.h:38
virtual int idNew() const
Flavour and mass of emitted particle.
Definition: VinciaFSR.h:362
void eraseTrial()
Method to mark new trial needed and erase current one.
Definition: VinciaFSR.h:212
BrancherEmitRF(int iSysIn, Event &event, bool sectorShowerIn, vector< int > allIn, unsigned int posResIn, unsigned int posFIn, double q2cut, ZetaGeneratorSet *zetaGenSet)
Constructor.
Definition: VinciaFSR.h:486
int posF() const
Definition: VinciaFSR.h:438
Definition: VinciaFSR.h:33
virtual int posR() const
Definition: VinciaFSR.h:180
AntFunType
Enumerator for antenna function types, with "void" member NoFun.
Definition: VinciaCommon.h:66
BrancherEmitFF(int iSysIn, Event &event, bool sectorShowerIn, int iIn0, int iIn1, ZetaGeneratorSet *zetaGenSet)
Wrapper to provide simple 2-parton systems as parents.
Definition: VinciaFSR.h:278
virtual double pAccept(const double, Logger *, int=0)
Definition: VinciaFSR.h:146
Definition: VinciaFSR.h:582
Definition: VinciaCommon.h:494
virtual int idNew() const
Flavour and mass of emitted particle.
Definition: VinciaFSR.h:312
Definition: VinciaISR.h:1060
void initRF(Event &event, vector< int > allIn, unsigned int posResIn, unsigned int posFIn, double q2cut, ZetaGeneratorSet *zetaGenSet) override
RF branchers have a different initBrancher structure.
Definition: VinciaFSR.h:549
Definition: VinciaAntennaFunctions.h:65
double enhancePTmax() override
Definition: VinciaFSR.h:689
int system() const
Methods to return saved/derived quantities.
Definition: VinciaFSR.h:123
int iEndQuark
Definition: VinciaFSR.h:43
void setVerbose(int verboseIn)
Set verbosity level.
Definition: VinciaFSR.h:765
AntennaFunction * getAntFunPtr(enum AntFunType antFunType)
Wrapper function to return a specific antenna inside an antenna set.
Definition: VinciaFSR.h:738
Class BrancherSplitFF, branch elemental for 2->3 gluon splittings.
Definition: VinciaFSR.h:331
int system() const override
Tell which system was the last processed one (TimeShower).
Definition: VinciaFSR.h:685
VinciaFSR()
Constructor.
Definition: VinciaFSR.h:591
void setEWShowerPtr(VinciaModulePtr ewShowerPtrIn)
Set EW shower module.
Definition: VinciaFSR.h:720
void onBeginEvent() override
Force reset at beginning of each event.
Definition: VinciaFSR.h:609
vector< int > colours
Definition: VinciaFSR.h:48
Class for storing Vincia weights.
Definition: VinciaWeights.h:22
TrialGenType
Helpful enums.
Definition: VinciaTrialGenerators.h:19
Class BrancherEmitFF, branch elemental for 2->3 gluon emissions.
Definition: VinciaFSR.h:265
void resetRF(int iSysIn, Event &event, vector< int > allIn, unsigned int posResIn, unsigned int posFIn, double q2cut, ZetaGeneratorSet *zetaGenSet)
Reset the brancher.
Definition: VinciaFSR.h:425
vector< double > getInvariants()
Return the saved invariants.
Definition: VinciaFSR.h:196
void initRF(Event &event, vector< int > allIn, unsigned int posResIn, unsigned int posFIn, double q2cut, ZetaGeneratorSet *zetaGenSet) override
RF branchers have a different initBrancher structure.
Definition: VinciaFSR.h:497
void setQEDShowerSoftPtr(VinciaModulePtr qedShowerPtrIn)
Set QED shower module for MPI and hadronization.
Definition: VinciaFSR.h:730
void initAntPtr(AntennaSetFSR *antSetIn)
Initialize pointers to antenna sets.
Definition: VinciaFSR.h:735
bool getHasWeaklyRadiated() override
Tell whether FSR has done a weak emission.
Definition: VinciaFSR.h:682
bool isSwapped()
Check if swapped.
Definition: VinciaFSR.h:194
void needsNewTrial()
Method to mark new trial needed without erasing current one.
Definition: VinciaFSR.h:205
A simple class for containing evolution variable definitions.
Definition: VinciaCommon.h:382
virtual bool isXG() const
Definition: VinciaFSR.h:359
Definition: VinciaFSR.h:533
BranchType
(Default is used for soft, global, or splittings as appropriate.)
Definition: VinciaTrialGenerators.h:21
Definition: VinciaTrialGenerators.h:218
double m2(const Vec4 &v1)
The squared invariant mass of one or more four-vectors.
Definition: Basics.cc:605
Helper struct for passing trial-alphaS information.
Definition: VinciaTrialGenerators.h:33
int posR() const
Return position of resonance and colour-connected final-state parton.
Definition: VinciaFSR.h:437
Definition: VinciaFSR.h:58
The AntennaSetFSR class. Simple container of FF and RF antenna functions.
Definition: VinciaAntennaFunctions.h:1125
Header for classes to set beam momentum and interaction vertex spread.
Definition: Analysis.h:20
map< int, pair< int, int > > mothers2daughters
Publicly accessible members for storing mother/daughter connections.
Definition: VinciaFSR.h:223
double getQ2Max(int evType)
Return maximum Q2.
Definition: VinciaFSR.h:441
double pTnextResDec() override
Select next pT for interleaved resonance decays.
Definition: VinciaFSR.h:651
Brancher(int iSysIn, Event &event, bool sectorShowerIn, vector< int > iIn)
Main base class constructor.
Definition: VinciaFSR.h:63
Definition: VinciaAntennaFunctions.h:1258
int iEndColTag
What is the colour tag of iEndCol in iJunctions.
Definition: VinciaFSR.h:40
int iJunction
Number of junction in event record.
Definition: VinciaFSR.h:36
void setQEDShowerHardPtr(VinciaModulePtr qedShowerPtrIn)
Set QED shower module for hard scattering (and resonance decays).
Definition: VinciaFSR.h:725
void setDiagnosticsPtr(shared_ptr< VinciaDiagnostics > diagnosticsPtrIn)
Set pointer to object to use for diagnostics and profiling.
Definition: VinciaFSR.h:715
BrancherEmitFF(int iSysIn, Event &event, bool sectorShowerIn, vector< int > iIn, ZetaGeneratorSet *zetaGenSet)
Create branch elemental for antenna(e) with parents in iIn.
Definition: VinciaFSR.h:270
double pTLastInShower() override
Definition: VinciaFSR.h:693
BrancherRF(int iSysIn, Event &event, bool sectorShowerIn, vector< int > allIn)
Base class constructor = inherited from Brancher.
Definition: VinciaFSR.h:416
BrancherSplitRF(int iSysIn, Event &event, bool sectorShowerIn, vector< int > allIn, unsigned int posResIn, unsigned int posFIn, double q2cut, ZetaGeneratorSet *zetaGenSet)
Constructor.
Definition: VinciaFSR.h:538
BrancherSplitFF(int iSysIn, Event &event, bool sectorShowerIn, vector< int > iIn, ZetaGeneratorSet *zetaGenSet)
Create branch elemental for antenna(e) with parents in iIn.
Definition: VinciaFSR.h:336
int i0() const
Methods to get (explicit for up to 3 parents, otherwise just use iVec).
Definition: VinciaFSR.h:86
void reset(int iSysIn, Event &event, int i0In, int i1In, int i2In=0)
Wrapper for simple 2- (or 3-) parton antennae.
Definition: VinciaFSR.h:81
BrancherRF base class for resonance-final antennae.
Definition: VinciaFSR.h:411
void resetEnhanceFac(const double enhanceIn)
This method allows to reset enhanceFac if we do an accept/reject.
Definition: VinciaFSR.h:199
virtual bool genInvariants(vector< double > &invariants, Rndm *, int, Logger *)
Definition: VinciaFSR.h:140