[1] | 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, tauModeSave, tauMotherSave; |
---|
| 62 | |
---|
| 63 | // User selected polarization for tau decays. |
---|
| 64 | double polarization, polSave; |
---|
| 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 | HMEZ2TwoFermions hmeZ2TwoFermions; |
---|
| 76 | HMEHiggsEven2TwoFermions hmeHiggsEven2TwoFermions; |
---|
| 77 | HMEHiggsOdd2TwoFermions hmeHiggsOdd2TwoFermions; |
---|
| 78 | HMEHiggsCharged2TwoFermions hmeHiggsCharged2TwoFermions; |
---|
| 79 | HMEUnpolarized hmeUnpolarized; |
---|
| 80 | |
---|
| 81 | // Tau decay helicity matrix elements. |
---|
| 82 | HMETau2Meson hmeTau2Meson; |
---|
| 83 | HMETau2TwoLeptons hmeTau2TwoLeptons; |
---|
| 84 | HMETau2TwoMesonsViaVector hmeTau2TwoMesonsViaVector; |
---|
| 85 | HMETau2TwoMesonsViaVectorScalar hmeTau2TwoMesonsViaVectorScalar; |
---|
| 86 | HMETau2ThreePions hmeTau2ThreePions; |
---|
| 87 | HMETau2ThreeMesonsWithKaons hmeTau2ThreeMesonsWithKaons; |
---|
| 88 | HMETau2ThreeMesonsGeneric hmeTau2ThreeMesonsGeneric; |
---|
| 89 | HMETau2TwoPionsGamma hmeTau2TwoPionsGamma; |
---|
| 90 | HMETau2FourPions hmeTau2FourPions; |
---|
| 91 | HMETau2FivePions hmeTau2FivePions; |
---|
| 92 | HMETau2PhaseSpace hmeTau2PhaseSpace; |
---|
| 93 | |
---|
| 94 | // Particles of the hard process. |
---|
| 95 | HelicityParticle in1, in2, mediator, out1, out2; |
---|
| 96 | vector<HelicityParticle> particles; |
---|
| 97 | |
---|
| 98 | // The info pointer for the Pythia class. |
---|
| 99 | Info* infoPtr; |
---|
| 100 | |
---|
| 101 | // Pointer to settings database. |
---|
| 102 | Settings* settingsPtr; |
---|
| 103 | |
---|
| 104 | // Pointer to the particle data table. |
---|
| 105 | ParticleData* particleDataPtr; |
---|
| 106 | |
---|
| 107 | // Pointer to the random number generator. |
---|
| 108 | Rndm* rndmPtr; |
---|
| 109 | |
---|
| 110 | // Pointer to SM coupling data. |
---|
| 111 | Couplings* couplingsPtr; |
---|
| 112 | |
---|
| 113 | }; |
---|
| 114 | |
---|
| 115 | //========================================================================== |
---|
| 116 | |
---|
| 117 | } // end namespace Pythia8 |
---|
| 118 | |
---|
| 119 | #endif // end Pythia8_TauDecays_H |
---|