]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA8/pythia8175/include/TauDecays.h
CID 21256: Uninitialized pointer field (UNINIT_CTOR)
[u/mrichter/AliRoot.git] / PYTHIA8 / pythia8175 / include / TauDecays.h
1 // TauDecays.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2013 Philip Ilten, 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 // Header file for the TauDecays class.
7
8 #ifndef Pythia8_TauDecays_H
9 #define Pythia8_TauDecays_H
10
11 #include "Basics.h"
12 #include "Event.h"
13 #include "HelicityBasics.h"
14 #include "HelicityMatrixElements.h"
15 #include "PythiaComplex.h"
16 #include "PythiaStdlib.h"
17 #include "Settings.h"
18
19 namespace Pythia8 {
20
21 //==========================================================================
22
23 // TauDecays class.
24 // This class decays tau leptons, with helicity information.
25
26 class TauDecays {
27 public:
28
29   // Constructor and destructor.
30   TauDecays() :
31   correlated(0), 
32     tauMode(0), tauMother(0), tauModeSave(0), tauMotherSave(0),
33     polarization(0), polSave(0),
34     hardME(0), decayME(0), 
35     infoPtr(0), settingsPtr(0), particleDataPtr(0), rndmPtr(0), couplingsPtr(0),
36     tau0Max(0), tauMax(0), rMax(0), xyMax(0), zMax(0),
37     limitTau0(0), limitTau(0), limitRadius(0), limitCylinder(0), limitDecay(0)
38   {};
39
40   ~TauDecays() {}
41
42   // Initializer.
43   void init(Info* infoPtrIn, Settings* settingsPtrIn, 
44     ParticleData* particleDataPtrIn, Rndm* rndmPtrIn,
45     Couplings* couplingsPtrIn);
46
47   // Decay a tau or correlated tau pair.
48   bool decay(int iDec, Event& event);
49
50   // Choose a decay channel for a particle.
51   vector<HelicityParticle> createChildren(HelicityParticle parent);
52
53   // Perform an N-body isotropic decay.
54   void isotropicDecay(vector<HelicityParticle>& p);
55
56   // Write the decay to event record.
57   void writeDecay(Event& event, vector<HelicityParticle>& p);
58
59 private: 
60
61   // Constants: could only be changed in the code itself.
62   static const int    NTRYCHANNEL, NTRYDECAY;
63   static const double WTCORRECTION[11];
64
65   // Flag whether a correlated tau decay should be performed.
66   bool   correlated;
67
68   // User selected mode and mother for tau decays.
69   int    tauMode, tauMother, tauModeSave, tauMotherSave;
70
71   // User selected polarization for tau decays.
72   double polarization, polSave;
73
74   // Helicity matrix element pointers.
75   HelicityMatrixElement* hardME;
76   HelicityMatrixElement* decayME;
77
78   // Hard process helicity matrix elements.
79   HMETwoFermions2W2TwoFermions      hmeTwoFermions2W2TwoFermions;
80   HMETwoFermions2Z2TwoFermions      hmeTwoFermions2Z2TwoFermions;
81   HMETwoFermions2Gamma2TwoFermions  hmeTwoFermions2Gamma2TwoFermions;
82   HMETwoFermions2GammaZ2TwoFermions hmeTwoFermions2GammaZ2TwoFermions;
83   HMEZ2TwoFermions                  hmeZ2TwoFermions;
84   HMEHiggsEven2TwoFermions          hmeHiggsEven2TwoFermions;
85   HMEHiggsOdd2TwoFermions           hmeHiggsOdd2TwoFermions;
86   HMEHiggsCharged2TwoFermions       hmeHiggsCharged2TwoFermions;
87   HMEUnpolarized                    hmeUnpolarized;
88
89   // Tau decay helicity matrix elements.
90   HMETau2Meson                    hmeTau2Meson;
91   HMETau2TwoLeptons               hmeTau2TwoLeptons;
92   HMETau2TwoMesonsViaVector       hmeTau2TwoMesonsViaVector;
93   HMETau2TwoMesonsViaVectorScalar hmeTau2TwoMesonsViaVectorScalar;
94   HMETau2ThreePions               hmeTau2ThreePions;
95   HMETau2ThreeMesonsWithKaons     hmeTau2ThreeMesonsWithKaons;
96   HMETau2ThreeMesonsGeneric       hmeTau2ThreeMesonsGeneric;
97   HMETau2TwoPionsGamma            hmeTau2TwoPionsGamma;
98   HMETau2FourPions                hmeTau2FourPions;
99   HMETau2FivePions                hmeTau2FivePions;
100   HMETau2PhaseSpace               hmeTau2PhaseSpace;
101
102   // Particles of the hard process.
103   HelicityParticle in1, in2, mediator, out1, out2;
104   vector<HelicityParticle> particles;
105
106   // The info pointer for the Pythia class.
107   Info*         infoPtr;
108
109   // Pointer to settings database.
110   Settings*     settingsPtr;
111
112   // Pointer to the particle data table.
113   ParticleData* particleDataPtr;
114
115   // Pointer to the random number generator.
116   Rndm*         rndmPtr;
117
118   // Pointer to SM coupling data.
119   Couplings*    couplingsPtr;
120
121   // Parameters to determine if correlated partner should decay.
122   double tau0Max, tauMax, rMax, xyMax, zMax;
123   bool limitTau0, limitTau, limitRadius, limitCylinder, limitDecay;
124 };
125
126 //==========================================================================
127
128 } // end namespace Pythia8
129
130 #endif // end Pythia8_TauDecays_H