ATLAS Offline Software
Loading...
Searching...
No Matches
MCTruthPartClassifier Namespace Reference

Classes

struct  ParticleDef

Enumerations

enum  ParticleType : unsigned int {
  Unknown = 0 , UnknownElectron = 1 , IsoElectron = 2 , NonIsoElectron = 3 ,
  BkgElectron = 4 , UnknownMuon = 5 , IsoMuon = 6 , NonIsoMuon = 7 ,
  BkgMuon = 8 , UnknownTau = 9 , IsoTau = 10 , NonIsoTau = 11 ,
  BkgTau = 12 , UnknownPhoton = 13 , IsoPhoton = 14 , NonIsoPhoton = 15 ,
  BkgPhoton = 16 , Hadron = 17 , Neutrino = 18 , NuclFrag = 19 ,
  NonPrimary = 20 , GenParticle = 21 , SUSYParticle = 22 , OtherBSMParticle = 39 ,
  BBbarMesonPart = 23 , BottomMesonPart = 24 , CCbarMesonPart = 25 , CharmedMesonPart = 26 ,
  BottomBaryonPart = 27 , CharmedBaryonPart = 28 , StrangeBaryonPart = 29 , LightBaryonPart = 30 ,
  StrangeMesonPart = 31 , LightMesonPart = 32 , BJet = 33 , CJet = 34 ,
  LJet = 35 , GJet = 36 , TauJet = 37 , UnknownJet = 38
}
enum  ParticleOrigin : unsigned int {
  NonDefined = 0 , SingleElec = 1 , SingleMuon = 2 , SinglePhot = 3 ,
  SingleTau = 4 , PhotonConv = 5 , DalitzDec = 6 , ElMagProc = 7 ,
  Mu = 8 , TauLep = 9 , top = 10 , QuarkWeakDec = 11 ,
  WBoson = 12 , ZBoson = 13 , Higgs = 14 , HiggsMSSM = 15 ,
  HeavyBoson = 16 , WBosonLRSM = 17 , NuREle = 18 , NuRMu = 19 ,
  NuRTau = 20 , LQ = 21 , SUSY = 22 , OtherBSM = 46 ,
  LightMeson = 23 , StrangeMeson = 24 , CharmedMeson = 25 , BottomMeson = 26 ,
  CCbarMeson = 27 , JPsi = 28 , BBbarMeson = 29 , LightBaryon = 30 ,
  StrangeBaryon = 31 , CharmedBaryon = 32 , BottomBaryon = 33 , PionDecay = 34 ,
  KaonDecay = 35 , BremPhot = 36 , PromptPhot = 37 , UndrPhot = 38 ,
  ISRPhot = 39 , FSRPhot = 40 , NucReact = 41 , PiZero = 42 ,
  DiBoson = 43 , ZorHeavyBoson = 44 , MultiBoson = 47 , QCD = 45
}
enum  ParticleOutCome : unsigned int {
  NonDefinedOutCome = 0 , UnknownOutCome = 1 , UnConverted = 2 , Converted = 3 ,
  NonInteract = 4 , NuclInteraction = 5 , ElectrMagInter = 6 , DecaytoElectron = 7 ,
  DecaytoMuon = 8 , OneProng = 9 , ThreeProng = 10 , FiveProng = 11
}
enum  MCTC_bits : unsigned int {
  HadTau =0 , Tau , hadron , frombsm ,
  uncat , isbsm , isgeant , stable ,
  totalBits
}

Functions

ParticleOrigin convHadronTypeToOrig (ParticleType pType, int motherPDG)
ParticleOrigin defHadronType (int pdg)
ParticleType defTypeOfHadron (int pdg)
ParticleType defTypeOfElectron (ParticleOrigin EleOrig, bool isPrompt)
ParticleType defTypeOfMuon (ParticleOrigin MuOrig, bool isPrompt)
ParticleType defTypeOfTau (ParticleOrigin TauOrig)
ParticleType defTypeOfPhoton (ParticleOrigin PhotOrig)
template<class T>
ParticleOrigin defJetOrig (const T &allJetMothers)
template<class T>
std::tuple< unsigned int, T > defOrigOfParticle (T thePart)
int isPrompt (const unsigned int classify, bool allow_prompt_tau_decays=true)
template<class T>
ParticleOutCome defOutComeOfElectron (T thePart)
template<class T>
ParticleOutCome defOutComeOfMuon (T thePart)
template<class T>
ParticleOutCome defOutComeOfTau (T thePart)
template<class T>
ParticleOutCome defOutComeOfPhoton (T thePart)

