- Update to pythia8140
[u/mrichter/AliRoot.git] / PYTHIA8 / pythia8140 / include / ResonanceDecays.h
1 // ResonanceDecays.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2010 Torbjorn Sjostrand.
3 // PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
4 // Please respect the MCnet Guidelines, see GUIDELINES for details.
5
6 // This file contains the main class for performing resonance decays.
7 // ResonanceDecays: handles the sequential decay of resonances in process.
8
9 #ifndef Pythia8_ResonanceDecays_H
10 #define Pythia8_ResonanceDecays_H
11
12 #include "Basics.h"
13 #include "Event.h"
14 #include "Info.h"
15 #include "ParticleData.h"
16 #include "PythiaStdlib.h"
17 #include "ResonanceWidths.h"
18 #include "Settings.h"
19
20 namespace Pythia8 {
21   
22 //==========================================================================
23
24 // The ResonanceDecays class handles the sequential decay of resonances
25 // that are part of the hard process (t, W, Z, H, SUSY,...).
26
27 class ResonanceDecays {
28
29 public:
30
31   // Constructor. 
32   ResonanceDecays() {} 
33
34   // Store pointers to Info and Rndm for error messages and random numbers.
35   void init(Info* infoPtrIn,  ParticleData* particleDataPtrIn, 
36     Rndm* rndmPtrIn) {infoPtr = infoPtrIn; 
37     particleDataPtr = particleDataPtrIn; rndmPtr = rndmPtrIn;}
38  
39   // Generate the next decay sequence.
40   bool next( Event& process); 
41
42 private: 
43
44   // Constants: could only be changed in the code itself.
45   static const int    NTRYCHANNEL, NTRYMASSES;
46   static const double MSAFETY, WIDTHCUT, TINY, TINYBWRANGE,
47                       WTCORRECTION[11];
48
49   // Pointer to various information on the generation.
50   Info*         infoPtr;
51
52   // Pointer to the particle data table.
53   ParticleData* particleDataPtr;
54
55   // Pointer to the random number generator.
56   Rndm*         rndmPtr;
57
58   // Select masses of decay products.
59   bool pickMasses(); 
60
61   // Select colours of decay products.
62   bool pickColours(int iDec, Event& process);
63
64   // Select kinematics isotropic in phase space.
65   bool pickKinematics();
66
67   // Flavour, colour and momentum information.
68   int            id0, mult;
69   double         m0;
70   vector<int>    idProd, cols, acols;
71   vector<double> mProd;
72   vector<Vec4>   pProd;
73
74 };
75
76 //==========================================================================
77
78 } // end namespace Pythia8
79
80 #endif // Pythia8_ResonanceDecays_H