StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ResonanceDecays.h
1 // ResonanceDecays.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2012 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 
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