9 #ifndef Pythia8_HadronLevel_H
10 #define Pythia8_HadronLevel_H
12 #include "Pythia8/Basics.h"
13 #include "Pythia8/BoseEinstein.h"
14 #include "Pythia8/ColourTracing.h"
15 #include "Pythia8/Event.h"
16 #include "Pythia8/FragmentationFlavZpT.h"
17 #include "Pythia8/FragmentationSystems.h"
18 #include "Pythia8/HadronScatter.h"
19 #include "Pythia8/HiddenValleyFragmentation.h"
20 #include "Pythia8/Info.h"
21 #include "Pythia8/JunctionSplitting.h"
22 #include "Pythia8/MiniStringFragmentation.h"
23 #include "Pythia8/ParticleData.h"
24 #include "Pythia8/ParticleDecays.h"
25 #include "Pythia8/PythiaStdlib.h"
26 #include "Pythia8/RHadrons.h"
27 #include "Pythia8/Settings.h"
28 #include "Pythia8/StringFragmentation.h"
29 #include "Pythia8/TimeShower.h"
30 #include "Pythia8/UserHooks.h"
47 bool init(Info* infoPtrIn, Settings& settings,
48 ParticleData* particleDataPtrIn, Rndm* rndmPtrIn,
49 Couplings* couplingsPtrIn, TimeShower* timesDecPtr,
50 RHadrons* rHadronsPtrIn, DecayHandler* decayHandlePtr,
51 vector<int> handledParticles, UserHooks* userHooksPtrIn);
54 StringFlav* getStringFlavPtr() {
return &flavSel;}
57 bool next(
Event& event);
60 bool moreDecays(
Event& event);
65 static const double MTINY;
68 bool doHadronize, doDecay, doBoseEinstein, allowRH, closePacking;
69 double mStringMin, eNormJunction, widthSepBE;
72 bool doHadronScatter, hsAfterDecay;
79 ParticleData* particleDataPtr;
85 UserHooks* userHooksPtr;
88 Couplings* couplingsPtr;
94 vector<int> iParton, iJunLegA, iJunLegB, iJunLegC,
95 iAntiLegA, iAntiLegB, iAntiLegC, iGluLeg;
96 vector<double> m2Pair;
99 StringFragmentation stringFrag;
102 MiniStringFragmentation ministringFrag;
105 ParticleDecays decays;
108 HadronScatter hadronScatter;
112 bool doRopes, doShoving, doFlavour, doVertex, doBuffon;
115 FlavourRope flavourRope;
118 BoseEinstein boseEinstein;
126 ColourTracing colTrace;
129 JunctionSplitting junctionSplitting;
132 RHadrons* rHadronsPtr;
135 HiddenValleyFragmentation hiddenvalleyFrag;
136 bool useHiddenValley;
139 bool decayOctetOnia(
Event& event);
143 bool findSinglets(
Event& event,
bool keepJunctions =
false);
146 vector< vector< pair<double,double> > > rapidityPairs(
Event& event);
149 double yMax(Particle pIn,
double mTiny) {
150 double temp = log( ( pIn.e() + abs(pIn.pz()) ) / max( mTiny, pIn.mT()) );
151 return (pIn.pz() > 0) ? temp : -temp; }
159 #endif // Pythia8_HadronLevel_H