Enumeration Type Documentation

◆ MCTC_bits

◆ ParticleOrigin

Enumerator
NonDefined 
SingleElec 
SingleMuon 
SinglePhot 
SingleTau 
PhotonConv 
DalitzDec 
ElMagProc 
Mu 
TauLep 
top 
QuarkWeakDec 
WBoson 
ZBoson 
Higgs 
HiggsMSSM 
HeavyBoson 
WBosonLRSM 
NuREle 
NuRMu 
NuRTau 
LQ 
SUSY 
OtherBSM 
LightMeson 
StrangeMeson 
CharmedMeson 
BottomMeson 
CCbarMeson 
JPsi 
BBbarMeson 
LightBaryon 
StrangeBaryon 
CharmedBaryon 
BottomBaryon 
PionDecay 
KaonDecay 
BremPhot 
PromptPhot 
UndrPhot 
ISRPhot 
FSRPhot 
NucReact 
PiZero 
DiBoson 
ZorHeavyBoson 
MultiBoson 
QCD 

Definition at line 53 of file TruthClasses.h.

53 : unsigned int {
54 NonDefined = 0,
55
56 SingleElec = 1,
57 SingleMuon = 2,
58 SinglePhot = 3,
59 SingleTau = 4,
60
61 PhotonConv = 5,
62 DalitzDec = 6,
63 ElMagProc = 7,
64 Mu = 8,
65 TauLep = 9,
66 top = 10,
67 QuarkWeakDec = 11,
68 WBoson = 12,
69 ZBoson = 13,
70 Higgs = 14,
71 HiggsMSSM = 15,
72 HeavyBoson = 16,
73 WBosonLRSM = 17,
74 NuREle = 18,
75 NuRMu = 19,
76 NuRTau = 20,
77 LQ = 21,
78
79 SUSY = 22,
80 OtherBSM = 46,
81 LightMeson = 23,
82 StrangeMeson = 24,
83 CharmedMeson = 25,
84 BottomMeson = 26,
85 CCbarMeson = 27,
86 JPsi = 28,
87 BBbarMeson = 29,
88 LightBaryon = 30,
89 StrangeBaryon = 31,
90 CharmedBaryon = 32,
91 BottomBaryon = 33,
92 PionDecay = 34,
93 KaonDecay = 35,
94 BremPhot = 36,
95 PromptPhot = 37,
96 UndrPhot = 38,
97 ISRPhot = 39,
98 FSRPhot = 40,
99 NucReact = 41,
100 PiZero = 42,
101 DiBoson = 43,
102 ZorHeavyBoson = 44,
103 MultiBoson = 47,
104 QCD = 45
105 };

◆ ParticleOutCome

Enumerator
NonDefinedOutCome 
UnknownOutCome 
UnConverted 
Converted 
NonInteract 
NuclInteraction 
ElectrMagInter 
DecaytoElectron 
DecaytoMuon 
OneProng 
ThreeProng 
FiveProng 

Definition at line 107 of file TruthClasses.h.

◆ ParticleType

Enumerator
Unknown 
UnknownElectron 
IsoElectron 
NonIsoElectron 
BkgElectron 
UnknownMuon 
IsoMuon 
NonIsoMuon 
BkgMuon 
UnknownTau 
IsoTau 
NonIsoTau 
BkgTau 
UnknownPhoton 
IsoPhoton 
NonIsoPhoton 
BkgPhoton 
Hadron 
Neutrino 
NuclFrag 
NonPrimary 
GenParticle 
SUSYParticle 
OtherBSMParticle 
BBbarMesonPart 
BottomMesonPart 
CCbarMesonPart 
CharmedMesonPart 
BottomBaryonPart 
CharmedBaryonPart 
StrangeBaryonPart 
LightBaryonPart 
StrangeMesonPart 
LightMesonPart 
BJet 
CJet 
LJet 
GJet 
TauJet 
UnknownJet 

