00001
00002
00004
00005 #ifndef MCTRUTHCLASSIFIER_IMCTRUTHCLASSIFIER_H
00006 #define MCTRUTHCLASSIFIER_IMCTRUTHCLASSIFIER_H
00007
00015 #include "AsgTools/IAsgTool.h"
00016 #include "MCTruthClassifier/MCTruthClassifierDefs.h"
00017 #include <vector>
00018
00019
00020
00021 #include "xAODEgamma/ElectronFwd.h"
00022 #include "xAODEgamma/PhotonFwd.h"
00023 #include "xAODTracking/TrackParticleFwd.h"
00024 #include "xAODCaloEvent/CaloClusterFwd.h"
00025 #include "xAODTruth/TruthParticle.h"
00026 #include "xAODMuon/Muon.h"
00027 #include "xAODJet/Jet.h"
00028
00029 #ifndef XAOD_ANALYSIS
00030 namespace HepMC {
00031 class GenParticle;
00032 }
00033 #endif
00034
00035
00036 class IMCTruthClassifier : virtual public asg::IAsgTool {
00037
00038 ASG_TOOL_INTERFACE(IMCTruthClassifier)
00039 public:
00041 virtual ~IMCTruthClassifier(){};
00042 virtual StatusCode initialize() = 0;
00043 virtual StatusCode execute() = 0;
00044 virtual StatusCode finalize() = 0;
00045
00046
00047 #ifndef XAOD_ANALYSIS
00048 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin> particleTruthClassifier(const HepMC::GenParticle *)= 0;
00049 #endif
00050
00051 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin> particleTruthClassifier(const xAOD::TruthParticle *)= 0;
00052 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin> particleTruthClassifier(const xAOD::TrackParticle *)= 0;
00053 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin> particleTruthClassifier(const xAOD::Electron* )= 0;
00054 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin> particleTruthClassifier(const xAOD::Photon* )= 0;
00055 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin> particleTruthClassifier(const xAOD::Muon* )= 0;
00056 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin> particleTruthClassifier(const xAOD::CaloCluster* )=0;
00057 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin> particleTruthClassifier(const xAOD::Jet*, bool DR )= 0;
00058
00059 virtual float getProbTrktoTruth() = 0;
00060
00061 virtual MCTruthPartClassifier::ParticleOutCome getParticleOutCome() = 0;
00062
00063 virtual const xAOD::TruthParticle* getGenPart(const xAOD::TrackParticle *) = 0;
00064 virtual const xAOD::TruthParticle* getGenPart() = 0;
00065
00066 virtual const xAOD::TruthParticle* getMother() = 0;
00067 virtual int getMotherPDG() = 0;
00068 virtual int getMotherBarcode() = 0;
00069 virtual const xAOD::TruthParticle* getPhotonMother() = 0;
00070 virtual int getPhotonMotherPDG() = 0;
00071 virtual int getPhotonMotherBarcode() = 0;
00072 virtual std::pair<MCTruthPartClassifier::ParticleType, MCTruthPartClassifier::ParticleOrigin>
00073 checkOrigOfBkgElec(const xAOD::TruthParticle*) = 0;
00074 virtual const xAOD::TruthParticle* getBkgElecMother() = 0;
00075
00076 virtual std::vector<const xAOD::TruthParticle*>* getTauFinalState() = 0;
00077
00078 virtual float getdeltaRMatch() = 0;
00079 virtual float getdeltaPhiMatch() = 0;
00080 virtual uint8_t getNumOfSiHits() = 0;
00081
00082 virtual std::vector<const xAOD::TruthParticle*> getEGPartPntr() = 0;
00083 virtual std::vector<float> getEGPartdR() = 0;
00084 virtual std::vector<std::pair<MCTruthPartClassifier::ParticleType,MCTruthPartClassifier::ParticleOrigin> > getEGPartClas() = 0;
00085
00086 virtual std::vector<const xAOD::TrackParticle*> getCnvPhotTrkPtr() = 0;
00087 virtual std::vector<const xAOD::TruthParticle*> getCnvPhotTrkToTruthPart() = 0;
00088 virtual std::vector<MCTruthPartClassifier::ParticleType> getCnvPhotPartType() = 0;
00089 virtual std::vector<MCTruthPartClassifier::ParticleOrigin> getCnvPhotPartOrig() = 0;
00090
00091 };
00092
00093 #endif // MCTRUTHCLASSIFIER_IMCTRUTHCLASSIFIER_H