Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-06-30 04:13:46

0001 /** \class METAnalyzer
0002  *
0003  *  DQM MET analysis monitoring
0004  *
0005  *  \author F. Chlebana - Fermilab
0006  *          K. Hatakeyama - Rockefeller University
0007  *
0008  *          Jan. '14: modified by
0009  *
0010  *          M. Artur Weber
0011  *          R. Schoefbeck
0012  *          V. Sordini
0013  */
0014 
0015 #include "DQMOffline/JetMET/interface/METAnalyzer.h"
0016 #include "DataFormats/Common/interface/Handle.h"
0017 #include "FWCore/Common/interface/TriggerNames.h"
0018 #include "DataFormats/Math/interface/LorentzVector.h"
0019 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0020 
0021 #include "DataFormats/CaloTowers/interface/CaloTowerCollection.h"
0022 #include "DataFormats/CaloTowers/interface/CaloTowerDetId.h"
0023 #include "DataFormats/EcalDetId/interface/EcalSubdetector.h"
0024 #include "DataFormats/HcalDetId/interface/HcalDetId.h"
0025 
0026 #include "DataFormats/Math/interface/LorentzVector.h"
0027 
0028 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetupFwd.h"
0029 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetup.h"
0030 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutRecord.h"
0031 #include <cmath>
0032 #include "TH2F.h"
0033 #include "TH2.h"
0034 
0035 #include <string>
0036 
0037 using namespace edm;
0038 using namespace reco;
0039 using namespace math;
0040 
0041 // ***********************************************************
0042 METAnalyzer::METAnalyzer(const edm::ParameterSet& pSet) {
0043   parameters = pSet;
0044 
0045   m_l1algoname_ = pSet.getParameter<std::string>("l1algoname");
0046   m_bitAlgTechTrig_ = -1;
0047 
0048   miniaodfilterdec = -1;
0049 
0050   LSBegin_ = pSet.getParameter<int>("LSBegin");
0051   LSEnd_ = pSet.getParameter<int>("LSEnd");
0052   // Smallest track pt
0053   ptMinCand_ = pSet.getParameter<double>("ptMinCand");
0054 
0055   MetType_ = parameters.getUntrackedParameter<std::string>("METType");
0056 
0057   triggerResultsLabel_ = parameters.getParameter<edm::InputTag>("TriggerResultsLabel");
0058   triggerResultsToken_ = consumes<edm::TriggerResults>(edm::InputTag(triggerResultsLabel_));
0059 
0060   isCaloMet_ = (std::string("calo") == MetType_);
0061   //isTCMet_ = (std::string("tc") ==MetType_);
0062   isPFMet_ = (std::string("pf") == MetType_);
0063   isMiniAODMet_ = (std::string("miniaod") == MetType_);
0064   if (!isMiniAODMet_) {
0065     jetCorrectorToken_ = consumes<reco::JetCorrector>(pSet.getParameter<edm::InputTag>("JetCorrections"));
0066   }
0067 
0068   // MET information
0069   metCollectionLabel_ = parameters.getParameter<edm::InputTag>("METCollectionLabel");
0070 
0071   if (/*isTCMet_ || */ isCaloMet_) {
0072     inputJetIDValueMap = pSet.getParameter<edm::InputTag>("InputJetIDValueMap");
0073     jetID_ValueMapToken_ = consumes<edm::ValueMap<reco::JetID> >(inputJetIDValueMap);
0074     jetIDFunctorLoose = JetIDSelectionFunctor(JetIDSelectionFunctor::PURE09, JetIDSelectionFunctor::LOOSE);
0075   }
0076 
0077   if (isPFMet_) {
0078     pflowToken_ = consumes<std::vector<reco::PFCandidate> >(pSet.getParameter<edm::InputTag>("srcPFlow"));
0079     pfjetIDFunctorLoose = PFJetIDSelectionFunctor(PFJetIDSelectionFunctor::WINTER16, PFJetIDSelectionFunctor::LOOSE);
0080   }
0081   if (isMiniAODMet_) {
0082     pflowPackedToken_ = consumes<std::vector<pat::PackedCandidate> >(pSet.getParameter<edm::InputTag>("srcPFlow"));
0083     pfjetIDFunctorLoose = PFJetIDSelectionFunctor(PFJetIDSelectionFunctor::WINTER16, PFJetIDSelectionFunctor::LOOSE);
0084   }
0085   MuonsToken_ = consumes<reco::MuonCollection>(pSet.getParameter<edm::InputTag>("muonsrc"));
0086 
0087   ptThreshold_ = parameters.getParameter<double>("ptThreshold");
0088 
0089   if (isPFMet_) {
0090     pfMetToken_ = consumes<reco::PFMETCollection>(edm::InputTag(metCollectionLabel_));
0091   }
0092   if (isCaloMet_) {
0093     caloMetToken_ = consumes<reco::CaloMETCollection>(edm::InputTag(metCollectionLabel_));
0094   }
0095   if (isMiniAODMet_) {
0096     patMetToken_ = consumes<pat::METCollection>(edm::InputTag(metCollectionLabel_));
0097   }
0098   //if(isTCMet_){
0099   // tcMetToken_= consumes<reco::METCollection>(edm::InputTag(metCollectionLabel_));
0100   //}
0101 
0102   fill_met_high_level_histo = parameters.getParameter<bool>("fillMetHighLevel");
0103   fillCandidateMap_histos = parameters.getParameter<bool>("fillCandidateMaps");
0104 
0105   hTriggerLabelsIsSet_ = false;
0106   //jet cleanup parameters
0107   cleaningParameters_ = pSet.getParameter<ParameterSet>("CleaningParameters");
0108 
0109   diagnosticsParameters_ = pSet.getParameter<std::vector<edm::ParameterSet> >("METDiagonisticsParameters");
0110 
0111   edm::ConsumesCollector iC = consumesCollector();
0112   //DCS
0113   DCSFilter_ = new JetMETDQMDCSFilter(parameters.getParameter<ParameterSet>("DCSFilter"), iC);
0114 
0115   //Vertex requirements
0116   bypassAllPVChecks_ = cleaningParameters_.getParameter<bool>("bypassAllPVChecks");
0117   bypassAllDCSChecks_ = cleaningParameters_.getParameter<bool>("bypassAllDCSChecks");
0118   runcosmics_ = parameters.getUntrackedParameter<bool>("runcosmics");
0119   onlyCleaned_ = parameters.getUntrackedParameter<bool>("onlyCleaned");
0120   vertexTag_ = cleaningParameters_.getParameter<edm::InputTag>("vertexCollection");
0121   vertexToken_ = consumes<std::vector<reco::Vertex> >(edm::InputTag(vertexTag_));
0122 
0123   //Trigger parameters
0124   gtTag_ = cleaningParameters_.getParameter<edm::InputTag>("gtLabel");
0125   gtToken_ = consumes<L1GlobalTriggerReadoutRecord>(edm::InputTag(gtTag_));
0126 
0127   // Other data collections
0128   jetCollectionLabel_ = parameters.getParameter<edm::InputTag>("JetCollectionLabel");
0129   if (isCaloMet_)
0130     caloJetsToken_ = consumes<reco::CaloJetCollection>(jetCollectionLabel_);
0131   //if (isTCMet_)   jptJetsToken_ = consumes<reco::JPTJetCollection>(jetCollectionLabel_);
0132   if (isPFMet_)
0133     pfJetsToken_ = consumes<reco::PFJetCollection>(jetCollectionLabel_);
0134   if (isMiniAODMet_)
0135     patJetsToken_ = consumes<pat::JetCollection>(jetCollectionLabel_);
0136 
0137   HBHENoiseStringMiniAOD = parameters.getParameter<std::string>("HBHENoiseLabelMiniAOD");
0138   HBHEIsoNoiseStringMiniAOD = parameters.getParameter<std::string>("HBHEIsoNoiseLabelMiniAOD");
0139 
0140   hbheNoiseFilterResultTag_ = parameters.getParameter<edm::InputTag>("HBHENoiseFilterResultLabel");
0141   hbheNoiseFilterResultToken_ = consumes<bool>(hbheNoiseFilterResultTag_);
0142   hbheNoiseIsoFilterResultTag_ = parameters.getParameter<edm::InputTag>("HBHENoiseIsoFilterResultLabel");
0143   hbheIsoNoiseFilterResultToken_ = consumes<bool>(hbheNoiseIsoFilterResultTag_);
0144   CSCHaloResultTag_ = parameters.getParameter<edm::InputTag>("CSCHaloResultLabel");
0145   CSCHaloResultToken_ = consumes<bool>(CSCHaloResultTag_);
0146   CSCHalo2015ResultTag_ = parameters.getParameter<edm::InputTag>("CSCHalo2015ResultLabel");
0147   CSCHalo2015ResultToken_ = consumes<bool>(CSCHalo2015ResultTag_);
0148   EcalDeadCellTriggerTag_ = parameters.getParameter<edm::InputTag>("EcalDeadCellTriggerPrimitiveFilterLabel");
0149   EcalDeadCellTriggerToken_ = consumes<bool>(EcalDeadCellTriggerTag_);
0150   EcalDeadCellBoundaryTag_ = parameters.getParameter<edm::InputTag>("EcalDeadCellBoundaryEnergyFilterLabel");
0151   EcalDeadCellBoundaryToken_ = consumes<bool>(EcalDeadCellBoundaryTag_);
0152   eeBadScFilterTag_ = parameters.getParameter<edm::InputTag>("eeBadScFilterLabel");
0153   eeBadScFilterToken_ = consumes<bool>(eeBadScFilterTag_);
0154   HcalStripHaloTag_ = parameters.getParameter<edm::InputTag>("HcalStripHaloFilterLabel");
0155   HcalStripHaloToken_ = consumes<bool>(HcalStripHaloTag_);
0156 
0157   if (isMiniAODMet_) {
0158     METFilterMiniAODLabel_ = parameters.getParameter<edm::InputTag>("FilterResultsLabelMiniAOD");
0159     METFilterMiniAODToken_ = consumes<edm::TriggerResults>(METFilterMiniAODLabel_);
0160 
0161     METFilterMiniAODLabel2_ = parameters.getParameter<edm::InputTag>("FilterResultsLabelMiniAOD2");
0162     METFilterMiniAODToken2_ = consumes<edm::TriggerResults>(METFilterMiniAODLabel2_);
0163   }
0164 
0165   //
0166   nbinsPV_ = parameters.getParameter<int>("pVBin");
0167   nPVMin_ = parameters.getParameter<double>("pVMin");
0168   nPVMax_ = parameters.getParameter<double>("pVMax");
0169 
0170   triggerSelectedSubFolders_ = parameters.getParameter<edm::VParameterSet>("triggerSelectedSubFolders");
0171   for (edm::VParameterSet::const_iterator it = triggerSelectedSubFolders_.begin();
0172        it != triggerSelectedSubFolders_.end();
0173        it++) {
0174     triggerFolderEventFlag_.push_back(new GenericTriggerEventFlag(*it, consumesCollector(), *this));
0175     triggerFolderExpr_.push_back(it->getParameter<std::vector<std::string> >("hltPaths"));
0176     triggerFolderLabels_.push_back(it->getParameter<std::string>("label"));
0177   }
0178 
0179   cleaningParameters_ = parameters.getParameter<ParameterSet>("CleaningParameters");
0180 
0181   verbose_ = parameters.getParameter<int>("verbose");
0182 
0183   FolderName_ = parameters.getUntrackedParameter<std::string>("FolderName");
0184 
0185   l1gtTrigMenuToken_ = esConsumes<edm::Transition::BeginRun>();
0186 }
0187 
0188 // ***********************************************************
0189 METAnalyzer::~METAnalyzer() {
0190   for (std::vector<GenericTriggerEventFlag*>::const_iterator it = triggerFolderEventFlag_.begin();
0191        it != triggerFolderEventFlag_.end();
0192        it++) {
0193     delete *it;
0194   }
0195   delete DCSFilter_;
0196 }
0197 
0198 void METAnalyzer::bookHistograms(DQMStore::IBooker& ibooker, edm::Run const& iRun, edm::EventSetup const&) {
0199   std::string DirName = FolderName_ + metCollectionLabel_.label();
0200   ibooker.setCurrentFolder(DirName);
0201   // since this module does things in dqmEndRun, we need to make sure to have
0202   // per-run histograms.
0203   ibooker.setScope(MonitorElementData::Scope::RUN);
0204 
0205   if (!folderNames_.empty()) {
0206     folderNames_.clear();
0207   }
0208   if (runcosmics_) {
0209     folderNames_.push_back("Uncleaned");
0210   } else {
0211     if (!onlyCleaned_) {
0212       folderNames_.push_back("Uncleaned");
0213     }
0214     folderNames_.push_back("Cleaned");
0215     folderNames_.push_back("DiJet");
0216     if (!isMiniAODMet_) {
0217       folderNames_.push_back("ZJets");
0218     }
0219   }
0220   for (std::vector<std::string>::const_iterator ic = folderNames_.begin(); ic != folderNames_.end(); ic++) {
0221     bookMESet(DirName + "/" + *ic, ibooker, map_dijet_MEs);
0222   }
0223 }
0224 
0225 // ***********************************************************
0226 void METAnalyzer::bookMESet(std::string DirName,
0227                             DQMStore::IBooker& ibooker,
0228                             std::map<std::string, MonitorElement*>& map_of_MEs) {
0229   bool bLumiSecPlot = fill_met_high_level_histo;
0230   //bool inTriggerPathPlots=false;
0231   bool fillPFCandidatePlots = false;
0232   bool fillZPlots = false;
0233 
0234   if (DirName.find("Cleaned") != std::string::npos) {
0235     fillPFCandidatePlots = true;
0236     bookMonitorElement(DirName, ibooker, map_of_MEs, bLumiSecPlot, fillPFCandidatePlots, fillZPlots);
0237     //for (unsigned int i = 0; i<triggerFolderEventFlag_.size(); i++) {
0238     //fillPFCandidatePlots=false;
0239     //if (triggerFolderEventFlag_[i]->on()) {
0240     //bookMonitorElement(DirName+"/"+triggerFolderLabels_[i],ibooker,map_of_MEs,bLumiSecPlot,fillPFCandidatePlots,fillZPlots);
0241     //}
0242     //}
0243   } else if (DirName.find("ZJets") != std::string::npos) {
0244     fillPFCandidatePlots = false;
0245     fillZPlots = true;
0246     bookMonitorElement(DirName, ibooker, map_of_MEs, bLumiSecPlot, fillPFCandidatePlots, fillZPlots);
0247   } else {
0248     bookMonitorElement(DirName, ibooker, map_of_MEs, bLumiSecPlot, fillPFCandidatePlots, fillZPlots);
0249   }
0250 }
0251 
0252 // ***********************************************************
0253 void METAnalyzer::bookMonitorElement(std::string DirName,
0254                                      DQMStore::IBooker& ibooker,
0255                                      std::map<std::string, MonitorElement*>& map_of_MEs,
0256                                      bool bLumiSecPlot = false,
0257                                      bool fillPFCandPlots = false,
0258                                      bool fillZPlots = false) {
0259   if (verbose_)
0260     std::cout << "bookMonitorElement " << DirName << std::endl;
0261 
0262   ibooker.setCurrentFolder(DirName);
0263   if (fillZPlots) {
0264     if (isCaloMet_) {
0265       meZJets_u_par = ibooker.book1D("u_parallel_Z_inc", "u_parallel_Z_inc", 50, -1000., 75);
0266     } else {
0267       meZJets_u_par = ibooker.book1D("u_parallel_Z_inc", "u_parallel_Z_inc", 50, -800., 75);
0268     }
0269     meZJets_u_par_ZPt_0_15 = ibooker.book1D("u_parallel_ZPt_0_15", "u_parallel_ZPt_0_15", 50, -100, 75);
0270     meZJets_u_par_ZPt_15_30 = ibooker.book1D("u_parallel_ZPt_15_30", "u_parallel_ZPt_15_30", 50, -100, 50);
0271     meZJets_u_par_ZPt_30_55 = ibooker.book1D("u_parallel_ZPt_30_55", "u_parallel_ZPt_30_55", 50, -175, 50);
0272     meZJets_u_par_ZPt_55_75 = ibooker.book1D("u_parallel_ZPt_55_75", "u_parallel_ZPt_55_75", 50, -175, 0);
0273     meZJets_u_par_ZPt_75_150 = ibooker.book1D("u_parallel_ZPt_75_150", "u_parallel_ZPt_75_150", 50, -300, 0);
0274     if (isCaloMet_) {
0275       meZJets_u_par_ZPt_150_290 = ibooker.book1D("u_parallel_ZPt_150_290", "u_parallel_ZPt_150_290", 50, -750, -100);
0276     } else {
0277       meZJets_u_par_ZPt_150_290 = ibooker.book1D("u_parallel_ZPt_150_290", "u_parallel_ZPt_150_290", 50, -450, -50);
0278     }
0279     if (isCaloMet_) {
0280       meZJets_u_par_ZPt_290 = ibooker.book1D("u_parallel_ZPt_290", "u_parallel_ZPt_290", 50, -1000., -350.);
0281     } else {
0282       meZJets_u_par_ZPt_290 = ibooker.book1D("u_parallel_ZPt_290", "u_parallel_ZPt_290", 50, -750., -150.);
0283     }
0284     meZJets_u_perp = ibooker.book1D("u_perp_Z_inc", "u_perp_Z_inc", 50, -85., 85.);
0285     meZJets_u_perp_ZPt_0_15 = ibooker.book1D("u_perp_ZPt_0_15", "u_perp_ZPt_0_15", 50, -85., 85.);
0286     meZJets_u_perp_ZPt_15_30 = ibooker.book1D("u_perp_ZPt_15_30", "u_perp_ZPt_15_30", 50, -85., 85.);
0287     meZJets_u_perp_ZPt_30_55 = ibooker.book1D("u_perp_ZPt_30_55", "u_perp_ZPt_30_55", 50, -85., 85.);
0288     meZJets_u_perp_ZPt_55_75 = ibooker.book1D("u_perp_ZPt_55_75", "u_perp_ZPt_55_75", 50, -85., 85.);
0289     meZJets_u_perp_ZPt_75_150 = ibooker.book1D("u_perp_ZPt_75_150", "u_perp_ZPt_75_150", 50, -85., 85.);
0290     meZJets_u_perp_ZPt_150_290 = ibooker.book1D("u_perp_ZPt_150_290", "u_perp_ZPt_150_290", 50, -85., 85.);
0291     meZJets_u_perp_ZPt_290 = ibooker.book1D("u_perp_ZPt_290", "u_perp_ZPt_290", 50, -85., 85.);
0292 
0293     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "u_parallel_Z_inc", meZJets_u_par));
0294     map_of_MEs.insert(
0295         std::pair<std::string, MonitorElement*>(DirName + "/" + "u_parallel_ZPt_0_15", meZJets_u_par_ZPt_0_15));
0296     map_of_MEs.insert(
0297         std::pair<std::string, MonitorElement*>(DirName + "/" + "u_parallel_ZPt_15_30", meZJets_u_par_ZPt_15_30));
0298     map_of_MEs.insert(
0299         std::pair<std::string, MonitorElement*>(DirName + "/" + "u_parallel_ZPt_30_55", meZJets_u_par_ZPt_30_55));
0300     map_of_MEs.insert(
0301         std::pair<std::string, MonitorElement*>(DirName + "/" + "u_parallel_ZPt_55_75", meZJets_u_par_ZPt_55_75));
0302     map_of_MEs.insert(
0303         std::pair<std::string, MonitorElement*>(DirName + "/" + "u_parallel_ZPt_75_150", meZJets_u_par_ZPt_75_150));
0304     map_of_MEs.insert(
0305         std::pair<std::string, MonitorElement*>(DirName + "/" + "u_parallel_ZPt_150_290", meZJets_u_par_ZPt_150_290));
0306     map_of_MEs.insert(
0307         std::pair<std::string, MonitorElement*>(DirName + "/" + "u_parallel_ZPt_290", meZJets_u_par_ZPt_290));
0308 
0309     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "u_perp_Z_inc", meZJets_u_perp));
0310     map_of_MEs.insert(
0311         std::pair<std::string, MonitorElement*>(DirName + "/" + "u_perp_ZPt_0_15", meZJets_u_perp_ZPt_0_15));
0312     map_of_MEs.insert(
0313         std::pair<std::string, MonitorElement*>(DirName + "/" + "u_perp_ZPt_15_30", meZJets_u_perp_ZPt_15_30));
0314     map_of_MEs.insert(
0315         std::pair<std::string, MonitorElement*>(DirName + "/" + "u_perp_ZPt_30_55", meZJets_u_perp_ZPt_30_55));
0316     map_of_MEs.insert(
0317         std::pair<std::string, MonitorElement*>(DirName + "/" + "u_perp_ZPt_55_75", meZJets_u_perp_ZPt_55_75));
0318     map_of_MEs.insert(
0319         std::pair<std::string, MonitorElement*>(DirName + "/" + "u_perp_ZPt_75_150", meZJets_u_perp_ZPt_75_150));
0320     map_of_MEs.insert(
0321         std::pair<std::string, MonitorElement*>(DirName + "/" + "u_perp_ZPt_150_290", meZJets_u_perp_ZPt_150_290));
0322     map_of_MEs.insert(
0323         std::pair<std::string, MonitorElement*>(DirName + "/" + "u_perp_ZPt_290", meZJets_u_perp_ZPt_290));
0324   }
0325 
0326   if (!fillZPlots) {
0327     hTrigger = ibooker.book1D("triggerResults", "triggerResults", 500, 0, 500);
0328     for (unsigned int i = 0; i < allTriggerNames_.size(); i++) {
0329       if (i < (unsigned int)hTrigger->getNbinsX()) {
0330         if (!hTriggerLabelsIsSet_) {
0331           hTrigger->setBinLabel(i + 1, allTriggerNames_[i]);
0332         }
0333       }
0334     }
0335     hTriggerLabelsIsSet_ = true;
0336 
0337     hMEx = ibooker.book1D("MEx", "MEx", 200, -500, 500);
0338     hMEy = ibooker.book1D("MEy", "MEy", 200, -500, 500);
0339     hMET = ibooker.book1D("MET", "MET", 200, 0, 1000);
0340     hMET_2 = ibooker.book1D("MET_2", "MET Range 2", 200, 0, 2000);
0341     hSumET = ibooker.book1D("SumET", "SumET", 400, 0, 4000);
0342 
0343     {
0344       auto scope = DQMStore::IBooker::UseLumiScope(ibooker);
0345       hMETSig = ibooker.book1D("METSig", "METSig", 51, 0, 51);
0346     }
0347 
0348     hMETPhi = ibooker.book1D("METPhi", "METPhi", 60, -M_PI, M_PI);
0349     hMET_logx = ibooker.book1D("MET_logx", "MET_logx", 40, -1, 9);
0350     hSumET_logx = ibooker.book1D("SumET_logx", "SumET_logx", 40, -1, 9);
0351 
0352     hMEx->setAxisTitle("MEx [GeV]", 1);
0353     hMEy->setAxisTitle("MEy [GeV]", 1);
0354     hMET->setAxisTitle("MET [GeV]", 1);
0355     hMET_2->setAxisTitle("MET [GeV]", 1);
0356     hSumET->setAxisTitle("SumET [GeV]", 1);
0357     hMETSig->setAxisTitle("METSig", 1);
0358     hMETPhi->setAxisTitle("METPhi [rad]", 1);
0359     hMET_logx->setAxisTitle("log(MET) [GeV]", 1);
0360     hSumET_logx->setAxisTitle("log(SumET) [GeV]", 1);
0361 
0362     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "triggerResults", hTrigger));
0363     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "MEx", hMEx));
0364     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "MEy", hMEy));
0365     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "MET", hMET));
0366     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "MET_2", hMET_2));
0367     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "SumET", hSumET));
0368     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METSig", hMETSig));
0369     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhi", hMETPhi));
0370     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "MET_logx", hMET_logx));
0371     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "SumET_logx", hSumET_logx));
0372 
0373     hMET_HBHENoiseFilter = ibooker.book1D("MET_HBHENoiseFilter", "MET_HBHENoiseFiltered", 200, 0, 1000);
0374     hMET_CSCTightHaloFilter = ibooker.book1D("MET_CSCTightHaloFilter", "MET_CSCTightHaloFiltered", 200, 0, 1000);
0375     hMET_eeBadScFilter = ibooker.book1D("MET_eeBadScFilter", "MET_eeBadScFiltered", 200, 0, 1000);
0376     hMET_HBHEIsoNoiseFilter = ibooker.book1D("MET_HBHEIsoNoiseFilter", "MET_HBHEIsoNoiseFiltered", 200, 0, 1000);
0377     hMET_CSCTightHalo2015Filter =
0378         ibooker.book1D("MET_CSCTightHalo2015Filter", "MET_CSCTightHalo2015Filtered", 200, 0, 1000);
0379     hMET_EcalDeadCellTriggerFilter =
0380         ibooker.book1D("MET_EcalDeadCellTriggerFilter", "MET_EcalDeadCellTriggerFiltered", 200, 0, 1000);
0381     hMET_EcalDeadCellBoundaryFilter =
0382         ibooker.book1D("MET_EcalDeadCellBoundaryFilter", "MET_EcalDeadCellBoundaryFiltered", 200, 0, 1000);
0383     hMET_HcalStripHaloFilter = ibooker.book1D("MET_HcalStripHaloFilter", "MET_HcalStripHaloFiltered", 200, 0, 1000);
0384 
0385     map_of_MEs.insert(
0386         std::pair<std::string, MonitorElement*>(DirName + "/" + "MET_HBHENoiseFilter", hMET_HBHENoiseFilter));
0387     map_of_MEs.insert(
0388         std::pair<std::string, MonitorElement*>(DirName + "/" + "MET_CSCTightHaloFilter", hMET_CSCTightHaloFilter));
0389     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "MET_eeBadScFilter", hMET_eeBadScFilter));
0390     map_of_MEs.insert(
0391         std::pair<std::string, MonitorElement*>(DirName + "/" + "MET_HBHEIsoNoiseFilter", hMET_HBHEIsoNoiseFilter));
0392     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "MET_CSCTightHalo2015Filter",
0393                                                               hMET_CSCTightHalo2015Filter));
0394     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "MET_EcalDeadCellTriggerFilter",
0395                                                               hMET_EcalDeadCellTriggerFilter));
0396     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "MET_EcalDeadCellBoundaryFilter",
0397                                                               hMET_EcalDeadCellBoundaryFilter));
0398     map_of_MEs.insert(
0399         std::pair<std::string, MonitorElement*>(DirName + "/" + "MET_HcalStripHaloFilter", hMET_HcalStripHaloFilter));
0400 
0401     // Book NPV profiles --> would some of these profiles be interesting for other MET types too
0402     //----------------------------------------------------------------------------
0403     meMEx_profile = ibooker.bookProfile("MEx_profile", "met.px()", nbinsPV_, nPVMin_, nPVMax_, 200, -500, 500);
0404     meMEy_profile = ibooker.bookProfile("MEy_profile", "met.py()", nbinsPV_, nPVMin_, nPVMax_, 200, -500, 500);
0405     meMET_profile = ibooker.bookProfile("MET_profile", "met.pt()", nbinsPV_, nPVMin_, nPVMax_, 200, 0, 1000);
0406     meSumET_profile = ibooker.bookProfile("SumET_profile", "met.sumEt()", nbinsPV_, nPVMin_, nPVMax_, 400, 0, 4000);
0407     // Set NPV profiles x-axis title
0408     //----------------------------------------------------------------------------
0409     meMEx_profile->setAxisTitle("nvtx", 1);
0410     meMEy_profile->setAxisTitle("nvtx", 1);
0411     meMET_profile->setAxisTitle("nvtx", 1);
0412     meSumET_profile->setAxisTitle("nvtx", 1);
0413 
0414     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "MEx_profile", meMEx_profile));
0415     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "MEy_profile", meMEy_profile));
0416     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "MET_profile", meMET_profile));
0417     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "SumET_profile", meSumET_profile));
0418 
0419     if (isCaloMet_) {
0420       hCaloHadEtInHB = ibooker.book1D("CaloHadEtInHB", "CaloHadEtInHB", 50, 0, 2000);
0421       hCaloHadEtInHB->setAxisTitle("Had Et [GeV]", 1);
0422       hCaloHadEtInHO = ibooker.book1D("CaloHadEtInHO", "CaloHadEtInHO", 25, 0, 500);
0423       hCaloHadEtInHO->setAxisTitle("Had Et [GeV]", 1);
0424       hCaloHadEtInHE = ibooker.book1D("CaloHadEtInHE", "CaloHadEtInHE", 50, 0, 2000);
0425       hCaloHadEtInHE->setAxisTitle("Had Et [GeV]", 1);
0426       hCaloHadEtInHF = ibooker.book1D("CaloHadEtInHF", "CaloHadEtInHF", 50, 0, 1000);
0427       hCaloHadEtInHF->setAxisTitle("Had Et [GeV]", 1);
0428       hCaloEmEtInHF = ibooker.book1D("CaloEmEtInHF", "CaloEmEtInHF", 25, 0, 500);
0429       hCaloEmEtInHF->setAxisTitle("EM Et [GeV]", 1);
0430       hCaloEmEtInEE = ibooker.book1D("CaloEmEtInEE", "CaloEmEtInEE", 50, 0, 1000);
0431       hCaloEmEtInEE->setAxisTitle("EM Et [GeV]", 1);
0432       hCaloEmEtInEB = ibooker.book1D("CaloEmEtInEB", "CaloEmEtInEB", 50, 0, 2000);
0433       hCaloEmEtInEB->setAxisTitle("EM Et [GeV]", 1);
0434 
0435       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "CaloHadEtInHO", hCaloHadEtInHO));
0436       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "CaloHadEtInHF", hCaloHadEtInHF));
0437       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "CaloHadEtInHE", hCaloHadEtInHE));
0438       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "CaloHadEtInHB", hCaloHadEtInHB));
0439       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "CaloEmEtInHF", hCaloEmEtInHF));
0440       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "CaloEmEtInEE", hCaloEmEtInEE));
0441       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "CaloEmEtInEB", hCaloEmEtInEB));
0442 
0443       hCaloMETPhi020 = ibooker.book1D("CaloMETPhi020", "CaloMETPhi020", 60, -M_PI, M_PI);
0444       hCaloMETPhi020->setAxisTitle("METPhi [rad] (MET>20 GeV)", 1);
0445 
0446       hCaloEtFractionHadronic = ibooker.book1D("CaloEtFractionHadronic", "CaloEtFractionHadronic", 50, 0, 1);
0447       hCaloEtFractionHadronic->setAxisTitle("Hadronic Et Fraction", 1);
0448       hCaloEmEtFraction = ibooker.book1D("CaloEmEtFraction", "CaloEmEtFraction", 50, 0, 1);
0449       hCaloEmEtFraction->setAxisTitle("EM Et Fraction", 1);
0450 
0451       hCaloEmEtFraction020 = ibooker.book1D("CaloEmEtFraction020", "CaloEmEtFraction020", 50, 0, 1);
0452       hCaloEmEtFraction020->setAxisTitle("EM Et Fraction (MET>20 GeV)", 1);
0453 
0454       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "CaloMETPhi020", hCaloMETPhi020));
0455       map_of_MEs.insert(
0456           std::pair<std::string, MonitorElement*>(DirName + "/" + "CaloEtFractionHadronic", hCaloEtFractionHadronic));
0457       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "CaloEmEtFraction", hCaloEmEtFraction));
0458       map_of_MEs.insert(
0459           std::pair<std::string, MonitorElement*>(DirName + "/" + "CaloEmEtFraction020", hCaloEmEtFraction020));
0460     }
0461 
0462     if (isPFMet_) {
0463       if (fillPFCandPlots &&
0464           fillCandidateMap_histos) {  //first bool internal checks for subdirectory filling, second bool given in cfg file, checks that we fill maps only in one module in total
0465 
0466         meCHF_Barrel = ibooker.book1D("PfChargedHadronEtFractionBarrel", "chargedHadronEtFractionBarrel", 50, 0, 1);
0467         meCHF_EndcapPlus =
0468             ibooker.book1D("PfChargedHadronEtFractionEndcapPlus", "chargedHadronEtFractionEndcapPlus", 50, 0, 1);
0469         meCHF_EndcapMinus =
0470             ibooker.book1D("PfChargedHadronEtFractionEndcapMinus", "chargedHadronEtFractionEndcapMinus", 50, 0, 1);
0471         meCHF_Barrel_BXm1Empty = ibooker.book1D(
0472             "PfChargedHadronEtFractionBarrel_BXm1Empty", "chargedHadronEtFractionBarrel prev empty bunch", 50, 0, 1);
0473         meCHF_EndcapPlus_BXm1Empty = ibooker.book1D("PfChargedHadronEtFractionEndcapPlus_BXm1Empty",
0474                                                     "chargedHadronEtFractionEndcapPlus prev empty bunch",
0475                                                     50,
0476                                                     0,
0477                                                     1);
0478         meCHF_EndcapMinus_BXm1Empty = ibooker.book1D("PfChargedHadronEtFractionEndcapMinus_BXm1Empty",
0479                                                      "chargedHadronEtFractionEndcapMinus prev empty bunch",
0480                                                      50,
0481                                                      0,
0482                                                      1);
0483         meCHF_Barrel_BXm1Filled = ibooker.book1D("PfChargedHadronEtFractionBarrel_BXm1Filled",
0484                                                  "chargedHadronEtFractionBarrel prev filled 2 bunches",
0485                                                  50,
0486                                                  0,
0487                                                  1);
0488         meCHF_EndcapPlus_BXm1Filled = ibooker.book1D("PfChargedHadronEtFractionEndcapPlus_BXm1Filled",
0489                                                      "chargedHadronEtFractionEndcapPlus prev filled bunch",
0490                                                      50,
0491                                                      0,
0492                                                      1);
0493         meCHF_EndcapMinus_BXm1Filled = ibooker.book1D("PfChargedHadronEtFractionEndcapMinus_BXm1Filled",
0494                                                       "chargedHadronEtFractionEndcapMinus prev filled bunch",
0495                                                       50,
0496                                                       0,
0497                                                       1);
0498 
0499         map_of_MEs.insert(
0500             std::pair<std::string, MonitorElement*>(DirName + "/" + "PfChargedHadronEtFractionBarrel", meCHF_Barrel));
0501         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfChargedHadronEtFractionEndcapPlus",
0502                                                                   meCHF_EndcapPlus));
0503         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0504             DirName + "/" + "PfChargedHadronEtFractionEndcapMinus", meCHF_EndcapMinus));
0505         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0506             DirName + "/" + "PfChargedHadronEtFractionBarrel_BXm1Empty", meCHF_Barrel_BXm1Empty));
0507         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0508             DirName + "/" + "PfChargedHadronEtFractionEndcapPlus_BXm1Empty", meCHF_EndcapPlus_BXm1Empty));
0509         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0510             DirName + "/" + "PfChargedHadronEtFractionEndcapMinus_BXm1Empty", meCHF_EndcapMinus_BXm1Empty));
0511         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionBarrel_BXm2BXm1Empty",         meCHF_Barrel_BXm2BXm1Empty));
0512         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionEndcapPlus_BXm2BXm1Empty",     meCHF_EndcapPlus_BXm2BXm1Empty));
0513         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionEndcapMinus_BXm2BXm1Empty",    meCHF_EndcapMinus_BXm2BXm1Empty));
0514         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0515             DirName + "/" + "PfChargedHadronEtFractionBarrel_BXm1Filled", meCHF_Barrel_BXm1Filled));
0516         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0517             DirName + "/" + "PfChargedHadronEtFractionEndcapPlus_BXm1Filled", meCHF_EndcapPlus_BXm1Filled));
0518         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0519             DirName + "/" + "PfChargedHadronEtFractionEndcapMinus_BXm1Filled", meCHF_EndcapMinus_BXm1Filled));
0520         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionBarrel_BXm2BXm1Filled",        meCHF_Barrel_BXm2BXm1Filled));
0521         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionEndcapPlus_BXm2BXm1Filled",    meCHF_EndcapPlus_BXm2BXm1Filled));
0522         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionEndcapMinus_BXm2BXm1Filled",   meCHF_EndcapMinus_BXm2BXm1Filled));
0523 
0524         meNHF_Barrel = ibooker.book1D("PfNeutralHadronEtFractionBarrel", "neutralHadronEtFractionBarrel", 50, 0, 1);
0525         meNHF_EndcapPlus =
0526             ibooker.book1D("PfNeutralHadronEtFractionEndcapPlus", "neutralHadronEtFractionEndcapPlus", 50, 0, 1);
0527         meNHF_EndcapMinus =
0528             ibooker.book1D("PfNeutralHadronEtFractionEndcapMinus", "neutralHadronEtFractionEndcapMinus", 50, 0, 1);
0529         meNHF_Barrel_BXm1Empty = ibooker.book1D(
0530             "PfNeutralHadronEtFractionBarrel_BXm1Empty", "neutralHadronEtFractionBarrel prev empty bunch", 50, 0, 1);
0531         meNHF_EndcapPlus_BXm1Empty = ibooker.book1D("PfNeutralHadronEtFractionEndcapPlus_BXm1Empty",
0532                                                     "neutralHadronEtFractionEndcapPlus prev empty bunch",
0533                                                     50,
0534                                                     0,
0535                                                     1);
0536         meNHF_EndcapMinus_BXm1Empty = ibooker.book1D("PfNeutralHadronEtFractionEndcapMinus_BXm1Empty",
0537                                                      "neutralHadronEtFractionEndcapMinus prev empty bunch",
0538                                                      50,
0539                                                      0,
0540                                                      1);
0541         //meNHF_Barrel_BXm2BXm1Empty         = ibooker.book1D("PfNeutralHadronEtFractionBarrel_BXm2BXm1Empty",         "neutralHadronEtFractionBarrel prev empty 2 bunches",         50, 0,    1);
0542         //meNHF_EndcapPlus_BXm2BXm1Empty     = ibooker.book1D("PfNeutralHadronEtFractionEndcapPlus_BXm2BXm1Empty",     "neutralHadronEtFractionEndcapPlus prev empty 2 bunches",     50, 0,    1);
0543         //meNHF_EndcapMinus_BXm2BXm1Empty    = ibooker.book1D("PfNeutralHadronEtFractionEndcapMinus_BXm2BXm1Empty",    "neutralHadronEtFractionEndcapMinus prev empty 2 bunches",    50, 0,    1);
0544         meNHF_Barrel_BXm1Filled = ibooker.book1D("PfNeutralHadronEtFractionBarrel_BXm1Filled",
0545                                                  "neutralHadronEtFractionBarrel prev filled 2 bunches",
0546                                                  50,
0547                                                  0,
0548                                                  1);
0549         meNHF_EndcapPlus_BXm1Filled = ibooker.book1D("PfNeutralHadronEtFractionEndcapPlus_BXm1Filled",
0550                                                      "neutralHadronEtFractionEndcapPlus prev filled bunch",
0551                                                      50,
0552                                                      0,
0553                                                      1);
0554         meNHF_EndcapMinus_BXm1Filled = ibooker.book1D("PfNeutralHadronEtFractionEndcapMinus_BXm1Filled",
0555                                                       "neutralHadronEtFractionEndcapMinus prev filled bunch",
0556                                                       50,
0557                                                       0,
0558                                                       1);
0559         //meNHF_Barrel_BXm2BXm1Filled        = ibooker.book1D("PfNeutralHadronEtFractionBarrel_BXm2BXm1Filled",        "neutralHadronEtFractionBarrel prev filled 2 bunches",        50, 0,    1);
0560         //meNHF_EndcapPlus_BXm2BXm1Filled    = ibooker.book1D("PfNeutralHadronEtFractionEndcapPlus_BXm2BXm1Filled",    "neutralHadronEtFractionEndcapPlus prev filled 2 bunches",    50, 0,    1);
0561         //meNHF_EndcapMinus_BXm2BXm1Filled   = ibooker.book1D("PfNeutralHadronEtFractionEndcapMinus_BXm2BXm1Filled",   "neutralHadronEtFractionEndcapMinus prev filled 2 bunches",   50, 0,    1);
0562 
0563         map_of_MEs.insert(
0564             std::pair<std::string, MonitorElement*>(DirName + "/" + "PfNeutralHadronEtFractionBarrel", meNHF_Barrel));
0565         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfNeutralHadronEtFractionEndcapPlus",
0566                                                                   meNHF_EndcapPlus));
0567         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0568             DirName + "/" + "PfNeutralHadronEtFractionEndcapMinus", meNHF_EndcapMinus));
0569         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0570             DirName + "/" + "PfNeutralHadronEtFractionBarrel_BXm1Empty", meNHF_Barrel_BXm1Empty));
0571         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0572             DirName + "/" + "PfNeutralHadronEtFractionEndcapPlus_BXm1Empty", meNHF_EndcapPlus_BXm1Empty));
0573         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0574             DirName + "/" + "PfNeutralHadronEtFractionEndcapMinus_BXm1Empty", meNHF_EndcapMinus_BXm1Empty));
0575         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionBarrel_BXm2BXm1Empty",         meNHF_Barrel_BXm2BXm1Empty));
0576         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionEndcapPlus_BXm2BXm1Empty",     meNHF_EndcapPlus_BXm2BXm1Empty));
0577         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionEndcapMinus_BXm2BXm1Empty",    meNHF_EndcapMinus_BXm2BXm1Empty));
0578         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0579             DirName + "/" + "PfNeutralHadronEtFractionBarrel_BXm1Filled", meNHF_Barrel_BXm1Filled));
0580         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0581             DirName + "/" + "PfNeutralHadronEtFractionEndcapPlus_BXm1Filled", meNHF_EndcapPlus_BXm1Filled));
0582         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0583             DirName + "/" + "PfNeutralHadronEtFractionEndcapMinus_BXm1Filled", meNHF_EndcapMinus_BXm1Filled));
0584         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionBarrel_BXm2BXm1Filled",        meNHF_Barrel_BXm2BXm1Filled));
0585         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionEndcapPlus_BXm2BXm1Filled",    meNHF_EndcapPlus_BXm2BXm1Filled));
0586         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionEndcapMinus_BXm2BXm1Filled",   meNHF_EndcapMinus_BXm2BXm1Filled));
0587 
0588         mePhF_Barrel = ibooker.book1D("PfPhotonEtFractionBarrel", "photonEtFractionBarrel", 50, 0, 1);
0589         mePhF_EndcapPlus = ibooker.book1D("PfPhotonEtFractionEndcapPlus", "photonEtFractionEndcapPlus", 50, 0, 1);
0590         mePhF_EndcapMinus = ibooker.book1D("PfPhotonEtFractionEndcapMinus", "photonEtFractionEndcapMinus", 50, 0, 1);
0591         mePhF_Barrel_BXm1Empty =
0592             ibooker.book1D("PfPhotonEtFractionBarrel_BXm1Empty", "photonEtFractionBarrel prev empty bunch", 50, 0, 1);
0593         mePhF_EndcapPlus_BXm1Empty = ibooker.book1D(
0594             "PfPhotonEtFractionEndcapPlus_BXm1Empty", "photonEtFractionEndcapPlus prev empty bunch", 50, 0, 1);
0595         mePhF_EndcapMinus_BXm1Empty = ibooker.book1D(
0596             "PfPhotonEtFractionEndcapMinus_BXm1Empty", "photonEtFractionEndcapMinus prev empty bunch", 50, 0, 1);
0597         //mePhF_Barrel_BXm2BXm1Empty         = ibooker.book1D("PfPhotonEtFractionBarrel_BXm2BXm1Empty",         "photonEtFractionBarrel prev empty 2 bunches",         50, 0,    1);
0598         //mePhF_EndcapPlus_BXm2BXm1Empty     = ibooker.book1D("PfPhotonEtFractionEndcapPlus_BXm2BXm1Empty",     "photonEtFractionEndcapPlus prev empty 2 bunches",     50, 0,    1);
0599         //mePhF_EndcapMinus_BXm2BXm1Empty    = ibooker.book1D("PfPhotonEtFractionEndcapMinus_BXm2BXm1Empty",    "photonEtFractionEndcapMinus prev empty 2 bunches",    50, 0,    1);
0600         mePhF_Barrel_BXm1Filled = ibooker.book1D(
0601             "PfPhotonEtFractionBarrel_BXm1Filled", "photonEtFractionBarrel prev filled 2 bunches", 50, 0, 1);
0602         mePhF_EndcapPlus_BXm1Filled = ibooker.book1D(
0603             "PfPhotonEtFractionEndcapPlus_BXm1Filled", "photonEtFractionEndcapPlus prev filled bunch", 50, 0, 1);
0604         mePhF_EndcapMinus_BXm1Filled = ibooker.book1D(
0605             "PfPhotonEtFractionEndcapMinus_BXm1Filled", "photonEtFractionEndcapMinus prev filled bunch", 50, 0, 1);
0606         //mePhF_Barrel_BXm2BXm1Filled        = ibooker.book1D("PfPhotonEtFractionBarrel_BXm2BXm1Filled",        "photonEtFractionBarrel prev filled 2 bunches",        50, 0,    1);
0607         //mePhF_EndcapPlus_BXm2BXm1Filled    = ibooker.book1D("PfPhotonEtFractionEndcapPlus_BXm2BXm1Filled",    "photonEtFractionEndcapPlus prev filled 2 bunches",    50, 0,    1);
0608         //mePhF_EndcapMinus_BXm2BXm1Filled   = ibooker.book1D("PfPhotonEtFractionEndcapMinus_BXm2BXm1Filled",   "photonEtFractionEndcapMinus prev filled 2 bunches",   50, 0,    1);
0609 
0610         map_of_MEs.insert(
0611             std::pair<std::string, MonitorElement*>(DirName + "/" + "PfPhotonEtFractionBarrel", mePhF_Barrel));
0612         map_of_MEs.insert(
0613             std::pair<std::string, MonitorElement*>(DirName + "/" + "PfPhotonEtFractionEndcapPlus", mePhF_EndcapPlus));
0614         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfPhotonEtFractionEndcapMinus",
0615                                                                   mePhF_EndcapMinus));
0616         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfPhotonEtFractionBarrel_BXm1Empty",
0617                                                                   mePhF_Barrel_BXm1Empty));
0618         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0619             DirName + "/" + "PfPhotonEtFractionEndcapPlus_BXm1Empty", mePhF_EndcapPlus_BXm1Empty));
0620         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0621             DirName + "/" + "PfPhotonEtFractionEndcapMinus_BXm1Empty", mePhF_EndcapMinus_BXm1Empty));
0622         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionBarrel_BXm2BXm1Empty",         mePhF_Barrel_BXm2BXm1Empty));
0623         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionEndcapPlus_BXm2BXm1Empty",     mePhF_EndcapPlus_BXm2BXm1Empty));
0624         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionEndcapMinus_BXm2BXm1Empty",    mePhF_EndcapMinus_BXm2BXm1Empty));
0625         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfPhotonEtFractionBarrel_BXm1Filled",
0626                                                                   mePhF_Barrel_BXm1Filled));
0627         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0628             DirName + "/" + "PfPhotonEtFractionEndcapPlus_BXm1Filled", mePhF_EndcapPlus_BXm1Filled));
0629         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0630             DirName + "/" + "PfPhotonEtFractionEndcapMinus_BXm1Filled", mePhF_EndcapMinus_BXm1Filled));
0631         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionBarrel_BXm2BXm1Filled",        mePhF_Barrel_BXm2BXm1Filled));
0632         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionEndcapPlus_BXm2BXm1Filled",    mePhF_EndcapPlus_BXm2BXm1Filled));
0633         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionEndcapMinus_BXm2BXm1Filled",   mePhF_EndcapMinus_BXm2BXm1Filled));
0634 
0635         meHFHadF_Plus = ibooker.book1D("PfHFHadronEtFractionPlus", "HFHadronEtFractionPlus", 50, 0, 1);
0636         meHFHadF_Minus = ibooker.book1D("PfHFHadronEtFractionMinus", "HFHadronEtFractionMinus", 50, 0, 1);
0637         meHFHadF_Plus_BXm1Empty =
0638             ibooker.book1D("PfHFHadronEtFractionPlus_BXm1Empty", "HFHadronEtFractionPlus prev empty bunch", 50, 0, 1);
0639         meHFHadF_Minus_BXm1Empty =
0640             ibooker.book1D("PfHFHadronEtFractionMinus_BXm1Empty", "HFHadronEtFractionMinus prev empty bunch", 50, 0, 1);
0641         //meHFHadF_Plus_BXm2BXm1Empty     = ibooker.book1D("PfHFHadronEtFractionPlus_BXm2BXm1Empty",     "HFHadronEtFractionPlus prev empty 2 bunches",     50, 0,    1);
0642         //meHFHadF_Minus_BXm2BXm1Empty    = ibooker.book1D("PfHFHadronEtFractionMinus_BXm2BXm1Empty",    "HFHadronEtFractionMinus prev empty 2 bunches",    50, 0,    1);
0643         meHFHadF_Plus_BXm1Filled =
0644             ibooker.book1D("PfHFHadronEtFractionPlus_BXm1Filled", "HFHadronEtFractionPlus prev filled bunch", 50, 0, 1);
0645         meHFHadF_Minus_BXm1Filled = ibooker.book1D(
0646             "PfHFHadronEtFractionMinus_BXm1Filled", "HFHadronEtFractionMinus prev filled bunch", 50, 0, 1);
0647         //meHFHadF_Plus_BXm2BXm1Filled    = ibooker.book1D("PfHFHadronEtFractionPlus_BXm2BXm1Filled",    "HFHadronEtFractionPlus prev filled 2 bunches",    50, 0,    1);
0648         //meHFHadF_Minus_BXm2BXm1Filled   = ibooker.book1D("PfHFHadronEtFractionMinus_BXm2BXm1Filled",   "HFHadronEtFractionMinus prev filled 2 bunches",   50, 0,    1);
0649 
0650         map_of_MEs.insert(
0651             std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFHadronEtFractionPlus", meHFHadF_Plus));
0652         map_of_MEs.insert(
0653             std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFHadronEtFractionMinus", meHFHadF_Minus));
0654         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFHadronEtFractionPlus_BXm1Empty",
0655                                                                   meHFHadF_Plus_BXm1Empty));
0656         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFHadronEtFractionMinus_BXm1Empty",
0657                                                                   meHFHadF_Minus_BXm1Empty));
0658         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEtFractionPlus_BXm2BXm1Empty",     meHFHadF_Plus_BXm2BXm1Empty));
0659         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEtFractionMinus_BXm2BXm1Empty",    meHFHadF_Minus_BXm2BXm1Empty));
0660         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFHadronEtFractionPlus_BXm1Filled",
0661                                                                   meHFHadF_Plus_BXm1Filled));
0662         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0663             DirName + "/" + "PfHFHadronEtFractionMinus_BXm1Filled", meHFHadF_Minus_BXm1Filled));
0664         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEtFractionPlus_BXm2BXm1Filled",    meHFHadF_Plus_BXm2BXm1Filled));
0665         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEtFractionMinus_BXm2BXm1Filled",   meHFHadF_Minus_BXm2BXm1Filled));
0666 
0667         meHFEMF_Plus = ibooker.book1D("PfHFEMEtFractionPlus", "HFEMEtFractionPlus", 50, 0, 1);
0668         meHFEMF_Minus = ibooker.book1D("PfHFEMEtFractionMinus", "HFEMEtFractionMinus", 50, 0, 1);
0669         meHFEMF_Plus_BXm1Empty =
0670             ibooker.book1D("PfHFEMEtFractionPlus_BXm1Empty", "HFEMEtFractionPlus prev empty bunch", 50, 0, 1);
0671         meHFEMF_Minus_BXm1Empty =
0672             ibooker.book1D("PfHFEMEtFractionMinus_BXm1Empty", "HFEMEtFractionMinus prev empty bunch", 50, 0, 1);
0673         //meHFEMF_Plus_BXm2BXm1Empty     = ibooker.book1D("PfHFEMEtFractionPlus_BXm2BXm1Empty",     "HFEMEtFractionPlus prev empty 2 bunches",     50, 0,    1);
0674         //meHFEMF_Minus_BXm2BXm1Empty    = ibooker.book1D("PfHFEMEtFractionMinus_BXm2BXm1Empty",    "HFEMEtFractionMinus prev empty 2 bunches",    50, 0,    1);
0675         meHFEMF_Plus_BXm1Filled =
0676             ibooker.book1D("PfHFEMEtFractionPlus_BXm1Filled", "HFEMEtFractionPlus prev filled bunch", 50, 0, 1);
0677         meHFEMF_Minus_BXm1Filled =
0678             ibooker.book1D("PfHFEMEtFractionMinus_BXm1Filled", "HFEMEtFractionMinus prev filled bunch", 50, 0, 1);
0679         //meHFEMF_Plus_BXm2BXm1Filled    = ibooker.book1D("PfHFEMEtFractionPlus_BXm2BXm1Filled",    "HFEMEtFractionPlus prev filled 2 bunches",    50, 0,    1);
0680         //meHFEMF_Minus_BXm2BXm1Filled   = ibooker.book1D("PfHFEMEtFractionMinus_BXm2BXm1Filled",   "HFEMEtFractionMinus prev filled 2 bunches",   50, 0,    1);
0681 
0682         map_of_MEs.insert(
0683             std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFEMEtFractionPlus", meHFEMF_Plus));
0684         map_of_MEs.insert(
0685             std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFEMEtFractionMinus", meHFEMF_Minus));
0686         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFEMEtFractionPlus_BXm1Empty",
0687                                                                   meHFEMF_Plus_BXm1Empty));
0688         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFEMEtFractionMinus_BXm1Empty",
0689                                                                   meHFEMF_Minus_BXm1Empty));
0690         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEtFractionPlus_BXm2BXm1Empty",     meHFEMF_Plus_BXm2BXm1Empty));
0691         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEtFractionMinus_BXm2BXm1Empty",    meHFEMF_Minus_BXm2BXm1Empty));
0692         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFEMEtFractionPlus_BXm1Filled",
0693                                                                   meHFEMF_Plus_BXm1Filled));
0694         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFEMEtFractionMinus_BXm1Filled",
0695                                                                   meHFEMF_Minus_BXm1Filled));
0696         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEtFractionPlus_BXm2BXm1Filled",    meHFEMF_Plus_BXm2BXm1Filled));
0697         //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEtFractionMinus_BXm2BXm1Filled",   meHFEMF_Minus_BXm2BXm1Filled));
0698         /*
0699     meMETPhiChargedHadronsBarrel_BXm2BXm1Filled       = ibooker.book1D("METPhiChargedHadronsBarrel_BXm2BXm1Filled",     "METPhi_PFChargedHadronsBarrel prev two bunches filled",       50, -M_PI,M_PI);
0700     meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Filled   = ibooker.book1D("METPhiChargedHadronsEndcapPlus_BXm2BXm1Filled", "METPhi_PFChargedHadronsEndcapPlus prev two bunches filled",   50, -M_PI,M_PI);
0701     meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Filled  = ibooker.book1D("METPhiChargedHadronsEndcapMinus_BXm2BXm1Filled","METPhi_PFChargedHadronsEndcapMinus prev two bunches filled",  50, -M_PI,M_PI);
0702     meMETPhiNeutralHadronsBarrel_BXm2BXm1Filled       = ibooker.book1D("METPhiNeutralHadronsBarrel_BXm2BXm1Filled",     "METPhi_PFNeutralHadronsBarrel prev two bunches filled",       50, -M_PI,M_PI);
0703     meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled   = ibooker.book1D("METPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled", "METPhi_PFNeutralHadronsEndcapPlus prev two bunches filled",   50, -M_PI,M_PI);
0704     meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled  = ibooker.book1D("METPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled","METPhi_PFNeutralHadronsEndcapMinus prev two bunches filled",  50, -M_PI,M_PI);
0705     meMETPhiPhotonsBarrel_BXm2BXm1Filled              = ibooker.book1D("METPhiPhotonsBarrel_BXm2BXm1Filled",            "METPhi_PFPhotonsBarrel prev two bunches filled",              50, -M_PI,M_PI);
0706     meMETPhiPhotonsEndcapPlus_BXm2BXm1Filled          = ibooker.book1D("METPhiPhotonsEndcapPlus_BXm2BXm1Filled",        "METPhi_PFPhotonsEndcapPlus prev two bunches filled",          50, -M_PI,M_PI);
0707     meMETPhiPhotonsEndcapMinus_BXm2BXm1Filled         = ibooker.book1D("METPhiPhotonsEndcapMinus_BXm2BXm1Filled",       "METPhi_PFPhotonsEndcapMinus prev two bunches filled",         50, -M_PI,M_PI);
0708     meMETPhiHFHadronsPlus_BXm2BXm1Filled              = ibooker.book1D("METPhiHFHadronsPlus_BXm2BXm1Filled",            "METPhi_PFHFHadronsPlus prev two bunches filled",              50, -M_PI,M_PI);
0709     meMETPhiHFHadronsMinus_BXm2BXm1Filled             = ibooker.book1D("METPhiHFHadronsMinus_BXm2BXm1Filled",           "METPhi_PFHFHadronsMinus prev two bunches filled",             50, -M_PI,M_PI);
0710     meMETPhiHFEGammasPlus_BXm2BXm1Filled              = ibooker.book1D("METPhiHFEGammasPlus_BXm2BXm1Filled",            "METPhi_PFHFEGammasPlus prev two bunches filled",              50, -M_PI,M_PI);
0711     meMETPhiHFEGammasMinus_BXm2BXm1Filled             = ibooker.book1D("METPhiHFEGammasMinus_BXm2BXm1Filled",           "METPhi_PFHFEGammasMinus prev two bunches filled",             50, -M_PI,M_PI);
0712     
0713     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsBarrel_BXm2BXm1Filled"         ,meMETPhiChargedHadronsBarrel_BXm2BXm1Filled));
0714     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsEndcapPlus_BXm2BXm1Filled"     ,meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Filled));
0715     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsEndcapMinus_BXm2BXm1Filled"    ,meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Filled));
0716     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsBarrel_BXm2BXm1Filled"         ,meMETPhiNeutralHadronsBarrel_BXm2BXm1Filled));
0717     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled"     ,meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled));
0718     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled"    ,meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled));
0719     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsBarrel_BXm2BXm1Filled"                ,meMETPhiPhotonsBarrel_BXm2BXm1Filled));
0720     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsEndcapPlus_BXm2BXm1Filled"            ,meMETPhiPhotonsEndcapPlus_BXm2BXm1Filled));
0721     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsEndcapMinus_BXm2BXm1Filled"           ,meMETPhiPhotonsEndcapMinus_BXm2BXm1Filled));
0722     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFHadronsPlus_BXm2BXm1Filled"                ,meMETPhiHFHadronsPlus_BXm2BXm1Filled));
0723     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFHadronsMinus_BXm2BXm1Filled"               ,meMETPhiHFHadronsMinus_BXm2BXm1Filled));
0724     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFEGammasPlus_BXm2BXm1Filled"                ,meMETPhiHFEGammasPlus_BXm2BXm1Filled));
0725     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFEGammasMinus_BXm2BXm1Filled"               ,meMETPhiHFEGammasMinus_BXm2BXm1Filled));
0726     
0727     meMETPhiChargedHadronsBarrel_BXm2BXm1Empty       = ibooker.book1D("METPhiChargedHadronsBarrel_BXm2BXm1Empty",     "METPhi_PFChargedHadronsBarrel prev two bunches empty",       50, -M_PI,M_PI);
0728     meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Empty   = ibooker.book1D("METPhiChargedHadronsEndcapPlus_BXm2BXm1Empty", "METPhi_PFChargedHadronsEndcapPlus prev two bunches empty",   50, -M_PI,M_PI);
0729     meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Empty  = ibooker.book1D("METPhiChargedHadronsEndcapMinus_BXm2BXm1Empty","METPhi_PFChargedHadronsEndcapMinus prev two bunches empty",  50, -M_PI,M_PI);
0730     meMETPhiNeutralHadronsBarrel_BXm2BXm1Empty       = ibooker.book1D("METPhiNeutralHadronsBarrel_BXm2BXm1Empty",     "METPhi_PFNeutralHadronsBarrel prev two bunches empty",       50, -M_PI,M_PI);
0731     meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty   = ibooker.book1D("METPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty", "METPhi_PFNeutralHadronsEndcapPlus prev two bunches empty",   50, -M_PI,M_PI);
0732     meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty  = ibooker.book1D("METPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty","METPhi_PFNeutralHadronsEndcapMinus prev two bunches empty",  50, -M_PI,M_PI);
0733     meMETPhiPhotonsBarrel_BXm2BXm1Empty              = ibooker.book1D("METPhiPhotonsBarrel_BXm2BXm1Empty",            "METPhi_PFPhotonsBarrel prev two bunches empty",              50, -M_PI,M_PI);
0734     meMETPhiPhotonsEndcapPlus_BXm2BXm1Empty          = ibooker.book1D("METPhiPhotonsEndcapPlus_BXm2BXm1Empty",        "METPhi_PFPhotonsEndcapPlus prev two bunches empty",          50, -M_PI,M_PI);
0735     meMETPhiPhotonsEndcapMinus_BXm2BXm1Empty         = ibooker.book1D("METPhiPhotonsEndcapMinus_BXm2BXm1Empty",       "METPhi_PFPhotonsEndcapMinus prev two bunches empty",         50, -M_PI,M_PI);
0736     meMETPhiHFHadronsPlus_BXm2BXm1Empty              = ibooker.book1D("METPhiHFHadronsPlus_BXm2BXm1Empty",            "METPhi_PFHFHadronsPlus prev two bunches empty",              50, -M_PI,M_PI);
0737     meMETPhiHFHadronsMinus_BXm2BXm1Empty             = ibooker.book1D("METPhiHFHadronsMinus_BXm2BXm1Empty",           "METPhi_PFHFHadronsMinus prev two bunches empty",             50, -M_PI,M_PI);
0738     meMETPhiHFEGammasPlus_BXm2BXm1Empty              = ibooker.book1D("METPhiHFEGammasPlus_BXm2BXm1Empty",            "METPhi_PFHFEGammasPlus prev two bunches empty",              50, -M_PI,M_PI);
0739     meMETPhiHFEGammasMinus_BXm2BXm1Empty             = ibooker.book1D("METPhiHFEGammasMinus_BXm2BXm1Empty",           "METPhi_PFHFEGammasMinus prev two bunches empty",             50, -M_PI,M_PI);
0740     
0741     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsBarrel_BXm2BXm1Empty"         ,meMETPhiChargedHadronsBarrel_BXm2BXm1Empty));
0742     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsEndcapPlus_BXm2BXm1Empty"     ,meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Empty));
0743     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsEndcapMinus_BXm2BXm1Empty"    ,meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Empty));
0744     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsBarrel_BXm2BXm1Empty"         ,meMETPhiNeutralHadronsBarrel_BXm2BXm1Empty));
0745     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty"     ,meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty));
0746     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty"    ,meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty));
0747     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsBarrel_BXm2BXm1Empty"                ,meMETPhiPhotonsBarrel_BXm2BXm1Empty));
0748     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsEndcapPlus_BXm2BXm1Empty"            ,meMETPhiPhotonsEndcapPlus_BXm2BXm1Empty));
0749     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsEndcapMinus_BXm2BXm1Empty"           ,meMETPhiPhotonsEndcapMinus_BXm2BXm1Empty));
0750     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFHadronsPlus_BXm2BXm1Empty"                ,meMETPhiHFHadronsPlus_BXm2BXm1Empty));
0751     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFHadronsMinus_BXm2BXm1Empty"               ,meMETPhiHFHadronsMinus_BXm2BXm1Empty));
0752     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFEGammasPlus_BXm2BXm1Empty"                ,meMETPhiHFEGammasPlus_BXm2BXm1Empty));
0753     map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFEGammasMinus_BXm2BXm1Empty"               ,meMETPhiHFEGammasMinus_BXm2BXm1Empty));
0754     */
0755         //histos where one previous bunch was empty/filled
0756         mePhotonEtFraction_BXm1Empty =
0757             ibooker.book1D("PfPhotonEtFraction_BXm1Empty", "photonEtFraction() prev empty bunch", 50, 0, 1);
0758         mePhotonEtFraction_BXm1Filled =
0759             ibooker.book1D("PfPhotonEtFraction_BXm1Filled", "photonEtFraction() prev filled bunch", 50, 0, 1);
0760         meNeutralHadronEtFraction_BXm1Empty = ibooker.book1D(
0761             "PfNeutralHadronEtFraction_BXm1Empty", "neutralHadronEtFraction() prev empty bunch", 50, 0, 1);
0762         meNeutralHadronEtFraction_BXm1Filled = ibooker.book1D(
0763             "PfNeutralHadronEtFraction_BXm1Filled", "neutralHadronEtFraction() prev filled bunch", 50, 0, 1);
0764         meChargedHadronEtFraction_BXm1Empty = ibooker.book1D(
0765             "PfChargedHadronEtFraction_BXm1Empty", "chargedHadronEtFraction() prev empty bunch", 50, 0, 1);
0766         meChargedHadronEtFraction_BXm1Filled = ibooker.book1D(
0767             "PfChargedHadronEtFraction_BXm1Filled", "chargedHadronEtFraction() prev filled bunch", 50, 0, 1);
0768         meMET_BXm1Empty = ibooker.book1D("MET_BXm1Empty", "MET prev empty bunch", 200, 0, 1000);
0769         meMET_BXm1Filled = ibooker.book1D("MET_BXm1Filled", "MET prev filled bunch", 200, 0, 1000);
0770         meSumET_BXm1Empty = ibooker.book1D("SumET_BXm1Empty", "SumET prev empty bunch", 400, 0, 4000);
0771         meSumET_BXm1Filled = ibooker.book1D("SumET_BXm1Filled", "SumET prev filled bunch", 400, 0, 4000);
0772 
0773         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfPhotonEtFraction_BXm1Empty",
0774                                                                   mePhotonEtFraction_BXm1Empty));
0775         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfPhotonEtFraction_BXm1Filled",
0776                                                                   mePhotonEtFraction_BXm1Filled));
0777         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfNeutralHadronEtFraction_BXm1Empty",
0778                                                                   meNeutralHadronEtFraction_BXm1Empty));
0779         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfNeutralEtFraction_BXm1Filled",
0780                                                                   meNeutralHadronEtFraction_BXm1Filled));
0781         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfChargedHadronEtFraction_BXm1Empty",
0782                                                                   meChargedHadronEtFraction_BXm1Empty));
0783         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfChargedEtFraction_BXm1Filled",
0784                                                                   meChargedHadronEtFraction_BXm1Filled));
0785         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "MET_BXm1Empty", meMET_BXm1Empty));
0786         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "MET_BXm1Filled", meMET_BXm1Filled));
0787         map_of_MEs.insert(
0788             std::pair<std::string, MonitorElement*>(DirName + "/" + "SumET_BXm1Empty", meSumET_BXm1Empty));
0789         map_of_MEs.insert(
0790             std::pair<std::string, MonitorElement*>(DirName + "/" + "SumET_BXm1Filled", meSumET_BXm1Filled));
0791 
0792         meMETPhiChargedHadronsBarrel_BXm1Filled = ibooker.book1D(
0793             "METPhiChargedHadronsBarrel_BXm1Filled", "METPhi_PFChargedHadronsBarrel prev bunch filled", 50, -M_PI, M_PI);
0794         meMETPhiChargedHadronsEndcapPlus_BXm1Filled =
0795             ibooker.book1D("METPhiChargedHadronsEndcapPlus_BXm1Filled",
0796                            "METPhi_PFChargedHadronsEndcapPlus prev bunch filled",
0797                            50,
0798                            -M_PI,
0799                            M_PI);
0800         meMETPhiChargedHadronsEndcapMinus_BXm1Filled =
0801             ibooker.book1D("METPhiChargedHadronsEndcapMinus_BXm1Filled",
0802                            "METPhi_PFChargedHadronsEndcapMinus prev bunch filled",
0803                            50,
0804                            -M_PI,
0805                            M_PI);
0806         meMETPhiNeutralHadronsBarrel_BXm1Filled = ibooker.book1D(
0807             "METPhiNeutralHadronsBarrel_BXm1Filled", "METPhi_PFNeutralHadronsBarrel prev bunch filled", 50, -M_PI, M_PI);
0808         meMETPhiNeutralHadronsEndcapPlus_BXm1Filled =
0809             ibooker.book1D("METPhiNeutralHadronsEndcapPlus_BXm1Filled",
0810                            "METPhi_PFNeutralHadronsEndcapPlus prev bunch filled",
0811                            50,
0812                            -M_PI,
0813                            M_PI);
0814         meMETPhiNeutralHadronsEndcapMinus_BXm1Filled =
0815             ibooker.book1D("METPhiNeutralHadronsEndcapMinus_BXm1Filled",
0816                            "METPhi_PFNeutralHadronsEndcapMinus prev bunch filled",
0817                            50,
0818                            -M_PI,
0819                            M_PI);
0820         meMETPhiPhotonsBarrel_BXm1Filled = ibooker.book1D(
0821             "METPhiPhotonsBarrel_BXm1Filled", "METPhi_PFPhotonsBarrel prev bunch filled", 50, -M_PI, M_PI);
0822         meMETPhiPhotonsEndcapPlus_BXm1Filled = ibooker.book1D(
0823             "METPhiPhotonsEndcapPlus_BXm1Filled", "METPhi_PFPhotonsEndcapPlus prev bunch filled", 50, -M_PI, M_PI);
0824         meMETPhiPhotonsEndcapMinus_BXm1Filled = ibooker.book1D(
0825             "METPhiPhotonsEndcapMinus_BXm1Filled", "METPhi_PFPhotonsEndcapMinus prev bunch filled", 50, -M_PI, M_PI);
0826         meMETPhiHFHadronsPlus_BXm1Filled = ibooker.book1D(
0827             "METPhiHFHadronsPlus_BXm1Filled", "METPhi_PFHFHadronsPlus prev bunch filled", 50, -M_PI, M_PI);
0828         meMETPhiHFHadronsMinus_BXm1Filled = ibooker.book1D(
0829             "METPhiHFHadronsMinus_BXm1Filled", "METPhi_PFHFHadronsMinus prev bunch filled", 50, -M_PI, M_PI);
0830         meMETPhiHFEGammasPlus_BXm1Filled = ibooker.book1D(
0831             "METPhiHFEGammasPlus_BXm1Filled", "METPhi_PFHFEGammasPlus prev bunch filled", 50, -M_PI, M_PI);
0832         meMETPhiHFEGammasMinus_BXm1Filled = ibooker.book1D(
0833             "METPhiHFEGammasMinus_BXm1Filled", "METPhi_PFHFEGammasMinus prev bunch filled", 50, -M_PI, M_PI);
0834 
0835         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0836             DirName + "/" + "METPhiChargedHadronsBarrel_BXm1Filled", meMETPhiChargedHadronsBarrel_BXm1Filled));
0837         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0838             DirName + "/" + "METPhiChargedHadronsEndcapPlus_BXm1Filled", meMETPhiChargedHadronsEndcapPlus_BXm1Filled));
0839         map_of_MEs.insert(
0840             std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiChargedHadronsEndcapMinus_BXm1Filled",
0841                                                     meMETPhiChargedHadronsEndcapMinus_BXm1Filled));
0842         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0843             DirName + "/" + "METPhiNeutralHadronsBarrel_BXm1Filled", meMETPhiNeutralHadronsBarrel_BXm1Filled));
0844         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0845             DirName + "/" + "METPhiNeutralHadronsEndcapPlus_BXm1Filled", meMETPhiNeutralHadronsEndcapPlus_BXm1Filled));
0846         map_of_MEs.insert(
0847             std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiNeutralHadronsEndcapMinus_BXm1Filled",
0848                                                     meMETPhiNeutralHadronsEndcapMinus_BXm1Filled));
0849         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiPhotonsBarrel_BXm1Filled",
0850                                                                   meMETPhiPhotonsBarrel_BXm1Filled));
0851         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiPhotonsEndcapPlus_BXm1Filled",
0852                                                                   meMETPhiPhotonsEndcapPlus_BXm1Filled));
0853         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiPhotonsEndcapMinus_BXm1Filled",
0854                                                                   meMETPhiPhotonsEndcapMinus_BXm1Filled));
0855         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiHFHadronsPlus_BXm1Filled",
0856                                                                   meMETPhiHFHadronsPlus_BXm1Filled));
0857         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiHFHadronsMinus_BXm1Filled",
0858                                                                   meMETPhiHFHadronsMinus_BXm1Filled));
0859         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiHFEGammasPlus_BXm1Filled",
0860                                                                   meMETPhiHFEGammasPlus_BXm1Filled));
0861         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiHFEGammasMinus_BXm1Filled",
0862                                                                   meMETPhiHFEGammasMinus_BXm1Filled));
0863 
0864         meMETPhiChargedHadronsBarrel_BXm1Empty = ibooker.book1D(
0865             "METPhiChargedHadronsBarrel_BXm1Empty", "METPhi_PFChargedHadronsBarrel prev bunch empty", 50, -M_PI, M_PI);
0866         meMETPhiChargedHadronsEndcapPlus_BXm1Empty =
0867             ibooker.book1D("METPhiChargedHadronsEndcapPlus_BXm1Empty",
0868                            "METPhi_PFChargedHadronsEndcapPlus prev bunch empty",
0869                            50,
0870                            -M_PI,
0871                            M_PI);
0872         meMETPhiChargedHadronsEndcapMinus_BXm1Empty =
0873             ibooker.book1D("METPhiChargedHadronsEndcapMinus_BXm1Empty",
0874                            "METPhi_PFChargedHadronsEndcapMinus prev bunch empty",
0875                            50,
0876                            -M_PI,
0877                            M_PI);
0878         meMETPhiNeutralHadronsBarrel_BXm1Empty = ibooker.book1D(
0879             "METPhiNeutralHadronsBarrel_BXm1Empty", "METPhi_PFNeutralHadronsBarrel prev bunch empty", 50, -M_PI, M_PI);
0880         meMETPhiNeutralHadronsEndcapPlus_BXm1Empty =
0881             ibooker.book1D("METPhiNeutralHadronsEndcapPlus_BXm1Empty",
0882                            "METPhi_PFNeutralHadronsEndcapPlus prev bunch empty",
0883                            50,
0884                            -M_PI,
0885                            M_PI);
0886         meMETPhiNeutralHadronsEndcapMinus_BXm1Empty =
0887             ibooker.book1D("METPhiNeutralHadronsEndcapMinus_BXm1Empty",
0888                            "METPhi_PFNeutralHadronsEndcapMinus prev bunch empty",
0889                            50,
0890                            -M_PI,
0891                            M_PI);
0892         meMETPhiPhotonsBarrel_BXm1Empty =
0893             ibooker.book1D("METPhiPhotonsBarrel_BXm1Empty", "METPhi_PFPhotonsBarrel prev bunch empty", 50, -M_PI, M_PI);
0894         meMETPhiPhotonsEndcapPlus_BXm1Empty = ibooker.book1D(
0895             "METPhiPhotonsEndcapPlus_BXm1Empty", "METPhi_PFPhotonsEndcapPlus prev bunch empty", 50, -M_PI, M_PI);
0896         meMETPhiPhotonsEndcapMinus_BXm1Empty = ibooker.book1D(
0897             "METPhiPhotonsEndcapMinus_BXm1Empty", "METPhi_PFPhotonsEndcapMinus prev bunch empty", 50, -M_PI, M_PI);
0898         meMETPhiHFHadronsPlus_BXm1Empty =
0899             ibooker.book1D("METPhiHFHadronsPlus_BXm1Empty", "METPhi_PFHFHadronsPlus prev bunch empty", 50, -M_PI, M_PI);
0900         meMETPhiHFHadronsMinus_BXm1Empty = ibooker.book1D(
0901             "METPhiHFHadronsMinus_BXm1Empty", "METPhi_PFHFHadronsMinus prev bunch empty", 50, -M_PI, M_PI);
0902         meMETPhiHFEGammasPlus_BXm1Empty =
0903             ibooker.book1D("METPhiHFEGammasPlus_BXm1Empty", "METPhi_PFHFEGammasPlus prev bunch empty", 50, -M_PI, M_PI);
0904         meMETPhiHFEGammasMinus_BXm1Empty = ibooker.book1D(
0905             "METPhiHFEGammasMinus_BXm1Empty", "METPhi_PFHFEGammasMinus prev bunch empty", 50, -M_PI, M_PI);
0906 
0907         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0908             DirName + "/" + "METPhiChargedHadronsBarrel_BXm1Empty", meMETPhiChargedHadronsBarrel_BXm1Empty));
0909         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0910             DirName + "/" + "METPhiChargedHadronsEndcapPlus_BXm1Empty", meMETPhiChargedHadronsEndcapPlus_BXm1Empty));
0911         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0912             DirName + "/" + "METPhiChargedHadronsEndcapMinus_BXm1Empty", meMETPhiChargedHadronsEndcapMinus_BXm1Empty));
0913         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0914             DirName + "/" + "METPhiNeutralHadronsBarrel_BXm1Empty", meMETPhiNeutralHadronsBarrel_BXm1Empty));
0915         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0916             DirName + "/" + "METPhiNeutralHadronsEndcapPlus_BXm1Empty", meMETPhiNeutralHadronsEndcapPlus_BXm1Empty));
0917         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
0918             DirName + "/" + "METPhiNeutralHadronsEndcapMinus_BXm1Empty", meMETPhiNeutralHadronsEndcapMinus_BXm1Empty));
0919         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiPhotonsBarrel_BXm1Empty",
0920                                                                   meMETPhiPhotonsBarrel_BXm1Empty));
0921         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiPhotonsEndcapPlus_BXm1Empty",
0922                                                                   meMETPhiPhotonsEndcapPlus_BXm1Empty));
0923         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiPhotonsEndcapMinus_BXm1Empty",
0924                                                                   meMETPhiPhotonsEndcapMinus_BXm1Empty));
0925         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiHFHadronsPlus_BXm1Empty",
0926                                                                   meMETPhiHFHadronsPlus_BXm1Empty));
0927         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiHFHadronsMinus_BXm1Empty",
0928                                                                   meMETPhiHFHadronsMinus_BXm1Empty));
0929         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiHFEGammasPlus_BXm1Empty",
0930                                                                   meMETPhiHFEGammasPlus_BXm1Empty));
0931         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiHFEGammasMinus_BXm1Empty",
0932                                                                   meMETPhiHFEGammasMinus_BXm1Empty));
0933 
0934         meMETPhiChargedHadronsBarrel =
0935             ibooker.book1D("METPhiChargedHadronsBarrel", "METPhi_PFChargedHadronsBarrel", 50, -M_PI, M_PI);
0936         meMETPhiChargedHadronsEndcapPlus =
0937             ibooker.book1D("METPhiChargedHadronsEndcapPlus", "METPhi_PFChargedHadronsEndcapPlus", 50, -M_PI, M_PI);
0938         meMETPhiChargedHadronsEndcapMinus =
0939             ibooker.book1D("METPhiChargedHadronsEndcapMinus", "METPhi_PFChargedHadronsEndcapMinus", 50, -M_PI, M_PI);
0940         meMETPhiNeutralHadronsBarrel =
0941             ibooker.book1D("METPhiNeutralHadronsBarrel", "METPhi_PFNeutralHadronsBarrel", 50, -M_PI, M_PI);
0942         meMETPhiNeutralHadronsEndcapPlus =
0943             ibooker.book1D("METPhiNeutralHadronsEndcapPlus", "METPhi_PFNeutralHadronsEndcapPlus", 50, -M_PI, M_PI);
0944         meMETPhiNeutralHadronsEndcapMinus =
0945             ibooker.book1D("METPhiNeutralHadronsEndcapMinus", "METPhi_PFNeutralHadronsEndcapMinus", 50, -M_PI, M_PI);
0946         meMETPhiPhotonsBarrel = ibooker.book1D("METPhiPhotonsBarrel", "METPhi_PFPhotonsBarrel", 50, -M_PI, M_PI);
0947         meMETPhiPhotonsEndcapPlus =
0948             ibooker.book1D("METPhiPhotonsEndcapPlus", "METPhi_PFPhotonsEndcapPlus", 50, -M_PI, M_PI);
0949         meMETPhiPhotonsEndcapMinus =
0950             ibooker.book1D("METPhiPhotonsEndcapMinus", "METPhi_PFPhotonsEndcapMinus", 50, -M_PI, M_PI);
0951         meMETPhiHFHadronsPlus = ibooker.book1D("METPhiHFHadronsPlus", "METPhi_PFHFHadronsPlus", 50, -M_PI, M_PI);
0952         meMETPhiHFHadronsMinus = ibooker.book1D("METPhiHFHadronsMinus", "METPhi_PFHFHadronsMinus", 50, -M_PI, M_PI);
0953         meMETPhiHFEGammasPlus = ibooker.book1D("METPhiHFEGammasPlus", "METPhi_PFHFEGammasPlus", 50, -M_PI, M_PI);
0954         meMETPhiHFEGammasMinus = ibooker.book1D("METPhiHFEGammasMinus", "METPhi_PFHFEGammasMinus", 50, -M_PI, M_PI);
0955 
0956         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiChargedHadronsBarrel",
0957                                                                   meMETPhiChargedHadronsBarrel));
0958         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiChargedHadronsEndcapPlus",
0959                                                                   meMETPhiChargedHadronsEndcapPlus));
0960         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiChargedHadronsEndcapMinus",
0961                                                                   meMETPhiChargedHadronsEndcapMinus));
0962         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiNeutralHadronsBarrel",
0963                                                                   meMETPhiNeutralHadronsBarrel));
0964         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiNeutralHadronsEndcapPlus",
0965                                                                   meMETPhiNeutralHadronsEndcapPlus));
0966         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiNeutralHadronsEndcapMinus",
0967                                                                   meMETPhiNeutralHadronsEndcapMinus));
0968         map_of_MEs.insert(
0969             std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiPhotonsBarrel", meMETPhiPhotonsBarrel));
0970         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiPhotonsEndcapPlus",
0971                                                                   meMETPhiPhotonsEndcapPlus));
0972         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiPhotonsEndcapMinus",
0973                                                                   meMETPhiPhotonsEndcapMinus));
0974         map_of_MEs.insert(
0975             std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiHFHadronsPlus", meMETPhiHFHadronsPlus));
0976         map_of_MEs.insert(
0977             std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiHFHadronsMinus", meMETPhiHFHadronsMinus));
0978         map_of_MEs.insert(
0979             std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiHFEGammasPlus", meMETPhiHFEGammasPlus));
0980         map_of_MEs.insert(
0981             std::pair<std::string, MonitorElement*>(DirName + "/" + "METPhiHFEGammasMinus", meMETPhiHFEGammasMinus));
0982       }
0983 
0984       if (fillPFCandPlots && fillCandidateMap_histos) {
0985         if (!profilePFCand_x_.empty()) {
0986           etaMinPFCand_.clear();
0987           etaMaxPFCand_.clear();
0988           typePFCand_.clear();
0989           countsPFCand_.clear();
0990           MExPFCand_.clear();
0991           MEyPFCand_.clear();
0992           profilePFCand_x_.clear();
0993           profilePFCand_y_.clear();
0994           profilePFCand_x_name_.clear();
0995           profilePFCand_y_name_.clear();
0996         }
0997         for (std::vector<edm::ParameterSet>::const_iterator v = diagnosticsParameters_.begin();
0998              v != diagnosticsParameters_.end();
0999              v++) {
1000           double etaMinPFCand = v->getParameter<double>("etaMin");
1001           double etaMaxPFCand = v->getParameter<double>("etaMax");
1002           int nMinPFCand = v->getParameter<int>("nMin");
1003           int nMaxPFCand = v->getParameter<int>("nMax");
1004           int nbinsPFCand = v->getParameter<double>("nbins");
1005 
1006           // etaNBins_.push_back(etaNBins);
1007           etaMinPFCand_.push_back(etaMinPFCand);
1008           etaMaxPFCand_.push_back(etaMaxPFCand);
1009           typePFCand_.push_back(v->getParameter<int>("type"));
1010           countsPFCand_.push_back(0);
1011           MExPFCand_.push_back(0.);
1012           MEyPFCand_.push_back(0.);
1013 
1014           profilePFCand_x_.push_back(
1015               ibooker.bookProfile(std::string(v->getParameter<std::string>("name")).append("_Px_").c_str(),
1016                                   std::string(v->getParameter<std::string>("name")) + "Px",
1017                                   nbinsPFCand,
1018                                   nMinPFCand,
1019                                   nMaxPFCand,
1020                                   -300,
1021                                   300));
1022           profilePFCand_x_name_.push_back(std::string(v->getParameter<std::string>("name")).append("_Px_"));
1023           map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
1024               DirName + "/" + profilePFCand_x_name_[profilePFCand_x_name_.size() - 1],
1025               profilePFCand_x_[profilePFCand_x_.size() - 1]));
1026           profilePFCand_y_.push_back(
1027               ibooker.bookProfile(std::string(v->getParameter<std::string>("name")).append("_Py_").c_str(),
1028                                   std::string(v->getParameter<std::string>("name")) + "Py",
1029                                   nbinsPFCand,
1030                                   nMinPFCand,
1031                                   nMaxPFCand,
1032                                   -300,
1033                                   300));
1034           profilePFCand_y_name_.push_back(std::string(v->getParameter<std::string>("name")).append("_Py_"));
1035           map_of_MEs.insert(std::pair<std::string, MonitorElement*>(
1036               DirName + "/" + profilePFCand_y_name_[profilePFCand_y_name_.size() - 1],
1037               profilePFCand_y_[profilePFCand_y_.size() - 1]));
1038         }
1039       }
1040     }
1041     if (isMiniAODMet_) {
1042       if (fillPFCandPlots &&
1043           fillCandidateMap_histos) {  //first bool internal checks for subdirectory filling, second bool given in cfg file, checks that we fill maps only in one module in total
1044         if (!profilePFCand_x_.empty()) {
1045           etaMinPFCand_.clear();
1046           etaMaxPFCand_.clear();
1047           typePFCand_.clear();
1048           countsPFCand_.clear();
1049           profilePFCand_x_.clear();
1050           profilePFCand_y_.clear();
1051         }
1052         for (std::vector<edm::ParameterSet>::const_iterator v = diagnosticsParameters_.begin();
1053              v != diagnosticsParameters_.end();
1054              v++) {
1055           double etaMinPFCand = v->getParameter<double>("etaMin");
1056           double etaMaxPFCand = v->getParameter<double>("etaMax");
1057 
1058           etaMinPFCand_.push_back(etaMinPFCand);
1059           etaMaxPFCand_.push_back(etaMaxPFCand);
1060           typePFCand_.push_back(v->getParameter<int>("type"));
1061           countsPFCand_.push_back(0);
1062           MExPFCand_.push_back(0.);
1063           MEyPFCand_.push_back(0.);
1064         }
1065       }
1066     }
1067 
1068     if (isPFMet_ || isMiniAODMet_) {
1069       mePhotonEtFraction = ibooker.book1D("PfPhotonEtFraction", "photonEtFraction()", 50, 0, 1);
1070       meNeutralHadronEtFraction = ibooker.book1D("PfNeutralHadronEtFraction", "neutralHadronEtFraction()", 50, 0, 1);
1071       meChargedHadronEtFraction = ibooker.book1D("PfChargedHadronEtFraction", "chargedHadronEtFraction()", 50, 0, 1);
1072       meHFHadronEtFraction = ibooker.book1D("PfHFHadronEtFraction", "HFHadronEtFraction()", 50, 0, 1);
1073       meHFEMEtFraction = ibooker.book1D("PfHFEMEtFraction", "HFEMEtFraction()", 50, 0, 1);
1074 
1075       map_of_MEs.insert(
1076           std::pair<std::string, MonitorElement*>(DirName + "/" + "PfPhotonEtFraction", mePhotonEtFraction));
1077       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfNeutralHadronEtFraction",
1078                                                                 meNeutralHadronEtFraction));
1079       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfChargedHadronEtFraction",
1080                                                                 meChargedHadronEtFraction));
1081       map_of_MEs.insert(
1082           std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFHadronEtFraction", meHFHadronEtFraction));
1083       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFEMEtFraction", meHFEMEtFraction));
1084 
1085       mePhotonEtFraction_profile =
1086           ibooker.bookProfile("PfPhotonEtFraction_profile", "photonEtFraction()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1);
1087       meNeutralHadronEtFraction_profile = ibooker.bookProfile(
1088           "PfNeutralHadronEtFraction_profile", "neutralHadronEtFraction()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1);
1089       meChargedHadronEtFraction_profile = ibooker.bookProfile(
1090           "PfChargedHadronEtFraction_profile", "chargedHadronEtFraction()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1);
1091       meHFHadronEtFraction_profile = ibooker.bookProfile(
1092           "PfHFHadronEtFraction_profile", "HFHadronEtFraction()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1);
1093       meHFEMEtFraction_profile =
1094           ibooker.bookProfile("PfHFEMEtFraction_profile", "HFEMEtFraction()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1);
1095       mePhotonEtFraction_profile->setAxisTitle("nvtx", 1);
1096       meNeutralHadronEtFraction_profile->setAxisTitle("nvtx", 1);
1097       meChargedHadronEtFraction_profile->setAxisTitle("nvtx", 1);
1098       meHFHadronEtFraction_profile->setAxisTitle("nvtx", 1);
1099       meHFEMEtFraction_profile->setAxisTitle("nvtx", 1);
1100 
1101       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfPhotonEtFraction_profile",
1102                                                                 mePhotonEtFraction_profile));
1103       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfNeutralHadronEtFraction_profile",
1104                                                                 meNeutralHadronEtFraction_profile));
1105       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfChargedHadronEtFraction_profile",
1106                                                                 meChargedHadronEtFraction_profile));
1107       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFHadronEtFraction_profile",
1108                                                                 meHFHadronEtFraction_profile));
1109       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFEMEtFraction_profile",
1110                                                                 meHFEMEtFraction_profile));
1111 
1112       mePhotonEt = ibooker.book1D("PfPhotonEt", "photonEt()", 50, 0, 1000);
1113       meNeutralHadronEt = ibooker.book1D("PfNeutralHadronEt", "neutralHadronEt()", 50, 0, 1000);
1114       meElectronEt = ibooker.book1D("PfElectronEt", "electronEt()", 50, 0, 100);
1115       meChargedHadronEt = ibooker.book1D("PfChargedHadronEt", "chargedHadronEt()", 50, 0, 2000);
1116       meMuonEt = ibooker.book1D("PfMuonEt", "muonEt()", 50, 0, 100);
1117       meHFHadronEt = ibooker.book1D("PfHFHadronEt", "HFHadronEt()", 50, 0, 2000);
1118       meHFEMEt = ibooker.book1D("PfHFEMEt", "HFEMEt()", 50, 0, 1000);
1119 
1120       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfPhotonEt", mePhotonEt));
1121       map_of_MEs.insert(
1122           std::pair<std::string, MonitorElement*>(DirName + "/" + "PfNeutralHadronEt", meNeutralHadronEt));
1123       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfElectronEt", meElectronEt));
1124       map_of_MEs.insert(
1125           std::pair<std::string, MonitorElement*>(DirName + "/" + "PfChargedHadronEt", meChargedHadronEt));
1126       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfMuonEt", meMuonEt));
1127       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFHadronEt", meHFHadronEt));
1128       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFEMEt", meHFEMEt));
1129 
1130       mePhotonEt_profile =
1131           ibooker.bookProfile("PfPhotonEt_profile", "photonEt()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1000);
1132       meNeutralHadronEt_profile = ibooker.bookProfile(
1133           "PfNeutralHadronEt_profile", "neutralHadronEt()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1000);
1134       meChargedHadronEt_profile = ibooker.bookProfile(
1135           "PfChargedHadronEt_profile", "chargedHadronEt()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1000);
1136       meHFHadronEt_profile =
1137           ibooker.bookProfile("PfHFHadronEt_profile", "HFHadronEt()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1000);
1138       meHFEMEt_profile = ibooker.bookProfile("PfHFEMEt_profile", "HFEMEt()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1000);
1139 
1140       mePhotonEt_profile->setAxisTitle("nvtx", 1);
1141       meNeutralHadronEt_profile->setAxisTitle("nvtx", 1);
1142       meChargedHadronEt_profile->setAxisTitle("nvtx", 1);
1143       meHFHadronEt_profile->setAxisTitle("nvtx", 1);
1144       meHFEMEt_profile->setAxisTitle("nvtx", 1);
1145 
1146       map_of_MEs.insert(
1147           std::pair<std::string, MonitorElement*>(DirName + "/" + "PfPhotonEt_profile", mePhotonEt_profile));
1148       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfNeutralHadronEt_profile",
1149                                                                 meNeutralHadronEt_profile));
1150       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfChargedHadronEt_profile",
1151                                                                 meChargedHadronEt_profile));
1152       map_of_MEs.insert(
1153           std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFHadronEt_profile", meHFHadronEt_profile));
1154       map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "PfHFEMEt_profile", meHFEMEt_profile));
1155     }
1156 
1157     if (isCaloMet_) {
1158       if (fill_met_high_level_histo) {  //now configurable in python file
1159         hMExLS = ibooker.book2D("MExLS", "MEx_LS", 200, -200, 200, 250, 0., 2500.);
1160         hMExLS->setAxisTitle("MEx [GeV]", 1);
1161         hMExLS->setAxisTitle("Lumi Section", 2);
1162         hMExLS->setOption("colz");
1163         hMEyLS = ibooker.book2D("MEyLS", "MEy_LS", 200, -200, 200, 250, 0., 2500.);
1164         hMEyLS->setAxisTitle("MEy [GeV]", 1);
1165         hMEyLS->setAxisTitle("Lumi Section", 2);
1166         hMEyLS->setOption("colz");
1167         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "MExLS", hMExLS));
1168         map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "MEyLS", hMEyLS));
1169       }
1170     }
1171 
1172     hMETRate = ibooker.book1D("METRate", "METRate", 200, 0, 1000);
1173     map_of_MEs.insert(std::pair<std::string, MonitorElement*>(DirName + "/" + "METRate", hMETRate));
1174 
1175     ibooker.setCurrentFolder("JetMET");
1176     lumisecME = ibooker.book1D("lumisec", "lumisec", 2501, -1., 2500.);
1177     map_of_MEs.insert(std::pair<std::string, MonitorElement*>("JetMET/lumisec", lumisecME));
1178   }  //all non Z plots (restrict Z Plots only for resolution study)
1179 }
1180 
1181 // ***********************************************************
1182 void METAnalyzer::dqmBeginRun(const edm::Run& iRun, const edm::EventSetup& iSetup) {
1183   const L1GtTriggerMenu* menu = &iSetup.getData(l1gtTrigMenuToken_);
1184   for (CItAlgo techTrig = menu->gtTechnicalTriggerMap().begin(); techTrig != menu->gtTechnicalTriggerMap().end();
1185        ++techTrig) {
1186     if ((techTrig->second).algoName() == m_l1algoname_) {
1187       m_bitAlgTechTrig_ = (techTrig->second).algoBitNumber();
1188       break;
1189     }
1190   }
1191 
1192   //  std::cout  << "Run " << iRun.run() << " hltconfig.init "
1193   //             << hltConfig_.init(iRun,iSetup,triggerResultsLabel_.process(),changed_) << " length: "<<hltConfig_.triggerNames().size()<<" changed "<<changed_<<std::endl;
1194   bool changed(true);
1195   if (hltConfig_.init(iRun, iSetup, triggerResultsLabel_.process(), changed)) {
1196     if (changed) {
1197       //hltConfig_.dump("ProcessName");
1198       //hltConfig_.dump("GlobalTag");
1199       //hltConfig_.dump("TableName");
1200       //      hltConfig_.dump("Streams");
1201       //      hltConfig_.dump("Datasets");
1202       //      hltConfig_.dump("PrescaleTable");
1203       //      hltConfig_.dump("ProcessPSet");
1204     }
1205   } else {
1206     if (verbose_)
1207       std::cout << "HLTEventAnalyzerAOD::analyze:"
1208                 << " config extraction failure with process name " << triggerResultsLabel_.process() << std::endl;
1209   }
1210 
1211   allTriggerNames_.clear();
1212   for (unsigned int i = 0; i < hltConfig_.size(); i++) {
1213     allTriggerNames_.push_back(hltConfig_.triggerName(i));
1214   }
1215   //  std::cout<<"Length: "<<allTriggerNames_.size()<<std::endl;
1216 
1217   triggerSelectedSubFolders_ = parameters.getParameter<edm::VParameterSet>("triggerSelectedSubFolders");
1218   for (std::vector<GenericTriggerEventFlag*>::const_iterator it = triggerFolderEventFlag_.begin();
1219        it != triggerFolderEventFlag_.end();
1220        it++) {
1221     int pos = it - triggerFolderEventFlag_.begin();
1222     if ((*it)->on()) {
1223       (*it)->initRun(iRun, iSetup);
1224       if (triggerSelectedSubFolders_[pos].exists(std::string("hltDBKey"))) {
1225         if ((*it)->expressionsFromDB((*it)->hltDBKey(), iSetup)[0] != "CONFIG_ERROR")
1226           triggerFolderExpr_[pos] = (*it)->expressionsFromDB((*it)->hltDBKey(), iSetup);
1227       }
1228     }
1229   }
1230   if (isMiniAODMet_) {
1231     bool changed_filter = true;
1232     std::vector<int> initializeFilter(8, -1);  //we have 8 filters at the moment
1233     miniaodFilterIndex_ = initializeFilter;
1234     if (FilterhltConfig_.init(iRun, iSetup, METFilterMiniAODLabel_.process(), changed_filter)) {
1235       miniaodfilterdec = 0;
1236       for (unsigned int i = 0; i < FilterhltConfig_.size(); i++) {
1237         std::string search = FilterhltConfig_.triggerName(i).substr(
1238             5);  //actual label of filter, the first 5 items are Flag_, so stripped off
1239         std::string search2 =
1240             HBHENoiseStringMiniAOD;  //all filters end with DQM, which is not in the flag --> ONLY not for HBHEFilters
1241         std::size_t found = search2.find(search);
1242         if (found != std::string::npos) {
1243           miniaodFilterIndex_[0] = i;
1244         }
1245         search2 = CSCHaloResultTag_.label().substr(0, CSCHaloResultTag_.label().size() - 3);
1246         found = search2.find(search);
1247         if (found != std::string::npos) {
1248           miniaodFilterIndex_[1] = i;
1249         }
1250         search2 = eeBadScFilterTag_.label().substr(0, eeBadScFilterTag_.label().size() - 3);
1251         found = search2.find(search);
1252         if (found != std::string::npos) {
1253           miniaodFilterIndex_[2] = i;
1254         }
1255         search2 = HBHEIsoNoiseStringMiniAOD;
1256         found = search2.find(search);
1257         if (found != std::string::npos) {
1258           miniaodFilterIndex_[3] = i;
1259         }
1260         search2 = CSCHalo2015ResultTag_.label().substr(0, CSCHalo2015ResultTag_.label().size() - 3);
1261         found = search2.find(search);
1262         if (found != std::string::npos) {
1263           miniaodFilterIndex_[4] = i;
1264         }
1265         search2 = EcalDeadCellTriggerTag_.label().substr(0, EcalDeadCellTriggerTag_.label().size() - 3);
1266         found = search2.find(search);
1267         if (found != std::string::npos) {
1268           miniaodFilterIndex_[5] = i;
1269         }
1270         search2 = EcalDeadCellBoundaryTag_.label().substr(0, EcalDeadCellBoundaryTag_.label().size() - 3);
1271         found = search2.find(search);
1272         if (found != std::string::npos) {
1273           miniaodFilterIndex_[6] = i;
1274         }
1275         search2 = HcalStripHaloTag_.label().substr(0, HcalStripHaloTag_.label().size() - 3);
1276         found = search2.find(search);
1277         if (found != std::string::npos) {
1278           miniaodFilterIndex_[7] = i;
1279         }
1280       }
1281     } else if (FilterhltConfig_.init(iRun, iSetup, METFilterMiniAODLabel2_.process(), changed_filter)) {
1282       miniaodfilterdec = 1;
1283       for (unsigned int i = 0; i < FilterhltConfig_.size(); i++) {
1284         std::string search = FilterhltConfig_.triggerName(i).substr(
1285             5);  //actual label of filter, the first 5 items are Flag_, so stripped off
1286         std::string search2 =
1287             HBHENoiseStringMiniAOD;  //all filters end with DQM, which is not in the flag --> ONLY not for HBHEFilters
1288         std::size_t found = search2.find(search);
1289         if (found != std::string::npos) {
1290           miniaodFilterIndex_[0] = i;
1291         }
1292         search2 = CSCHaloResultTag_.label().substr(0, CSCHaloResultTag_.label().size() - 3);
1293         found = search2.find(search);
1294         if (found != std::string::npos) {
1295           miniaodFilterIndex_[1] = i;
1296         }
1297         search2 = eeBadScFilterTag_.label().substr(0, eeBadScFilterTag_.label().size() - 3);
1298         found = search2.find(search);
1299         if (found != std::string::npos) {
1300           miniaodFilterIndex_[2] = i;
1301         }
1302         search2 = HBHEIsoNoiseStringMiniAOD;
1303         found = search2.find(search);
1304         if (found != std::string::npos) {
1305           miniaodFilterIndex_[3] = i;
1306         }
1307         search2 = CSCHalo2015ResultTag_.label().substr(0, CSCHalo2015ResultTag_.label().size() - 3);
1308         found = search2.find(search);
1309         if (found != std::string::npos) {
1310           miniaodFilterIndex_[4] = i;
1311         }
1312         search2 = EcalDeadCellTriggerTag_.label().substr(0, EcalDeadCellTriggerTag_.label().size() - 3);
1313         found = search2.find(search);
1314         if (found != std::string::npos) {
1315           miniaodFilterIndex_[5] = i;
1316         }
1317         search2 = EcalDeadCellBoundaryTag_.label().substr(0, EcalDeadCellBoundaryTag_.label().size() - 3);
1318         found = search2.find(search);
1319         if (found != std::string::npos) {
1320           miniaodFilterIndex_[6] = i;
1321         }
1322         search2 = HcalStripHaloTag_.label().substr(0, HcalStripHaloTag_.label().size() - 3);
1323         found = search2.find(search);
1324         if (found != std::string::npos) {
1325           miniaodFilterIndex_[7] = i;
1326         }
1327       }
1328     } else {
1329       edm::LogWarning("MiniAOD METAN Filter HLT OBject version")
1330           << "nothing found with both RECO and reRECO label" << std::endl;
1331     }
1332   }
1333 }
1334 
1335 // ***********************************************************
1336 void METAnalyzer::dqmEndRun(const edm::Run& iRun, const edm::EventSetup& iSetup) {
1337   //
1338   //--- Check the time length of the Run from the lumi section plots
1339 
1340   TH1F* tlumisec;
1341 
1342   MonitorElement* meLumiSec = map_dijet_MEs["aaa"];
1343   meLumiSec = map_dijet_MEs["JetMET/lumisec"];
1344 
1345   int totlsec = 0;
1346   int totlssecsum = 0;
1347   double totltime = 0.;
1348   if (meLumiSec && meLumiSec->getRootObject()) {
1349     tlumisec = meLumiSec->getTH1F();
1350     //check overflow bin (if we have more than 2500 LS in a run)
1351     //lumisec is filled every time the analyze section is processed
1352     //we know an LS is present only once in a run: normalize how many events we had on average
1353     //if lumi fluctuates strongly might be unreliable for overflow bin though
1354     for (int i = 0; i < (tlumisec->GetNbinsX()); i++) {
1355       if (tlumisec->GetBinContent(i) != 0) {
1356         totlsec += 1;
1357         totlssecsum += tlumisec->GetBinContent(i);
1358       }
1359     }
1360     int num_per_ls = (double)totlssecsum / (double)totlsec;
1361     totlsec = totlsec + tlumisec->GetBinContent(tlumisec->GetNbinsX() + 1) / (double)num_per_ls;
1362     totltime = double(totlsec * 90);  // one lumi sec ~ 90 (sec)
1363   }
1364 
1365   if (totltime == 0.)
1366     totltime = 1.;
1367 
1368   std::string dirName = FolderName_ + metCollectionLabel_.label() + "/";
1369   //dbe_->setCurrentFolder(dirName);
1370 
1371   //below is the original METAnalyzer formulation
1372 
1373   for (std::vector<std::string>::const_iterator ic = folderNames_.begin(); ic != folderNames_.end(); ic++) {
1374     std::string DirName;
1375     DirName = dirName + *ic;
1376     makeRatePlot(DirName, totltime);
1377     for (std::vector<GenericTriggerEventFlag*>::const_iterator it = triggerFolderEventFlag_.begin();
1378          it != triggerFolderEventFlag_.end();
1379          it++) {
1380       int pos = it - triggerFolderEventFlag_.begin();
1381       if ((*it)->on()) {
1382         makeRatePlot(DirName + "/" + triggerFolderLabels_[pos], totltime);
1383       }
1384     }
1385   }
1386 }
1387 
1388 // ***********************************************************
1389 void METAnalyzer::makeRatePlot(std::string DirName, double totltime) {
1390   //dbe_->setCurrentFolder(DirName);
1391   MonitorElement* meMET = map_dijet_MEs[DirName + "/" + "MET"];
1392   MonitorElement* mMETRate = map_dijet_MEs[DirName + "/" + "METRate"];
1393 
1394   TH1F* tMET;
1395   TH1F* tMETRate;
1396 
1397   if (meMET && mMETRate) {
1398     if (meMET->getRootObject() && mMETRate->getRootObject()) {
1399       tMET = meMET->getTH1F();
1400 
1401       // Integral plot & convert number of events to rate (hz)
1402       tMETRate = (TH1F*)tMET->Clone("METRateHist");
1403       for (int i = tMETRate->GetNbinsX() - 1; i >= 0; i--) {
1404         tMETRate->SetBinContent(i + 1, tMETRate->GetBinContent(i + 2) + tMET->GetBinContent(i + 1));
1405       }
1406       for (int i = 0; i < tMETRate->GetNbinsX(); i++) {
1407         tMETRate->SetBinContent(i + 1, tMETRate->GetBinContent(i + 1) / double(totltime));
1408         mMETRate->setBinContent(i + 1, tMETRate->GetBinContent(i + 1));
1409       }
1410     }
1411   }
1412 }
1413 
1414 // ***********************************************************
1415 void METAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
1416   // *** Fill lumisection ME
1417   int myLuminosityBlock;
1418   myLuminosityBlock = iEvent.luminosityBlock();
1419   if (fill_met_high_level_histo) {
1420     lumisecME = map_dijet_MEs["JetMET/lumisec"];
1421     if (lumisecME && lumisecME->getRootObject())
1422       lumisecME->Fill(myLuminosityBlock);
1423   }
1424 
1425   if (myLuminosityBlock < LSBegin_)
1426     return;
1427   if (myLuminosityBlock > LSEnd_ && LSEnd_ > 0)
1428     return;
1429 
1430   if (verbose_)
1431     std::cout << "METAnalyzer analyze" << std::endl;
1432 
1433   std::string DirName = FolderName_ + metCollectionLabel_.label();
1434 
1435   // ==========================================================
1436   // Trigger information
1437   //
1438   //  trigJetMB_=0;
1439   //  trigHighPtJet_=0;
1440   //  trigLowPtJet_=0;
1441   //  trigMinBias_=0;
1442   //  trigHighMET_=0;
1443   //  //  _trig_LowMET=0;
1444   //  trigEle_=0;
1445   //  trigMuon_=0;
1446   //  trigPhysDec_=0;
1447   std::vector<int> triggerFolderDecisions;
1448   triggerFolderDecisions_ = std::vector<int>(triggerFolderEventFlag_.size(), 0);
1449   // **** Get the TriggerResults container
1450   edm::Handle<edm::TriggerResults> triggerResults;
1451   iEvent.getByToken(triggerResultsToken_, triggerResults);
1452 
1453   if (triggerResults.isValid()) {
1454     /////////// Analyzing HLT Trigger Results (TriggerResults) //////////
1455     // Check how many HLT triggers are in triggerResults
1456     int ntrigs = (*triggerResults).size();
1457     if (verbose_)
1458       std::cout << "ntrigs=" << ntrigs << std::endl;
1459     // If index=ntrigs, this HLT trigger doesn't exist in the HLT table for this data.
1460     for (std::vector<GenericTriggerEventFlag*>::const_iterator it = triggerFolderEventFlag_.begin();
1461          it != triggerFolderEventFlag_.end();
1462          it++) {
1463       unsigned int pos = it - triggerFolderEventFlag_.begin();
1464       bool fd = (*it)->accept(iEvent, iSetup);
1465       triggerFolderDecisions_[pos] = fd;
1466     }
1467     allTriggerDecisions_.clear();
1468     for (unsigned int i = 0; i < allTriggerNames_.size(); ++i) {
1469       allTriggerDecisions_.push_back((*triggerResults).accept(i));
1470       //std::cout<<"TR "<<(*triggerResults).size()<<" "<<(*triggerResults).accept(i)<<" "<<allTriggerNames_[i]<<std::endl;
1471     }
1472   }
1473 
1474   // ==========================================================
1475   // MET information
1476 
1477   // **** Get the MET container
1478   edm::Handle<reco::METCollection> tcmetcoll;
1479   edm::Handle<reco::CaloMETCollection> calometcoll;
1480   edm::Handle<reco::PFMETCollection> pfmetcoll;
1481   edm::Handle<pat::METCollection> patmetcoll;
1482 
1483   //if(isTCMet_){
1484   //iEvent.getByToken(tcMetToken_, tcmetcoll);
1485   //if(!tcmetcoll.isValid()) return;
1486   //}
1487   if (isCaloMet_) {
1488     iEvent.getByToken(caloMetToken_, calometcoll);
1489     if (!calometcoll.isValid())
1490       return;
1491   }
1492   if (isPFMet_) {
1493     iEvent.getByToken(pfMetToken_, pfmetcoll);
1494     if (!pfmetcoll.isValid())
1495       return;
1496   }
1497   if (isMiniAODMet_) {
1498     iEvent.getByToken(patMetToken_, patmetcoll);
1499     if (!patmetcoll.isValid())
1500       return;
1501   }
1502 
1503   const MET* met = nullptr;
1504   const pat::MET* patmet = nullptr;
1505   const PFMET* pfmet = nullptr;
1506   const CaloMET* calomet = nullptr;
1507   //if(isTCMet_){
1508   //met=&(tcmetcoll->front());
1509   //}
1510   if (isPFMet_) {
1511     assert(!pfmetcoll->empty());
1512     met = &(pfmetcoll->front());
1513     pfmet = &(pfmetcoll->front());
1514   }
1515   if (isCaloMet_) {
1516     assert(!calometcoll->empty());
1517     met = &(calometcoll->front());
1518     calomet = &(calometcoll->front());
1519   }
1520   if (isMiniAODMet_) {
1521     assert(!patmetcoll->empty());
1522     met = &(patmetcoll->front());
1523     patmet = &(patmetcoll->front());
1524   }
1525 
1526   LogTrace("METAnalyzer") << "[METAnalyzer] Call to the MET analyzer";
1527 
1528   // ==========================================================
1529   // TCMET
1530 
1531   //if (/*isTCMet_ || */(isCaloMet_ && metCollectionLabel_.label() == "corMetGlobalMuons")) {
1532 
1533   //iEvent.getByToken(MuonToken_, muonHandle_);
1534   //iEvent.getByToken(TrackToken_, trackHandle_);
1535   //iEvent.getByToken(ElectronToken_, electronHandle_);
1536   //iEvent.getByToken(BeamspotToken_, beamSpotHandle_);
1537   //iEvent.getByToken(tcMETValueMapToken_,tcMetValueMapHandle_);
1538 
1539   //if(!muonHandle_.isValid())     edm::LogInfo("OutputInfo") << "falied to retrieve muon data require by MET Task";
1540   //if(!trackHandle_.isValid())    edm::LogInfo("OutputInfo") << "falied to retrieve track data require by MET Task";
1541   //if(!electronHandle_.isValid()) edm::LogInfo("OutputInfo") << "falied to retrieve electron data require by MET Task";
1542   //if(!beamSpotHandle_.isValid()) edm::LogInfo("OutputInfo") << "falied to retrieve beam spot data require by MET Task";
1543 
1544   //beamSpot_ = ( beamSpotHandle_.isValid() ) ? beamSpotHandle_->position() : math::XYZPoint(0, 0, 0);
1545   //}
1546 
1547   // ==========================================================
1548   bool bJetID = false;
1549   bool bDiJetID = false;
1550   // Jet ID -------------------------------------------------------
1551   //
1552 
1553   edm::Handle<CaloJetCollection> caloJets;
1554   edm::Handle<JPTJetCollection> jptJets;
1555   edm::Handle<PFJetCollection> pfJets;
1556   edm::Handle<pat::JetCollection> patJets;
1557 
1558   int collsize = -1;
1559 
1560   if (isCaloMet_) {
1561     iEvent.getByToken(caloJetsToken_, caloJets);
1562     if (!caloJets.isValid()) {
1563       LogDebug("") << "METAnalyzer: Could not find calojet product" << std::endl;
1564       if (verbose_)
1565         std::cout << "METAnalyzer: Could not find calojet product" << std::endl;
1566     }
1567     collsize = caloJets->size();
1568   }
1569   ///*
1570   //if (isTCMet_){
1571   //iEvent.getByToken(jptJetsToken_, jptJets);
1572   //if (!jptJets.isValid()) {
1573   //  LogDebug("") << "METAnalyzer: Could not find jptjet product" << std::endl;
1574   //  if (verbose_) std::cout << "METAnalyzer: Could not find jptjet product" << std::endl;
1575   //}
1576   //collsize=jptJets->size();
1577   //}*/
1578 
1579   edm::Handle<edm::ValueMap<reco::JetID> > jetID_ValueMap_Handle;
1580   if (/*isTCMet_ || */ isCaloMet_) {
1581     if (!runcosmics_) {
1582       iEvent.getByToken(jetID_ValueMapToken_, jetID_ValueMap_Handle);
1583     }
1584   }
1585 
1586   if (isMiniAODMet_) {
1587     iEvent.getByToken(patJetsToken_, patJets);
1588     if (!patJets.isValid()) {
1589       LogDebug("") << "METAnalyzer: Could not find patjet product" << std::endl;
1590       if (verbose_)
1591         std::cout << "METAnalyzer: Could not find patjet product" << std::endl;
1592     }
1593     collsize = patJets->size();
1594   }
1595 
1596   if (isPFMet_) {
1597     iEvent.getByToken(pfJetsToken_, pfJets);
1598     if (!pfJets.isValid()) {
1599       LogDebug("") << "METAnalyzer: Could not find pfjet product" << std::endl;
1600       if (verbose_)
1601         std::cout << "METAnalyzer: Could not find pfjet product" << std::endl;
1602     }
1603     collsize = pfJets->size();
1604   }
1605 
1606   unsigned int ind1 = -1;
1607   double pt1 = -1;
1608   bool pass_jetID1 = false;
1609   unsigned int ind2 = -1;
1610   double pt2 = -1;
1611   bool pass_jetID2 = false;
1612 
1613   edm::Handle<reco::JetCorrector> jetCorr;
1614   bool pass_correction_flag = false;
1615   if (!isMiniAODMet_) {
1616     iEvent.getByToken(jetCorrectorToken_, jetCorr);
1617     if (jetCorr.isValid()) {
1618       pass_correction_flag = true;
1619     }
1620   } else {
1621     pass_correction_flag = true;
1622   }
1623   //do loose jet ID-> check threshold on corrected jets
1624   for (int ijet = 0; ijet < collsize; ijet++) {
1625     double pt_jet = -10;
1626     double scale = 1.;
1627     bool iscleaned = false;
1628     if (pass_correction_flag) {
1629       if (isCaloMet_) {
1630         scale = jetCorr->correction((*caloJets)[ijet]);
1631       }
1632       //if(isTCMet_){
1633       //scale = jetCorr->correction((*jptJets)[ijet]);
1634       //}
1635       if (isPFMet_) {
1636         scale = jetCorr->correction((*pfJets)[ijet]);
1637       }
1638     }
1639     if (isCaloMet_) {
1640       pt_jet = scale * (*caloJets)[ijet].pt();
1641       if (pt_jet > ptThreshold_) {
1642         reco::CaloJetRef calojetref(caloJets, ijet);
1643         if (!runcosmics_) {
1644           reco::JetID jetID = (*jetID_ValueMap_Handle)[calojetref];
1645           iscleaned = jetIDFunctorLoose((*caloJets)[ijet], jetID);
1646         } else {
1647           iscleaned = true;
1648         }
1649       }
1650     }
1651     ///*
1652     //if(isTCMet_){
1653     //pt_jet=scale*(*jptJets)[ijet].pt();
1654     //if(pt_jet> ptThreshold_){
1655     //  const edm::RefToBase<reco::Jet>&  rawJet = (*jptJets)[ijet].getCaloJetRef();
1656     //  const reco::CaloJet *rawCaloJet = dynamic_cast<const reco::CaloJet*>(&*rawJet);
1657     //  reco::CaloJetRef const theCaloJetRef = (rawJet).castTo<reco::CaloJetRef>();
1658     //  if(!runcosmics_){
1659     //    reco::JetID jetID = (*jetID_ValueMap_Handle)[theCaloJetRef];
1660     //    iscleaned = jetIDFunctorLoose(*rawCaloJet, jetID);
1661     //  }else{
1662     //    iscleaned=true;
1663     //  }
1664     //}
1665     //}*/
1666     if (isPFMet_) {
1667       pt_jet = scale * (*pfJets)[ijet].pt();
1668       if (pt_jet > ptThreshold_) {
1669         iscleaned = pfjetIDFunctorLoose((*pfJets)[ijet]);
1670       }
1671     }
1672     if (isMiniAODMet_) {
1673       pt_jet = (*patJets)[ijet].pt();
1674       if (pt_jet > ptThreshold_) {
1675         pat::strbitset stringbitset = pfjetIDFunctorLoose.getBitTemplate();
1676         iscleaned = pfjetIDFunctorLoose((*patJets)[ijet], stringbitset);
1677       }
1678     }
1679     if (iscleaned) {
1680       bJetID = true;
1681     }
1682     if (pt_jet > pt1) {
1683       pt2 = pt1;
1684       ind2 = ind1;
1685       pass_jetID2 = pass_jetID1;
1686       pt1 = pt_jet;
1687       ind1 = ijet;
1688       pass_jetID1 = iscleaned;
1689     } else if (pt_jet > pt2) {
1690       pt2 = pt_jet;
1691       ind2 = ijet;
1692       pass_jetID2 = iscleaned;
1693     }
1694   }
1695   if (pass_jetID1 && pass_jetID2) {
1696     double dphi = -1.0;
1697     if (isCaloMet_) {
1698       dphi = fabs((*caloJets)[ind1].phi() - (*caloJets)[ind2].phi());
1699     }
1700     ///* if(isTCMet_){
1701     //dphi=fabs((*jptJets)[ind1].phi()-(*jptJets)[ind2].phi());
1702     //}*/
1703     if (isPFMet_) {
1704       dphi = fabs((*pfJets)[ind1].phi() - (*pfJets)[ind2].phi());
1705     }
1706     if (isMiniAODMet_) {
1707       dphi = fabs((*patJets)[0].phi() - (*patJets)[1].phi());
1708     }
1709     if (dphi > acos(-1.)) {
1710       dphi = 2 * acos(-1.) - dphi;
1711     }
1712     if (dphi > 2.7) {
1713       bDiJetID = true;
1714     }
1715   }
1716   // ==========================================================
1717   // ==========================================================
1718   //Vertex information
1719   Handle<VertexCollection> vertexHandle;
1720   iEvent.getByToken(vertexToken_, vertexHandle);
1721 
1722   if (!vertexHandle.isValid()) {
1723     LogDebug("") << "CaloMETAnalyzer: Could not find vertex collection" << std::endl;
1724     if (verbose_)
1725       std::cout << "CaloMETAnalyzer: Could not find vertex collection" << std::endl;
1726   }
1727   numPV_ = 0;
1728   if (vertexHandle.isValid()) {
1729     VertexCollection vertexCollection = *(vertexHandle.product());
1730     numPV_ = vertexCollection.size();
1731   }
1732   bool bPrimaryVertex = (bypassAllPVChecks_ || (numPV_ > 0));
1733 
1734   bool bZJets = false;
1735 
1736   edm::Handle<MuonCollection> Muons;
1737   iEvent.getByToken(MuonsToken_, Muons);
1738 
1739   reco::Candidate::PolarLorentzVector zCand;
1740 
1741   double pt_muon0 = -1;
1742   double pt_muon1 = -1;
1743   int mu_index0 = -1;
1744   int mu_index1 = -1;
1745   //fill it only for cleaned jets
1746   if (Muons.isValid() && Muons->size() > 1) {
1747     for (unsigned int i = 0; i < Muons->size(); i++) {
1748       bool pass_muon_id = false;
1749       bool pass_muon_iso = false;
1750       double dxy = fabs((*Muons)[i].muonBestTrack()->dxy());
1751       double dz = fabs((*Muons)[i].muonBestTrack()->dz());
1752       if (numPV_ > 0) {
1753         dxy = fabs((*Muons)[i].muonBestTrack()->dxy((*vertexHandle)[0].position()));
1754         dz = fabs((*Muons)[i].muonBestTrack()->dz((*vertexHandle)[0].position()));
1755       }
1756       if ((*Muons)[i].pt() > 20 && fabs((*Muons)[i].eta()) < 2.3) {
1757         if ((*Muons)[i].isGlobalMuon() && (*Muons)[i].isPFMuon() &&
1758             (*Muons)[i].globalTrack()->hitPattern().numberOfValidMuonHits() > 0 &&
1759             (*Muons)[i].numberOfMatchedStations() > 1 && dxy < 0.2 && (*Muons)[i].numberOfMatchedStations() > 1 &&
1760             dz < 0.5 && (*Muons)[i].innerTrack()->hitPattern().numberOfValidPixelHits() > 0 &&
1761             (*Muons)[i].innerTrack()->hitPattern().trackerLayersWithMeasurement() > 5) {
1762           pass_muon_id = true;
1763         }
1764         // Muon pf isolation DB corrected
1765         float muonIsoPFdb =
1766             ((*Muons)[i].pfIsolationR04().sumChargedHadronPt +
1767              std::max(0.,
1768                       (*Muons)[i].pfIsolationR04().sumNeutralHadronEt + (*Muons)[i].pfIsolationR04().sumPhotonEt -
1769                           0.5 * (*Muons)[i].pfIsolationR04().sumPUPt)) /
1770             (*Muons)[i].pt();
1771         if (muonIsoPFdb < 0.12) {
1772           pass_muon_iso = true;
1773         }
1774 
1775         if (pass_muon_id && pass_muon_iso) {
1776           if ((*Muons)[i].pt() > pt_muon0) {
1777             mu_index1 = mu_index0;
1778             pt_muon1 = pt_muon0;
1779             mu_index0 = i;
1780             pt_muon0 = (*Muons)[i].pt();
1781           } else if ((*Muons)[i].pt() > pt_muon1) {
1782             mu_index1 = i;
1783             pt_muon1 = (*Muons)[i].pt();
1784           }
1785         }
1786       }
1787     }
1788     if (mu_index0 >= 0 && mu_index1 >= 0) {
1789       if ((*Muons)[mu_index0].charge() * (*Muons)[mu_index1].charge() < 0) {
1790         zCand = (*Muons)[mu_index0].polarP4() + (*Muons)[mu_index1].polarP4();
1791         if (fabs(zCand.M() - 91.) < 20) {
1792           bZJets = true;
1793         }
1794       }
1795     }
1796   }
1797 
1798   // ==========================================================
1799 
1800   edm::Handle<L1GlobalTriggerReadoutRecord> gtReadoutRecord;
1801   iEvent.getByToken(gtToken_, gtReadoutRecord);
1802 
1803   bool techTriggerResultBxM2 = false;
1804   bool techTriggerResultBxM1 = false;
1805   bool techTriggerResultBx0 = false;
1806 
1807   if (!gtReadoutRecord.isValid()) {
1808     LogDebug("") << "METAnalyzer: Could not find GT readout record" << std::endl;
1809     if (verbose_)
1810       std::cout << "METAnalyzer: Could not find GT readout record product" << std::endl;
1811   } else {
1812     // trigger results before mask for BxInEvent -2 (E), -1 (F), 0 (L1A), 1, 2
1813     const TechnicalTriggerWord& technicalTriggerWordBeforeMaskBxM2 = gtReadoutRecord->technicalTriggerWord(-2);
1814     const TechnicalTriggerWord& technicalTriggerWordBeforeMaskBxM1 = gtReadoutRecord->technicalTriggerWord(-1);
1815     const TechnicalTriggerWord& technicalTriggerWordBeforeMaskBx0 = gtReadoutRecord->technicalTriggerWord();
1816     //const TechnicalTriggerWord&  technicalTriggerWordBeforeMaskBxG = gtReadoutRecord->technicalTriggerWord(1);
1817     //const TechnicalTriggerWord&  technicalTriggerWordBeforeMaskBxH = gtReadoutRecord->technicalTriggerWord(2);
1818     if (m_bitAlgTechTrig_ > -1 && !technicalTriggerWordBeforeMaskBx0.empty()) {
1819       techTriggerResultBx0 = technicalTriggerWordBeforeMaskBx0.at(m_bitAlgTechTrig_);
1820       if (techTriggerResultBx0 != 0) {
1821         techTriggerResultBxM2 = technicalTriggerWordBeforeMaskBxM2.at(m_bitAlgTechTrig_);
1822         techTriggerResultBxM1 = technicalTriggerWordBeforeMaskBxM1.at(m_bitAlgTechTrig_);
1823       }
1824     }
1825   }
1826 
1827   std::vector<bool> trigger_flag(4, false);
1828   if (techTriggerResultBx0 && techTriggerResultBxM2 &&
1829       techTriggerResultBxM1) {  //current and previous two bunches filled
1830     trigger_flag[0] = true;
1831   }
1832   if (techTriggerResultBx0 && techTriggerResultBxM1) {  //current and previous bunch filled
1833     trigger_flag[1] = true;
1834   }
1835   if (techTriggerResultBx0 && !techTriggerResultBxM1) {  //current bunch filled, but  previous bunch emtpy
1836     trigger_flag[2] = true;
1837   }
1838   if (techTriggerResultBx0 && !techTriggerResultBxM2 &&
1839       !techTriggerResultBxM1) {  //current bunch filled, but previous two bunches emtpy
1840     trigger_flag[3] = true;
1841   }
1842   std::vector<bool> filter_decisions(
1843       8, false);  //include all recommended filters, old filters in MiniAOD, and 2 new filters in testing phase
1844   if (!isMiniAODMet_ &&
1845       !runcosmics_) {  //not checked for MiniAOD -> for miniaod decision filled as "triggerResults" bool
1846     edm::Handle<bool> HBHENoiseFilterResultHandle;
1847     iEvent.getByToken(hbheNoiseFilterResultToken_, HBHENoiseFilterResultHandle);
1848     if (!HBHENoiseFilterResultHandle.isValid()) {
1849       LogDebug("") << "METAnalyzer: Could not find HBHENoiseFilterResult" << std::endl;
1850       if (verbose_)
1851         std::cout << "METAnalyzer: Could not find HBHENoiseFilterResult" << std::endl;
1852     }
1853     filter_decisions[0] = *HBHENoiseFilterResultHandle;
1854     edm::Handle<bool> CSCTightHaloFilterResultHandle;
1855     iEvent.getByToken(CSCHaloResultToken_, CSCTightHaloFilterResultHandle);
1856     if (!CSCTightHaloFilterResultHandle.isValid()) {
1857       LogDebug("") << "METAnalyzer: Could not find CSCTightHaloFilterResultHandle" << std::endl;
1858       if (verbose_)
1859         std::cout << "METAnalyzer: CSCTightHaloFilterResultHandle" << std::endl;
1860     }
1861     filter_decisions[1] = *CSCTightHaloFilterResultHandle;
1862     edm::Handle<bool> eeBadScFilterResultHandle;
1863     iEvent.getByToken(eeBadScFilterToken_, eeBadScFilterResultHandle);
1864     if (!eeBadScFilterResultHandle.isValid()) {
1865       LogDebug("") << "METAnalyzer: Could not find eeBadScFilterResultHandle" << std::endl;
1866       if (verbose_)
1867         std::cout << "METAnalyzer: eeBadScFilterResultHandle" << std::endl;
1868     }
1869     filter_decisions[2] = *eeBadScFilterResultHandle;
1870     edm::Handle<bool> HBHENoiseIsoFilterResultHandle;
1871     iEvent.getByToken(hbheIsoNoiseFilterResultToken_, HBHENoiseIsoFilterResultHandle);
1872     if (!HBHENoiseIsoFilterResultHandle.isValid()) {
1873       LogDebug("") << "METAnalyzer: Could not find HBHENoiseIsoFilterResult" << std::endl;
1874       if (verbose_)
1875         std::cout << "METAnalyzer: Could not find HBHENoiseIsoFilterResult" << std::endl;
1876     }
1877     filter_decisions[3] = *HBHENoiseIsoFilterResultHandle;
1878     edm::Handle<bool> CSCTightHalo2015FilterResultHandle;
1879     iEvent.getByToken(CSCHalo2015ResultToken_, CSCTightHalo2015FilterResultHandle);
1880     if (!CSCTightHalo2015FilterResultHandle.isValid()) {
1881       LogDebug("") << "METAnalyzer: Could not find CSCTightHalo2015FilterResultHandle" << std::endl;
1882       if (verbose_)
1883         std::cout << "METAnalyzer: CSCTightHalo2015FilterResultHandle" << std::endl;
1884     }
1885     filter_decisions[4] = *CSCTightHalo2015FilterResultHandle;
1886     edm::Handle<bool> EcalDeadCellTriggerFilterResultHandle;
1887     iEvent.getByToken(EcalDeadCellTriggerToken_, EcalDeadCellTriggerFilterResultHandle);
1888     if (!EcalDeadCellTriggerFilterResultHandle.isValid()) {
1889       LogDebug("") << "METAnalyzer: Could not find EcalDeadCellTriggerFilterResultHandle" << std::endl;
1890       if (verbose_)
1891         std::cout << "METAnalyzer: EcalDeadCellTriggerFilterResultHandle" << std::endl;
1892     }
1893     filter_decisions[5] = *EcalDeadCellTriggerFilterResultHandle;
1894     edm::Handle<bool> EcalDeadCellBoundaryHandle;
1895     iEvent.getByToken(EcalDeadCellBoundaryToken_, EcalDeadCellBoundaryHandle);
1896     if (!EcalDeadCellBoundaryHandle.isValid()) {
1897       LogDebug("") << "METAnalyzer: Could not find EcalDeadCellBoundaryHandle" << std::endl;
1898       if (verbose_)
1899         std::cout << "METAnalyzer: EcalDeadCellBoundaryHandle" << std::endl;
1900     }
1901     filter_decisions[6] = *EcalDeadCellBoundaryHandle;
1902     edm::Handle<bool> HcalStripHaloFilterHandle;
1903     iEvent.getByToken(HcalStripHaloToken_, HcalStripHaloFilterHandle);
1904     if (!HcalStripHaloFilterHandle.isValid()) {
1905       LogDebug("") << "METAnalyzer: Could not find CSCTightHalo2015FilterResultHandle" << std::endl;
1906       if (verbose_)
1907         std::cout << "METAnalyzer: CSCTightHalo2015FilterResultHandle" << std::endl;
1908     }
1909     filter_decisions[7] = *HcalStripHaloFilterHandle;
1910   } else if (isMiniAODMet_) {
1911     //miniaodFilterIndex_ is only filled in dqmBeginRun if isMiniAODMet_ true
1912     edm::Handle<edm::TriggerResults> metFilterResults;
1913     iEvent.getByToken(METFilterMiniAODToken_, metFilterResults);
1914     if (metFilterResults.isValid()) {
1915       if (miniaodFilterIndex_[0] != -1) {
1916         filter_decisions[0] = metFilterResults->accept(miniaodFilterIndex_[0]);
1917       }
1918       if (miniaodFilterIndex_[1] != -1) {
1919         filter_decisions[1] = metFilterResults->accept(miniaodFilterIndex_[1]);
1920       }
1921       if (miniaodFilterIndex_[2] != -1) {
1922         filter_decisions[2] = metFilterResults->accept(miniaodFilterIndex_[2]);
1923       }
1924       if (miniaodFilterIndex_[3] != -1) {
1925         filter_decisions[3] = metFilterResults->accept(miniaodFilterIndex_[3]);
1926       }
1927       if (miniaodFilterIndex_[4] != -1) {
1928         filter_decisions[4] = metFilterResults->accept(miniaodFilterIndex_[4]);
1929       }
1930       if (miniaodFilterIndex_[5] != -1) {
1931         filter_decisions[5] = metFilterResults->accept(miniaodFilterIndex_[5]);
1932       }
1933       if (miniaodFilterIndex_[6] != -1) {
1934         filter_decisions[6] = metFilterResults->accept(miniaodFilterIndex_[6]);
1935       }
1936       if (miniaodFilterIndex_[7] != -1) {
1937         filter_decisions[7] = metFilterResults->accept(miniaodFilterIndex_[7]);
1938       }
1939     } else {
1940       iEvent.getByToken(METFilterMiniAODToken2_, metFilterResults);
1941       if (metFilterResults.isValid()) {
1942         if (miniaodFilterIndex_[0] != -1) {
1943           filter_decisions[0] = metFilterResults->accept(miniaodFilterIndex_[0]);
1944         }
1945         if (miniaodFilterIndex_[1] != -1) {
1946           filter_decisions[1] = metFilterResults->accept(miniaodFilterIndex_[1]);
1947         }
1948         if (miniaodFilterIndex_[2] != -1) {
1949           filter_decisions[2] = metFilterResults->accept(miniaodFilterIndex_[2]);
1950         }
1951         if (miniaodFilterIndex_[3] != -1) {
1952           filter_decisions[3] = metFilterResults->accept(miniaodFilterIndex_[3]);
1953         }
1954         if (miniaodFilterIndex_[4] != -1) {
1955           filter_decisions[4] = metFilterResults->accept(miniaodFilterIndex_[4]);
1956         }
1957         if (miniaodFilterIndex_[5] != -1) {
1958           filter_decisions[5] = metFilterResults->accept(miniaodFilterIndex_[5]);
1959         }
1960         if (miniaodFilterIndex_[6] != -1) {
1961           filter_decisions[6] = metFilterResults->accept(miniaodFilterIndex_[6]);
1962         }
1963         if (miniaodFilterIndex_[7] != -1) {
1964           filter_decisions[7] = metFilterResults->accept(miniaodFilterIndex_[7]);
1965         }
1966       }
1967     }
1968   }
1969   bool HBHENoiseFilterResultFlag = filter_decisions[0];  //setup for RECO and MINIAOD
1970   // ==========================================================
1971   // HCAL Noise filter
1972   bool bHBHENoiseFilter = HBHENoiseFilterResultFlag;
1973 
1974   // DCS Filter
1975   bool bDCSFilter = (bypassAllDCSChecks_ || DCSFilter_->filter(iEvent, iSetup));
1976   // ==========================================================
1977   // Reconstructed MET Information - fill MonitorElements
1978   std::string DirName_old = DirName;
1979   for (std::vector<std::string>::const_iterator ic = folderNames_.begin(); ic != folderNames_.end(); ic++) {
1980     bool pass_selection = false;
1981     if ((*ic == "Uncleaned") && (isCaloMet_ || bPrimaryVertex)) {
1982       fillMESet(iEvent,
1983                 DirName_old + "/" + *ic,
1984                 *met,
1985                 patmet,
1986                 pfmet,
1987                 calomet,
1988                 zCand,
1989                 map_dijet_MEs,
1990                 trigger_flag,
1991                 filter_decisions);
1992       pass_selection = true;
1993     }
1994     //take two lines out for first check
1995     if ((*ic == "Cleaned") && bDCSFilter && bHBHENoiseFilter && bPrimaryVertex && bJetID) {
1996       fillMESet(iEvent,
1997                 DirName_old + "/" + *ic,
1998                 *met,
1999                 patmet,
2000                 pfmet,
2001                 calomet,
2002                 zCand,
2003                 map_dijet_MEs,
2004                 trigger_flag,
2005                 filter_decisions);
2006       pass_selection = true;
2007     }
2008     if ((*ic == "DiJet") && bDCSFilter && bHBHENoiseFilter && bPrimaryVertex && bDiJetID) {
2009       fillMESet(iEvent,
2010                 DirName_old + "/" + *ic,
2011                 *met,
2012                 patmet,
2013                 pfmet,
2014                 calomet,
2015                 zCand,
2016                 map_dijet_MEs,
2017                 trigger_flag,
2018                 filter_decisions);
2019       pass_selection = true;
2020     }
2021     if ((*ic == "ZJets") && bDCSFilter && bHBHENoiseFilter && bPrimaryVertex && bZJets) {
2022       fillMESet(iEvent,
2023                 DirName_old + "/" + *ic,
2024                 *met,
2025                 patmet,
2026                 pfmet,
2027                 calomet,
2028                 zCand,
2029                 map_dijet_MEs,
2030                 trigger_flag,
2031                 filter_decisions);
2032       pass_selection = true;
2033     }
2034     if (pass_selection && isPFMet_) {
2035       DirName = DirName_old + "/" + *ic;
2036     }
2037   }
2038 }
2039 
2040 // ***********************************************************
2041 void METAnalyzer::fillMESet(const edm::Event& iEvent,
2042                             std::string DirName,
2043                             const reco::MET& met,
2044                             const pat::MET* patmet,
2045                             const reco::PFMET* pfmet,
2046                             const reco::CaloMET* calomet,
2047                             const reco::Candidate::PolarLorentzVector& zCand,
2048                             std::map<std::string, MonitorElement*>& map_of_MEs,
2049                             std::vector<bool> techTriggerCase,
2050                             std::vector<bool> METFilterDecision) {
2051   bool bLumiSecPlot = fill_met_high_level_histo;
2052   bool fillPFCandidatePlots = false;
2053   if (DirName.find("Cleaned") != std::string::npos) {
2054     fillPFCandidatePlots = true;
2055     fillMonitorElement(iEvent,
2056                        DirName,
2057                        std::string(""),
2058                        met,
2059                        patmet,
2060                        pfmet,
2061                        calomet,
2062                        zCand,
2063                        map_of_MEs,
2064                        bLumiSecPlot,
2065                        fillPFCandidatePlots,
2066                        techTriggerCase,
2067                        METFilterDecision);
2068     for (unsigned int i = 0; i < triggerFolderLabels_.size(); i++) {
2069       fillPFCandidatePlots = false;
2070       if (triggerFolderDecisions_[i]) {
2071         fillMonitorElement(iEvent,
2072                            DirName,
2073                            triggerFolderLabels_[i],
2074                            met,
2075                            patmet,
2076                            pfmet,
2077                            calomet,
2078                            zCand,
2079                            map_of_MEs,
2080                            bLumiSecPlot,
2081                            fillPFCandidatePlots,
2082                            techTriggerCase,
2083                            METFilterDecision);
2084       }
2085     }
2086   } else if (DirName.find("DiJet") != std::string::npos) {
2087     fillMonitorElement(iEvent,
2088                        DirName,
2089                        std::string(""),
2090                        met,
2091                        patmet,
2092                        pfmet,
2093                        calomet,
2094                        zCand,
2095                        map_of_MEs,
2096                        bLumiSecPlot,
2097                        fillPFCandidatePlots,
2098                        techTriggerCase,
2099                        METFilterDecision);
2100     for (unsigned int i = 0; i < triggerFolderLabels_.size(); i++) {
2101       if (triggerFolderDecisions_[i])
2102         fillMonitorElement(iEvent,
2103                            DirName,
2104                            triggerFolderLabels_[i],
2105                            met,
2106                            patmet,
2107                            pfmet,
2108                            calomet,
2109                            zCand,
2110                            map_of_MEs,
2111                            bLumiSecPlot,
2112                            fillPFCandidatePlots,
2113                            techTriggerCase,
2114                            METFilterDecision);
2115     }
2116   } else if (DirName.find("ZJets") != std::string::npos) {
2117     fillMonitorElement(iEvent,
2118                        DirName,
2119                        std::string(""),
2120                        met,
2121                        patmet,
2122                        pfmet,
2123                        calomet,
2124                        zCand,
2125                        map_of_MEs,
2126                        bLumiSecPlot,
2127                        fillPFCandidatePlots,
2128                        techTriggerCase,
2129                        METFilterDecision);
2130   } else {
2131     fillMonitorElement(iEvent,
2132                        DirName,
2133                        std::string(""),
2134                        met,
2135                        patmet,
2136                        pfmet,
2137                        calomet,
2138                        zCand,
2139                        map_of_MEs,
2140                        bLumiSecPlot,
2141                        fillPFCandidatePlots,
2142                        techTriggerCase,
2143                        METFilterDecision);
2144   }
2145 }
2146 
2147 // ***********************************************************
2148 void METAnalyzer::fillMonitorElement(const edm::Event& iEvent,
2149                                      std::string DirName,
2150                                      std::string subFolderName,
2151                                      const reco::MET& met,
2152                                      const pat::MET* patmet,
2153                                      const reco::PFMET* pfmet,
2154                                      const reco::CaloMET* calomet,
2155                                      const reco::Candidate::PolarLorentzVector& zCand,
2156                                      std::map<std::string, MonitorElement*>& map_of_MEs,
2157                                      bool bLumiSecPlot,
2158                                      bool fillPFCandidatePlots,
2159                                      std::vector<bool> techTriggerCase,
2160                                      std::vector<bool> METFilterDecision) {
2161   bool do_only_Z_histograms = false;
2162   if (DirName.find("ZJets") != std::string::npos) {  //do Z plots only
2163     do_only_Z_histograms = true;
2164     //\vec{p}_{T}^{Z}+vec{u}_{T}+\vec{MET}=0
2165 
2166     double u_x = -met.px() - zCand.Px();
2167     double u_y = -met.py() - zCand.Py();
2168 
2169     //protection for VERY special case where Z-Pt==0
2170     double u_par = 0;
2171     double u_perp = sqrt(u_x * u_x + u_y * u_y);
2172     double e_Z_x = 0;
2173     double e_Z_y = 0;
2174     if (zCand.Pt() != 0) {
2175       e_Z_x = zCand.Px() / zCand.Pt();
2176       e_Z_y = zCand.Py() / zCand.Pt();
2177     }
2178     u_par = u_x * e_Z_x + u_y * e_Z_y;
2179     u_perp = -e_Z_y * u_x + e_Z_x * u_y;
2180 
2181     meZJets_u_par = map_of_MEs[DirName + "/" + "u_parallel_Z_inc"];
2182     if (meZJets_u_par && meZJets_u_par->getRootObject())
2183       meZJets_u_par->Fill(u_par);
2184     if (zCand.Pt() < 15) {
2185       meZJets_u_par_ZPt_0_15 = map_of_MEs[DirName + "/" + "u_parallel_ZPt_0_15"];
2186       if (meZJets_u_par_ZPt_0_15 && meZJets_u_par_ZPt_0_15->getRootObject())
2187         meZJets_u_par_ZPt_0_15->Fill(u_par);
2188     } else if (zCand.Pt() < 30) {
2189       meZJets_u_par_ZPt_15_30 = map_of_MEs[DirName + "/" + "u_parallel_ZPt_15_30"];
2190       if (meZJets_u_par_ZPt_15_30 && meZJets_u_par_ZPt_15_30->getRootObject())
2191         meZJets_u_par_ZPt_15_30->Fill(u_par);
2192     } else if (zCand.Pt() < 55) {
2193       meZJets_u_par_ZPt_30_55 = map_of_MEs[DirName + "/" + "u_parallel_ZPt_30_55"];
2194       if (meZJets_u_par_ZPt_30_55 && meZJets_u_par_ZPt_30_55->getRootObject())
2195         meZJets_u_par_ZPt_30_55->Fill(u_par);
2196     } else if (zCand.Pt() < 75) {
2197       meZJets_u_par_ZPt_55_75 = map_of_MEs[DirName + "/" + "u_parallel_ZPt_55_75"];
2198       if (meZJets_u_par_ZPt_55_75 && meZJets_u_par_ZPt_55_75->getRootObject())
2199         meZJets_u_par_ZPt_55_75->Fill(u_par);
2200     } else if (zCand.Pt() < 150) {
2201       meZJets_u_par_ZPt_75_150 = map_of_MEs[DirName + "/" + "u_parallel_ZPt_75_150"];
2202       if (meZJets_u_par_ZPt_75_150 && meZJets_u_par_ZPt_75_150->getRootObject())
2203         meZJets_u_par_ZPt_75_150->Fill(u_par);
2204     } else if (zCand.Pt() < 290) {
2205       meZJets_u_par_ZPt_150_290 = map_of_MEs[DirName + "/" + "u_parallel_ZPt_150_290"];
2206       if (meZJets_u_par_ZPt_150_290 && meZJets_u_par_ZPt_150_290->getRootObject())
2207         meZJets_u_par_ZPt_150_290->Fill(u_par);
2208     } else {
2209       meZJets_u_par_ZPt_290 = map_of_MEs[DirName + "/" + "u_parallel_ZPt_290"];
2210       if (meZJets_u_par_ZPt_290 && meZJets_u_par_ZPt_290->getRootObject())
2211         meZJets_u_par_ZPt_290->Fill(u_par);
2212     }
2213 
2214     meZJets_u_perp = map_of_MEs[DirName + "/" + "u_perp_Z_inc"];
2215     if (meZJets_u_perp && meZJets_u_perp->getRootObject())
2216       meZJets_u_perp->Fill(u_perp);
2217     if (zCand.Pt() < 15) {
2218       meZJets_u_perp_ZPt_0_15 = map_of_MEs[DirName + "/" + "u_perp_ZPt_0_15"];
2219       if (meZJets_u_perp_ZPt_0_15 && meZJets_u_perp_ZPt_0_15->getRootObject())
2220         meZJets_u_perp_ZPt_0_15->Fill(u_perp);
2221     } else if (zCand.Pt() < 30) {
2222       meZJets_u_perp_ZPt_15_30 = map_of_MEs[DirName + "/" + "u_perp_ZPt_15_30"];
2223       if (meZJets_u_perp_ZPt_15_30 && meZJets_u_perp_ZPt_15_30->getRootObject())
2224         meZJets_u_perp_ZPt_15_30->Fill(u_perp);
2225     } else if (zCand.Pt() < 55) {
2226       meZJets_u_perp_ZPt_30_55 = map_of_MEs[DirName + "/" + "u_perp_ZPt_30_55"];
2227       if (meZJets_u_perp_ZPt_30_55 && meZJets_u_perp_ZPt_30_55->getRootObject())
2228         meZJets_u_perp_ZPt_30_55->Fill(u_perp);
2229     } else if (zCand.Pt() < 75) {
2230       meZJets_u_perp_ZPt_55_75 = map_of_MEs[DirName + "/" + "u_perp_ZPt_55_75"];
2231       if (meZJets_u_perp_ZPt_55_75 && meZJets_u_perp_ZPt_55_75->getRootObject())
2232         meZJets_u_perp_ZPt_55_75->Fill(u_perp);
2233     } else if (zCand.Pt() < 150) {
2234       meZJets_u_perp_ZPt_75_150 = map_of_MEs[DirName + "/" + "u_perp_ZPt_75_150"];
2235       if (meZJets_u_perp_ZPt_75_150 && meZJets_u_perp_ZPt_75_150->getRootObject())
2236         meZJets_u_perp_ZPt_75_150->Fill(u_perp);
2237     } else if (zCand.Pt() < 290) {
2238       meZJets_u_perp_ZPt_150_290 = map_of_MEs[DirName + "/" + "u_perp_ZPt_150_290"];
2239       if (meZJets_u_perp_ZPt_150_290 && meZJets_u_perp_ZPt_150_290->getRootObject())
2240         meZJets_u_perp_ZPt_150_290->Fill(u_perp);
2241     } else {
2242       meZJets_u_perp_ZPt_290 = map_of_MEs[DirName + "/" + "u_perp_ZPt_290"];
2243       if (meZJets_u_perp_ZPt_290 && meZJets_u_perp_ZPt_290->getRootObject())
2244         meZJets_u_perp_ZPt_290->Fill(u_perp);
2245     }
2246   }
2247   if (!do_only_Z_histograms) {
2248     // Reconstructed MET Information
2249     double SumET = met.sumEt();
2250     double METSig = met.mEtSig();
2251     //double Ez     = met.e_longitudinal();
2252     double MET = met.pt();
2253     double MEx = met.px();
2254     double MEy = met.py();
2255     double METPhi = met.phi();
2256     //
2257     int myLuminosityBlock;
2258     myLuminosityBlock = iEvent.luminosityBlock();
2259     //
2260 
2261     if (!subFolderName.empty()) {
2262       DirName = DirName + "/" + subFolderName;
2263     }
2264 
2265     hTrigger = map_of_MEs[DirName + "/triggerResults"];
2266     if (hTrigger && hTrigger->getRootObject()) {
2267       for (unsigned int i = 0; i < allTriggerDecisions_.size(); i++) {
2268         if (i < (unsigned int)hTrigger->getNbinsX()) {
2269           hTrigger->Fill(i + .5, allTriggerDecisions_[i]);
2270         }
2271       }
2272     }
2273 
2274     hMEx = map_of_MEs[DirName + "/" + "MEx"];
2275     if (hMEx && hMEx->getRootObject())
2276       hMEx->Fill(MEx);
2277     hMEy = map_of_MEs[DirName + "/" + "MEy"];
2278     if (hMEy && hMEy->getRootObject())
2279       hMEy->Fill(MEy);
2280     hMET = map_of_MEs[DirName + "/" + "MET"];
2281     if (hMET && hMET->getRootObject())
2282       hMET->Fill(MET);
2283     hMET_2 = map_of_MEs[DirName + "/" + "MET_2"];
2284     if (hMET_2 && hMET_2->getRootObject())
2285       hMET_2->Fill(MET);
2286 
2287     //hMET_HBHENoiseFilter        = ibooker.book1D("MET_HBHENoiseFilter",        "MET_HBHENoiseFiltered",        200,    0, 1000);
2288     //hMET_CSCTightHaloFilter    = ibooker.book1D("MET_CSCTightHaloFilter",        "MET_CSCTightHaloFiltered",        200,    0, 1000);
2289     //hMET_eeBadScFilter    = ibooker.book1D("MET_eeBadScFilter",        "MET_eeBadScFiltered",        200,    0, 1000);
2290     //hMET_HBHEIsoNoiseFilter        = ibooker.book1D("MET_HBHEIsoNoiseFilter",        "MET_HBHEIsoNoiseFiltered",        200,    0, 1000);
2291     //hMET_CSCTightHalo2015Filter    = ibooker.book1D("MET_CSCTightHalo2015Filter",        "MET_CSCTightHalo2015Filtered",        200,    0, 1000);
2292     //hMET_EcalDeadCellTriggerFilter    = ibooker.book1D("MET_EcalDeadCellTriggerFilter",        "MET_EcalDeadCellTriggerFiltered",        200,    0, 1000);
2293     //hMET_EcalDeadCellBoundaryFilter    = ibooker.book1D("MET_EcalDeadCellBoundaryFilter",        "MET_EcalDeadCellBoundaryFiltered",        200,    0, 1000);
2294     //hMET_HcalStripHaloFilter    = ibooker.book1D("MET_HcalStripHaloFilter",        "MET_HcalStripHaloFiltered",        200,    0, 1000);
2295 
2296     bool HBHENoiseFilterResult = false;
2297     bool CSCTightHaloFilterResult = false;
2298     bool eeBadScFilterResult = false;
2299     bool HBHEIsoNoiseFilterResult = false;
2300     bool CSCTightHalo2015FilterResult = false;
2301     bool EcalDeadCellTriggerFilterResult = false;
2302     bool EcalDeadCellBoundaryFilterResult = false;
2303     bool HcalStripHaloFilterResult = false;
2304     HBHENoiseFilterResult = METFilterDecision[0];
2305     if (HBHENoiseFilterResult) {
2306       hMET_HBHENoiseFilter = map_of_MEs[DirName + "/" + "MET_HBHENoiseFilter"];
2307       if (hMET_HBHENoiseFilter && hMET_HBHENoiseFilter->getRootObject())
2308         hMET_HBHENoiseFilter->Fill(MET);
2309     }
2310     CSCTightHaloFilterResult = METFilterDecision[1];
2311     if (CSCTightHaloFilterResult) {
2312       hMET_CSCTightHaloFilter = map_of_MEs[DirName + "/" + "MET_CSCTightHaloFilter"];
2313       if (hMET_CSCTightHaloFilter && hMET_CSCTightHaloFilter->getRootObject())
2314         hMET_CSCTightHaloFilter->Fill(MET);
2315     }
2316     eeBadScFilterResult = METFilterDecision[2];
2317     if (eeBadScFilterResult) {
2318       hMET_eeBadScFilter = map_of_MEs[DirName + "/" + "MET_eeBadScFilter"];
2319       if (hMET_eeBadScFilter && hMET_eeBadScFilter->getRootObject())
2320         hMET_eeBadScFilter->Fill(MET);
2321     }
2322     HBHEIsoNoiseFilterResult = METFilterDecision[3];
2323     if (HBHEIsoNoiseFilterResult) {
2324       hMET_HBHEIsoNoiseFilter = map_of_MEs[DirName + "/" + "MET_HBHEIsoNoiseFilter"];
2325       if (hMET_HBHEIsoNoiseFilter && hMET_HBHEIsoNoiseFilter->getRootObject())
2326         hMET_HBHEIsoNoiseFilter->Fill(MET);
2327     }
2328     CSCTightHalo2015FilterResult = METFilterDecision[4];
2329     if (CSCTightHalo2015FilterResult) {
2330       hMET_CSCTightHalo2015Filter = map_of_MEs[DirName + "/" + "MET_CSCTightHalo2015Filter"];
2331       if (hMET_CSCTightHalo2015Filter && hMET_CSCTightHalo2015Filter->getRootObject())
2332         hMET_CSCTightHalo2015Filter->Fill(MET);
2333     }
2334     EcalDeadCellTriggerFilterResult = METFilterDecision[5];
2335     if (EcalDeadCellTriggerFilterResult) {
2336       hMET_EcalDeadCellTriggerFilter = map_of_MEs[DirName + "/" + "MET_EcalDeadCellTriggerFilter"];
2337       if (hMET_EcalDeadCellTriggerFilter && hMET_EcalDeadCellTriggerFilter->getRootObject())
2338         hMET_EcalDeadCellTriggerFilter->Fill(MET);
2339     }
2340     EcalDeadCellBoundaryFilterResult = METFilterDecision[6];
2341     if (EcalDeadCellBoundaryFilterResult) {
2342       hMET_EcalDeadCellBoundaryFilter = map_of_MEs[DirName + "/" + "MET_EcalDeadCellBoundaryFilter"];
2343       if (hMET_EcalDeadCellBoundaryFilter && hMET_EcalDeadCellBoundaryFilter->getRootObject())
2344         hMET_EcalDeadCellBoundaryFilter->Fill(MET);
2345     }
2346     HcalStripHaloFilterResult = METFilterDecision[7];
2347     if (HcalStripHaloFilterResult) {
2348       hMET_HcalStripHaloFilter = map_of_MEs[DirName + "/" + "MET_HcalStripHaloFilter"];
2349       if (hMET_HcalStripHaloFilter && hMET_HcalStripHaloFilter->getRootObject())
2350         hMET_HcalStripHaloFilter->Fill(MET);
2351     }
2352     hMETPhi = map_of_MEs[DirName + "/" + "METPhi"];
2353     if (hMETPhi && hMETPhi->getRootObject())
2354       hMETPhi->Fill(METPhi);
2355     hSumET = map_of_MEs[DirName + "/" + "SumET"];
2356     if (hSumET && hSumET->getRootObject())
2357       hSumET->Fill(SumET);
2358     hMETSig = map_of_MEs[DirName + "/" + "METSig"];
2359     if (hMETSig && hMETSig->getRootObject())
2360       hMETSig->Fill(METSig);
2361     hMET_logx = map_of_MEs[DirName + "/" + "MET_logx"];
2362     if (hMET_logx && hMET_logx->getRootObject())
2363       hMET_logx->Fill(log10(MET));
2364     hSumET_logx = map_of_MEs[DirName + "/" + "SumET_logx"];
2365     if (hSumET_logx && hSumET_logx->getRootObject())
2366       hSumET_logx->Fill(log10(SumET));
2367 
2368     // Fill NPV profiles
2369     //--------------------------------------------------------------------------
2370     meMEx_profile = map_of_MEs[DirName + "/MEx_profile"];
2371     meMEy_profile = map_of_MEs[DirName + "/MEy_profile"];
2372     meMET_profile = map_of_MEs[DirName + "/MET_profile"];
2373     meSumET_profile = map_of_MEs[DirName + "/SumET_profile"];
2374 
2375     if (meMEx_profile && meMEx_profile->getRootObject())
2376       meMEx_profile->Fill(numPV_, MEx);
2377     if (meMEy_profile && meMEy_profile->getRootObject())
2378       meMEy_profile->Fill(numPV_, MEy);
2379     if (meMET_profile && meMET_profile->getRootObject())
2380       meMET_profile->Fill(numPV_, MET);
2381     if (meSumET_profile && meSumET_profile->getRootObject())
2382       meSumET_profile->Fill(numPV_, SumET);
2383 
2384     if (isCaloMet_) {
2385       //const reco::CaloMETCollection *calometcol = calometcoll.product();
2386       //const reco::CaloMET *calomet;
2387       //calomet = &(calometcol->front());
2388 
2389       double caloEtFractionHadronic = calomet->etFractionHadronic();
2390       double caloEmEtFraction = calomet->emEtFraction();
2391 
2392       double caloHadEtInHB = calomet->hadEtInHB();
2393       double caloHadEtInHO = calomet->hadEtInHO();
2394       double caloHadEtInHE = calomet->hadEtInHE();
2395       double caloHadEtInHF = calomet->hadEtInHF();
2396       double caloEmEtInEB = calomet->emEtInEB();
2397       double caloEmEtInEE = calomet->emEtInEE();
2398       double caloEmEtInHF = calomet->emEtInHF();
2399 
2400       hCaloHadEtInHB = map_of_MEs[DirName + "/" + "CaloHadEtInHB"];
2401       if (hCaloHadEtInHB && hCaloHadEtInHB->getRootObject())
2402         hCaloHadEtInHB->Fill(caloHadEtInHB);
2403       hCaloHadEtInHO = map_of_MEs[DirName + "/" + "CaloHadEtInHO"];
2404       if (hCaloHadEtInHO && hCaloHadEtInHO->getRootObject())
2405         hCaloHadEtInHO->Fill(caloHadEtInHO);
2406       hCaloHadEtInHE = map_of_MEs[DirName + "/" + "CaloHadEtInHE"];
2407       if (hCaloHadEtInHE && hCaloHadEtInHE->getRootObject())
2408         hCaloHadEtInHE->Fill(caloHadEtInHE);
2409       hCaloHadEtInHF = map_of_MEs[DirName + "/" + "CaloHadEtInHF"];
2410       if (hCaloHadEtInHF && hCaloHadEtInHF->getRootObject())
2411         hCaloHadEtInHF->Fill(caloHadEtInHF);
2412       hCaloEmEtInEB = map_of_MEs[DirName + "/" + "CaloEmEtInEB"];
2413       if (hCaloEmEtInEB && hCaloEmEtInEB->getRootObject())
2414         hCaloEmEtInEB->Fill(caloEmEtInEB);
2415       hCaloEmEtInEE = map_of_MEs[DirName + "/" + "CaloEmEtInEE"];
2416       if (hCaloEmEtInEE && hCaloEmEtInEE->getRootObject())
2417         hCaloEmEtInEE->Fill(caloEmEtInEE);
2418       hCaloEmEtInHF = map_of_MEs[DirName + "/" + "CaloEmEtInHF"];
2419       if (hCaloEmEtInHF && hCaloEmEtInHF->getRootObject())
2420         hCaloEmEtInHF->Fill(caloEmEtInHF);
2421 
2422       hCaloMETPhi020 = map_of_MEs[DirName + "/" + "CaloMETPhi020"];
2423       if (MET > 20. && hCaloMETPhi020 && hCaloMETPhi020->getRootObject()) {
2424         hCaloMETPhi020->Fill(METPhi);
2425       }
2426 
2427       hCaloEtFractionHadronic = map_of_MEs[DirName + "/" + "CaloEtFractionHadronic"];
2428       if (hCaloEtFractionHadronic && hCaloEtFractionHadronic->getRootObject())
2429         hCaloEtFractionHadronic->Fill(caloEtFractionHadronic);
2430       hCaloEmEtFraction = map_of_MEs[DirName + "/" + "CaloEmEtFraction"];
2431       if (hCaloEmEtFraction && hCaloEmEtFraction->getRootObject())
2432         hCaloEmEtFraction->Fill(caloEmEtFraction);
2433       hCaloEmEtFraction020 = map_of_MEs[DirName + "/" + "CaloEmEtFraction020"];
2434       if (MET > 20. && hCaloEmEtFraction020 && hCaloEmEtFraction020->getRootObject())
2435         hCaloEmEtFraction020->Fill(caloEmEtFraction);
2436     }
2437     if (isPFMet_) {
2438       if (fillPFCandidatePlots && fillCandidateMap_histos) {
2439         for (unsigned int i = 0; i < countsPFCand_.size(); i++) {
2440           countsPFCand_[i] = 0;
2441           MExPFCand_[i] = 0.;
2442           MEyPFCand_[i] = 0.;
2443         }
2444 
2445         // typedef std::vector<reco::PFCandidate> pfCand;
2446         edm::Handle<std::vector<reco::PFCandidate> > particleFlow;
2447         iEvent.getByToken(pflowToken_, particleFlow);
2448 
2449         float pt_sum_CHF_Barrel = 0;
2450         float pt_sum_CHF_Endcap_plus = 0;
2451         float pt_sum_CHF_Endcap_minus = 0;
2452         float pt_sum_NHF_Barrel = 0;
2453         float pt_sum_NHF_Endcap_plus = 0;
2454         float pt_sum_NHF_Endcap_minus = 0;
2455         float pt_sum_PhF_Barrel = 0;
2456         float pt_sum_PhF_Endcap_plus = 0;
2457         float pt_sum_PhF_Endcap_minus = 0;
2458         float pt_sum_HFH_plus = 0;
2459         float pt_sum_HFH_minus = 0;
2460         float pt_sum_HFE_plus = 0;
2461         float pt_sum_HFE_minus = 0;
2462 
2463         float px_chargedHadronsBarrel = 0;
2464         float py_chargedHadronsBarrel = 0;
2465         float px_chargedHadronsEndcapPlus = 0;
2466         float py_chargedHadronsEndcapPlus = 0;
2467         float px_chargedHadronsEndcapMinus = 0;
2468         float py_chargedHadronsEndcapMinus = 0;
2469         float px_neutralHadronsBarrel = 0;
2470         float py_neutralHadronsBarrel = 0;
2471         float px_neutralHadronsEndcapPlus = 0;
2472         float py_neutralHadronsEndcapPlus = 0;
2473         float px_neutralHadronsEndcapMinus = 0;
2474         float py_neutralHadronsEndcapMinus = 0;
2475         float px_PhotonsBarrel = 0;
2476         float py_PhotonsBarrel = 0;
2477         float px_PhotonsEndcapPlus = 0;
2478         float py_PhotonsEndcapPlus = 0;
2479         float px_PhotonsEndcapMinus = 0;
2480         float py_PhotonsEndcapMinus = 0;
2481         float px_HFHadronsPlus = 0;
2482         float py_HFHadronsPlus = 0;
2483         float px_HFHadronsMinus = 0;
2484         float py_HFHadronsMinus = 0;
2485         float px_HFEGammasPlus = 0;
2486         float py_HFEGammasPlus = 0;
2487         float px_HFEGammasMinus = 0;
2488         float py_HFEGammasMinus = 0;
2489         for (unsigned int i = 0; i < particleFlow->size(); i++) {
2490           const reco::PFCandidate& c = particleFlow->at(i);
2491           if (c.particleId() == 1) {  //charged hadrons
2492             //endcap minus
2493             if (c.eta() > (-3.0) && c.eta() < (-1.392)) {
2494               px_chargedHadronsEndcapMinus -= c.px();
2495               py_chargedHadronsEndcapMinus -= c.py();
2496               pt_sum_CHF_Endcap_minus += c.et();
2497             } else if (c.eta() >= (-1.392) && c.eta() <= 1.392) {  //barrel
2498               px_chargedHadronsBarrel -= c.px();
2499               py_chargedHadronsBarrel -= c.py();
2500               pt_sum_CHF_Barrel += c.et();
2501             } else if (c.eta() > 1.392 && c.eta() < 3.0) {  //endcap plus
2502               px_chargedHadronsEndcapPlus -= c.px();
2503               py_chargedHadronsEndcapPlus -= c.py();
2504               pt_sum_CHF_Endcap_plus += c.et();
2505             }
2506           }
2507           if (c.particleId() == 5) {  //neutral hadrons
2508             //endcap minus
2509             if (c.eta() > (-3.0) && c.eta() < (-1.392)) {
2510               px_neutralHadronsEndcapMinus -= c.px();
2511               py_neutralHadronsEndcapMinus -= c.py();
2512               pt_sum_NHF_Endcap_minus += c.et();
2513             } else if (c.eta() >= (-1.392) && c.eta() <= 1.392) {
2514               px_neutralHadronsBarrel -= c.px();
2515               py_neutralHadronsBarrel -= c.py();
2516               pt_sum_NHF_Barrel += c.et();
2517             } else if (c.eta() > 1.392 && c.eta() < 3.0) {
2518               px_neutralHadronsEndcapPlus -= c.px();
2519               py_neutralHadronsEndcapPlus -= c.py();
2520               pt_sum_NHF_Endcap_plus += c.et();
2521             }
2522           }
2523           if (c.particleId() == 4) {  //photons
2524             //endcap minus
2525             if (c.eta() > (-3.0) && c.eta() < (-1.479)) {
2526               px_PhotonsEndcapMinus -= c.px();
2527               py_PhotonsEndcapMinus -= c.py();
2528               pt_sum_PhF_Endcap_minus += c.et();
2529             } else if (c.eta() >= (-1.479) && c.eta() <= 1.479) {
2530               px_PhotonsBarrel -= c.px();
2531               py_PhotonsBarrel -= c.py();
2532               pt_sum_PhF_Barrel += c.et();
2533             } else if (c.eta() > 1.479 && c.eta() < 3.0) {
2534               px_PhotonsEndcapPlus -= c.px();
2535               py_PhotonsEndcapPlus -= c.py();
2536               pt_sum_PhF_Endcap_plus += c.et();
2537             }
2538           }
2539           if (c.particleId() == 6) {  //HFHadrons
2540             //forward minus
2541             if (c.eta() > (-5.20) && c.eta() < -2.901376) {
2542               pt_sum_HFH_minus += c.et();
2543               px_HFHadronsMinus -= c.px();
2544               py_HFHadronsMinus -= c.py();
2545             } else if (c.eta() > 2.901376 && c.eta() < 5.20) {  //forward plus
2546               px_HFHadronsPlus -= c.px();
2547               py_HFHadronsPlus -= c.py();
2548               pt_sum_HFH_plus += c.et();
2549             }
2550           }
2551           if (c.particleId() == 7) {  //HFEGammas
2552             //forward minus
2553             if (c.eta() > (-5.20) && c.eta() < -2.901376) {
2554               pt_sum_HFE_minus += c.et();
2555               px_HFEGammasMinus -= c.px();
2556               py_HFEGammasMinus -= c.py();
2557             } else if (c.eta() > 2.901376 && c.eta() < 5.20) {  //forward plus
2558               px_HFEGammasPlus -= c.px();
2559               py_HFEGammasPlus -= c.py();
2560               pt_sum_HFE_plus += c.et();
2561             }
2562           }
2563           for (unsigned int j = 0; j < typePFCand_.size(); j++) {
2564             if (c.particleId() == typePFCand_[j]) {
2565               //second check for endcap, if inside barrel Max and Min symmetric around 0
2566               if (((c.eta() > etaMinPFCand_[j]) && (c.eta() < etaMaxPFCand_[j])) ||
2567                   ((c.eta() > (-etaMaxPFCand_[j])) && (c.eta() < (-etaMinPFCand_[j])))) {
2568                 countsPFCand_[j] += 1;
2569                 MExPFCand_[j] -= c.px();
2570                 MEyPFCand_[j] -= c.py();
2571               }
2572             }
2573           }
2574         }
2575 
2576         for (unsigned int j = 0; j < countsPFCand_.size(); j++) {
2577           profilePFCand_x_[j] = map_of_MEs[DirName + "/" + profilePFCand_x_name_[j]];
2578           if (profilePFCand_x_[j] && profilePFCand_x_[j]->getRootObject())
2579             profilePFCand_x_[j]->Fill(countsPFCand_[j], MExPFCand_[j]);
2580           profilePFCand_y_[j] = map_of_MEs[DirName + "/" + profilePFCand_y_name_[j]];
2581           if (profilePFCand_y_[j] && profilePFCand_y_[j]->getRootObject())
2582             profilePFCand_y_[j]->Fill(countsPFCand_[j], MEyPFCand_[j]);
2583         }
2584         meCHF_Barrel = map_of_MEs[DirName + "/" + "PfChargedHadronEtFractionBarrel"];
2585         if (meCHF_Barrel && meCHF_Barrel->getRootObject())
2586           meCHF_Barrel->Fill(pt_sum_CHF_Barrel / pfmet->sumEt());
2587         meCHF_EndcapPlus = map_of_MEs[DirName + "/" + "PfChargedHadronEtFractionEndcapPlus"];
2588         if (meCHF_EndcapPlus && meCHF_EndcapPlus->getRootObject())
2589           meCHF_EndcapPlus->Fill(pt_sum_CHF_Endcap_plus / pfmet->sumEt());
2590         meCHF_EndcapMinus = map_of_MEs[DirName + "/" + "PfChargedHadronEtFractionEndcapMinus"];
2591         if (meCHF_EndcapMinus && meCHF_EndcapMinus->getRootObject())
2592           meCHF_EndcapMinus->Fill(pt_sum_CHF_Endcap_minus / pfmet->sumEt());
2593         meNHF_Barrel = map_of_MEs[DirName + "/" + "PfNeutralHadronEtFractionBarrel"];
2594         if (meNHF_Barrel && meNHF_Barrel->getRootObject())
2595           meNHF_Barrel->Fill(pt_sum_NHF_Barrel / pfmet->sumEt());
2596         meNHF_EndcapPlus = map_of_MEs[DirName + "/" + "PfNeutralHadronEtFractionEndcapPlus"];
2597         if (meNHF_EndcapPlus && meNHF_EndcapPlus->getRootObject())
2598           meNHF_EndcapPlus->Fill(pt_sum_NHF_Endcap_plus / pfmet->sumEt());
2599         meNHF_EndcapMinus = map_of_MEs[DirName + "/" + "PfNeutralHadronEtFractionEndcapMinus"];
2600         if (meNHF_EndcapMinus && meNHF_EndcapMinus->getRootObject())
2601           meNHF_EndcapMinus->Fill(pt_sum_NHF_Endcap_minus / pfmet->sumEt());
2602         mePhF_Barrel = map_of_MEs[DirName + "/" + "PfPhotonEtFractionBarrel"];
2603         if (mePhF_Barrel && mePhF_Barrel->getRootObject())
2604           mePhF_Barrel->Fill(pt_sum_PhF_Barrel / pfmet->sumEt());
2605         mePhF_EndcapPlus = map_of_MEs[DirName + "/" + "PfPhotonEtFractionEndcapPlus"];
2606         if (mePhF_EndcapPlus && mePhF_EndcapPlus->getRootObject())
2607           mePhF_EndcapPlus->Fill(pt_sum_PhF_Endcap_plus / pfmet->sumEt());
2608         mePhF_EndcapMinus = map_of_MEs[DirName + "/" + "PfPhotonEtFractionEndcapMinus"];
2609         if (mePhF_EndcapMinus && mePhF_EndcapMinus->getRootObject())
2610           mePhF_EndcapMinus->Fill(pt_sum_PhF_Endcap_minus / pfmet->sumEt());
2611         meHFHadF_Plus = map_of_MEs[DirName + "/" + "PfHFHadronEtFractionPlus"];
2612         if (meHFHadF_Plus && meHFHadF_Plus->getRootObject())
2613           meHFHadF_Plus->Fill(pt_sum_HFH_plus / pfmet->sumEt());
2614         meHFHadF_Minus = map_of_MEs[DirName + "/" + "PfHFHadronEtFractionMinus"];
2615         if (meHFHadF_Minus && meHFHadF_Minus->getRootObject())
2616           meHFHadF_Minus->Fill(pt_sum_HFH_minus / pfmet->sumEt());
2617         meHFEMF_Plus = map_of_MEs[DirName + "/" + "PfHFEMEtFractionPlus"];
2618         if (meHFEMF_Plus && meHFEMF_Plus->getRootObject())
2619           meHFEMF_Plus->Fill(pt_sum_HFE_plus / pfmet->sumEt());
2620         meHFEMF_Minus = map_of_MEs[DirName + "/" + "PfHFEMEtFractionMinus"];
2621         if (meHFEMF_Minus && meHFEMF_Minus->getRootObject())
2622           meHFEMF_Minus->Fill(pt_sum_HFE_minus / pfmet->sumEt());
2623         //sanity check if we have any type of the respective species in the events
2624         //else don't fill phi, as else we have a results of a biased peak at 0
2625         //if pt_sum of species part is 0, obviously that would be the case
2626         if (pt_sum_CHF_Barrel) {
2627           meMETPhiChargedHadronsBarrel = map_of_MEs[DirName + "/" + "METPhiChargedHadronsBarrel"];
2628           if (meMETPhiChargedHadronsBarrel && meMETPhiChargedHadronsBarrel->getRootObject())
2629             meMETPhiChargedHadronsBarrel->Fill(atan2(py_chargedHadronsBarrel, px_chargedHadronsBarrel));
2630         }
2631         if (pt_sum_CHF_Endcap_plus) {
2632           meMETPhiChargedHadronsEndcapPlus = map_of_MEs[DirName + "/" + "METPhiChargedHadronsEndcapPlus"];
2633           if (meMETPhiChargedHadronsEndcapPlus && meMETPhiChargedHadronsEndcapPlus->getRootObject())
2634             meMETPhiChargedHadronsEndcapPlus->Fill(atan2(py_chargedHadronsEndcapPlus, px_chargedHadronsEndcapPlus));
2635         }
2636         if (pt_sum_CHF_Endcap_minus) {
2637           meMETPhiChargedHadronsEndcapMinus = map_of_MEs[DirName + "/" + "METPhiChargedHadronsEndcapMinus"];
2638           if (meMETPhiChargedHadronsEndcapMinus && meMETPhiChargedHadronsEndcapMinus->getRootObject())
2639             meMETPhiChargedHadronsEndcapMinus->Fill(atan2(py_chargedHadronsEndcapMinus, px_chargedHadronsEndcapMinus));
2640         }
2641         if (pt_sum_NHF_Barrel) {
2642           meMETPhiNeutralHadronsBarrel = map_of_MEs[DirName + "/" + "METPhiNeutralHadronsBarrel"];
2643           if (meMETPhiNeutralHadronsBarrel && meMETPhiNeutralHadronsBarrel->getRootObject())
2644             meMETPhiNeutralHadronsBarrel->Fill(atan2(py_neutralHadronsBarrel, px_neutralHadronsBarrel));
2645         }
2646         if (pt_sum_NHF_Endcap_plus) {
2647           meMETPhiNeutralHadronsEndcapPlus = map_of_MEs[DirName + "/" + "METPhiNeutralHadronsEndcapPlus"];
2648           if (meMETPhiNeutralHadronsEndcapPlus && meMETPhiNeutralHadronsEndcapPlus->getRootObject())
2649             meMETPhiNeutralHadronsEndcapPlus->Fill(atan2(py_neutralHadronsEndcapPlus, px_neutralHadronsEndcapPlus));
2650         }
2651         if (pt_sum_NHF_Endcap_minus) {
2652           meMETPhiNeutralHadronsEndcapMinus = map_of_MEs[DirName + "/" + "METPhiNeutralHadronsEndcapMinus"];
2653           if (meMETPhiNeutralHadronsEndcapMinus && meMETPhiNeutralHadronsEndcapMinus->getRootObject())
2654             meMETPhiNeutralHadronsEndcapMinus->Fill(atan2(py_neutralHadronsEndcapMinus, px_neutralHadronsEndcapMinus));
2655         }
2656         if (pt_sum_PhF_Barrel) {
2657           meMETPhiPhotonsBarrel = map_of_MEs[DirName + "/" + "METPhiPhotonsBarrel"];
2658           if (meMETPhiPhotonsBarrel && meMETPhiPhotonsBarrel->getRootObject())
2659             meMETPhiPhotonsBarrel->Fill(atan2(py_PhotonsBarrel, px_PhotonsBarrel));
2660         }
2661         if (pt_sum_PhF_Endcap_plus) {
2662           meMETPhiPhotonsEndcapPlus = map_of_MEs[DirName + "/" + "METPhiPhotonsEndcapPlus"];
2663           if (meMETPhiPhotonsEndcapPlus && meMETPhiPhotonsEndcapPlus->getRootObject())
2664             meMETPhiPhotonsEndcapPlus->Fill(atan2(py_PhotonsEndcapPlus, px_PhotonsEndcapPlus));
2665         }
2666         if (pt_sum_PhF_Endcap_minus) {
2667           meMETPhiPhotonsEndcapMinus = map_of_MEs[DirName + "/" + "METPhiPhotonsEndcapMinus"];
2668           if (meMETPhiPhotonsEndcapMinus && meMETPhiPhotonsEndcapMinus->getRootObject())
2669             meMETPhiPhotonsEndcapMinus->Fill(atan2(py_PhotonsEndcapMinus, px_PhotonsEndcapMinus));
2670         }
2671         if (pt_sum_HFH_plus) {
2672           meMETPhiHFHadronsPlus = map_of_MEs[DirName + "/" + "METPhiHFHadronsPlus"];
2673           if (meMETPhiHFHadronsPlus && meMETPhiHFHadronsPlus->getRootObject())
2674             meMETPhiHFHadronsPlus->Fill(atan2(py_HFHadronsPlus, px_HFHadronsPlus));
2675         }
2676         if (pt_sum_HFH_minus) {
2677           meMETPhiHFHadronsMinus = map_of_MEs[DirName + "/" + "METPhiHFHadronsMinus"];
2678           if (meMETPhiHFHadronsMinus && meMETPhiHFHadronsMinus->getRootObject())
2679             meMETPhiHFHadronsMinus->Fill(atan2(py_HFHadronsMinus, px_HFHadronsMinus));
2680         }
2681         if (pt_sum_HFE_plus) {
2682           meMETPhiHFEGammasPlus = map_of_MEs[DirName + "/" + "METPhiHFEGammasPlus"];
2683           if (meMETPhiHFEGammasPlus && meMETPhiHFEGammasPlus->getRootObject())
2684             meMETPhiHFEGammasPlus->Fill(atan2(py_HFEGammasPlus, px_HFEGammasPlus));
2685         }
2686         if (pt_sum_HFE_minus) {
2687           meMETPhiHFEGammasMinus = map_of_MEs[DirName + "/" + "METPhiHFEGammasMinus"];
2688           if (meMETPhiHFEGammasMinus && meMETPhiHFEGammasMinus->getRootObject())
2689             meMETPhiHFEGammasMinus->Fill(atan2(py_HFEGammasMinus, px_HFEGammasMinus));
2690         }
2691         //fill other diagnostic plots based on trigger decision
2692         /*if(techTriggerCase[0]){//techTriggerResultBx0 && techTriggerResultBxM2 && techTriggerResultBxM1 -> both previous bunches filled
2693       meCHF_Barrel_BXm2BXm1Filled=map_of_MEs[DirName+"/"+"PfChargedHadronEtFractionBarrel_BXm2BXm1Filled"]; if(meCHF_Barrel_BXm2BXm1Filled && meCHF_Barrel_BXm2BXm1Filled->getRootObject()) meCHF_Barrel_BXm2BXm1Filled->Fill(pt_sum_CHF_Barrel/pfmet->sumEt()); 
2694       meCHF_EndcapPlus_BXm2BXm1Filled=map_of_MEs[DirName+"/"+"PfChargedHadronEtFractionEndcapPlus_BXm2BXm1Filled"]; if(meCHF_EndcapPlus_BXm2BXm1Filled && meCHF_EndcapPlus_BXm2BXm1Filled->getRootObject()) meCHF_EndcapPlus_BXm2BXm1Filled->Fill(pt_sum_CHF_Endcap_plus/pfmet->sumEt()); 
2695       meCHF_EndcapMinus_BXm2BXm1Filled=map_of_MEs[DirName+"/"+"PfChargedHadronEtFractionEndcapMinus_BXm2BXm1Filled"]; if(meCHF_EndcapMinus_BXm2BXm1Filled && meCHF_EndcapMinus_BXm2BXm1Filled->getRootObject()) meCHF_EndcapMinus_BXm2BXm1Filled->Fill(pt_sum_CHF_Endcap_minus/pfmet->sumEt()); 
2696       meNHF_Barrel_BXm2BXm1Filled=map_of_MEs[DirName+"/"+"PfNeutralHadronEtFractionBarrel_BXm2BXm1Filled"]; if(meNHF_Barrel_BXm2BXm1Filled && meNHF_Barrel_BXm2BXm1Filled->getRootObject()) meNHF_Barrel_BXm2BXm1Filled->Fill(pt_sum_NHF_Barrel/pfmet->sumEt()); 
2697       meNHF_EndcapPlus_BXm2BXm1Filled=map_of_MEs[DirName+"/"+"PfNeutralHadronEtFractionEndcapPlus_BXm2BXm1Filled"]; if(meNHF_EndcapPlus_BXm2BXm1Filled && meNHF_EndcapPlus_BXm2BXm1Filled->getRootObject()) meNHF_EndcapPlus_BXm2BXm1Filled->Fill(pt_sum_NHF_Endcap_plus/pfmet->sumEt()); 
2698       meNHF_EndcapMinus_BXm2BXm1Filled=map_of_MEs[DirName+"/"+"PfNeutralHadronEtFractionEndcapMinus_BXm2BXm1Filled"]; if(meNHF_EndcapMinus_BXm2BXm1Filled && meNHF_EndcapMinus_BXm2BXm1Filled->getRootObject()) meNHF_EndcapMinus_BXm2BXm1Filled->Fill(pt_sum_NHF_Endcap_minus/pfmet->sumEt()); 
2699       mePhF_Barrel_BXm2BXm1Filled=map_of_MEs[DirName+"/"+"PfPhotonEtFractionBarrel_BXm2BXm1Filled"]; if(mePhF_Barrel_BXm2BXm1Filled && mePhF_Barrel_BXm2BXm1Filled->getRootObject()) mePhF_Barrel_BXm2BXm1Filled->Fill(pt_sum_PhF_Barrel/pfmet->sumEt()); 
2700       mePhF_EndcapPlus_BXm2BXm1Filled=map_of_MEs[DirName+"/"+"PfPhotonEtFractionEndcapPlus_BXm2BXm1Filled"]; if(mePhF_EndcapPlus_BXm2BXm1Filled && mePhF_EndcapPlus_BXm2BXm1Filled->getRootObject()) mePhF_EndcapPlus_BXm2BXm1Filled->Fill(pt_sum_PhF_Endcap_plus/pfmet->sumEt()); 
2701       mePhF_EndcapMinus_BXm2BXm1Filled=map_of_MEs[DirName+"/"+"PfPhotonEtFractionEndcapMinus_BXm2BXm1Filled"]; if(mePhF_EndcapMinus_BXm2BXm1Filled && mePhF_EndcapMinus_BXm2BXm1Filled->getRootObject()) mePhF_EndcapMinus_BXm2BXm1Filled->Fill(pt_sum_PhF_Endcap_minus/pfmet->sumEt()); 
2702           meHFHadF_Plus_BXm2BXm1Filled=map_of_MEs[DirName+"/"+"PfHFHadronEtFractionPlus_BXm2BXm1Filled"]; if(meHFHadF_Plus_BXm2BXm1Filled && meHFHadF_Plus_BXm2BXm1Filled->getRootObject()) meHFHadF_Plus_BXm2BXm1Filled->Fill(pt_sum_HFH_plus/pfmet->sumEt()); 
2703       meHFHadF_Minus_BXm2BXm1Filled=map_of_MEs[DirName+"/"+"PfHFHadronEtFractionMinus_BXm2BXm1Filled"]; if(meHFHadF_Minus_BXm2BXm1Filled && meHFHadF_Minus_BXm2BXm1Filled->getRootObject()) meHFHadF_Minus_BXm2BXm1Filled->Fill(pt_sum_HFH_minus/pfmet->sumEt()); 
2704       meHFEMF_Plus_BXm2BXm1Filled=map_of_MEs[DirName+"/"+"PfHFEMEtFractionPlus_BXm2BXm1Filled"]; if(meHFEMF_Plus_BXm2BXm1Filled && meHFEMF_Plus_BXm2BXm1Filled->getRootObject()) meHFEMF_Plus_BXm2BXm1Filled->Fill(pt_sum_HFE_plus/pfmet->sumEt()); 
2705       meHFEMF_Minus_BXm2BXm1Filled=map_of_MEs[DirName+"/"+"PfHFEMEtFractionMinus_BXm2BXm1Filled"]; if(meHFEMF_Minus_BXm2BXm1Filled && meHFEMF_Minus_BXm2BXm1Filled->getRootObject()) meHFEMF_Minus_BXm2BXm1Filled->Fill(pt_sum_HFE_minus/pfmet->sumEt());
2706       mePhotonEtFraction_BXm2BXm1Filled    = map_of_MEs[DirName+"/"+"PfPhotonEtFraction_BXm2BXm1Filled"];     if (  mePhotonEtFraction_BXm2BXm1Filled  && mePhotonEtFraction_BXm2BXm1Filled ->getRootObject())  mePhotonEtFraction_BXm2BXm1Filled  ->Fill(pfmet->photonEtFraction());
2707       meNeutralHadronEtFraction_BXm2BXm1Filled    = map_of_MEs[DirName+"/"+"PfNeutralHadronEtFraction_BXm2BXm1Filled"];     if (  meNeutralHadronEtFraction_BXm2BXm1Filled  && meNeutralHadronEtFraction_BXm2BXm1Filled ->getRootObject())  meNeutralHadronEtFraction_BXm2BXm1Filled  ->Fill(pfmet->neutralHadronEtFraction());
2708       meChargedHadronEtFraction_BXm2BXm1Filled    = map_of_MEs[DirName+"/"+"PfChargedHadronEtFraction_BXm2BXm1Filled"];     if (  meChargedHadronEtFraction_BXm2BXm1Filled  && meChargedHadronEtFraction_BXm2BXm1Filled ->getRootObject())  meChargedHadronEtFraction_BXm2BXm1Filled  ->Fill(pfmet->chargedHadronEtFraction());
2709       meMET_BXm2BXm1Filled    = map_of_MEs[DirName+"/"+"MET_BXm2BXm1Filled"];     if (  meMET_BXm2BXm1Filled  && meMET_BXm2BXm1Filled ->getRootObject())  meMET_BXm2BXm1Filled  ->Fill(pfmet->pt());
2710       meSumET_BXm2BXm1Filled    = map_of_MEs[DirName+"/"+"SumET_BXm2BXm1Filled"];     if (  meSumET_BXm2BXm1Filled  && meSumET_BXm2BXm1Filled ->getRootObject())  meSumET_BXm2BXm1Filled  ->Fill(pfmet->sumEt());
2711       if(pt_sum_CHF_Barrel){
2712         meMETPhiChargedHadronsBarrel_BXm2BXm1Filled     = map_of_MEs[DirName+"/"+"METPhiChargedHadronsBarrel_BXm2BXm1Filled"];if(meMETPhiChargedHadronsBarrel_BXm2BXm1Filled  && meMETPhiChargedHadronsBarrel_BXm2BXm1Filled ->getRootObject())meMETPhiChargedHadronsBarrel_BXm2BXm1Filled->Fill(atan2(py_chargedHadronsBarrel,px_chargedHadronsBarrel));
2713       }
2714       if(pt_sum_CHF_Endcap_plus){
2715         meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Filled  = map_of_MEs[DirName+"/"+"METPhiChargedHadronsEndcapPlus_BXm2BXm1Filled"];if(meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Filled  && meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Filled ->getRootObject())meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Filled->Fill(atan2(py_chargedHadronsEndcapPlus,px_chargedHadronsEndcapPlus));
2716       }
2717       if(pt_sum_CHF_Endcap_minus){
2718         meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Filled     = map_of_MEs[DirName+"/"+"METPhiChargedHadronsEndcapMinus_BXm2BXm1Filled"];if(meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Filled  && meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Filled ->getRootObject())meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Filled->Fill(atan2(py_chargedHadronsEndcapMinus,px_chargedHadronsEndcapMinus));
2719       }
2720       if(pt_sum_NHF_Barrel){
2721         meMETPhiNeutralHadronsBarrel_BXm2BXm1Filled     = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsBarrel_BXm2BXm1Filled"];if(meMETPhiNeutralHadronsBarrel_BXm2BXm1Filled  && meMETPhiNeutralHadronsBarrel_BXm2BXm1Filled ->getRootObject())meMETPhiNeutralHadronsBarrel_BXm2BXm1Filled->Fill(atan2(py_neutralHadronsBarrel,px_neutralHadronsBarrel));
2722       }
2723       if(pt_sum_NHF_Endcap_plus){
2724         meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled     = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled"];if(meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled  && meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled ->getRootObject())meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled->Fill(atan2(py_neutralHadronsEndcapPlus,px_neutralHadronsEndcapPlus));
2725       }
2726       if(pt_sum_NHF_Endcap_minus){
2727         meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled     = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled"];if(meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled  && meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled ->getRootObject())meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled->Fill(atan2(py_neutralHadronsEndcapMinus,px_neutralHadronsEndcapMinus));
2728       }
2729       if(pt_sum_PhF_Barrel){
2730         meMETPhiPhotonsBarrel_BXm2BXm1Filled     = map_of_MEs[DirName+"/"+"METPhiPhotonsBarrel_BXm2BXm1Filled"];if(meMETPhiPhotonsBarrel_BXm2BXm1Filled  && meMETPhiPhotonsBarrel_BXm2BXm1Filled ->getRootObject())meMETPhiPhotonsBarrel_BXm2BXm1Filled->Fill(atan2(py_PhotonsBarrel,px_PhotonsBarrel));
2731       }
2732       if(pt_sum_PhF_Endcap_plus){
2733         meMETPhiPhotonsEndcapPlus_BXm2BXm1Filled     = map_of_MEs[DirName+"/"+"METPhiPhotonsEndcapPlus_BXm2BXm1Filled"];if(meMETPhiPhotonsEndcapPlus_BXm2BXm1Filled  && meMETPhiPhotonsEndcapPlus_BXm2BXm1Filled ->getRootObject())meMETPhiPhotonsEndcapPlus_BXm2BXm1Filled->Fill(atan2(py_PhotonsEndcapPlus,px_PhotonsEndcapPlus));
2734       }
2735       if(pt_sum_PhF_Endcap_minus){
2736         meMETPhiPhotonsEndcapMinus_BXm2BXm1Filled     = map_of_MEs[DirName+"/"+"METPhiPhotonsEndcapMinus_BXm2BXm1Filled"];if(meMETPhiPhotonsEndcapMinus_BXm2BXm1Filled  && meMETPhiPhotonsEndcapMinus_BXm2BXm1Filled ->getRootObject())meMETPhiPhotonsEndcapMinus_BXm2BXm1Filled->Fill(atan2(py_PhotonsEndcapMinus,px_PhotonsEndcapMinus));
2737       }
2738       if(pt_sum_HFH_plus){
2739         meMETPhiHFHadronsPlus_BXm2BXm1Filled     = map_of_MEs[DirName+"/"+"METPhiHFHadronsPlus_BXm2BXm1Filled"];if(meMETPhiHFHadronsPlus_BXm2BXm1Filled  && meMETPhiHFHadronsPlus_BXm2BXm1Filled ->getRootObject())meMETPhiHFHadronsPlus_BXm2BXm1Filled->Fill(atan2(py_HFHadronsPlus,px_HFHadronsPlus));
2740       }
2741       if(pt_sum_HFH_minus){
2742         meMETPhiHFHadronsMinus_BXm2BXm1Filled     = map_of_MEs[DirName+"/"+"METPhiHFHadronsMinus_BXm2BXm1Filled"];if(meMETPhiHFHadronsMinus_BXm2BXm1Filled  && meMETPhiHFHadronsMinus_BXm2BXm1Filled ->getRootObject())meMETPhiHFHadronsMinus_BXm2BXm1Filled->Fill(atan2(py_HFHadronsMinus,px_HFHadronsMinus));
2743       }
2744       if(pt_sum_HFE_plus){
2745         meMETPhiHFEGammasPlus_BXm2BXm1Filled     = map_of_MEs[DirName+"/"+"METPhiHFEGammasPlus_BXm2BXm1Filled"];if(meMETPhiHFEGammasPlus_BXm2BXm1Filled  && meMETPhiHFEGammasPlus_BXm2BXm1Filled ->getRootObject())meMETPhiHFEGammasPlus_BXm2BXm1Filled->Fill(atan2(py_HFEGammasPlus,px_HFEGammasPlus));
2746       }
2747       if(pt_sum_HFE_minus){
2748         meMETPhiHFEGammasMinus_BXm2BXm1Filled     = map_of_MEs[DirName+"/"+"METPhiHFEGammasMinus_BXm2BXm1Filled"];if(meMETPhiHFEGammasMinus_BXm2BXm1Filled  && meMETPhiHFEGammasMinus_BXm2BXm1Filled ->getRootObject())meMETPhiHFEGammasMinus_BXm2BXm1Filled->Fill(atan2(py_HFEGammasMinus,px_HFEGammasMinus));
2749       }
2750       }*/
2751         if (techTriggerCase[1]) {  //techTriggerResultBx0 && techTriggerResultBxM1 -> previous bunch filled
2752           meCHF_Barrel_BXm1Filled = map_of_MEs[DirName + "/" + "PfChargedHadronEtFractionBarrel_BXm1Filled"];
2753           if (meCHF_Barrel_BXm1Filled && meCHF_Barrel_BXm1Filled->getRootObject())
2754             meCHF_Barrel_BXm1Filled->Fill(pt_sum_CHF_Barrel / pfmet->sumEt());
2755           meCHF_EndcapPlus_BXm1Filled = map_of_MEs[DirName + "/" + "PfChargedHadronEtFractionEndcapPlus_BXm1Filled"];
2756           if (meCHF_EndcapPlus_BXm1Filled && meCHF_EndcapPlus_BXm1Filled->getRootObject())
2757             meCHF_EndcapPlus_BXm1Filled->Fill(pt_sum_CHF_Endcap_plus / pfmet->sumEt());
2758           meCHF_EndcapMinus_BXm1Filled = map_of_MEs[DirName + "/" + "PfChargedHadronEtFractionEndcapMinus_BXm1Filled"];
2759           if (meCHF_EndcapMinus_BXm1Filled && meCHF_EndcapMinus_BXm1Filled->getRootObject())
2760             meCHF_EndcapMinus_BXm1Filled->Fill(pt_sum_CHF_Endcap_minus / pfmet->sumEt());
2761           meNHF_Barrel_BXm1Filled = map_of_MEs[DirName + "/" + "PfNeutralHadronEtFractionBarrel_BXm1Filled"];
2762           if (meNHF_Barrel_BXm1Filled && meNHF_Barrel_BXm1Filled->getRootObject())
2763             meNHF_Barrel_BXm1Filled->Fill(pt_sum_NHF_Barrel / pfmet->sumEt());
2764           meNHF_EndcapPlus_BXm1Filled = map_of_MEs[DirName + "/" + "PfNeutralHadronEtFractionEndcapPlus_BXm1Filled"];
2765           if (meNHF_EndcapPlus_BXm1Filled && meNHF_EndcapPlus_BXm1Filled->getRootObject())
2766             meNHF_EndcapPlus_BXm1Filled->Fill(pt_sum_NHF_Endcap_plus / pfmet->sumEt());
2767           meNHF_EndcapMinus_BXm1Filled = map_of_MEs[DirName + "/" + "PfNeutralHadronEtFractionEndcapMinus_BXm1Filled"];
2768           if (meNHF_EndcapMinus_BXm1Filled && meNHF_EndcapMinus_BXm1Filled->getRootObject())
2769             meNHF_EndcapMinus_BXm1Filled->Fill(pt_sum_NHF_Endcap_minus / pfmet->sumEt());
2770           mePhF_Barrel_BXm1Filled = map_of_MEs[DirName + "/" + "PfPhotonEtFractionBarrel_BXm1Filled"];
2771           if (mePhF_Barrel_BXm1Filled && mePhF_Barrel_BXm1Filled->getRootObject())
2772             mePhF_Barrel_BXm1Filled->Fill(pt_sum_PhF_Barrel / pfmet->sumEt());
2773           mePhF_EndcapPlus_BXm1Filled = map_of_MEs[DirName + "/" + "PfPhotonEtFractionEndcapPlus_BXm1Filled"];
2774           if (mePhF_EndcapPlus_BXm1Filled && mePhF_EndcapPlus_BXm1Filled->getRootObject())
2775             mePhF_EndcapPlus_BXm1Filled->Fill(pt_sum_PhF_Endcap_plus / pfmet->sumEt());
2776           mePhF_EndcapMinus_BXm1Filled = map_of_MEs[DirName + "/" + "PfPhotonEtFractionEndcapMinus_BXm1Filled"];
2777           if (mePhF_EndcapMinus_BXm1Filled && mePhF_EndcapMinus_BXm1Filled->getRootObject())
2778             mePhF_EndcapMinus_BXm1Filled->Fill(pt_sum_PhF_Endcap_minus / pfmet->sumEt());
2779           meHFHadF_Plus_BXm1Filled = map_of_MEs[DirName + "/" + "PfHFHadronEtFractionPlus_BXm1Filled"];
2780           if (meHFHadF_Plus_BXm1Filled && meHFHadF_Plus_BXm1Filled->getRootObject())
2781             meHFHadF_Plus_BXm1Filled->Fill(pt_sum_HFH_plus / pfmet->sumEt());
2782           meHFHadF_Minus_BXm1Filled = map_of_MEs[DirName + "/" + "PfHFHadronEtFractionMinus_BXm1Filled"];
2783           if (meHFHadF_Minus_BXm1Filled && meHFHadF_Minus_BXm1Filled->getRootObject())
2784             meHFHadF_Minus_BXm1Filled->Fill(pt_sum_HFH_minus / pfmet->sumEt());
2785           meHFEMF_Plus_BXm1Filled = map_of_MEs[DirName + "/" + "PfHFEMEtFractionPlus_BXm1Filled"];
2786           if (meHFEMF_Plus_BXm1Filled && meHFEMF_Plus_BXm1Filled->getRootObject())
2787             meHFEMF_Plus_BXm1Filled->Fill(pt_sum_HFE_plus / pfmet->sumEt());
2788           meHFEMF_Minus_BXm1Filled = map_of_MEs[DirName + "/" + "PfHFEMEtFractionMinus_BXm1Filled"];
2789           if (meHFEMF_Minus_BXm1Filled && meHFEMF_Minus_BXm1Filled->getRootObject())
2790             meHFEMF_Minus_BXm1Filled->Fill(pt_sum_HFE_minus / pfmet->sumEt());
2791           mePhotonEtFraction_BXm1Filled = map_of_MEs[DirName + "/" + "PfPhotonEtFraction_BXm1Filled"];
2792           if (mePhotonEtFraction_BXm1Filled && mePhotonEtFraction_BXm1Filled->getRootObject())
2793             mePhotonEtFraction_BXm1Filled->Fill(pfmet->photonEtFraction());
2794           meNeutralHadronEtFraction_BXm1Filled = map_of_MEs[DirName + "/" + "PfNeutralHadronEtFraction_BXm1Filled"];
2795           if (meNeutralHadronEtFraction_BXm1Filled && meNeutralHadronEtFraction_BXm1Filled->getRootObject())
2796             meNeutralHadronEtFraction_BXm1Filled->Fill(pfmet->neutralHadronEtFraction());
2797           meChargedHadronEtFraction_BXm1Filled = map_of_MEs[DirName + "/" + "PfChargedHadronEtFraction_BXm1Filled"];
2798           if (meChargedHadronEtFraction_BXm1Filled && meChargedHadronEtFraction_BXm1Filled->getRootObject())
2799             meChargedHadronEtFraction_BXm1Filled->Fill(pfmet->chargedHadronEtFraction());
2800           meMET_BXm1Filled = map_of_MEs[DirName + "/" + "MET_BXm1Filled"];
2801           if (meMET_BXm1Filled && meMET_BXm1Filled->getRootObject())
2802             meMET_BXm1Filled->Fill(pfmet->pt());
2803           meSumET_BXm1Filled = map_of_MEs[DirName + "/" + "SumET_BXm1Filled"];
2804           if (meSumET_BXm1Filled && meSumET_BXm1Filled->getRootObject())
2805             meSumET_BXm1Filled->Fill(pfmet->sumEt());
2806           if (pt_sum_CHF_Barrel) {
2807             meMETPhiChargedHadronsBarrel_BXm1Filled =
2808                 map_of_MEs[DirName + "/" + "METPhiChargedHadronsBarrel_BXm1Filled"];
2809             if (meMETPhiChargedHadronsBarrel_BXm1Filled && meMETPhiChargedHadronsBarrel_BXm1Filled->getRootObject())
2810               meMETPhiChargedHadronsBarrel_BXm1Filled->Fill(atan2(py_chargedHadronsBarrel, px_chargedHadronsBarrel));
2811           }
2812           if (pt_sum_CHF_Endcap_plus) {
2813             meMETPhiChargedHadronsEndcapPlus_BXm1Filled =
2814                 map_of_MEs[DirName + "/" + "METPhiChargedHadronsEndcapPlus_BXm1Filled"];
2815             if (meMETPhiChargedHadronsEndcapPlus_BXm1Filled &&
2816                 meMETPhiChargedHadronsEndcapPlus_BXm1Filled->getRootObject())
2817               meMETPhiChargedHadronsEndcapPlus_BXm1Filled->Fill(
2818                   atan2(py_chargedHadronsEndcapPlus, px_chargedHadronsEndcapPlus));
2819           }
2820           if (pt_sum_CHF_Endcap_minus) {
2821             meMETPhiChargedHadronsEndcapMinus_BXm1Filled =
2822                 map_of_MEs[DirName + "/" + "METPhiChargedHadronsEndcapMinus_BXm1Filled"];
2823             if (meMETPhiChargedHadronsEndcapMinus_BXm1Filled &&
2824                 meMETPhiChargedHadronsEndcapMinus_BXm1Filled->getRootObject())
2825               meMETPhiChargedHadronsEndcapMinus_BXm1Filled->Fill(
2826                   atan2(py_chargedHadronsEndcapMinus, px_chargedHadronsEndcapMinus));
2827           }
2828           if (pt_sum_NHF_Barrel) {
2829             meMETPhiNeutralHadronsBarrel_BXm1Filled =
2830                 map_of_MEs[DirName + "/" + "METPhiNeutralHadronsBarrel_BXm1Filled"];
2831             if (meMETPhiNeutralHadronsBarrel_BXm1Filled && meMETPhiNeutralHadronsBarrel_BXm1Filled->getRootObject())
2832               meMETPhiNeutralHadronsBarrel_BXm1Filled->Fill(atan2(py_neutralHadronsBarrel, px_neutralHadronsBarrel));
2833           }
2834           if (pt_sum_NHF_Endcap_plus) {
2835             meMETPhiNeutralHadronsEndcapPlus_BXm1Filled =
2836                 map_of_MEs[DirName + "/" + "METPhiNeutralHadronsEndcapPlus_BXm1Filled"];
2837             if (meMETPhiNeutralHadronsEndcapPlus_BXm1Filled &&
2838                 meMETPhiNeutralHadronsEndcapPlus_BXm1Filled->getRootObject())
2839               meMETPhiNeutralHadronsEndcapPlus_BXm1Filled->Fill(
2840                   atan2(py_neutralHadronsEndcapPlus, px_neutralHadronsEndcapPlus));
2841           }
2842           if (pt_sum_NHF_Endcap_minus) {
2843             meMETPhiNeutralHadronsEndcapMinus_BXm1Filled =
2844                 map_of_MEs[DirName + "/" + "METPhiNeutralHadronsEndcapMinus_BXm1Filled"];
2845             if (meMETPhiNeutralHadronsEndcapMinus_BXm1Filled &&
2846                 meMETPhiNeutralHadronsEndcapMinus_BXm1Filled->getRootObject())
2847               meMETPhiNeutralHadronsEndcapMinus_BXm1Filled->Fill(
2848                   atan2(py_neutralHadronsEndcapMinus, px_neutralHadronsEndcapMinus));
2849           }
2850           if (pt_sum_PhF_Barrel) {
2851             meMETPhiPhotonsBarrel_BXm1Filled = map_of_MEs[DirName + "/" + "METPhiPhotonsBarrel_BXm1Filled"];
2852             if (meMETPhiPhotonsBarrel_BXm1Filled && meMETPhiPhotonsBarrel_BXm1Filled->getRootObject())
2853               meMETPhiPhotonsBarrel_BXm1Filled->Fill(atan2(py_PhotonsBarrel, px_PhotonsBarrel));
2854           }
2855           if (pt_sum_PhF_Endcap_plus) {
2856             meMETPhiPhotonsEndcapPlus_BXm1Filled = map_of_MEs[DirName + "/" + "METPhiPhotonsEndcapPlus_BXm1Filled"];
2857             if (meMETPhiPhotonsEndcapPlus_BXm1Filled && meMETPhiPhotonsEndcapPlus_BXm1Filled->getRootObject())
2858               meMETPhiPhotonsEndcapPlus_BXm1Filled->Fill(atan2(py_PhotonsEndcapPlus, px_PhotonsEndcapPlus));
2859           }
2860           if (pt_sum_PhF_Endcap_minus) {
2861             meMETPhiPhotonsEndcapMinus_BXm1Filled = map_of_MEs[DirName + "/" + "METPhiPhotonsEndcapMinus_BXm1Filled"];
2862             if (meMETPhiPhotonsEndcapMinus_BXm1Filled && meMETPhiPhotonsEndcapMinus_BXm1Filled->getRootObject())
2863               meMETPhiPhotonsEndcapMinus_BXm1Filled->Fill(atan2(py_PhotonsEndcapMinus, px_PhotonsEndcapMinus));
2864           }
2865           if (pt_sum_HFH_plus) {
2866             meMETPhiHFHadronsPlus_BXm1Filled = map_of_MEs[DirName + "/" + "METPhiHFHadronsPlus_BXm1Filled"];
2867             if (meMETPhiHFHadronsPlus_BXm1Filled && meMETPhiHFHadronsPlus_BXm1Filled->getRootObject())
2868               meMETPhiHFHadronsPlus_BXm1Filled->Fill(atan2(py_HFHadronsPlus, px_HFHadronsPlus));
2869           }
2870           if (pt_sum_HFH_minus) {
2871             meMETPhiHFHadronsMinus_BXm1Filled = map_of_MEs[DirName + "/" + "METPhiHFHadronsMinus_BXm1Filled"];
2872             if (meMETPhiHFHadronsMinus_BXm1Filled && meMETPhiHFHadronsMinus_BXm1Filled->getRootObject())
2873               meMETPhiHFHadronsMinus_BXm1Filled->Fill(atan2(py_HFHadronsMinus, px_HFHadronsMinus));
2874           }
2875           if (pt_sum_HFE_plus) {
2876             meMETPhiHFEGammasPlus_BXm1Filled = map_of_MEs[DirName + "/" + "METPhiHFEGammasPlus_BXm1Filled"];
2877             if (meMETPhiHFEGammasPlus_BXm1Filled && meMETPhiHFEGammasPlus_BXm1Filled->getRootObject())
2878               meMETPhiHFEGammasPlus_BXm1Filled->Fill(atan2(py_HFEGammasPlus, px_HFEGammasPlus));
2879           }
2880           if (pt_sum_HFE_minus) {
2881             meMETPhiHFEGammasMinus_BXm1Filled = map_of_MEs[DirName + "/" + "METPhiHFEGammasMinus_BXm1Filled"];
2882             if (meMETPhiHFEGammasMinus_BXm1Filled && meMETPhiHFEGammasMinus_BXm1Filled->getRootObject())
2883               meMETPhiHFEGammasMinus_BXm1Filled->Fill(atan2(py_HFEGammasMinus, px_HFEGammasMinus));
2884           }
2885         }
2886         /*if(techTriggerCase[3]){//techTriggerResultBx0 && !techTriggerResultBxM2 && !techTriggerResultBxM1 ->previous two bunches empty
2887       meCHF_Barrel_BXm2BXm1Empty=map_of_MEs[DirName+"/"+"PfChargedHadronEtFractionBarrel_BXm2BXm1Empty"]; if(meCHF_Barrel_BXm2BXm1Empty && meCHF_Barrel_BXm2BXm1Empty->getRootObject()) meCHF_Barrel_BXm2BXm1Empty->Fill(pt_sum_CHF_Barrel/pfmet->sumEt()); 
2888       meCHF_EndcapPlus_BXm2BXm1Empty=map_of_MEs[DirName+"/"+"PfChargedHadronEtFractionEndcapPlus_BXm2BXm1Empty"]; if(meCHF_EndcapPlus_BXm2BXm1Empty && meCHF_EndcapPlus_BXm2BXm1Empty->getRootObject()) meCHF_EndcapPlus_BXm2BXm1Empty->Fill(pt_sum_CHF_Endcap_plus/pfmet->sumEt()); 
2889       meCHF_EndcapMinus_BXm2BXm1Empty=map_of_MEs[DirName+"/"+"PfChargedHadronEtFractionEndcapMinus_BXm2BXm1Empty"]; if(meCHF_EndcapMinus_BXm2BXm1Empty && meCHF_EndcapMinus_BXm2BXm1Empty->getRootObject()) meCHF_EndcapMinus_BXm2BXm1Empty->Fill(pt_sum_CHF_Endcap_minus/pfmet->sumEt()); 
2890       meNHF_Barrel_BXm2BXm1Empty=map_of_MEs[DirName+"/"+"PfNeutralHadronEtFractionBarrel_BXm2BXm1Empty"]; if(meNHF_Barrel_BXm2BXm1Empty && meNHF_Barrel_BXm2BXm1Empty->getRootObject()) meNHF_Barrel_BXm2BXm1Empty->Fill(pt_sum_NHF_Barrel/pfmet->sumEt()); 
2891       meNHF_EndcapPlus_BXm2BXm1Empty=map_of_MEs[DirName+"/"+"PfNeutralHadronEtFractionEndcapPlus_BXm2BXm1Empty"]; if(meNHF_EndcapPlus_BXm2BXm1Empty && meNHF_EndcapPlus_BXm2BXm1Empty->getRootObject()) meNHF_EndcapPlus_BXm2BXm1Empty->Fill(pt_sum_NHF_Endcap_plus/pfmet->sumEt()); 
2892       meNHF_EndcapMinus_BXm2BXm1Empty=map_of_MEs[DirName+"/"+"PfNeutralHadronEtFractionEndcapMinus_BXm2BXm1Empty"]; if(meNHF_EndcapMinus_BXm2BXm1Empty && meNHF_EndcapMinus_BXm2BXm1Empty->getRootObject()) meNHF_EndcapMinus_BXm2BXm1Empty->Fill(pt_sum_NHF_Endcap_minus/pfmet->sumEt()); 
2893       mePhF_Barrel_BXm2BXm1Empty=map_of_MEs[DirName+"/"+"PfPhotonEtFractionBarrel_BXm2BXm1Empty"]; if(mePhF_Barrel_BXm2BXm1Empty && mePhF_Barrel_BXm2BXm1Empty->getRootObject()) mePhF_Barrel_BXm2BXm1Empty->Fill(pt_sum_PhF_Barrel/pfmet->sumEt()); 
2894       mePhF_EndcapPlus_BXm2BXm1Empty=map_of_MEs[DirName+"/"+"PfPhotonEtFractionEndcapPlus_BXm2BXm1Empty"]; if(mePhF_EndcapPlus_BXm2BXm1Empty && mePhF_EndcapPlus_BXm2BXm1Empty->getRootObject()) mePhF_EndcapPlus_BXm2BXm1Empty->Fill(pt_sum_PhF_Endcap_plus/pfmet->sumEt()); 
2895       mePhF_EndcapMinus_BXm2BXm1Empty=map_of_MEs[DirName+"/"+"PfPhotonEtFractionEndcapMinus_BXm2BXm1Empty"]; if(mePhF_EndcapMinus_BXm2BXm1Empty && mePhF_EndcapMinus_BXm2BXm1Empty->getRootObject()) mePhF_EndcapMinus_BXm2BXm1Empty->Fill(pt_sum_PhF_Endcap_minus/pfmet->sumEt()); 
2896       meHFHadF_Plus_BXm2BXm1Empty=map_of_MEs[DirName+"/"+"PfHFHadronEtFractionPlus_BXm2BXm1Empty"]; if(meHFHadF_Plus_BXm2BXm1Empty && meHFHadF_Plus_BXm2BXm1Empty->getRootObject()) meHFHadF_Plus_BXm2BXm1Empty->Fill(pt_sum_HFH_plus/pfmet->sumEt()); 
2897       meHFHadF_Minus_BXm2BXm1Empty=map_of_MEs[DirName+"/"+"PfHFHadronEtFractionMinus_BXm2BXm1Empty"]; if(meHFHadF_Minus_BXm2BXm1Empty && meHFHadF_Minus_BXm2BXm1Empty->getRootObject()) meHFHadF_Minus_BXm2BXm1Empty->Fill(pt_sum_HFH_minus/pfmet->sumEt()); 
2898       meHFEMF_Plus_BXm2BXm1Empty=map_of_MEs[DirName+"/"+"PfHFEMEtFractionPlus_BXm2BXm1Empty"]; if(meHFEMF_Plus_BXm2BXm1Empty && meHFEMF_Plus_BXm2BXm1Empty->getRootObject()) meHFEMF_Plus_BXm2BXm1Empty->Fill(pt_sum_HFE_plus/pfmet->sumEt()); 
2899       meHFEMF_Minus_BXm2BXm1Empty=map_of_MEs[DirName+"/"+"PfHFEMEtFractionMinus_BXm2BXm1Empty"]; if(meHFEMF_Minus_BXm2BXm1Empty && meHFEMF_Minus_BXm2BXm1Empty->getRootObject()) meHFEMF_Minus_BXm2BXm1Empty->Fill(pt_sum_HFE_minus/pfmet->sumEt());
2900       mePhotonEtFraction_BXm2BXm1Empty    = map_of_MEs[DirName+"/"+"PfPhotonEtFraction_BXm2BXm1Empty"];     if (  mePhotonEtFraction_BXm2BXm1Empty  && mePhotonEtFraction_BXm2BXm1Empty ->getRootObject())  mePhotonEtFraction_BXm2BXm1Empty  ->Fill(pfmet->photonEtFraction());
2901       meNeutralHadronEtFraction_BXm2BXm1Empty    = map_of_MEs[DirName+"/"+"PfNeutralHadronEtFraction_BXm2BXm1Empty"];     if (  meNeutralHadronEtFraction_BXm2BXm1Empty  && meNeutralHadronEtFraction_BXm2BXm1Empty ->getRootObject())  meNeutralHadronEtFraction_BXm2BXm1Empty  ->Fill(pfmet->neutralHadronEtFraction());
2902       meChargedHadronEtFraction_BXm2BXm1Empty    = map_of_MEs[DirName+"/"+"PfChargedHadronEtFraction_BXm2BXm1Empty"];     if (  meChargedHadronEtFraction_BXm2BXm1Empty  && meChargedHadronEtFraction_BXm2BXm1Empty ->getRootObject())  meChargedHadronEtFraction_BXm2BXm1Empty  ->Fill(pfmet->chargedHadronEtFraction());
2903       meMET_BXm2BXm1Empty    = map_of_MEs[DirName+"/"+"MET_BXm2BXm1Empty"];     if (  meMET_BXm2BXm1Empty  && meMET_BXm2BXm1Empty ->getRootObject())  meMET_BXm2BXm1Empty  ->Fill(pfmet->pt());
2904       meSumET_BXm2BXm1Empty    = map_of_MEs[DirName+"/"+"SumET_BXm2BXm1Empty"];     if (  meSumET_BXm2BXm1Empty  && meSumET_BXm2BXm1Empty ->getRootObject())  meSumET_BXm2BXm1Empty  ->Fill(pfmet->sumEt());
2905       if(pt_sum_CHF_Barrel){
2906         meMETPhiChargedHadronsBarrel_BXm2BXm1Empty     = map_of_MEs[DirName+"/"+"METPhiChargedHadronsBarrel_BXm2BXm1Empty"];if(meMETPhiChargedHadronsBarrel_BXm2BXm1Empty  && meMETPhiChargedHadronsBarrel_BXm2BXm1Empty ->getRootObject())meMETPhiChargedHadronsBarrel_BXm2BXm1Empty->Fill(atan2(py_chargedHadronsBarrel,px_chargedHadronsBarrel));
2907       }
2908       if(pt_sum_CHF_Endcap_plus){
2909         meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Empty  = map_of_MEs[DirName+"/"+"METPhiChargedHadronsEndcapPlus_BXm2BXm1Empty"];if(meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Empty  && meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Empty ->getRootObject())meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Empty->Fill(atan2(py_chargedHadronsEndcapPlus,px_chargedHadronsEndcapPlus));
2910       }
2911       if(pt_sum_CHF_Endcap_minus){
2912         meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Empty     = map_of_MEs[DirName+"/"+"METPhiChargedHadronsEndcapMinus_BXm2BXm1Empty"];if(meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Empty  && meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Empty ->getRootObject())meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Empty->Fill(atan2(py_chargedHadronsEndcapMinus,px_chargedHadronsEndcapMinus));
2913       }
2914       if(pt_sum_NHF_Barrel){
2915         meMETPhiNeutralHadronsBarrel_BXm2BXm1Empty     = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsBarrel_BXm2BXm1Empty"];if(meMETPhiNeutralHadronsBarrel_BXm2BXm1Empty  && meMETPhiNeutralHadronsBarrel_BXm2BXm1Empty ->getRootObject())meMETPhiNeutralHadronsBarrel_BXm2BXm1Empty->Fill(atan2(py_neutralHadronsBarrel,px_neutralHadronsBarrel));
2916       }
2917       if(pt_sum_NHF_Endcap_plus){
2918         meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty     = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty"];if(meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty  && meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty ->getRootObject())meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty->Fill(atan2(py_neutralHadronsEndcapPlus,px_neutralHadronsEndcapPlus));
2919       }
2920       if(pt_sum_NHF_Endcap_minus){
2921         meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty     = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty"];if(meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty  && meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty ->getRootObject())meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty->Fill(atan2(py_neutralHadronsEndcapMinus,px_neutralHadronsEndcapMinus));
2922       }
2923       if(pt_sum_PhF_Barrel){
2924         meMETPhiPhotonsBarrel_BXm2BXm1Empty     = map_of_MEs[DirName+"/"+"METPhiPhotonsBarrel_BXm2BXm1Empty"];if(meMETPhiPhotonsBarrel_BXm2BXm1Empty  && meMETPhiPhotonsBarrel_BXm2BXm1Empty ->getRootObject())meMETPhiPhotonsBarrel_BXm2BXm1Empty->Fill(atan2(py_PhotonsBarrel,px_PhotonsBarrel));
2925       }
2926       if(pt_sum_PhF_Endcap_plus){
2927         meMETPhiPhotonsEndcapPlus_BXm2BXm1Empty     = map_of_MEs[DirName+"/"+"METPhiPhotonsEndcapPlus_BXm2BXm1Empty"];if(meMETPhiPhotonsEndcapPlus_BXm2BXm1Empty  && meMETPhiPhotonsEndcapPlus_BXm2BXm1Empty ->getRootObject())meMETPhiPhotonsEndcapPlus_BXm2BXm1Empty->Fill(atan2(py_PhotonsEndcapPlus,px_PhotonsEndcapPlus));
2928       }
2929       if(pt_sum_PhF_Endcap_minus){
2930         meMETPhiPhotonsEndcapMinus_BXm2BXm1Empty     = map_of_MEs[DirName+"/"+"METPhiPhotonsEndcapMinus_BXm2BXm1Empty"];if(meMETPhiPhotonsEndcapMinus_BXm2BXm1Empty  && meMETPhiPhotonsEndcapMinus_BXm2BXm1Empty ->getRootObject())meMETPhiPhotonsEndcapMinus_BXm2BXm1Empty->Fill(atan2(py_PhotonsEndcapMinus,px_PhotonsEndcapMinus));
2931       }
2932       if(pt_sum_HFH_plus){
2933         meMETPhiHFHadronsPlus_BXm2BXm1Empty     = map_of_MEs[DirName+"/"+"METPhiHFHadronsPlus_BXm2BXm1Empty"];if(meMETPhiHFHadronsPlus_BXm2BXm1Empty  && meMETPhiHFHadronsPlus_BXm2BXm1Empty ->getRootObject())meMETPhiHFHadronsPlus_BXm2BXm1Empty->Fill(atan2(py_HFHadronsPlus,px_HFHadronsPlus));
2934       }
2935       if(pt_sum_HFH_minus){
2936         meMETPhiHFHadronsMinus_BXm2BXm1Empty     = map_of_MEs[DirName+"/"+"METPhiHFHadronsMinus_BXm2BXm1Empty"];if(meMETPhiHFHadronsMinus_BXm2BXm1Empty  && meMETPhiHFHadronsMinus_BXm2BXm1Empty ->getRootObject())meMETPhiHFHadronsMinus_BXm2BXm1Empty->Fill(atan2(py_HFHadronsMinus,px_HFHadronsMinus));
2937       }
2938       if(pt_sum_HFE_plus){
2939         meMETPhiHFEGammasPlus_BXm2BXm1Empty     = map_of_MEs[DirName+"/"+"METPhiHFEGammasPlus_BXm2BXm1Empty"];if(meMETPhiHFEGammasPlus_BXm2BXm1Empty  && meMETPhiHFEGammasPlus_BXm2BXm1Empty ->getRootObject())meMETPhiHFEGammasPlus_BXm2BXm1Empty->Fill(atan2(py_HFEGammasPlus,px_HFEGammasPlus));
2940       }
2941       if(pt_sum_HFE_minus){
2942         meMETPhiHFEGammasMinus_BXm2BXm1Empty     = map_of_MEs[DirName+"/"+"METPhiHFEGammasMinus_BXm2BXm1Empty"];if(meMETPhiHFEGammasMinus_BXm2BXm1Empty  && meMETPhiHFEGammasMinus_BXm2BXm1Empty ->getRootObject())meMETPhiHFEGammasMinus_BXm2BXm1Empty->Fill(atan2(py_HFEGammasMinus,px_HFEGammasMinus));
2943       }
2944       }*/
2945         if (techTriggerCase[2]) {  //techTriggerResultBx0 && !techTriggerResultBxM1 --> previous bunch empty
2946           meCHF_Barrel_BXm1Empty = map_of_MEs[DirName + "/" + "PfChargedHadronEtFractionBarrel_BXm1Empty"];
2947           if (meCHF_Barrel_BXm1Empty && meCHF_Barrel_BXm1Empty->getRootObject())
2948             meCHF_Barrel_BXm1Empty->Fill(pt_sum_CHF_Barrel / pfmet->sumEt());
2949           meCHF_EndcapPlus_BXm1Empty = map_of_MEs[DirName + "/" + "PfChargedHadronEtFractionEndcapPlus_BXm1Empty"];
2950           if (meCHF_EndcapPlus_BXm1Empty && meCHF_EndcapPlus_BXm1Empty->getRootObject())
2951             meCHF_EndcapPlus_BXm1Empty->Fill(pt_sum_CHF_Endcap_plus / pfmet->sumEt());
2952           meCHF_EndcapMinus_BXm1Empty = map_of_MEs[DirName + "/" + "PfChargedHadronEtFractionEndcapMinus_BXm1Empty"];
2953           if (meCHF_EndcapMinus_BXm1Empty && meCHF_EndcapMinus_BXm1Empty->getRootObject())
2954             meCHF_EndcapMinus_BXm1Empty->Fill(pt_sum_CHF_Endcap_minus / pfmet->sumEt());
2955           meNHF_Barrel_BXm1Empty = map_of_MEs[DirName + "/" + "PfNeutralHadronEtFractionBarrel_BXm1Empty"];
2956           if (meNHF_Barrel_BXm1Empty && meNHF_Barrel_BXm1Empty->getRootObject())
2957             meNHF_Barrel_BXm1Empty->Fill(pt_sum_NHF_Barrel / pfmet->sumEt());
2958           meNHF_EndcapPlus_BXm1Empty = map_of_MEs[DirName + "/" + "PfNeutralHadronEtFractionEndcapPlus_BXm1Empty"];
2959           if (meNHF_EndcapPlus_BXm1Empty && meNHF_EndcapPlus_BXm1Empty->getRootObject())
2960             meNHF_EndcapPlus_BXm1Empty->Fill(pt_sum_NHF_Endcap_plus / pfmet->sumEt());
2961           meNHF_EndcapMinus_BXm1Empty = map_of_MEs[DirName + "/" + "PfNeutralHadronEtFractionEndcapMinus_BXm1Empty"];
2962           if (meNHF_EndcapMinus_BXm1Empty && meNHF_EndcapMinus_BXm1Empty->getRootObject())
2963             meNHF_EndcapMinus_BXm1Empty->Fill(pt_sum_NHF_Endcap_minus / pfmet->sumEt());
2964           mePhF_Barrel_BXm1Empty = map_of_MEs[DirName + "/" + "PfPhotonEtFractionBarrel_BXm1Empty"];
2965           if (mePhF_Barrel_BXm1Empty && mePhF_Barrel_BXm1Empty->getRootObject())
2966             mePhF_Barrel_BXm1Empty->Fill(pt_sum_PhF_Barrel / pfmet->sumEt());
2967           mePhF_EndcapPlus_BXm1Empty = map_of_MEs[DirName + "/" + "PfPhotonEtFractionEndcapPlus_BXm1Empty"];
2968           if (mePhF_EndcapPlus_BXm1Empty && mePhF_EndcapPlus_BXm1Empty->getRootObject())
2969             mePhF_EndcapPlus_BXm1Empty->Fill(pt_sum_PhF_Endcap_plus / pfmet->sumEt());
2970           mePhF_EndcapMinus_BXm1Empty = map_of_MEs[DirName + "/" + "PfPhotonEtFractionEndcapMinus_BXm1Empty"];
2971           if (mePhF_EndcapMinus_BXm1Empty && mePhF_EndcapMinus_BXm1Empty->getRootObject())
2972             mePhF_EndcapMinus_BXm1Empty->Fill(pt_sum_PhF_Endcap_minus / pfmet->sumEt());
2973           meHFHadF_Plus_BXm1Empty = map_of_MEs[DirName + "/" + "PfHFHadronEtFractionPlus_BXm1Empty"];
2974           if (meHFHadF_Plus_BXm1Empty && meHFHadF_Plus_BXm1Empty->getRootObject())
2975             meHFHadF_Plus_BXm1Empty->Fill(pt_sum_HFH_plus / pfmet->sumEt());
2976           meHFHadF_Minus_BXm1Empty = map_of_MEs[DirName + "/" + "PfHFHadronEtFractionMinus_BXm1Empty"];
2977           if (meHFHadF_Minus_BXm1Empty && meHFHadF_Minus_BXm1Empty->getRootObject())
2978             meHFHadF_Minus_BXm1Empty->Fill(pt_sum_HFH_minus / pfmet->sumEt());
2979           meHFEMF_Plus_BXm1Empty = map_of_MEs[DirName + "/" + "PfHFEMEtFractionPlus_BXm1Empty"];
2980           if (meHFEMF_Plus_BXm1Empty && meHFEMF_Plus_BXm1Empty->getRootObject())
2981             meHFEMF_Plus_BXm1Empty->Fill(pt_sum_HFE_plus / pfmet->sumEt());
2982           meHFEMF_Minus_BXm1Empty = map_of_MEs[DirName + "/" + "PfHFEMEtFractionMinus_BXm1Empty"];
2983           if (meHFEMF_Minus_BXm1Empty && meHFEMF_Minus_BXm1Empty->getRootObject())
2984             meHFEMF_Minus_BXm1Empty->Fill(pt_sum_HFE_minus / pfmet->sumEt());
2985           mePhotonEtFraction_BXm1Empty = map_of_MEs[DirName + "/" + "PfPhotonEtFraction_BXm1Empty"];
2986           if (mePhotonEtFraction_BXm1Empty && mePhotonEtFraction_BXm1Empty->getRootObject())
2987             mePhotonEtFraction_BXm1Empty->Fill(pfmet->photonEtFraction());
2988           meNeutralHadronEtFraction_BXm1Empty = map_of_MEs[DirName + "/" + "PfNeutralHadronEtFraction_BXm1Empty"];
2989           if (meNeutralHadronEtFraction_BXm1Empty && meNeutralHadronEtFraction_BXm1Empty->getRootObject())
2990             meNeutralHadronEtFraction_BXm1Empty->Fill(pfmet->neutralHadronEtFraction());
2991           meChargedHadronEtFraction_BXm1Empty = map_of_MEs[DirName + "/" + "PfChargedHadronEtFraction_BXm1Empty"];
2992           if (meChargedHadronEtFraction_BXm1Empty && meChargedHadronEtFraction_BXm1Empty->getRootObject())
2993             meChargedHadronEtFraction_BXm1Empty->Fill(pfmet->chargedHadronEtFraction());
2994           meMET_BXm1Empty = map_of_MEs[DirName + "/" + "MET_BXm1Empty"];
2995           if (meMET_BXm1Empty && meMET_BXm1Empty->getRootObject())
2996             meMET_BXm1Empty->Fill(pfmet->pt());
2997           meSumET_BXm1Empty = map_of_MEs[DirName + "/" + "SumET_BXm1Empty"];
2998           if (meSumET_BXm1Empty && meSumET_BXm1Empty->getRootObject())
2999             meSumET_BXm1Empty->Fill(pfmet->sumEt());
3000           if (pt_sum_CHF_Barrel) {
3001             meMETPhiChargedHadronsBarrel_BXm1Empty = map_of_MEs[DirName + "/" + "METPhiChargedHadronsBarrel_BXm1Empty"];
3002             if (meMETPhiChargedHadronsBarrel_BXm1Empty && meMETPhiChargedHadronsBarrel_BXm1Empty->getRootObject())
3003               meMETPhiChargedHadronsBarrel_BXm1Empty->Fill(atan2(py_chargedHadronsBarrel, px_chargedHadronsBarrel));
3004           }
3005           if (pt_sum_CHF_Endcap_plus) {
3006             meMETPhiChargedHadronsEndcapPlus_BXm1Empty =
3007                 map_of_MEs[DirName + "/" + "METPhiChargedHadronsEndcapPlus_BXm1Empty"];
3008             if (meMETPhiChargedHadronsEndcapPlus_BXm1Empty &&
3009                 meMETPhiChargedHadronsEndcapPlus_BXm1Empty->getRootObject())
3010               meMETPhiChargedHadronsEndcapPlus_BXm1Empty->Fill(
3011                   atan2(py_chargedHadronsEndcapPlus, px_chargedHadronsEndcapPlus));
3012           }
3013           if (pt_sum_CHF_Endcap_minus) {
3014             meMETPhiChargedHadronsEndcapMinus_BXm1Empty =
3015                 map_of_MEs[DirName + "/" + "METPhiChargedHadronsEndcapMinus_BXm1Empty"];
3016             if (meMETPhiChargedHadronsEndcapMinus_BXm1Empty &&
3017                 meMETPhiChargedHadronsEndcapMinus_BXm1Empty->getRootObject())
3018               meMETPhiChargedHadronsEndcapMinus_BXm1Empty->Fill(
3019                   atan2(py_chargedHadronsEndcapMinus, px_chargedHadronsEndcapMinus));
3020           }
3021           if (pt_sum_NHF_Barrel) {
3022             meMETPhiNeutralHadronsBarrel_BXm1Empty = map_of_MEs[DirName + "/" + "METPhiNeutralHadronsBarrel_BXm1Empty"];
3023             if (meMETPhiNeutralHadronsBarrel_BXm1Empty && meMETPhiNeutralHadronsBarrel_BXm1Empty->getRootObject())
3024               meMETPhiNeutralHadronsBarrel_BXm1Empty->Fill(atan2(py_neutralHadronsBarrel, px_neutralHadronsBarrel));
3025           }
3026           if (pt_sum_NHF_Endcap_plus) {
3027             meMETPhiNeutralHadronsEndcapPlus_BXm1Empty =
3028                 map_of_MEs[DirName + "/" + "METPhiNeutralHadronsEndcapPlus_BXm1Empty"];
3029             if (meMETPhiNeutralHadronsEndcapPlus_BXm1Empty &&
3030                 meMETPhiNeutralHadronsEndcapPlus_BXm1Empty->getRootObject())
3031               meMETPhiNeutralHadronsEndcapPlus_BXm1Empty->Fill(
3032                   atan2(py_neutralHadronsEndcapPlus, px_neutralHadronsEndcapPlus));
3033           }
3034           if (pt_sum_NHF_Endcap_minus) {
3035             meMETPhiNeutralHadronsEndcapMinus_BXm1Empty =
3036                 map_of_MEs[DirName + "/" + "METPhiNeutralHadronsEndcapMinus_BXm1Empty"];
3037             if (meMETPhiNeutralHadronsEndcapMinus_BXm1Empty &&
3038                 meMETPhiNeutralHadronsEndcapMinus_BXm1Empty->getRootObject())
3039               meMETPhiNeutralHadronsEndcapMinus_BXm1Empty->Fill(
3040                   atan2(py_neutralHadronsEndcapMinus, px_neutralHadronsEndcapMinus));
3041           }
3042           if (pt_sum_PhF_Barrel) {
3043             meMETPhiPhotonsBarrel_BXm1Empty = map_of_MEs[DirName + "/" + "METPhiPhotonsBarrel_BXm1Empty"];
3044             if (meMETPhiPhotonsBarrel_BXm1Empty && meMETPhiPhotonsBarrel_BXm1Empty->getRootObject())
3045               meMETPhiPhotonsBarrel_BXm1Empty->Fill(atan2(py_PhotonsBarrel, px_PhotonsBarrel));
3046           }
3047           if (pt_sum_PhF_Endcap_plus) {
3048             meMETPhiPhotonsEndcapPlus_BXm1Empty = map_of_MEs[DirName + "/" + "METPhiPhotonsEndcapPlus_BXm1Empty"];
3049             if (meMETPhiPhotonsEndcapPlus_BXm1Empty && meMETPhiPhotonsEndcapPlus_BXm1Empty->getRootObject())
3050               meMETPhiPhotonsEndcapPlus_BXm1Empty->Fill(atan2(py_PhotonsEndcapPlus, px_PhotonsEndcapPlus));
3051           }
3052           if (pt_sum_PhF_Endcap_minus) {
3053             meMETPhiPhotonsEndcapMinus_BXm1Empty = map_of_MEs[DirName + "/" + "METPhiPhotonsEndcapMinus_BXm1Empty"];
3054             if (meMETPhiPhotonsEndcapMinus_BXm1Empty && meMETPhiPhotonsEndcapMinus_BXm1Empty->getRootObject())
3055               meMETPhiPhotonsEndcapMinus_BXm1Empty->Fill(atan2(py_PhotonsEndcapMinus, px_PhotonsEndcapMinus));
3056           }
3057           if (pt_sum_HFH_plus) {
3058             meMETPhiHFHadronsPlus_BXm1Empty = map_of_MEs[DirName + "/" + "METPhiHFHadronsPlus_BXm1Empty"];
3059             if (meMETPhiHFHadronsPlus_BXm1Empty && meMETPhiHFHadronsPlus_BXm1Empty->getRootObject())
3060               meMETPhiHFHadronsPlus_BXm1Empty->Fill(atan2(py_HFHadronsPlus, px_HFHadronsPlus));
3061           }
3062           if (pt_sum_HFH_minus) {
3063             meMETPhiHFHadronsMinus_BXm1Empty = map_of_MEs[DirName + "/" + "METPhiHFHadronsMinus_BXm1Empty"];
3064             if (meMETPhiHFHadronsMinus_BXm1Empty && meMETPhiHFHadronsMinus_BXm1Empty->getRootObject())
3065               meMETPhiHFHadronsMinus_BXm1Empty->Fill(atan2(py_HFHadronsMinus, px_HFHadronsMinus));
3066           }
3067           if (pt_sum_HFE_plus) {
3068             meMETPhiHFEGammasPlus_BXm1Empty = map_of_MEs[DirName + "/" + "METPhiHFEGammasPlus_BXm1Empty"];
3069             if (meMETPhiHFEGammasPlus_BXm1Empty && meMETPhiHFEGammasPlus_BXm1Empty->getRootObject())
3070               meMETPhiHFEGammasPlus_BXm1Empty->Fill(atan2(py_HFEGammasPlus, px_HFEGammasPlus));
3071           }
3072           if (pt_sum_HFE_minus) {
3073             meMETPhiHFEGammasMinus_BXm1Empty = map_of_MEs[DirName + "/" + "METPhiHFEGammasMinus_BXm1Empty"];
3074             if (meMETPhiHFEGammasMinus_BXm1Empty && meMETPhiHFEGammasMinus_BXm1Empty->getRootObject())
3075               meMETPhiHFEGammasMinus_BXm1Empty->Fill(atan2(py_HFEGammasMinus, px_HFEGammasMinus));
3076           }
3077         }
3078 
3079       }  //fill candidate plots only then
3080 
3081       // PFMET getters
3082       //----------------------------------------------------------------------------
3083       double pfPhotonEtFraction = pfmet->photonEtFraction();
3084       double pfPhotonEt = pfmet->photonEt();
3085       double pfNeutralHadronEtFraction = pfmet->neutralHadronEtFraction();
3086       double pfNeutralHadronEt = pfmet->neutralHadronEt();
3087       double pfElectronEt = pfmet->electronEt();
3088       double pfChargedHadronEtFraction = pfmet->chargedHadronEtFraction();
3089       double pfChargedHadronEt = pfmet->chargedHadronEt();
3090       double pfMuonEt = pfmet->muonEt();
3091       double pfHFHadronEtFraction = pfmet->HFHadronEtFraction();
3092       double pfHFHadronEt = pfmet->HFHadronEt();
3093       double pfHFEMEtFraction = pfmet->HFEMEtFraction();
3094       double pfHFEMEt = pfmet->HFEMEt();
3095       mePhotonEtFraction = map_of_MEs[DirName + "/PfPhotonEtFraction"];
3096       mePhotonEt = map_of_MEs[DirName + "/PfPhotonEt"];
3097       meNeutralHadronEtFraction = map_of_MEs[DirName + "/PfNeutralHadronEtFraction"];
3098       meNeutralHadronEt = map_of_MEs[DirName + "/PfNeutralHadronEt"];
3099       meElectronEt = map_of_MEs[DirName + "/PfElectronEt"];
3100       meChargedHadronEtFraction = map_of_MEs[DirName + "/PfChargedHadronEtFraction"];
3101       meChargedHadronEt = map_of_MEs[DirName + "/PfChargedHadronEt"];
3102       meMuonEt = map_of_MEs[DirName + "/PfMuonEt"];
3103       meHFHadronEtFraction = map_of_MEs[DirName + "/PfHFHadronEtFraction"];
3104       meHFHadronEt = map_of_MEs[DirName + "/PfHFHadronEt"];
3105       meHFEMEtFraction = map_of_MEs[DirName + "/PfHFEMEtFraction"];
3106       meHFEMEt = map_of_MEs[DirName + "/PfHFEMEt"];
3107 
3108       if (mePhotonEtFraction && mePhotonEtFraction->getRootObject())
3109         mePhotonEtFraction->Fill(pfPhotonEtFraction);
3110       if (mePhotonEt && mePhotonEt->getRootObject())
3111         mePhotonEt->Fill(pfPhotonEt);
3112       if (meNeutralHadronEtFraction && meNeutralHadronEtFraction->getRootObject())
3113         meNeutralHadronEtFraction->Fill(pfNeutralHadronEtFraction);
3114       if (meNeutralHadronEt && meNeutralHadronEt->getRootObject())
3115         meNeutralHadronEt->Fill(pfNeutralHadronEt);
3116       if (meElectronEt && meElectronEt->getRootObject())
3117         meElectronEt->Fill(pfElectronEt);
3118       if (meChargedHadronEtFraction && meChargedHadronEtFraction->getRootObject())
3119         meChargedHadronEtFraction->Fill(pfChargedHadronEtFraction);
3120       if (meChargedHadronEt && meChargedHadronEt->getRootObject())
3121         meChargedHadronEt->Fill(pfChargedHadronEt);
3122       if (meMuonEt && meMuonEt->getRootObject())
3123         meMuonEt->Fill(pfMuonEt);
3124       if (meHFHadronEtFraction && meHFHadronEtFraction->getRootObject())
3125         meHFHadronEtFraction->Fill(pfHFHadronEtFraction);
3126       if (meHFHadronEt && meHFHadronEt->getRootObject())
3127         meHFHadronEt->Fill(pfHFHadronEt);
3128       if (meHFEMEtFraction && meHFEMEtFraction->getRootObject())
3129         meHFEMEtFraction->Fill(pfHFEMEtFraction);
3130       if (meHFEMEt && meHFEMEt->getRootObject())
3131         meHFEMEt->Fill(pfHFEMEt);
3132 
3133       //NPV profiles
3134 
3135       mePhotonEtFraction_profile = map_of_MEs[DirName + "/PfPhotonEtFraction_profile"];
3136       mePhotonEt_profile = map_of_MEs[DirName + "/PfPhotonEt_profile"];
3137       meNeutralHadronEtFraction_profile = map_of_MEs[DirName + "/PfNeutralHadronEtFraction_profile"];
3138       meNeutralHadronEt_profile = map_of_MEs[DirName + "/PfNeutralHadronEt_profile"];
3139       meChargedHadronEtFraction_profile = map_of_MEs[DirName + "/PfChargedHadronEtFraction_profile"];
3140       meChargedHadronEt_profile = map_of_MEs[DirName + "/PfChargedHadronEt_profile"];
3141       meHFHadronEtFraction_profile = map_of_MEs[DirName + "/PfHFHadronEtFraction_profile"];
3142       meHFHadronEt_profile = map_of_MEs[DirName + "/PfHFHadronEt_profile"];
3143       meHFEMEtFraction_profile = map_of_MEs[DirName + "/PfHFEMEtFraction_profile"];
3144       meHFEMEt_profile = map_of_MEs[DirName + "/PfHFEMEt_profile"];
3145 
3146       if (mePhotonEtFraction_profile && mePhotonEtFraction_profile->getRootObject())
3147         mePhotonEtFraction_profile->Fill(numPV_, pfPhotonEtFraction);
3148       if (mePhotonEt_profile && mePhotonEt_profile->getRootObject())
3149         mePhotonEt_profile->Fill(numPV_, pfPhotonEt);
3150       if (meNeutralHadronEtFraction_profile && meNeutralHadronEtFraction_profile->getRootObject())
3151         meNeutralHadronEtFraction_profile->Fill(numPV_, pfNeutralHadronEtFraction);
3152       if (meNeutralHadronEt_profile && meNeutralHadronEt_profile->getRootObject())
3153         meNeutralHadronEt_profile->Fill(numPV_, pfNeutralHadronEt);
3154       if (meChargedHadronEtFraction_profile && meChargedHadronEtFraction_profile->getRootObject())
3155         meChargedHadronEtFraction_profile->Fill(numPV_, pfChargedHadronEtFraction);
3156       if (meChargedHadronEt_profile && meChargedHadronEt_profile->getRootObject())
3157         meChargedHadronEt_profile->Fill(numPV_, pfChargedHadronEt);
3158       if (meHFHadronEtFraction_profile && meHFHadronEtFraction_profile->getRootObject())
3159         meHFHadronEtFraction_profile->Fill(numPV_, pfHFHadronEtFraction);
3160       if (meHFHadronEt_profile && meHFHadronEt_profile->getRootObject())
3161         meHFHadronEt_profile->Fill(numPV_, pfHFHadronEt);
3162       if (meHFEMEtFraction_profile && meHFEMEtFraction_profile->getRootObject())
3163         meHFEMEtFraction_profile->Fill(numPV_, pfHFEMEtFraction);
3164       if (meHFEMEt_profile && meHFEMEt_profile->getRootObject())
3165         meHFEMEt_profile->Fill(numPV_, pfHFEMEt);
3166     }
3167 
3168     if (isMiniAODMet_) {
3169       mePhotonEtFraction = map_of_MEs[DirName + "/PfPhotonEtFraction"];
3170       meNeutralHadronEtFraction = map_of_MEs[DirName + "/PfNeutralHadronEtFraction"];
3171       meChargedHadronEtFraction = map_of_MEs[DirName + "/PfChargedHadronEtFraction"];
3172       meHFHadronEtFraction = map_of_MEs[DirName + "/PfHFHadronEtFraction"];
3173       meHFEMEtFraction = map_of_MEs[DirName + "/PfHFEMEtFraction"];
3174 
3175       if (mePhotonEtFraction && mePhotonEtFraction->getRootObject())
3176         mePhotonEtFraction->Fill(patmet->NeutralEMFraction());
3177       if (meNeutralHadronEtFraction && meNeutralHadronEtFraction->getRootObject())
3178         meNeutralHadronEtFraction->Fill(patmet->NeutralHadEtFraction());
3179       if (meChargedHadronEtFraction && meChargedHadronEtFraction->getRootObject())
3180         meChargedHadronEtFraction->Fill(patmet->ChargedHadEtFraction());
3181       if (meHFHadronEtFraction && meHFHadronEtFraction->getRootObject())
3182         meHFHadronEtFraction->Fill(patmet->Type6EtFraction());  //HFHadrons
3183       if (meHFEMEtFraction && meHFEMEtFraction->getRootObject())
3184         meHFEMEtFraction->Fill(patmet->Type7EtFraction());
3185 
3186       //NPV profiles
3187       mePhotonEtFraction_profile = map_of_MEs[DirName + "/PfPhotonEtFraction_profile"];
3188       meNeutralHadronEtFraction_profile = map_of_MEs[DirName + "/PfNeutralHadronEtFraction_profile"];
3189       meChargedHadronEtFraction_profile = map_of_MEs[DirName + "/PfChargedHadronEtFraction_profile"];
3190       meHFHadronEtFraction_profile = map_of_MEs[DirName + "/PfHFHadronEtFraction_profile"];
3191       meHFEMEtFraction_profile = map_of_MEs[DirName + "/PfHFEMEtFraction_profile"];
3192 
3193       if (mePhotonEtFraction_profile && mePhotonEtFraction_profile->getRootObject())
3194         mePhotonEtFraction_profile->Fill(numPV_, patmet->NeutralEMFraction());
3195       if (meNeutralHadronEtFraction_profile && meNeutralHadronEtFraction_profile->getRootObject())
3196         meNeutralHadronEtFraction_profile->Fill(numPV_, patmet->NeutralHadEtFraction());
3197       if (meChargedHadronEtFraction_profile && meChargedHadronEtFraction_profile->getRootObject())
3198         meChargedHadronEtFraction_profile->Fill(numPV_, patmet->ChargedHadEtFraction());
3199       if (meHFHadronEtFraction_profile && meHFHadronEtFraction_profile->getRootObject())
3200         meHFHadronEtFraction_profile->Fill(numPV_, patmet->Type6EtFraction());
3201       if (meHFEMEtFraction_profile && meHFEMEtFraction_profile->getRootObject())
3202         meHFEMEtFraction_profile->Fill(numPV_, patmet->Type7EtFraction());
3203 
3204       mePhotonEt = map_of_MEs[DirName + "/PfPhotonEt"];
3205       meNeutralHadronEt = map_of_MEs[DirName + "/PfNeutralHadronEt"];
3206       meChargedHadronEt = map_of_MEs[DirName + "/PfChargedHadronEt"];
3207       meHFHadronEt = map_of_MEs[DirName + "/PfHFHadronEt"];
3208       meHFEMEt = map_of_MEs[DirName + "/PfHFEMEt"];
3209       meMuonEt = map_of_MEs[DirName + "/PfMuonEt"];
3210       meElectronEt = map_of_MEs[DirName + "/PfElectronEt"];
3211 
3212       if (mePhotonEt && mePhotonEt->getRootObject())
3213         mePhotonEt->Fill(patmet->NeutralEMFraction() * patmet->sumEt());
3214       if (meNeutralHadronEt && meNeutralHadronEt->getRootObject())
3215         meNeutralHadronEt->Fill(patmet->NeutralHadEtFraction() * patmet->sumEt());
3216       if (meChargedHadronEt && meChargedHadronEt->getRootObject())
3217         meChargedHadronEt->Fill(patmet->ChargedHadEtFraction() * patmet->sumEt());
3218       if (meHFHadronEt && meHFHadronEt->getRootObject())
3219         meHFHadronEt->Fill(patmet->Type6EtFraction() * patmet->sumEt());  //HFHadrons
3220       if (meHFEMEt && meHFEMEt->getRootObject())
3221         meHFEMEt->Fill(patmet->Type7EtFraction() * patmet->sumEt());
3222       if (meMuonEt && meMuonEt->getRootObject())
3223         meMuonEt->Fill(patmet->MuonEtFraction() * patmet->sumEt());
3224       if (meElectronEt && meElectronEt->getRootObject())
3225         meElectronEt->Fill(patmet->ChargedEMEtFraction() * patmet->sumEt());
3226 
3227       //NPV profiles
3228       mePhotonEt_profile = map_of_MEs[DirName + "/PfPhotonEt_profile"];
3229       meNeutralHadronEt_profile = map_of_MEs[DirName + "/PfNeutralHadronEt_profile"];
3230       meChargedHadronEt_profile = map_of_MEs[DirName + "/PfChargedHadronEt_profile"];
3231       meHFHadronEt_profile = map_of_MEs[DirName + "/PfHFHadronEt_profile"];
3232       meHFEMEt_profile = map_of_MEs[DirName + "/PfHFEMEt_profile"];
3233 
3234       if (mePhotonEt_profile && mePhotonEt_profile->getRootObject())
3235         mePhotonEt_profile->Fill(numPV_, patmet->NeutralEMFraction() * patmet->sumEt());
3236       if (meNeutralHadronEt_profile && meNeutralHadronEt_profile->getRootObject())
3237         meNeutralHadronEt_profile->Fill(numPV_, patmet->NeutralHadEtFraction() * patmet->sumEt());
3238       if (meChargedHadronEt_profile && meChargedHadronEt_profile->getRootObject())
3239         meChargedHadronEt_profile->Fill(numPV_, patmet->ChargedHadEtFraction() * patmet->sumEt());
3240       if (meHFHadronEt_profile && meHFHadronEt_profile->getRootObject())
3241         meHFHadronEt_profile->Fill(numPV_, patmet->Type6EtFraction() * patmet->sumEt());
3242       if (meHFEMEt_profile && meHFEMEt_profile->getRootObject())
3243         meHFEMEt_profile->Fill(numPV_, patmet->Type7EtFraction() * patmet->sumEt());
3244     }
3245 
3246     if (isCaloMet_) {
3247       //if (bLumiSecPlot){//get from config level
3248       if (fill_met_high_level_histo) {
3249         hMExLS = map_of_MEs[DirName + "/" + "MExLS"];
3250         if (hMExLS && hMExLS->getRootObject())
3251           hMExLS->Fill(MEx, myLuminosityBlock);
3252         hMEyLS = map_of_MEs[DirName + "/" + "MEyLS"];
3253         if (hMEyLS && hMEyLS->getRootObject())
3254           hMEyLS->Fill(MEy, myLuminosityBlock);
3255       }
3256     }
3257   }  //check if we only wanna do Z plots
3258 }