9 #ifndef Pythia8_RHadrons_H
10 #define Pythia8_RHadrons_H
12 #include "Pythia8/Basics.h"
13 #include "Pythia8/Event.h"
14 #include "Pythia8/FragmentationFlavZpT.h"
15 #include "Pythia8/FragmentationSystems.h"
16 #include "Pythia8/Info.h"
17 #include "Pythia8/ParticleData.h"
18 #include "Pythia8/PythiaStdlib.h"
19 #include "Pythia8/Settings.h"
33 RHadrons() : nRHad(0) {}
36 bool init( Info* infoPtrIn, Settings& settings,
37 ParticleData* particleDataPtrIn, Rndm* rndmPtrIn);
40 void fragPtrs( StringFlav* flavSelPtrIn, StringZ* zSelPtrIn)
41 { flavSelPtr = flavSelPtrIn; zSelPtr = zSelPtrIn;}
44 bool produce( ColConfig& colConfig,
Event& event);
47 bool decay(
Event& event);
50 bool givesRHadron(
int id);
53 bool exist() {
return (nRHad > 0);}
56 int trace(
int i) {
for (
int iR = 0; iR < nRHad; ++iR)
57 if (iBefRHad[iR] == i || iCreRHad[iR] == i)
return iAftRHad[iR];
63 static const int IDRHADSB[14], IDRHADST[14], IDRHADGO[38], NTRYMAX;
64 static const double MSAFETY, EGBORROWMAX;
67 bool allowRH, allowRSb, allowRSt, allowRGo, allowSomeR, setMassesRH;
68 int idRSb, idRSt, idRGo;
69 double maxWidthRH, probGluinoballRH, mOffsetCloudRH, mCollapseRH,
70 diquarkSpin1RH, m0Sb, m0St, m0Go;
73 vector<int> iBefRHad, iCreRHad, iRHadron, iAftRHad;
74 vector<bool> isTriplet;
75 int nRHad, iRHad, iBef, iSys;
76 ColSinglet* systemPtr;
82 ParticleData* particleDataPtr;
88 StringFlav* flavSelPtr;
92 bool splitOffJunction( ColConfig& colConfig,
Event& event);
95 bool openClosedLoop( ColConfig& colConfig,
Event& event);
98 bool splitSystem( ColConfig& colConfig,
Event& event);
101 bool produceSquark( ColConfig& colConfig,
Event& event);
104 bool produceGluino( ColConfig& colConfig,
Event& event);
107 int toIdWithSquark(
int id1,
int id2);
110 pair<int,int> fromIdWithSquark(
int idRHad);
113 int toIdWithGluino(
int id1,
int id2);
116 pair<int,int> fromIdWithGluino(
int idRHad);
119 bool newKin( Vec4 pOld1, Vec4 pOld2,
double mNew1,
double mNew2,
120 Vec4& pNew1, Vec4& pNew2,
bool checkMargin =
true);
128 #endif // Pythia8_RHadrons_H