ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Generators
ParticleDecayer
ParticleDecayer
ParticleDecayer.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef GENERATORMODULES_PARTICLEDECAYER_H
6
#define GENERATORMODULES_PARTICLEDECAYER_H
7
8
#include "
GeneratorModules/GenModule.h
"
//inheritance
9
#include "
GeneratorModules/GenData.h
"
//inheritance
10
#include "CLHEP/Vector/LorentzVector.h"
//member
11
#include "
AtlasHepMC/GenEvent.h
"
//typedef
12
#include "
AtlasHepMC/GenVertex.h
"
//typedef for GenVertexPtr
13
#include "
AtlasHepMC/SimpleVector.h
"
//typedef for FourVector
14
#include "
AtlasHepMC/GenParticle.h
"
//typedef for GenParticlePtr
15
#include <vector>
16
17
18
namespace
CLHEP
{
19
class
HepRandomEngine;
20
}
21
22
23
24
class
ParticleDecayer
:
public
GenModule
{
25
26
public
:
27
28
ParticleDecayer
(
const
std::string& name, ISvcLocator* pSvcLocator);
29
30
~ParticleDecayer
() =
default
;
31
32
StatusCode
genInitialize
();
33
StatusCode
fillEvt
(
HepMC::GenEvent
*);
34
35
private
:
36
37
//name of the MC truth container
38
std::string
m_truthParticleContainerName
;
39
// LeptonJet type: 1 = one dark photon per LeptonJet, 2 = two dark pjotons per LeptonJet
40
int
m_LJType
{};
41
//new PDG ID of the scalar
42
int
m_scalarPDGID
{};
43
//new mass of the scalar in MeV
44
double
m_scalarMass
{};
45
//mass of the dark photon (MeV)
46
double
m_particleMass
{};
47
//PDG ID of the dark photon
48
int
m_particleID
{};
49
//lifetime of the dark photon
50
double
m_particleLifeTime
{};
51
//new PDG_ID of thedark photon
52
int
m_particlePDGID
{};
53
//polarization of the dark photon
54
int
m_particlePolarization
{};
55
//opposite polarization switch in case of two dark photons
56
bool
m_oppositePolarization
{};
58
//BR of dark photon decay to electrons
59
double
m_BRElectron
{};
60
//BR of dark photon decay to muons
61
double
m_BRMuon
{};
62
//BR of dark photon decay to pions
63
double
m_BRPion
{};
64
65
bool
m_doUniformDecay
{};
66
bool
m_doExponentialDecay
{};
67
bool
m_expDecayDoVariableLifetime
{};
68
double
m_expDecayFractionToKeep
{};
69
bool
m_expDecayDoTruncateLongDecays
{};
70
bool
m_decayOnlyStable
{};
71
72
double
m_barrelRadius
;
73
double
m_endCapDistance
;
74
double
m_thetaEndCapBarrel
;
75
76
std::unique_ptr<GenData>
m_gendata
{
nullptr
};
77
78
void
addParticle
(
HepMC::GenVertexPtr
,
int
pdg,
HepMC::FourVector
,
int
statusCode);
//add particles to the evgen file
79
80
double
rnd_ExpLifetime
(CLHEP::HepRandomEngine* engine,
double
ct);
81
double
rnd_DoubleRange
(CLHEP::HepRandomEngine* engine,
double
a
,
double
b);
82
double
cosgen
(CLHEP::HepRandomEngine* engine,
int
itype);
83
84
StatusCode
DFTwoBodyDecay
( CLHEP::HepRandomEngine* engine,
HepMC::GenParticlePtr
,
int
);
85
StatusCode
setDecayPosition
( CLHEP::HepRandomEngine* engine,
HepMC::GenParticlePtr
,
HepMC::GenEvent
*,
bool
doScalarDecay=
false
);
86
StatusCode
changeMass
(
HepMC::GenParticlePtr
,
double
);
87
StatusCode
getDecayProducts
( CLHEP::HepRandomEngine* engine, CLHEP::HepLorentzVector,
double
, std::vector<CLHEP::HepLorentzVector>&,
int
decayType = 0);
88
89
//four momentum of the dark photon
90
CLHEP::HepLorentzVector
m_boostLV
;
91
//production vertex of the dark photon/scalar
92
CLHEP::HepLorentzVector
m_posLV
;
93
//decay vertex of the first dark photon
94
CLHEP::HepLorentzVector
m_posLV1
;
95
//decay vertex of the second dark photon
96
CLHEP::HepLorentzVector
m_posLV2
;
97
//counter
98
int
m_eventCounter
{};
99
};
100
101
#endif
GenData.h
GenEvent.h
GenModule.h
GenParticle.h
GenVertex.h
a
static Double_t a
Definition
LArPhysWaveHECTool.cxx:38
SimpleVector.h
GenModule::GenModule
GenModule(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Definition
GenModule.cxx:14
ParticleDecayer::m_BRMuon
double m_BRMuon
Definition
ParticleDecayer.h:61
ParticleDecayer::m_gendata
std::unique_ptr< GenData > m_gendata
Definition
ParticleDecayer.h:76
ParticleDecayer::m_posLV2
CLHEP::HepLorentzVector m_posLV2
Definition
ParticleDecayer.h:96
ParticleDecayer::m_decayOnlyStable
bool m_decayOnlyStable
Definition
ParticleDecayer.h:70
ParticleDecayer::m_doExponentialDecay
bool m_doExponentialDecay
Definition
ParticleDecayer.h:66
ParticleDecayer::changeMass
StatusCode changeMass(HepMC::GenParticlePtr, double)
Definition
ParticleDecayer.cxx:93
ParticleDecayer::m_scalarMass
double m_scalarMass
Definition
ParticleDecayer.h:44
ParticleDecayer::m_boostLV
CLHEP::HepLorentzVector m_boostLV
Definition
ParticleDecayer.h:90
ParticleDecayer::m_doUniformDecay
bool m_doUniformDecay
Definition
ParticleDecayer.h:65
ParticleDecayer::m_scalarPDGID
int m_scalarPDGID
Definition
ParticleDecayer.h:42
ParticleDecayer::m_expDecayDoVariableLifetime
bool m_expDecayDoVariableLifetime
Definition
ParticleDecayer.h:67
ParticleDecayer::DFTwoBodyDecay
StatusCode DFTwoBodyDecay(CLHEP::HepRandomEngine *engine, HepMC::GenParticlePtr, int)
Definition
ParticleDecayer.cxx:470
ParticleDecayer::getDecayProducts
StatusCode getDecayProducts(CLHEP::HepRandomEngine *engine, CLHEP::HepLorentzVector, double, std::vector< CLHEP::HepLorentzVector > &, int decayType=0)
Definition
ParticleDecayer.cxx:527
ParticleDecayer::setDecayPosition
StatusCode setDecayPosition(CLHEP::HepRandomEngine *engine, HepMC::GenParticlePtr, HepMC::GenEvent *, bool doScalarDecay=false)
Definition
ParticleDecayer.cxx:117
ParticleDecayer::rnd_DoubleRange
double rnd_DoubleRange(CLHEP::HepRandomEngine *engine, double a, double b)
Definition
ParticleDecayer.cxx:38
ParticleDecayer::m_truthParticleContainerName
std::string m_truthParticleContainerName
Definition
ParticleDecayer.h:38
ParticleDecayer::m_particlePDGID
int m_particlePDGID
Definition
ParticleDecayer.h:52
ParticleDecayer::m_BRElectron
double m_BRElectron
Definition
ParticleDecayer.h:59
ParticleDecayer::addParticle
void addParticle(HepMC::GenVertexPtr, int pdg, HepMC::FourVector, int statusCode)
Definition
ParticleDecayer.cxx:452
ParticleDecayer::m_eventCounter
int m_eventCounter
Definition
ParticleDecayer.h:98
ParticleDecayer::ParticleDecayer
ParticleDecayer(const std::string &name, ISvcLocator *pSvcLocator)
Definition
ParticleDecayer.cxx:222
ParticleDecayer::m_barrelRadius
double m_barrelRadius
Definition
ParticleDecayer.h:72
ParticleDecayer::m_particleLifeTime
double m_particleLifeTime
Definition
ParticleDecayer.h:50
ParticleDecayer::m_posLV
CLHEP::HepLorentzVector m_posLV
Definition
ParticleDecayer.h:92
ParticleDecayer::m_particleMass
double m_particleMass
Definition
ParticleDecayer.h:46
ParticleDecayer::m_oppositePolarization
bool m_oppositePolarization
Definition
ParticleDecayer.h:56
ParticleDecayer::m_posLV1
CLHEP::HepLorentzVector m_posLV1
Definition
ParticleDecayer.h:94
ParticleDecayer::m_endCapDistance
double m_endCapDistance
Definition
ParticleDecayer.h:73
ParticleDecayer::m_thetaEndCapBarrel
double m_thetaEndCapBarrel
Definition
ParticleDecayer.h:74
ParticleDecayer::m_BRPion
double m_BRPion
Definition
ParticleDecayer.h:63
ParticleDecayer::cosgen
double cosgen(CLHEP::HepRandomEngine *engine, int itype)
Definition
ParticleDecayer.cxx:46
ParticleDecayer::m_particleID
int m_particleID
Definition
ParticleDecayer.h:48
ParticleDecayer::m_LJType
int m_LJType
Definition
ParticleDecayer.h:40
ParticleDecayer::~ParticleDecayer
~ParticleDecayer()=default
ParticleDecayer::m_particlePolarization
int m_particlePolarization
Definition
ParticleDecayer.h:54
ParticleDecayer::m_expDecayFractionToKeep
double m_expDecayFractionToKeep
Definition
ParticleDecayer.h:68
ParticleDecayer::fillEvt
StatusCode fillEvt(HepMC::GenEvent *)
For filling the HepMC event object.
Definition
ParticleDecayer.cxx:291
ParticleDecayer::m_expDecayDoTruncateLongDecays
bool m_expDecayDoTruncateLongDecays
Definition
ParticleDecayer.h:69
ParticleDecayer::genInitialize
StatusCode genInitialize()
For initializing the generator, if required.
Definition
ParticleDecayer.cxx:258
ParticleDecayer::rnd_ExpLifetime
double rnd_ExpLifetime(CLHEP::HepRandomEngine *engine, double ct)
Definition
ParticleDecayer.cxx:31
CLHEP
STD'S.
Definition
CaloNoiseCompCondAlg.h:57
HepMC::FourVector
HepMC3::FourVector FourVector
Definition
SimpleVector.h:11
HepMC::GenParticlePtr
HepMC3::GenParticlePtr GenParticlePtr
Definition
GenParticle.h:19
HepMC::GenVertexPtr
HepMC3::GenVertexPtr GenVertexPtr
Definition
GenVertex.h:23
HepMC::GenEvent
HepMC3::GenEvent GenEvent
Definition
GenEvent.h:39
Generated on
for ATLAS Offline Software by
1.17.0