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) 2020 Philip Ilten, Torbjorn Sjostrand.
3 // PYTHIA is licenced under the GNU GPL v2 or later, 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 "Pythia8/Basics.h"
12 #include "Pythia8/Event.h"
13 #include "Pythia8/HelicityBasics.h"
14 #include "Pythia8/HelicityMatrixElements.h"
15 #include "Pythia8/PhysicsBase.h"
16 #include "Pythia8/PythiaComplex.h"
17 #include "Pythia8/PythiaStdlib.h"
18 #include "Pythia8/Settings.h"
19 
20 namespace Pythia8 {
21 
22 //==========================================================================
23 
24 // TauDecays class.
25 // This class decays tau leptons, with helicity information.
26 
27 class TauDecays : public PhysicsBase {
28 
29 public:
30 
31  // Constructor and destructor.
32  TauDecays() : correlated(), tauExt(), tauMode(), tauMother(), tauPol(),
33  hardME(), decayME(), tau0Max(), tauMax(), rMax(), xyMax(), zMax(),
34  limitTau0(), limitTau(), limitRadius(), limitCylinder(), limitDecay() {};
35  ~TauDecays() {}
36 
37  // Initializer.
38  void init();
39 
40  // Decay a tau or correlated tau pair.
41  bool decay(int iDec, Event& event);
42 
43  // Determine internal or external polarization and correlation mechanism.
44  bool internalMechanism(Event &event);
45  bool externalMechanism(Event &event);
46 
47  // Choose a decay channel for a particle.
48  vector<HelicityParticle> createChildren(HelicityParticle parent);
49 
50  // Perform an N-body isotropic decay.
51  void isotropicDecay(vector<HelicityParticle>& p);
52 
53  // Write the decay to event record.
54  void writeDecay(Event& event, vector<HelicityParticle>& p);
55 
56 private:
57 
58  // Constants: could only be changed in the code itself.
59  static const int NTRYCHANNEL, NTRYDECAY;
60  static const double WTCORRECTION[11];
61 
62  // Flag whether a correlated tau decay should be performed.
63  bool correlated;
64 
65  // User selected mode and mother for tau decays.
66  int tauExt, tauMode, tauMother, tauPol;
67 
68  // Helicity matrix element pointers.
69  HelicityMatrixElement* hardME;
70  HelicityMatrixElement* decayME;
71 
72  // Hard process helicity matrix elements.
73  HMETwoFermions2W2TwoFermions hmeTwoFermions2W2TwoFermions;
74  HMETwoFermions2GammaZ2TwoFermions hmeTwoFermions2GammaZ2TwoFermions;
75  HMEW2TwoFermions hmeW2TwoFermions;
76  HMEZ2TwoFermions hmeZ2TwoFermions;
77  HMEGamma2TwoFermions hmeGamma2TwoFermions;
78  HMEHiggs2TwoFermions hmeHiggs2TwoFermions;
79 
80  // Tau decay helicity matrix elements.
81  HMETau2Meson hmeTau2Meson;
82  HMETau2TwoLeptons hmeTau2TwoLeptons;
83  HMETau2TwoMesonsViaVector hmeTau2TwoMesonsViaVector;
84  HMETau2TwoMesonsViaVectorScalar hmeTau2TwoMesonsViaVectorScalar;
85  HMETau2ThreePions hmeTau2ThreePions;
86  HMETau2ThreeMesonsWithKaons hmeTau2ThreeMesonsWithKaons;
87  HMETau2ThreeMesonsGeneric hmeTau2ThreeMesonsGeneric;
88  HMETau2TwoPionsGamma hmeTau2TwoPionsGamma;
89  HMETau2FourPions hmeTau2FourPions;
90  HMETau2FivePions hmeTau2FivePions;
91  HMETau2PhaseSpace hmeTau2PhaseSpace;
92 
93  // Particles of the hard process.
94  HelicityParticle in1, in2, mediator, out1, out2;
95  vector<HelicityParticle> particles;
96 
97  // Parameters to determine if correlated partner should decay.
98  double tau0Max, tauMax, rMax, xyMax, zMax;
99  bool limitTau0, limitTau, limitRadius, limitCylinder, limitDecay;
100 
101 };
102 
103 //==========================================================================
104 
105 } // end namespace Pythia8
106 
107 #endif // end Pythia8_TauDecays_H
Definition: AgUStep.h:26