4#ifndef MCTRUTHCLASSIFIER_IMCTRUTHCLASSIFIER_H
5#define MCTRUTHCLASSIFIER_IMCTRUTHCLASSIFIER_H
21#include <unordered_map>
39#if !defined(XAOD_ANALYSIS) && !defined(GENERATIONBASE)
84 std::vector<std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin>>
egPartClas;
112 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin>
116 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin>
119 std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin>
124#ifndef GENERATIONBASE
127 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin>
130 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin>
133 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin>
136 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin>
139 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin>
142 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin>
146 std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin>
158 return {classification.first,classification.second,info.genPart,info.particleOutCome};
161 template <
typename T> std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin>
a link optimized in size for a GenParticle in a McEventCollection
std::vector< MCTruthPartClassifier::ParticleOrigin > cnvPhotPartOrig
std::vector< const xAOD::TruthParticle * > egPartPtr
void setMotherProperties(const xAOD::TruthParticle *from)
std::vector< float > egPartdR
std::vector< const xAOD::TruthParticle * > cnvPhotTrkToTruthPart
const xAOD::TruthParticle * PhotonMother() const
MCTruthPartClassifier::ParticleOutCome particleOutCome
void resetMotherProperties()
Info(const EventContext &ctx)
std::vector< MCTruthPartClassifier::ParticleType > cnvPhotPartType
const xAOD::TruthParticle * photonMother
std::vector< const xAOD::TrackParticle * > cnvPhotTrkPtr
const xAOD::TruthParticle * Mother() const
const EventContext & eventContext
std::vector< std::pair< MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin > > egPartClas
const xAOD::TruthParticle * genPart
const xAOD::TruthParticle * mother
virtual ~IMCTruthClassifier()=default
Virtual destructor.
virtual std::pair< MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin > particleTruthClassifier(const xAOD::Muon *, IMCTruthClassifier::Info *info) const =0
std::tuple< MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin, const xAOD::TruthParticle *, MCTruthPartClassifier::ParticleOutCome > particleTruthClassifier_full(const T *p, std::optional< std::reference_wrapper< const EventContext > > ctx=std::nullopt) const
Returns more info than the particleTruthClassifier.
std::pair< MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin > particleTruthClassifier(const T *p, std::optional< std::reference_wrapper< const EventContext > > ctx=std::nullopt) const
virtual std::pair< MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin > particleTruthClassifier(const xAOD::Jet *, bool DR, IMCTruthClassifier::Info *info) const =0
virtual const xAOD::TruthParticle * getGenPart(const xAOD::TrackParticle *, IMCTruthClassifier::Info *info=nullptr) const =0
virtual const xAOD::TruthParticle * egammaClusMatch(const xAOD::CaloCluster *, bool, IMCTruthClassifier::Info *info=nullptr) const =0
virtual std::pair< MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin > particleTruthClassifier(const xAOD::CaloCluster *, IMCTruthClassifier::Info *info) const =0
virtual std::pair< MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin > particleTruthClassifier(const xAOD::Electron *, IMCTruthClassifier::Info *info) const =0
virtual std::pair< MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin > particleTruthClassifier(const xAOD::Photon *, IMCTruthClassifier::Info *info) const =0
std::pair< MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin > particleHepMCTruthClassifier(const HepMcParticleLink &theLink) const
std::pair< MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin > particleTruthClassifier(const xAOD::Jet *p, bool DR) const
virtual std::pair< MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin > particleTruthClassifier(const xAOD::TruthParticle *, IMCTruthClassifier::Info *info) const =0
virtual std::pair< MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin > particleTruthClassifier(const xAOD::TrackParticle *, IMCTruthClassifier::Info *info) const =0
virtual std::pair< MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin > particleHepMCTruthClassifier(const HepMcParticleLink &theLink, IMCTruthClassifier::Info *info) const =0
=============================================================================
Jet_v1 Jet
Definition of the current "jet version".
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
TruthParticle_v1 TruthParticle
Typedef to implementation.
Muon_v1 Muon
Reference the current persistent version:
Photon_v1 Photon
Definition of the current "egamma version".
Electron_v1 Electron
Definition of the current "egamma version".