ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Calorimeter
CaloSimEvent
CaloSimEvent
CaloCalibrationHit.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// CaloCalibrationHit
6
// 26-Jan-2004 William Seligman
7
8
// This class defines a "calibration" hit associated with the Calo
9
// simulation.
10
11
#ifndef CaloSimEvent_CaloCalibrationHit_h
12
#define CaloSimEvent_CaloCalibrationHit_h
13
14
#include "
GeneratorObjects/HepMcParticleLink.h
"
15
#include "Identifier/Identifier.h"
16
#include "
TruthUtils/MagicNumbers.h
"
17
18
class
CaloCalibrationHit
23
24
{
25
public
:
37
CaloCalibrationHit
(
Identifier
id
,
double
energyEM
,
double
energyNonEM
,
38
double
energyInvisible
,
double
energyEscaped
)
39
:
m_ID
(id),
40
m_energy0
(
energyEM
),
41
m_energy1
(
energyNonEM
),
42
m_energy2
(
energyInvisible
),
43
m_energy3
(
energyEscaped
) {}
44
58
CaloCalibrationHit
(
Identifier
id
,
double
energyEM
,
double
energyNonEM
,
59
double
energyInvisible
,
double
energyEscaped
,
int
barcode
,
60
int
uniqueID =
HepMC::INVALID_PARTICLE_ID
)
61
:
m_ID
(id),
62
m_energy0
(
energyEM
),
63
m_energy1
(
energyNonEM
),
64
m_energy2
(
energyInvisible
),
65
m_energy3
(
energyEscaped
),
66
m_barcode
(
barcode
),
67
m_uniqueID
(uniqueID) {
68
if
(
m_barcode
==
HepMC::UNDEFINED_ID
) {
69
m_uniqueID
=
HepMC::UNDEFINED_ID
;
70
}
// No link to a truth particle
71
else
if
(
m_uniqueID
==
HepMC::INVALID_PARTICLE_ID
&&
72
m_barcode
!=
HepMC::INVALID_PARTICLE_ID
) {
73
m_partLink
= std::make_unique<HepMcParticleLink>(
74
m_barcode
, 0,
HepMcParticleLink::IS_POSITION
,
75
HepMcParticleLink::IS_BARCODE
);
// FIXME is barcode-based
76
}
77
}
78
81
CaloCalibrationHit
() :
m_ID
(
Identifier
()) {}
82
84
CaloCalibrationHit
(
const
CaloCalibrationHit
& cchSource)
85
:
m_ID
(cchSource.
m_ID
),
86
m_energy0
(cchSource.
m_energy0
),
87
m_energy1
(cchSource.
m_energy1
),
88
m_energy2
(cchSource.
m_energy2
),
89
m_energy3
(cchSource.
m_energy3
),
90
m_barcode
(cchSource.
m_barcode
),
91
m_uniqueID
(cchSource.
m_uniqueID
) {
92
if
(
m_barcode
==
HepMC::UNDEFINED_ID
) {
93
m_uniqueID
=
HepMC::UNDEFINED_ID
;
94
}
// No link to a truth particle
95
else
if
(
m_uniqueID
==
HepMC::INVALID_PARTICLE_ID
&&
96
m_barcode
!=
HepMC::INVALID_PARTICLE_ID
) {
97
m_uniqueID
=
98
cchSource.
particleUID
();
// Try a look-up via HepMcParticleLink
99
}
100
}
101
103
CaloCalibrationHit
&
operator=
(
const
CaloCalibrationHit
& cchSource) {
104
if
(
this
== &cchSource)
105
return
*
this
;
106
m_ID
= cchSource.
m_ID
;
107
m_energy0
= cchSource.
m_energy0
;
108
m_energy1
= cchSource.
m_energy1
;
109
m_energy2
= cchSource.
m_energy2
;
110
m_energy3
= cchSource.
m_energy3
;
111
m_barcode
= cchSource.
m_barcode
;
112
m_uniqueID
= cchSource.
m_uniqueID
;
113
if
(
m_barcode
==
HepMC::UNDEFINED_ID
) {
114
m_uniqueID
=
HepMC::UNDEFINED_ID
;
115
}
// No link to a truth particle
116
else
if
(
m_uniqueID
==
HepMC::INVALID_PARTICLE_ID
&&
117
m_barcode
!=
HepMC::INVALID_PARTICLE_ID
) {
118
m_uniqueID
=
119
cchSource.
particleUID
();
// Try a look-up via HepMcParticleLink
120
}
121
return
*
this
;
122
}
123
125
virtual
~CaloCalibrationHit
() {}
126
128
Identifier
cellID
()
const
{
return
m_ID
; }
129
131
double
energyEM
()
const
{
return
m_energy0
; }
132
134
double
energyNonEM
()
const
{
return
m_energy1
; }
135
137
double
energyInvisible
()
const
{
return
m_energy2
; }
138
140
double
energyEscaped
()
const
{
return
m_energy3
; }
141
143
double
energyTotal
()
const
{
144
return
m_energy0
+
m_energy1
+
m_energy2
+
m_energy3
;
145
}
146
148
double
energy
(
unsigned
int
i)
const
{
149
switch
(i) {
150
case
0:
151
return
m_energy0
;
152
case
1:
153
return
m_energy1
;
154
case
2:
155
return
m_energy2
;
156
case
3:
157
return
m_energy3
;
158
default
:
159
return
0.;
160
}
161
}
162
164
int
particleID
()
const
{
return
m_barcode
; }
165
168
int
barcode
()
const
{
return
particleID
(); }
169
171
int
particleUID
()
const
{
172
if
(
m_uniqueID
==
HepMC::INVALID_PARTICLE_ID
&&
m_partLink
) {
173
return
m_partLink
->id();
174
}
else
{
175
return
m_uniqueID
;
176
}
177
}
178
180
double
operator()
(
unsigned
int
i)
const
{
return
energy
(i); }
181
183
bool
Less
(
const
CaloCalibrationHit
*
h
)
const
{
184
if
(
m_ID
!=
h
->m_ID) {
185
return
m_ID
<
h
->m_ID;
186
}
else
{
187
if
(
particleID
() ==
HepMC::INVALID_PARTICLE_ID
||
188
h
->particleUID() ==
HepMC::INVALID_PARTICLE_ID
) {
189
return
m_barcode
<
h
->m_barcode;
190
}
else
{
191
return
particleUID
() <
h
->particleUID();
192
}
193
}
194
}
195
197
bool
Equals
(
const
CaloCalibrationHit
&
h
)
const
{
198
bool
equal = (
m_ID
==
h
.m_ID);
199
const
bool
validBarcode(
particleID
() !=
HepMC::INVALID_PARTICLE_ID
&&
200
h
.particleID() !=
HepMC::INVALID_PARTICLE_ID
);
201
const
bool
validUID(
particleUID
() !=
HepMC::INVALID_PARTICLE_ID
&&
202
h
.particleUID() !=
HepMC::INVALID_PARTICLE_ID
);
203
equal &= (validBarcode || validUID);
204
if
(validBarcode) {
205
equal &= (
m_barcode
==
h
.m_barcode);
206
}
207
// Corrected bug: was comparing m_barcode instead of m_uniqueID
208
if
(validUID) {
209
equal &= (
particleUID
() ==
h
.particleUID());
210
}
211
return
equal;
212
};
213
215
bool
Equals
(
const
CaloCalibrationHit
*
h
)
const
{
return
Equals
(*
h
); }
216
218
void
Add
(
const
CaloCalibrationHit
*
h
) {
219
m_energy0
+=
h
->m_energy0;
220
m_energy1
+=
h
->m_energy1;
221
m_energy2
+=
h
->m_energy2;
222
m_energy3
+=
h
->m_energy3;
223
}
224
225
private
:
227
Identifier
m_ID
;
228
235
double
m_energy0
{0.};
236
double
m_energy1
{0.};
237
double
m_energy2
{0.};
238
double
m_energy3
{0.};
239
241
int
m_barcode
{
HepMC::UNDEFINED_ID
};
243
int
m_uniqueID
{
HepMC::UNDEFINED_ID
};
244
std::unique_ptr<HepMcParticleLink>
245
m_partLink
{};
// nullptr unless object was produced by reading
246
// TrackRecord_p1.
247
};
248
249
#endif
// CaloSimEvent_CaloCalibrationHit_h
HepMcParticleLink.h
MagicNumbers.h
h
Header file for AthHistogramAlgorithm.
CaloCalibrationHit::m_uniqueID
int m_uniqueID
identifier of Primary Particle which caused this hit
Definition
CaloCalibrationHit.h:243
CaloCalibrationHit::m_energy0
double m_energy0
energies (in MeV) deposited in this hit.
Definition
CaloCalibrationHit.h:235
CaloCalibrationHit::m_energy1
double m_energy1
Definition
CaloCalibrationHit.h:236
CaloCalibrationHit::energyNonEM
double energyNonEM() const
Definition
CaloCalibrationHit.h:134
CaloCalibrationHit::Less
bool Less(const CaloCalibrationHit *h) const
Calibration hits are ordered by values of their identifiers.
Definition
CaloCalibrationHit.h:183
CaloCalibrationHit::energy
double energy(unsigned int i) const
Definition
CaloCalibrationHit.h:148
CaloCalibrationHit::particleID
int particleID() const
Definition
CaloCalibrationHit.h:164
CaloCalibrationHit::CaloCalibrationHit
CaloCalibrationHit(Identifier id, double energyEM, double energyNonEM, double energyInvisible, double energyEscaped, int barcode, int uniqueID=HepMC::INVALID_PARTICLE_ID)
Standard constructor using identifer, energy by type and primary particle ID.
Definition
CaloCalibrationHit.h:58
CaloCalibrationHit::~CaloCalibrationHit
virtual ~CaloCalibrationHit()
Destructor.
Definition
CaloCalibrationHit.h:125
CaloCalibrationHit::CaloCalibrationHit
CaloCalibrationHit(const CaloCalibrationHit &cchSource)
Copy constructor.
Definition
CaloCalibrationHit.h:84
CaloCalibrationHit::Add
void Add(const CaloCalibrationHit *h)
Method used for energy accumulation.
Definition
CaloCalibrationHit.h:218
CaloCalibrationHit::cellID
Identifier cellID() const
Definition
CaloCalibrationHit.h:128
CaloCalibrationHit::energyEscaped
double energyEscaped() const
Definition
CaloCalibrationHit.h:140
CaloCalibrationHit::energyInvisible
double energyInvisible() const
Definition
CaloCalibrationHit.h:137
CaloCalibrationHit::CaloCalibrationHit
CaloCalibrationHit(Identifier id, double energyEM, double energyNonEM, double energyInvisible, double energyEscaped)
Standard constructor using identifer and energy by type.
Definition
CaloCalibrationHit.h:37
CaloCalibrationHit::CaloCalibrationHit
CaloCalibrationHit()
Default constructor; should never be used, but provided for some persistency services.
Definition
CaloCalibrationHit.h:81
CaloCalibrationHit::m_ID
Identifier m_ID
identifier of the cell in which this hit occured.
Definition
CaloCalibrationHit.h:227
CaloCalibrationHit::m_energy3
double m_energy3
Definition
CaloCalibrationHit.h:238
CaloCalibrationHit::m_energy2
double m_energy2
Definition
CaloCalibrationHit.h:237
CaloCalibrationHit::operator()
double operator()(unsigned int i) const
Definition
CaloCalibrationHit.h:180
CaloCalibrationHit::particleUID
int particleUID() const
Definition
CaloCalibrationHit.h:171
CaloCalibrationHit::operator=
CaloCalibrationHit & operator=(const CaloCalibrationHit &cchSource)
Assignment operator.
Definition
CaloCalibrationHit.h:103
CaloCalibrationHit::barcode
int barcode() const
Definition
CaloCalibrationHit.h:168
CaloCalibrationHit::energyTotal
double energyTotal() const
Definition
CaloCalibrationHit.h:143
CaloCalibrationHit::Equals
bool Equals(const CaloCalibrationHit &h) const
Calibration hits are ordered by values of their identifiers.
Definition
CaloCalibrationHit.h:197
CaloCalibrationHit::Equals
bool Equals(const CaloCalibrationHit *h) const
Calibration hits are ordered by values of their identifiers.
Definition
CaloCalibrationHit.h:215
CaloCalibrationHit::m_partLink
std::unique_ptr< HepMcParticleLink > m_partLink
Definition
CaloCalibrationHit.h:245
CaloCalibrationHit::energyEM
double energyEM() const
Definition
CaloCalibrationHit.h:131
CaloCalibrationHit::m_barcode
int m_barcode
legacy barcode of Primary Particle which caused this hit
Definition
CaloCalibrationHit.h:241
HepMcParticleLink::IS_POSITION
@ IS_POSITION
Definition
HepMcParticleLink.h:80
HepMcParticleLink::IS_BARCODE
@ IS_BARCODE
Definition
HepMcParticleLink.h:85
HepMC::INVALID_PARTICLE_ID
constexpr int INVALID_PARTICLE_ID
Definition
MagicNumbers.h:58
HepMC::UNDEFINED_ID
constexpr int UNDEFINED_ID
Definition
MagicNumbers.h:57
Identifier
Definition
IdentifierFieldParser.cxx:14
Generated on
for ATLAS Offline Software by
1.17.0