![]() |
![]() |
00001 #ifndef CorrectJet_H 00002 #define CorrectJet_H 00003 00004 #include <string> 00005 00006 #include "FWCore/Framework/interface/EventSetup.h" 00007 #include "DataFormats/JetReco/interface/Jet.h" 00008 #include "JetMETCorrections/Objects/interface/JetCorrector.h" 00009 00016 class CorrectJet { 00017 00018 public: 00019 CorrectJet() {} 00020 CorrectJet(const std::string &corrector) : 00021 m_corrector(0), m_correctorName(corrector) {} 00022 00023 void setEventSetup(const edm::EventSetup & es) 00024 { 00025 if (!m_correctorName.empty()) 00026 m_corrector = JetCorrector::getJetCorrector(m_correctorName, es); 00027 else 00028 m_corrector = 0; 00029 } 00030 00032 reco::Jet operator() (const reco::Jet & jet) const 00033 { 00034 reco::Jet correctedJet(jet.p4(), jet.vertex()); 00035 if (m_corrector) 00036 correctedJet.scaleEnergy(m_corrector->correction(jet)); 00037 return correctedJet; 00038 } 00039 00040 private: 00041 const JetCorrector *m_corrector; 00042 std::string m_correctorName; 00043 }; 00044 00045 #endif