EvtGen 2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Loading...
Searching...
No Matches
EvtTauolaEngine.hh
Go to the documentation of this file.
1
2/***********************************************************************
3* Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4* *
5* This file is part of EvtGen. *
6* *
7* EvtGen is free software: you can redistribute it and/or modify *
8* it under the terms of the GNU General Public License as published by *
9* the Free Software Foundation, either version 3 of the License, or *
10* (at your option) any later version. *
11* *
12* EvtGen is distributed in the hope that it will be useful, *
13* but WITHOUT ANY WARRANTY; without even the implied warranty of *
14* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15* GNU General Public License for more details. *
16* *
17* You should have received a copy of the GNU General Public License *
18* along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19***********************************************************************/
20
21#ifdef EVTGEN_TAUOLA
22
23#ifndef EVTTAUOLAENGINE_HH
24#define EVTTAUOLAENGINE_HH
25
27#include "EvtGenBase/EvtId.hh"
30
32
33#ifdef EVTGEN_HEPMC3
34#include "HepMC3/Relatives.h"
35#include "HepMC3/Units.h"
36
37#include "Tauola/TauolaHepMC3Event.h"
38#include "Tauola/TauolaHepMC3Particle.h"
39#else
40#include "Tauola/TauolaHepMCEvent.h"
41#include "Tauola/TauolaHepMCParticle.h"
42#include "Tauola/TauolaParticle.h"
43#endif
45
46#include <mutex>
47
48// Description: Interface to the TAUOLA external generator
49
51 public:
52 EvtTauolaEngine( bool useEvtGenRandom = true, bool seedTauolaFortran = true );
53
54 bool doDecay( EvtParticle* theMother ) override;
55
56 void initialise() override;
57
58 protected:
59 private:
60 GenParticlePtr createGenParticle( const EvtParticle* theParticle ) const;
61
63 void setOtherParameters();
64
65 int getModeInt( EvtDecayBase* decayModel ) const;
66
67 void decayTauEvent( EvtParticle* tauParticle );
68
69 bool m_useEvtGenRandom{ true };
70 bool m_seedTauolaFortran{ true };
71
72 // PDG standard code integer ID for tau particle
73 static constexpr int m_tauPDG{ 15 };
74 // Number of possible decay modes in Tauola
75 static constexpr int m_nTauolaModes{ 22 };
76 // Neutral and charged spin propagator choices
77 static int m_neutPropType;
78 static int m_posPropType;
79 static int m_negPropType;
80
81 static bool m_initialised;
82 static std::mutex m_tauola_mutex;
83};
84
85#endif
86
87#endif
HepMC3::GenParticlePtr GenParticlePtr
static int m_posPropType
void initialise() override
static std::mutex m_tauola_mutex
static int m_negPropType
static bool m_initialised
int getModeInt(EvtDecayBase *decayModel) const
EvtTauolaEngine(bool useEvtGenRandom=true, bool seedTauolaFortran=true)
static int m_neutPropType
void decayTauEvent(EvtParticle *tauParticle)
bool doDecay(EvtParticle *theMother) override
GenParticlePtr createGenParticle(const EvtParticle *theParticle) const
static constexpr int m_tauPDG
static constexpr int m_nTauolaModes