CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/RecoJets/JetAnalyzers/src/PartonJetCorrectionExample.cc

Go to the documentation of this file.
00001 /* Example analizer to use L7 flavor JetCorrector services
00002    Applies different parton corrections randomly
00003    original from F.Ratnikov (UMd)  Nov 16, 2007 - Adapted deom A.Santocchia Mar 01, 2008
00004 */
00005 
00006 #include <string>
00007 
00008 #include "FWCore/Framework/interface/EDAnalyzer.h"
00009 #include "FWCore/Utilities/interface/InputTag.h"
00010 
00011 class PartonJetCorrectionExample : public edm::EDAnalyzer {
00012  public:
00013   explicit PartonJetCorrectionExample (const edm::ParameterSet& fParameters);
00014   virtual ~PartonJetCorrectionExample () {}
00015   virtual void analyze(const edm::Event&, const edm::EventSetup&);
00016  private:
00017   edm::InputTag mInput;
00018   std::string m_gJ_CorrectorName;
00019   std::string m_qJ_CorrectorName;
00020   std::string m_bJ_CorrectorName;
00021   std::string m_bT_CorrectorName;
00022 };
00023 
00024 
00025 
00026 
00027 #include "FWCore/Framework/interface/Event.h"
00028 #include "DataFormats/Common/interface/Handle.h"
00029 #include "FWCore/Framework/interface/EventSetup.h"
00030 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00031 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
00032 #include "JetMETCorrections/Objects/interface/JetCorrector.h"
00033 
00034 using namespace std;
00035 using namespace reco;
00036 
00037 PartonJetCorrectionExample::PartonJetCorrectionExample (const edm::ParameterSet& fConfig) 
00038   : mInput (fConfig.getParameter <edm::InputTag> ("src")),
00039     m_gJ_CorrectorName (fConfig.getParameter <std::string> ("gJetCorrector")),
00040     m_qJ_CorrectorName (fConfig.getParameter <std::string> ("qJetCorrector")),
00041     m_bJ_CorrectorName (fConfig.getParameter <std::string> ("bJetCorrector")),
00042     m_bT_CorrectorName (fConfig.getParameter <std::string> ("bTopCorrector"))
00043 {}
00044 
00045 void PartonJetCorrectionExample::analyze(const edm::Event& fEvent, const edm::EventSetup& fSetup) {
00046   // get all correctors
00047   const JetCorrector* gJetCorrector = JetCorrector::getJetCorrector (m_gJ_CorrectorName, fSetup);
00048   const JetCorrector* qJetCorrector = JetCorrector::getJetCorrector (m_qJ_CorrectorName, fSetup);
00049   const JetCorrector* bJetCorrector = JetCorrector::getJetCorrector (m_bJ_CorrectorName, fSetup);
00050   const JetCorrector* bTopCorrector = JetCorrector::getJetCorrector (m_bT_CorrectorName, fSetup);
00051   const JetCorrector* corrector = 0;
00052   
00053   // get input jets (supposed to be MC corrected already)
00054   edm::Handle<CaloJetCollection> jets;                    
00055   fEvent.getByLabel (mInput, jets);
00056   // loop over jets                      
00057   for (unsigned ijet = 0; ijet < jets->size(); ++ijet) {
00058     const CaloJet& jet = (*jets)[ijet];
00059     std::cout << "PartonJetCorrectionExample::analize-> jet #" << ijet;
00060     if (ijet%4 == 0) { // assume it is gluon from diJet
00061       std::cout << ": use gJ corrections" << std::endl;
00062       corrector = gJetCorrector;
00063     }
00064     else if (ijet%4 == 1) { // assume it is light quark from diJet
00065       std::cout << ": use qJ corrections" << std::endl;
00066       corrector = qJetCorrector;
00067     }
00068     else if (ijet%4 == 2) { // assume it is b quark from diJet
00069       std::cout << ": use bJ corrections" << std::endl;
00070       corrector = bJetCorrector;
00071     }
00072     else { // assume it is b quark from ttbar
00073       std::cout << ": use bT corrections" << std::endl;
00074       corrector = bTopCorrector;
00075     }
00076     // get selected correction for the jet
00077     double correction = corrector->correction (jet);
00078     // dump it
00079     std::cout << "  jet pt/eta/phi: " << jet.pt() << '/' <<  jet.eta() << '/' << jet.phi() 
00080               << " -> correction factor: " << correction 
00081               << ", corrected pt: " << jet.pt()*correction
00082               << std::endl;
00083   }
00084 }
00085 
00086 #include "FWCore/Framework/interface/MakerMacros.h"
00087 DEFINE_FWK_MODULE(PartonJetCorrectionExample);
00088 
00089