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

Classes

struct  ParticleDef
class  Info

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 ,
  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 ,
  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 ,
  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
}
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 ,
  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 ,
  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 ,
  NonDefinedOutCome = 0 , UnknownOutCome = 1 , UnConverted = 2 , Converted = 3 ,
  NonInteract = 4 , NuclInteraction = 5 , ElectrMagInter = 6 , DecaytoElectron = 7 ,
  DecaytoMuon = 8 , OneProng = 9 , ThreeProng = 10 , FiveProng = 11
}

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 [1/2]

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 
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 52 of file TruthClassifiers.h.

61 {
62
63 if (EleOrig == NonDefined)
64 return UnknownElectron;
65
66 if (EleOrig == WBoson || EleOrig == ZBoson || EleOrig == top || EleOrig == SingleElec || EleOrig == Higgs ||
67 EleOrig == HiggsMSSM || EleOrig == HeavyBoson || EleOrig == WBosonLRSM || EleOrig == NuREle || EleOrig == NuRMu ||
68 EleOrig == NuRTau || EleOrig == LQ || EleOrig == SUSY || EleOrig == DiBoson || EleOrig == ZorHeavyBoson ||
69 EleOrig == OtherBSM || EleOrig == MultiBoson || isPrompt) {
70 return IsoElectron;
71 }
72 if (EleOrig == JPsi || EleOrig == BottomMeson || EleOrig == CharmedMeson || EleOrig == BottomBaryon ||
73 EleOrig == CharmedBaryon || EleOrig == TauLep || EleOrig == Mu || EleOrig == QuarkWeakDec) {
74 return NonIsoElectron;
75 }
76 return BkgElectron;
77}
78
79
81
82 if (MuOrig == NonDefined) return UnknownMuon;
83
84 if (MuOrig == WBoson || MuOrig == ZBoson || MuOrig == top || MuOrig == SingleMuon || MuOrig == Higgs ||
85 MuOrig == HiggsMSSM || MuOrig == HeavyBoson || MuOrig == WBosonLRSM || MuOrig == NuREle || MuOrig == NuRMu ||
86 MuOrig == NuRTau || MuOrig == LQ || MuOrig == SUSY || MuOrig == DiBoson || MuOrig == ZorHeavyBoson ||
87 MuOrig == OtherBSM || MuOrig == MultiBoson || isPrompt) {
88 return IsoMuon;
89 }
90 if (MuOrig == JPsi || MuOrig == BottomMeson || MuOrig == CharmedMeson || MuOrig == BottomBaryon ||
91 MuOrig == CharmedBaryon || MuOrig == TauLep || MuOrig == QuarkWeakDec) {
92 return NonIsoMuon;
93 }
94 // if (MuOrig == Pion || MuOrig == Kaon ) return DecayMuon;
95 return BkgMuon;
96}
97
99 if (TauOrig == NonDefined) return UnknownTau;
100
101 if (TauOrig == WBoson || TauOrig == ZBoson || TauOrig == top || TauOrig == SingleMuon || TauOrig == Higgs ||
102 TauOrig == HiggsMSSM || TauOrig == HeavyBoson || TauOrig == WBosonLRSM || TauOrig == NuREle || TauOrig == NuRMu ||
103 TauOrig == NuRTau || TauOrig == SUSY || TauOrig == DiBoson || TauOrig == ZorHeavyBoson || TauOrig == OtherBSM ||
104 TauOrig == MultiBoson)
@ NonIsoElectron
@ JPsi
@ BottomBaryon
@ CharmedMeson
@ QuarkWeakDec
@ BottomMeson
@ Mu
@ CharmedBaryon
@ TauLep
ParticleType defTypeOfTau(ParticleOrigin TauOrig)
ParticleType defTypeOfMuon(ParticleOrigin MuOrig, bool isPrompt)
int isPrompt(const unsigned int classify, bool allow_prompt_tau_decays=true)

◆ ParticleOrigin [2/2]

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 
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 52 of file MCTruthClassifierDefs.h.

◆ ParticleOutCome [1/2]

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

Definition at line 106 of file TruthClassifiers.h.

