Line data Source code
1 : // TauDecays.h is a part of the PYTHIA event generator.
2 : // Copyright (C) 2015 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 "Pythia8/Basics.h"
12 : #include "Pythia8/Event.h"
13 : #include "Pythia8/HelicityBasics.h"
14 : #include "Pythia8/HelicityMatrixElements.h"
15 : #include "Pythia8/PythiaComplex.h"
16 : #include "Pythia8/PythiaStdlib.h"
17 : #include "Pythia8/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 0 : TauDecays() {};
32 0 : ~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 : // Determine internal or external polarization and correlation mechanism.
43 : bool internalMechanism(Event &event);
44 : bool externalMechanism(Event &event);
45 :
46 : // Choose a decay channel for a particle.
47 : vector<HelicityParticle> createChildren(HelicityParticle parent);
48 :
49 : // Perform an N-body isotropic decay.
50 : void isotropicDecay(vector<HelicityParticle>& p);
51 :
52 : // Write the decay to event record.
53 : void writeDecay(Event& event, vector<HelicityParticle>& p);
54 :
55 : private:
56 :
57 : // Constants: could only be changed in the code itself.
58 : static const int NTRYCHANNEL, NTRYDECAY;
59 : static const double WTCORRECTION[11];
60 :
61 : // Flag whether a correlated tau decay should be performed.
62 : bool correlated;
63 :
64 : // User selected mode and mother for tau decays.
65 : int tauExt, tauMode, tauMother, tauPol;
66 :
67 : // Helicity matrix element pointers.
68 : HelicityMatrixElement* hardME;
69 : HelicityMatrixElement* decayME;
70 :
71 : // Hard process helicity matrix elements.
72 : HMETwoFermions2W2TwoFermions hmeTwoFermions2W2TwoFermions;
73 : HMETwoFermions2GammaZ2TwoFermions hmeTwoFermions2GammaZ2TwoFermions;
74 : HMEW2TwoFermions hmeW2TwoFermions;
75 : HMEZ2TwoFermions hmeZ2TwoFermions;
76 : HMEGamma2TwoFermions hmeGamma2TwoFermions;
77 : HMEHiggs2TwoFermions hmeHiggs2TwoFermions;
78 :
79 : // Tau decay helicity matrix elements.
80 : HMETau2Meson hmeTau2Meson;
81 : HMETau2TwoLeptons hmeTau2TwoLeptons;
82 : HMETau2TwoMesonsViaVector hmeTau2TwoMesonsViaVector;
83 : HMETau2TwoMesonsViaVectorScalar hmeTau2TwoMesonsViaVectorScalar;
84 : HMETau2ThreePions hmeTau2ThreePions;
85 : HMETau2ThreeMesonsWithKaons hmeTau2ThreeMesonsWithKaons;
86 : HMETau2ThreeMesonsGeneric hmeTau2ThreeMesonsGeneric;
87 : HMETau2TwoPionsGamma hmeTau2TwoPionsGamma;
88 : HMETau2FourPions hmeTau2FourPions;
89 : HMETau2FivePions hmeTau2FivePions;
90 : HMETau2PhaseSpace hmeTau2PhaseSpace;
91 :
92 : // Particles of the hard process.
93 : HelicityParticle in1, in2, mediator, out1, out2;
94 : vector<HelicityParticle> particles;
95 :
96 : // The info pointer for the Pythia class.
97 : Info* infoPtr;
98 :
99 : // Pointer to settings database.
100 : Settings* settingsPtr;
101 :
102 : // Pointer to the particle data table.
103 : ParticleData* particleDataPtr;
104 :
105 : // Pointer to the random number generator.
106 : Rndm* rndmPtr;
107 :
108 : // Pointer to SM coupling data.
109 : Couplings* couplingsPtr;
110 :
111 : // Parameters to determine if correlated partner should decay.
112 : double tau0Max, tauMax, rMax, xyMax, zMax;
113 : bool limitTau0, limitTau, limitRadius, limitCylinder, limitDecay;
114 :
115 : };
116 :
117 : //==========================================================================
118 :
119 : } // end namespace Pythia8
120 :
121 : #endif // end Pythia8_TauDecays_H
|