Definition at line 10 of file TruthClasses.h.

10 : unsigned int {
11 Unknown = 0,
13 IsoElectron = 2,
15 BkgElectron = 4,
16 UnknownMuon = 5,
17 IsoMuon = 6,
18 NonIsoMuon = 7,
19 BkgMuon = 8,
20 UnknownTau = 9,
21 IsoTau = 10,
22 NonIsoTau = 11,
23 BkgTau = 12,
24 UnknownPhoton = 13,
25 IsoPhoton = 14,
26 NonIsoPhoton = 15,
27 BkgPhoton = 16,
28 Hadron = 17,
29 Neutrino = 18,
30 NuclFrag = 19,
31 NonPrimary = 20,
32 GenParticle = 21,
33 SUSYParticle = 22,
35 BBbarMesonPart = 23,
36 BottomMesonPart = 24,
37 CCbarMesonPart = 25,
42 LightBaryonPart = 30,
44 LightMesonPart = 32,
45 BJet = 33,
46 CJet = 34,
47 LJet = 35,
48 GJet = 36,
49 TauJet = 37,
50 UnknownJet = 38
51 };

Function Documentation

◆ convHadronTypeToOrig()

ParticleOrigin MCTruthPartClassifier::convHadronTypeToOrig ( ParticleType pType,
int motherPDG )
inline

Definition at line 14 of file TruthClassifiers.h.

15{
16 if (pType == CCbarMesonPart && abs(motherPDG) == MC::JPSI) return JPsi;
17 if (pType == BBbarMesonPart) return BBbarMeson;
18 if (pType == BottomMesonPart) return BottomMeson;
19 if (pType == BottomBaryonPart) return BottomBaryon;
20 if (pType == CCbarMesonPart) return CCbarMeson;
21 if (pType == CharmedMesonPart) return CharmedMeson;
22 if (pType == CharmedBaryonPart) return CharmedBaryon;
23 if (pType == StrangeBaryonPart) return StrangeBaryon;
24 if (pType == StrangeMesonPart) return StrangeMeson;
25 if (pType == LightBaryonPart) return LightBaryon;
26 if (pType == LightMesonPart) return LightMeson;
27 return NonDefined;
28}
static const int JPSI

◆ defHadronType()

ParticleOrigin MCTruthPartClassifier::defHadronType ( int pdg)
inline

Definition at line 30 of file TruthClassifiers.h.

30 {
31 if (abs(pdg) == MC::JPSI) return JPsi;
32 if (MC::isBBbarMeson(pdg)) return BBbarMeson;
33 if (MC::isCCbarMeson(pdg)) return CCbarMeson;
34 if (MC::isBottomMeson(pdg)) return BottomMeson;
35 if (MC::isCharmMeson(pdg)) return CharmedMeson;
36 if (MC::isBottomBaryon(pdg)) return BottomBaryon;
37 if (MC::isCharmBaryon(pdg)) return CharmedBaryon;
38 if (MC::isStrangeBaryon(pdg)) return StrangeBaryon;
39 if (MC::isLightBaryon(pdg)) return LightBaryon;
40 if (MC::isStrangeMeson(pdg)) return StrangeMeson;
41 if (MC::isLightMeson(pdg)) return LightMeson;
42 return NonDefined;
43}
bool isStrangeBaryon(const T &p)
bool isLightBaryon(const T &p)
bool isLightMeson(const T &p)
bool isStrangeMeson(const T &p)
bool isBottomMeson(const T &p)
bool isCharmBaryon(const T &p)
bool isCCbarMeson(const T &p)
bool isBottomBaryon(const T &p)
bool isCharmMeson(const T &p)
bool isBBbarMeson(const T &p)

◆ defJetOrig()

template<class T>
ParticleOrigin MCTruthPartClassifier::defJetOrig ( const T & allJetMothers)

Definition at line 130 of file TruthClassifiers.h.

