![]() |
![]() |
00001 // 00002 // Original Author: Fedor Ratnikov Dec 27, 2006 00003 // $Id: JetCorrector.h,v 1.7 2009/11/24 13:25:29 bainbrid Exp $ 00004 // 00005 // Generic interface for JetCorrection services 00006 // 00007 #ifndef JetCorrector_h 00008 #define JetCorrector_h 00009 00010 #include <string> 00011 #include "DataFormats/Common/interface/RefToBase.h" 00012 #include "DataFormats/JetReco/interface/Jet.h" 00013 00015 namespace edm { 00016 class Event; 00017 class EventSetup; 00018 } 00019 00020 class JetCorrector 00021 { 00022 public: 00023 00024 typedef reco::Particle::LorentzVector LorentzVector; 00025 00026 JetCorrector (){}; 00027 virtual ~JetCorrector (){}; 00028 00030 virtual double correction (const LorentzVector& fJet) const = 0; 00031 00033 virtual double correction (const reco::Jet& fJet) const = 0; 00034 00036 virtual double correction (const reco::Jet& fJet, 00037 const edm::RefToBase<reco::Jet>& fJetRef, 00038 const edm::Event& fEvent, 00039 const edm::EventSetup& fSetup) const; 00040 00042 virtual double correction ( const reco::Jet& fJet, 00043 const edm::RefToBase<reco::Jet>& fJetRef, 00044 const edm::Event& fEvent, 00045 const edm::EventSetup& fSetup, 00046 LorentzVector& corrected ) const; 00047 00049 virtual bool eventRequired () const = 0; 00050 00052 inline virtual bool vectorialCorrection () const; 00053 00055 static const JetCorrector* getJetCorrector (const std::string& fName, const edm::EventSetup& fSetup); 00056 }; 00057 00058 // inline method 00059 inline bool JetCorrector::vectorialCorrection () const { return false; } 00060 00061 #endif