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.
6 // Header file for the TauDecays class.
8 #ifndef Pythia8_TauDecays_H
9 #define Pythia8_TauDecays_H
13 #include "HelicityBasics.h"
14 #include "HelicityMatrixElements.h"
15 #include "PythiaComplex.h"
16 #include "PythiaStdlib.h"
21 //==========================================================================
24 // This class decays tau leptons, with helicity information.
29 // Constructor and destructor.
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)
43 void init(Info* infoPtrIn, Settings* settingsPtrIn,
44 ParticleData* particleDataPtrIn, Rndm* rndmPtrIn,
45 Couplings* couplingsPtrIn);
47 // Decay a tau or correlated tau pair.
48 bool decay(int iDec, Event& event);
50 // Choose a decay channel for a particle.
51 vector<HelicityParticle> createChildren(HelicityParticle parent);
53 // Perform an N-body isotropic decay.
54 void isotropicDecay(vector<HelicityParticle>& p);
56 // Write the decay to event record.
57 void writeDecay(Event& event, vector<HelicityParticle>& p);
61 // Constants: could only be changed in the code itself.
62 static const int NTRYCHANNEL, NTRYDECAY;
63 static const double WTCORRECTION[11];
65 // Flag whether a correlated tau decay should be performed.
68 // User selected mode and mother for tau decays.
69 int tauMode, tauMother, tauModeSave, tauMotherSave;
71 // User selected polarization for tau decays.
72 double polarization, polSave;
74 // Helicity matrix element pointers.
75 HelicityMatrixElement* hardME;
76 HelicityMatrixElement* decayME;
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;
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;
102 // Particles of the hard process.
103 HelicityParticle in1, in2, mediator, out1, out2;
104 vector<HelicityParticle> particles;
106 // The info pointer for the Pythia class.
109 // Pointer to settings database.
110 Settings* settingsPtr;
112 // Pointer to the particle data table.
113 ParticleData* particleDataPtr;
115 // Pointer to the random number generator.
118 // Pointer to SM coupling data.
119 Couplings* couplingsPtr;
121 // Parameters to determine if correlated partner should decay.
122 double tau0Max, tauMax, rMax, xyMax, zMax;
123 bool limitTau0, limitTau, limitRadius, limitCylinder, limitDecay;
126 //==========================================================================
128 } // end namespace Pythia8
130 #endif // end Pythia8_TauDecays_H