130 {
131 ParticleOrigin partOrig = NonDefined;
132 for (const auto& it: allJetMothers) {
133 int pdg = abs(it->pdg_id());
134 if (MC::isTop(pdg)) partOrig = top;
135 if (MC::isZ(pdg)) partOrig = ZBoson;
136 if (MC::isW(pdg) && !(partOrig == top)) partOrig = WBoson;
137 if ((MC::isQuark(pdg) || MC::isGluon(pdg)) && partOrig != top && partOrig != ZBoson && partOrig != WBoson) partOrig = QCD;
138 if (MC::isHiggs(pdg)) return Higgs;
139 if (pdg == 35 || pdg == 36 || pdg == 37) return HiggsMSSM;
140 if (pdg == 32 || pdg == 33 || pdg == 34) return HeavyBoson;
141 if (pdg == 42) return LQ;
142 if (MC::isSUSY(pdg)) return SUSY;
143 if (MC::isBSM(pdg)) return OtherBSM;
144 }
145 return partOrig;
146}
bool isZ(const T &p)
bool isW(const T &p)
bool isTop(const T &p)
bool isSUSY(const T &p)
bool isQuark(const T &p)
PDG rule 2: Quarks and leptons are numbered consecutively starting from 1 and 11 respectively; to do ...
bool isHiggs(const T &p)
APID: HIGGS boson is only one particle.
bool isGluon(const T &p)
bool isBSM(const T &p)
APID: graviton and all Higgs extensions are BSM.

◆ defOrigOfParticle()

template<class T>
std::tuple< unsigned int, T > MCTruthPartClassifier::defOrigOfParticle ( T thePart)

Definition at line 149 of file TruthClassifiers.h.

