Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:33:08

0001 // -*- C++ -*-
0002 //
0003 // Package:    Validation/RecoMET
0004 // Class:      METTesterPostProcessorHarvesting
0005 //
0006 // Original Author:  "Matthias Weber"
0007 //         Created:  Sun Feb 22 14:35:25 CET 2015
0008 //
0009 
0010 #include "FWCore/Framework/interface/LuminosityBlock.h"
0011 #include "FWCore/Framework/interface/Run.h"
0012 #include "Validation/RecoMET/plugins/METTesterPostProcessorHarvesting.h"
0013 
0014 // Some switches
0015 //
0016 // constructors and destructor
0017 //
0018 METTesterPostProcessorHarvesting::METTesterPostProcessorHarvesting(const edm::ParameterSet &iConfig) {
0019   inputMETLabelRECO_ = iConfig.getParameter<edm::InputTag>("METTypeRECO");
0020   inputMETLabelMiniAOD_ = iConfig.getParameter<edm::InputTag>("METTypeMiniAOD");
0021 }
0022 
0023 METTesterPostProcessorHarvesting::~METTesterPostProcessorHarvesting() {}
0024 
0025 // ------------ method called right after a run ends ------------
0026 void METTesterPostProcessorHarvesting::dqmEndJob(DQMStore::IBooker &ibook_, DQMStore::IGetter &iget_) {
0027   std::vector<std::string> subDirVec;
0028   std::string RunDir = "JetMET/METValidation/";
0029   iget_.setCurrentFolder(RunDir);
0030   met_dirs = iget_.getSubdirs();
0031   bool found_reco_dir = false;
0032   bool found_miniaod_dir = false;
0033   // loop over met subdirectories
0034   for (int i = 0; i < int(met_dirs.size()); i++) {
0035     if (met_dirs[i] == (RunDir + inputMETLabelRECO_.label())) {
0036       found_reco_dir = true;
0037     }
0038     if (met_dirs[i] == (RunDir + inputMETLabelMiniAOD_.label())) {
0039       found_miniaod_dir = true;
0040     }
0041   }
0042   if (found_miniaod_dir && found_reco_dir) {
0043     std::string rundir_reco = RunDir + inputMETLabelRECO_.label();
0044     std::string rundir_miniaod = RunDir + inputMETLabelMiniAOD_.label();
0045     MonitorElement *mMET_Reco = iget_.get(rundir_reco + "/" + "MET");
0046     MonitorElement *mMETPhi_Reco = iget_.get(rundir_reco + "/" + "METPhi");
0047     MonitorElement *mSumET_Reco = iget_.get(rundir_reco + "/" + "SumET");
0048     MonitorElement *mMETDifference_GenMETTrue_Reco = iget_.get(rundir_reco + "/" + "METDifference_GenMETTrue");
0049     MonitorElement *mMETDeltaPhi_GenMETTrue_Reco = iget_.get(rundir_reco + "/" + "METDeltaPhi_GenMETTrue");
0050     MonitorElement *mPFPhotonEtFraction_Reco = iget_.get(rundir_reco + "/" + "photonEtFraction");
0051     MonitorElement *mPFNeutralHadronEtFraction_Reco = iget_.get(rundir_reco + "/" + "neutralHadronEtFraction");
0052     MonitorElement *mPFChargedHadronEtFraction_Reco = iget_.get(rundir_reco + "/" + "chargedHadronEtFraction");
0053     MonitorElement *mPFHFHadronEtFraction_Reco = iget_.get(rundir_reco + "/" + "HFHadronEtFraction");
0054     MonitorElement *mPFHFEMEtFraction_Reco = iget_.get(rundir_reco + "/" + "HFEMEtFraction");
0055     MonitorElement *mMETDifference_GenMETTrue_MET20to40_Reco =
0056         iget_.get(rundir_reco + "/" + "METResolution_GenMETTrue_MET20to40");
0057     MonitorElement *mMETDifference_GenMETTrue_MET100to150_Reco =
0058         iget_.get(rundir_reco + "/" + "METResolution_GenMETTrue_MET100to150");
0059     MonitorElement *mMETDifference_GenMETTrue_MET300to400_Reco =
0060         iget_.get(rundir_reco + "/" + "METResolution_GenMETTrue_MET300to400");
0061 
0062     std::vector<MonitorElement *> ME_Reco;
0063     ME_Reco.push_back(mMET_Reco);
0064     ME_Reco.push_back(mMETPhi_Reco);
0065     ME_Reco.push_back(mSumET_Reco);
0066     ME_Reco.push_back(mMETDifference_GenMETTrue_Reco);
0067     ME_Reco.push_back(mMETDeltaPhi_GenMETTrue_Reco);
0068     ME_Reco.push_back(mPFPhotonEtFraction_Reco);
0069     ME_Reco.push_back(mPFNeutralHadronEtFraction_Reco);
0070     ME_Reco.push_back(mPFChargedHadronEtFraction_Reco);
0071     ME_Reco.push_back(mPFHFHadronEtFraction_Reco);
0072     ME_Reco.push_back(mPFHFEMEtFraction_Reco);
0073     ME_Reco.push_back(mMETDifference_GenMETTrue_MET20to40_Reco);
0074     ME_Reco.push_back(mMETDifference_GenMETTrue_MET100to150_Reco);
0075     ME_Reco.push_back(mMETDifference_GenMETTrue_MET300to400_Reco);
0076 
0077     MonitorElement *mMET_MiniAOD = iget_.get(rundir_miniaod + "/" + "MET");
0078     MonitorElement *mMETPhi_MiniAOD = iget_.get(rundir_miniaod + "/" + "METPhi");
0079     MonitorElement *mSumET_MiniAOD = iget_.get(rundir_miniaod + "/" + "SumET");
0080     MonitorElement *mMETDifference_GenMETTrue_MiniAOD = iget_.get(rundir_miniaod + "/" + "METDifference_GenMETTrue");
0081     MonitorElement *mMETDeltaPhi_GenMETTrue_MiniAOD = iget_.get(rundir_miniaod + "/" + "METDeltaPhi_GenMETTrue");
0082     MonitorElement *mPFPhotonEtFraction_MiniAOD = iget_.get(rundir_miniaod + "/" + "photonEtFraction");
0083     MonitorElement *mPFNeutralHadronEtFraction_MiniAOD = iget_.get(rundir_miniaod + "/" + "neutralHadronEtFraction");
0084     MonitorElement *mPFChargedHadronEtFraction_MiniAOD = iget_.get(rundir_miniaod + "/" + "chargedHadronEtFraction");
0085     MonitorElement *mPFHFHadronEtFraction_MiniAOD = iget_.get(rundir_miniaod + "/" + "HFHadronEtFraction");
0086     MonitorElement *mPFHFEMEtFraction_MiniAOD = iget_.get(rundir_miniaod + "/" + "HFEMEtFraction");
0087     MonitorElement *mMETDifference_GenMETTrue_MET20to40_MiniAOD =
0088         iget_.get(rundir_miniaod + "/" + "METResolution_GenMETTrue_MET20to40");
0089     MonitorElement *mMETDifference_GenMETTrue_MET100to150_MiniAOD =
0090         iget_.get(rundir_miniaod + "/" + "METResolution_GenMETTrue_MET100to150");
0091     MonitorElement *mMETDifference_GenMETTrue_MET300to400_MiniAOD =
0092         iget_.get(rundir_miniaod + "/" + "METResolution_GenMETTrue_MET300to400");
0093 
0094     std::vector<MonitorElement *> ME_MiniAOD;
0095     ME_MiniAOD.push_back(mMET_MiniAOD);
0096     ME_MiniAOD.push_back(mMETPhi_MiniAOD);
0097     ME_MiniAOD.push_back(mSumET_MiniAOD);
0098     ME_MiniAOD.push_back(mMETDifference_GenMETTrue_MiniAOD);
0099     ME_MiniAOD.push_back(mMETDeltaPhi_GenMETTrue_MiniAOD);
0100     ME_MiniAOD.push_back(mPFPhotonEtFraction_MiniAOD);
0101     ME_MiniAOD.push_back(mPFNeutralHadronEtFraction_MiniAOD);
0102     ME_MiniAOD.push_back(mPFChargedHadronEtFraction_MiniAOD);
0103     ME_MiniAOD.push_back(mPFHFHadronEtFraction_MiniAOD);
0104     ME_MiniAOD.push_back(mPFHFEMEtFraction_MiniAOD);
0105     ME_MiniAOD.push_back(mMETDifference_GenMETTrue_MET20to40_MiniAOD);
0106     ME_MiniAOD.push_back(mMETDifference_GenMETTrue_MET100to150_MiniAOD);
0107     ME_MiniAOD.push_back(mMETDifference_GenMETTrue_MET300to400_MiniAOD);
0108 
0109     ibook_.setCurrentFolder(RunDir + "MiniAOD_over_RECO");
0110     mMET_MiniAOD_over_Reco = ibook_.book1D("MET_MiniAOD_over_RECO", (TH1F *)mMET_Reco->getRootObject());
0111     mMETPhi_MiniAOD_over_Reco = ibook_.book1D("METPhi_MiniAOD_over_RECO", (TH1F *)mMETPhi_Reco->getRootObject());
0112     mSumET_MiniAOD_over_Reco = ibook_.book1D("SumET_MiniAOD_over_RECO", (TH1F *)mSumET_Reco->getRootObject());
0113     mMETDifference_GenMETTrue_MiniAOD_over_Reco = ibook_.book1D(
0114         "METDifference_GenMETTrue_MiniAOD_over_RECO", (TH1F *)mMETDifference_GenMETTrue_Reco->getRootObject());
0115     mMETDeltaPhi_GenMETTrue_MiniAOD_over_Reco = ibook_.book1D("METDeltaPhi_GenMETTrue_MiniAOD_over_RECO",
0116                                                               (TH1F *)mMETDeltaPhi_GenMETTrue_Reco->getRootObject());
0117     mPFPhotonEtFraction_MiniAOD_over_Reco =
0118         ibook_.book1D("photonEtFraction_MiniAOD_over_RECO", (TH1F *)mPFPhotonEtFraction_Reco->getRootObject());
0119     mPFNeutralHadronEtFraction_MiniAOD_over_Reco = ibook_.book1D(
0120         "neutralHadronEtFraction_MiniAOD_over_RECO", (TH1F *)mPFNeutralHadronEtFraction_Reco->getRootObject());
0121     mPFChargedHadronEtFraction_MiniAOD_over_Reco = ibook_.book1D(
0122         "chargedHadronEtFraction_MiniAOD_over_RECO", (TH1F *)mPFChargedHadronEtFraction_Reco->getRootObject());
0123     mPFHFHadronEtFraction_MiniAOD_over_Reco =
0124         ibook_.book1D("HFHadronEtFraction_MiniAOD_over_RECO", (TH1F *)mPFHFHadronEtFraction_Reco->getRootObject());
0125     mPFHFEMEtFraction_MiniAOD_over_Reco =
0126         ibook_.book1D("HFEMEtEtFraction_MiniAOD_over_RECO", (TH1F *)mPFHFEMEtFraction_Reco->getRootObject());
0127     mMETDifference_GenMETTrue_MET20to40_MiniAOD_over_Reco =
0128         ibook_.book1D("METResolution_GenMETTrue_MET20to40_MiniAOD_over_RECO",
0129                       (TH1F *)mMETDifference_GenMETTrue_MET20to40_Reco->getRootObject());
0130     mMETDifference_GenMETTrue_MET100to150_MiniAOD_over_Reco =
0131         ibook_.book1D("METResolution_GenMETTrue_MET100to150_MiniAOD_over_RECO",
0132                       (TH1F *)mMETDifference_GenMETTrue_MET100to150_Reco->getRootObject());
0133     mMETDifference_GenMETTrue_MET300to400_MiniAOD_over_Reco =
0134         ibook_.book1D("METResolution_GenMETTrue_MET300to400_MiniAOD_over_RECO",
0135                       (TH1F *)mMETDifference_GenMETTrue_MET300to400_Reco->getRootObject());
0136 
0137     std::vector<MonitorElement *> ME_MiniAOD_over_Reco;
0138     ME_MiniAOD_over_Reco.push_back(mMET_MiniAOD_over_Reco);
0139     ME_MiniAOD_over_Reco.push_back(mMETPhi_MiniAOD_over_Reco);
0140     ME_MiniAOD_over_Reco.push_back(mSumET_MiniAOD_over_Reco);
0141     ME_MiniAOD_over_Reco.push_back(mMETDifference_GenMETTrue_MiniAOD_over_Reco);
0142     ME_MiniAOD_over_Reco.push_back(mMETDeltaPhi_GenMETTrue_MiniAOD_over_Reco);
0143     ME_MiniAOD_over_Reco.push_back(mPFPhotonEtFraction_MiniAOD_over_Reco);
0144     ME_MiniAOD_over_Reco.push_back(mPFNeutralHadronEtFraction_MiniAOD_over_Reco);
0145     ME_MiniAOD_over_Reco.push_back(mPFChargedHadronEtFraction_MiniAOD_over_Reco);
0146     ME_MiniAOD_over_Reco.push_back(mPFHFHadronEtFraction_MiniAOD_over_Reco);
0147     ME_MiniAOD_over_Reco.push_back(mPFHFEMEtFraction_MiniAOD_over_Reco);
0148     ME_MiniAOD_over_Reco.push_back(mMETDifference_GenMETTrue_MET20to40_MiniAOD_over_Reco);
0149     ME_MiniAOD_over_Reco.push_back(mMETDifference_GenMETTrue_MET100to150_MiniAOD_over_Reco);
0150     ME_MiniAOD_over_Reco.push_back(mMETDifference_GenMETTrue_MET300to400_MiniAOD_over_Reco);
0151 
0152     for (unsigned int j = 0; j < ME_MiniAOD_over_Reco.size(); j++) {
0153       MonitorElement *monReco = ME_Reco[j];
0154       if (monReco && monReco->getRootObject()) {
0155         MonitorElement *monMiniAOD = ME_MiniAOD[j];
0156         if (monMiniAOD && monMiniAOD->getRootObject()) {
0157           MonitorElement *monMiniAOD_over_RECO = ME_MiniAOD_over_Reco[j];
0158           if (monMiniAOD_over_RECO && monMiniAOD_over_RECO->getRootObject()) {
0159             for (int i = 0; i <= (monMiniAOD_over_RECO->getNbinsX() + 1); i++) {
0160               if (monReco->getBinContent(i) != 0) {
0161                 monMiniAOD_over_RECO->setBinContent(i, monMiniAOD->getBinContent(i) / monReco->getBinContent(i));
0162               } else if (monMiniAOD->getBinContent(i) != 0) {
0163                 monMiniAOD_over_RECO->setBinContent(i, -0.5);
0164               }
0165             }
0166           }
0167         }
0168       }
0169     }
0170   }
0171 }