ATLAS Offline Software
Loading...
Searching...
No Matches
Simulation
G4Sim
MCTruth
MCTruth
TrackHelper.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef MCTRUTH_TRACKHELPER_H
6
#define MCTRUTH_TRACKHELPER_H
7
8
9
#include <tuple>
10
11
#include "
AtlasHepMC/GenParticle_fwd.h
"
12
#include "
GeneratorObjects/HepMcParticleLink.h
"
13
14
class
IProxyDict
;
15
16
class
G4Track;
17
class
TrackInformation
;
18
class
VTrackInformation
;
19
20
class
TrackHelper
{
21
public
:
22
TrackHelper
(
const
G4Track* t);
23
bool
IsPrimary
()
const
;
24
bool
IsRegeneratedPrimary
()
const
;
25
bool
IsRegisteredSecondary
()
const
;
26
bool
IsSecondary
()
const
;
36
int
GetBarcode
()
const
;
// TODO Drop this once UniqueID and Status are used instead
37
int
GetUniqueID
()
const
;
38
int
GetStatus
()
const
;
47
HepMC::GenParticlePtr
GetPrimaryGenParticle
();
48
HepMC::ConstGenParticlePtr
GetPrimaryGenParticle
()
const
;
53
TrackInformation
*
GetTrackInformation
();
59
inline
HepMcParticleLink
GenerateParticleLink
();
60
inline
HepMcParticleLink
GenerateParticleLink
(
IProxyDict
*);
61
private
:
62
inline
std::tuple<int, HepMcParticleLink::UniqueIDFlag>
particleIdentifierAndFlag
()
const
;
63
64
// TrackHelper also handles lightweight TrackBarcodeInfo instances, so the
65
// cached pointer intentionally uses the common VTrackInformation base.
66
VTrackInformation
*
m_trackInfo
{};
67
};
68
69
inline
std::tuple<int, HepMcParticleLink::UniqueIDFlag>
70
TrackHelper::particleIdentifierAndFlag
()
const
71
{
72
return
{
GetUniqueID
(),
HepMcParticleLink::IS_ID
};
73
}
74
75
HepMcParticleLink
TrackHelper::GenerateParticleLink
()
76
{
77
const
auto
[identifier, flag] =
particleIdentifierAndFlag
();
78
return
HepMcParticleLink
(identifier,
79
0,
80
HepMcParticleLink::IS_POSITION
,
81
flag);
82
}
83
84
HepMcParticleLink
TrackHelper::GenerateParticleLink
(
IProxyDict
* proxy)
85
{
86
const
auto
[identifier, flag] =
particleIdentifierAndFlag
();
87
if
(!proxy) {
88
return
GenerateParticleLink
();
89
}
90
return
HepMcParticleLink
(identifier,
91
0,
92
HepMcParticleLink::IS_POSITION
,
93
flag,
94
proxy);
95
}
96
97
#endif
// MCTRUTH_TRACKHELPER_H
GenParticle_fwd.h
HepMcParticleLink.h
HepMcParticleLink
a link optimized in size for a GenParticle in a McEventCollection
Definition
HepMcParticleLink.h:72
HepMcParticleLink::IS_POSITION
@ IS_POSITION
Definition
HepMcParticleLink.h:80
HepMcParticleLink::IS_ID
@ IS_ID
Definition
HepMcParticleLink.h:84
IProxyDict
A proxy dictionary.
Definition
AthenaKernel/AthenaKernel/IProxyDict.h:47
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::particleIdentifierAndFlag
std::tuple< int, HepMcParticleLink::UniqueIDFlag > particleIdentifierAndFlag() const
Definition
TrackHelper.h:70
TrackHelper::IsRegisteredSecondary
bool IsRegisteredSecondary() const
Definition
TrackHelper.cxx:47
TrackHelper::GenerateParticleLink
HepMcParticleLink GenerateParticleLink()
Generates a new HepMcParticleLink object on the stack based on the generation-zero unique id,...
Definition
TrackHelper.h:75
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
HepMC::GenParticlePtr
HepMC3::GenParticlePtr GenParticlePtr
Definition
GenParticle.h:19
HepMC::ConstGenParticlePtr
HepMC3::ConstGenParticlePtr ConstGenParticlePtr
Definition
GenParticle.h:20
Generated on
for ATLAS Offline Software by
1.16.1