CMS 3D CMS Logo

METAnalyzer.cc
Go to the documentation of this file.
1 
20 
25 
27 
31 #include <cmath>
32 #include "TH2F.h"
33 #include "TH2.h"
34 
35 #include <string>
36 
37 using namespace edm;
38 using namespace reco;
39 using namespace math;
40 
41 // ***********************************************************
43  parameters = pSet;
44 
45  m_l1algoname_ = pSet.getParameter<std::string>("l1algoname");
46  m_bitAlgTechTrig_=-1;
47 
48  miniaodfilterdec=-1;
49 
50 
51  LSBegin_ = pSet.getParameter<int>("LSBegin");
52  LSEnd_ = pSet.getParameter<int>("LSEnd");
53  // Smallest track pt
54  ptMinCand_ = pSet.getParameter<double>("ptMinCand");
55 
56  MetType_ = parameters.getUntrackedParameter<std::string>("METType");
57 
58  triggerResultsLabel_ = parameters.getParameter<edm::InputTag>("TriggerResultsLabel");
59  triggerResultsToken_= consumes<edm::TriggerResults>(edm::InputTag(triggerResultsLabel_));
60 
61  isCaloMet_ = (std::string("calo")==MetType_);
62  //isTCMet_ = (std::string("tc") ==MetType_);
63  isPFMet_ = (std::string("pf") ==MetType_);
64  isMiniAODMet_ = (std::string("miniaod") ==MetType_);
65  if(!isMiniAODMet_){
66  jetCorrectorToken_ = consumes<reco::JetCorrector>(pSet.getParameter<edm::InputTag>("JetCorrections"));
67  }
68 
69  // MET information
70  metCollectionLabel_ = parameters.getParameter<edm::InputTag>("METCollectionLabel");
71 
72  if(/*isTCMet_ || */isCaloMet_){
73  inputJetIDValueMap = pSet.getParameter<edm::InputTag>("InputJetIDValueMap");
74  jetID_ValueMapToken_= consumes< edm::ValueMap<reco::JetID> >(inputJetIDValueMap);
76  }
77 
78  if(isPFMet_){
79  pflowToken_ = consumes<std::vector<reco::PFCandidate> >(pSet.getParameter<edm::InputTag>("srcPFlow"));
81  }
82  if(isMiniAODMet_){
83  pflowPackedToken_ = consumes<std::vector<pat::PackedCandidate> >(pSet.getParameter<edm::InputTag>("srcPFlow"));
85  }
86  MuonsToken_ = consumes<reco::MuonCollection>(pSet.getParameter<edm::InputTag> ("muonsrc"));
87 
88  ptThreshold_ = parameters.getParameter<double>("ptThreshold");
89 
90 
91  if(isPFMet_){
92  pfMetToken_= consumes<reco::PFMETCollection>(edm::InputTag(metCollectionLabel_));
93  }
94  if(isCaloMet_){
95  caloMetToken_= consumes<reco::CaloMETCollection>(edm::InputTag(metCollectionLabel_));
96  }
97  if(isMiniAODMet_){
98  patMetToken_= consumes<pat::METCollection>(edm::InputTag(metCollectionLabel_));
99  }
100  //if(isTCMet_){
101  // tcMetToken_= consumes<reco::METCollection>(edm::InputTag(metCollectionLabel_));
102  //}
103 
104  fill_met_high_level_histo = parameters.getParameter<bool>("fillMetHighLevel");
105  fillCandidateMap_histos = parameters.getParameter<bool>("fillCandidateMaps");
106 
107  hTriggerLabelsIsSet_ = false;
108  //jet cleanup parameters
109  cleaningParameters_ = pSet.getParameter<ParameterSet>("CleaningParameters");
110 
111  diagnosticsParameters_ = pSet.getParameter<std::vector<edm::ParameterSet> >("METDiagonisticsParameters");
112 
113  edm::ConsumesCollector iC = consumesCollector();
114  //DCS
115  DCSFilter_ = new JetMETDQMDCSFilter(parameters.getParameter<ParameterSet>("DCSFilter"), iC );
116 
117  //Vertex requirements
118  bypassAllPVChecks_ = cleaningParameters_.getParameter<bool>("bypassAllPVChecks");
119  bypassAllDCSChecks_ = cleaningParameters_.getParameter<bool>("bypassAllDCSChecks");
120  runcosmics_ = parameters.getUntrackedParameter<bool>("runcosmics");
121  onlyCleaned_ = parameters.getUntrackedParameter<bool>("onlyCleaned");
122  vertexTag_ = cleaningParameters_.getParameter<edm::InputTag>("vertexCollection");
123  vertexToken_ = consumes<std::vector<reco::Vertex> >(edm::InputTag(vertexTag_));
124 
125  //Trigger parameters
126  gtTag_ = cleaningParameters_.getParameter<edm::InputTag>("gtLabel");
127  gtToken_= consumes<L1GlobalTriggerReadoutRecord>(edm::InputTag(gtTag_));
128 
129  // Other data collections
130  jetCollectionLabel_ = parameters.getParameter<edm::InputTag>("JetCollectionLabel");
131  if (isCaloMet_) caloJetsToken_ = consumes<reco::CaloJetCollection>(jetCollectionLabel_);
132  //if (isTCMet_) jptJetsToken_ = consumes<reco::JPTJetCollection>(jetCollectionLabel_);
133  if (isPFMet_) pfJetsToken_ = consumes<reco::PFJetCollection>(jetCollectionLabel_);
134  if (isMiniAODMet_) patJetsToken_ = consumes<pat::JetCollection>(jetCollectionLabel_);
135 
136  HBHENoiseStringMiniAOD = parameters.getParameter<std::string>("HBHENoiseLabelMiniAOD");
137  HBHEIsoNoiseStringMiniAOD = parameters.getParameter<std::string>("HBHEIsoNoiseLabelMiniAOD");
138 
139  hbheNoiseFilterResultTag_ = parameters.getParameter<edm::InputTag>("HBHENoiseFilterResultLabel");
140  hbheNoiseFilterResultToken_=consumes<bool>(hbheNoiseFilterResultTag_);
141  hbheNoiseIsoFilterResultTag_ = parameters.getParameter<edm::InputTag>("HBHENoiseIsoFilterResultLabel");
142  hbheIsoNoiseFilterResultToken_ =consumes<bool> (hbheNoiseIsoFilterResultTag_);
143  CSCHaloResultTag_= parameters.getParameter<edm::InputTag>("CSCHaloResultLabel");
144  CSCHaloResultToken_=consumes<bool>(CSCHaloResultTag_);
145  CSCHalo2015ResultTag_= parameters.getParameter<edm::InputTag>("CSCHalo2015ResultLabel");
146  CSCHalo2015ResultToken_=consumes<bool> (CSCHalo2015ResultTag_);
147  EcalDeadCellTriggerTag_= parameters.getParameter<edm::InputTag>("EcalDeadCellTriggerPrimitiveFilterLabel");
148  EcalDeadCellTriggerToken_=consumes<bool>(EcalDeadCellTriggerTag_);
149  EcalDeadCellBoundaryTag_= parameters.getParameter<edm::InputTag>("EcalDeadCellBoundaryEnergyFilterLabel");
150  EcalDeadCellBoundaryToken_=consumes<bool>(EcalDeadCellBoundaryTag_);
151  eeBadScFilterTag_= parameters.getParameter<edm::InputTag>("eeBadScFilterLabel");
152  eeBadScFilterToken_=consumes<bool>(eeBadScFilterTag_);
153  HcalStripHaloTag_= parameters.getParameter<edm::InputTag>("HcalStripHaloFilterLabel");
154  HcalStripHaloToken_=consumes<bool>(HcalStripHaloTag_);
155 
156  if(isMiniAODMet_) {
157  METFilterMiniAODLabel_=parameters.getParameter<edm::InputTag>("FilterResultsLabelMiniAOD");
158  METFilterMiniAODToken_=consumes<edm::TriggerResults>(METFilterMiniAODLabel_);
159 
160  METFilterMiniAODLabel2_=parameters.getParameter<edm::InputTag>("FilterResultsLabelMiniAOD2");
161  METFilterMiniAODToken2_=consumes<edm::TriggerResults>(METFilterMiniAODLabel2_);
162  }
163 
164  //
165  nbinsPV_ = parameters.getParameter<int>("pVBin");
166  nPVMin_ = parameters.getParameter<double>("pVMin");
167  nPVMax_ = parameters.getParameter<double>("pVMax");
168 
169  triggerSelectedSubFolders_ = parameters.getParameter<edm::VParameterSet>("triggerSelectedSubFolders");
170  for (edm::VParameterSet::const_iterator it = triggerSelectedSubFolders_.begin(); it!= triggerSelectedSubFolders_.end(); it++) {
171  triggerFolderEventFlag_.push_back(new GenericTriggerEventFlag( *it, consumesCollector(), *this ));
172  triggerFolderExpr_.push_back(it->getParameter<std::vector<std::string> >("hltPaths"));
173  triggerFolderLabels_.push_back(it->getParameter<std::string>("label"));
174  }
175 
176  cleaningParameters_ = parameters.getParameter<ParameterSet>("CleaningParameters");
177 
178  verbose_ = parameters.getParameter<int>("verbose");
179 
180  FolderName_ = parameters.getUntrackedParameter<std::string>("FolderName");
181 
182 }
183 
184 // ***********************************************************
186  for (std::vector<GenericTriggerEventFlag *>::const_iterator it = triggerFolderEventFlag_.begin(); it!= triggerFolderEventFlag_.end(); it++) {
187  delete *it;
188  }
189  delete DCSFilter_;
190 }
191 
192 
194  edm::Run const & iRun,
195  edm::EventSetup const &) {
196  std::string DirName = FolderName_+metCollectionLabel_.label();
197  ibooker.setCurrentFolder(DirName);
198 
199  if(!folderNames_.empty()){
200  folderNames_.clear();
201  }
202  if(runcosmics_){
203  folderNames_.push_back("Uncleaned");
204  }else{
205  if(!onlyCleaned_){
206  folderNames_.push_back("Uncleaned");
207  }
208  folderNames_.push_back("Cleaned");
209  folderNames_.push_back("DiJet");
210  if(!isMiniAODMet_){
211  folderNames_.push_back("ZJets");
212  }
213  }
214  for (std::vector<std::string>::const_iterator ic = folderNames_.begin();
215  ic != folderNames_.end(); ic++){
216  bookMESet(DirName+"/"+*ic, ibooker,map_dijet_MEs);
217  }
218 }
219 
220 
221 // ***********************************************************
222 void METAnalyzer::bookMESet(std::string DirName, DQMStore::IBooker & ibooker, std::map<std::string,MonitorElement*>& map_of_MEs)
223 {
224  bool bLumiSecPlot=fill_met_high_level_histo;
225  //bool inTriggerPathPlots=false;
226  bool fillPFCandidatePlots=false;
227  bool fillZPlots=false;
228 
229  if (DirName.find("Cleaned")!=std::string::npos) {
230  fillPFCandidatePlots=true;
231  bookMonitorElement(DirName,ibooker,map_of_MEs,bLumiSecPlot,fillPFCandidatePlots,fillZPlots);
232  //for (unsigned int i = 0; i<triggerFolderEventFlag_.size(); i++) {
233  //fillPFCandidatePlots=false;
234  //if (triggerFolderEventFlag_[i]->on()) {
235  //bookMonitorElement(DirName+"/"+triggerFolderLabels_[i],ibooker,map_of_MEs,bLumiSecPlot,fillPFCandidatePlots,fillZPlots);
236  //}
237  //}
238  }else if (DirName.find("ZJets")!=std::string::npos) {
239  fillPFCandidatePlots=false;
240  fillZPlots=true;
241  bookMonitorElement(DirName,ibooker,map_of_MEs,bLumiSecPlot,fillPFCandidatePlots,fillZPlots);
242  }else{
243  bookMonitorElement(DirName,ibooker,map_of_MEs,bLumiSecPlot,fillPFCandidatePlots,fillZPlots);
244  }
245 }
246 
247 // ***********************************************************
248 void METAnalyzer::bookMonitorElement(std::string DirName,DQMStore::IBooker & ibooker, std::map<std::string,MonitorElement*>& map_of_MEs, bool bLumiSecPlot=false, bool fillPFCandPlots=false, bool fillZPlots=false)
249 {
250  if (verbose_) std::cout << "bookMonitorElement " << DirName << std::endl;
251 
252  ibooker.setCurrentFolder(DirName);
253  if(fillZPlots){
254  if(isCaloMet_){
255  meZJets_u_par = ibooker.book1D("u_parallel_Z_inc", "u_parallel_Z_inc", 50, -1000., 75);
256  }else{
257  meZJets_u_par = ibooker.book1D("u_parallel_Z_inc", "u_parallel_Z_inc", 50, -800., 75);
258  }
259  meZJets_u_par_ZPt_0_15 = ibooker.book1D("u_parallel_ZPt_0_15", "u_parallel_ZPt_0_15", 50, -100, 75);
260  meZJets_u_par_ZPt_15_30 = ibooker.book1D("u_parallel_ZPt_15_30", "u_parallel_ZPt_15_30", 50, -100, 50);
261  meZJets_u_par_ZPt_30_55 = ibooker.book1D("u_parallel_ZPt_30_55", "u_parallel_ZPt_30_55", 50, -175, 50);
262  meZJets_u_par_ZPt_55_75 = ibooker.book1D("u_parallel_ZPt_55_75", "u_parallel_ZPt_55_75", 50, -175, 0);
263  meZJets_u_par_ZPt_75_150 = ibooker.book1D("u_parallel_ZPt_75_150", "u_parallel_ZPt_75_150", 50, -300, 0);
264  if(isCaloMet_){
265  meZJets_u_par_ZPt_150_290 = ibooker.book1D("u_parallel_ZPt_150_290", "u_parallel_ZPt_150_290", 50, -750, -100);
266  }else{
267  meZJets_u_par_ZPt_150_290 = ibooker.book1D("u_parallel_ZPt_150_290", "u_parallel_ZPt_150_290", 50, -450, -50);
268  }
269  if(isCaloMet_){
270  meZJets_u_par_ZPt_290 = ibooker.book1D("u_parallel_ZPt_290", "u_parallel_ZPt_290", 50, -1000., -350.);
271  }else{
272  meZJets_u_par_ZPt_290 = ibooker.book1D("u_parallel_ZPt_290", "u_parallel_ZPt_290", 50, -750., -150.);
273  }
274  meZJets_u_perp = ibooker.book1D("u_perp_Z_inc", "u_perp_Z_inc", 50, -85., 85.);
275  meZJets_u_perp_ZPt_0_15 = ibooker.book1D("u_perp_ZPt_0_15", "u_perp_ZPt_0_15", 50, -85., 85.);
276  meZJets_u_perp_ZPt_15_30 = ibooker.book1D("u_perp_ZPt_15_30", "u_perp_ZPt_15_30", 50, -85., 85.);
277  meZJets_u_perp_ZPt_30_55 = ibooker.book1D("u_perp_ZPt_30_55", "u_perp_ZPt_30_55", 50, -85., 85.);
278  meZJets_u_perp_ZPt_55_75 = ibooker.book1D("u_perp_ZPt_55_75", "u_perp_ZPt_55_75", 50, -85., 85.);
279  meZJets_u_perp_ZPt_75_150 = ibooker.book1D("u_perp_ZPt_75_150", "u_perp_ZPt_75_150", 50, -85., 85.);
280  meZJets_u_perp_ZPt_150_290 = ibooker.book1D("u_perp_ZPt_150_290", "u_perp_ZPt_150_290", 50, -85., 85.);
281  meZJets_u_perp_ZPt_290 = ibooker.book1D("u_perp_ZPt_290", "u_perp_ZPt_290", 50, -85., 85.);
282 
283  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"u_parallel_Z_inc",meZJets_u_par));
284  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"u_parallel_ZPt_0_15",meZJets_u_par_ZPt_0_15));
285  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"u_parallel_ZPt_15_30",meZJets_u_par_ZPt_15_30));
286  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"u_parallel_ZPt_30_55",meZJets_u_par_ZPt_30_55));
287  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"u_parallel_ZPt_55_75",meZJets_u_par_ZPt_55_75));
288  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"u_parallel_ZPt_75_150",meZJets_u_par_ZPt_75_150));
289  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"u_parallel_ZPt_150_290",meZJets_u_par_ZPt_150_290));
290  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"u_parallel_ZPt_290",meZJets_u_par_ZPt_290));
291 
292  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"u_perp_Z_inc",meZJets_u_perp));
293  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"u_perp_ZPt_0_15",meZJets_u_perp_ZPt_0_15));
294  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"u_perp_ZPt_15_30",meZJets_u_perp_ZPt_15_30));
295  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"u_perp_ZPt_30_55",meZJets_u_perp_ZPt_30_55));
296  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"u_perp_ZPt_55_75",meZJets_u_perp_ZPt_55_75));
297  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"u_perp_ZPt_75_150",meZJets_u_perp_ZPt_75_150));
298  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"u_perp_ZPt_150_290",meZJets_u_perp_ZPt_150_290));
299  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"u_perp_ZPt_290",meZJets_u_perp_ZPt_290));
300  }
301 
302  if(!fillZPlots){
303  hTrigger = ibooker.book1D("triggerResults", "triggerResults", 500, 0, 500);
304  for (unsigned int i = 0; i<allTriggerNames_.size();i++){
305  if(i<(unsigned int)hTrigger->getNbinsX()){
306  if (!hTriggerLabelsIsSet_) {
307  hTrigger->setBinLabel(i+1, allTriggerNames_[i]);
308  }
309  }
310  }
311  if (!hTriggerLabelsIsSet_) for (int i = allTriggerNames_.size(); i<hTrigger->getNbinsX();i++){
312  hTrigger->setBinLabel(i+1, "");
313  }
314  hTriggerLabelsIsSet_ = true;
315 
316  hMEx = ibooker.book1D("MEx", "MEx", 200, -500, 500);
317  hMEy = ibooker.book1D("MEy", "MEy", 200, -500, 500);
318  hMET = ibooker.book1D("MET", "MET", 200, 0, 1000);
319  hMET_2 = ibooker.book1D("MET_2", "MET Range 2",200, 0, 2000);
320  hSumET = ibooker.book1D("SumET", "SumET", 400, 0, 4000);
321  hMETSig = ibooker.book1D("METSig", "METSig", 51, 0, 51);
322  hMETPhi = ibooker.book1D("METPhi", "METPhi", 60, -M_PI, M_PI);
323  hMET_logx = ibooker.book1D("MET_logx", "MET_logx", 40, -1, 9);
324  hSumET_logx = ibooker.book1D("SumET_logx", "SumET_logx", 40, -1, 9);
325 
326  hMEx ->setAxisTitle("MEx [GeV]", 1);
327  hMEy ->setAxisTitle("MEy [GeV]", 1);
328  hMET ->setAxisTitle("MET [GeV]", 1);
329  hMET_2 ->setAxisTitle("MET [GeV]", 1);
330  hSumET ->setAxisTitle("SumET [GeV]", 1);
331  hMETSig ->setAxisTitle("METSig", 1);
332  hMETPhi ->setAxisTitle("METPhi [rad]", 1);
333  hMET_logx ->setAxisTitle("log(MET) [GeV]", 1);
334  hSumET_logx->setAxisTitle("log(SumET) [GeV]", 1);
335 
336  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"triggerResults",hTrigger));
337  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MEx",hMEx));
338  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MEy",hMEy));
339  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MET",hMET));
340  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MET_2",hMET_2));
341  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"SumET",hSumET));
342  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METSig",hMETSig));
343  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhi",hMETPhi));
344  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MET_logx",hMET_logx));
345  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"SumET_logx",hSumET_logx));
346 
347  hMET_HBHENoiseFilter = ibooker.book1D("MET_HBHENoiseFilter", "MET_HBHENoiseFiltered", 200, 0, 1000);
348  hMET_CSCTightHaloFilter = ibooker.book1D("MET_CSCTightHaloFilter", "MET_CSCTightHaloFiltered", 200, 0, 1000);
349  hMET_eeBadScFilter = ibooker.book1D("MET_eeBadScFilter", "MET_eeBadScFiltered", 200, 0, 1000);
350  hMET_HBHEIsoNoiseFilter = ibooker.book1D("MET_HBHEIsoNoiseFilter", "MET_HBHEIsoNoiseFiltered", 200, 0, 1000);
351  hMET_CSCTightHalo2015Filter = ibooker.book1D("MET_CSCTightHalo2015Filter", "MET_CSCTightHalo2015Filtered", 200, 0, 1000);
352  hMET_EcalDeadCellTriggerFilter = ibooker.book1D("MET_EcalDeadCellTriggerFilter", "MET_EcalDeadCellTriggerFiltered", 200, 0, 1000);
353  hMET_EcalDeadCellBoundaryFilter = ibooker.book1D("MET_EcalDeadCellBoundaryFilter", "MET_EcalDeadCellBoundaryFiltered", 200, 0, 1000);
354  hMET_HcalStripHaloFilter = ibooker.book1D("MET_HcalStripHaloFilter", "MET_HcalStripHaloFiltered", 200, 0, 1000);
355 
356  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MET_HBHENoiseFilter",hMET_HBHENoiseFilter));
357  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MET_CSCTightHaloFilter",hMET_CSCTightHaloFilter));
358  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MET_eeBadScFilter",hMET_eeBadScFilter));
359  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MET_HBHEIsoNoiseFilter",hMET_HBHEIsoNoiseFilter));
360  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MET_CSCTightHalo2015Filter",hMET_CSCTightHalo2015Filter));
361  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MET_EcalDeadCellTriggerFilter",hMET_EcalDeadCellTriggerFilter));
362  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MET_EcalDeadCellBoundaryFilter",hMET_EcalDeadCellBoundaryFilter));
363  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MET_HcalStripHaloFilter",hMET_HcalStripHaloFilter));
364 
365 
366  // Book NPV profiles --> would some of these profiles be interesting for other MET types too
367  //----------------------------------------------------------------------------
368  meMEx_profile = ibooker.bookProfile("MEx_profile", "met.px()", nbinsPV_, nPVMin_, nPVMax_, 200, -500, 500);
369  meMEy_profile = ibooker.bookProfile("MEy_profile", "met.py()", nbinsPV_, nPVMin_, nPVMax_, 200, -500, 500);
370  meMET_profile = ibooker.bookProfile("MET_profile", "met.pt()", nbinsPV_, nPVMin_, nPVMax_, 200, 0, 1000);
371  meSumET_profile = ibooker.bookProfile("SumET_profile", "met.sumEt()", nbinsPV_, nPVMin_, nPVMax_, 400, 0, 4000);
372  // Set NPV profiles x-axis title
373  //----------------------------------------------------------------------------
374  meMEx_profile ->setAxisTitle("nvtx", 1);
375  meMEy_profile ->setAxisTitle("nvtx", 1);
376  meMET_profile ->setAxisTitle("nvtx", 1);
377  meSumET_profile->setAxisTitle("nvtx", 1);
378 
379  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MEx_profile",meMEx_profile));
380  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MEy_profile",meMEy_profile));
381  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MET_profile",meMET_profile));
382  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"SumET_profile",meSumET_profile));
383 
384 
385  if(isCaloMet_){
386  hCaloHadEtInHB = ibooker.book1D("CaloHadEtInHB","CaloHadEtInHB",50,0,2000);
387  hCaloHadEtInHB->setAxisTitle("Had Et [GeV]",1);
388  hCaloHadEtInHO = ibooker.book1D("CaloHadEtInHO","CaloHadEtInHO",25,0,500);
389  hCaloHadEtInHO->setAxisTitle("Had Et [GeV]",1);
390  hCaloHadEtInHE = ibooker.book1D("CaloHadEtInHE","CaloHadEtInHE",50,0,2000);
391  hCaloHadEtInHE->setAxisTitle("Had Et [GeV]",1);
392  hCaloHadEtInHF = ibooker.book1D("CaloHadEtInHF","CaloHadEtInHF",50,0,1000);
393  hCaloHadEtInHF->setAxisTitle("Had Et [GeV]",1);
394  hCaloEmEtInHF = ibooker.book1D("CaloEmEtInHF" ,"CaloEmEtInHF" ,25,0,500);
395  hCaloEmEtInHF->setAxisTitle("EM Et [GeV]",1);
396  hCaloEmEtInEE = ibooker.book1D("CaloEmEtInEE" ,"CaloEmEtInEE" ,50,0,1000);
397  hCaloEmEtInEE->setAxisTitle("EM Et [GeV]",1);
398  hCaloEmEtInEB = ibooker.book1D("CaloEmEtInEB" ,"CaloEmEtInEB" ,50,0,2000);
399  hCaloEmEtInEB->setAxisTitle("EM Et [GeV]",1);
400 
401  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"CaloHadEtInHO",hCaloHadEtInHO));
402  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"CaloHadEtInHF",hCaloHadEtInHF));
403  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"CaloHadEtInHE",hCaloHadEtInHE));
404  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"CaloHadEtInHB",hCaloHadEtInHB));
405  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"CaloEmEtInHF",hCaloEmEtInHF));
406  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"CaloEmEtInEE",hCaloEmEtInEE));
407  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"CaloEmEtInEB",hCaloEmEtInEB));
408 
409  hCaloMETPhi020 = ibooker.book1D("CaloMETPhi020", "CaloMETPhi020", 60, -M_PI, M_PI);
410  hCaloMETPhi020 ->setAxisTitle("METPhi [rad] (MET>20 GeV)", 1);
411 
412  hCaloEtFractionHadronic = ibooker.book1D("CaloEtFractionHadronic","CaloEtFractionHadronic",50,0,1);
413  hCaloEtFractionHadronic->setAxisTitle("Hadronic Et Fraction",1);
414  hCaloEmEtFraction = ibooker.book1D("CaloEmEtFraction", "CaloEmEtFraction" ,50,0,1);
415  hCaloEmEtFraction->setAxisTitle("EM Et Fraction",1);
416 
417  hCaloEmEtFraction020 = ibooker.book1D("CaloEmEtFraction020", "CaloEmEtFraction020" ,50,0,1);
418  hCaloEmEtFraction020->setAxisTitle("EM Et Fraction (MET>20 GeV)",1);
419 
420 
421  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"CaloMETPhi020",hCaloMETPhi020));
422  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"CaloEtFractionHadronic",hCaloEtFractionHadronic));
423  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"CaloEmEtFraction", hCaloEmEtFraction));
424  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"CaloEmEtFraction020",hCaloEmEtFraction020));
425 
426  }
427 
428  if(isPFMet_){
429  if(fillPFCandPlots && 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
430 
431  meCHF_Barrel = ibooker.book1D("PfChargedHadronEtFractionBarrel", "chargedHadronEtFractionBarrel", 50, 0, 1);
432  meCHF_EndcapPlus = ibooker.book1D("PfChargedHadronEtFractionEndcapPlus", "chargedHadronEtFractionEndcapPlus", 50, 0, 1);
433  meCHF_EndcapMinus = ibooker.book1D("PfChargedHadronEtFractionEndcapMinus", "chargedHadronEtFractionEndcapMinus", 50, 0, 1);
434  meCHF_Barrel_BXm1Empty = ibooker.book1D("PfChargedHadronEtFractionBarrel_BXm1Empty", "chargedHadronEtFractionBarrel prev empty bunch", 50, 0, 1);
435  meCHF_EndcapPlus_BXm1Empty = ibooker.book1D("PfChargedHadronEtFractionEndcapPlus_BXm1Empty", "chargedHadronEtFractionEndcapPlus prev empty bunch", 50, 0, 1);
436  meCHF_EndcapMinus_BXm1Empty = ibooker.book1D("PfChargedHadronEtFractionEndcapMinus_BXm1Empty", "chargedHadronEtFractionEndcapMinus prev empty bunch", 50, 0, 1);
437  meCHF_Barrel_BXm1Filled = ibooker.book1D("PfChargedHadronEtFractionBarrel_BXm1Filled", "chargedHadronEtFractionBarrel prev filled 2 bunches", 50, 0, 1);
438  meCHF_EndcapPlus_BXm1Filled = ibooker.book1D("PfChargedHadronEtFractionEndcapPlus_BXm1Filled", "chargedHadronEtFractionEndcapPlus prev filled bunch", 50, 0, 1);
439  meCHF_EndcapMinus_BXm1Filled = ibooker.book1D("PfChargedHadronEtFractionEndcapMinus_BXm1Filled", "chargedHadronEtFractionEndcapMinus prev filled bunch", 50, 0, 1);
440 
441  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionBarrel", meCHF_Barrel));
442  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionEndcapPlus", meCHF_EndcapPlus));
443  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionEndcapMinus", meCHF_EndcapMinus));
444  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionBarrel_BXm1Empty", meCHF_Barrel_BXm1Empty));
445  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionEndcapPlus_BXm1Empty", meCHF_EndcapPlus_BXm1Empty));
446  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionEndcapMinus_BXm1Empty", meCHF_EndcapMinus_BXm1Empty));
447  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionBarrel_BXm2BXm1Empty", meCHF_Barrel_BXm2BXm1Empty));
448  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionEndcapPlus_BXm2BXm1Empty", meCHF_EndcapPlus_BXm2BXm1Empty));
449  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionEndcapMinus_BXm2BXm1Empty", meCHF_EndcapMinus_BXm2BXm1Empty));
450  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionBarrel_BXm1Filled", meCHF_Barrel_BXm1Filled));
451  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionEndcapPlus_BXm1Filled", meCHF_EndcapPlus_BXm1Filled));
452  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionEndcapMinus_BXm1Filled", meCHF_EndcapMinus_BXm1Filled));
453  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionBarrel_BXm2BXm1Filled", meCHF_Barrel_BXm2BXm1Filled));
454  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionEndcapPlus_BXm2BXm1Filled", meCHF_EndcapPlus_BXm2BXm1Filled));
455  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFractionEndcapMinus_BXm2BXm1Filled", meCHF_EndcapMinus_BXm2BXm1Filled));
456 
457  meNHF_Barrel = ibooker.book1D("PfNeutralHadronEtFractionBarrel", "neutralHadronEtFractionBarrel", 50, 0, 1);
458  meNHF_EndcapPlus = ibooker.book1D("PfNeutralHadronEtFractionEndcapPlus", "neutralHadronEtFractionEndcapPlus", 50, 0, 1);
459  meNHF_EndcapMinus = ibooker.book1D("PfNeutralHadronEtFractionEndcapMinus", "neutralHadronEtFractionEndcapMinus", 50, 0, 1);
460  meNHF_Barrel_BXm1Empty = ibooker.book1D("PfNeutralHadronEtFractionBarrel_BXm1Empty", "neutralHadronEtFractionBarrel prev empty bunch", 50, 0, 1);
461  meNHF_EndcapPlus_BXm1Empty = ibooker.book1D("PfNeutralHadronEtFractionEndcapPlus_BXm1Empty", "neutralHadronEtFractionEndcapPlus prev empty bunch", 50, 0, 1);
462  meNHF_EndcapMinus_BXm1Empty = ibooker.book1D("PfNeutralHadronEtFractionEndcapMinus_BXm1Empty", "neutralHadronEtFractionEndcapMinus prev empty bunch", 50, 0, 1);
463  //meNHF_Barrel_BXm2BXm1Empty = ibooker.book1D("PfNeutralHadronEtFractionBarrel_BXm2BXm1Empty", "neutralHadronEtFractionBarrel prev empty 2 bunches", 50, 0, 1);
464  //meNHF_EndcapPlus_BXm2BXm1Empty = ibooker.book1D("PfNeutralHadronEtFractionEndcapPlus_BXm2BXm1Empty", "neutralHadronEtFractionEndcapPlus prev empty 2 bunches", 50, 0, 1);
465  //meNHF_EndcapMinus_BXm2BXm1Empty = ibooker.book1D("PfNeutralHadronEtFractionEndcapMinus_BXm2BXm1Empty", "neutralHadronEtFractionEndcapMinus prev empty 2 bunches", 50, 0, 1);
466  meNHF_Barrel_BXm1Filled = ibooker.book1D("PfNeutralHadronEtFractionBarrel_BXm1Filled", "neutralHadronEtFractionBarrel prev filled 2 bunches", 50, 0, 1);
467  meNHF_EndcapPlus_BXm1Filled = ibooker.book1D("PfNeutralHadronEtFractionEndcapPlus_BXm1Filled", "neutralHadronEtFractionEndcapPlus prev filled bunch", 50, 0, 1);
468  meNHF_EndcapMinus_BXm1Filled = ibooker.book1D("PfNeutralHadronEtFractionEndcapMinus_BXm1Filled", "neutralHadronEtFractionEndcapMinus prev filled bunch", 50, 0, 1);
469  //meNHF_Barrel_BXm2BXm1Filled = ibooker.book1D("PfNeutralHadronEtFractionBarrel_BXm2BXm1Filled", "neutralHadronEtFractionBarrel prev filled 2 bunches", 50, 0, 1);
470  //meNHF_EndcapPlus_BXm2BXm1Filled = ibooker.book1D("PfNeutralHadronEtFractionEndcapPlus_BXm2BXm1Filled", "neutralHadronEtFractionEndcapPlus prev filled 2 bunches", 50, 0, 1);
471  //meNHF_EndcapMinus_BXm2BXm1Filled = ibooker.book1D("PfNeutralHadronEtFractionEndcapMinus_BXm2BXm1Filled", "neutralHadronEtFractionEndcapMinus prev filled 2 bunches", 50, 0, 1);
472 
473  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionBarrel", meNHF_Barrel));
474  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionEndcapPlus", meNHF_EndcapPlus));
475  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionEndcapMinus", meNHF_EndcapMinus));
476  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionBarrel_BXm1Empty", meNHF_Barrel_BXm1Empty));
477  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionEndcapPlus_BXm1Empty", meNHF_EndcapPlus_BXm1Empty));
478  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionEndcapMinus_BXm1Empty", meNHF_EndcapMinus_BXm1Empty));
479  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionBarrel_BXm2BXm1Empty", meNHF_Barrel_BXm2BXm1Empty));
480  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionEndcapPlus_BXm2BXm1Empty", meNHF_EndcapPlus_BXm2BXm1Empty));
481  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionEndcapMinus_BXm2BXm1Empty", meNHF_EndcapMinus_BXm2BXm1Empty));
482  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionBarrel_BXm1Filled", meNHF_Barrel_BXm1Filled));
483  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionEndcapPlus_BXm1Filled", meNHF_EndcapPlus_BXm1Filled));
484  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionEndcapMinus_BXm1Filled", meNHF_EndcapMinus_BXm1Filled));
485  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionBarrel_BXm2BXm1Filled", meNHF_Barrel_BXm2BXm1Filled));
486  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionEndcapPlus_BXm2BXm1Filled", meNHF_EndcapPlus_BXm2BXm1Filled));
487  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFractionEndcapMinus_BXm2BXm1Filled", meNHF_EndcapMinus_BXm2BXm1Filled));
488 
489  mePhF_Barrel = ibooker.book1D("PfPhotonEtFractionBarrel", "photonEtFractionBarrel", 50, 0, 1);
490  mePhF_EndcapPlus = ibooker.book1D("PfPhotonEtFractionEndcapPlus", "photonEtFractionEndcapPlus", 50, 0, 1);
491  mePhF_EndcapMinus = ibooker.book1D("PfPhotonEtFractionEndcapMinus", "photonEtFractionEndcapMinus", 50, 0, 1);
492  mePhF_Barrel_BXm1Empty = ibooker.book1D("PfPhotonEtFractionBarrel_BXm1Empty", "photonEtFractionBarrel prev empty bunch", 50, 0, 1);
493  mePhF_EndcapPlus_BXm1Empty = ibooker.book1D("PfPhotonEtFractionEndcapPlus_BXm1Empty", "photonEtFractionEndcapPlus prev empty bunch", 50, 0, 1);
494  mePhF_EndcapMinus_BXm1Empty = ibooker.book1D("PfPhotonEtFractionEndcapMinus_BXm1Empty", "photonEtFractionEndcapMinus prev empty bunch", 50, 0, 1);
495  //mePhF_Barrel_BXm2BXm1Empty = ibooker.book1D("PfPhotonEtFractionBarrel_BXm2BXm1Empty", "photonEtFractionBarrel prev empty 2 bunches", 50, 0, 1);
496  //mePhF_EndcapPlus_BXm2BXm1Empty = ibooker.book1D("PfPhotonEtFractionEndcapPlus_BXm2BXm1Empty", "photonEtFractionEndcapPlus prev empty 2 bunches", 50, 0, 1);
497  //mePhF_EndcapMinus_BXm2BXm1Empty = ibooker.book1D("PfPhotonEtFractionEndcapMinus_BXm2BXm1Empty", "photonEtFractionEndcapMinus prev empty 2 bunches", 50, 0, 1);
498  mePhF_Barrel_BXm1Filled = ibooker.book1D("PfPhotonEtFractionBarrel_BXm1Filled", "photonEtFractionBarrel prev filled 2 bunches", 50, 0, 1);
499  mePhF_EndcapPlus_BXm1Filled = ibooker.book1D("PfPhotonEtFractionEndcapPlus_BXm1Filled", "photonEtFractionEndcapPlus prev filled bunch", 50, 0, 1);
500  mePhF_EndcapMinus_BXm1Filled = ibooker.book1D("PfPhotonEtFractionEndcapMinus_BXm1Filled", "photonEtFractionEndcapMinus prev filled bunch", 50, 0, 1);
501  //mePhF_Barrel_BXm2BXm1Filled = ibooker.book1D("PfPhotonEtFractionBarrel_BXm2BXm1Filled", "photonEtFractionBarrel prev filled 2 bunches", 50, 0, 1);
502  //mePhF_EndcapPlus_BXm2BXm1Filled = ibooker.book1D("PfPhotonEtFractionEndcapPlus_BXm2BXm1Filled", "photonEtFractionEndcapPlus prev filled 2 bunches", 50, 0, 1);
503  //mePhF_EndcapMinus_BXm2BXm1Filled = ibooker.book1D("PfPhotonEtFractionEndcapMinus_BXm2BXm1Filled", "photonEtFractionEndcapMinus prev filled 2 bunches", 50, 0, 1);
504 
505  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionBarrel", mePhF_Barrel));
506  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionEndcapPlus", mePhF_EndcapPlus));
507  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionEndcapMinus", mePhF_EndcapMinus));
508  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionBarrel_BXm1Empty", mePhF_Barrel_BXm1Empty));
509  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionEndcapPlus_BXm1Empty", mePhF_EndcapPlus_BXm1Empty));
510  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionEndcapMinus_BXm1Empty", mePhF_EndcapMinus_BXm1Empty));
511  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionBarrel_BXm2BXm1Empty", mePhF_Barrel_BXm2BXm1Empty));
512  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionEndcapPlus_BXm2BXm1Empty", mePhF_EndcapPlus_BXm2BXm1Empty));
513  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionEndcapMinus_BXm2BXm1Empty", mePhF_EndcapMinus_BXm2BXm1Empty));
514  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionBarrel_BXm1Filled", mePhF_Barrel_BXm1Filled));
515  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionEndcapPlus_BXm1Filled", mePhF_EndcapPlus_BXm1Filled));
516  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionEndcapMinus_BXm1Filled", mePhF_EndcapMinus_BXm1Filled));
517  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionBarrel_BXm2BXm1Filled", mePhF_Barrel_BXm2BXm1Filled));
518  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionEndcapPlus_BXm2BXm1Filled", mePhF_EndcapPlus_BXm2BXm1Filled));
519  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFractionEndcapMinus_BXm2BXm1Filled", mePhF_EndcapMinus_BXm2BXm1Filled));
520 
521  meHFHadF_Plus = ibooker.book1D("PfHFHadronEtFractionPlus", "HFHadronEtFractionPlus", 50, 0, 1);
522  meHFHadF_Minus = ibooker.book1D("PfHFHadronEtFractionMinus", "HFHadronEtFractionMinus", 50, 0, 1);
523  meHFHadF_Plus_BXm1Empty = ibooker.book1D("PfHFHadronEtFractionPlus_BXm1Empty", "HFHadronEtFractionPlus prev empty bunch", 50, 0, 1);
524  meHFHadF_Minus_BXm1Empty = ibooker.book1D("PfHFHadronEtFractionMinus_BXm1Empty", "HFHadronEtFractionMinus prev empty bunch", 50, 0, 1);
525  //meHFHadF_Plus_BXm2BXm1Empty = ibooker.book1D("PfHFHadronEtFractionPlus_BXm2BXm1Empty", "HFHadronEtFractionPlus prev empty 2 bunches", 50, 0, 1);
526  //meHFHadF_Minus_BXm2BXm1Empty = ibooker.book1D("PfHFHadronEtFractionMinus_BXm2BXm1Empty", "HFHadronEtFractionMinus prev empty 2 bunches", 50, 0, 1);
527  meHFHadF_Plus_BXm1Filled = ibooker.book1D("PfHFHadronEtFractionPlus_BXm1Filled", "HFHadronEtFractionPlus prev filled bunch", 50, 0, 1);
528  meHFHadF_Minus_BXm1Filled = ibooker.book1D("PfHFHadronEtFractionMinus_BXm1Filled", "HFHadronEtFractionMinus prev filled bunch", 50, 0, 1);
529  //meHFHadF_Plus_BXm2BXm1Filled = ibooker.book1D("PfHFHadronEtFractionPlus_BXm2BXm1Filled", "HFHadronEtFractionPlus prev filled 2 bunches", 50, 0, 1);
530  //meHFHadF_Minus_BXm2BXm1Filled = ibooker.book1D("PfHFHadronEtFractionMinus_BXm2BXm1Filled", "HFHadronEtFractionMinus prev filled 2 bunches", 50, 0, 1);
531 
532  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEtFractionPlus", meHFHadF_Plus));
533  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEtFractionMinus", meHFHadF_Minus));
534  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEtFractionPlus_BXm1Empty", meHFHadF_Plus_BXm1Empty));
535  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEtFractionMinus_BXm1Empty", meHFHadF_Minus_BXm1Empty));
536  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEtFractionPlus_BXm2BXm1Empty", meHFHadF_Plus_BXm2BXm1Empty));
537  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEtFractionMinus_BXm2BXm1Empty", meHFHadF_Minus_BXm2BXm1Empty));
538  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEtFractionPlus_BXm1Filled", meHFHadF_Plus_BXm1Filled));
539  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEtFractionMinus_BXm1Filled", meHFHadF_Minus_BXm1Filled));
540  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEtFractionPlus_BXm2BXm1Filled", meHFHadF_Plus_BXm2BXm1Filled));
541  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEtFractionMinus_BXm2BXm1Filled", meHFHadF_Minus_BXm2BXm1Filled));
542 
543  meHFEMF_Plus = ibooker.book1D("PfHFEMEtFractionPlus", "HFEMEtFractionPlus", 50, 0, 1);
544  meHFEMF_Minus = ibooker.book1D("PfHFEMEtFractionMinus", "HFEMEtFractionMinus", 50, 0, 1);
545  meHFEMF_Plus_BXm1Empty = ibooker.book1D("PfHFEMEtFractionPlus_BXm1Empty", "HFEMEtFractionPlus prev empty bunch", 50, 0, 1);
546  meHFEMF_Minus_BXm1Empty = ibooker.book1D("PfHFEMEtFractionMinus_BXm1Empty", "HFEMEtFractionMinus prev empty bunch", 50, 0, 1);
547  //meHFEMF_Plus_BXm2BXm1Empty = ibooker.book1D("PfHFEMEtFractionPlus_BXm2BXm1Empty", "HFEMEtFractionPlus prev empty 2 bunches", 50, 0, 1);
548  //meHFEMF_Minus_BXm2BXm1Empty = ibooker.book1D("PfHFEMEtFractionMinus_BXm2BXm1Empty", "HFEMEtFractionMinus prev empty 2 bunches", 50, 0, 1);
549  meHFEMF_Plus_BXm1Filled = ibooker.book1D("PfHFEMEtFractionPlus_BXm1Filled", "HFEMEtFractionPlus prev filled bunch", 50, 0, 1);
550  meHFEMF_Minus_BXm1Filled = ibooker.book1D("PfHFEMEtFractionMinus_BXm1Filled", "HFEMEtFractionMinus prev filled bunch", 50, 0, 1);
551  //meHFEMF_Plus_BXm2BXm1Filled = ibooker.book1D("PfHFEMEtFractionPlus_BXm2BXm1Filled", "HFEMEtFractionPlus prev filled 2 bunches", 50, 0, 1);
552  //meHFEMF_Minus_BXm2BXm1Filled = ibooker.book1D("PfHFEMEtFractionMinus_BXm2BXm1Filled", "HFEMEtFractionMinus prev filled 2 bunches", 50, 0, 1);
553 
554  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEtFractionPlus", meHFEMF_Plus));
555  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEtFractionMinus", meHFEMF_Minus));
556  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEtFractionPlus_BXm1Empty", meHFEMF_Plus_BXm1Empty));
557  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEtFractionMinus_BXm1Empty", meHFEMF_Minus_BXm1Empty));
558  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEtFractionPlus_BXm2BXm1Empty", meHFEMF_Plus_BXm2BXm1Empty));
559  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEtFractionMinus_BXm2BXm1Empty", meHFEMF_Minus_BXm2BXm1Empty));
560  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEtFractionPlus_BXm1Filled", meHFEMF_Plus_BXm1Filled));
561  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEtFractionMinus_BXm1Filled", meHFEMF_Minus_BXm1Filled));
562  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEtFractionPlus_BXm2BXm1Filled", meHFEMF_Plus_BXm2BXm1Filled));
563  //map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEtFractionMinus_BXm2BXm1Filled", meHFEMF_Minus_BXm2BXm1Filled));
564  /*
565  meMETPhiChargedHadronsBarrel_BXm2BXm1Filled = ibooker.book1D("METPhiChargedHadronsBarrel_BXm2BXm1Filled", "METPhi_PFChargedHadronsBarrel prev two bunches filled", 50, -M_PI,M_PI);
566  meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Filled = ibooker.book1D("METPhiChargedHadronsEndcapPlus_BXm2BXm1Filled", "METPhi_PFChargedHadronsEndcapPlus prev two bunches filled", 50, -M_PI,M_PI);
567  meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Filled = ibooker.book1D("METPhiChargedHadronsEndcapMinus_BXm2BXm1Filled","METPhi_PFChargedHadronsEndcapMinus prev two bunches filled", 50, -M_PI,M_PI);
568  meMETPhiNeutralHadronsBarrel_BXm2BXm1Filled = ibooker.book1D("METPhiNeutralHadronsBarrel_BXm2BXm1Filled", "METPhi_PFNeutralHadronsBarrel prev two bunches filled", 50, -M_PI,M_PI);
569  meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled = ibooker.book1D("METPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled", "METPhi_PFNeutralHadronsEndcapPlus prev two bunches filled", 50, -M_PI,M_PI);
570  meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled = ibooker.book1D("METPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled","METPhi_PFNeutralHadronsEndcapMinus prev two bunches filled", 50, -M_PI,M_PI);
571  meMETPhiPhotonsBarrel_BXm2BXm1Filled = ibooker.book1D("METPhiPhotonsBarrel_BXm2BXm1Filled", "METPhi_PFPhotonsBarrel prev two bunches filled", 50, -M_PI,M_PI);
572  meMETPhiPhotonsEndcapPlus_BXm2BXm1Filled = ibooker.book1D("METPhiPhotonsEndcapPlus_BXm2BXm1Filled", "METPhi_PFPhotonsEndcapPlus prev two bunches filled", 50, -M_PI,M_PI);
573  meMETPhiPhotonsEndcapMinus_BXm2BXm1Filled = ibooker.book1D("METPhiPhotonsEndcapMinus_BXm2BXm1Filled", "METPhi_PFPhotonsEndcapMinus prev two bunches filled", 50, -M_PI,M_PI);
574  meMETPhiHFHadronsPlus_BXm2BXm1Filled = ibooker.book1D("METPhiHFHadronsPlus_BXm2BXm1Filled", "METPhi_PFHFHadronsPlus prev two bunches filled", 50, -M_PI,M_PI);
575  meMETPhiHFHadronsMinus_BXm2BXm1Filled = ibooker.book1D("METPhiHFHadronsMinus_BXm2BXm1Filled", "METPhi_PFHFHadronsMinus prev two bunches filled", 50, -M_PI,M_PI);
576  meMETPhiHFEGammasPlus_BXm2BXm1Filled = ibooker.book1D("METPhiHFEGammasPlus_BXm2BXm1Filled", "METPhi_PFHFEGammasPlus prev two bunches filled", 50, -M_PI,M_PI);
577  meMETPhiHFEGammasMinus_BXm2BXm1Filled = ibooker.book1D("METPhiHFEGammasMinus_BXm2BXm1Filled", "METPhi_PFHFEGammasMinus prev two bunches filled", 50, -M_PI,M_PI);
578 
579  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsBarrel_BXm2BXm1Filled" ,meMETPhiChargedHadronsBarrel_BXm2BXm1Filled));
580  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsEndcapPlus_BXm2BXm1Filled" ,meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Filled));
581  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsEndcapMinus_BXm2BXm1Filled" ,meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Filled));
582  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsBarrel_BXm2BXm1Filled" ,meMETPhiNeutralHadronsBarrel_BXm2BXm1Filled));
583  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled" ,meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled));
584  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled" ,meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled));
585  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsBarrel_BXm2BXm1Filled" ,meMETPhiPhotonsBarrel_BXm2BXm1Filled));
586  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsEndcapPlus_BXm2BXm1Filled" ,meMETPhiPhotonsEndcapPlus_BXm2BXm1Filled));
587  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsEndcapMinus_BXm2BXm1Filled" ,meMETPhiPhotonsEndcapMinus_BXm2BXm1Filled));
588  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFHadronsPlus_BXm2BXm1Filled" ,meMETPhiHFHadronsPlus_BXm2BXm1Filled));
589  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFHadronsMinus_BXm2BXm1Filled" ,meMETPhiHFHadronsMinus_BXm2BXm1Filled));
590  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFEGammasPlus_BXm2BXm1Filled" ,meMETPhiHFEGammasPlus_BXm2BXm1Filled));
591  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFEGammasMinus_BXm2BXm1Filled" ,meMETPhiHFEGammasMinus_BXm2BXm1Filled));
592 
593  meMETPhiChargedHadronsBarrel_BXm2BXm1Empty = ibooker.book1D("METPhiChargedHadronsBarrel_BXm2BXm1Empty", "METPhi_PFChargedHadronsBarrel prev two bunches empty", 50, -M_PI,M_PI);
594  meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Empty = ibooker.book1D("METPhiChargedHadronsEndcapPlus_BXm2BXm1Empty", "METPhi_PFChargedHadronsEndcapPlus prev two bunches empty", 50, -M_PI,M_PI);
595  meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Empty = ibooker.book1D("METPhiChargedHadronsEndcapMinus_BXm2BXm1Empty","METPhi_PFChargedHadronsEndcapMinus prev two bunches empty", 50, -M_PI,M_PI);
596  meMETPhiNeutralHadronsBarrel_BXm2BXm1Empty = ibooker.book1D("METPhiNeutralHadronsBarrel_BXm2BXm1Empty", "METPhi_PFNeutralHadronsBarrel prev two bunches empty", 50, -M_PI,M_PI);
597  meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty = ibooker.book1D("METPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty", "METPhi_PFNeutralHadronsEndcapPlus prev two bunches empty", 50, -M_PI,M_PI);
598  meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty = ibooker.book1D("METPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty","METPhi_PFNeutralHadronsEndcapMinus prev two bunches empty", 50, -M_PI,M_PI);
599  meMETPhiPhotonsBarrel_BXm2BXm1Empty = ibooker.book1D("METPhiPhotonsBarrel_BXm2BXm1Empty", "METPhi_PFPhotonsBarrel prev two bunches empty", 50, -M_PI,M_PI);
600  meMETPhiPhotonsEndcapPlus_BXm2BXm1Empty = ibooker.book1D("METPhiPhotonsEndcapPlus_BXm2BXm1Empty", "METPhi_PFPhotonsEndcapPlus prev two bunches empty", 50, -M_PI,M_PI);
601  meMETPhiPhotonsEndcapMinus_BXm2BXm1Empty = ibooker.book1D("METPhiPhotonsEndcapMinus_BXm2BXm1Empty", "METPhi_PFPhotonsEndcapMinus prev two bunches empty", 50, -M_PI,M_PI);
602  meMETPhiHFHadronsPlus_BXm2BXm1Empty = ibooker.book1D("METPhiHFHadronsPlus_BXm2BXm1Empty", "METPhi_PFHFHadronsPlus prev two bunches empty", 50, -M_PI,M_PI);
603  meMETPhiHFHadronsMinus_BXm2BXm1Empty = ibooker.book1D("METPhiHFHadronsMinus_BXm2BXm1Empty", "METPhi_PFHFHadronsMinus prev two bunches empty", 50, -M_PI,M_PI);
604  meMETPhiHFEGammasPlus_BXm2BXm1Empty = ibooker.book1D("METPhiHFEGammasPlus_BXm2BXm1Empty", "METPhi_PFHFEGammasPlus prev two bunches empty", 50, -M_PI,M_PI);
605  meMETPhiHFEGammasMinus_BXm2BXm1Empty = ibooker.book1D("METPhiHFEGammasMinus_BXm2BXm1Empty", "METPhi_PFHFEGammasMinus prev two bunches empty", 50, -M_PI,M_PI);
606 
607  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsBarrel_BXm2BXm1Empty" ,meMETPhiChargedHadronsBarrel_BXm2BXm1Empty));
608  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsEndcapPlus_BXm2BXm1Empty" ,meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Empty));
609  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsEndcapMinus_BXm2BXm1Empty" ,meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Empty));
610  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsBarrel_BXm2BXm1Empty" ,meMETPhiNeutralHadronsBarrel_BXm2BXm1Empty));
611  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty" ,meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty));
612  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty" ,meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty));
613  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsBarrel_BXm2BXm1Empty" ,meMETPhiPhotonsBarrel_BXm2BXm1Empty));
614  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsEndcapPlus_BXm2BXm1Empty" ,meMETPhiPhotonsEndcapPlus_BXm2BXm1Empty));
615  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsEndcapMinus_BXm2BXm1Empty" ,meMETPhiPhotonsEndcapMinus_BXm2BXm1Empty));
616  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFHadronsPlus_BXm2BXm1Empty" ,meMETPhiHFHadronsPlus_BXm2BXm1Empty));
617  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFHadronsMinus_BXm2BXm1Empty" ,meMETPhiHFHadronsMinus_BXm2BXm1Empty));
618  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFEGammasPlus_BXm2BXm1Empty" ,meMETPhiHFEGammasPlus_BXm2BXm1Empty));
619  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFEGammasMinus_BXm2BXm1Empty" ,meMETPhiHFEGammasMinus_BXm2BXm1Empty));
620  */
621  //histos where one previous bunch was empty/filled
622  mePhotonEtFraction_BXm1Empty = ibooker.book1D("PfPhotonEtFraction_BXm1Empty", "photonEtFraction() prev empty bunch", 50, 0, 1);
623  mePhotonEtFraction_BXm1Filled = ibooker.book1D("PfPhotonEtFraction_BXm1Filled", "photonEtFraction() prev filled bunch", 50, 0, 1);
624  meNeutralHadronEtFraction_BXm1Empty = ibooker.book1D("PfNeutralHadronEtFraction_BXm1Empty", "neutralHadronEtFraction() prev empty bunch", 50, 0, 1);
625  meNeutralHadronEtFraction_BXm1Filled = ibooker.book1D("PfNeutralHadronEtFraction_BXm1Filled", "neutralHadronEtFraction() prev filled bunch", 50, 0, 1);
626  meChargedHadronEtFraction_BXm1Empty = ibooker.book1D("PfChargedHadronEtFraction_BXm1Empty", "chargedHadronEtFraction() prev empty bunch", 50, 0, 1);
627  meChargedHadronEtFraction_BXm1Filled = ibooker.book1D("PfChargedHadronEtFraction_BXm1Filled", "chargedHadronEtFraction() prev filled bunch", 50, 0, 1);
628  meMET_BXm1Empty = ibooker.book1D("MET_BXm1Empty", "MET prev empty bunch", 200, 0, 1000);
629  meMET_BXm1Filled = ibooker.book1D("MET_BXm1Filled", "MET prev filled bunch", 200, 0, 1000);
630  meSumET_BXm1Empty = ibooker.book1D("SumET_BXm1Empty", "SumET prev empty bunch", 400, 0, 4000);
631  meSumET_BXm1Filled = ibooker.book1D("SumET_BXm1Filled", "SumET prev filled bunch", 400, 0, 4000);
632 
633  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFraction_BXm1Empty" ,mePhotonEtFraction_BXm1Empty));
634  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFraction_BXm1Filled" ,mePhotonEtFraction_BXm1Filled));
635  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFraction_BXm1Empty" ,meNeutralHadronEtFraction_BXm1Empty));
636  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralEtFraction_BXm1Filled" ,meNeutralHadronEtFraction_BXm1Filled));
637  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFraction_BXm1Empty" ,meChargedHadronEtFraction_BXm1Empty));
638  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedEtFraction_BXm1Filled" ,meChargedHadronEtFraction_BXm1Filled));
639  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MET_BXm1Empty" ,meMET_BXm1Empty));
640  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MET_BXm1Filled" ,meMET_BXm1Filled));
641  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"SumET_BXm1Empty" ,meSumET_BXm1Empty));
642  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"SumET_BXm1Filled",meSumET_BXm1Filled));
643 
644  meMETPhiChargedHadronsBarrel_BXm1Filled = ibooker.book1D("METPhiChargedHadronsBarrel_BXm1Filled", "METPhi_PFChargedHadronsBarrel prev bunch filled", 50, -M_PI,M_PI);
645  meMETPhiChargedHadronsEndcapPlus_BXm1Filled = ibooker.book1D("METPhiChargedHadronsEndcapPlus_BXm1Filled", "METPhi_PFChargedHadronsEndcapPlus prev bunch filled", 50, -M_PI,M_PI);
646  meMETPhiChargedHadronsEndcapMinus_BXm1Filled = ibooker.book1D("METPhiChargedHadronsEndcapMinus_BXm1Filled","METPhi_PFChargedHadronsEndcapMinus prev bunch filled", 50, -M_PI,M_PI);
647  meMETPhiNeutralHadronsBarrel_BXm1Filled = ibooker.book1D("METPhiNeutralHadronsBarrel_BXm1Filled", "METPhi_PFNeutralHadronsBarrel prev bunch filled", 50, -M_PI,M_PI);
648  meMETPhiNeutralHadronsEndcapPlus_BXm1Filled = ibooker.book1D("METPhiNeutralHadronsEndcapPlus_BXm1Filled", "METPhi_PFNeutralHadronsEndcapPlus prev bunch filled", 50, -M_PI,M_PI);
649  meMETPhiNeutralHadronsEndcapMinus_BXm1Filled = ibooker.book1D("METPhiNeutralHadronsEndcapMinus_BXm1Filled","METPhi_PFNeutralHadronsEndcapMinus prev bunch filled", 50, -M_PI,M_PI);
650  meMETPhiPhotonsBarrel_BXm1Filled = ibooker.book1D("METPhiPhotonsBarrel_BXm1Filled", "METPhi_PFPhotonsBarrel prev bunch filled", 50, -M_PI,M_PI);
651  meMETPhiPhotonsEndcapPlus_BXm1Filled = ibooker.book1D("METPhiPhotonsEndcapPlus_BXm1Filled", "METPhi_PFPhotonsEndcapPlus prev bunch filled", 50, -M_PI,M_PI);
652  meMETPhiPhotonsEndcapMinus_BXm1Filled = ibooker.book1D("METPhiPhotonsEndcapMinus_BXm1Filled", "METPhi_PFPhotonsEndcapMinus prev bunch filled", 50, -M_PI,M_PI);
653  meMETPhiHFHadronsPlus_BXm1Filled = ibooker.book1D("METPhiHFHadronsPlus_BXm1Filled", "METPhi_PFHFHadronsPlus prev bunch filled", 50, -M_PI,M_PI);
654  meMETPhiHFHadronsMinus_BXm1Filled = ibooker.book1D("METPhiHFHadronsMinus_BXm1Filled", "METPhi_PFHFHadronsMinus prev bunch filled", 50, -M_PI,M_PI);
655  meMETPhiHFEGammasPlus_BXm1Filled = ibooker.book1D("METPhiHFEGammasPlus_BXm1Filled", "METPhi_PFHFEGammasPlus prev bunch filled", 50, -M_PI,M_PI);
656  meMETPhiHFEGammasMinus_BXm1Filled = ibooker.book1D("METPhiHFEGammasMinus_BXm1Filled", "METPhi_PFHFEGammasMinus prev bunch filled", 50, -M_PI,M_PI);
657 
658  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsBarrel_BXm1Filled" ,meMETPhiChargedHadronsBarrel_BXm1Filled));
659  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsEndcapPlus_BXm1Filled" ,meMETPhiChargedHadronsEndcapPlus_BXm1Filled));
660  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsEndcapMinus_BXm1Filled" ,meMETPhiChargedHadronsEndcapMinus_BXm1Filled));
661  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsBarrel_BXm1Filled" ,meMETPhiNeutralHadronsBarrel_BXm1Filled));
662  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsEndcapPlus_BXm1Filled" ,meMETPhiNeutralHadronsEndcapPlus_BXm1Filled));
663  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsEndcapMinus_BXm1Filled" ,meMETPhiNeutralHadronsEndcapMinus_BXm1Filled));
664  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsBarrel_BXm1Filled" ,meMETPhiPhotonsBarrel_BXm1Filled));
665  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsEndcapPlus_BXm1Filled" ,meMETPhiPhotonsEndcapPlus_BXm1Filled));
666  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsEndcapMinus_BXm1Filled" ,meMETPhiPhotonsEndcapMinus_BXm1Filled));
667  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFHadronsPlus_BXm1Filled" ,meMETPhiHFHadronsPlus_BXm1Filled));
668  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFHadronsMinus_BXm1Filled" ,meMETPhiHFHadronsMinus_BXm1Filled));
669  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFEGammasPlus_BXm1Filled" ,meMETPhiHFEGammasPlus_BXm1Filled));
670  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFEGammasMinus_BXm1Filled" ,meMETPhiHFEGammasMinus_BXm1Filled));
671 
672  meMETPhiChargedHadronsBarrel_BXm1Empty = ibooker.book1D("METPhiChargedHadronsBarrel_BXm1Empty", "METPhi_PFChargedHadronsBarrel prev bunch empty", 50, -M_PI,M_PI);
673  meMETPhiChargedHadronsEndcapPlus_BXm1Empty = ibooker.book1D("METPhiChargedHadronsEndcapPlus_BXm1Empty", "METPhi_PFChargedHadronsEndcapPlus prev bunch empty", 50, -M_PI,M_PI);
674  meMETPhiChargedHadronsEndcapMinus_BXm1Empty = ibooker.book1D("METPhiChargedHadronsEndcapMinus_BXm1Empty","METPhi_PFChargedHadronsEndcapMinus prev bunch empty", 50, -M_PI,M_PI);
675  meMETPhiNeutralHadronsBarrel_BXm1Empty = ibooker.book1D("METPhiNeutralHadronsBarrel_BXm1Empty", "METPhi_PFNeutralHadronsBarrel prev bunch empty", 50, -M_PI,M_PI);
676  meMETPhiNeutralHadronsEndcapPlus_BXm1Empty = ibooker.book1D("METPhiNeutralHadronsEndcapPlus_BXm1Empty", "METPhi_PFNeutralHadronsEndcapPlus prev bunch empty", 50, -M_PI,M_PI);
677  meMETPhiNeutralHadronsEndcapMinus_BXm1Empty = ibooker.book1D("METPhiNeutralHadronsEndcapMinus_BXm1Empty","METPhi_PFNeutralHadronsEndcapMinus prev bunch empty", 50, -M_PI,M_PI);
678  meMETPhiPhotonsBarrel_BXm1Empty = ibooker.book1D("METPhiPhotonsBarrel_BXm1Empty", "METPhi_PFPhotonsBarrel prev bunch empty", 50, -M_PI,M_PI);
679  meMETPhiPhotonsEndcapPlus_BXm1Empty = ibooker.book1D("METPhiPhotonsEndcapPlus_BXm1Empty", "METPhi_PFPhotonsEndcapPlus prev bunch empty", 50, -M_PI,M_PI);
680  meMETPhiPhotonsEndcapMinus_BXm1Empty = ibooker.book1D("METPhiPhotonsEndcapMinus_BXm1Empty", "METPhi_PFPhotonsEndcapMinus prev bunch empty", 50, -M_PI,M_PI);
681  meMETPhiHFHadronsPlus_BXm1Empty = ibooker.book1D("METPhiHFHadronsPlus_BXm1Empty", "METPhi_PFHFHadronsPlus prev bunch empty", 50, -M_PI,M_PI);
682  meMETPhiHFHadronsMinus_BXm1Empty = ibooker.book1D("METPhiHFHadronsMinus_BXm1Empty", "METPhi_PFHFHadronsMinus prev bunch empty", 50, -M_PI,M_PI);
683  meMETPhiHFEGammasPlus_BXm1Empty = ibooker.book1D("METPhiHFEGammasPlus_BXm1Empty", "METPhi_PFHFEGammasPlus prev bunch empty", 50, -M_PI,M_PI);
684  meMETPhiHFEGammasMinus_BXm1Empty = ibooker.book1D("METPhiHFEGammasMinus_BXm1Empty", "METPhi_PFHFEGammasMinus prev bunch empty", 50, -M_PI,M_PI);
685 
686  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsBarrel_BXm1Empty" ,meMETPhiChargedHadronsBarrel_BXm1Empty));
687  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsEndcapPlus_BXm1Empty" ,meMETPhiChargedHadronsEndcapPlus_BXm1Empty));
688  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsEndcapMinus_BXm1Empty" ,meMETPhiChargedHadronsEndcapMinus_BXm1Empty));
689  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsBarrel_BXm1Empty" ,meMETPhiNeutralHadronsBarrel_BXm1Empty));
690  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsEndcapPlus_BXm1Empty" ,meMETPhiNeutralHadronsEndcapPlus_BXm1Empty));
691  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsEndcapMinus_BXm1Empty" ,meMETPhiNeutralHadronsEndcapMinus_BXm1Empty));
692  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsBarrel_BXm1Empty" ,meMETPhiPhotonsBarrel_BXm1Empty));
693  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsEndcapPlus_BXm1Empty" ,meMETPhiPhotonsEndcapPlus_BXm1Empty));
694  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsEndcapMinus_BXm1Empty" ,meMETPhiPhotonsEndcapMinus_BXm1Empty));
695  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFHadronsPlus_BXm1Empty" ,meMETPhiHFHadronsPlus_BXm1Empty));
696  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFHadronsMinus_BXm1Empty" ,meMETPhiHFHadronsMinus_BXm1Empty));
697  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFEGammasPlus_BXm1Empty" ,meMETPhiHFEGammasPlus_BXm1Empty));
698  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFEGammasMinus_BXm1Empty" ,meMETPhiHFEGammasMinus_BXm1Empty));
699 
700  meMETPhiChargedHadronsBarrel = ibooker.book1D("METPhiChargedHadronsBarrel", "METPhi_PFChargedHadronsBarrel", 50, -M_PI,M_PI);
701  meMETPhiChargedHadronsEndcapPlus = ibooker.book1D("METPhiChargedHadronsEndcapPlus", "METPhi_PFChargedHadronsEndcapPlus", 50, -M_PI,M_PI);
702  meMETPhiChargedHadronsEndcapMinus = ibooker.book1D("METPhiChargedHadronsEndcapMinus","METPhi_PFChargedHadronsEndcapMinus", 50, -M_PI,M_PI);
703  meMETPhiNeutralHadronsBarrel = ibooker.book1D("METPhiNeutralHadronsBarrel", "METPhi_PFNeutralHadronsBarrel", 50, -M_PI,M_PI);
704  meMETPhiNeutralHadronsEndcapPlus = ibooker.book1D("METPhiNeutralHadronsEndcapPlus", "METPhi_PFNeutralHadronsEndcapPlus", 50, -M_PI,M_PI);
705  meMETPhiNeutralHadronsEndcapMinus = ibooker.book1D("METPhiNeutralHadronsEndcapMinus","METPhi_PFNeutralHadronsEndcapMinus", 50, -M_PI,M_PI);
706  meMETPhiPhotonsBarrel = ibooker.book1D("METPhiPhotonsBarrel", "METPhi_PFPhotonsBarrel", 50, -M_PI,M_PI);
707  meMETPhiPhotonsEndcapPlus = ibooker.book1D("METPhiPhotonsEndcapPlus", "METPhi_PFPhotonsEndcapPlus", 50, -M_PI,M_PI);
708  meMETPhiPhotonsEndcapMinus = ibooker.book1D("METPhiPhotonsEndcapMinus", "METPhi_PFPhotonsEndcapMinus", 50, -M_PI,M_PI);
709  meMETPhiHFHadronsPlus = ibooker.book1D("METPhiHFHadronsPlus", "METPhi_PFHFHadronsPlus", 50, -M_PI,M_PI);
710  meMETPhiHFHadronsMinus = ibooker.book1D("METPhiHFHadronsMinus", "METPhi_PFHFHadronsMinus", 50, -M_PI,M_PI);
711  meMETPhiHFEGammasPlus = ibooker.book1D("METPhiHFEGammasPlus", "METPhi_PFHFEGammasPlus", 50, -M_PI,M_PI);
712  meMETPhiHFEGammasMinus = ibooker.book1D("METPhiHFEGammasMinus", "METPhi_PFHFEGammasMinus", 50, -M_PI,M_PI);
713 
714  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsBarrel" ,meMETPhiChargedHadronsBarrel));
715  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsEndcapPlus" ,meMETPhiChargedHadronsEndcapPlus));
716  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiChargedHadronsEndcapMinus" ,meMETPhiChargedHadronsEndcapMinus));
717  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsBarrel" ,meMETPhiNeutralHadronsBarrel));
718  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsEndcapPlus" ,meMETPhiNeutralHadronsEndcapPlus));
719  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiNeutralHadronsEndcapMinus" ,meMETPhiNeutralHadronsEndcapMinus));
720  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsBarrel" ,meMETPhiPhotonsBarrel));
721  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsEndcapPlus" ,meMETPhiPhotonsEndcapPlus));
722  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiPhotonsEndcapMinus" ,meMETPhiPhotonsEndcapMinus));
723  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFHadronsPlus" ,meMETPhiHFHadronsPlus));
724  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFHadronsMinus" ,meMETPhiHFHadronsMinus));
725  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFEGammasPlus" ,meMETPhiHFEGammasPlus));
726  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METPhiHFEGammasMinus" ,meMETPhiHFEGammasMinus));
727  }
728 
729  if(fillPFCandPlots && fillCandidateMap_histos){
730  if(!profilePFCand_x_.empty()){
731  etaMinPFCand_.clear();
732  etaMaxPFCand_.clear();
733  typePFCand_.clear();
734  countsPFCand_.clear();
735  MExPFCand_.clear();
736  MEyPFCand_.clear();
737  profilePFCand_x_.clear();
738  profilePFCand_y_.clear();
739  profilePFCand_x_name_.clear();
740  profilePFCand_y_name_.clear();
741  }
742  for (std::vector<edm::ParameterSet>::const_iterator v = diagnosticsParameters_.begin(); v!=diagnosticsParameters_.end(); v++) {
743  double etaMinPFCand = v->getParameter<double>("etaMin");
744  double etaMaxPFCand = v->getParameter<double>("etaMax");
745  int nMinPFCand = v->getParameter<int>("nMin");
746  int nMaxPFCand = v->getParameter<int>("nMax");
747  int nbinsPFCand = v->getParameter<double>("nbins");
748 
749  // etaNBins_.push_back(etaNBins);
750  etaMinPFCand_.push_back(etaMinPFCand);
751  etaMaxPFCand_.push_back(etaMaxPFCand);
752  typePFCand_.push_back(v->getParameter<int>("type"));
753  countsPFCand_.push_back(0);
754  MExPFCand_.push_back(0.);
755  MEyPFCand_.push_back(0.);
756 
757  profilePFCand_x_.push_back(ibooker.bookProfile(std::string(v->getParameter<std::string>("name")).append("_Px_").c_str(), std::string(v->getParameter<std::string>("name"))+"Px", nbinsPFCand, nMinPFCand, nMaxPFCand, -300,300));
758  profilePFCand_x_name_.push_back(std::string(v->getParameter<std::string>("name")).append("_Px_"));
759  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+profilePFCand_x_name_[profilePFCand_x_name_.size()-1], profilePFCand_x_[profilePFCand_x_.size()-1]));
760  profilePFCand_y_.push_back(ibooker.bookProfile(std::string(v->getParameter<std::string>("name")).append("_Py_").c_str(), std::string(v->getParameter<std::string>("name"))+"Py", nbinsPFCand, nMinPFCand, nMaxPFCand, -300,300));
761  profilePFCand_y_name_.push_back(std::string(v->getParameter<std::string>("name")).append("_Py_"));
762  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+profilePFCand_y_name_[profilePFCand_y_name_.size()-1], profilePFCand_y_[profilePFCand_y_.size()-1]));
763  }
764  }
765  }
766  if(isMiniAODMet_){
767  if(fillPFCandPlots && 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
768  if(!profilePFCand_x_.empty()){
769  etaMinPFCand_.clear();
770  etaMaxPFCand_.clear();
771  typePFCand_.clear();
772  countsPFCand_.clear();
773  profilePFCand_x_.clear();
774  profilePFCand_y_.clear();
775  }
776  for (std::vector<edm::ParameterSet>::const_iterator v = diagnosticsParameters_.begin(); v!=diagnosticsParameters_.end(); v++) {
777  double etaMinPFCand = v->getParameter<double>("etaMin");
778  double etaMaxPFCand = v->getParameter<double>("etaMax");
779 
780  etaMinPFCand_.push_back(etaMinPFCand);
781  etaMaxPFCand_.push_back(etaMaxPFCand);
782  typePFCand_.push_back(v->getParameter<int>("type"));
783  countsPFCand_.push_back(0);
784  MExPFCand_.push_back(0.);
785  MEyPFCand_.push_back(0.);
786  }
787  }
788  }
789 
790  if(isPFMet_ || isMiniAODMet_){
791  mePhotonEtFraction = ibooker.book1D("PfPhotonEtFraction", "photonEtFraction()", 50, 0, 1);
792  meNeutralHadronEtFraction = ibooker.book1D("PfNeutralHadronEtFraction", "neutralHadronEtFraction()", 50, 0, 1);
793  meChargedHadronEtFraction = ibooker.book1D("PfChargedHadronEtFraction", "chargedHadronEtFraction()", 50, 0, 1);
794  meHFHadronEtFraction = ibooker.book1D("PfHFHadronEtFraction", "HFHadronEtFraction()", 50, 0, 1);
795  meHFEMEtFraction = ibooker.book1D("PfHFEMEtFraction", "HFEMEtFraction()", 50, 0, 1);
796 
797  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFraction" ,mePhotonEtFraction));
798  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFraction",meNeutralHadronEtFraction));
799  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFraction",meChargedHadronEtFraction));
800  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEtFraction" ,meHFHadronEtFraction));
801  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEtFraction" ,meHFEMEtFraction));
802 
803  mePhotonEtFraction_profile = ibooker.bookProfile("PfPhotonEtFraction_profile", "photonEtFraction()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1);
804  meNeutralHadronEtFraction_profile = ibooker.bookProfile("PfNeutralHadronEtFraction_profile", "neutralHadronEtFraction()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1);
805  meChargedHadronEtFraction_profile = ibooker.bookProfile("PfChargedHadronEtFraction_profile", "chargedHadronEtFraction()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1);
806  meHFHadronEtFraction_profile = ibooker.bookProfile("PfHFHadronEtFraction_profile", "HFHadronEtFraction()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1);
807  meHFEMEtFraction_profile = ibooker.bookProfile("PfHFEMEtFraction_profile", "HFEMEtFraction()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1);
808  mePhotonEtFraction_profile ->setAxisTitle("nvtx", 1);
809  meNeutralHadronEtFraction_profile->setAxisTitle("nvtx", 1);
810  meChargedHadronEtFraction_profile->setAxisTitle("nvtx", 1);
811  meHFHadronEtFraction_profile ->setAxisTitle("nvtx", 1);
812  meHFEMEtFraction_profile ->setAxisTitle("nvtx", 1);
813 
814  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEtFraction_profile" ,mePhotonEtFraction_profile));
815  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEtFraction_profile" ,meNeutralHadronEtFraction_profile));
816  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEtFraction_profile" ,meChargedHadronEtFraction_profile));
817  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEtFraction_profile" ,meHFHadronEtFraction_profile));
818  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEtFraction_profile" ,meHFEMEtFraction_profile));
819 
820  mePhotonEt = ibooker.book1D("PfPhotonEt", "photonEt()", 50, 0, 1000);
821  meNeutralHadronEt = ibooker.book1D("PfNeutralHadronEt", "neutralHadronEt()", 50, 0, 1000);
822  meElectronEt = ibooker.book1D("PfElectronEt", "electronEt()", 50, 0, 100);
823  meChargedHadronEt = ibooker.book1D("PfChargedHadronEt", "chargedHadronEt()", 50, 0, 2000);
824  meMuonEt = ibooker.book1D("PfMuonEt", "muonEt()", 50, 0, 100);
825  meHFHadronEt = ibooker.book1D("PfHFHadronEt", "HFHadronEt()", 50, 0, 2000);
826  meHFEMEt = ibooker.book1D("PfHFEMEt", "HFEMEt()", 50, 0, 1000);
827 
828  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEt" ,mePhotonEt));
829  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEt" ,meNeutralHadronEt));
830  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfElectronEt" ,meElectronEt));
831  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEt" ,meChargedHadronEt));
832  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfMuonEt" ,meMuonEt));
833  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEt" ,meHFHadronEt));
834  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEt" ,meHFEMEt));
835 
836  mePhotonEt_profile = ibooker.bookProfile("PfPhotonEt_profile", "photonEt()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1000);
837  meNeutralHadronEt_profile = ibooker.bookProfile("PfNeutralHadronEt_profile", "neutralHadronEt()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1000);
838  meChargedHadronEt_profile = ibooker.bookProfile("PfChargedHadronEt_profile", "chargedHadronEt()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1000);
839  meHFHadronEt_profile = ibooker.bookProfile("PfHFHadronEt_profile", "HFHadronEt()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1000);
840  meHFEMEt_profile = ibooker.bookProfile("PfHFEMEt_profile", "HFEMEt()", nbinsPV_, nPVMin_, nPVMax_, 50, 0, 1000);
841 
842  mePhotonEt_profile ->setAxisTitle("nvtx", 1);
843  meNeutralHadronEt_profile ->setAxisTitle("nvtx", 1);
844  meChargedHadronEt_profile ->setAxisTitle("nvtx", 1);
845  meHFHadronEt_profile ->setAxisTitle("nvtx", 1);
846  meHFEMEt_profile ->setAxisTitle("nvtx", 1);
847 
848  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfPhotonEt_profile" ,mePhotonEt_profile));
849  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfNeutralHadronEt_profile" ,meNeutralHadronEt_profile));
850  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfChargedHadronEt_profile" ,meChargedHadronEt_profile));
851  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFHadronEt_profile" ,meHFHadronEt_profile));
852  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"PfHFEMEt_profile" ,meHFEMEt_profile));
853  }
854 
855  if (isCaloMet_){
856  if (fill_met_high_level_histo){//now configurable in python file
857  hMExLS = ibooker.book2D("MExLS","MEx_LS",200,-200,200,250,0.,2500.);
858  hMExLS->setAxisTitle("MEx [GeV]",1);
859  hMExLS->setAxisTitle("Lumi Section",2);
860  hMExLS->getTH2F()->SetOption("colz");
861  hMEyLS = ibooker.book2D("MEyLS","MEy_LS",200,-200,200,250,0.,2500.);
862  hMEyLS->setAxisTitle("MEy [GeV]",1);
863  hMEyLS->setAxisTitle("Lumi Section",2);
864  hMEyLS->getTH2F()->SetOption("colz");
865  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MExLS",hMExLS));
866  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"MEyLS",hMEyLS));
867  }
868  }
869 
870  hMETRate = ibooker.book1D("METRate", "METRate", 200, 0, 1000);
871  map_of_MEs.insert(std::pair<std::string,MonitorElement*>(DirName+"/"+"METRate",hMETRate));
872 
873 
874  ibooker.setCurrentFolder("JetMET");
875  lumisecME = ibooker.book1D("lumisec", "lumisec", 2501, -1., 2500.);
876  map_of_MEs.insert(std::pair<std::string,MonitorElement*>("JetMET/lumisec",lumisecME));
877  }//all non Z plots (restrict Z Plots only for resolution study)
878 }
879 
880 // ***********************************************************
881 void METAnalyzer::dqmBeginRun(const edm::Run& iRun, const edm::EventSetup& iSetup)
882 {
884  iSetup.get<L1GtTriggerMenuRcd>().get(menuRcd) ;
885  const L1GtTriggerMenu* menu = menuRcd.product();
886  for (CItAlgo techTrig = menu->gtTechnicalTriggerMap().begin(); techTrig != menu->gtTechnicalTriggerMap().end(); ++techTrig) {
887  if ((techTrig->second).algoName() == m_l1algoname_) {
888  m_bitAlgTechTrig_=(techTrig->second).algoBitNumber();
889  break;
890  }
891  }
892 
893 // std::cout << "Run " << iRun.run() << " hltconfig.init "
894 // << hltConfig_.init(iRun,iSetup,triggerResultsLabel_.process(),changed_) << " length: "<<hltConfig_.triggerNames().size()<<" changed "<<changed_<<std::endl;
895  bool changed(true);
896  if (hltConfig_.init(iRun,iSetup,triggerResultsLabel_.process(),changed)) {
897  if (changed) {
898  //hltConfig_.dump("ProcessName");
899  //hltConfig_.dump("GlobalTag");
900  //hltConfig_.dump("TableName");
901 // hltConfig_.dump("Streams");
902 // hltConfig_.dump("Datasets");
903 // hltConfig_.dump("PrescaleTable");
904 // hltConfig_.dump("ProcessPSet");
905  }
906  } else {
907  if (verbose_) std::cout << "HLTEventAnalyzerAOD::analyze:"
908  << " config extraction failure with process name "
909  << triggerResultsLabel_.process() << std::endl;
910  }
911 
912  allTriggerNames_.clear();
913  for (unsigned int i = 0; i<hltConfig_.size();i++) {
914  allTriggerNames_.push_back(hltConfig_.triggerName(i));
915  }
916 // std::cout<<"Length: "<<allTriggerNames_.size()<<std::endl;
917 
918  triggerSelectedSubFolders_ = parameters.getParameter<edm::VParameterSet>("triggerSelectedSubFolders");
919  for ( std::vector<GenericTriggerEventFlag *>::const_iterator it = triggerFolderEventFlag_.begin(); it!= triggerFolderEventFlag_.end(); it++) {
920  int pos = it - triggerFolderEventFlag_.begin();
921  if ((*it)->on()) {
922  (*it)->initRun( iRun, iSetup );
923  if (triggerSelectedSubFolders_[pos].exists(std::string("hltDBKey"))) {
924  if ((*it)->expressionsFromDB((*it)->hltDBKey(), iSetup)[0] != "CONFIG_ERROR")
925  triggerFolderExpr_[pos] = (*it)->expressionsFromDB((*it)->hltDBKey(), iSetup);
926  }
927  }
928  }
929  if(isMiniAODMet_){
930  bool changed_filter=true;
931  std::vector<int>initializeFilter(8,-1);//we have 8 filters at the moment
932  miniaodFilterIndex_=initializeFilter;
933  if (FilterhltConfig_.init(iRun,iSetup,METFilterMiniAODLabel_.process(),changed_filter)){
934  miniaodfilterdec=0;
935  for(unsigned int i=0;i<FilterhltConfig_.size();i++){
936  std::string search=FilterhltConfig_.triggerName(i).substr(5);//actual label of filter, the first 5 items are Flag_, so stripped off
937  std::string search2=HBHENoiseStringMiniAOD;//all filters end with DQM, which is not in the flag --> ONLY not for HBHEFilters
938  std::size_t found=search2.find(search);
939  if(found!=std::string::npos){
940  miniaodFilterIndex_[0]=i;
941  }
942  search2=CSCHaloResultTag_.label().substr(0,CSCHaloResultTag_.label().size()-3);
943  found=search2.find(search);
944  if(found!=std::string::npos){
945  miniaodFilterIndex_[1]=i;
946  }
947  search2=eeBadScFilterTag_.label().substr(0,eeBadScFilterTag_.label().size()-3);
948  found=search2.find(search);
949  if(found!=std::string::npos){
950  miniaodFilterIndex_[2]=i;
951  }
952  search2=HBHEIsoNoiseStringMiniAOD;
953  found=search2.find(search);
954  if(found!=std::string::npos){
955  miniaodFilterIndex_[3]=i;
956  }
957  search2=CSCHalo2015ResultTag_.label().substr(0,CSCHalo2015ResultTag_.label().size()-3);
958  found=search2.find(search);
959  if(found!=std::string::npos){
960  miniaodFilterIndex_[4]=i;
961  }
962  search2=EcalDeadCellTriggerTag_.label().substr(0,EcalDeadCellTriggerTag_.label().size()-3);
963  found=search2.find(search);
964  if(found!=std::string::npos){
965  miniaodFilterIndex_[5]=i;
966  }
967  search2=EcalDeadCellBoundaryTag_.label().substr(0,EcalDeadCellBoundaryTag_.label().size()-3);
968  found=search2.find(search);
969  if(found!=std::string::npos){
970  miniaodFilterIndex_[6]=i;
971  }
972  search2=HcalStripHaloTag_.label().substr(0,HcalStripHaloTag_.label().size()-3);
973  found=search2.find(search);
974  if(found!=std::string::npos){
975  miniaodFilterIndex_[7]=i;
976  }
977  }
978  }else if(FilterhltConfig_.init(iRun,iSetup,METFilterMiniAODLabel2_.process(),changed_filter)){
979  miniaodfilterdec=1;
980  for(unsigned int i=0;i<FilterhltConfig_.size();i++){
981  std::string search=FilterhltConfig_.triggerName(i).substr(5);//actual label of filter, the first 5 items are Flag_, so stripped off
982  std::string search2=HBHENoiseStringMiniAOD;//all filters end with DQM, which is not in the flag --> ONLY not for HBHEFilters
983  std::size_t found=search2.find(search);
984  if(found!=std::string::npos){
985  miniaodFilterIndex_[0]=i;
986  }
987  search2=CSCHaloResultTag_.label().substr(0,CSCHaloResultTag_.label().size()-3);
988  found=search2.find(search);
989  if(found!=std::string::npos){
990  miniaodFilterIndex_[1]=i;
991  }
992  search2=eeBadScFilterTag_.label().substr(0,eeBadScFilterTag_.label().size()-3);
993  found=search2.find(search);
994  if(found!=std::string::npos){
995  miniaodFilterIndex_[2]=i;
996  }
997  search2=HBHEIsoNoiseStringMiniAOD;
998  found=search2.find(search);
999  if(found!=std::string::npos){
1000  miniaodFilterIndex_[3]=i;
1001  }
1002  search2=CSCHalo2015ResultTag_.label().substr(0,CSCHalo2015ResultTag_.label().size()-3);
1003  found=search2.find(search);
1004  if(found!=std::string::npos){
1005  miniaodFilterIndex_[4]=i;
1006  }
1007  search2=EcalDeadCellTriggerTag_.label().substr(0,EcalDeadCellTriggerTag_.label().size()-3);
1008  found=search2.find(search);
1009  if(found!=std::string::npos){
1010  miniaodFilterIndex_[5]=i;
1011  }
1012  search2=EcalDeadCellBoundaryTag_.label().substr(0,EcalDeadCellBoundaryTag_.label().size()-3);
1013  found=search2.find(search);
1014  if(found!=std::string::npos){
1015  miniaodFilterIndex_[6]=i;
1016  }
1017  search2=HcalStripHaloTag_.label().substr(0,HcalStripHaloTag_.label().size()-3);
1018  found=search2.find(search);
1019  if(found!=std::string::npos){
1020  miniaodFilterIndex_[7]=i;
1021  }
1022  }
1023  }else{
1024  edm::LogWarning("MiniAOD METAN Filter HLT OBject version")<<"nothing found with both RECO and reRECO label"<<std::endl;
1025  }
1026  }
1027 }
1028 
1029 // ***********************************************************
1030 void METAnalyzer::endRun(const edm::Run& iRun, const edm::EventSetup& iSetup)
1031 {
1032 
1033  //
1034  //--- Check the time length of the Run from the lumi section plots
1035 
1036 
1037  TH1F* tlumisec;
1038 
1039  MonitorElement *meLumiSec = map_dijet_MEs["aaa"];
1040  meLumiSec = map_dijet_MEs["JetMET/lumisec"];
1041 
1042  int totlsec=0;
1043  int totlssecsum=0;
1044  double totltime=0.;
1045  if (meLumiSec && meLumiSec->getRootObject() ) {
1046  tlumisec = meLumiSec->getTH1F();
1047  //check overflow bin (if we have more than 2500 LS in a run)
1048  //lumisec is filled every time the analyze section is processed
1049  //we know an LS is present only once in a run: normalize how many events we had on average
1050  //if lumi fluctuates strongly might be unreliable for overflow bin though
1051  for (int i=0; i< (tlumisec->GetNbinsX()); i++){
1052  if (tlumisec->GetBinContent(i)!=0){
1053  totlsec+=1;
1054  totlssecsum+=tlumisec->GetBinContent(i);
1055  }
1056  }
1057  int num_per_ls=(double)totlssecsum/(double)totlsec;
1058  totlsec=totlsec+tlumisec->GetBinContent(tlumisec->GetNbinsX()+1)/(double)num_per_ls;
1059  totltime = double(totlsec*90); // one lumi sec ~ 90 (sec)
1060  }
1061 
1062  if (totltime==0.) totltime=1.;
1063 
1064  std::string dirName = FolderName_+metCollectionLabel_.label()+"/";
1065  //dbe_->setCurrentFolder(dirName);
1066 
1067 
1068 
1069  //below is the original METAnalyzer formulation
1070 
1071  for (std::vector<std::string>::const_iterator ic = folderNames_.begin(); ic != folderNames_.end(); ic++) {
1073  DirName = dirName+*ic;
1074  makeRatePlot(DirName,totltime);
1075  for ( std::vector<GenericTriggerEventFlag *>::const_iterator it = triggerFolderEventFlag_.begin(); it!= triggerFolderEventFlag_.end(); it++) {
1076  int pos = it - triggerFolderEventFlag_.begin();
1077  if ((*it)->on()) {
1078  makeRatePlot(DirName+"/"+triggerFolderLabels_[pos],totltime);
1079  }
1080  }
1081  }
1082 
1083 }
1084 
1085 
1086 // ***********************************************************
1088 {
1089 
1090  //dbe_->setCurrentFolder(DirName);
1091  MonitorElement *meMET = map_dijet_MEs[DirName+"/"+"MET"];
1092  MonitorElement *mMETRate = map_dijet_MEs[DirName+"/"+"METRate"];
1093 
1094  TH1F* tMET;
1095  TH1F* tMETRate;
1096 
1097  if ( meMET && mMETRate){
1098  if ( meMET->getRootObject() && mMETRate->getRootObject()) {
1099  tMET = meMET->getTH1F();
1100 
1101  // Integral plot & convert number of events to rate (hz)
1102  tMETRate = (TH1F*) tMET->Clone("METRateHist");
1103  for (int i = tMETRate->GetNbinsX()-1; i>=0; i--){
1104  mMETRate->setBinContent(i+1,tMETRate->GetBinContent(i+2)+tMET->GetBinContent(i+1));
1105  }
1106  for (int i = 0; i<tMETRate->GetNbinsX(); i++){
1107  mMETRate->setBinContent(i+1,tMETRate->GetBinContent(i+1)/double(totltime));
1108  }
1109  }
1110  }
1111 
1112 }
1113 
1114 // ***********************************************************
1116 
1117 
1118  // *** Fill lumisection ME
1119  int myLuminosityBlock;
1120  myLuminosityBlock = iEvent.luminosityBlock();
1121  if(fill_met_high_level_histo){
1122  lumisecME=map_dijet_MEs["JetMET/lumisec"]; if(lumisecME && lumisecME->getRootObject()) lumisecME->Fill(myLuminosityBlock);
1123  }
1124 
1125  if (myLuminosityBlock<LSBegin_) return;
1126  if (myLuminosityBlock>LSEnd_ && LSEnd_>0) return;
1127 
1128  if (verbose_) std::cout << "METAnalyzer analyze" << std::endl;
1129 
1130  std::string DirName = FolderName_+metCollectionLabel_.label();
1131 
1132 
1133 
1134 
1135  // ==========================================================
1136  // Trigger information
1137  //
1138 // trigJetMB_=0;
1139 // trigHighPtJet_=0;
1140 // trigLowPtJet_=0;
1141 // trigMinBias_=0;
1142 // trigHighMET_=0;
1143 // // _trig_LowMET=0;
1144 // trigEle_=0;
1145 // trigMuon_=0;
1146 // trigPhysDec_=0;
1147  std::vector<int> triggerFolderDecisions;
1148  triggerFolderDecisions_ = std::vector<int> (triggerFolderEventFlag_.size(), 0);
1149  // **** Get the TriggerResults container
1151  iEvent.getByToken(triggerResultsToken_, triggerResults);
1152 
1153  if( triggerResults.isValid()) {
1155  // Check how many HLT triggers are in triggerResults
1156  int ntrigs = (*triggerResults).size();
1157  if (verbose_) std::cout << "ntrigs=" << ntrigs << std::endl;
1158  // If index=ntrigs, this HLT trigger doesn't exist in the HLT table for this data.
1159  for (std::vector<GenericTriggerEventFlag *>::const_iterator it = triggerFolderEventFlag_.begin(); it!=triggerFolderEventFlag_.end();it++) {
1160  unsigned int pos = it - triggerFolderEventFlag_.begin();
1161  bool fd = (*it)->accept(iEvent, iSetup);
1162  triggerFolderDecisions_[pos] = fd;
1163  }
1164  allTriggerDecisions_.clear();
1165  for (unsigned int i=0;i<allTriggerNames_.size();++i) {
1166  allTriggerDecisions_.push_back((*triggerResults).accept(i));
1167  //std::cout<<"TR "<<(*triggerResults).size()<<" "<<(*triggerResults).accept(i)<<" "<<allTriggerNames_[i]<<std::endl;
1168  }
1169  }
1170 
1171  // ==========================================================
1172  // MET information
1173 
1174  // **** Get the MET container
1179 
1180  //if(isTCMet_){
1181  //iEvent.getByToken(tcMetToken_, tcmetcoll);
1182  //if(!tcmetcoll.isValid()) return;
1183  //}
1184  if(isCaloMet_){
1185  iEvent.getByToken(caloMetToken_, calometcoll);
1186  if(!calometcoll.isValid()) return;
1187  }
1188  if(isPFMet_){
1189  iEvent.getByToken(pfMetToken_, pfmetcoll);
1190  if(!pfmetcoll.isValid()) return;
1191  }
1192  if(isMiniAODMet_){
1193  iEvent.getByToken(patMetToken_, patmetcoll);
1194  if(!patmetcoll.isValid()) return;
1195  }
1196 
1197  const MET *met=nullptr;
1198  const pat::MET *patmet=nullptr;
1199  const PFMET *pfmet=nullptr;
1200  const CaloMET *calomet=nullptr;
1201  //if(isTCMet_){
1202  //met=&(tcmetcoll->front());
1203  //}
1204  if(isPFMet_){
1205  met=&(pfmetcoll->front());
1206  pfmet=&(pfmetcoll->front());
1207  }
1208  if(isCaloMet_){
1209  met=&(calometcoll->front());
1210  calomet=&(calometcoll->front());
1211  }
1212  if(isMiniAODMet_){
1213  met=&(patmetcoll->front());
1214  patmet=&(patmetcoll->front());
1215  }
1216 
1217  LogTrace("METAnalyzer")<<"[METAnalyzer] Call to the MET analyzer";
1218 
1219  // ==========================================================
1220  // TCMET
1221 
1222  //if (/*isTCMet_ || */(isCaloMet_ && metCollectionLabel_.label() == "corMetGlobalMuons")) {
1223 
1224  //iEvent.getByToken(MuonToken_, muonHandle_);
1225  //iEvent.getByToken(TrackToken_, trackHandle_);
1226  //iEvent.getByToken(ElectronToken_, electronHandle_);
1227  //iEvent.getByToken(BeamspotToken_, beamSpotHandle_);
1228  //iEvent.getByToken(tcMETValueMapToken_,tcMetValueMapHandle_);
1229 
1230  //if(!muonHandle_.isValid()) edm::LogInfo("OutputInfo") << "falied to retrieve muon data require by MET Task";
1231  //if(!trackHandle_.isValid()) edm::LogInfo("OutputInfo") << "falied to retrieve track data require by MET Task";
1232  //if(!electronHandle_.isValid()) edm::LogInfo("OutputInfo") << "falied to retrieve electron data require by MET Task";
1233  //if(!beamSpotHandle_.isValid()) edm::LogInfo("OutputInfo") << "falied to retrieve beam spot data require by MET Task";
1234 
1235  //beamSpot_ = ( beamSpotHandle_.isValid() ) ? beamSpotHandle_->position() : math::XYZPoint(0, 0, 0);
1236  //}
1237 
1238  // ==========================================================
1239  bool bJetID = false;
1240  bool bDiJetID = false;
1241  // Jet ID -------------------------------------------------------
1242  //
1243 
1248 
1249  int collsize=-1;
1250 
1251  if (isCaloMet_){
1252  iEvent.getByToken(caloJetsToken_, caloJets);
1253  if (!caloJets.isValid()) {
1254  LogDebug("") << "METAnalyzer: Could not find calojet product" << std::endl;
1255  if (verbose_) std::cout << "METAnalyzer: Could not find calojet product" << std::endl;
1256  }
1257  collsize=caloJets->size();
1258  }
1260  //if (isTCMet_){
1261  //iEvent.getByToken(jptJetsToken_, jptJets);
1262  //if (!jptJets.isValid()) {
1263  // LogDebug("") << "METAnalyzer: Could not find jptjet product" << std::endl;
1264  // if (verbose_) std::cout << "METAnalyzer: Could not find jptjet product" << std::endl;
1265  //}
1266  //collsize=jptJets->size();
1267  //}*/
1268 
1269  edm::Handle< edm::ValueMap<reco::JetID> >jetID_ValueMap_Handle;
1270  if(/*isTCMet_ || */isCaloMet_){
1271  if(!runcosmics_){
1272  iEvent.getByToken(jetID_ValueMapToken_,jetID_ValueMap_Handle);
1273  }
1274  }
1275 
1276  if (isMiniAODMet_){ iEvent.getByToken(patJetsToken_, patJets);
1277  if (!patJets.isValid()) {
1278  LogDebug("") << "METAnalyzer: Could not find patjet product" << std::endl;
1279  if (verbose_) std::cout << "METAnalyzer: Could not find patjet product" << std::endl;
1280  }
1281  collsize=patJets->size();
1282  }
1283 
1284  if (isPFMet_){ iEvent.getByToken(pfJetsToken_, pfJets);
1285  if (!pfJets.isValid()) {
1286  LogDebug("") << "METAnalyzer: Could not find pfjet product" << std::endl;
1287  if (verbose_) std::cout << "METAnalyzer: Could not find pfjet product" << std::endl;
1288  }
1289  collsize=pfJets->size();
1290  }
1291 
1292  unsigned int ind1=-1;
1293  double pt1=-1;
1294  bool pass_jetID1=false;
1295  unsigned int ind2=-1;
1296  double pt2=-1;
1297  bool pass_jetID2=false;
1298 
1300  bool pass_correction_flag=false;
1301  if(!isMiniAODMet_){
1302  iEvent.getByToken(jetCorrectorToken_, jetCorr);
1303  if (jetCorr.isValid()){
1304  pass_correction_flag=true;
1305  }
1306  }else{
1307  pass_correction_flag=true;
1308  }
1309  //do loose jet ID-> check threshold on corrected jets
1310  for (int ijet=0; ijet<collsize; ijet++) {
1311  double pt_jet=-10;
1312  double scale=1.;
1313  bool iscleaned=false;
1314  if (pass_correction_flag) {
1315  if(isCaloMet_){
1316  scale = jetCorr->correction((*caloJets)[ijet]);
1317  }
1318  //if(isTCMet_){
1319  //scale = jetCorr->correction((*jptJets)[ijet]);
1320  //}
1321  if(isPFMet_){
1322  scale = jetCorr->correction((*pfJets)[ijet]);
1323  }
1324  }
1325  if(isCaloMet_){
1326  pt_jet=scale*(*caloJets)[ijet].pt();
1327  if(pt_jet> ptThreshold_){
1328  reco::CaloJetRef calojetref(caloJets, ijet);
1329  if(!runcosmics_){
1330  reco::JetID jetID = (*jetID_ValueMap_Handle)[calojetref];
1331  iscleaned = jetIDFunctorLoose((*caloJets)[ijet], jetID);
1332  }else{
1333  iscleaned=true;
1334  }
1335  }
1336  }
1338  //if(isTCMet_){
1339  //pt_jet=scale*(*jptJets)[ijet].pt();
1340  //if(pt_jet> ptThreshold_){
1341  // const edm::RefToBase<reco::Jet>& rawJet = (*jptJets)[ijet].getCaloJetRef();
1342  // const reco::CaloJet *rawCaloJet = dynamic_cast<const reco::CaloJet*>(&*rawJet);
1343  // reco::CaloJetRef const theCaloJetRef = (rawJet).castTo<reco::CaloJetRef>();
1344  // if(!runcosmics_){
1345  // reco::JetID jetID = (*jetID_ValueMap_Handle)[theCaloJetRef];
1346  // iscleaned = jetIDFunctorLoose(*rawCaloJet, jetID);
1347  // }else{
1348  // iscleaned=true;
1349  // }
1350  //}
1351  //}*/
1352  if(isPFMet_){
1353  pt_jet=scale*(*pfJets)[ijet].pt();
1354  if(pt_jet> ptThreshold_){
1355  iscleaned = pfjetIDFunctorLoose((*pfJets)[ijet]);
1356  }
1357  }
1358  if(isMiniAODMet_){
1359  pt_jet=(*patJets)[ijet].pt();
1360  if(pt_jet> ptThreshold_){
1361  pat::strbitset stringbitset=pfjetIDFunctorLoose.getBitTemplate();
1362  iscleaned = pfjetIDFunctorLoose((*patJets)[ijet],stringbitset);
1363  }
1364  }
1365  if(iscleaned){
1366  bJetID=true;
1367  }
1368  if(pt_jet>pt1){
1369  pt2=pt1;
1370  ind2=ind1;
1371  pass_jetID2=pass_jetID1;
1372  pt1=pt_jet;
1373  ind1=ijet;
1374  pass_jetID1=iscleaned;
1375  }else if (pt_jet>pt2){
1376  pt2=pt_jet;
1377  ind2=ijet;
1378  pass_jetID2=iscleaned;
1379  }
1380  }
1381  if(pass_jetID1 && pass_jetID2){
1382  double dphi=-1.0;
1383  if(isCaloMet_){
1384  dphi=fabs((*caloJets)[ind1].phi()-(*caloJets)[ind2].phi());
1385  }
1387  //dphi=fabs((*jptJets)[ind1].phi()-(*jptJets)[ind2].phi());
1388  //}*/
1389  if(isPFMet_){
1390  dphi=fabs((*pfJets)[ind1].phi()-(*pfJets)[ind2].phi());
1391  }
1392  if(isMiniAODMet_){
1393  dphi=fabs((*patJets)[0].phi()-(*patJets)[1].phi());
1394  }
1395  if(dphi>acos(-1.)){
1396  dphi=2*acos(-1.)-dphi;
1397  }
1398  if(dphi>2.7){
1399  bDiJetID=true;
1400  }
1401  }
1402  // ==========================================================
1403  // ==========================================================
1404  //Vertex information
1405  Handle<VertexCollection> vertexHandle;
1406  iEvent.getByToken(vertexToken_, vertexHandle);
1407 
1408  if (!vertexHandle.isValid()) {
1409  LogDebug("") << "CaloMETAnalyzer: Could not find vertex collection" << std::endl;
1410  if (verbose_) std::cout << "CaloMETAnalyzer: Could not find vertex collection" << std::endl;
1411  }
1412  numPV_ = 0;
1413  if ( vertexHandle.isValid() ){
1414  VertexCollection vertexCollection = *(vertexHandle.product());
1415  numPV_ = vertexCollection.size();
1416  }
1417  bool bPrimaryVertex = (bypassAllPVChecks_ || (numPV_>0));
1418 
1419  bool bZJets = false;
1420 
1422  iEvent.getByToken(MuonsToken_, Muons);
1423 
1425 
1426  double pt_muon0=-1;
1427  double pt_muon1=-1;
1428  int mu_index0=-1;
1429  int mu_index1=-1;
1430  //fill it only for cleaned jets
1431  if(Muons.isValid() && Muons->size()>1){
1432  for (unsigned int i=0;i<Muons->size();i++){
1433  bool pass_muon_id=false;
1434  bool pass_muon_iso=false;
1435  double dxy=fabs((*Muons)[i].muonBestTrack()->dxy());
1436  double dz=fabs((*Muons)[i].muonBestTrack()->dz());
1437  if (numPV_>0){
1438  dxy=fabs((*Muons)[i].muonBestTrack()->dxy((*vertexHandle)[0].position()));
1439  dz=fabs((*Muons)[i].muonBestTrack()->dz((*vertexHandle)[0].position()));
1440  }
1441  if((*Muons)[i].pt()>20 && fabs((*Muons)[i].eta())<2.3){
1442  if((*Muons)[i].isGlobalMuon() && (*Muons)[i].isPFMuon() && (*Muons)[i].globalTrack()->hitPattern().numberOfValidMuonHits() > 0 && (*Muons)[i].numberOfMatchedStations() > 1 && dxy < 0.2 && (*Muons)[i].numberOfMatchedStations() > 1 && dz<0.5 && (*Muons)[i].innerTrack()->hitPattern().numberOfValidPixelHits() > 0 && (*Muons)[i].innerTrack()->hitPattern().trackerLayersWithMeasurement() > 5){
1443  pass_muon_id=true;
1444  }
1445  // Muon pf isolation DB corrected
1446  float muonIsoPFdb = ((*Muons)[i].pfIsolationR04().sumChargedHadronPt
1447  + std::max(0., (*Muons)[i].pfIsolationR04().sumNeutralHadronEt + (*Muons)[i].pfIsolationR04().sumPhotonEt - 0.5*(*Muons)[i].pfIsolationR04().sumPUPt))/(*Muons)[i].pt();
1448  if(muonIsoPFdb<0.12){
1449  pass_muon_iso=true;
1450  }
1451 
1452  if(pass_muon_id && pass_muon_iso){
1453  if((*Muons)[i].pt()>pt_muon0){
1454  mu_index1=mu_index0;
1455  pt_muon1=pt_muon0;
1456  mu_index0=i;
1457  pt_muon0=(*Muons)[i].pt();
1458  }else if ((*Muons)[i].pt()>pt_muon1){
1459  mu_index1=i;
1460  pt_muon1=(*Muons)[i].pt();
1461  }
1462  }
1463  }
1464  }
1465  if(mu_index0>=0 && mu_index1>=0){
1466  if((*Muons)[mu_index0].charge()*(*Muons)[mu_index1].charge()<0){
1467  zCand=(*Muons)[mu_index0].polarP4()+(*Muons)[mu_index1].polarP4();
1468  if(fabs(zCand.M()-91.)<20){
1469  bZJets=true;
1470  }
1471  }
1472  }
1473  }
1474 
1475  // ==========================================================
1476 
1478  iEvent.getByToken( gtToken_, gtReadoutRecord);
1479 
1480  bool techTriggerResultBxM2 = false;
1481  bool techTriggerResultBxM1 = false;
1482  bool techTriggerResultBx0 = false;
1483 
1484  if (!gtReadoutRecord.isValid()) {
1485  LogDebug("") << "METAnalyzer: Could not find GT readout record" << std::endl;
1486  if (verbose_) std::cout << "METAnalyzer: Could not find GT readout record product" << std::endl;
1487  }else{
1488  // trigger results before mask for BxInEvent -2 (E), -1 (F), 0 (L1A), 1, 2
1489  const TechnicalTriggerWord& technicalTriggerWordBeforeMaskBxM2 = gtReadoutRecord->technicalTriggerWord(-2);
1490  const TechnicalTriggerWord& technicalTriggerWordBeforeMaskBxM1 = gtReadoutRecord->technicalTriggerWord(-1);
1491  const TechnicalTriggerWord& technicalTriggerWordBeforeMaskBx0 = gtReadoutRecord->technicalTriggerWord();
1492  //const TechnicalTriggerWord& technicalTriggerWordBeforeMaskBxG = gtReadoutRecord->technicalTriggerWord(1);
1493  //const TechnicalTriggerWord& technicalTriggerWordBeforeMaskBxH = gtReadoutRecord->technicalTriggerWord(2);
1494  if (m_bitAlgTechTrig_ > -1 && !technicalTriggerWordBeforeMaskBx0.empty()) {
1495  techTriggerResultBx0 = technicalTriggerWordBeforeMaskBx0.at(m_bitAlgTechTrig_);
1496  if(techTriggerResultBx0!=0){
1497  techTriggerResultBxM2 = technicalTriggerWordBeforeMaskBxM2.at(m_bitAlgTechTrig_);
1498  techTriggerResultBxM1 = technicalTriggerWordBeforeMaskBxM1.at(m_bitAlgTechTrig_);
1499  }
1500  }
1501  }
1502 
1503  std::vector<bool>trigger_flag(4,false);
1504  if(techTriggerResultBx0 && techTriggerResultBxM2 && techTriggerResultBxM1){//current and previous two bunches filled
1505  trigger_flag[0]=true;
1506  }
1507  if(techTriggerResultBx0 && techTriggerResultBxM1){//current and previous bunch filled
1508  trigger_flag[1]=true; }
1509  if(techTriggerResultBx0 && !techTriggerResultBxM1){//current bunch filled, but previous bunch emtpy
1510  trigger_flag[2]=true;
1511  }
1512  if(techTriggerResultBx0 && !techTriggerResultBxM2 && !techTriggerResultBxM1){//current bunch filled, but previous two bunches emtpy
1513  trigger_flag[3]=true;
1514  }
1515  std::vector<bool>filter_decisions(8,false);//include all recommended filters, old filters in MiniAOD, and 2 new filters in testing phase
1516  if(!isMiniAODMet_ && !runcosmics_){//not checked for MiniAOD -> for miniaod decision filled as "triggerResults" bool
1517  edm::Handle<bool> HBHENoiseFilterResultHandle;
1518  iEvent.getByToken(hbheNoiseFilterResultToken_, HBHENoiseFilterResultHandle);
1519  if (!HBHENoiseFilterResultHandle.isValid()) {
1520  LogDebug("") << "METAnalyzer: Could not find HBHENoiseFilterResult" << std::endl;
1521  if (verbose_) std::cout << "METAnalyzer: Could not find HBHENoiseFilterResult" << std::endl;
1522  }
1523  filter_decisions[0]= *HBHENoiseFilterResultHandle;
1524  edm::Handle<bool> CSCTightHaloFilterResultHandle;
1525  iEvent.getByToken(CSCHaloResultToken_, CSCTightHaloFilterResultHandle);
1526  if (!CSCTightHaloFilterResultHandle.isValid()) {
1527  LogDebug("") << "METAnalyzer: Could not find CSCTightHaloFilterResultHandle" << std::endl;
1528  if (verbose_) std::cout << "METAnalyzer: CSCTightHaloFilterResultHandle" << std::endl;
1529  }
1530  filter_decisions[1]= *CSCTightHaloFilterResultHandle;
1531  edm::Handle<bool> eeBadScFilterResultHandle;
1532  iEvent.getByToken(eeBadScFilterToken_, eeBadScFilterResultHandle);
1533  if (!eeBadScFilterResultHandle.isValid()) {
1534  LogDebug("") << "METAnalyzer: Could not find eeBadScFilterResultHandle" << std::endl;
1535  if (verbose_) std::cout << "METAnalyzer: eeBadScFilterResultHandle" << std::endl;
1536  }
1537  filter_decisions[2]= *eeBadScFilterResultHandle;
1538  edm::Handle<bool> HBHENoiseIsoFilterResultHandle;
1539  iEvent.getByToken(hbheIsoNoiseFilterResultToken_, HBHENoiseIsoFilterResultHandle);
1540  if (!HBHENoiseIsoFilterResultHandle.isValid()) {
1541  LogDebug("") << "METAnalyzer: Could not find HBHENoiseIsoFilterResult" << std::endl;
1542  if (verbose_) std::cout << "METAnalyzer: Could not find HBHENoiseIsoFilterResult" << std::endl;
1543  }
1544  filter_decisions[3]= *HBHENoiseIsoFilterResultHandle;
1545  edm::Handle<bool> CSCTightHalo2015FilterResultHandle;
1546  iEvent.getByToken(CSCHalo2015ResultToken_, CSCTightHalo2015FilterResultHandle);
1547  if (!CSCTightHalo2015FilterResultHandle.isValid()) {
1548  LogDebug("") << "METAnalyzer: Could not find CSCTightHalo2015FilterResultHandle" << std::endl;
1549  if (verbose_) std::cout << "METAnalyzer: CSCTightHalo2015FilterResultHandle" << std::endl;
1550  }
1551  filter_decisions[4]= *CSCTightHalo2015FilterResultHandle;
1552  edm::Handle<bool> EcalDeadCellTriggerFilterResultHandle;
1553  iEvent.getByToken(EcalDeadCellTriggerToken_, EcalDeadCellTriggerFilterResultHandle);
1554  if (!EcalDeadCellTriggerFilterResultHandle.isValid()) {
1555  LogDebug("") << "METAnalyzer: Could not find EcalDeadCellTriggerFilterResultHandle" << std::endl;
1556  if (verbose_) std::cout << "METAnalyzer: EcalDeadCellTriggerFilterResultHandle" << std::endl;
1557  }
1558  filter_decisions[5]= *EcalDeadCellTriggerFilterResultHandle;
1559  edm::Handle<bool> EcalDeadCellBoundaryHandle;
1560  iEvent.getByToken(EcalDeadCellBoundaryToken_, EcalDeadCellBoundaryHandle);
1561  if (!EcalDeadCellBoundaryHandle.isValid()) {
1562  LogDebug("") << "METAnalyzer: Could not find EcalDeadCellBoundaryHandle" << std::endl;
1563  if (verbose_) std::cout << "METAnalyzer: EcalDeadCellBoundaryHandle" << std::endl;
1564  }
1565  filter_decisions[6]= *EcalDeadCellBoundaryHandle;
1566  edm::Handle<bool> HcalStripHaloFilterHandle;
1567  iEvent.getByToken(HcalStripHaloToken_, HcalStripHaloFilterHandle);
1568  if (!HcalStripHaloFilterHandle.isValid()) {
1569  LogDebug("") << "METAnalyzer: Could not find CSCTightHalo2015FilterResultHandle" << std::endl;
1570  if (verbose_) std::cout << "METAnalyzer: CSCTightHalo2015FilterResultHandle" << std::endl;
1571  }
1572  filter_decisions[7]= *HcalStripHaloFilterHandle;
1573  }else if (isMiniAODMet_) {
1574  //miniaodFilterIndex_ is only filled in dqmBeginRun if isMiniAODMet_ true
1575  edm::Handle<edm::TriggerResults> metFilterResults;
1576  iEvent.getByToken(METFilterMiniAODToken_, metFilterResults);
1577  if(metFilterResults.isValid()){
1578  if(miniaodFilterIndex_[0]!=-1){
1579  filter_decisions[0] = metFilterResults->accept(miniaodFilterIndex_[0]);
1580  }
1581  if(miniaodFilterIndex_[1]!=-1){
1582  filter_decisions[1] = metFilterResults->accept(miniaodFilterIndex_[1]);
1583  }
1584  if(miniaodFilterIndex_[2]!=-1){
1585  filter_decisions[2] = metFilterResults->accept(miniaodFilterIndex_[2]);
1586  }
1587  if(miniaodFilterIndex_[3]!=-1){
1588  filter_decisions[3] = metFilterResults->accept(miniaodFilterIndex_[3]);
1589  }
1590  if(miniaodFilterIndex_[4]!=-1){
1591  filter_decisions[4] = metFilterResults->accept(miniaodFilterIndex_[4]);
1592  }
1593  if(miniaodFilterIndex_[5]!=-1){
1594  filter_decisions[5] = metFilterResults->accept(miniaodFilterIndex_[5]);
1595  }
1596  if(miniaodFilterIndex_[6]!=-1){
1597  filter_decisions[6] = metFilterResults->accept(miniaodFilterIndex_[6]);
1598  }
1599  if(miniaodFilterIndex_[7]!=-1){
1600  filter_decisions[7] = metFilterResults->accept(miniaodFilterIndex_[7]);
1601  }
1602  }else{
1603  iEvent.getByToken(METFilterMiniAODToken2_, metFilterResults);
1604  if(metFilterResults.isValid()){
1605  if(miniaodFilterIndex_[0]!=-1){
1606  filter_decisions[0] = metFilterResults->accept(miniaodFilterIndex_[0]);
1607  }
1608  if(miniaodFilterIndex_[1]!=-1){
1609  filter_decisions[1] = metFilterResults->accept(miniaodFilterIndex_[1]);
1610  }
1611  if(miniaodFilterIndex_[2]!=-1){
1612  filter_decisions[2] = metFilterResults->accept(miniaodFilterIndex_[2]);
1613  }
1614  if(miniaodFilterIndex_[3]!=-1){
1615  filter_decisions[3] = metFilterResults->accept(miniaodFilterIndex_[3]);
1616  }
1617  if(miniaodFilterIndex_[4]!=-1){
1618  filter_decisions[4] = metFilterResults->accept(miniaodFilterIndex_[4]);
1619  }
1620  if(miniaodFilterIndex_[5]!=-1){
1621  filter_decisions[5] = metFilterResults->accept(miniaodFilterIndex_[5]);
1622  }
1623  if(miniaodFilterIndex_[6]!=-1){
1624  filter_decisions[6] = metFilterResults->accept(miniaodFilterIndex_[6]);
1625  }
1626  if(miniaodFilterIndex_[7]!=-1){
1627  filter_decisions[7] = metFilterResults->accept(miniaodFilterIndex_[7]);
1628  }
1629  }
1630  }
1631  }
1632  bool HBHENoiseFilterResultFlag=filter_decisions[0];//setup for RECO and MINIAOD
1633  // ==========================================================
1634  // HCAL Noise filter
1635  bool bHBHENoiseFilter = HBHENoiseFilterResultFlag;
1636 
1637  // DCS Filter
1638  bool bDCSFilter = (bypassAllDCSChecks_ || DCSFilter_->filter(iEvent, iSetup));
1639  // ==========================================================
1640  // Reconstructed MET Information - fill MonitorElements
1641  std::string DirName_old=DirName;
1642  for (std::vector<std::string>::const_iterator ic = folderNames_.begin();
1643  ic != folderNames_.end(); ic++){
1644  bool pass_selection = false;
1645  if ((*ic=="Uncleaned") &&(isCaloMet_ || bPrimaryVertex)){
1646  fillMESet(iEvent, DirName_old+"/"+*ic, *met,*patmet, *pfmet,*calomet,zCand, map_dijet_MEs,trigger_flag,filter_decisions);
1647  pass_selection =true;
1648  }
1649  //take two lines out for first check
1650  if ((*ic=="Cleaned") && bDCSFilter && bHBHENoiseFilter && bPrimaryVertex && bJetID){
1651  fillMESet(iEvent, DirName_old+"/"+*ic, *met,*patmet,*pfmet,*calomet,zCand,map_dijet_MEs,trigger_flag,filter_decisions);
1652  pass_selection=true;
1653  }
1654  if ((*ic=="DiJet" ) &&bDCSFilter&&bHBHENoiseFilter&& bPrimaryVertex&& bDiJetID){
1655  fillMESet(iEvent, DirName_old+"/"+*ic, *met,*patmet,*pfmet,*calomet,zCand,map_dijet_MEs,trigger_flag,filter_decisions);
1656  pass_selection=true;
1657  }
1658  if ((*ic=="ZJets" ) &&bDCSFilter&&bHBHENoiseFilter&& bPrimaryVertex&& bZJets){
1659  fillMESet(iEvent, DirName_old+"/"+*ic, *met,*patmet,*pfmet,*calomet,zCand,map_dijet_MEs,trigger_flag,filter_decisions);
1660  pass_selection=true;
1661  }
1662  if(pass_selection && isPFMet_){
1663  DirName=DirName_old+"/"+*ic;
1664  }
1665 
1666  }
1667 }
1668 
1669 
1670 // ***********************************************************
1672  const reco::MET& met, const pat::MET& patmet, const reco::PFMET& pfmet, const reco::CaloMET& calomet,const reco::Candidate::PolarLorentzVector& zCand,std::map<std::string,MonitorElement*>& map_of_MEs, std::vector<bool>techTriggerCase, std::vector<bool>METFilterDecision)
1673 {
1674  bool bLumiSecPlot=fill_met_high_level_histo;
1675  bool fillPFCandidatePlots=false;
1676  if (DirName.find("Cleaned")!=std::string::npos) {
1677  fillPFCandidatePlots=true;
1678  fillMonitorElement(iEvent, DirName, std::string(""), met, patmet, pfmet, calomet, zCand, map_of_MEs,bLumiSecPlot,fillPFCandidatePlots,techTriggerCase,METFilterDecision);
1679  for (unsigned int i = 0; i<triggerFolderLabels_.size(); i++) {
1680  fillPFCandidatePlots=false;
1681  if (triggerFolderDecisions_[i]){
1682  fillMonitorElement(iEvent, DirName, triggerFolderLabels_[i], met, patmet, pfmet, calomet, zCand, map_of_MEs,bLumiSecPlot,fillPFCandidatePlots,techTriggerCase,METFilterDecision);
1683  }
1684  }
1685  }else if (DirName.find("DiJet")!=std::string::npos) {
1686  fillMonitorElement(iEvent, DirName, std::string(""), met, patmet, pfmet, calomet, zCand, map_of_MEs,bLumiSecPlot,fillPFCandidatePlots,techTriggerCase,METFilterDecision);
1687  for (unsigned int i = 0; i<triggerFolderLabels_.size(); i++) {
1688  if (triggerFolderDecisions_[i]) fillMonitorElement(iEvent, DirName, triggerFolderLabels_[i], met, patmet, pfmet, calomet, zCand, map_of_MEs,bLumiSecPlot,fillPFCandidatePlots,techTriggerCase,METFilterDecision);
1689  }
1690  }else if (DirName.find("ZJets")!=std::string::npos) {
1691  fillMonitorElement(iEvent, DirName, std::string(""), met, patmet, pfmet, calomet, zCand, map_of_MEs,bLumiSecPlot,fillPFCandidatePlots,techTriggerCase,METFilterDecision);
1692  }else{
1693  fillMonitorElement(iEvent, DirName, std::string(""), met, patmet, pfmet, calomet, zCand, map_of_MEs,bLumiSecPlot,fillPFCandidatePlots,techTriggerCase,METFilterDecision);
1694  }
1695 
1696 
1697 }
1698 
1699 // ***********************************************************
1701  std::string subFolderName,
1702  const reco::MET& met,const pat::MET & patmet, const reco::PFMET & pfmet, const reco::CaloMET &calomet, const reco::Candidate::PolarLorentzVector& zCand,std::map<std::string,MonitorElement*>& map_of_MEs,bool bLumiSecPlot, bool fillPFCandidatePlots,std::vector<bool> techTriggerCase,std::vector<bool> METFilterDecision)
1703 {
1704  bool do_only_Z_histograms=false;
1705  if(DirName.find("ZJets")!=std::string::npos) {//do Z plots only
1706  do_only_Z_histograms=true;
1707  //\vec{p}_{T}^{Z}+vec{u}_{T}+\vec{MET}=0
1708 
1709  double u_x=-met.px()-zCand.Px();
1710  double u_y=-met.py()-zCand.Py();
1711 
1712  //protection for VERY special case where Z-Pt==0
1713  double u_par=0;
1714  double u_perp=sqrt(u_x*u_x + u_y*u_y);
1715  double e_Z_x=0;
1716  double e_Z_y=0;
1717  if(zCand.Pt()!=0){
1718  e_Z_x = zCand.Px()/zCand.Pt();
1719  e_Z_y = zCand.Py()/zCand.Pt();
1720  }
1721  u_par=u_x*e_Z_x+u_y*e_Z_y;
1722  u_perp= -e_Z_y * u_x + e_Z_x*u_y;
1723 
1724  meZJets_u_par = map_of_MEs[DirName+"/"+"u_parallel_Z_inc"]; if ( meZJets_u_par && meZJets_u_par->getRootObject()) meZJets_u_par ->Fill(u_par);
1725  if(zCand.Pt()<15){
1726  meZJets_u_par_ZPt_0_15 = map_of_MEs[DirName+"/"+"u_parallel_ZPt_0_15"]; if ( meZJets_u_par_ZPt_0_15 && meZJets_u_par_ZPt_0_15->getRootObject()) meZJets_u_par_ZPt_0_15 ->Fill(u_par);
1727  }else if(zCand.Pt()<30){
1728  meZJets_u_par_ZPt_15_30 = map_of_MEs[DirName+"/"+"u_parallel_ZPt_15_30"]; if ( meZJets_u_par_ZPt_15_30 && meZJets_u_par_ZPt_15_30->getRootObject()) meZJets_u_par_ZPt_15_30 ->Fill(u_par);
1729  }else if(zCand.Pt()<55){
1730  meZJets_u_par_ZPt_30_55 = map_of_MEs[DirName+"/"+"u_parallel_ZPt_30_55"]; if ( meZJets_u_par_ZPt_30_55 && meZJets_u_par_ZPt_30_55->getRootObject()) meZJets_u_par_ZPt_30_55 ->Fill(u_par);
1731  }else if(zCand.Pt()<75){
1732  meZJets_u_par_ZPt_55_75 = map_of_MEs[DirName+"/"+"u_parallel_ZPt_55_75"]; if ( meZJets_u_par_ZPt_55_75 && meZJets_u_par_ZPt_55_75->getRootObject()) meZJets_u_par_ZPt_55_75 ->Fill(u_par);
1733  }else if(zCand.Pt()<150){
1734  meZJets_u_par_ZPt_75_150 = map_of_MEs[DirName+"/"+"u_parallel_ZPt_75_150"]; if ( meZJets_u_par_ZPt_75_150 && meZJets_u_par_ZPt_75_150->getRootObject()) meZJets_u_par_ZPt_75_150 ->Fill(u_par);
1735  }else if(zCand.Pt()<290){
1736  meZJets_u_par_ZPt_150_290 = map_of_MEs[DirName+"/"+"u_parallel_ZPt_150_290"]; if ( meZJets_u_par_ZPt_150_290 && meZJets_u_par_ZPt_150_290->getRootObject()) meZJets_u_par_ZPt_150_290 ->Fill(u_par);
1737  }else{
1738  meZJets_u_par_ZPt_290 = map_of_MEs[DirName+"/"+"u_parallel_ZPt_290"]; if ( meZJets_u_par_ZPt_290 && meZJets_u_par_ZPt_290->getRootObject()) meZJets_u_par_ZPt_290 ->Fill(u_par);
1739  }
1740 
1741  meZJets_u_perp = map_of_MEs[DirName+"/"+"u_perp_Z_inc"]; if ( meZJets_u_perp && meZJets_u_perp->getRootObject()) meZJets_u_perp ->Fill(u_perp);
1742  if(zCand.Pt()<15){
1743  meZJets_u_perp_ZPt_0_15 = map_of_MEs[DirName+"/"+"u_perp_ZPt_0_15"]; if ( meZJets_u_perp_ZPt_0_15 && meZJets_u_perp_ZPt_0_15->getRootObject()) meZJets_u_perp_ZPt_0_15 ->Fill(u_perp);
1744  }else if(zCand.Pt()<30){
1745  meZJets_u_perp_ZPt_15_30 = map_of_MEs[DirName+"/"+"u_perp_ZPt_15_30"]; if ( meZJets_u_perp_ZPt_15_30 && meZJets_u_perp_ZPt_15_30->getRootObject()) meZJets_u_perp_ZPt_15_30 ->Fill(u_perp);
1746  }else if(zCand.Pt()<55){
1747  meZJets_u_perp_ZPt_30_55 = map_of_MEs[DirName+"/"+"u_perp_ZPt_30_55"]; if ( meZJets_u_perp_ZPt_30_55 && meZJets_u_perp_ZPt_30_55->getRootObject()) meZJets_u_perp_ZPt_30_55 ->Fill(u_perp);
1748  }else if(zCand.Pt()<75){
1749  meZJets_u_perp_ZPt_55_75 = map_of_MEs[DirName+"/"+"u_perp_ZPt_55_75"]; if ( meZJets_u_perp_ZPt_55_75 && meZJets_u_perp_ZPt_55_75->getRootObject()) meZJets_u_perp_ZPt_55_75 ->Fill(u_perp);
1750  }else if(zCand.Pt()<150){
1751  meZJets_u_perp_ZPt_75_150 = map_of_MEs[DirName+"/"+"u_perp_ZPt_75_150"]; if ( meZJets_u_perp_ZPt_75_150 && meZJets_u_perp_ZPt_75_150->getRootObject()) meZJets_u_perp_ZPt_75_150 ->Fill(u_perp);
1752  }else if(zCand.Pt()<290){
1753  meZJets_u_perp_ZPt_150_290 = map_of_MEs[DirName+"/"+"u_perp_ZPt_150_290"]; if ( meZJets_u_perp_ZPt_150_290 && meZJets_u_perp_ZPt_150_290->getRootObject()) meZJets_u_perp_ZPt_150_290 ->Fill(u_perp);
1754  }else{
1755  meZJets_u_perp_ZPt_290 = map_of_MEs[DirName+"/"+"u_perp_ZPt_290"]; if ( meZJets_u_perp_ZPt_290 && meZJets_u_perp_ZPt_290->getRootObject()) meZJets_u_perp_ZPt_290 ->Fill(u_perp);
1756  }
1757 
1758 
1759  }
1760  if(!do_only_Z_histograms){
1761  // Reconstructed MET Information
1762  double SumET = met.sumEt();
1763  double METSig = met.mEtSig();
1764  //double Ez = met.e_longitudinal();
1765  double MET = met.pt();
1766  double MEx = met.px();
1767  double MEy = met.py();
1768  double METPhi = met.phi();
1769  //
1770  int myLuminosityBlock;
1771  myLuminosityBlock = iEvent.luminosityBlock();
1772  //
1773 
1774  if (subFolderName!=""){
1775  DirName = DirName +"/"+subFolderName;
1776  }
1777 
1778  hTrigger = map_of_MEs[DirName+"/triggerResults"];
1779  if (hTrigger && hTrigger->getRootObject()) {
1780  for (unsigned int i = 0; i<allTriggerDecisions_.size();i++){
1781  if(i<(unsigned int)hTrigger->getNbinsX()){
1782  hTrigger->Fill(i + .5, allTriggerDecisions_[i]);
1783  }
1784  }
1785  }
1786 
1787 
1788  hMEx = map_of_MEs[DirName+"/"+"MEx"]; if (hMEx && hMEx->getRootObject()) hMEx ->Fill(MEx);
1789  hMEy = map_of_MEs[DirName+"/"+"MEy"]; if (hMEy && hMEy->getRootObject()) hMEy ->Fill(MEy);
1790  hMET = map_of_MEs[DirName+"/"+"MET"]; if (hMET && hMET->getRootObject()) hMET ->Fill(MET);
1791  hMET_2 = map_of_MEs[DirName+"/"+"MET_2"]; if (hMET_2 && hMET_2->getRootObject()) hMET_2 ->Fill(MET);
1792 
1793  //hMET_HBHENoiseFilter = ibooker.book1D("MET_HBHENoiseFilter", "MET_HBHENoiseFiltered", 200, 0, 1000);
1794  //hMET_CSCTightHaloFilter = ibooker.book1D("MET_CSCTightHaloFilter", "MET_CSCTightHaloFiltered", 200, 0, 1000);
1795  //hMET_eeBadScFilter = ibooker.book1D("MET_eeBadScFilter", "MET_eeBadScFiltered", 200, 0, 1000);
1796  //hMET_HBHEIsoNoiseFilter = ibooker.book1D("MET_HBHEIsoNoiseFilter", "MET_HBHEIsoNoiseFiltered", 200, 0, 1000);
1797  //hMET_CSCTightHalo2015Filter = ibooker.book1D("MET_CSCTightHalo2015Filter", "MET_CSCTightHalo2015Filtered", 200, 0, 1000);
1798  //hMET_EcalDeadCellTriggerFilter = ibooker.book1D("MET_EcalDeadCellTriggerFilter", "MET_EcalDeadCellTriggerFiltered", 200, 0, 1000);
1799  //hMET_EcalDeadCellBoundaryFilter = ibooker.book1D("MET_EcalDeadCellBoundaryFilter", "MET_EcalDeadCellBoundaryFiltered", 200, 0, 1000);
1800  //hMET_HcalStripHaloFilter = ibooker.book1D("MET_HcalStripHaloFilter", "MET_HcalStripHaloFiltered", 200, 0, 1000);
1801 
1802 
1803  bool HBHENoiseFilterResult=false;
1804  bool CSCTightHaloFilterResult=false;
1805  bool eeBadScFilterResult=false;
1806  bool HBHEIsoNoiseFilterResult=false;
1807  bool CSCTightHalo2015FilterResult=false;
1808  bool EcalDeadCellTriggerFilterResult=false;
1809  bool EcalDeadCellBoundaryFilterResult=false;
1810  bool HcalStripHaloFilterResult=false;
1811  HBHENoiseFilterResult = METFilterDecision[0];
1812  if(HBHENoiseFilterResult){
1813  hMET_HBHENoiseFilter = map_of_MEs[DirName+"/"+"MET_HBHENoiseFilter"]; if (hMET_HBHENoiseFilter && hMET_HBHENoiseFilter->getRootObject()) hMET_HBHENoiseFilter ->Fill(MET);
1814  }
1815  CSCTightHaloFilterResult = METFilterDecision[1];
1816  if(CSCTightHaloFilterResult){
1817  hMET_CSCTightHaloFilter = map_of_MEs[DirName+"/"+"MET_CSCTightHaloFilter"]; if (hMET_CSCTightHaloFilter && hMET_CSCTightHaloFilter->getRootObject()) hMET_CSCTightHaloFilter ->Fill(MET);
1818  }
1819  eeBadScFilterResult = METFilterDecision[2];
1820  if(eeBadScFilterResult){
1821  hMET_eeBadScFilter = map_of_MEs[DirName+"/"+"MET_eeBadScFilter"]; if (hMET_eeBadScFilter && hMET_eeBadScFilter->getRootObject()) hMET_eeBadScFilter ->Fill(MET);
1822  }
1823  HBHEIsoNoiseFilterResult = METFilterDecision[3];
1824  if(HBHEIsoNoiseFilterResult){
1825  hMET_HBHEIsoNoiseFilter = map_of_MEs[DirName+"/"+"MET_HBHEIsoNoiseFilter"]; if (hMET_HBHEIsoNoiseFilter && hMET_HBHEIsoNoiseFilter->getRootObject()) hMET_HBHEIsoNoiseFilter ->Fill(MET);
1826  }
1827  CSCTightHalo2015FilterResult = METFilterDecision[4];
1828  if(CSCTightHalo2015FilterResult){
1829  hMET_CSCTightHalo2015Filter = map_of_MEs[DirName+"/"+"MET_CSCTightHalo2015Filter"]; if (hMET_CSCTightHalo2015Filter && hMET_CSCTightHalo2015Filter->getRootObject()) hMET_CSCTightHalo2015Filter ->Fill(MET);
1830  }
1831  EcalDeadCellTriggerFilterResult = METFilterDecision[5];
1832  if(EcalDeadCellTriggerFilterResult){
1833  hMET_EcalDeadCellTriggerFilter = map_of_MEs[DirName+"/"+"MET_EcalDeadCellTriggerFilter"]; if (hMET_EcalDeadCellTriggerFilter && hMET_EcalDeadCellTriggerFilter->getRootObject()) hMET_EcalDeadCellTriggerFilter ->Fill(MET);
1834  }
1835  EcalDeadCellBoundaryFilterResult = METFilterDecision[6];
1836  if(EcalDeadCellBoundaryFilterResult){
1837  hMET_EcalDeadCellBoundaryFilter = map_of_MEs[DirName+"/"+"MET_EcalDeadCellBoundaryFilter"]; if (hMET_EcalDeadCellBoundaryFilter && hMET_EcalDeadCellBoundaryFilter->getRootObject()) hMET_EcalDeadCellBoundaryFilter ->Fill(MET);
1838  }
1839  HcalStripHaloFilterResult = METFilterDecision[7];
1840  if(HcalStripHaloFilterResult){
1841  hMET_HcalStripHaloFilter = map_of_MEs[DirName+"/"+"MET_HcalStripHaloFilter"]; if (hMET_HcalStripHaloFilter && hMET_HcalStripHaloFilter->getRootObject()) hMET_HcalStripHaloFilter ->Fill(MET);
1842  }
1843  hMETPhi = map_of_MEs[DirName+"/"+"METPhi"]; if (hMETPhi && hMETPhi->getRootObject()) hMETPhi ->Fill(METPhi);
1844  hSumET = map_of_MEs[DirName+"/"+"SumET"]; if (hSumET && hSumET->getRootObject()) hSumET ->Fill(SumET);
1845  hMETSig = map_of_MEs[DirName+"/"+"METSig"]; if (hMETSig && hMETSig->getRootObject()) hMETSig ->Fill(METSig);
1846  hMET_logx = map_of_MEs[DirName+"/"+"MET_logx"]; if (hMET_logx && hMET_logx->getRootObject()) hMET_logx->Fill(log10(MET));
1847  hSumET_logx = map_of_MEs[DirName+"/"+"SumET_logx"]; if (hSumET_logx && hSumET_logx->getRootObject()) hSumET_logx->Fill(log10(SumET));
1848 
1849  // Fill NPV profiles
1850  //--------------------------------------------------------------------------
1851  meMEx_profile = map_of_MEs[DirName + "/MEx_profile"];
1852  meMEy_profile = map_of_MEs[DirName + "/MEy_profile"];
1853  meMET_profile = map_of_MEs[DirName + "/MET_profile"];
1854  meSumET_profile = map_of_MEs[DirName + "/SumET_profile"];
1855 
1856  if (meMEx_profile && meMEx_profile ->getRootObject()) meMEx_profile ->Fill(numPV_, MEx);
1857  if (meMEy_profile && meMEy_profile ->getRootObject()) meMEy_profile ->Fill(numPV_, MEy);
1858  if (meMET_profile && meMET_profile ->getRootObject()) meMET_profile ->Fill(numPV_, MET);
1859  if (meSumET_profile && meSumET_profile->getRootObject()) meSumET_profile->Fill(numPV_, SumET);
1860 
1861  if(isCaloMet_){
1862  //const reco::CaloMETCollection *calometcol = calometcoll.product();
1863  //const reco::CaloMET *calomet;
1864  //calomet = &(calometcol->front());
1865 
1866  double caloEtFractionHadronic = calomet.etFractionHadronic();
1867  double caloEmEtFraction = calomet.emEtFraction();
1868 
1869  double caloHadEtInHB = calomet.hadEtInHB();
1870  double caloHadEtInHO = calomet.hadEtInHO();
1871  double caloHadEtInHE = calomet.hadEtInHE();
1872  double caloHadEtInHF = calomet.hadEtInHF();
1873  double caloEmEtInEB = calomet.emEtInEB();
1874  double caloEmEtInEE = calomet.emEtInEE();
1875  double caloEmEtInHF = calomet.emEtInHF();
1876 
1877  hCaloHadEtInHB = map_of_MEs[DirName+"/"+"CaloHadEtInHB"]; if (hCaloHadEtInHB && hCaloHadEtInHB->getRootObject()) hCaloHadEtInHB->Fill(caloHadEtInHB);
1878  hCaloHadEtInHO = map_of_MEs[DirName+"/"+"CaloHadEtInHO"]; if (hCaloHadEtInHO && hCaloHadEtInHO->getRootObject()) hCaloHadEtInHO->Fill(caloHadEtInHO);
1879  hCaloHadEtInHE = map_of_MEs[DirName+"/"+"CaloHadEtInHE"]; if (hCaloHadEtInHE && hCaloHadEtInHE->getRootObject()) hCaloHadEtInHE->Fill(caloHadEtInHE);
1880  hCaloHadEtInHF = map_of_MEs[DirName+"/"+"CaloHadEtInHF"]; if (hCaloHadEtInHF && hCaloHadEtInHF->getRootObject()) hCaloHadEtInHF->Fill(caloHadEtInHF);
1881  hCaloEmEtInEB = map_of_MEs[DirName+"/"+"CaloEmEtInEB"]; if (hCaloEmEtInEB && hCaloEmEtInEB->getRootObject()) hCaloEmEtInEB->Fill(caloEmEtInEB);
1882  hCaloEmEtInEE = map_of_MEs[DirName+"/"+"CaloEmEtInEE"]; if (hCaloEmEtInEE && hCaloEmEtInEE->getRootObject()) hCaloEmEtInEE->Fill(caloEmEtInEE);
1883  hCaloEmEtInHF = map_of_MEs[DirName+"/"+"CaloEmEtInHF"]; if (hCaloEmEtInHF && hCaloEmEtInHF->getRootObject()) hCaloEmEtInHF->Fill(caloEmEtInHF);
1884 
1885  hCaloMETPhi020 = map_of_MEs[DirName+"/"+"CaloMETPhi020"]; if (MET> 20. && hCaloMETPhi020 && hCaloMETPhi020->getRootObject()) { hCaloMETPhi020->Fill(METPhi);}
1886 
1887 
1888  hCaloEtFractionHadronic = map_of_MEs[DirName+"/"+"CaloEtFractionHadronic"]; if (hCaloEtFractionHadronic && hCaloEtFractionHadronic->getRootObject()) hCaloEtFractionHadronic->Fill(caloEtFractionHadronic);
1889  hCaloEmEtFraction = map_of_MEs[DirName+"/"+"CaloEmEtFraction"]; if (hCaloEmEtFraction && hCaloEmEtFraction->getRootObject()) hCaloEmEtFraction->Fill(caloEmEtFraction);
1890  hCaloEmEtFraction020 = map_of_MEs[DirName+"/"+"CaloEmEtFraction020"]; if (MET> 20. && hCaloEmEtFraction020 && hCaloEmEtFraction020->getRootObject()) hCaloEmEtFraction020->Fill(caloEmEtFraction);
1891  }
1892  if(isPFMet_){
1893 
1894  if(fillPFCandidatePlots && fillCandidateMap_histos){
1895  for (unsigned int i=0;i<countsPFCand_.size();i++) {
1896  countsPFCand_[i]=0;
1897  MExPFCand_[i]=0.;
1898  MEyPFCand_[i]=0.;
1899  }
1900 
1901  // typedef std::vector<reco::PFCandidate> pfCand;
1903  iEvent.getByToken(pflowToken_, particleFlow);
1904 
1905  float pt_sum_CHF_Barrel=0;
1906  float pt_sum_CHF_Endcap_plus=0;
1907  float pt_sum_CHF_Endcap_minus=0;
1908  float pt_sum_NHF_Barrel=0;
1909  float pt_sum_NHF_Endcap_plus=0;
1910  float pt_sum_NHF_Endcap_minus=0;
1911  float pt_sum_PhF_Barrel=0;
1912  float pt_sum_PhF_Endcap_plus=0;
1913  float pt_sum_PhF_Endcap_minus=0;
1914  float pt_sum_HFH_plus=0;
1915  float pt_sum_HFH_minus=0;
1916  float pt_sum_HFE_plus=0;
1917  float pt_sum_HFE_minus=0;
1918 
1919  float px_chargedHadronsBarrel=0;
1920  float py_chargedHadronsBarrel=0;
1921  float px_chargedHadronsEndcapPlus=0;
1922  float py_chargedHadronsEndcapPlus=0;
1923  float px_chargedHadronsEndcapMinus=0;
1924  float py_chargedHadronsEndcapMinus=0;
1925  float px_neutralHadronsBarrel=0;
1926  float py_neutralHadronsBarrel=0;
1927  float px_neutralHadronsEndcapPlus=0;
1928  float py_neutralHadronsEndcapPlus=0;
1929  float px_neutralHadronsEndcapMinus=0;
1930  float py_neutralHadronsEndcapMinus=0;
1931  float px_PhotonsBarrel=0;
1932  float py_PhotonsBarrel=0;
1933  float px_PhotonsEndcapPlus=0;
1934  float py_PhotonsEndcapPlus=0;
1935  float px_PhotonsEndcapMinus=0;
1936  float py_PhotonsEndcapMinus=0;
1937  float px_HFHadronsPlus=0;
1938  float py_HFHadronsPlus=0;
1939  float px_HFHadronsMinus=0;
1940  float py_HFHadronsMinus=0;
1941  float px_HFEGammasPlus=0;
1942  float py_HFEGammasPlus=0;
1943  float px_HFEGammasMinus=0;
1944  float py_HFEGammasMinus=0;
1945  for (unsigned int i = 0; i < particleFlow->size(); i++) {
1946  const reco::PFCandidate& c = particleFlow->at(i);
1947  if(c.particleId()==1){//charged hadrons
1948  //endcap minus
1949  if(c.eta()>(-3.0)&& c.eta()<(-1.392)){
1950  px_chargedHadronsEndcapMinus-=c.px();
1951  py_chargedHadronsEndcapMinus-=c.py();
1952  pt_sum_CHF_Endcap_minus+=c.et();
1953  }else if(c.eta()>=(-1.392)&& c.eta()<=1.392){//barrel
1954  px_chargedHadronsBarrel-=c.px();
1955  py_chargedHadronsBarrel-=c.py();
1956  pt_sum_CHF_Barrel+=c.et();
1957  }else if(c.eta()>1.392 && c.eta()<3.0){//endcap plus
1958  px_chargedHadronsEndcapPlus-=c.px();
1959  py_chargedHadronsEndcapPlus-=c.py();
1960  pt_sum_CHF_Endcap_plus+=c.et();
1961  }
1962  }
1963  if(c.particleId()==5){//neutral hadrons
1964  //endcap minus
1965  if(c.eta()>(-3.0)&& c.eta()<(-1.392)){
1966  px_neutralHadronsEndcapMinus-=c.px();
1967  py_neutralHadronsEndcapMinus-=c.py();
1968  pt_sum_NHF_Endcap_minus+=c.et();
1969  }else if(c.eta()>=(-1.392)&& c.eta()<=1.392){
1970  px_neutralHadronsBarrel-=c.px();
1971  py_neutralHadronsBarrel-=c.py();
1972  pt_sum_NHF_Barrel+=c.et();
1973  }else if(c.eta()>1.392 && c.eta()<3.0){
1974  px_neutralHadronsEndcapPlus-=c.px();
1975  py_neutralHadronsEndcapPlus-=c.py();
1976  pt_sum_NHF_Endcap_plus+=c.et();
1977  }
1978  }
1979  if(c.particleId()==4){//photons
1980  //endcap minus
1981  if(c.eta()>(-3.0)&& c.eta()<(-1.479)){
1982  px_PhotonsEndcapMinus-=c.px();
1983  py_PhotonsEndcapMinus-=c.py();
1984  pt_sum_PhF_Endcap_minus+=c.et();
1985  }else if(c.eta()>=(-1.479)&& c.eta()<=1.479){
1986  px_PhotonsBarrel-=c.px();
1987  py_PhotonsBarrel-=c.py();
1988  pt_sum_PhF_Barrel+=c.et();
1989  }else if(c.eta()>1.479 && c.eta()<3.0){
1990  px_PhotonsEndcapPlus-=c.px();
1991  py_PhotonsEndcapPlus-=c.py();
1992  pt_sum_PhF_Endcap_plus+=c.et();
1993  }
1994  }
1995  if(c.particleId()==6){//HFHadrons
1996  //forward minus
1997  if(c.eta()>(-5.20)&& c.eta()<-2.901376){
1998  pt_sum_HFH_minus+=c.et();
1999  px_HFHadronsMinus-=c.px();
2000  py_HFHadronsMinus-=c.py();
2001  }else if(c.eta()>2.901376 && c.eta()<5.20){//forward plus
2002  px_HFHadronsPlus-=c.px();
2003  py_HFHadronsPlus-=c.py();
2004  pt_sum_HFH_plus+=c.et();
2005  }
2006  }
2007  if(c.particleId()==7){//HFEGammas
2008  //forward minus
2009  if(c.eta()>(-5.20)&& c.eta()<-2.901376){
2010  pt_sum_HFE_minus+=c.et();
2011  px_HFEGammasMinus-=c.px();
2012  py_HFEGammasMinus-=c.py();
2013  }else if(c.eta()>2.901376 && c.eta()<5.20){//forward plus
2014  px_HFEGammasPlus-=c.px();
2015  py_HFEGammasPlus-=c.py();
2016  pt_sum_HFE_plus+=c.et();
2017  }
2018  }
2019  for (unsigned int j=0; j<typePFCand_.size(); j++) {
2020  if (c.particleId()==typePFCand_[j]) {
2021  //second check for endcap, if inside barrel Max and Min symmetric around 0
2022  if ( ((c.eta()>etaMinPFCand_[j]) && (c.eta()<etaMaxPFCand_[j])) || ((c.eta()> (-etaMaxPFCand_[j])) && (c.eta()< (-etaMinPFCand_[j]))) ){
2023  countsPFCand_[j]+=1;
2024  MExPFCand_[j]-=c.px();
2025  MEyPFCand_[j]-=c.py();
2026  }
2027  }
2028  }
2029  }
2030 
2031  for (unsigned int j=0; j<countsPFCand_.size(); j++) {
2032  profilePFCand_x_[j] = map_of_MEs[DirName + "/"+profilePFCand_x_name_[j]];
2033  if(profilePFCand_x_[j] && profilePFCand_x_[j]->getRootObject()) profilePFCand_x_[j]->Fill(countsPFCand_[j], MExPFCand_[j]);
2034  profilePFCand_y_[j] = map_of_MEs[DirName + "/"+profilePFCand_y_name_[j]];
2035  if(profilePFCand_y_[j] && profilePFCand_y_[j]->getRootObject()) profilePFCand_y_[j]->Fill(countsPFCand_[j], MEyPFCand_[j]);
2036  }
2037  meCHF_Barrel=map_of_MEs[DirName+"/"+"PfChargedHadronEtFractionBarrel"]; if(meCHF_Barrel && meCHF_Barrel->getRootObject()) meCHF_Barrel->Fill(pt_sum_CHF_Barrel/pfmet.sumEt());
2038  meCHF_EndcapPlus=map_of_MEs[DirName+"/"+"PfChargedHadronEtFractionEndcapPlus"]; if(meCHF_EndcapPlus && meCHF_EndcapPlus->getRootObject()) meCHF_EndcapPlus->Fill(pt_sum_CHF_Endcap_plus/pfmet.sumEt());
2039  meCHF_EndcapMinus=map_of_MEs[DirName+"/"+"PfChargedHadronEtFractionEndcapMinus"]; if(meCHF_EndcapMinus && meCHF_EndcapMinus->getRootObject()) meCHF_EndcapMinus->Fill(pt_sum_CHF_Endcap_minus/pfmet.sumEt());
2040  meNHF_Barrel=map_of_MEs[DirName+"/"+"PfNeutralHadronEtFractionBarrel"]; if(meNHF_Barrel && meNHF_Barrel->getRootObject()) meNHF_Barrel->Fill(pt_sum_NHF_Barrel/pfmet.sumEt());
2041  meNHF_EndcapPlus=map_of_MEs[DirName+"/"+"PfNeutralHadronEtFractionEndcapPlus"]; if(meNHF_EndcapPlus && meNHF_EndcapPlus->getRootObject()) meNHF_EndcapPlus->Fill(pt_sum_NHF_Endcap_plus/pfmet.sumEt());
2042  meNHF_EndcapMinus=map_of_MEs[DirName+"/"+"PfNeutralHadronEtFractionEndcapMinus"]; if(meNHF_EndcapMinus && meNHF_EndcapMinus->getRootObject()) meNHF_EndcapMinus->Fill(pt_sum_NHF_Endcap_minus/pfmet.sumEt());
2043  mePhF_Barrel=map_of_MEs[DirName+"/"+"PfPhotonEtFractionBarrel"]; if(mePhF_Barrel && mePhF_Barrel->getRootObject()) mePhF_Barrel->Fill(pt_sum_PhF_Barrel/pfmet.sumEt());
2044  mePhF_EndcapPlus=map_of_MEs[DirName+"/"+"PfPhotonEtFractionEndcapPlus"]; if(mePhF_EndcapPlus && mePhF_EndcapPlus->getRootObject()) mePhF_EndcapPlus->Fill(pt_sum_PhF_Endcap_plus/pfmet.sumEt());
2045  mePhF_EndcapMinus=map_of_MEs[DirName+"/"+"PfPhotonEtFractionEndcapMinus"]; if(mePhF_EndcapMinus && mePhF_EndcapMinus->getRootObject()) mePhF_EndcapMinus->Fill(pt_sum_PhF_Endcap_minus/pfmet.sumEt());
2046  meHFHadF_Plus=map_of_MEs[DirName+"/"+"PfHFHadronEtFractionPlus"]; if(meHFHadF_Plus && meHFHadF_Plus->getRootObject()) meHFHadF_Plus->Fill(pt_sum_HFH_plus/pfmet.sumEt());
2047  meHFHadF_Minus=map_of_MEs[DirName+"/"+"PfHFHadronEtFractionMinus"]; if(meHFHadF_Minus && meHFHadF_Minus->getRootObject()) meHFHadF_Minus->Fill(pt_sum_HFH_minus/pfmet.sumEt());
2048  meHFEMF_Plus=map_of_MEs[DirName+"/"+"PfHFEMEtFractionPlus"]; if(meHFEMF_Plus && meHFEMF_Plus->getRootObject()) meHFEMF_Plus->Fill(pt_sum_HFE_plus/pfmet.sumEt());
2049  meHFEMF_Minus=map_of_MEs[DirName+"/"+"PfHFEMEtFractionMinus"]; if(meHFEMF_Minus && meHFEMF_Minus->getRootObject()) meHFEMF_Minus->Fill(pt_sum_HFE_minus/pfmet.sumEt());
2050  //sanity check if we have any type of the respective species in the events
2051  //else don't fill phi, as else we have a results of a biased peak at 0
2052  //if pt_sum of species part is 0, obviously that would be the case
2053  if(pt_sum_CHF_Barrel){
2054  meMETPhiChargedHadronsBarrel = map_of_MEs[DirName+"/"+"METPhiChargedHadronsBarrel"];if(meMETPhiChargedHadronsBarrel && meMETPhiChargedHadronsBarrel ->getRootObject())meMETPhiChargedHadronsBarrel->Fill(atan2(py_chargedHadronsBarrel,px_chargedHadronsBarrel));
2055  }
2056  if(pt_sum_CHF_Endcap_plus){
2057  meMETPhiChargedHadronsEndcapPlus = map_of_MEs[DirName+"/"+"METPhiChargedHadronsEndcapPlus"];if(meMETPhiChargedHadronsEndcapPlus && meMETPhiChargedHadronsEndcapPlus ->getRootObject())meMETPhiChargedHadronsEndcapPlus->Fill(atan2(py_chargedHadronsEndcapPlus,px_chargedHadronsEndcapPlus));
2058  }
2059  if(pt_sum_CHF_Endcap_minus){
2060  meMETPhiChargedHadronsEndcapMinus = map_of_MEs[DirName+"/"+"METPhiChargedHadronsEndcapMinus"];if(meMETPhiChargedHadronsEndcapMinus && meMETPhiChargedHadronsEndcapMinus ->getRootObject())meMETPhiChargedHadronsEndcapMinus->Fill(atan2(py_chargedHadronsEndcapMinus,px_chargedHadronsEndcapMinus));
2061  }
2062  if(pt_sum_NHF_Barrel){
2063  meMETPhiNeutralHadronsBarrel = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsBarrel"];if(meMETPhiNeutralHadronsBarrel && meMETPhiNeutralHadronsBarrel ->getRootObject())meMETPhiNeutralHadronsBarrel->Fill(atan2(py_neutralHadronsBarrel,px_neutralHadronsBarrel));
2064  }
2065  if(pt_sum_NHF_Endcap_plus){
2066  meMETPhiNeutralHadronsEndcapPlus = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsEndcapPlus"];if(meMETPhiNeutralHadronsEndcapPlus && meMETPhiNeutralHadronsEndcapPlus ->getRootObject())meMETPhiNeutralHadronsEndcapPlus->Fill(atan2(py_neutralHadronsEndcapPlus,px_neutralHadronsEndcapPlus));
2067  }
2068  if(pt_sum_NHF_Endcap_minus){
2069  meMETPhiNeutralHadronsEndcapMinus = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsEndcapMinus"];if(meMETPhiNeutralHadronsEndcapMinus && meMETPhiNeutralHadronsEndcapMinus ->getRootObject())meMETPhiNeutralHadronsEndcapMinus->Fill(atan2(py_neutralHadronsEndcapMinus,px_neutralHadronsEndcapMinus));
2070  }
2071  if(pt_sum_PhF_Barrel){
2072  meMETPhiPhotonsBarrel = map_of_MEs[DirName+"/"+"METPhiPhotonsBarrel"];if(meMETPhiPhotonsBarrel && meMETPhiPhotonsBarrel ->getRootObject())meMETPhiPhotonsBarrel->Fill(atan2(py_PhotonsBarrel,px_PhotonsBarrel));
2073  }
2074  if(pt_sum_PhF_Endcap_plus){
2075  meMETPhiPhotonsEndcapPlus = map_of_MEs[DirName+"/"+"METPhiPhotonsEndcapPlus"];if(meMETPhiPhotonsEndcapPlus && meMETPhiPhotonsEndcapPlus ->getRootObject())meMETPhiPhotonsEndcapPlus->Fill(atan2(py_PhotonsEndcapPlus,px_PhotonsEndcapPlus));
2076  }
2077  if(pt_sum_PhF_Endcap_minus){
2078  meMETPhiPhotonsEndcapMinus = map_of_MEs[DirName+"/"+"METPhiPhotonsEndcapMinus"];if(meMETPhiPhotonsEndcapMinus && meMETPhiPhotonsEndcapMinus ->getRootObject())meMETPhiPhotonsEndcapMinus->Fill(atan2(py_PhotonsEndcapMinus,px_PhotonsEndcapMinus));
2079  }
2080  if(pt_sum_HFH_plus){
2081  meMETPhiHFHadronsPlus = map_of_MEs[DirName+"/"+"METPhiHFHadronsPlus"];if(meMETPhiHFHadronsPlus && meMETPhiHFHadronsPlus ->getRootObject())meMETPhiHFHadronsPlus->Fill(atan2(py_HFHadronsPlus,px_HFHadronsPlus));
2082  }
2083  if(pt_sum_HFH_minus){
2084  meMETPhiHFHadronsMinus = map_of_MEs[DirName+"/"+"METPhiHFHadronsMinus"];if(meMETPhiHFHadronsMinus && meMETPhiHFHadronsMinus ->getRootObject())meMETPhiHFHadronsMinus->Fill(atan2(py_HFHadronsMinus,px_HFHadronsMinus));
2085  }
2086  if(pt_sum_HFE_plus){
2087  meMETPhiHFEGammasPlus = map_of_MEs[DirName+"/"+"METPhiHFEGammasPlus"];if(meMETPhiHFEGammasPlus && meMETPhiHFEGammasPlus ->getRootObject())meMETPhiHFEGammasPlus->Fill(atan2(py_HFEGammasPlus,px_HFEGammasPlus));
2088  }
2089  if(pt_sum_HFE_minus){
2090  meMETPhiHFEGammasMinus = map_of_MEs[DirName+"/"+"METPhiHFEGammasMinus"];if(meMETPhiHFEGammasMinus && meMETPhiHFEGammasMinus ->getRootObject())meMETPhiHFEGammasMinus->Fill(atan2(py_HFEGammasMinus,px_HFEGammasMinus));
2091  }
2092  //fill other diagnostic plots based on trigger decision
2093  /*if(techTriggerCase[0]){//techTriggerResultBx0 && techTriggerResultBxM2 && techTriggerResultBxM1 -> both previous bunches filled
2094  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());
2095  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());
2096  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());
2097  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());
2098  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());
2099  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());
2100  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());
2101  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());
2102  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());
2103  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());
2104  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());
2105  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());
2106  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());
2107  mePhotonEtFraction_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"PfPhotonEtFraction_BXm2BXm1Filled"]; if ( mePhotonEtFraction_BXm2BXm1Filled && mePhotonEtFraction_BXm2BXm1Filled ->getRootObject()) mePhotonEtFraction_BXm2BXm1Filled ->Fill(pfmet.photonEtFraction());
2108  meNeutralHadronEtFraction_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"PfNeutralHadronEtFraction_BXm2BXm1Filled"]; if ( meNeutralHadronEtFraction_BXm2BXm1Filled && meNeutralHadronEtFraction_BXm2BXm1Filled ->getRootObject()) meNeutralHadronEtFraction_BXm2BXm1Filled ->Fill(pfmet.neutralHadronEtFraction());
2109  meChargedHadronEtFraction_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"PfChargedHadronEtFraction_BXm2BXm1Filled"]; if ( meChargedHadronEtFraction_BXm2BXm1Filled && meChargedHadronEtFraction_BXm2BXm1Filled ->getRootObject()) meChargedHadronEtFraction_BXm2BXm1Filled ->Fill(pfmet.chargedHadronEtFraction());
2110  meMET_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"MET_BXm2BXm1Filled"]; if ( meMET_BXm2BXm1Filled && meMET_BXm2BXm1Filled ->getRootObject()) meMET_BXm2BXm1Filled ->Fill(pfmet.pt());
2111  meSumET_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"SumET_BXm2BXm1Filled"]; if ( meSumET_BXm2BXm1Filled && meSumET_BXm2BXm1Filled ->getRootObject()) meSumET_BXm2BXm1Filled ->Fill(pfmet.sumEt());
2112  if(pt_sum_CHF_Barrel){
2113  meMETPhiChargedHadronsBarrel_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"METPhiChargedHadronsBarrel_BXm2BXm1Filled"];if(meMETPhiChargedHadronsBarrel_BXm2BXm1Filled && meMETPhiChargedHadronsBarrel_BXm2BXm1Filled ->getRootObject())meMETPhiChargedHadronsBarrel_BXm2BXm1Filled->Fill(atan2(py_chargedHadronsBarrel,px_chargedHadronsBarrel));
2114  }
2115  if(pt_sum_CHF_Endcap_plus){
2116  meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"METPhiChargedHadronsEndcapPlus_BXm2BXm1Filled"];if(meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Filled && meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Filled ->getRootObject())meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Filled->Fill(atan2(py_chargedHadronsEndcapPlus,px_chargedHadronsEndcapPlus));
2117  }
2118  if(pt_sum_CHF_Endcap_minus){
2119  meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"METPhiChargedHadronsEndcapMinus_BXm2BXm1Filled"];if(meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Filled && meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Filled ->getRootObject())meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Filled->Fill(atan2(py_chargedHadronsEndcapMinus,px_chargedHadronsEndcapMinus));
2120  }
2121  if(pt_sum_NHF_Barrel){
2122  meMETPhiNeutralHadronsBarrel_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsBarrel_BXm2BXm1Filled"];if(meMETPhiNeutralHadronsBarrel_BXm2BXm1Filled && meMETPhiNeutralHadronsBarrel_BXm2BXm1Filled ->getRootObject())meMETPhiNeutralHadronsBarrel_BXm2BXm1Filled->Fill(atan2(py_neutralHadronsBarrel,px_neutralHadronsBarrel));
2123  }
2124  if(pt_sum_NHF_Endcap_plus){
2125  meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled"];if(meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled && meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled ->getRootObject())meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Filled->Fill(atan2(py_neutralHadronsEndcapPlus,px_neutralHadronsEndcapPlus));
2126  }
2127  if(pt_sum_NHF_Endcap_minus){
2128  meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled"];if(meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled && meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled ->getRootObject())meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Filled->Fill(atan2(py_neutralHadronsEndcapMinus,px_neutralHadronsEndcapMinus));
2129  }
2130  if(pt_sum_PhF_Barrel){
2131  meMETPhiPhotonsBarrel_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"METPhiPhotonsBarrel_BXm2BXm1Filled"];if(meMETPhiPhotonsBarrel_BXm2BXm1Filled && meMETPhiPhotonsBarrel_BXm2BXm1Filled ->getRootObject())meMETPhiPhotonsBarrel_BXm2BXm1Filled->Fill(atan2(py_PhotonsBarrel,px_PhotonsBarrel));
2132  }
2133  if(pt_sum_PhF_Endcap_plus){
2134  meMETPhiPhotonsEndcapPlus_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"METPhiPhotonsEndcapPlus_BXm2BXm1Filled"];if(meMETPhiPhotonsEndcapPlus_BXm2BXm1Filled && meMETPhiPhotonsEndcapPlus_BXm2BXm1Filled ->getRootObject())meMETPhiPhotonsEndcapPlus_BXm2BXm1Filled->Fill(atan2(py_PhotonsEndcapPlus,px_PhotonsEndcapPlus));
2135  }
2136  if(pt_sum_PhF_Endcap_minus){
2137  meMETPhiPhotonsEndcapMinus_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"METPhiPhotonsEndcapMinus_BXm2BXm1Filled"];if(meMETPhiPhotonsEndcapMinus_BXm2BXm1Filled && meMETPhiPhotonsEndcapMinus_BXm2BXm1Filled ->getRootObject())meMETPhiPhotonsEndcapMinus_BXm2BXm1Filled->Fill(atan2(py_PhotonsEndcapMinus,px_PhotonsEndcapMinus));
2138  }
2139  if(pt_sum_HFH_plus){
2140  meMETPhiHFHadronsPlus_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"METPhiHFHadronsPlus_BXm2BXm1Filled"];if(meMETPhiHFHadronsPlus_BXm2BXm1Filled && meMETPhiHFHadronsPlus_BXm2BXm1Filled ->getRootObject())meMETPhiHFHadronsPlus_BXm2BXm1Filled->Fill(atan2(py_HFHadronsPlus,px_HFHadronsPlus));
2141  }
2142  if(pt_sum_HFH_minus){
2143  meMETPhiHFHadronsMinus_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"METPhiHFHadronsMinus_BXm2BXm1Filled"];if(meMETPhiHFHadronsMinus_BXm2BXm1Filled && meMETPhiHFHadronsMinus_BXm2BXm1Filled ->getRootObject())meMETPhiHFHadronsMinus_BXm2BXm1Filled->Fill(atan2(py_HFHadronsMinus,px_HFHadronsMinus));
2144  }
2145  if(pt_sum_HFE_plus){
2146  meMETPhiHFEGammasPlus_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"METPhiHFEGammasPlus_BXm2BXm1Filled"];if(meMETPhiHFEGammasPlus_BXm2BXm1Filled && meMETPhiHFEGammasPlus_BXm2BXm1Filled ->getRootObject())meMETPhiHFEGammasPlus_BXm2BXm1Filled->Fill(atan2(py_HFEGammasPlus,px_HFEGammasPlus));
2147  }
2148  if(pt_sum_HFE_minus){
2149  meMETPhiHFEGammasMinus_BXm2BXm1Filled = map_of_MEs[DirName+"/"+"METPhiHFEGammasMinus_BXm2BXm1Filled"];if(meMETPhiHFEGammasMinus_BXm2BXm1Filled && meMETPhiHFEGammasMinus_BXm2BXm1Filled ->getRootObject())meMETPhiHFEGammasMinus_BXm2BXm1Filled->Fill(atan2(py_HFEGammasMinus,px_HFEGammasMinus));
2150  }
2151  }*/
2152  if(techTriggerCase[1]){//techTriggerResultBx0 && techTriggerResultBxM1 -> previous bunch filled
2153  meCHF_Barrel_BXm1Filled=map_of_MEs[DirName+"/"+"PfChargedHadronEtFractionBarrel_BXm1Filled"]; if(meCHF_Barrel_BXm1Filled && meCHF_Barrel_BXm1Filled->getRootObject()) meCHF_Barrel_BXm1Filled->Fill(pt_sum_CHF_Barrel/pfmet.sumEt());
2154  meCHF_EndcapPlus_BXm1Filled=map_of_MEs[DirName+"/"+"PfChargedHadronEtFractionEndcapPlus_BXm1Filled"]; if(meCHF_EndcapPlus_BXm1Filled && meCHF_EndcapPlus_BXm1Filled->getRootObject()) meCHF_EndcapPlus_BXm1Filled->Fill(pt_sum_CHF_Endcap_plus/pfmet.sumEt());
2155  meCHF_EndcapMinus_BXm1Filled=map_of_MEs[DirName+"/"+"PfChargedHadronEtFractionEndcapMinus_BXm1Filled"]; if(meCHF_EndcapMinus_BXm1Filled && meCHF_EndcapMinus_BXm1Filled->getRootObject()) meCHF_EndcapMinus_BXm1Filled->Fill(pt_sum_CHF_Endcap_minus/pfmet.sumEt());
2156  meNHF_Barrel_BXm1Filled=map_of_MEs[DirName+"/"+"PfNeutralHadronEtFractionBarrel_BXm1Filled"]; if(meNHF_Barrel_BXm1Filled && meNHF_Barrel_BXm1Filled->getRootObject()) meNHF_Barrel_BXm1Filled->Fill(pt_sum_NHF_Barrel/pfmet.sumEt());
2157  meNHF_EndcapPlus_BXm1Filled=map_of_MEs[DirName+"/"+"PfNeutralHadronEtFractionEndcapPlus_BXm1Filled"]; if(meNHF_EndcapPlus_BXm1Filled && meNHF_EndcapPlus_BXm1Filled->getRootObject()) meNHF_EndcapPlus_BXm1Filled->Fill(pt_sum_NHF_Endcap_plus/pfmet.sumEt());
2158  meNHF_EndcapMinus_BXm1Filled=map_of_MEs[DirName+"/"+"PfNeutralHadronEtFractionEndcapMinus_BXm1Filled"]; if(meNHF_EndcapMinus_BXm1Filled && meNHF_EndcapMinus_BXm1Filled->getRootObject()) meNHF_EndcapMinus_BXm1Filled->Fill(pt_sum_NHF_Endcap_minus/pfmet.sumEt());
2159  mePhF_Barrel_BXm1Filled=map_of_MEs[DirName+"/"+"PfPhotonEtFractionBarrel_BXm1Filled"]; if(mePhF_Barrel_BXm1Filled && mePhF_Barrel_BXm1Filled->getRootObject()) mePhF_Barrel_BXm1Filled->Fill(pt_sum_PhF_Barrel/pfmet.sumEt());
2160  mePhF_EndcapPlus_BXm1Filled=map_of_MEs[DirName+"/"+"PfPhotonEtFractionEndcapPlus_BXm1Filled"]; if(mePhF_EndcapPlus_BXm1Filled && mePhF_EndcapPlus_BXm1Filled->getRootObject()) mePhF_EndcapPlus_BXm1Filled->Fill(pt_sum_PhF_Endcap_plus/pfmet.sumEt());
2161  mePhF_EndcapMinus_BXm1Filled=map_of_MEs[DirName+"/"+"PfPhotonEtFractionEndcapMinus_BXm1Filled"]; if(mePhF_EndcapMinus_BXm1Filled && mePhF_EndcapMinus_BXm1Filled->getRootObject()) mePhF_EndcapMinus_BXm1Filled->Fill(pt_sum_PhF_Endcap_minus/pfmet.sumEt());
2162  meHFHadF_Plus_BXm1Filled=map_of_MEs[DirName+"/"+"PfHFHadronEtFractionPlus_BXm1Filled"]; if(meHFHadF_Plus_BXm1Filled && meHFHadF_Plus_BXm1Filled->getRootObject()) meHFHadF_Plus_BXm1Filled->Fill(pt_sum_HFH_plus/pfmet.sumEt());
2163  meHFHadF_Minus_BXm1Filled=map_of_MEs[DirName+"/"+"PfHFHadronEtFractionMinus_BXm1Filled"]; if(meHFHadF_Minus_BXm1Filled && meHFHadF_Minus_BXm1Filled->getRootObject()) meHFHadF_Minus_BXm1Filled->Fill(pt_sum_HFH_minus/pfmet.sumEt());
2164  meHFEMF_Plus_BXm1Filled=map_of_MEs[DirName+"/"+"PfHFEMEtFractionPlus_BXm1Filled"]; if(meHFEMF_Plus_BXm1Filled && meHFEMF_Plus_BXm1Filled->getRootObject()) meHFEMF_Plus_BXm1Filled->Fill(pt_sum_HFE_plus/pfmet.sumEt());
2165  meHFEMF_Minus_BXm1Filled=map_of_MEs[DirName+"/"+"PfHFEMEtFractionMinus_BXm1Filled"]; if(meHFEMF_Minus_BXm1Filled && meHFEMF_Minus_BXm1Filled->getRootObject()) meHFEMF_Minus_BXm1Filled->Fill(pt_sum_HFE_minus/pfmet.sumEt());
2166  mePhotonEtFraction_BXm1Filled = map_of_MEs[DirName+"/"+"PfPhotonEtFraction_BXm1Filled"]; if ( mePhotonEtFraction_BXm1Filled && mePhotonEtFraction_BXm1Filled ->getRootObject()) mePhotonEtFraction_BXm1Filled ->Fill(pfmet.photonEtFraction());
2167  meNeutralHadronEtFraction_BXm1Filled = map_of_MEs[DirName+"/"+"PfNeutralHadronEtFraction_BXm1Filled"]; if ( meNeutralHadronEtFraction_BXm1Filled && meNeutralHadronEtFraction_BXm1Filled ->getRootObject()) meNeutralHadronEtFraction_BXm1Filled ->Fill(pfmet.neutralHadronEtFraction());
2168  meChargedHadronEtFraction_BXm1Filled = map_of_MEs[DirName+"/"+"PfChargedHadronEtFraction_BXm1Filled"]; if ( meChargedHadronEtFraction_BXm1Filled && meChargedHadronEtFraction_BXm1Filled ->getRootObject()) meChargedHadronEtFraction_BXm1Filled ->Fill(pfmet.chargedHadronEtFraction());
2169  meMET_BXm1Filled = map_of_MEs[DirName+"/"+"MET_BXm1Filled"]; if ( meMET_BXm1Filled && meMET_BXm1Filled ->getRootObject()) meMET_BXm1Filled ->Fill(pfmet.pt());
2170  meSumET_BXm1Filled = map_of_MEs[DirName+"/"+"SumET_BXm1Filled"]; if ( meSumET_BXm1Filled && meSumET_BXm1Filled ->getRootObject()) meSumET_BXm1Filled ->Fill(pfmet.sumEt());
2171  if(pt_sum_CHF_Barrel){
2172  meMETPhiChargedHadronsBarrel_BXm1Filled = map_of_MEs[DirName+"/"+"METPhiChargedHadronsBarrel_BXm1Filled"];if(meMETPhiChargedHadronsBarrel_BXm1Filled && meMETPhiChargedHadronsBarrel_BXm1Filled ->getRootObject())meMETPhiChargedHadronsBarrel_BXm1Filled->Fill(atan2(py_chargedHadronsBarrel,px_chargedHadronsBarrel));
2173  }
2174  if(pt_sum_CHF_Endcap_plus){
2175  meMETPhiChargedHadronsEndcapPlus_BXm1Filled = map_of_MEs[DirName+"/"+"METPhiChargedHadronsEndcapPlus_BXm1Filled"];if(meMETPhiChargedHadronsEndcapPlus_BXm1Filled && meMETPhiChargedHadronsEndcapPlus_BXm1Filled ->getRootObject())meMETPhiChargedHadronsEndcapPlus_BXm1Filled->Fill(atan2(py_chargedHadronsEndcapPlus,px_chargedHadronsEndcapPlus));
2176  }
2177  if(pt_sum_CHF_Endcap_minus){
2178  meMETPhiChargedHadronsEndcapMinus_BXm1Filled = map_of_MEs[DirName+"/"+"METPhiChargedHadronsEndcapMinus_BXm1Filled"];if(meMETPhiChargedHadronsEndcapMinus_BXm1Filled && meMETPhiChargedHadronsEndcapMinus_BXm1Filled ->getRootObject())meMETPhiChargedHadronsEndcapMinus_BXm1Filled->Fill(atan2(py_chargedHadronsEndcapMinus,px_chargedHadronsEndcapMinus));
2179  }
2180  if(pt_sum_NHF_Barrel){
2181  meMETPhiNeutralHadronsBarrel_BXm1Filled = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsBarrel_BXm1Filled"];if(meMETPhiNeutralHadronsBarrel_BXm1Filled && meMETPhiNeutralHadronsBarrel_BXm1Filled ->getRootObject())meMETPhiNeutralHadronsBarrel_BXm1Filled->Fill(atan2(py_neutralHadronsBarrel,px_neutralHadronsBarrel));
2182  }
2183  if(pt_sum_NHF_Endcap_plus){
2184  meMETPhiNeutralHadronsEndcapPlus_BXm1Filled = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsEndcapPlus_BXm1Filled"];if(meMETPhiNeutralHadronsEndcapPlus_BXm1Filled && meMETPhiNeutralHadronsEndcapPlus_BXm1Filled ->getRootObject())meMETPhiNeutralHadronsEndcapPlus_BXm1Filled->Fill(atan2(py_neutralHadronsEndcapPlus,px_neutralHadronsEndcapPlus));
2185  }
2186  if(pt_sum_NHF_Endcap_minus){
2187  meMETPhiNeutralHadronsEndcapMinus_BXm1Filled = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsEndcapMinus_BXm1Filled"];if(meMETPhiNeutralHadronsEndcapMinus_BXm1Filled && meMETPhiNeutralHadronsEndcapMinus_BXm1Filled ->getRootObject())meMETPhiNeutralHadronsEndcapMinus_BXm1Filled->Fill(atan2(py_neutralHadronsEndcapMinus,px_neutralHadronsEndcapMinus));
2188  }
2189  if(pt_sum_PhF_Barrel){
2190  meMETPhiPhotonsBarrel_BXm1Filled = map_of_MEs[DirName+"/"+"METPhiPhotonsBarrel_BXm1Filled"];if(meMETPhiPhotonsBarrel_BXm1Filled && meMETPhiPhotonsBarrel_BXm1Filled ->getRootObject())meMETPhiPhotonsBarrel_BXm1Filled->Fill(atan2(py_PhotonsBarrel,px_PhotonsBarrel));
2191  }
2192  if(pt_sum_PhF_Endcap_plus){
2193  meMETPhiPhotonsEndcapPlus_BXm1Filled = map_of_MEs[DirName+"/"+"METPhiPhotonsEndcapPlus_BXm1Filled"];if(meMETPhiPhotonsEndcapPlus_BXm1Filled && meMETPhiPhotonsEndcapPlus_BXm1Filled ->getRootObject())meMETPhiPhotonsEndcapPlus_BXm1Filled->Fill(atan2(py_PhotonsEndcapPlus,px_PhotonsEndcapPlus));
2194  }
2195  if(pt_sum_PhF_Endcap_minus){
2196  meMETPhiPhotonsEndcapMinus_BXm1Filled = map_of_MEs[DirName+"/"+"METPhiPhotonsEndcapMinus_BXm1Filled"];if(meMETPhiPhotonsEndcapMinus_BXm1Filled && meMETPhiPhotonsEndcapMinus_BXm1Filled ->getRootObject())meMETPhiPhotonsEndcapMinus_BXm1Filled->Fill(atan2(py_PhotonsEndcapMinus,px_PhotonsEndcapMinus));
2197  }
2198  if(pt_sum_HFH_plus){
2199  meMETPhiHFHadronsPlus_BXm1Filled = map_of_MEs[DirName+"/"+"METPhiHFHadronsPlus_BXm1Filled"];if(meMETPhiHFHadronsPlus_BXm1Filled && meMETPhiHFHadronsPlus_BXm1Filled ->getRootObject())meMETPhiHFHadronsPlus_BXm1Filled->Fill(atan2(py_HFHadronsPlus,px_HFHadronsPlus));
2200  }
2201  if(pt_sum_HFH_minus){
2202  meMETPhiHFHadronsMinus_BXm1Filled = map_of_MEs[DirName+"/"+"METPhiHFHadronsMinus_BXm1Filled"];if(meMETPhiHFHadronsMinus_BXm1Filled && meMETPhiHFHadronsMinus_BXm1Filled ->getRootObject())meMETPhiHFHadronsMinus_BXm1Filled->Fill(atan2(py_HFHadronsMinus,px_HFHadronsMinus));
2203  }
2204  if(pt_sum_HFE_plus){
2205  meMETPhiHFEGammasPlus_BXm1Filled = map_of_MEs[DirName+"/"+"METPhiHFEGammasPlus_BXm1Filled"];if(meMETPhiHFEGammasPlus_BXm1Filled && meMETPhiHFEGammasPlus_BXm1Filled ->getRootObject())meMETPhiHFEGammasPlus_BXm1Filled->Fill(atan2(py_HFEGammasPlus,px_HFEGammasPlus));
2206  }
2207  if(pt_sum_HFE_minus){
2208  meMETPhiHFEGammasMinus_BXm1Filled = map_of_MEs[DirName+"/"+"METPhiHFEGammasMinus_BXm1Filled"];if(meMETPhiHFEGammasMinus_BXm1Filled && meMETPhiHFEGammasMinus_BXm1Filled ->getRootObject())meMETPhiHFEGammasMinus_BXm1Filled->Fill(atan2(py_HFEGammasMinus,px_HFEGammasMinus));
2209  }
2210  }
2211  /*if(techTriggerCase[3]){//techTriggerResultBx0 && !techTriggerResultBxM2 && !techTriggerResultBxM1 ->previous two bunches empty
2212  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());
2213  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());
2214  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());
2215  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());
2216  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());
2217  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());
2218  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());
2219  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());
2220  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());
2221  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());
2222  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());
2223  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());
2224  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());
2225  mePhotonEtFraction_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"PfPhotonEtFraction_BXm2BXm1Empty"]; if ( mePhotonEtFraction_BXm2BXm1Empty && mePhotonEtFraction_BXm2BXm1Empty ->getRootObject()) mePhotonEtFraction_BXm2BXm1Empty ->Fill(pfmet.photonEtFraction());
2226  meNeutralHadronEtFraction_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"PfNeutralHadronEtFraction_BXm2BXm1Empty"]; if ( meNeutralHadronEtFraction_BXm2BXm1Empty && meNeutralHadronEtFraction_BXm2BXm1Empty ->getRootObject()) meNeutralHadronEtFraction_BXm2BXm1Empty ->Fill(pfmet.neutralHadronEtFraction());
2227  meChargedHadronEtFraction_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"PfChargedHadronEtFraction_BXm2BXm1Empty"]; if ( meChargedHadronEtFraction_BXm2BXm1Empty && meChargedHadronEtFraction_BXm2BXm1Empty ->getRootObject()) meChargedHadronEtFraction_BXm2BXm1Empty ->Fill(pfmet.chargedHadronEtFraction());
2228  meMET_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"MET_BXm2BXm1Empty"]; if ( meMET_BXm2BXm1Empty && meMET_BXm2BXm1Empty ->getRootObject()) meMET_BXm2BXm1Empty ->Fill(pfmet.pt());
2229  meSumET_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"SumET_BXm2BXm1Empty"]; if ( meSumET_BXm2BXm1Empty && meSumET_BXm2BXm1Empty ->getRootObject()) meSumET_BXm2BXm1Empty ->Fill(pfmet.sumEt());
2230  if(pt_sum_CHF_Barrel){
2231  meMETPhiChargedHadronsBarrel_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"METPhiChargedHadronsBarrel_BXm2BXm1Empty"];if(meMETPhiChargedHadronsBarrel_BXm2BXm1Empty && meMETPhiChargedHadronsBarrel_BXm2BXm1Empty ->getRootObject())meMETPhiChargedHadronsBarrel_BXm2BXm1Empty->Fill(atan2(py_chargedHadronsBarrel,px_chargedHadronsBarrel));
2232  }
2233  if(pt_sum_CHF_Endcap_plus){
2234  meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"METPhiChargedHadronsEndcapPlus_BXm2BXm1Empty"];if(meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Empty && meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Empty ->getRootObject())meMETPhiChargedHadronsEndcapPlus_BXm2BXm1Empty->Fill(atan2(py_chargedHadronsEndcapPlus,px_chargedHadronsEndcapPlus));
2235  }
2236  if(pt_sum_CHF_Endcap_minus){
2237  meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"METPhiChargedHadronsEndcapMinus_BXm2BXm1Empty"];if(meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Empty && meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Empty ->getRootObject())meMETPhiChargedHadronsEndcapMinus_BXm2BXm1Empty->Fill(atan2(py_chargedHadronsEndcapMinus,px_chargedHadronsEndcapMinus));
2238  }
2239  if(pt_sum_NHF_Barrel){
2240  meMETPhiNeutralHadronsBarrel_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsBarrel_BXm2BXm1Empty"];if(meMETPhiNeutralHadronsBarrel_BXm2BXm1Empty && meMETPhiNeutralHadronsBarrel_BXm2BXm1Empty ->getRootObject())meMETPhiNeutralHadronsBarrel_BXm2BXm1Empty->Fill(atan2(py_neutralHadronsBarrel,px_neutralHadronsBarrel));
2241  }
2242  if(pt_sum_NHF_Endcap_plus){
2243  meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty"];if(meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty && meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty ->getRootObject())meMETPhiNeutralHadronsEndcapPlus_BXm2BXm1Empty->Fill(atan2(py_neutralHadronsEndcapPlus,px_neutralHadronsEndcapPlus));
2244  }
2245  if(pt_sum_NHF_Endcap_minus){
2246  meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty"];if(meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty && meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty ->getRootObject())meMETPhiNeutralHadronsEndcapMinus_BXm2BXm1Empty->Fill(atan2(py_neutralHadronsEndcapMinus,px_neutralHadronsEndcapMinus));
2247  }
2248  if(pt_sum_PhF_Barrel){
2249  meMETPhiPhotonsBarrel_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"METPhiPhotonsBarrel_BXm2BXm1Empty"];if(meMETPhiPhotonsBarrel_BXm2BXm1Empty && meMETPhiPhotonsBarrel_BXm2BXm1Empty ->getRootObject())meMETPhiPhotonsBarrel_BXm2BXm1Empty->Fill(atan2(py_PhotonsBarrel,px_PhotonsBarrel));
2250  }
2251  if(pt_sum_PhF_Endcap_plus){
2252  meMETPhiPhotonsEndcapPlus_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"METPhiPhotonsEndcapPlus_BXm2BXm1Empty"];if(meMETPhiPhotonsEndcapPlus_BXm2BXm1Empty && meMETPhiPhotonsEndcapPlus_BXm2BXm1Empty ->getRootObject())meMETPhiPhotonsEndcapPlus_BXm2BXm1Empty->Fill(atan2(py_PhotonsEndcapPlus,px_PhotonsEndcapPlus));
2253  }
2254  if(pt_sum_PhF_Endcap_minus){
2255  meMETPhiPhotonsEndcapMinus_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"METPhiPhotonsEndcapMinus_BXm2BXm1Empty"];if(meMETPhiPhotonsEndcapMinus_BXm2BXm1Empty && meMETPhiPhotonsEndcapMinus_BXm2BXm1Empty ->getRootObject())meMETPhiPhotonsEndcapMinus_BXm2BXm1Empty->Fill(atan2(py_PhotonsEndcapMinus,px_PhotonsEndcapMinus));
2256  }
2257  if(pt_sum_HFH_plus){
2258  meMETPhiHFHadronsPlus_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"METPhiHFHadronsPlus_BXm2BXm1Empty"];if(meMETPhiHFHadronsPlus_BXm2BXm1Empty && meMETPhiHFHadronsPlus_BXm2BXm1Empty ->getRootObject())meMETPhiHFHadronsPlus_BXm2BXm1Empty->Fill(atan2(py_HFHadronsPlus,px_HFHadronsPlus));
2259  }
2260  if(pt_sum_HFH_minus){
2261  meMETPhiHFHadronsMinus_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"METPhiHFHadronsMinus_BXm2BXm1Empty"];if(meMETPhiHFHadronsMinus_BXm2BXm1Empty && meMETPhiHFHadronsMinus_BXm2BXm1Empty ->getRootObject())meMETPhiHFHadronsMinus_BXm2BXm1Empty->Fill(atan2(py_HFHadronsMinus,px_HFHadronsMinus));
2262  }
2263  if(pt_sum_HFE_plus){
2264  meMETPhiHFEGammasPlus_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"METPhiHFEGammasPlus_BXm2BXm1Empty"];if(meMETPhiHFEGammasPlus_BXm2BXm1Empty && meMETPhiHFEGammasPlus_BXm2BXm1Empty ->getRootObject())meMETPhiHFEGammasPlus_BXm2BXm1Empty->Fill(atan2(py_HFEGammasPlus,px_HFEGammasPlus));
2265  }
2266  if(pt_sum_HFE_minus){
2267  meMETPhiHFEGammasMinus_BXm2BXm1Empty = map_of_MEs[DirName+"/"+"METPhiHFEGammasMinus_BXm2BXm1Empty"];if(meMETPhiHFEGammasMinus_BXm2BXm1Empty && meMETPhiHFEGammasMinus_BXm2BXm1Empty ->getRootObject())meMETPhiHFEGammasMinus_BXm2BXm1Empty->Fill(atan2(py_HFEGammasMinus,px_HFEGammasMinus));
2268  }
2269  }*/
2270  if(techTriggerCase[2]){//techTriggerResultBx0 && !techTriggerResultBxM1 --> previous bunch empty
2271  meCHF_Barrel_BXm1Empty=map_of_MEs[DirName+"/"+"PfChargedHadronEtFractionBarrel_BXm1Empty"]; if(meCHF_Barrel_BXm1Empty && meCHF_Barrel_BXm1Empty->getRootObject()) meCHF_Barrel_BXm1Empty->Fill(pt_sum_CHF_Barrel/pfmet.sumEt());
2272  meCHF_EndcapPlus_BXm1Empty=map_of_MEs[DirName+"/"+"PfChargedHadronEtFractionEndcapPlus_BXm1Empty"]; if(meCHF_EndcapPlus_BXm1Empty && meCHF_EndcapPlus_BXm1Empty->getRootObject()) meCHF_EndcapPlus_BXm1Empty->Fill(pt_sum_CHF_Endcap_plus/pfmet.sumEt());
2273  meCHF_EndcapMinus_BXm1Empty=map_of_MEs[DirName+"/"+"PfChargedHadronEtFractionEndcapMinus_BXm1Empty"]; if(meCHF_EndcapMinus_BXm1Empty && meCHF_EndcapMinus_BXm1Empty->getRootObject()) meCHF_EndcapMinus_BXm1Empty->Fill(pt_sum_CHF_Endcap_minus/pfmet.sumEt());
2274  meNHF_Barrel_BXm1Empty=map_of_MEs[DirName+"/"+"PfNeutralHadronEtFractionBarrel_BXm1Empty"]; if(meNHF_Barrel_BXm1Empty && meNHF_Barrel_BXm1Empty->getRootObject()) meNHF_Barrel_BXm1Empty->Fill(pt_sum_NHF_Barrel/pfmet.sumEt());
2275  meNHF_EndcapPlus_BXm1Empty=map_of_MEs[DirName+"/"+"PfNeutralHadronEtFractionEndcapPlus_BXm1Empty"]; if(meNHF_EndcapPlus_BXm1Empty && meNHF_EndcapPlus_BXm1Empty->getRootObject()) meNHF_EndcapPlus_BXm1Empty->Fill(pt_sum_NHF_Endcap_plus/pfmet.sumEt());
2276  meNHF_EndcapMinus_BXm1Empty=map_of_MEs[DirName+"/"+"PfNeutralHadronEtFractionEndcapMinus_BXm1Empty"]; if(meNHF_EndcapMinus_BXm1Empty && meNHF_EndcapMinus_BXm1Empty->getRootObject()) meNHF_EndcapMinus_BXm1Empty->Fill(pt_sum_NHF_Endcap_minus/pfmet.sumEt());
2277  mePhF_Barrel_BXm1Empty=map_of_MEs[DirName+"/"+"PfPhotonEtFractionBarrel_BXm1Empty"]; if(mePhF_Barrel_BXm1Empty && mePhF_Barrel_BXm1Empty->getRootObject()) mePhF_Barrel_BXm1Empty->Fill(pt_sum_PhF_Barrel/pfmet.sumEt());
2278  mePhF_EndcapPlus_BXm1Empty=map_of_MEs[DirName+"/"+"PfPhotonEtFractionEndcapPlus_BXm1Empty"]; if(mePhF_EndcapPlus_BXm1Empty && mePhF_EndcapPlus_BXm1Empty->getRootObject()) mePhF_EndcapPlus_BXm1Empty->Fill(pt_sum_PhF_Endcap_plus/pfmet.sumEt());
2279  mePhF_EndcapMinus_BXm1Empty=map_of_MEs[DirName+"/"+"PfPhotonEtFractionEndcapMinus_BXm1Empty"]; if(mePhF_EndcapMinus_BXm1Empty && mePhF_EndcapMinus_BXm1Empty->getRootObject()) mePhF_EndcapMinus_BXm1Empty->Fill(pt_sum_PhF_Endcap_minus/pfmet.sumEt());
2280  meHFHadF_Plus_BXm1Empty=map_of_MEs[DirName+"/"+"PfHFHadronEtFractionPlus_BXm1Empty"]; if(meHFHadF_Plus_BXm1Empty && meHFHadF_Plus_BXm1Empty->getRootObject()) meHFHadF_Plus_BXm1Empty->Fill(pt_sum_HFH_plus/pfmet.sumEt());
2281  meHFHadF_Minus_BXm1Empty=map_of_MEs[DirName+"/"+"PfHFHadronEtFractionMinus_BXm1Empty"]; if(meHFHadF_Minus_BXm1Empty && meHFHadF_Minus_BXm1Empty->getRootObject()) meHFHadF_Minus_BXm1Empty->Fill(pt_sum_HFH_minus/pfmet.sumEt());
2282  meHFEMF_Plus_BXm1Empty=map_of_MEs[DirName+"/"+"PfHFEMEtFractionPlus_BXm1Empty"]; if(meHFEMF_Plus_BXm1Empty && meHFEMF_Plus_BXm1Empty->getRootObject()) meHFEMF_Plus_BXm1Empty->Fill(pt_sum_HFE_plus/pfmet.sumEt());
2283  meHFEMF_Minus_BXm1Empty=map_of_MEs[DirName+"/"+"PfHFEMEtFractionMinus_BXm1Empty"]; if(meHFEMF_Minus_BXm1Empty && meHFEMF_Minus_BXm1Empty->getRootObject()) meHFEMF_Minus_BXm1Empty->Fill(pt_sum_HFE_minus/pfmet.sumEt());
2284  mePhotonEtFraction_BXm1Empty = map_of_MEs[DirName+"/"+"PfPhotonEtFraction_BXm1Empty"]; if ( mePhotonEtFraction_BXm1Empty && mePhotonEtFraction_BXm1Empty ->getRootObject()) mePhotonEtFraction_BXm1Empty ->Fill(pfmet.photonEtFraction());
2285  meNeutralHadronEtFraction_BXm1Empty = map_of_MEs[DirName+"/"+"PfNeutralHadronEtFraction_BXm1Empty"]; if ( meNeutralHadronEtFraction_BXm1Empty && meNeutralHadronEtFraction_BXm1Empty ->getRootObject()) meNeutralHadronEtFraction_BXm1Empty ->Fill(pfmet.neutralHadronEtFraction());
2286  meChargedHadronEtFraction_BXm1Empty = map_of_MEs[DirName+"/"+"PfChargedHadronEtFraction_BXm1Empty"]; if ( meChargedHadronEtFraction_BXm1Empty && meChargedHadronEtFraction_BXm1Empty ->getRootObject()) meChargedHadronEtFraction_BXm1Empty ->Fill(pfmet.chargedHadronEtFraction());
2287  meMET_BXm1Empty = map_of_MEs[DirName+"/"+"MET_BXm1Empty"]; if ( meMET_BXm1Empty && meMET_BXm1Empty ->getRootObject()) meMET_BXm1Empty ->Fill(pfmet.pt());
2288  meSumET_BXm1Empty = map_of_MEs[DirName+"/"+"SumET_BXm1Empty"]; if ( meSumET_BXm1Empty && meSumET_BXm1Empty ->getRootObject()) meSumET_BXm1Empty ->Fill(pfmet.sumEt());
2289  if(pt_sum_CHF_Barrel){
2290  meMETPhiChargedHadronsBarrel_BXm1Empty = map_of_MEs[DirName+"/"+"METPhiChargedHadronsBarrel_BXm1Empty"];if(meMETPhiChargedHadronsBarrel_BXm1Empty && meMETPhiChargedHadronsBarrel_BXm1Empty ->getRootObject())meMETPhiChargedHadronsBarrel_BXm1Empty->Fill(atan2(py_chargedHadronsBarrel,px_chargedHadronsBarrel));
2291  }
2292  if(pt_sum_CHF_Endcap_plus){
2293  meMETPhiChargedHadronsEndcapPlus_BXm1Empty = map_of_MEs[DirName+"/"+"METPhiChargedHadronsEndcapPlus_BXm1Empty"];if(meMETPhiChargedHadronsEndcapPlus_BXm1Empty && meMETPhiChargedHadronsEndcapPlus_BXm1Empty ->getRootObject())meMETPhiChargedHadronsEndcapPlus_BXm1Empty->Fill(atan2(py_chargedHadronsEndcapPlus,px_chargedHadronsEndcapPlus));
2294  }
2295  if(pt_sum_CHF_Endcap_minus){
2296  meMETPhiChargedHadronsEndcapMinus_BXm1Empty = map_of_MEs[DirName+"/"+"METPhiChargedHadronsEndcapMinus_BXm1Empty"];if(meMETPhiChargedHadronsEndcapMinus_BXm1Empty && meMETPhiChargedHadronsEndcapMinus_BXm1Empty ->getRootObject())meMETPhiChargedHadronsEndcapMinus_BXm1Empty->Fill(atan2(py_chargedHadronsEndcapMinus,px_chargedHadronsEndcapMinus));
2297  }
2298  if(pt_sum_NHF_Barrel){
2299  meMETPhiNeutralHadronsBarrel_BXm1Empty = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsBarrel_BXm1Empty"];if(meMETPhiNeutralHadronsBarrel_BXm1Empty && meMETPhiNeutralHadronsBarrel_BXm1Empty ->getRootObject())meMETPhiNeutralHadronsBarrel_BXm1Empty->Fill(atan2(py_neutralHadronsBarrel,px_neutralHadronsBarrel));
2300  }
2301  if(pt_sum_NHF_Endcap_plus){
2302  meMETPhiNeutralHadronsEndcapPlus_BXm1Empty = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsEndcapPlus_BXm1Empty"];if(meMETPhiNeutralHadronsEndcapPlus_BXm1Empty && meMETPhiNeutralHadronsEndcapPlus_BXm1Empty ->getRootObject())meMETPhiNeutralHadronsEndcapPlus_BXm1Empty->Fill(atan2(py_neutralHadronsEndcapPlus,px_neutralHadronsEndcapPlus));
2303  }
2304  if(pt_sum_NHF_Endcap_minus){
2305  meMETPhiNeutralHadronsEndcapMinus_BXm1Empty = map_of_MEs[DirName+"/"+"METPhiNeutralHadronsEndcapMinus_BXm1Empty"];if(meMETPhiNeutralHadronsEndcapMinus_BXm1Empty && meMETPhiNeutralHadronsEndcapMinus_BXm1Empty ->getRootObject())meMETPhiNeutralHadronsEndcapMinus_BXm1Empty->Fill(atan2(py_neutralHadronsEndcapMinus,px_neutralHadronsEndcapMinus));
2306  }
2307  if(pt_sum_PhF_Barrel){
2308  meMETPhiPhotonsBarrel_BXm1Empty = map_of_MEs[DirName+"/"+"METPhiPhotonsBarrel_BXm1Empty"];if(meMETPhiPhotonsBarrel_BXm1Empty && meMETPhiPhotonsBarrel_BXm1Empty ->getRootObject())meMETPhiPhotonsBarrel_BXm1Empty->Fill(atan2(py_PhotonsBarrel,px_PhotonsBarrel));
2309  }
2310  if(pt_sum_PhF_Endcap_plus){
2311  meMETPhiPhotonsEndcapPlus_BXm1Empty = map_of_MEs[DirName+"/"+"METPhiPhotonsEndcapPlus_BXm1Empty"];if(meMETPhiPhotonsEndcapPlus_BXm1Empty && meMETPhiPhotonsEndcapPlus_BXm1Empty ->getRootObject())meMETPhiPhotonsEndcapPlus_BXm1Empty->Fill(atan2(py_PhotonsEndcapPlus,px_PhotonsEndcapPlus));
2312  }
2313  if(pt_sum_PhF_Endcap_minus){
2314  meMETPhiPhotonsEndcapMinus_BXm1Empty = map_of_MEs[DirName+"/"+"METPhiPhotonsEndcapMinus_BXm1Empty"];if(meMETPhiPhotonsEndcapMinus_BXm1Empty && meMETPhiPhotonsEndcapMinus_BXm1Empty ->getRootObject())meMETPhiPhotonsEndcapMinus_BXm1Empty->Fill(atan2(py_PhotonsEndcapMinus,px_PhotonsEndcapMinus));
2315  }
2316  if(pt_sum_HFH_plus){
2317  meMETPhiHFHadronsPlus_BXm1Empty = map_of_MEs[DirName+"/"+"METPhiHFHadronsPlus_BXm1Empty"];if(meMETPhiHFHadronsPlus_BXm1Empty && meMETPhiHFHadronsPlus_BXm1Empty ->getRootObject())meMETPhiHFHadronsPlus_BXm1Empty->Fill(atan2(py_HFHadronsPlus,px_HFHadronsPlus));
2318  }
2319  if(pt_sum_HFH_minus){
2320  meMETPhiHFHadronsMinus_BXm1Empty = map_of_MEs[DirName+"/"+"METPhiHFHadronsMinus_BXm1Empty"];if(meMETPhiHFHadronsMinus_BXm1Empty && meMETPhiHFHadronsMinus_BXm1Empty ->getRootObject())meMETPhiHFHadronsMinus_BXm1Empty->Fill(atan2(py_HFHadronsMinus,px_HFHadronsMinus));
2321  }
2322  if(pt_sum_HFE_plus){
2323  meMETPhiHFEGammasPlus_BXm1Empty = map_of_MEs[DirName+"/"+"METPhiHFEGammasPlus_BXm1Empty"];if(meMETPhiHFEGammasPlus_BXm1Empty && meMETPhiHFEGammasPlus_BXm1Empty ->getRootObject())meMETPhiHFEGammasPlus_BXm1Empty->Fill(atan2(py_HFEGammasPlus,px_HFEGammasPlus)); \
2324  }
2325  if(pt_sum_HFE_minus){
2326  meMETPhiHFEGammasMinus_BXm1Empty = map_of_MEs[DirName+"/"+"METPhiHFEGammasMinus_BXm1Empty"];if(meMETPhiHFEGammasMinus_BXm1Empty && meMETPhiHFEGammasMinus_BXm1Empty ->getRootObject())meMETPhiHFEGammasMinus_BXm1Empty->Fill(atan2(py_HFEGammasMinus,px_HFEGammasMinus));
2327  }
2328  }
2329 
2330  }//fill candidate plots only then
2331 
2332  // PFMET getters
2333  //----------------------------------------------------------------------------
2334  double pfPhotonEtFraction = pfmet.photonEtFraction();
2335  double pfPhotonEt = pfmet.photonEt();
2336  double pfNeutralHadronEtFraction = pfmet.neutralHadronEtFraction();
2337  double pfNeutralHadronEt = pfmet.neutralHadronEt();
2338  double pfElectronEt = pfmet.electronEt();
2339  double pfChargedHadronEtFraction = pfmet.chargedHadronEtFraction();
2340  double pfChargedHadronEt = pfmet.chargedHadronEt();
2341  double pfMuonEt = pfmet.muonEt();
2342  double pfHFHadronEtFraction = pfmet.HFHadronEtFraction();
2343  double pfHFHadronEt = pfmet.HFHadronEt();
2344  double pfHFEMEtFraction = pfmet.HFEMEtFraction();
2345  double pfHFEMEt = pfmet.HFEMEt();
2346  mePhotonEtFraction = map_of_MEs[DirName + "/PfPhotonEtFraction"];
2347  mePhotonEt = map_of_MEs[DirName + "/PfPhotonEt"];
2348  meNeutralHadronEtFraction = map_of_MEs[DirName + "/PfNeutralHadronEtFraction"];
2349  meNeutralHadronEt = map_of_MEs[DirName + "/PfNeutralHadronEt"];
2350  meElectronEt = map_of_MEs[DirName + "/PfElectronEt"];
2351  meChargedHadronEtFraction = map_of_MEs[DirName + "/PfChargedHadronEtFraction"];
2352  meChargedHadronEt = map_of_MEs[DirName + "/PfChargedHadronEt"];
2353  meMuonEt = map_of_MEs[DirName + "/PfMuonEt"];
2354  meHFHadronEtFraction = map_of_MEs[DirName + "/PfHFHadronEtFraction"];
2355  meHFHadronEt = map_of_MEs[DirName + "/PfHFHadronEt"];
2356  meHFEMEtFraction = map_of_MEs[DirName + "/PfHFEMEtFraction"];
2357  meHFEMEt = map_of_MEs[DirName + "/PfHFEMEt"];
2358 
2359  if (mePhotonEtFraction && mePhotonEtFraction ->getRootObject()) mePhotonEtFraction ->Fill(pfPhotonEtFraction);
2360  if (mePhotonEt && mePhotonEt ->getRootObject()) mePhotonEt ->Fill(pfPhotonEt);
2361  if (meNeutralHadronEtFraction && meNeutralHadronEtFraction->getRootObject()) meNeutralHadronEtFraction->Fill(pfNeutralHadronEtFraction);
2362  if (meNeutralHadronEt && meNeutralHadronEt ->getRootObject()) meNeutralHadronEt ->Fill(pfNeutralHadronEt);
2363  if (meElectronEt && meElectronEt ->getRootObject()) meElectronEt ->Fill(pfElectronEt);
2364  if (meChargedHadronEtFraction && meChargedHadronEtFraction->getRootObject()) meChargedHadronEtFraction->Fill(pfChargedHadronEtFraction);
2365  if (meChargedHadronEt && meChargedHadronEt ->getRootObject()) meChargedHadronEt ->Fill(pfChargedHadronEt);
2366  if (meMuonEt && meMuonEt ->getRootObject()) meMuonEt ->Fill(pfMuonEt);
2367  if (meHFHadronEtFraction && meHFHadronEtFraction ->getRootObject()) meHFHadronEtFraction ->Fill(pfHFHadronEtFraction);
2368  if (meHFHadronEt && meHFHadronEt ->getRootObject()) meHFHadronEt ->Fill(pfHFHadronEt);
2369  if (meHFEMEtFraction && meHFEMEtFraction ->getRootObject()) meHFEMEtFraction ->Fill(pfHFEMEtFraction);
2370  if (meHFEMEt && meHFEMEt ->getRootObject()) meHFEMEt ->Fill(pfHFEMEt);
2371 
2372  //NPV profiles
2373 
2374  mePhotonEtFraction_profile = map_of_MEs[DirName + "/PfPhotonEtFraction_profile"];
2375  mePhotonEt_profile = map_of_MEs[DirName + "/PfPhotonEt_profile"];
2376  meNeutralHadronEtFraction_profile = map_of_MEs[DirName + "/PfNeutralHadronEtFraction_profile"];
2377  meNeutralHadronEt_profile = map_of_MEs[DirName + "/PfNeutralHadronEt_profile"];
2378  meChargedHadronEtFraction_profile = map_of_MEs[DirName + "/PfChargedHadronEtFraction_profile"];
2379  meChargedHadronEt_profile = map_of_MEs[DirName + "/PfChargedHadronEt_profile"];
2380  meHFHadronEtFraction_profile = map_of_MEs[DirName + "/PfHFHadronEtFraction_profile"];
2381  meHFHadronEt_profile = map_of_MEs[DirName + "/PfHFHadronEt_profile"];
2382  meHFEMEtFraction_profile = map_of_MEs[DirName + "/PfHFEMEtFraction_profile"];
2383  meHFEMEt_profile = map_of_MEs[DirName + "/PfHFEMEt_profile"];
2384 
2385  if (mePhotonEtFraction_profile && mePhotonEtFraction_profile ->getRootObject()) mePhotonEtFraction_profile ->Fill(numPV_, pfPhotonEtFraction);
2386  if (mePhotonEt_profile && mePhotonEt_profile ->getRootObject()) mePhotonEt_profile ->Fill(numPV_, pfPhotonEt);
2387  if (meNeutralHadronEtFraction_profile && meNeutralHadronEtFraction_profile->getRootObject()) meNeutralHadronEtFraction_profile->Fill(numPV_, pfNeutralHadronEtFraction);
2388  if (meNeutralHadronEt_profile && meNeutralHadronEt_profile ->getRootObject()) meNeutralHadronEt_profile ->Fill(numPV_, pfNeutralHadronEt);
2389  if (meChargedHadronEtFraction_profile && meChargedHadronEtFraction_profile->getRootObject()) meChargedHadronEtFraction_profile->Fill(numPV_, pfChargedHadronEtFraction);
2390  if (meChargedHadronEt_profile && meChargedHadronEt_profile ->getRootObject()) meChargedHadronEt_profile ->Fill(numPV_, pfChargedHadronEt);
2391  if (meHFHadronEtFraction_profile && meHFHadronEtFraction_profile ->getRootObject()) meHFHadronEtFraction_profile ->Fill(numPV_, pfHFHadronEtFraction);
2392  if (meHFHadronEt_profile && meHFHadronEt_profile ->getRootObject()) meHFHadronEt_profile ->Fill(numPV_, pfHFHadronEt);
2393  if (meHFEMEtFraction_profile && meHFEMEtFraction_profile ->getRootObject()) meHFEMEtFraction_profile ->Fill(numPV_, pfHFEMEtFraction);
2394  if (meHFEMEt_profile && meHFEMEt_profile ->getRootObject()) meHFEMEt_profile ->Fill(numPV_, pfHFEMEt);
2395  }
2396 
2397  if(isMiniAODMet_){
2398  mePhotonEtFraction = map_of_MEs[DirName + "/PfPhotonEtFraction"];
2399  meNeutralHadronEtFraction = map_of_MEs[DirName + "/PfNeutralHadronEtFraction"];
2400  meChargedHadronEtFraction = map_of_MEs[DirName + "/PfChargedHadronEtFraction"];
2401  meHFHadronEtFraction = map_of_MEs[DirName + "/PfHFHadronEtFraction"];
2402  meHFEMEtFraction = map_of_MEs[DirName + "/PfHFEMEtFraction"];
2403 
2404  if (mePhotonEtFraction && mePhotonEtFraction ->getRootObject()) mePhotonEtFraction ->Fill(patmet.NeutralEMFraction());
2405  if (meNeutralHadronEtFraction && meNeutralHadronEtFraction->getRootObject()) meNeutralHadronEtFraction->Fill(patmet.NeutralHadEtFraction());
2406  if (meChargedHadronEtFraction && meChargedHadronEtFraction->getRootObject()) meChargedHadronEtFraction->Fill(patmet.ChargedHadEtFraction());
2407  if (meHFHadronEtFraction && meHFHadronEtFraction ->getRootObject()) meHFHadronEtFraction ->Fill(patmet.Type6EtFraction());//HFHadrons
2408  if (meHFEMEtFraction && meHFEMEtFraction ->getRootObject()) meHFEMEtFraction ->Fill(patmet.Type7EtFraction());
2409 
2410  //NPV profiles
2411  mePhotonEtFraction_profile = map_of_MEs[DirName + "/PfPhotonEtFraction_profile"];
2412  meNeutralHadronEtFraction_profile = map_of_MEs[DirName + "/PfNeutralHadronEtFraction_profile"];
2413  meChargedHadronEtFraction_profile = map_of_MEs[DirName + "/PfChargedHadronEtFraction_profile"];
2414  meHFHadronEtFraction_profile = map_of_MEs[DirName + "/PfHFHadronEtFraction_profile"];
2415  meHFEMEtFraction_profile = map_of_MEs[DirName + "/PfHFEMEtFraction_profile"];
2416 
2417  if (mePhotonEtFraction_profile && mePhotonEtFraction_profile ->getRootObject()) mePhotonEtFraction_profile ->Fill(numPV_, patmet.NeutralEMFraction());
2418  if (meNeutralHadronEtFraction_profile && meNeutralHadronEtFraction_profile->getRootObject()) meNeutralHadronEtFraction_profile->Fill(numPV_, patmet.NeutralHadEtFraction());
2419  if (meChargedHadronEtFraction_profile && meChargedHadronEtFraction_profile->getRootObject()) meChargedHadronEtFraction_profile->Fill(numPV_, patmet.ChargedHadEtFraction());
2420  if (meHFHadronEtFraction_profile && meHFHadronEtFraction_profile ->getRootObject()) meHFHadronEtFraction_profile ->Fill(numPV_, patmet.Type6EtFraction());
2421  if (meHFEMEtFraction_profile && meHFEMEtFraction_profile ->getRootObject()) meHFEMEtFraction_profile ->Fill(numPV_, patmet.Type7EtFraction());
2422 
2423  mePhotonEt = map_of_MEs[DirName + "/PfPhotonEt"];
2424  meNeutralHadronEt = map_of_MEs[DirName + "/PfNeutralHadronEt"];
2425  meChargedHadronEt = map_of_MEs[DirName + "/PfChargedHadronEt"];
2426  meHFHadronEt = map_of_MEs[DirName + "/PfHFHadronEt"];
2427  meHFEMEt = map_of_MEs[DirName + "/PfHFEMEt"];
2428  meMuonEt = map_of_MEs[DirName + "/PfMuonEt"];
2429  meElectronEt = map_of_MEs[DirName + "/PfElectronEt"];
2430 
2431  if (mePhotonEt && mePhotonEt ->getRootObject()) mePhotonEt ->Fill(patmet.NeutralEMFraction()*patmet.sumEt());
2432  if (meNeutralHadronEt && meNeutralHadronEt->getRootObject()) meNeutralHadronEt->Fill(patmet.NeutralHadEtFraction()*patmet.sumEt());
2433  if (meChargedHadronEt && meChargedHadronEt->getRootObject()) meChargedHadronEt->Fill(patmet.ChargedHadEtFraction()*patmet.sumEt());
2434  if (meHFHadronEt && meHFHadronEt ->getRootObject()) meHFHadronEt ->Fill(patmet.Type6EtFraction()*patmet.sumEt());//HFHadrons
2435  if (meHFEMEt && meHFEMEt ->getRootObject()) meHFEMEt ->Fill(patmet.Type7EtFraction()*patmet.sumEt());
2436  if (meMuonEt && meMuonEt ->getRootObject()) meMuonEt ->Fill(patmet.MuonEtFraction()*patmet.sumEt());
2437  if (meElectronEt && meElectronEt ->getRootObject()) meElectronEt ->Fill(patmet.ChargedEMEtFraction()*patmet.sumEt());
2438 
2439  //NPV profiles
2440  mePhotonEt_profile = map_of_MEs[DirName + "/PfPhotonEt_profile"];
2441  meNeutralHadronEt_profile = map_of_MEs[DirName + "/PfNeutralHadronEt_profile"];
2442  meChargedHadronEt_profile = map_of_MEs[DirName + "/PfChargedHadronEt_profile"];
2443  meHFHadronEt_profile = map_of_MEs[DirName + "/PfHFHadronEt_profile"];
2444  meHFEMEt_profile = map_of_MEs[DirName + "/PfHFEMEt_profile"];
2445 
2446  if (mePhotonEt_profile && mePhotonEt_profile ->getRootObject()) mePhotonEt_profile ->Fill(numPV_, patmet.NeutralEMFraction()*patmet.sumEt());
2447  if (meNeutralHadronEt_profile && meNeutralHadronEt_profile->getRootObject()) meNeutralHadronEt_profile->Fill(numPV_, patmet.NeutralHadEtFraction()*patmet.sumEt());
2448  if (meChargedHadronEt_profile && meChargedHadronEt_profile->getRootObject()) meChargedHadronEt_profile->Fill(numPV_, patmet.ChargedHadEtFraction()*patmet.sumEt());
2449  if (meHFHadronEt_profile && meHFHadronEt_profile ->getRootObject()) meHFHadronEt_profile ->Fill(numPV_, patmet.Type6EtFraction()*patmet.sumEt());
2450  if (meHFEMEt_profile && meHFEMEt_profile ->getRootObject()) meHFEMEt_profile ->Fill(numPV_, patmet.Type7EtFraction()*patmet.sumEt());
2451  }
2452 
2453  if (isCaloMet_){
2454  //if (bLumiSecPlot){//get from config level
2455  if (fill_met_high_level_histo){
2456  hMExLS = map_of_MEs[DirName+"/"+"MExLS"]; if (hMExLS && hMExLS->getRootObject()) hMExLS->Fill(MEx,myLuminosityBlock);
2457  hMEyLS = map_of_MEs[DirName+"/"+"MEyLS"]; if (hMEyLS && hMEyLS->getRootObject()) hMEyLS->Fill(MEy,myLuminosityBlock);
2458  }
2459  }
2460  }//check if we only wanna do Z plots
2461 }
#define LogDebug(id)
Analysis-level MET class.
Definition: MET.h:43
T getParameter(std::string const &) const
double hadEtInHE() const
Definition: CaloMET.h:51
void setBinContent(int binx, double content)
set content of bin (1-D)
double eta() const final
momentum pseudorapidity
double HFEMEtFraction() const
Definition: PFMET.h:47
double hadEtInHF() const
Definition: CaloMET.h:53
const TechnicalTriggerWord & technicalTriggerWord(int bxInEventValue) const
double ChargedHadEtFraction() const
Definition: MET.h:140
double MuonEtFraction() const
Definition: MET.h:141
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:160
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
TH1F * getTH1F() const
TObject * getRootObject() const
std::vector< T >::const_iterator search(const cond::Time_t &val, const std::vector< T > &container)
Definition: IOVProxy.cc:314
std::vector< ParameterSet > VParameterSet
Definition: ParameterSet.h:33
double neutralHadronEtFraction() const
Definition: PFMET.h:32
double px() const final
x coordinate of momentum vector
bool accept() const
Has at least one path accepted the event?
double muonEt() const
Definition: PFMET.h:42
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:63
double pt() const final
transverse momentum
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
double NeutralEMFraction() const
Definition: MET.h:137
double correction(const LorentzVector &fJet) const
get correction using Jet information only
Definition: JetCorrector.h:49
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
double ChargedEMEtFraction() const
Definition: MET.h:139
double Type6EtFraction() const
Definition: MET.h:142
double Type7EtFraction() const
Definition: MET.h:143
Jet ID object.
Definition: JetID.h:16
double NeutralHadEtFraction() const
Definition: MET.h:138
AlgorithmMap::const_iterator CItAlgo
iterators through map containing the algorithms
void makeRatePlot(std::string, double)
double mEtSig() const
Definition: MET.h:58
double HFHadronEtFraction() const
Definition: PFMET.h:44
int iEvent
Definition: GenABIO.cc:230
double sumEt() const
Definition: MET.h:56
void analyze(const edm::Event &, const edm::EventSetup &) override
Get the analysis.
double HFHadronEt() const
Definition: PFMET.h:45
double et() const final
transverse energy
void bookMESet(std::string, DQMStore::IBooker &, std::map< std::string, MonitorElement * > &)
Definition: METAnalyzer.cc:222
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
Definition: MET.h:42
T sqrt(T t)
Definition: SSEVec.h:18
void fillMonitorElement(const edm::Event &, std::string, std::string, const reco::MET &, const pat::MET &, const reco::PFMET &, const reco::CaloMET &, const reco::Candidate::PolarLorentzVector &, std::map< std::string, MonitorElement * > &, bool, bool, std::vector< bool >, std::vector< bool >)
double photonEtFraction() const
Definition: PFMET.h:29
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
std::vector< bool > TechnicalTriggerWord
technical trigger bits (64 bits)
double emEtInEB() const
Definition: CaloMET.h:55
bool isValid() const
Definition: HandleBase.h:74
#define LogTrace(id)
double HFEMEt() const
Definition: PFMET.h:48
PF Jet selector for pat::Jets.
Definition: Error.h:16
double hadEtInHO() const
Definition: CaloMET.h:49
#define M_PI
double electronEt() const
Definition: PFMET.h:36
Jet selector for pat::Jets and for CaloJets.
void dqmBeginRun(const edm::Run &, const edm::EventSetup &) override
Initialize run-based parameters.
Definition: METAnalyzer.cc:881
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:279
double etFractionHadronic() const
Definition: CaloMET.h:42
T const * product() const
Definition: Handle.h:81
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:136
double photonEt() const
Definition: PFMET.h:30
met
===> hadronic RAZOR
void fillMESet(const edm::Event &, std::string, const reco::MET &, const pat::MET &, const reco::PFMET &, const reco::CaloMET &, const reco::Candidate::PolarLorentzVector &, std::map< std::string, MonitorElement * > &, std::vector< bool >, std::vector< bool >)
static std::string const triggerResults("TriggerResults")
void endRun(const edm::Run &iRun, const edm::EventSetup &iSetup) override
Finish up a run.
const T & get() const
Definition: EventSetup.h:59
double py() const final
y coordinate of momentum vector
METAnalyzer(const edm::ParameterSet &)
Constructor.
Definition: METAnalyzer.cc:42
double emEtInEE() const
Definition: CaloMET.h:57
void bookMonitorElement(std::string, DQMStore::IBooker &, std::map< std::string, MonitorElement * > &, bool, bool, bool)
Definition: METAnalyzer.cc:248
double chargedHadronEtFraction() const
Definition: PFMET.h:38
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:40
fixed size matrix
HLT enums.
static int position[264][3]
Definition: ReadPGInfo.cc:509
pfIsolationR04
Definition: muons_cfi.py:31
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Inizialize parameters for histo binning.
Definition: METAnalyzer.cc:193
~METAnalyzer() override
Destructor.
Definition: METAnalyzer.cc:185
double emEtInHF() const
Definition: CaloMET.h:59
double neutralHadronEt() const
Definition: PFMET.h:33
const AlgorithmMap & gtTechnicalTriggerMap() const
get / set the technical trigger map
virtual ParticleType particleId() const
Definition: PFCandidate.h:374
double phi() const final
momentum azimuthal angle
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
T const * product() const
Definition: ESHandle.h:86
double hadEtInHB() const
Definition: CaloMET.h:47
double emEtFraction() const
Definition: CaloMET.h:45
double chargedHadronEt() const
Definition: PFMET.h:39
Definition: Run.h:43
math::PtEtaPhiMLorentzVector PolarLorentzVector
Lorentz vector.
Definition: Candidate.h:39