10 #ifndef Pythia8_ParticleDecays_H
11 #define Pythia8_ParticleDecays_H
13 #include "Pythia8/Basics.h"
14 #include "Pythia8/Event.h"
15 #include "Pythia8/FragmentationFlavZpT.h"
16 #include "Pythia8/Info.h"
17 #include "Pythia8/ParticleData.h"
18 #include "Pythia8/PythiaStdlib.h"
19 #include "Pythia8/Settings.h"
20 #include "Pythia8/TimeShower.h"
21 #include "Pythia8/TauDecays.h"
35 virtual ~DecayHandler() {}
38 virtual bool decay(vector<int>& idProd, vector<double>& mProd,
39 vector<Vec4>& pProd,
int iDec,
const Event& event) = 0;
47 class ParticleDecays {
55 void init(Info* infoPtrIn, Settings& settings,
56 ParticleData* particleDataPtrIn, Rndm* rndmPtrIn,
57 Couplings* couplingsPtrIn, TimeShower* timesDecPtrIn,
58 StringFlav* flavSelPtrIn, DecayHandler* decayHandlePtrIn,
59 vector<int> handledParticles);
62 bool decay(
int iDec,
Event& event);
65 bool moreToDo()
const {
return hasPartons && keepPartons;}
70 static const int NTRYDECAY, NTRYPICK, NTRYMEWT, NTRYDALITZ;
71 static const double MSAFEDALITZ, WTCORRECTION[11];
77 ParticleData* particleDataPtr;
83 Couplings* couplingsPtr;
86 TimeShower* timesDecPtr;
89 StringFlav* flavSelPtr;
92 DecayHandler* decayHandlePtr;
95 bool limitTau0, limitTau, limitRadius, limitCylinder, limitDecay,
96 mixB, doFSRinDecays, doGammaRad;
98 double mSafety, tau0Max, tauMax, rMax, xyMax, zMax, xBdMix, xBsMix,
99 sigmaSoft, multIncrease, multIncreaseWeak, multRefMass, multGoffset,
100 colRearrange, stopMass, sRhoDal, wRhoDal;
103 bool hasPartons, keepPartons;
104 int idDec, meMode, mult;
106 vector<int> iProd, idProd, cols, acols, idPartons;
107 vector<double> mProd, mInv, rndmOrd;
108 vector<Vec4> pInv, pProd;
109 vector<FlavContainer> flavEnds;
112 ParticleDataEntry* decDataPtr;
115 TauDecays tauDecayer;
118 bool checkVertex(Particle& decayer);
121 bool oscillateB(Particle& decayer);
124 bool oneBody(
Event& event);
127 bool twoBody(
Event& event);
130 bool threeBody(
Event& event);
133 bool mGenerator(
Event& event);
139 bool dalitzKinematics(
Event& event);
145 bool setColours(
Event& event);
153 #endif // Pythia8_ParticleDecays_H