File indexing completed on 2025-01-18 10:06:29
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef Pythia8_RHadrons_H
0010 #define Pythia8_RHadrons_H
0011
0012 #include "Pythia8/Basics.h"
0013 #include "Pythia8/Event.h"
0014 #include "Pythia8/FragmentationFlavZpT.h"
0015 #include "Pythia8/FragmentationSystems.h"
0016 #include "Pythia8/Info.h"
0017 #include "Pythia8/ParticleData.h"
0018 #include "Pythia8/PythiaStdlib.h"
0019 #include "Pythia8/PhysicsBase.h"
0020 #include "Pythia8/Settings.h"
0021
0022 namespace Pythia8 {
0023
0024
0025
0026
0027
0028
0029 class RHadrons : public PhysicsBase {
0030
0031 public:
0032
0033
0034 RHadrons() : allowRH(), allowRSb(), allowRSt(), allowRGo(), allowSomeR(),
0035 setMassesRH(), idRSb(), idRSt(), idRGo(), maxWidthRH(), probGluinoballRH(),
0036 mOffsetCloudRH(), mCollapseRH(), diquarkSpin1RH(), m0Sb(), m0St(), m0Go(),
0037 nRHad(0), iRHad(), iBef(), iSys(), systemPtr(), flavSelPtr(), zSelPtr() {}
0038
0039
0040 bool init();
0041
0042
0043 void fragPtrs( StringFlav* flavSelPtrIn, StringZ* zSelPtrIn)
0044 { flavSelPtr = flavSelPtrIn; zSelPtr = zSelPtrIn;}
0045
0046
0047 bool produce( ColConfig& colConfig, Event& event);
0048
0049
0050 bool decay( Event& event);
0051
0052
0053 bool givesRHadron(int id);
0054
0055
0056 bool exist() {return (nRHad > 0);}
0057
0058
0059 int trace(int i) {
0060 for (int iR = 0; iR < nRHad; ++iR)
0061 if (iBefRHad[iR] == i || iCreRHad[iR] == i) return iAftRHad[iR];
0062 return 0;}
0063
0064 private:
0065
0066
0067 static const int IDRHADSB[14], IDRHADST[14], IDRHADGO[38], NTRYMAX;
0068 static const double MSAFETY, EGBORROWMAX;
0069
0070
0071 bool allowRH, allowRSb, allowRSt, allowRGo, allowSomeR, setMassesRH;
0072 int idRSb, idRSt, idRGo;
0073 double maxWidthRH, probGluinoballRH, mOffsetCloudRH, mCollapseRH,
0074 diquarkSpin1RH, m0Sb, m0St, m0Go;
0075
0076
0077 vector<int> iBefRHad, iCreRHad, iRHadron, iAftRHad;
0078 vector<bool> isTriplet;
0079 int nRHad, iRHad, iBef, iSys;
0080 ColSinglet* systemPtr;
0081
0082
0083 StringFlav* flavSelPtr;
0084 StringZ* zSelPtr;
0085
0086
0087 bool splitOffJunction( ColConfig& colConfig, Event& event);
0088
0089
0090 bool openClosedLoop( ColConfig& colConfig, Event& event);
0091
0092
0093 bool splitSystem( ColConfig& colConfig, Event& event);
0094
0095
0096 bool produceSquark( ColConfig& colConfig, Event& event);
0097
0098
0099 bool produceGluino( ColConfig& colConfig, Event& event);
0100
0101
0102 int toIdWithSquark( int id1, int id2);
0103
0104
0105 pair<int,int> fromIdWithSquark( int idRHad);
0106
0107
0108 int toIdWithGluino( int id1, int id2);
0109
0110
0111 pair<int,int> fromIdWithGluino( int idRHad);
0112
0113
0114 bool newKin( Vec4 pOld1, Vec4 pOld2, double mNew1, double mNew2,
0115 Vec4& pNew1, Vec4& pNew2, bool checkMargin = true);
0116
0117 };
0118
0119
0120
0121 }
0122
0123 #endif