ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
TrackingID
InDetTrackSystematicsTools
InDetTrackSystematicsTools
InDetTrackTruthOriginDefs.h
Go to the documentation of this file.
1
// -*- c++ -*-
2
/*
3
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
4
*/
5
6
#ifndef INDETTRACKSYSTEMATICSTOOLS_INDETTRACKTRUTHORIGINDEFS_H
7
#define INDETTRACKSYSTEMATICSTOOLS_INDETTRACKTRUTHORIGINDEFS_H
8
12
13
namespace
InDet
{
14
namespace
ExclusiveOrigin
{
15
enum
ExclusiveOrigin
:
int
{
16
Pileup
= 0,
17
Fake
= 1,
18
Primary
= 2,
19
FromB
= 3,
20
FromBC
= 4,
21
FromC
= 5,
22
FromTau
= 6,
23
OtherSecondary
= 7
24
};
25
}
// namespace ExclusiveOrigin
26
27
namespace
TrkOrigin
{
28
29
enum
OriginType
{
30
// fake
31
Fake
=0,
32
// pileup
33
Pileup
,
34
// secondaries
35
KshortDecay
,
36
StrangeMesonDecay
,
37
LambdaDecay
,
38
StrangeBaryonDecay
,
39
TauDecay
,
40
GammaConversion
,
41
OtherDecay
,
42
HadronicInteraction
,
43
OtherSecondary
,
44
// B/D decays
45
BHadronDecay
,
46
DHadronDecay
,
47
// fragmentation
48
Fragmentation
,
49
// unknown?
50
OtherOrigin
51
};
52
54
56
inline
bool
isFake
(
int
origin) {
57
if
(origin & (0x1 <<
Fake
))
return
true
;
58
return
false
;
59
}
60
62
inline
bool
isPileup
(
int
origin) {
63
if
(origin & (0x1 <<
Pileup
))
return
true
;
64
return
false
;
65
}
66
68
inline
bool
isV0Decay
(
int
origin) {
69
if
(origin & (0x1 <<
KshortDecay
))
return
true
;
70
if
(origin & (0x1 <<
LambdaDecay
))
return
true
;
71
return
false
;
72
}
73
75
inline
bool
isKshortDecay
(
int
origin) {
76
if
(origin & (0x1 <<
KshortDecay
))
return
true
;
77
return
false
;
78
}
79
81
inline
bool
isLambdaDecay
(
int
origin) {
82
if
(origin & (0x1 <<
LambdaDecay
))
return
true
;
83
return
false
;
84
}
85
87
inline
bool
isStrangeMesonDecay
(
int
origin) {
88
if
(origin & (0x1 <<
StrangeMesonDecay
))
return
true
;
89
return
false
;
90
}
91
93
inline
bool
isStrangeBaryonDecay
(
int
origin) {
94
if
(origin & (0x1 <<
StrangeBaryonDecay
))
return
true
;
95
return
false
;
96
}
97
99
inline
bool
isGammaConversion
(
int
origin) {
100
if
(origin & (0x1 <<
GammaConversion
))
return
true
;
101
return
false
;
102
}
103
105
inline
bool
isHadronicInteraction
(
int
origin) {
106
if
(origin & (0x1 <<
HadronicInteraction
))
return
true
;
107
return
false
;
108
}
109
111
inline
bool
isFromTau
(
int
origin) {
112
if
(origin & (0x1 <<
TauDecay
))
return
true
;
113
return
false
;
114
}
115
117
inline
bool
isSecondary
(
int
origin) {
118
static
constexpr
auto
bit=[](
int
bitpos){
return
0x1<<bitpos;};
119
static
constexpr
int
isSecondaryMask=bit(
StrangeMesonDecay
)|bit(
StrangeBaryonDecay
)|bit(
GammaConversion
)|bit(
HadronicInteraction
)|bit(
OtherDecay
)|bit(
OtherSecondary
);
120
return
(origin & isSecondaryMask);
121
}
122
124
inline
bool
isFromB
(
int
origin) {
125
if
(origin & (0x1 <<
BHadronDecay
))
return
true
;
126
return
false
;
127
}
128
130
inline
bool
isFromD
(
int
origin) {
131
if
(origin & (0x1 <<
DHadronDecay
))
return
true
;
132
return
false
;
133
}
134
136
inline
bool
isFromBNotFromD
(
int
origin) {
137
if
(
isFromD
(origin))
return
false
;
138
if
(origin & (0x1 <<
BHadronDecay
))
return
true
;
139
return
false
;
140
}
141
143
inline
bool
isFromDNotFromB
(
int
origin) {
144
if
(
isFromB
(origin))
return
false
;
145
if
(origin & (0x1 <<
DHadronDecay
))
return
true
;
146
return
false
;
147
}
148
150
inline
bool
isFromDfromB
(
int
origin) {
151
if
(
isFromB
(origin) &&
isFromD
(origin))
return
true
;
152
return
false
;
153
}
154
156
inline
bool
isFragmentation
(
int
origin) {
157
if
(origin & (0x1 <<
Fragmentation
))
return
true
;
158
return
false
;
159
}
160
162
inline
bool
isPrimary
(
int
origin) {
163
if
(
isFake
(origin))
return
false
;
164
if
(
isPileup
(origin))
return
false
;
165
if
(
isSecondary
(origin))
return
false
;
166
if
(origin & (0x1 <<
OtherOrigin
))
return
false
;
167
return
true
;
168
}
169
170
inline
int
getTrkOrigin
(
int
exclusiveOrigin) {
171
/*
172
input is exclusive origin enum value
173
Here we convert from exclusive origin (used by ftag) to trk origin (bitmask used by track truth tools)
174
*/
175
switch
(exclusiveOrigin) {
176
case
ExclusiveOrigin::Pileup
:
177
return
(0x1 <<
Pileup
);
178
case
ExclusiveOrigin::Fake
:
179
return
(0x1 <<
Fake
);
180
case
ExclusiveOrigin::FromB
:
181
return
(0x1 <<
BHadronDecay
);
182
case
ExclusiveOrigin::FromBC
:
183
return
(0x1 <<
BHadronDecay
) | (0x1 <<
DHadronDecay
);
184
case
ExclusiveOrigin::FromC
:
185
return
(0x1 <<
DHadronDecay
);
186
case
ExclusiveOrigin::FromTau
:
187
return
(0x1 <<
TauDecay
);
188
case
ExclusiveOrigin::OtherSecondary
:
189
return
(0x1 <<
StrangeMesonDecay
) | (0x1 <<
StrangeBaryonDecay
) | (0x1 <<
GammaConversion
) | (0x1 <<
HadronicInteraction
) | (0x1 <<
OtherDecay
) | (0x1 <<
OtherSecondary
);
190
case
ExclusiveOrigin::Primary
:
191
return
0;
// primary tracks have no bits set
192
default
:
193
return
(0x1 <<
OtherOrigin
);
194
}
195
}
196
}
// namespace TrkOrigin
197
198
namespace
ExclusiveOrigin {
199
inline
int
getExclusiveOrigin
(
int
origin) {
200
/*
201
The input origin is a bitwise flag.
202
Here we use the inclusive origin to build an exclusive origin label as an integer.
203
*/
204
205
if
(
InDet::TrkOrigin::isPileup
(origin) ) {
206
return
InDet::ExclusiveOrigin::Pileup
;
207
}
208
else
if
(
InDet::TrkOrigin::isFake
(origin) ) {
209
return
InDet::ExclusiveOrigin::Fake
;
210
}
211
else
if
(
InDet::TrkOrigin::isFromBNotFromD
(origin) ) {
212
return
InDet::ExclusiveOrigin::FromB
;
213
}
214
else
if
(
InDet::TrkOrigin::isFromDfromB
(origin) ) {
215
return
InDet::ExclusiveOrigin::FromBC
;
216
}
217
else
if
(
InDet::TrkOrigin::isFromDNotFromB
(origin) ) {
218
return
InDet::ExclusiveOrigin::FromC
;
219
}
220
else
if
(
InDet::TrkOrigin::isFromTau
(origin) ) {
221
return
InDet::ExclusiveOrigin::FromTau
;
222
}
223
else
if
(
InDet::TrkOrigin::isSecondary
(origin) ) {
224
return
InDet::ExclusiveOrigin::OtherSecondary
;
225
}
226
else
if
(
InDet::TrkOrigin::isPrimary
(origin) ) {
227
return
InDet::ExclusiveOrigin::Primary
;
228
}
229
230
// in _extremely_ rare cases, handle tracks with unknown origin (OtherOrigin)
231
return
InDet::ExclusiveOrigin::OtherSecondary
;
232
}
233
}
234
235
}
// namespace InDet
236
237
#endif
InDet::ExclusiveOrigin::ExclusiveOrigin
ExclusiveOrigin
Definition
InDetTrackTruthOriginDefs.h:15
InDet::ExclusiveOrigin::FromTau
@ FromTau
Definition
InDetTrackTruthOriginDefs.h:22
InDet::ExclusiveOrigin::Fake
@ Fake
Definition
InDetTrackTruthOriginDefs.h:17
InDet::ExclusiveOrigin::FromC
@ FromC
Definition
InDetTrackTruthOriginDefs.h:21
InDet::ExclusiveOrigin::Primary
@ Primary
Definition
InDetTrackTruthOriginDefs.h:18
InDet::ExclusiveOrigin::FromBC
@ FromBC
Definition
InDetTrackTruthOriginDefs.h:20
InDet::ExclusiveOrigin::OtherSecondary
@ OtherSecondary
Definition
InDetTrackTruthOriginDefs.h:23
InDet::ExclusiveOrigin::FromB
@ FromB
Definition
InDetTrackTruthOriginDefs.h:19
InDet::ExclusiveOrigin::Pileup
@ Pileup
Definition
InDetTrackTruthOriginDefs.h:16
InDet::ExclusiveOrigin::getExclusiveOrigin
int getExclusiveOrigin(int origin)
Definition
InDetTrackTruthOriginDefs.h:199
InDet::TrkOrigin
Definition
InDetTrackTruthOriginDefs.h:27
InDet::TrkOrigin::isPileup
bool isPileup(int origin)
from pileup
Definition
InDetTrackTruthOriginDefs.h:62
InDet::TrkOrigin::isFromBNotFromD
bool isFromBNotFromD(int origin)
from B decay chain excluding B-->D
Definition
InDetTrackTruthOriginDefs.h:136
InDet::TrkOrigin::isFromTau
bool isFromTau(int origin)
from tau decay
Definition
InDetTrackTruthOriginDefs.h:111
InDet::TrkOrigin::isHadronicInteraction
bool isHadronicInteraction(int origin)
from hadronic interactions
Definition
InDetTrackTruthOriginDefs.h:105
InDet::TrkOrigin::isSecondary
bool isSecondary(int origin)
from long living particle decays or gamma conversions or hadronic interactions and anything else with...
Definition
InDetTrackTruthOriginDefs.h:117
InDet::TrkOrigin::isPrimary
bool isPrimary(int origin)
not fake, not pileup, not secondaries
Definition
InDetTrackTruthOriginDefs.h:162
InDet::TrkOrigin::isFromB
bool isFromB(int origin)
from B decay chain including B-->D
Definition
InDetTrackTruthOriginDefs.h:124
InDet::TrkOrigin::OriginType
OriginType
Definition
InDetTrackTruthOriginDefs.h:29
InDet::TrkOrigin::OtherOrigin
@ OtherOrigin
Definition
InDetTrackTruthOriginDefs.h:50
InDet::TrkOrigin::Pileup
@ Pileup
Definition
InDetTrackTruthOriginDefs.h:33
InDet::TrkOrigin::HadronicInteraction
@ HadronicInteraction
Definition
InDetTrackTruthOriginDefs.h:42
InDet::TrkOrigin::Fake
@ Fake
Definition
InDetTrackTruthOriginDefs.h:31
InDet::TrkOrigin::OtherSecondary
@ OtherSecondary
Definition
InDetTrackTruthOriginDefs.h:43
InDet::TrkOrigin::TauDecay
@ TauDecay
Definition
InDetTrackTruthOriginDefs.h:39
InDet::TrkOrigin::GammaConversion
@ GammaConversion
Definition
InDetTrackTruthOriginDefs.h:40
InDet::TrkOrigin::OtherDecay
@ OtherDecay
Definition
InDetTrackTruthOriginDefs.h:41
InDet::TrkOrigin::BHadronDecay
@ BHadronDecay
Definition
InDetTrackTruthOriginDefs.h:45
InDet::TrkOrigin::StrangeBaryonDecay
@ StrangeBaryonDecay
Definition
InDetTrackTruthOriginDefs.h:38
InDet::TrkOrigin::Fragmentation
@ Fragmentation
Definition
InDetTrackTruthOriginDefs.h:48
InDet::TrkOrigin::DHadronDecay
@ DHadronDecay
Definition
InDetTrackTruthOriginDefs.h:46
InDet::TrkOrigin::StrangeMesonDecay
@ StrangeMesonDecay
Definition
InDetTrackTruthOriginDefs.h:36
InDet::TrkOrigin::KshortDecay
@ KshortDecay
Definition
InDetTrackTruthOriginDefs.h:35
InDet::TrkOrigin::LambdaDecay
@ LambdaDecay
Definition
InDetTrackTruthOriginDefs.h:37
InDet::TrkOrigin::isGammaConversion
bool isGammaConversion(int origin)
from conversions
Definition
InDetTrackTruthOriginDefs.h:99
InDet::TrkOrigin::isStrangeMesonDecay
bool isStrangeMesonDecay(int origin)
from strange meson decay
Definition
InDetTrackTruthOriginDefs.h:87
InDet::TrkOrigin::isV0Decay
bool isV0Decay(int origin)
from V0
Definition
InDetTrackTruthOriginDefs.h:68
InDet::TrkOrigin::isFromDNotFromB
bool isFromDNotFromB(int origin)
from D decay chain excluding B-->D
Definition
InDetTrackTruthOriginDefs.h:143
InDet::TrkOrigin::isFromD
bool isFromD(int origin)
from D decay chain including B-->D
Definition
InDetTrackTruthOriginDefs.h:130
InDet::TrkOrigin::isStrangeBaryonDecay
bool isStrangeBaryonDecay(int origin)
from strange baryon decay
Definition
InDetTrackTruthOriginDefs.h:93
InDet::TrkOrigin::isFragmentation
bool isFragmentation(int origin)
not from B, D, or any secondary
Definition
InDetTrackTruthOriginDefs.h:156
InDet::TrkOrigin::isKshortDecay
bool isKshortDecay(int origin)
from Kshort decay
Definition
InDetTrackTruthOriginDefs.h:75
InDet::TrkOrigin::isFake
bool isFake(int origin)
Helper functions.
Definition
InDetTrackTruthOriginDefs.h:56
InDet::TrkOrigin::getTrkOrigin
int getTrkOrigin(int exclusiveOrigin)
Definition
InDetTrackTruthOriginDefs.h:170
InDet::TrkOrigin::isFromDfromB
bool isFromDfromB(int origin)
from B-->D decay chain
Definition
InDetTrackTruthOriginDefs.h:150
InDet::TrkOrigin::isLambdaDecay
bool isLambdaDecay(int origin)
from Lambda decay
Definition
InDetTrackTruthOriginDefs.h:81
InDet
Primary Vertex Finder.
Definition
VP1ErrorUtils.h:36
Generated on
for ATLAS Offline Software by
1.17.0