File indexing completed on 2023-03-17 11:28:32
0001
0002
0003
0004
0005
0006
0007
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
0015
0016
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
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
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 }