ATLAS Offline Software
Loading...
Searching...
No Matches
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
12namespace InDet {
13
14 namespace TrkOrigin {
15
39
41
43 inline bool isFake(int origin) {
44 if (origin & (0x1 << Fake)) return true;
45 return false;
46 }
47
49 inline bool isPileup(int origin) {
50 if (origin & (0x1 << Pileup)) return true;
51 return false;
52 }
53
55 inline bool isV0Decay(int origin) {
56 if (origin & (0x1 << KshortDecay)) return true;
57 if (origin & (0x1 << LambdaDecay)) return true;
58 return false;
59 }
60
62 inline bool isKshortDecay(int origin) {
63 if (origin & (0x1 << KshortDecay)) return true;
64 return false;
65 }
66
68 inline bool isLambdaDecay(int origin) {
69 if (origin & (0x1 << LambdaDecay)) return true;
70 return false;
71 }
72
74 inline bool isStrangeMesonDecay(int origin) {
75 if (origin & (0x1 << StrangeMesonDecay)) return true;
76 return false;
77 }
78
80 inline bool isStrangeBaryonDecay(int origin) {
81 if (origin & (0x1 << StrangeBaryonDecay)) return true;
82 return false;
83 }
84
86 inline bool isGammaConversion(int origin) {
87 if (origin & (0x1 << GammaConversion)) return true;
88 return false;
89 }
90
92 inline bool isHadronicInteraction(int origin) {
93 if (origin & (0x1 << HadronicInteraction)) return true;
94 return false;
95 }
96
98 inline bool isFromTau(int origin) {
99 if (origin & (0x1 << TauDecay)) return true;
100 return false;
101 }
102
104 inline bool isSecondary(int origin) {
105 static constexpr auto bit=[](int bitpos){return 0x1<<bitpos;};
106 static constexpr int isSecondaryMask=bit(StrangeMesonDecay)|bit(StrangeBaryonDecay)|bit(GammaConversion)|bit(HadronicInteraction)|bit(OtherDecay)|bit(OtherSecondary);
107 return (origin & isSecondaryMask);
108 }
109
111 inline bool isFromB(int origin) {
112 if (origin & (0x1 << BHadronDecay)) return true;
113 return false;
114 }
115
117 inline bool isFromD(int origin) {
118 if (origin & (0x1 << DHadronDecay)) return true;
119 return false;
120 }
121
123 inline bool isFromBNotFromD(int origin) {
124 if (isFromD(origin)) return false;
125 if (origin & (0x1 << BHadronDecay)) return true;
126 return false;
127 }
128
130 inline bool isFromDNotFromB(int origin) {
131 if (isFromB(origin)) return false;
132 if (origin & (0x1 << DHadronDecay)) return true;
133 return false;
134 }
135
137 inline bool isFromDfromB(int origin) {
138 if (isFromB(origin) && isFromD(origin)) return true;
139 return false;
140 }
141
143 inline bool isFragmentation(int origin) {
144 if (origin & (0x1 << Fragmentation)) return true;
145 return false;
146 }
147
149 inline bool isPrimary(int origin) {
150 if (isFake(origin)) return false;
151 if (isPileup(origin)) return false;
152 if (isSecondary(origin)) return false;
153 if (origin & (0x1 << OtherOrigin)) return false;
154 return true;
155 }
156
157 } // namespace TrkOrigin
158
159 namespace ExclusiveOrigin {
170
171 inline int getExclusiveOrigin(int origin) {
172 /*
173 The input origin is a bitwise flag.
174 Here we use the inclusive origin to build an exclusive origin label as an integer.
175 */
176
177 if ( InDet::TrkOrigin::isPileup(origin) ) {
179 }
180 else if ( InDet::TrkOrigin::isFake(origin) ) {
182 }
183 else if ( InDet::TrkOrigin::isFromBNotFromD(origin) ) {
185 }
186 else if ( InDet::TrkOrigin::isFromDfromB(origin) ) {
188 }
189 else if ( InDet::TrkOrigin::isFromDNotFromB(origin) ) {
191 }
192 else if ( InDet::TrkOrigin::isFromTau(origin) ) {
194 }
195 else if ( InDet::TrkOrigin::isSecondary(origin) ) {
197 }
198 else if ( InDet::TrkOrigin::isPrimary(origin) ) {
200 }
201
202 // in _extremely_ rare cases, handle tracks with unknown origin (OtherOrigin)
204 }
205 }
206
207} // namespace InDet
208
209#endif
bool isPileup(int origin)
from pileup
bool isFromBNotFromD(int origin)
from B decay chain excluding B-->D
bool isFromTau(int origin)
from tau decay
bool isHadronicInteraction(int origin)
from hadronic interactions
bool isSecondary(int origin)
from long living particle decays or gamma conversions or hadronic interactions and anything else with...
bool isPrimary(int origin)
not fake, not pileup, not secondaries
bool isFromB(int origin)
from B decay chain including B-->D
bool isGammaConversion(int origin)
from conversions
bool isStrangeMesonDecay(int origin)
from strange meson decay
bool isV0Decay(int origin)
from V0
bool isFromDNotFromB(int origin)
from D decay chain excluding B-->D
bool isFromD(int origin)
from D decay chain including B-->D
bool isStrangeBaryonDecay(int origin)
from strange baryon decay
bool isFragmentation(int origin)
not from B, D, or any secondary
bool isKshortDecay(int origin)
from Kshort decay
bool isFake(int origin)
Helper functions.
bool isFromDfromB(int origin)
from B-->D decay chain
bool isLambdaDecay(int origin)
from Lambda decay
Primary Vertex Finder.