![]() |
![]() |
00001 // 00002 // Original Author: Fedor Ratnikov Dec 27, 2006 00003 // $Id: JetCorrector.cc,v 1.7 2009/11/24 13:25:29 bainbrid Exp $ 00004 // 00005 // Generic interface for JetCorrection services 00006 // 00007 00008 #include "JetMETCorrections/Objects/interface/JetCorrector.h" 00009 00010 #include "FWCore/Framework/interface/EventSetup.h" 00011 #include "JetMETCorrections/Objects/interface/JetCorrectionsRecord.h" 00012 #include "FWCore/Framework/interface/ESHandle.h" 00013 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00014 00015 double JetCorrector::correction (const reco::Jet& fJet, 00016 const edm::RefToBase<reco::Jet>& fJetRef, 00017 const edm::Event& fEvent, 00018 const edm::EventSetup& fSetup) const { 00019 if (eventRequired ()) { 00020 edm::LogError ("Missing Jet Correction Method") 00021 << "Undefined Jet Correction method requiring event data is called" << std::endl; 00022 return 0; 00023 } 00024 return correction (fJet); 00025 } 00026 00027 double JetCorrector::correction (const reco::Jet& fJet, 00028 const edm::RefToBase<reco::Jet>& fJetRef, 00029 const edm::Event& fEvent, 00030 const edm::EventSetup& fSetup, 00031 LorentzVector& corrected ) const { 00032 if ( vectorialCorrection() ) { 00033 edm::LogError ("Missing Jet Correction Method") 00034 << "Undefined Jet (vectorial) correction method requiring event data is called" << std::endl; 00035 return 0; 00036 } 00037 return correction (fJet); 00038 } 00039 00040 const JetCorrector* JetCorrector::getJetCorrector (const std::string& fName, const edm::EventSetup& fSetup) { 00041 const JetCorrectionsRecord& record = fSetup.get <JetCorrectionsRecord> (); 00042 edm::ESHandle <JetCorrector> handle; 00043 record.get (fName, handle); 00044 return &*handle; 00045 }