StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
TauDecays.h
1 // TauDecays.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2012 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 
28 public:
29 
30  // Constructor and destructor.
31  TauDecays() {};
32  ~TauDecays() {}
33 
34  // Initializer.
35  void init(Info* infoPtrIn, Settings* settingsPtrIn,
36  ParticleData* particleDataPtrIn, Rndm* rndmPtrIn,
37  Couplings* couplingsPtrIn);
38 
39  // Decay a tau or correlated tau pair.
40  bool decay(int iDec, Event& event);
41 
42  // Choose a decay channel for a particle.
43  vector<HelicityParticle> createChildren(HelicityParticle parent);
44 
45  // Perform an N-body isotropic decay.
46  void isotropicDecay(vector<HelicityParticle>& p);
47 
48  // Write the decay to event record.
49  void writeDecay(Event& event, vector<HelicityParticle>& p);
50 
51 private:
52 
53  // Constants: could only be changed in the code itself.
54  static const int NTRYCHANNEL, NTRYDECAY;
55  static const double WTCORRECTION[11];
56 
57  // Flag whether a correlated tau decay should be performed.
58  bool correlated;
59 
60  // User selected mode and mother for tau decays.
61  int tauMode, tauMother;
62 
63  // User selected polarization for tau decays.
64  double polarization;
65 
66  // Helicity matrix element pointers.
67  HelicityMatrixElement* hardME;
68  HelicityMatrixElement* decayME;
69 
70  // Hard process helicity matrix elements.
71  HMETwoFermions2W2TwoFermions hmeTwoFermions2W2TwoFermions;
72  HMETwoFermions2Z2TwoFermions hmeTwoFermions2Z2TwoFermions;
73  HMETwoFermions2Gamma2TwoFermions hmeTwoFermions2Gamma2TwoFermions;
74  HMETwoFermions2GammaZ2TwoFermions hmeTwoFermions2GammaZ2TwoFermions;
75  HMEHiggsEven2TwoFermions hmeHiggsEven2TwoFermions;
76  HMEHiggsOdd2TwoFermions hmeHiggsOdd2TwoFermions;
77  HMEHiggsCharged2TwoFermions hmeHiggsCharged2TwoFermions;
78  HMEUnpolarized hmeUnpolarized;
79 
80  // Tau decay helicity matrix elements.
81  HMETau2Meson hmeTau2Meson;
82  HMETau2TwoLeptons hmeTau2TwoLeptons;
83  HMETau2TwoMesonsViaVector hmeTau2TwoMesonsViaVector;
84  HMETau2TwoMesonsViaVectorScalar hmeTau2TwoMesonsViaVectorScalar;
85  HMETau2ThreePions hmeTau2ThreePions;
86  HMETau2FourPions hmeTau2FourPions;
87  HMETau2PhaseSpace hmeTau2PhaseSpace;
88 
89  // Particles of the hard process.
90  HelicityParticle in1, in2, mediator, out1, out2;
91  vector<HelicityParticle> particles;
92 
93  // The info pointer for the Pythia class.
94  Info* infoPtr;
95 
96  // Pointer to settings database.
97  Settings* settingsPtr;
98 
99  // Pointer to the particle data table.
100  ParticleData* particleDataPtr;
101 
102  // Pointer to the random number generator.
103  Rndm* rndmPtr;
104 
105  // Pointer to SM coupling data.
106  Couplings* couplingsPtr;
107 
108 };
109 
110 //==========================================================================
111 
112 } // end namespace Pythia8
113 
114 #endif // end Pythia8_TauDecays_H