CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/JetMETCorrections/Objects/src/JetCorrector.cc

Go to the documentation of this file.
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 }