149 {
150
151 T parent_hadron_ptr = nullptr;
152
153 bool uncat = 0, fromHad = 0, fromTau = 0;
154 bool isPhysical = MC::isPhysical(thePart);
155 bool isGeant = HepMC::is_simulation_particle(thePart);
156 bool isBSM = MC::isBSM(thePart);
157 bool fromBSM = isBSM; // just to initialise
158
159 auto prodVtx = thePart->production_vertex();
160 if (isPhysical && prodVtx && !isGeant) {
161 fromHad = MC::isFromHadron(thePart, parent_hadron_ptr, fromTau, fromBSM);
162 }
163 else uncat = 1;
164
165 std::bitset<MCTC_bits::totalBits> classifier;
166 classifier[MCTC_bits::stable] = isPhysical;
167 classifier[MCTC_bits::isgeant] = isGeant;
168 classifier[MCTC_bits::isbsm] = isBSM;
169 classifier[MCTC_bits::uncat] = uncat;
170 classifier[MCTC_bits::frombsm] = fromBSM;
171 classifier[MCTC_bits::hadron] = fromHad;
172 classifier[MCTC_bits::Tau] = fromTau;
173 classifier[MCTC_bits::HadTau] = fromHad && fromTau;
174 unsigned int outputvalue = static_cast<unsigned int>(classifier.to_ulong());
175
176 return std::make_tuple(outputvalue,parent_hadron_ptr);
177}
bool isBSM(const T &p)
APID: graviton and all Higgs extensions are BSM.
Definition AtlasPID.h:852
bool is_simulation_particle(const T &p)
Method to establish if a particle (or barcode) was created during the simulation (TODO update to be s...
bool isFromHadron(T p, U hadron, bool &fromTau, bool &fromBSM)
Function to classify the particle.
bool isPhysical(const T &p)
Identify if the particle is physical, i.e. is stable or decayed.

◆ defOutComeOfElectron()

template<class T>
ParticleOutCome MCTruthPartClassifier::defOutComeOfElectron ( T thePart)

Definition at line 187 of file TruthClassifiers.h.

187 {
188 ParticleOutCome PartOutCome = UnknownOutCome;
189 auto EndVert = MC::findSimulatedEndVertex(thePart);
190 if (EndVert == nullptr) return NonInteract;
191
192 int ElecOutNumOfNucFr(0);
193 int ElecOutNumOfElec(0);
194 int NumOfHadr(0);
195 auto outgoing = EndVert->particles_out();
196 int NumOfElecDaug = outgoing.size();
197 for (const auto& p: outgoing) {
198 if (!p) continue;
199 int EndDaugType = p->pdg_id();
200 if (MC::isElectron(EndDaugType)) ElecOutNumOfElec++;
201 if (MC::isHadron(p) && !MC::isBeam(p)) NumOfHadr++;
202 if (EndDaugType > 1000000000 || EndDaugType == 0 || abs(EndDaugType) == 2212 || abs(EndDaugType) == 2112) ElecOutNumOfNucFr++;
203 }
204
205 if (ElecOutNumOfNucFr != 0 || NumOfHadr != 0) PartOutCome = NuclInteraction;
206 if (ElecOutNumOfElec == 1 && NumOfElecDaug == 1) PartOutCome = ElectrMagInter;
207
208 return PartOutCome;
209}
bool isElectron(const T &p)
bool isBeam(const T &p)
Identify if the particle is beam particle.
bool isHadron(const T &p)
auto findSimulatedEndVertex(T thePart) -> decltype(thePart->end_vertex())
Function to find the end vertex of a particle.

◆ defOutComeOfMuon()

template<class T>
ParticleOutCome MCTruthPartClassifier::defOutComeOfMuon ( T thePart)

Definition at line 211 of file TruthClassifiers.h.

211 {
212 ParticleOutCome PartOutCome = UnknownOutCome;
213 auto EndVert = MC::findSimulatedEndVertex(thePart);
214 if (EndVert == nullptr) return NonInteract;
215 int MuOutNumOfNucFr(0);
216 int NumOfHadr(0);
217 int NumOfEleNeutr(0);
218 int NumOfMuonNeutr(0);
219 int NumOfElec(0);
220 auto outgoing = EndVert->particles_out();
221 int NumOfMuDaug = outgoing.size();
222 for (const auto& p: outgoing) {
223 if (!p) continue;
224 int EndDaugType = p->pdg_id();
225 if (MC::isElectron(EndDaugType)) NumOfElec++;
226 if (abs(EndDaugType) == 12) NumOfEleNeutr++;
227 if (abs(EndDaugType) == 14) NumOfMuonNeutr++;
228 if (MC::isHadron(p) && !MC::isBeam(p)) NumOfHadr++;
229 if (EndDaugType > 1000000000 || EndDaugType == 0 || abs(EndDaugType) == 2212 || abs(EndDaugType) == 2112) MuOutNumOfNucFr++;
230 }
231
232 if (MuOutNumOfNucFr != 0 || NumOfHadr != 0) PartOutCome = NuclInteraction;
233 if (NumOfMuDaug == 3 && NumOfElec == 1 && NumOfEleNeutr == 1 && NumOfMuonNeutr == 1) PartOutCome = DecaytoElectron;
234
235 return PartOutCome;
236}

◆ defOutComeOfPhoton()

template<class T>
ParticleOutCome MCTruthPartClassifier::defOutComeOfPhoton ( T thePart)

Definition at line 265 of file TruthClassifiers.h.

265 {
266 ParticleOutCome PartOutCome = UnknownOutCome;
267 auto EndVert = MC::findSimulatedEndVertex(thePart);
268 if (EndVert == nullptr) return UnConverted;
269
270 int PhtOutNumOfNucFr(0);
271 int PhtOutNumOfEl(0);
272 int PhtOutNumOfPos(0);
273 int PhtOutNumOfHadr(0);
274
275 auto outgoing = EndVert->particles_out();
276 int NumOfPhtDaug = outgoing.size();
277 for (const auto& p: outgoing) {
278 if (!p) continue;
279 int EndDaugType = p->pdg_id();
280 if (EndDaugType > 1000000000 || EndDaugType == 0 || abs(EndDaugType) == 2212 || abs(EndDaugType) == 2112) PhtOutNumOfNucFr++;
281 if (EndDaugType == 11) PhtOutNumOfEl++;
282 if (EndDaugType == -11) PhtOutNumOfPos++;
283 if (MC::isHadron(p) && !MC::isBeam(p)) PhtOutNumOfHadr++;
284 }
285
286 if (PhtOutNumOfEl == 1 && PhtOutNumOfPos == 1 && NumOfPhtDaug == 2) PartOutCome = Converted;
287 if ((NumOfPhtDaug > 1 && PhtOutNumOfNucFr != 0) || PhtOutNumOfHadr > 0) PartOutCome = NuclInteraction;
288
289 return PartOutCome;
290}

◆ defOutComeOfTau()

template<class T>
ParticleOutCome MCTruthPartClassifier::defOutComeOfTau ( T thePart)

Definition at line 237 of file TruthClassifiers.h.

237 {
238 ParticleOutCome PartOutCome = UnknownOutCome;
239 auto EndVert = MC::findSimulatedEndVertex(thePart);
240 if (EndVert == nullptr) return NonInteract;
241 int NumOfTauDaug = EndVert->nOutgoingParticles();
242 auto tauFinalStatePart = MC::findFinalStateParticles(EndVert);
243 auto PD = DecayProducts(tauFinalStatePart);
244 int NumOfElec = PD.apd(11);
245 int NumOfMuon = PD.apd(13);
246 int NumOfElecNeut = PD.apd(12);
247 int NumOfMuonNeut = PD.apd(14);
248 int NumOfPhot = PD.apd(22);
249 int NumOfPi = PD.apd(211);
250 int NumOfKaon = PD.apd(321);
251 int NumOfNucFr = PD.apd(0) + PD.apd(1000000000, std::numeric_limits<int>::max());
252
253 if (NumOfNucFr != 0) PartOutCome = NuclInteraction;
254 if ((NumOfTauDaug == 3 && NumOfElec == 1 && NumOfElecNeut == 1) || (NumOfTauDaug == (3 + NumOfPhot) && NumOfElecNeut == 1)) PartOutCome = DecaytoElectron;
255 if ((NumOfTauDaug == 3 && NumOfMuon == 1 && NumOfMuonNeut == 1) || (NumOfTauDaug == (3 + NumOfPhot) && NumOfMuonNeut == 1)) PartOutCome = DecaytoMuon;
256
257 if (NumOfPi == 1 || NumOfKaon == 1) PartOutCome = OneProng;
258 if (NumOfPi + NumOfKaon == 3) PartOutCome = ThreeProng;
259 if (NumOfPi + NumOfKaon == 5) PartOutCome = FiveProng;
260
261
262 return PartOutCome;
263}
auto findFinalStateParticles(V theVert) -> decltype(theVert->particles_out())
Function to find the stable particle descendants of the given vertex..

◆ defTypeOfElectron()

ParticleType MCTruthPartClassifier::defTypeOfElectron ( ParticleOrigin EleOrig,
bool isPrompt )
inline

Definition at line 60 of file TruthClassifiers.h.

60 {
61
62 if (EleOrig == NonDefined)
63 return UnknownElectron;
64
65 if (EleOrig == WBoson || EleOrig == ZBoson || EleOrig == top || EleOrig == SingleElec || EleOrig == Higgs ||
66 EleOrig == HiggsMSSM || EleOrig == HeavyBoson || EleOrig == WBosonLRSM || EleOrig == NuREle || EleOrig == NuRMu ||
67 EleOrig == NuRTau || EleOrig == LQ || EleOrig == SUSY || EleOrig == DiBoson || EleOrig == ZorHeavyBoson ||
68 EleOrig == OtherBSM || EleOrig == MultiBoson || isPrompt) {
69 return IsoElectron;
70 }
71 if (EleOrig == JPsi || EleOrig == BottomMeson || EleOrig == CharmedMeson || EleOrig == BottomBaryon ||
72 EleOrig == CharmedBaryon || EleOrig == TauLep || EleOrig == Mu || EleOrig == QuarkWeakDec) {
73 return NonIsoElectron;
74 }
75 return BkgElectron;
76}
int isPrompt(const unsigned int classify, bool allow_prompt_tau_decays=true)

◆ defTypeOfHadron()

ParticleType MCTruthPartClassifier::defTypeOfHadron ( int pdg)
inline

Definition at line 45 of file TruthClassifiers.h.

45 {
46 if (MC::isBBbarMeson(pdg)) return BBbarMesonPart;
47 if (MC::isCCbarMeson(pdg)) return CCbarMesonPart;
48 if (MC::isBottomMeson(pdg)) return BottomMesonPart;
49 if (MC::isCharmMeson(pdg)) return CharmedMesonPart;
50 if (MC::isBottomBaryon(pdg)) return BottomBaryonPart;
51 if (MC::isCharmBaryon(pdg)) return CharmedBaryonPart;
53 if (MC::isLightBaryon(pdg)) return LightBaryonPart;
54 if (MC::isStrangeMeson(pdg)) return StrangeMesonPart;
55 if (MC::isLightMeson(pdg)) return LightMesonPart;
56 return Unknown;
57}

◆ defTypeOfMuon()

ParticleType MCTruthPartClassifier::defTypeOfMuon ( ParticleOrigin MuOrig,
bool isPrompt )
inline

Definition at line 79 of file TruthClassifiers.h.

79 {
80
81 if (MuOrig == NonDefined) return UnknownMuon;
82
83 if (MuOrig == WBoson || MuOrig == ZBoson || MuOrig == top || MuOrig == SingleMuon || MuOrig == Higgs ||
84 MuOrig == HiggsMSSM || MuOrig == HeavyBoson || MuOrig == WBosonLRSM || MuOrig == NuREle || MuOrig == NuRMu ||
85 MuOrig == NuRTau || MuOrig == LQ || MuOrig == SUSY || MuOrig == DiBoson || MuOrig == ZorHeavyBoson ||
86 MuOrig == OtherBSM || MuOrig == MultiBoson || isPrompt) {
87 return IsoMuon;
88 }
89 if (MuOrig == JPsi || MuOrig == BottomMeson || MuOrig == CharmedMeson || MuOrig == BottomBaryon ||
90 MuOrig == CharmedBaryon || MuOrig == TauLep || MuOrig == QuarkWeakDec) {
91 return NonIsoMuon;
92 }
93 // if (MuOrig == Pion || MuOrig == Kaon ) return DecayMuon;
94 return BkgMuon;
95}

◆ defTypeOfPhoton()

ParticleType MCTruthPartClassifier::defTypeOfPhoton ( ParticleOrigin PhotOrig)
inline

Definition at line 114 of file TruthClassifiers.h.

115{
116 if (PhotOrig == NonDefined) return UnknownPhoton;
117
118 if (PhotOrig == WBoson || PhotOrig == ZBoson || PhotOrig == SinglePhot || PhotOrig == Higgs ||
119 PhotOrig == HiggsMSSM || PhotOrig == HeavyBoson || PhotOrig == PromptPhot || PhotOrig == SUSY ||
120 PhotOrig == OtherBSM)
121 return IsoPhoton;
122
123 if (PhotOrig == ISRPhot || PhotOrig == FSRPhot || PhotOrig == TauLep || PhotOrig == Mu || PhotOrig == NuREle ||
124 PhotOrig == NuRMu || PhotOrig == NuRTau)
125 return NonIsoPhoton;
126
127 return BkgPhoton;
128}

◆ defTypeOfTau()

ParticleType MCTruthPartClassifier::defTypeOfTau ( ParticleOrigin TauOrig)
inline

Definition at line 97 of file TruthClassifiers.h.

97 {
98 if (TauOrig == NonDefined) return UnknownTau;
99
100 if (TauOrig == WBoson || TauOrig == ZBoson || TauOrig == top || TauOrig == SingleMuon || TauOrig == Higgs ||
101 TauOrig == HiggsMSSM || TauOrig == HeavyBoson || TauOrig == WBosonLRSM || TauOrig == NuREle || TauOrig == NuRMu ||
102 TauOrig == NuRTau || TauOrig == SUSY || TauOrig == DiBoson || TauOrig == ZorHeavyBoson || TauOrig == OtherBSM ||
103 TauOrig == MultiBoson)
104 return IsoTau;
105
106 if (TauOrig == JPsi || TauOrig == BottomMeson || TauOrig == CharmedMeson || TauOrig == BottomBaryon ||
107 TauOrig == CharmedBaryon || TauOrig == QuarkWeakDec)
108 return NonIsoTau;
109
110 return BkgTau;
111}

◆ isPrompt()

int MCTruthPartClassifier::isPrompt ( const unsigned int classify,
bool allow_prompt_tau_decays = true )
inline

Definition at line 179 of file TruthClassifiers.h.

179 {
180 std::bitset<MCTC_bits::totalBits> res(classify);
181 if (res.test(MCTC_bits::uncat)) return -1;
182 bool fromPromptTau = res.test(MCTC_bits::Tau) && !res.test(MCTC_bits::HadTau);
183 if (fromPromptTau) return int(allow_prompt_tau_decays);
184 return !res.test(MCTC_bits::hadron);
185 }
std::pair< std::vector< unsigned int >, bool > res