Go to the documentation of this file.00001
00002
00003
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
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
00054 edm::Handle<CaloJetCollection> jets;
00055 fEvent.getByLabel (mInput, jets);
00056
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) {
00061 std::cout << ": use gJ corrections" << std::endl;
00062 corrector = gJetCorrector;
00063 }
00064 else if (ijet%4 == 1) {
00065 std::cout << ": use qJ corrections" << std::endl;
00066 corrector = qJetCorrector;
00067 }
00068 else if (ijet%4 == 2) {
00069 std::cout << ": use bJ corrections" << std::endl;
00070 corrector = bJetCorrector;
00071 }
00072 else {
00073 std::cout << ": use bT corrections" << std::endl;
00074 corrector = bTopCorrector;
00075 }
00076
00077 double correction = corrector->correction (jet);
00078
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