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() {}
39 virtual bool decay(vector<int>& , vector<double>& , vector<Vec4>& ,
40 int ,
const Event& ) {
return false;}
44 virtual bool chainDecay(vector<int>& , vector<int>& , vector<double>& ,
45 vector<Vec4>& ,
int ,
const Event& ) {
return false;}
53 class ParticleDecays {
61 void init(Info* infoPtrIn, Settings& settings,
62 ParticleData* particleDataPtrIn, Rndm* rndmPtrIn,
63 Couplings* couplingsPtrIn, TimeShower* timesDecPtrIn,
64 StringFlav* flavSelPtrIn, DecayHandler* decayHandlePtrIn,
65 vector<int> handledParticles);
68 bool decay(
int iDec,
Event& event);
71 bool moreToDo()
const {
return hasPartons && keepPartons;}
76 static const int NTRYDECAY, NTRYPICK, NTRYMEWT, NTRYDALITZ;
77 static const double MSAFEDALITZ, WTCORRECTION[11];
83 ParticleData* particleDataPtr;
89 Couplings* couplingsPtr;
92 TimeShower* timesDecPtr;
95 StringFlav* flavSelPtr;
98 DecayHandler* decayHandlePtr;
101 bool limitTau0, limitTau, limitRadius, limitCylinder, limitDecay,
102 mixB, doFSRinDecays, doGammaRad;
104 double mSafety, tau0Max, tauMax, rMax, xyMax, zMax, xBdMix, xBsMix,
105 sigmaSoft, multIncrease, multIncreaseWeak, multRefMass, multGoffset,
106 colRearrange, stopMass, sRhoDal, wRhoDal;
109 bool hasPartons, keepPartons;
110 int idDec, meMode, mult;
112 vector<int> iProd, idProd, motherProd, cols, acols, idPartons;
113 vector<double> mProd, mInv, rndmOrd;
114 vector<Vec4> pInv, pProd;
115 vector<FlavContainer> flavEnds;
118 ParticleDataEntry* decDataPtr;
121 TauDecays tauDecayer;
124 bool checkVertex(Particle& decayer);
127 bool oscillateB(Particle& decayer);
130 bool oneBody(
Event& event);
133 bool twoBody(
Event& event);
136 bool threeBody(
Event& event);
139 bool mGenerator(
Event& event);
145 bool dalitzKinematics(
Event& event);
151 bool setColours(
Event& event);
159 #endif // Pythia8_ParticleDecays_H