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 "
GeneratorObjects/HepMcParticleLink.h
"
12
13
class
IProxyDict
;
14
15
class
G4Track;
16
class
TrackInformation
;
17
18
class
TrackHelper
{
19
public
:
20
TrackHelper
(
const
G4Track* t);
21
bool
IsPrimary
()
const
;
22
bool
IsRegeneratedPrimary
()
const
;
23
bool
IsRegisteredSecondary
()
const
;
24
bool
IsSecondary
()
const
;
25
int
GetBarcode
()
const
;
// TODO Drop this once UniqueID and Status are used instead
26
int
GetUniqueID
()
const
;
27
int
GetStatus
()
const
;
28
TrackInformation
*
GetTrackInformation
() {
return
m_trackInfo
;}
34
inline
HepMcParticleLink
GenerateParticleLink
();
35
inline
HepMcParticleLink
GenerateParticleLink
(
IProxyDict
*);
36
private
:
37
inline
std::tuple<int, HepMcParticleLink::UniqueIDFlag>
particleIdentifierAndFlag
()
const
;
38
39
TrackInformation
*
m_trackInfo
;
40
};
41
42
inline
std::tuple<int, HepMcParticleLink::UniqueIDFlag>
43
TrackHelper::particleIdentifierAndFlag
()
const
44
{
45
#if defined(HEPMC3)
46
return
{
GetUniqueID
(),
HepMcParticleLink::IS_ID
};
47
#else
48
return
{
GetBarcode
(),
HepMcParticleLink::IS_BARCODE
};
49
#endif
50
}
51
52
HepMcParticleLink
TrackHelper::GenerateParticleLink
()
53
{
54
const
auto
[identifier, flag] =
particleIdentifierAndFlag
();
55
return
HepMcParticleLink
(identifier,
56
0,
57
HepMcParticleLink::IS_POSITION
,
58
flag);
59
}
60
61
HepMcParticleLink
TrackHelper::GenerateParticleLink
(
IProxyDict
* proxy)
62
{
63
const
auto
[identifier, flag] =
particleIdentifierAndFlag
();
64
if
(!proxy) {
65
return
GenerateParticleLink
();
66
}
67
return
HepMcParticleLink
(identifier,
68
0,
69
HepMcParticleLink::IS_POSITION
,
70
flag,
71
proxy);
72
}
73
74
#endif
// MCTRUTH_TRACKHELPER_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_BARCODE
@ IS_BARCODE
Definition
HepMcParticleLink.h:85
HepMcParticleLink::IS_ID
@ IS_ID
Definition
HepMcParticleLink.h:84
IProxyDict
A proxy dictionary.
Definition
AthenaKernel/AthenaKernel/IProxyDict.h:47
TrackHelper::GetTrackInformation
TrackInformation * GetTrackInformation()
Definition
TrackHelper.h:28
TrackHelper::m_trackInfo
TrackInformation * m_trackInfo
Definition
TrackHelper.h:39
TrackHelper::TrackHelper
TrackHelper(const G4Track *t)
Definition
TrackHelper.cxx:11
TrackHelper::IsPrimary
bool IsPrimary() const
Definition
TrackHelper.cxx:15
TrackHelper::IsSecondary
bool IsSecondary() const
Definition
TrackHelper.cxx:30
TrackHelper::GetBarcode
int GetBarcode() const
Definition
TrackHelper.cxx:35
TrackHelper::particleIdentifierAndFlag
std::tuple< int, HepMcParticleLink::UniqueIDFlag > particleIdentifierAndFlag() const
Definition
TrackHelper.h:43
TrackHelper::IsRegisteredSecondary
bool IsRegisteredSecondary() const
Definition
TrackHelper.cxx:25
TrackHelper::GenerateParticleLink
HepMcParticleLink GenerateParticleLink()
Generates a creates new HepMcParticleLink object on the stack based on GetUniqueID(),...
Definition
TrackHelper.h:52
TrackHelper::IsRegeneratedPrimary
bool IsRegeneratedPrimary() const
Definition
TrackHelper.cxx:20
TrackHelper::GetUniqueID
int GetUniqueID() const
Definition
TrackHelper.cxx:41
TrackHelper::GetStatus
int GetStatus() const
Definition
TrackHelper.cxx:47
TrackInformation
Implementation of VTrackInformation.
Definition
TrackInformation.h:41
Generated on
for ATLAS Offline Software by
1.14.0