00001 #ifndef JetFlavourIdentifier_H 00002 #define JetFlavourIdentifier_H 00003 00004 #include "FWCore/Framework/interface/Event.h" 00005 #include "DataFormats/JetReco/interface/Jet.h" 00006 #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" 00007 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00008 #include "RecoBTag/MCTools/interface/MCParton.h" 00009 #include "RecoBTag/MCTools/interface/JetFlavour.h" 00010 #include "DataFormats/Math/interface/LorentzVector.h" 00011 00012 class JetFlavourIdentifier { 00013 public: 00014 JetFlavourIdentifier() {} 00015 JetFlavourIdentifier(const edm::ParameterSet& iConfig); 00016 void readEvent(const edm::Event& iEvent); 00017 00018 BTagMCTools::JetFlavour identifyBasedOnPartons( const reco::Jet & jet ) const; 00019 const std::vector<MCParton> & getListOfPartons() const { return m_partons; } 00020 00021 private: 00022 void fillInfo( const HepMC::GenEvent * generated_event ); 00023 00024 BTagMCTools::JetFlavour basicIdentityBasedOnPartons(const math::XYZTLorentzVector & jet4Vec, const double coneSize) const; 00025 00026 void fillAlgorithmicDefinition(BTagMCTools::JetFlavour & jetFlavour) const; 00027 void fillPhysicsDefinition(BTagMCTools::JetFlavour & jetFlavour, const math::XYZTLorentzVector & jet4Vec) const; 00028 00029 double coneSizeToAssociate; 00030 00031 bool fillPartons; 00032 bool fillHeavyHadrons; 00033 bool fillLeptons; 00034 bool physDefinition; 00035 bool rejectBCSplitting; 00036 std::vector<MCParton> m_partons; 00037 bool vetoB, vetoC, vetoL, vetoG; 00038 std::string moduleLabel; 00039 HepMC::GenEvent * generated_event; 00040 }; 00041 00042 #endif