ATLAS Offline Software
Loading...
Searching...
No Matches
Simulation
G4Sim
MCTruth
src
TrackHelper.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
#include <utility>
5
6
#include "
MCTruth/TrackHelper.h
"
7
#include "
AtlasHepMC/GenParticle.h
"
8
#include "G4Track.hh"
9
#include "
MCTruth/TrackInformation.h
"
10
#include "
MCTruth/VTrackInformation.h
"
11
#include "
TruthUtils/MagicNumbers.h
"
12
13
namespace
14
{
15
HepMC::ConstGenParticlePtr
outputAttributionParticle(
const
TrackInformation
*
trackInfo
)
16
{
17
if
(!
trackInfo
) {
18
return
nullptr
;
19
}
20
// Output links should remain anchored to the pre-regeneration particle.
21
// Older TrackInformation instances may only have the current particle.
22
HepMC::ConstGenParticlePtr
particle
=
trackInfo
->GetGenerationZeroGenParticle();
23
return
particle
?
particle
:
trackInfo
->GetCurrentGenParticle();
24
}
25
}
26
27
TrackHelper::TrackHelper
(
const
G4Track* t)
28
{
29
G4VUserTrackInformation* userInfo = t ? t->GetUserInformation() :
nullptr
;
30
m_trackInfo
=
dynamic_cast<
VTrackInformation
*
>
(userInfo);
31
}
32
33
TrackInformation
*
TrackHelper::GetTrackInformation
()
34
{
35
return
dynamic_cast<
TrackInformation
*
>
(
m_trackInfo
);
36
}
37
bool
TrackHelper::IsPrimary
()
const
38
{
39
if
(
m_trackInfo
==0)
return
false
;
40
return
m_trackInfo
->GetClassification()==
VTrackInformation::Primary
;
41
}
42
bool
TrackHelper::IsRegeneratedPrimary
()
const
43
{
44
if
(
m_trackInfo
==0)
return
false
;
45
return
m_trackInfo
->GetClassification()==
VTrackInformation::RegeneratedPrimary
;
46
}
47
bool
TrackHelper::IsRegisteredSecondary
()
const
48
{
49
if
(
m_trackInfo
==0)
return
false
;
50
return
m_trackInfo
->GetClassification()==
VTrackInformation::RegisteredSecondary
;
51
}
52
bool
TrackHelper::IsSecondary
()
const
53
{
54
if
(
m_trackInfo
==0)
return
true
;
55
return
m_trackInfo
->GetClassification()==
VTrackInformation::Secondary
;
56
}
57
int
TrackHelper::GetBarcode
()
const
// TODO Drop this once UniqueID and Status are used instead
58
{
59
if
(
const
TrackInformation
* concreteInfo =
dynamic_cast<
const
TrackInformation
*
>
(
m_trackInfo
)) {
60
HepMC::ConstGenParticlePtr
particle = outputAttributionParticle(concreteInfo);
61
return
particle ?
HepMC::barcode
(particle) : 0;
62
}
63
return
m_trackInfo
?
m_trackInfo
->GetParticleBarcode() : 0;
64
}
65
66
int
TrackHelper::GetUniqueID
()
const
67
{
68
if
(
const
TrackInformation
* concreteInfo =
dynamic_cast<
const
TrackInformation
*
>
(
m_trackInfo
)) {
69
HepMC::ConstGenParticlePtr
particle = outputAttributionParticle(concreteInfo);
70
return
particle ?
HepMC::uniqueID
(particle) : 0;
71
}
72
return
m_trackInfo
?
m_trackInfo
->GetParticleUniqueID() : 0;
73
}
74
75
int
TrackHelper::GetStatus
()
const
76
{
77
if
(
const
TrackInformation
* concreteInfo =
dynamic_cast<
const
TrackInformation
*
>
(
m_trackInfo
)) {
78
HepMC::ConstGenParticlePtr
particle = outputAttributionParticle(concreteInfo);
79
return
particle ? particle->status() : 0;
80
}
81
return
m_trackInfo
?
m_trackInfo
->GetParticleStatus() : 0;
82
}
83
84
HepMC::GenParticlePtr
TrackHelper::GetPrimaryGenParticle
()
85
{
86
return
m_trackInfo
?
m_trackInfo
->GetPrimaryGenParticle() :
nullptr
;
87
}
88
89
HepMC::ConstGenParticlePtr
TrackHelper::GetPrimaryGenParticle
()
const
90
{
91
return
m_trackInfo
? std::as_const(
m_trackInfo
)->GetPrimaryGenParticle() :
nullptr
;
92
}
GenParticle.h
MagicNumbers.h
TrackHelper.h
TrackInformation.h
VTrackInformation.h
TrackHelper::GetTrackInformation
TrackInformation * GetTrackInformation()
Return concrete TrackInformation when callers need fields that are not part of the VTrackInformation ...
Definition
TrackHelper.cxx:33
TrackHelper::TrackHelper
TrackHelper(const G4Track *t)
Definition
TrackHelper.cxx:27
TrackHelper::IsPrimary
bool IsPrimary() const
Definition
TrackHelper.cxx:37
TrackHelper::m_trackInfo
VTrackInformation * m_trackInfo
Definition
TrackHelper.h:66
TrackHelper::IsSecondary
bool IsSecondary() const
Definition
TrackHelper.cxx:52
TrackHelper::GetBarcode
int GetBarcode() const
Return the truth barcode/id/status used for detector output.
Definition
TrackHelper.cxx:57
TrackHelper::IsRegisteredSecondary
bool IsRegisteredSecondary() const
Definition
TrackHelper.cxx:47
TrackHelper::GetPrimaryGenParticle
HepMC::GenParticlePtr GetPrimaryGenParticle()
Return the primary truth particle associated with this track.
Definition
TrackHelper.cxx:84
TrackHelper::IsRegeneratedPrimary
bool IsRegeneratedPrimary() const
Definition
TrackHelper.cxx:42
TrackHelper::GetUniqueID
int GetUniqueID() const
Definition
TrackHelper.cxx:66
TrackHelper::GetStatus
int GetStatus() const
Definition
TrackHelper.cxx:75
TrackInformation
Implementation of VTrackInformation.
Definition
TrackInformation.h:44
VTrackInformation
Instances of classes derived from this class are attached as UserInformation to G4Tracks.
Definition
VTrackInformation.h:30
VTrackInformation::RegeneratedPrimary
@ RegeneratedPrimary
Definition
VTrackInformation.h:32
VTrackInformation::Primary
@ Primary
Definition
VTrackInformation.h:32
VTrackInformation::RegisteredSecondary
@ RegisteredSecondary
Definition
VTrackInformation.h:32
VTrackInformation::Secondary
@ Secondary
Definition
VTrackInformation.h:32
const
HepMC::barcode
int barcode(const T *p)
Definition
Barcode.h:15
HepMC::uniqueID
int uniqueID(const T &p)
Definition
MagicNumbers.h:89
HepMC::GenParticlePtr
HepMC3::GenParticlePtr GenParticlePtr
Definition
GenParticle.h:19
HepMC::ConstGenParticlePtr
HepMC3::ConstGenParticlePtr ConstGenParticlePtr
Definition
GenParticle.h:20
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition
ParticleHypothesis.h:79
trackInfo
Definition
TrigInDetUtils.h:13
Generated on
for ATLAS Offline Software by
1.16.1