116{
117 if (PhotOrig == NonDefined) return UnknownPhoton;
118
119 if (PhotOrig == WBoson || PhotOrig == ZBoson || PhotOrig == SinglePhot || PhotOrig == Higgs ||

◆ ParticleOutCome [2/2]

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

Definition at line 106 of file MCTruthClassifierDefs.h.

127 {
129}
130
131#endif // MCTRUTHCLASSIFIER_MCTRUTHCLASSIFIERDEFS_H

◆ ParticleType [1/2]

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 
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 9 of file TruthClassifiers.h.

12 {
14
15inline ParticleOrigin convHadronTypeToOrig(ParticleType pType, int motherPDG)
16{
17 if (pType == CCbarMesonPart && abs(motherPDG) == MC::JPSI) return JPsi;
18 if (pType == BBbarMesonPart) return BBbarMeson;
19 if (pType == BottomMesonPart) return BottomMeson;
20 if (pType == BottomBaryonPart) return BottomBaryon;
21 if (pType == CCbarMesonPart) return CCbarMeson;
22 if (pType == CharmedMesonPart) return CharmedMeson;
23 if (pType == CharmedBaryonPart) return CharmedBaryon;
24 if (pType == StrangeBaryonPart) return StrangeBaryon;
25 if (pType == StrangeMesonPart) return StrangeMeson;
26 if (pType == LightBaryonPart) return LightBaryon;
27 if (pType == LightMesonPart) return LightMeson;
28 return NonDefined;
29}
30
31inline ParticleOrigin defHadronType(int pdg) {
32 if (abs(pdg) == MC::JPSI) return JPsi;
33 if (MC::isBBbarMeson(pdg)) return BBbarMeson;
34 if (MC::isCCbarMeson(pdg)) return CCbarMeson;
35 if (MC::isBottomMeson(pdg)) return BottomMeson;
36 if (MC::isCharmMeson(pdg)) return CharmedMeson;
37 if (MC::isBottomBaryon(pdg)) return BottomBaryon;
38 if (MC::isCharmBaryon(pdg)) return CharmedBaryon;
39 if (MC::isStrangeBaryon(pdg)) return StrangeBaryon;
40 if (MC::isLightBaryon(pdg)) return LightBaryon;
41 if (MC::isStrangeMeson(pdg)) return StrangeMeson;
42 if (MC::isLightMeson(pdg)) return LightMeson;
43 return NonDefined;
44}
45
46inline ParticleType defTypeOfHadron(int pdg) {
47 if (MC::isBBbarMeson(pdg)) return BBbarMesonPart;
48 if (MC::isCCbarMeson(pdg)) return CCbarMesonPart;
49 if (MC::isBottomMeson(pdg)) return BottomMesonPart;
50 if (MC::isCharmMeson(pdg)) return CharmedMesonPart;
ParticleOrigin
@ BBbarMeson
@ LightBaryon
@ CCbarMeson
@ StrangeMeson
@ LightMeson
@ StrangeBaryon
@ NonDefined
ParticleOrigin convHadronTypeToOrig(ParticleType pType, int motherPDG)
ParticleOrigin defHadronType(int pdg)
ParticleType defTypeOfHadron(int pdg)
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)
static const int JPSI

◆ ParticleType [2/2]

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 
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 9 of file MCTruthClassifierDefs.h.

9 : MCTruthClassifierDefs.h
10PACKAGE: atlasoff/PhysicsAnalysis/MCTruthClassifier
11
12AUTHORS: O. Fedin
13CREATED: Oct 2007
14
15For more information, please see the twiki page:
16https://twiki.cern.ch/twiki/bin/view/AtlasProtected/MCTruthClassifier
17********************************************************************
18Updated Feb 2024 by Andrii Verbytskyi <andrii.verbytskyi@mpp.mpg.de>
19********************************************************************/
20#include <vector>
21#include <string>
22namespace MCTruthPartClassifier {
24}
25
26#endif // MCTRUTHCLASSIFIER_MCTRUTHCLASSIFIERDEFS_H

Function Documentation

◆ convHadronTypeToOrig()

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

Definition at line 15 of file TruthClassifiers.h.

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

◆ defHadronType()

ParticleOrigin MCTruthPartClassifier::defHadronType ( int pdg)
inline

Definition at line 31 of file TruthClassifiers.h.

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

◆ defJetOrig()

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

Definition at line 131 of file TruthClassifiers.h.

131 {
132 ParticleOrigin partOrig = NonDefined;
133 for (const auto& it: allJetMothers) {
134 int pdg = abs(it->pdg_id());
135 if (MC::isTop(pdg)) partOrig = top;
136 if (MC::isZ(pdg)) partOrig = ZBoson;
137 if (MC::isW(pdg) && !(partOrig == top)) partOrig = WBoson;
138 if ((MC::isQuark(pdg) || MC::isGluon(pdg)) && partOrig != top && partOrig != ZBoson && partOrig != WBoson) partOrig = QCD;
139 if (MC::isHiggs(pdg)) return Higgs;
140 if (pdg == 35 || pdg == 36 || pdg == 37) return HiggsMSSM;
141 if (pdg == 32 || pdg == 33 || pdg == 34) return HeavyBoson;
142 if (pdg == 42) return LQ;
143 if (MC::isSUSY(pdg)) return SUSY;
144 if (MC::isBSM(pdg)) return OtherBSM;
145 }
146 return partOrig;
147}
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 150 of file TruthClassifiers.h.

150 {
151
152 T parent_hadron_ptr = nullptr;
153
154 bool uncat = 0, fromHad = 0, fromTau = 0;
155 bool isPhysical = MC::isPhysical(thePart);
156 bool isGeant = HepMC::is_simulation_particle(thePart);
157 bool isBSM = MC::isBSM(thePart);
158 bool fromBSM = isBSM; // just to initialise
159
160 auto prodVtx = thePart->production_vertex();
161 if (isPhysical && prodVtx && !isGeant) {
162 fromHad = MC::isFromHadron(thePart, parent_hadron_ptr, fromTau, fromBSM);
163 }
164 else uncat = 1;
165
166 std::bitset<MCTC_bits::totalBits> classifier;
167 classifier[MCTC_bits::stable] = isPhysical;
168 classifier[MCTC_bits::isgeant] = isGeant;
169 classifier[MCTC_bits::isbsm] = isBSM;
170 classifier[MCTC_bits::uncat] = uncat;
171 classifier[MCTC_bits::frombsm] = fromBSM;
172 classifier[MCTC_bits::hadron] = fromHad;
173 classifier[MCTC_bits::Tau] = fromTau;
174 classifier[MCTC_bits::HadTau] = fromHad && fromTau;
175 unsigned int outputvalue = static_cast<unsigned int>(classifier.to_ulong());
176
177 return std::make_tuple(outputvalue,parent_hadron_ptr);
178}
bool isBSM(const T &p)
APID: graviton and all Higgs extensions are BSM.
Definition AtlasPID.h:846
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 188 of file TruthClassifiers.h.

188 {
189 ParticleOutCome PartOutCome = UnknownOutCome;
190 auto EndVert = MC::findSimulatedEndVertex(thePart);
191 if (EndVert == nullptr) return NonInteract;
192
193 int ElecOutNumOfNucFr(0);
194 int ElecOutNumOfElec(0);
195 int NumOfHadr(0);
196 auto outgoing = EndVert->particles_out();
197 int NumOfElecDaug = outgoing.size();
198 for (const auto& p: outgoing) {
199 if (!p) continue;
200 int EndDaugType = p->pdg_id();
201 if (MC::isElectron(EndDaugType)) ElecOutNumOfElec++;
202 if (MC::isHadron(p) && !MC::isBeam(p)) NumOfHadr++;
203 if (EndDaugType > 1000000000 || EndDaugType == 0 || abs(EndDaugType) == 2212 || abs(EndDaugType) == 2112) ElecOutNumOfNucFr++;
204 }
205
206 if (ElecOutNumOfNucFr != 0 || NumOfHadr != 0) PartOutCome = NuclInteraction;
207 if (ElecOutNumOfElec == 1 && NumOfElecDaug == 1) PartOutCome = ElectrMagInter;
208
209 return PartOutCome;
210}
@ NuclInteraction
@ ElectrMagInter
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 212 of file TruthClassifiers.h.

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

◆ defOutComeOfPhoton()

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

Definition at line 266 of file TruthClassifiers.h.

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

◆ defOutComeOfTau()

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

Definition at line 238 of file TruthClassifiers.h.

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

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

◆ defTypeOfHadron()

ParticleType MCTruthPartClassifier::defTypeOfHadron ( int pdg)
inline

Definition at line 46 of file TruthClassifiers.h.

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

◆ defTypeOfMuon()

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

Definition at line 80 of file TruthClassifiers.h.

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

◆ defTypeOfPhoton()

ParticleType MCTruthPartClassifier::defTypeOfPhoton ( ParticleOrigin PhotOrig)
inline

Definition at line 115 of file TruthClassifiers.h.

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

◆ defTypeOfTau()

ParticleType MCTruthPartClassifier::defTypeOfTau ( ParticleOrigin TauOrig)
inline

Definition at line 98 of file TruthClassifiers.h.

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

◆ isPrompt()

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

Definition at line 180 of file TruthClassifiers.h.

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