ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Simulation
G4Sim
TrackRecord
TrackRecord
TrackRecord.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 TRACKRECORD_TRACKRECORD_H
6
#define TRACKRECORD_TRACKRECORD_H
7
8
#include "CLHEP/Vector/ThreeVector.h"
9
#include "
TruthUtils/MagicNumbers.h
"
10
#include "
GeneratorObjects/HepMcParticleLink.h
"
11
12
class
TrackRecord
{
13
public
:
15
TrackRecord
() =
default
;
16
18
virtual
~TrackRecord
() =
default
;
19
21
TrackRecord
(
22
int
pdg,
23
int
status
,
24
double
energy,
25
const
CLHEP::Hep3Vector& momentum,
26
const
CLHEP::Hep3Vector& postition,
27
double
time,
28
int
barcode
,
29
int
id
,
30
const
std::string& volumeName)
31
:
m_pdgCode
(pdg)
32
,
m_status
(
status
)
33
,
m_energy
(energy)
34
,
m_momentum
(momentum)
35
,
m_position
(postition)
36
,
m_time
(time)
37
,
m_barcode
(
barcode
)
38
,
m_id
(
id
)
39
,
m_volName
(volumeName)
40
{
41
if
(
m_id
==
HepMC::INVALID_PARTICLE_ID
&&
m_barcode
!=
HepMC::INVALID_PARTICLE_ID
) {
42
m_partLink
= std::make_unique<HepMcParticleLink>(
m_barcode
, 0,
HepMcParticleLink::IS_POSITION
,
HepMcParticleLink::IS_BARCODE
);
// FIXME is barcode-based
43
}
44
}
45
47
TrackRecord
(
const
TrackRecord
& trc)
48
:
m_pdgCode
(trc.
m_pdgCode
)
49
,
m_status
(trc.
m_status
)
50
,
m_energy
(trc.
m_energy
)
51
,
m_momentum
(trc.
m_momentum
)
52
,
m_position
(trc.
m_position
)
53
,
m_time
(trc.
m_time
)
54
,
m_barcode
(trc.
m_barcode
)
55
,
m_id
(trc.
m_id
)
56
,
m_volName
(trc.
m_volName
){
57
if
(
m_id
==
HepMC::INVALID_PARTICLE_ID
&&
m_barcode
!=
HepMC::INVALID_PARTICLE_ID
) {
58
m_id
= trc.
id
();
// Try a look-up via HepMcParticleLink
59
}
60
}
61
63
TrackRecord
&
operator=
(
const
TrackRecord
& trc) {
64
if
(
this
!= &trc) {
65
m_pdgCode
= trc.
m_pdgCode
;
66
m_status
= trc.
m_status
;
67
m_energy
= trc.
m_energy
;
68
m_momentum
= trc.
m_momentum
;
69
m_position
= trc.
m_position
;
70
m_time
= trc.
m_time
;
71
m_barcode
= trc.
m_barcode
;
72
m_id
= trc.
m_id
;
73
if
(
m_id
==
HepMC::INVALID_PARTICLE_ID
&&
m_barcode
!=
HepMC::INVALID_PARTICLE_ID
) {
74
m_id
= trc.
id
();
// Try a look-up via HepMcParticleLink
75
}
76
m_volName
= trc.
m_volName
;
77
}
78
return
*
this
;
79
}
80
82
double
GetEnergy
()
const
{
return
m_energy
;}
83
85
void
SetEnergy
(
double
e) {
m_energy
= e;}
86
88
CLHEP::Hep3Vector
GetPosition
()
const
{
return
m_position
;}
89
91
void
SetPosition
(CLHEP::Hep3Vector p) {
m_position
= p;}
92
94
CLHEP::Hep3Vector
GetMomentum
()
const
{
return
m_momentum
;}
95
97
void
SetMomentum
(CLHEP::Hep3Vector e) {
m_momentum
= e;}
98
100
int
GetPDGCode
()
const
{
return
m_pdgCode
;}
101
103
void
SetPDGCode
(
int
pcode) {
m_pdgCode
= pcode;}
104
106
double
GetTime
()
const
{
return
m_time
;}
107
109
void
SetTime
(
double
time) {
m_time
= time;}
110
112
const
std::string&
GetVolName
()
const
{
return
m_volName
;}
113
115
void
SetVolName
(
const
std::string& theName){
m_volName
= theName;}
116
118
int
status
()
const
{
return
m_status
;}
119
121
void
SetStatus
(
int
status
) {
m_status
=
status
;}
122
124
int
id
()
const
{
if
(
m_id
==
HepMC::INVALID_PARTICLE_ID
&&
m_partLink
) {
return
m_partLink
->id(); }
else
{
return
m_id
; } }
125
127
void
SetID
(
int
uniqueID){
128
m_id
= uniqueID;
129
if
(
m_id
==
HepMC::INVALID_PARTICLE_ID
&&
m_barcode
!=
HepMC::INVALID_PARTICLE_ID
) {
130
m_partLink
= std::make_unique<HepMcParticleLink>(
m_barcode
, 0,
HepMcParticleLink::IS_POSITION
,
HepMcParticleLink::IS_BARCODE
);
// FIXME is barcode-based
131
}
132
}
133
135
int
barcode
()
const
{
return
m_barcode
;}
136
138
void
SetBarcode
(
int
barcode
){
139
m_barcode
=
barcode
;
140
if
(
m_id
==
HepMC::INVALID_PARTICLE_ID
&&
m_barcode
!=
HepMC::INVALID_PARTICLE_ID
) {
141
m_partLink
= std::make_unique<HepMcParticleLink>(
m_barcode
, 0,
HepMcParticleLink::IS_POSITION
,
HepMcParticleLink::IS_BARCODE
);
// FIXME is barcode-based
142
}
143
}
144
145
private
:
146
int
m_pdgCode
{0};
147
int
m_status
{0};
148
double
m_energy
{0};
149
CLHEP::Hep3Vector
m_momentum
{0,0,0};
150
CLHEP::Hep3Vector
m_position
{0,0,0};
151
double
m_time
{0.};
152
int
m_barcode
{
HepMC::UNDEFINED_ID
};
153
int
m_id
{
HepMC::UNDEFINED_ID
};
154
std::string
m_volName
{
""
};
155
std::unique_ptr<HepMcParticleLink>
m_partLink
{};
// nullptr unless object was produced by reading TrackRecord_p1.
156
};
157
158
#endif
// TRACKRECORD_TRACKRECORD_H
HepMcParticleLink.h
MagicNumbers.h
HepMcParticleLink::IS_POSITION
@ IS_POSITION
Definition
HepMcParticleLink.h:80
HepMcParticleLink::IS_BARCODE
@ IS_BARCODE
Definition
HepMcParticleLink.h:85
TrackRecord::m_position
CLHEP::Hep3Vector m_position
Definition
TrackRecord.h:150
TrackRecord::GetPDGCode
int GetPDGCode() const
PDG Code.
Definition
TrackRecord.h:100
TrackRecord::TrackRecord
TrackRecord()=default
Default constructor.
TrackRecord::m_energy
double m_energy
Definition
TrackRecord.h:148
TrackRecord::SetStatus
void SetStatus(int status)
Set status.
Definition
TrackRecord.h:121
TrackRecord::m_barcode
int m_barcode
Definition
TrackRecord.h:152
TrackRecord::operator=
TrackRecord & operator=(const TrackRecord &trc)
Assignement Operator.
Definition
TrackRecord.h:63
TrackRecord::SetPDGCode
void SetPDGCode(int pcode)
Set PDG code.
Definition
TrackRecord.h:103
TrackRecord::status
int status() const
status.
Definition
TrackRecord.h:118
TrackRecord::SetEnergy
void SetEnergy(double e)
Set energy.
Definition
TrackRecord.h:85
TrackRecord::~TrackRecord
virtual ~TrackRecord()=default
Default destructor.
TrackRecord::barcode
int barcode() const
bar code.
Definition
TrackRecord.h:135
TrackRecord::GetPosition
CLHEP::Hep3Vector GetPosition() const
Position.
Definition
TrackRecord.h:88
TrackRecord::SetPosition
void SetPosition(CLHEP::Hep3Vector p)
Set position.
Definition
TrackRecord.h:91
TrackRecord::SetBarcode
void SetBarcode(int barcode)
Set barcode.
Definition
TrackRecord.h:138
TrackRecord::SetMomentum
void SetMomentum(CLHEP::Hep3Vector e)
Set momentum.
Definition
TrackRecord.h:97
TrackRecord::GetMomentum
CLHEP::Hep3Vector GetMomentum() const
Momentum.
Definition
TrackRecord.h:94
TrackRecord::m_status
int m_status
Definition
TrackRecord.h:147
TrackRecord::id
int id() const
unique ID - fall back to HepMcParticeLink if m_id has not been set directly
Definition
TrackRecord.h:124
TrackRecord::GetEnergy
double GetEnergy() const
Energy.
Definition
TrackRecord.h:82
TrackRecord::GetTime
double GetTime() const
Time.
Definition
TrackRecord.h:106
TrackRecord::m_momentum
CLHEP::Hep3Vector m_momentum
Definition
TrackRecord.h:149
TrackRecord::SetID
void SetID(int uniqueID)
Set uniqueID.
Definition
TrackRecord.h:127
TrackRecord::SetVolName
void SetVolName(const std::string &theName)
Set Volume name.
Definition
TrackRecord.h:115
TrackRecord::TrackRecord
TrackRecord(int pdg, int status, double energy, const CLHEP::Hep3Vector &momentum, const CLHEP::Hep3Vector &postition, double time, int barcode, int id, const std::string &volumeName)
Constructor.
Definition
TrackRecord.h:21
TrackRecord::m_volName
std::string m_volName
Definition
TrackRecord.h:154
TrackRecord::SetTime
void SetTime(double time)
Set time.
Definition
TrackRecord.h:109
TrackRecord::m_pdgCode
int m_pdgCode
Definition
TrackRecord.h:146
TrackRecord::GetVolName
const std::string & GetVolName() const
Volume name.
Definition
TrackRecord.h:112
TrackRecord::TrackRecord
TrackRecord(const TrackRecord &trc)
Constructor.
Definition
TrackRecord.h:47
TrackRecord::m_partLink
std::unique_ptr< HepMcParticleLink > m_partLink
Definition
TrackRecord.h:155
TrackRecord::m_time
double m_time
Definition
TrackRecord.h:151
TrackRecord::m_id
int m_id
Definition
TrackRecord.h:153
HepMC::INVALID_PARTICLE_ID
constexpr int INVALID_PARTICLE_ID
Definition
MagicNumbers.h:58
HepMC::UNDEFINED_ID
constexpr int UNDEFINED_ID
Definition
MagicNumbers.h:57
Generated on
for ATLAS Offline Software by
1.17.0