CMS 3D CMS Logo

TopMonitor.cc
Go to the documentation of this file.
31 
32 #include <string>
33 #include <vector>
34 #include <memory>
35 #include <map>
36 
37 class TopMonitor : public DQMEDAnalyzer, public TriggerDQMBase {
38 public:
41 
43  ~TopMonitor() throw() override;
44  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
45 
46 protected:
48  void analyze(edm::Event const& iEvent, edm::EventSetup const& iSetup) override;
49 
50  struct JetRefCompare {
51  inline bool operator()(const edm::RefToBase<reco::Jet>& j1, const edm::RefToBase<reco::Jet>& j2) const {
52  return (j1.id() < j2.id()) || ((j1.id() == j2.id()) && (j1.key() < j2.key()));
53  }
54  };
55  typedef std::map<edm::RefToBase<reco::Jet>, float, JetRefCompare> JetTagMap;
56 
57 private:
59 
62 
69  std::vector<edm::EDGetTokenT<reco::JetTagCollection> > jetTagTokens_;
71 
72  struct PVcut {
73  double dxy;
74  double dz;
75  };
76 
87 
88  std::vector<double> met_variable_binning_;
89  std::vector<double> HT_variable_binning_;
90  std::vector<double> jetPt_variable_binning_;
91  std::vector<double> muPt_variable_binning_;
92  std::vector<double> elePt_variable_binning_;
93  std::vector<double> jetEta_variable_binning_;
94  std::vector<double> muEta_variable_binning_;
95  std::vector<double> eleEta_variable_binning_;
96  std::vector<double> invMass_mumu_variable_binning_;
97  std::vector<double> MHT_variable_binning_;
98 
99  std::vector<double> HT_variable_binning_2D_;
100  std::vector<double> jetPt_variable_binning_2D_;
101  std::vector<double> muPt_variable_binning_2D_;
102  std::vector<double> elePt_variable_binning_2D_;
103  std::vector<double> phoPt_variable_binning_2D_;
104  std::vector<double> jetEta_variable_binning_2D_;
105  std::vector<double> muEta_variable_binning_2D_;
106  std::vector<double> eleEta_variable_binning_2D_;
107  std::vector<double> phoEta_variable_binning_2D_;
108  std::vector<double> phi_variable_binning_2D_;
109 
110  ObjME metME_;
112  ObjME metVsLS_;
113  ObjME metPhiME_;
114 
115  ObjME jetVsLS_;
116  ObjME muVsLS_;
117  ObjME eleVsLS_;
118  ObjME phoVsLS_;
119  ObjME bjetVsLS_;
120  ObjME htVsLS_;
121 
122  ObjME jetEtaPhi_HEP17_; // for HEP17 monitoring
123 
124  ObjME jetMulti_;
125  ObjME eleMulti_;
126  ObjME muMulti_;
127  ObjME phoMulti_;
128  ObjME bjetMulti_;
129 
132 
137  ObjME elePt_muPt_;
140  ObjME eventMHT_;
143  ObjME muPt_phoPt_;
145 
147 
148  ObjME eventHT_;
150 
151  std::vector<ObjME> muPhi_;
152  std::vector<ObjME> muEta_;
153  std::vector<ObjME> muPt_;
154 
155  std::vector<ObjME> elePhi_;
156  std::vector<ObjME> eleEta_;
157  std::vector<ObjME> elePt_;
158 
159  std::vector<ObjME> jetPhi_;
160  std::vector<ObjME> jetEta_;
161  std::vector<ObjME> jetPt_;
162 
163  std::vector<ObjME> phoPhi_;
164  std::vector<ObjME> phoEta_;
165  std::vector<ObjME> phoPt_;
166 
167  std::vector<ObjME> bjetPhi_;
168  std::vector<ObjME> bjetEta_;
169  std::vector<ObjME> bjetPt_;
170  std::vector<ObjME> bjetCSV_;
171  std::vector<ObjME> muPt_variableBinning_;
172  std::vector<ObjME> elePt_variableBinning_;
173  std::vector<ObjME> jetPt_variableBinning_;
174  std::vector<ObjME> bjetPt_variableBinning_;
175 
176  std::vector<ObjME> muEta_variableBinning_;
177  std::vector<ObjME> eleEta_variableBinning_;
178  std::vector<ObjME> jetEta_variableBinning_;
179  std::vector<ObjME> bjetEta_variableBinning_;
180 
181  // 2D distributions
182  std::vector<ObjME> jetPtEta_;
183  std::vector<ObjME> jetEtaPhi_;
184 
185  std::vector<ObjME> elePtEta_;
186  std::vector<ObjME> eleEtaPhi_;
187 
188  std::vector<ObjME> muPtEta_;
189  std::vector<ObjME> muEtaPhi_;
190 
191  std::vector<ObjME> phoPtEta_;
192  std::vector<ObjME> phoEtaPhi_;
193 
194  std::vector<ObjME> bjetPtEta_;
195  std::vector<ObjME> bjetEtaPhi_;
196  std::vector<ObjME> bjetCSVHT_;
197 
198  std::unique_ptr<GenericTriggerEventFlag> num_genTriggerEventFlag_;
199  std::unique_ptr<GenericTriggerEventFlag> den_genTriggerEventFlag_;
200 
207 
209 
211 
212  unsigned int njets_;
213  unsigned int nelectrons_;
214  unsigned int nmuons_;
215  unsigned int nphotons_;
219  double HTcut_;
220  unsigned int nbjets_;
225 
226  bool applyMETcut_ = false;
227 
230  bool opsign_;
232  double MHTcut_;
233 
235 
239 };
240 
242  : folderName_(iConfig.getParameter<std::string>("FolderName")),
243  requireValidHLTPaths_(iConfig.getParameter<bool>("requireValidHLTPaths")),
244  hltPathsAreValid_(false),
245  vtxToken_(mayConsume<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("vertices"))),
246  muoToken_(mayConsume<reco::MuonCollection>(iConfig.getParameter<edm::InputTag>("muons"))),
247  eleToken_(mayConsume<edm::View<reco::GsfElectron> >(iConfig.getParameter<edm::InputTag>("electrons"))),
248  elecIDToken_(consumes<edm::ValueMap<bool> >(iConfig.getParameter<edm::InputTag>("elecID"))),
249  phoToken_(mayConsume<reco::PhotonCollection>(iConfig.getParameter<edm::InputTag>("photons"))),
250  jetToken_(mayConsume<reco::PFJetCollection>(iConfig.getParameter<edm::InputTag>("jets"))),
251  jetTagTokens_(
252  edm::vector_transform(iConfig.getParameter<std::vector<edm::InputTag> >("btagAlgos"),
253  [this](edm::InputTag const& tag) { return mayConsume<reco::JetTagCollection>(tag); })),
254  metToken_(consumes<reco::PFMETCollection>(iConfig.getParameter<edm::InputTag>("met"))),
255  met_binning_(getHistoPSet(
256  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("metPSet"))),
257  ls_binning_(
258  getHistoPSet(iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("lsPSet"))),
259  phi_binning_(getHistoPSet(
260  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("phiPSet"))),
261  pt_binning_(
262  getHistoPSet(iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("ptPSet"))),
263  eta_binning_(getHistoPSet(
264  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("etaPSet"))),
265  HT_binning_(
266  getHistoPSet(iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("htPSet"))),
267  DR_binning_(
268  getHistoPSet(iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("DRPSet"))),
269  csv_binning_(getHistoPSet(
270  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("csvPSet"))),
271  invMass_mumu_binning_(getHistoPSet(
272  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("invMassPSet"))),
273  MHT_binning_(getHistoPSet(
274  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("MHTPSet"))),
275  met_variable_binning_(
276  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("metBinning")),
277  HT_variable_binning_(
278  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("HTBinning")),
279  jetPt_variable_binning_(
280  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("jetPtBinning")),
281  muPt_variable_binning_(
282  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("muPtBinning")),
283  elePt_variable_binning_(
284  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("elePtBinning")),
285  jetEta_variable_binning_(
286  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("jetEtaBinning")),
287  muEta_variable_binning_(
288  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("muEtaBinning")),
289  eleEta_variable_binning_(
290  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("eleEtaBinning")),
291  invMass_mumu_variable_binning_(iConfig.getParameter<edm::ParameterSet>("histoPSet")
292  .getParameter<std::vector<double> >("invMassVariableBinning")),
293  MHT_variable_binning_(
294  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("MHTVariableBinning")),
295  HT_variable_binning_2D_(
296  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("HTBinning2D")),
297  jetPt_variable_binning_2D_(
298  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("jetPtBinning2D")),
299  muPt_variable_binning_2D_(
300  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("muPtBinning2D")),
301  elePt_variable_binning_2D_(
302  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("elePtBinning2D")),
303  phoPt_variable_binning_2D_(
304  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("phoPtBinning2D")),
305  jetEta_variable_binning_2D_(
306  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("jetEtaBinning2D")),
307  muEta_variable_binning_2D_(
308  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("muEtaBinning2D")),
309  eleEta_variable_binning_2D_(
310  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("eleEtaBinning2D")),
311  phoEta_variable_binning_2D_(
312  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("phoEtaBinning2D")),
313  phi_variable_binning_2D_(
314  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("phiBinning2D")),
315  num_genTriggerEventFlag_(new GenericTriggerEventFlag(
316  iConfig.getParameter<edm::ParameterSet>("numGenericTriggerEventPSet"), consumesCollector(), *this)),
317  den_genTriggerEventFlag_(new GenericTriggerEventFlag(
318  iConfig.getParameter<edm::ParameterSet>("denGenericTriggerEventPSet"), consumesCollector(), *this)),
319  metSelection_(iConfig.getParameter<std::string>("metSelection")),
320  jetSelection_(iConfig.getParameter<std::string>("jetSelection")),
321  eleSelection_(iConfig.getParameter<std::string>("eleSelection")),
322  muoSelection_(iConfig.getParameter<std::string>("muoSelection")),
323  phoSelection_(iConfig.getParameter<std::string>("phoSelection")),
324  HTdefinition_(iConfig.getParameter<std::string>("HTdefinition")),
325  vtxSelection_(iConfig.getParameter<std::string>("vertexSelection")),
326  bjetSelection_(iConfig.getParameter<std::string>("bjetSelection")),
327  njets_(iConfig.getParameter<unsigned int>("njets")),
328  nelectrons_(iConfig.getParameter<unsigned int>("nelectrons")),
329  nmuons_(iConfig.getParameter<unsigned int>("nmuons")),
330  nphotons_(iConfig.getParameter<unsigned int>("nphotons")),
331  leptJetDeltaRmin_(iConfig.getParameter<double>("leptJetDeltaRmin")),
332  bJetMuDeltaRmax_(iConfig.getParameter<double>("bJetMuDeltaRmax")),
333  bJetDeltaEtaMax_(iConfig.getParameter<double>("bJetDeltaEtaMax")),
334  HTcut_(iConfig.getParameter<double>("HTcut")),
335  nbjets_(iConfig.getParameter<unsigned int>("nbjets")),
336  workingpoint_(iConfig.getParameter<double>("workingpoint")),
337  applyLeptonPVcuts_(iConfig.getParameter<bool>("applyLeptonPVcuts")),
338  invMassUppercut_(iConfig.getParameter<double>("invMassUppercut")),
339  invMassLowercut_(iConfig.getParameter<double>("invMassLowercut")),
340  opsign_(iConfig.getParameter<bool>("oppositeSignMuons")),
341  MHTdefinition_(iConfig.getParameter<std::string>("MHTdefinition")),
342  MHTcut_(iConfig.getParameter<double>("MHTcut")),
343  invMassCutInAllMuPairs_(iConfig.getParameter<bool>("invMassCutInAllMuPairs")),
344  enablePhotonPlot_(iConfig.getParameter<bool>("enablePhotonPlot")),
345  enableMETPlot_(iConfig.getParameter<bool>("enableMETPlot")),
346  enable2DPlots_(iConfig.getParameter<bool>("enable2DPlots")) {
347  ObjME empty;
348 
349  muPhi_ = std::vector<ObjME>(nmuons_, empty);
350  muEta_ = std::vector<ObjME>(nmuons_, empty);
351  muPt_ = std::vector<ObjME>(nmuons_, empty);
352  muEta_variableBinning_ = std::vector<ObjME>(nmuons_, empty);
353  muPt_variableBinning_ = std::vector<ObjME>(nmuons_, empty);
354  muPtEta_ = std::vector<ObjME>(nmuons_, empty);
355  muEtaPhi_ = std::vector<ObjME>(nmuons_, empty);
356 
357  elePhi_ = std::vector<ObjME>(nelectrons_, empty);
358  eleEta_ = std::vector<ObjME>(nelectrons_, empty);
359  elePt_ = std::vector<ObjME>(nelectrons_, empty);
360  eleEta_variableBinning_ = std::vector<ObjME>(nelectrons_, empty);
361  elePt_variableBinning_ = std::vector<ObjME>(nelectrons_, empty);
362  elePtEta_ = std::vector<ObjME>(nelectrons_, empty);
363  eleEtaPhi_ = std::vector<ObjME>(nelectrons_, empty);
364 
365  jetPhi_ = std::vector<ObjME>(njets_, empty);
366  jetEta_ = std::vector<ObjME>(njets_, empty);
367  jetPt_ = std::vector<ObjME>(njets_, empty);
368  jetEta_variableBinning_ = std::vector<ObjME>(njets_, empty);
369  jetPt_variableBinning_ = std::vector<ObjME>(njets_, empty);
370  jetPtEta_ = std::vector<ObjME>(njets_, empty);
371  jetEtaPhi_ = std::vector<ObjME>(njets_, empty);
372 
373  //Menglei Sun
374  phoPhi_ = std::vector<ObjME>(nphotons_, empty);
375  phoEta_ = std::vector<ObjME>(nphotons_, empty);
376  phoPt_ = std::vector<ObjME>(nphotons_, empty);
377  phoPtEta_ = std::vector<ObjME>(nphotons_, empty);
378  phoEtaPhi_ = std::vector<ObjME>(nphotons_, empty);
379 
380  // Marina
381  bjetPhi_ = std::vector<ObjME>(nbjets_, empty);
382  bjetEta_ = std::vector<ObjME>(nbjets_, empty);
383  bjetPt_ = std::vector<ObjME>(nbjets_, empty);
384  bjetCSV_ = std::vector<ObjME>(nbjets_, empty);
385  bjetEta_variableBinning_ = std::vector<ObjME>(nbjets_, empty);
386  bjetPt_variableBinning_ = std::vector<ObjME>(nbjets_, empty);
387  bjetPtEta_ = std::vector<ObjME>(nbjets_, empty);
388  bjetEtaPhi_ = std::vector<ObjME>(nbjets_, empty);
389  bjetCSVHT_ = std::vector<ObjME>(nbjets_, empty);
390  //Suvankar
391  lepPVcuts_.dxy = (iConfig.getParameter<edm::ParameterSet>("leptonPVcuts")).getParameter<double>("dxy");
392  lepPVcuts_.dz = (iConfig.getParameter<edm::ParameterSet>("leptonPVcuts")).getParameter<double>("dz");
393 }
394 
397  num_genTriggerEventFlag_.reset();
399  den_genTriggerEventFlag_.reset();
400 }
401 
402 void TopMonitor::bookHistograms(DQMStore::IBooker& ibooker, edm::Run const& iRun, edm::EventSetup const& iSetup) {
403  // Initialize the GenericTriggerEventFlag
405  num_genTriggerEventFlag_->initRun(iRun, iSetup);
407  den_genTriggerEventFlag_->initRun(iRun, iSetup);
408 
409  // check if every HLT path specified in numerator and denominator has a valid match in the HLT Menu
411  den_genTriggerEventFlag_->on() && num_genTriggerEventFlag_->allHLTPathsAreValid() &&
412  den_genTriggerEventFlag_->allHLTPathsAreValid());
413 
414  // if valid HLT paths are required,
415  // create DQM outputs only if all paths are valid
417  return;
418  }
419 
420  std::string histname, histtitle;
421 
422  std::string currentFolder = folderName_;
423  ibooker.setCurrentFolder(currentFolder);
424 
425  if (enableMETPlot_) {
426  histname = "met";
427  histtitle = "PFMET";
428  bookME(ibooker, metME_, histname, histtitle, met_binning_.nbins, met_binning_.xmin, met_binning_.xmax);
429  setMETitle(metME_, "PF MET [GeV]", "events / [GeV]");
430 
431  histname = "metPhi";
432  histtitle = "PFMET phi";
433  bookME(ibooker, metPhiME_, histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
434  setMETitle(metPhiME_, "PF MET #phi", "events / 0.1 rad");
435 
436  histname = "met_variable";
437  histtitle = "PFMET";
438  bookME(ibooker, metME_variableBinning_, histname, histtitle, met_variable_binning_);
439  setMETitle(metME_variableBinning_, "PF MET [GeV]", "events / [GeV]");
440 
441  histname = "metVsLS";
442  histtitle = "PFMET vs LS";
443  bookME(ibooker,
444  metVsLS_,
445  histname,
446  histtitle,
452  setMETitle(metVsLS_, "LS", "PF MET [GeV]");
453  }
454 
455  if (njets_ > 0) {
456  histname = "jetVsLS";
457  histtitle = "jet pt vs LS";
458  bookME(ibooker,
459  jetVsLS_,
460  histname,
461  histtitle,
466  pt_binning_.xmax);
467  setMETitle(jetVsLS_, "LS", "jet pt [GeV]");
468 
469  histname = "jetEtaPhi_HEP17";
470  histtitle = "jet #eta-#phi for HEP17";
471  bookME(ibooker, jetEtaPhi_HEP17_, histname, histtitle, 10, -2.5, 2.5, 18, -3.1415, 3.1415); // for HEP17 monitoring
472  setMETitle(jetEtaPhi_HEP17_, "jet #eta", "jet #phi");
473 
474  histname = "jetMulti";
475  histtitle = "jet multiplicity";
476  bookME(ibooker, jetMulti_, histname, histtitle, 11, -.5, 10.5);
477  setMETitle(jetMulti_, "jet multiplicity", "events");
478  }
479 
480  if (nmuons_ > 0) {
481  histname = "muVsLS";
482  histtitle = "muon pt vs LS";
483  bookME(ibooker,
484  muVsLS_,
485  histname,
486  histtitle,
491  pt_binning_.xmax);
492  setMETitle(muVsLS_, "LS", "muon pt [GeV]");
493 
494  histname = "muMulti";
495  histtitle = "muon multiplicity";
496  bookME(ibooker, muMulti_, histname, histtitle, 6, -.5, 5.5);
497  setMETitle(muMulti_, "muon multiplicity", "events");
498 
499  if (njets_ > 0) {
500  histname = "DeltaR_jet_Mu";
501  histtitle = "#DeltaR(jet,mu)";
502  bookME(ibooker, DeltaR_jet_Mu_, histname, histtitle, DR_binning_.nbins, DR_binning_.xmin, DR_binning_.xmax);
503  setMETitle(DeltaR_jet_Mu_, "#DeltaR(jet,mu)", "events");
504  }
505  }
506 
507  if (nelectrons_ > 0) {
508  histname = "eleVsLS";
509  histtitle = "electron pt vs LS";
510  bookME(ibooker,
511  eleVsLS_,
512  histname,
513  histtitle,
518  pt_binning_.xmax);
519  setMETitle(eleVsLS_, "LS", "electron pt [GeV]");
520 
521  histname = "eleMulti";
522  histtitle = "electron multiplicity";
523  bookME(ibooker, eleMulti_, histname, histtitle, 6, -.5, 5.5);
524  setMETitle(eleMulti_, "electron multiplicity", "events");
525 
526  if (njets_ > 0 && enable2DPlots_) {
527  histname = "elePt_jetPt";
528  histtitle = "electron pt vs jet pt";
530  setMETitle(elePt_jetPt_, "leading electron pt", "leading jet pt");
531  }
532 
533  if (nmuons_ > 0 && enable2DPlots_) {
534  histname = "elePt_muPt";
535  histtitle = "electron pt vs muon pt";
537  setMETitle(elePt_muPt_, "electron pt [GeV]", "muon pt [GeV]");
538 
539  histname = "eleEta_muEta";
540  histtitle = "electron #eta vs muon #eta";
542  setMETitle(eleEta_muEta_, "electron #eta", "muon #eta");
543  }
544  }
545 
546  //Menglei
547  if (enablePhotonPlot_) {
548  if (nphotons_ > 0) {
549  histname = "photonVsLS";
550  histtitle = "photon pt vs LS";
551  bookME(ibooker,
552  phoVsLS_,
553  histname,
554  histtitle,
559  pt_binning_.xmax);
560  setMETitle(phoVsLS_, "LS", "photon pt [GeV]");
561  }
562  }
563 
564  // Marina
565  if (nbjets_ > 0) {
566  histname = "bjetVsLS";
567  histtitle = "b-jet pt vs LS";
568  bookME(ibooker,
569  bjetVsLS_,
570  histname,
571  histtitle,
576  pt_binning_.xmax);
577  setMETitle(bjetVsLS_, "LS", "b-jet pt [GeV]");
578 
579  histname = "bjetMulti";
580  histtitle = "b-jet multiplicity";
581  bookME(ibooker, bjetMulti_, histname, histtitle, 6, -.5, 5.5);
582  setMETitle(bjetMulti_, "b-jet multiplicity", "events");
583  }
584 
585  if (nelectrons_ > 1 && enable2DPlots_) {
586  histname = "ele1Pt_ele2Pt";
587  histtitle = "electron-1 pt vs electron-2 pt";
589  setMETitle(ele1Pt_ele2Pt_, "electron-1 pt [GeV]", "electron-2 pt [GeV]");
590 
591  histname = "ele1Eta_ele2Eta";
592  histtitle = "electron-1 #eta vs electron-2 #eta";
594  setMETitle(ele1Eta_ele2Eta_, "electron-1 #eta", "electron-2 #eta");
595  }
596 
597  if (nmuons_ > 1) {
598  if (enable2DPlots_) {
599  histname = "mu1Pt_mu2Pt";
600  histtitle = "muon-1 pt vs muon-2 pt";
602  setMETitle(mu1Pt_mu2Pt_, "muon-1 pt [GeV]", "muon-2 pt [GeV]");
603 
604  histname = "mu1Eta_mu2Eta";
605  histtitle = "muon-1 #eta vs muon-2 #eta";
607  setMETitle(mu1Eta_mu2Eta_, "muon-1 #eta", "muon-2 #eta");
608  }
609  //george
610  histname = "invMass";
611  histtitle = "M mu1 mu2";
612  bookME(ibooker,
614  histname,
615  histtitle,
619  setMETitle(invMass_mumu_, "M(mu1,mu2) [GeV]", "events");
620  histname = "invMass_variable";
621  histtitle = "M mu1 mu2 variable";
623  setMETitle(invMass_mumu_variableBinning_, "M(mu1,mu2) [GeV]", "events / [GeV]");
624  }
625 
626  if (HTcut_ > 0) {
627  histname = "htVsLS";
628  histtitle = "event HT vs LS";
629  bookME(ibooker,
630  htVsLS_,
631  histname,
632  histtitle,
637  pt_binning_.xmax);
638  setMETitle(htVsLS_, "LS", "event HT [GeV]");
639 
640  histname = "eventHT";
641  histtitle = "event HT";
642  bookME(ibooker, eventHT_, histname, histtitle, HT_binning_.nbins, HT_binning_.xmin, HT_binning_.xmax);
643  setMETitle(eventHT_, " event HT [GeV]", "events");
644  histname.append("_variableBinning");
645  bookME(ibooker, eventHT_variableBinning_, histname, histtitle, HT_variable_binning_);
646  setMETitle(eventHT_variableBinning_, "event HT [GeV]", "events");
647 
648  if (nelectrons_ > 0 && enable2DPlots_) {
649  histname = "elePt_eventHT";
650  histtitle = "electron pt vs event HT";
652  setMETitle(elePt_eventHT_, "leading electron pt", "event HT");
653  }
654  }
655 
656  if (MHTcut_ > 0) {
657  //george
658  histname = "eventMHT";
659  histtitle = "event MHT";
660  bookME(ibooker, eventMHT_, histname, histtitle, MHT_binning_.nbins, MHT_binning_.xmin, MHT_binning_.xmax);
661  setMETitle(eventMHT_, " event MHT [GeV]", "events");
662 
663  histname = "eventMHT_variable";
664  histtitle = "event MHT variable";
665  bookME(ibooker, eventMHT_variableBinning_, histname, histtitle, MHT_variable_binning_);
666  setMETitle(eventMHT_variableBinning_, "event MHT [GeV]", "events / [GeV]");
667  }
668 
669  //Menglei
670  if (enablePhotonPlot_) {
671  if ((nmuons_ > 0) && (nphotons_ > 0)) {
672  histname = "muPt_phoPt", histtitle = "muon pt vs photon pt";
674  setMETitle(muPt_phoPt_, "muon pt [GeV]", "photon pt [GeV]");
675 
676  histname = "muEta_phoEta", histtitle = "muon #eta vs photon #eta";
678  setMETitle(muEta_phoEta_, "muon #eta", "photon #eta");
679  }
680  }
681 
682  for (unsigned int iMu = 0; iMu < nmuons_; ++iMu) {
683  std::string index = std::to_string(iMu + 1);
684 
685  histname = "muPt_";
686  histtitle = "muon p_{T} - ";
687  histname.append(index);
688  histtitle.append(index);
689  bookME(ibooker, muPt_.at(iMu), histname, histtitle, pt_binning_.nbins, pt_binning_.xmin, pt_binning_.xmax);
690  setMETitle(muPt_.at(iMu), "muon p_{T} [GeV]", "events");
691  histname.append("_variableBinning");
692  bookME(ibooker, muPt_variableBinning_.at(iMu), histname, histtitle, muPt_variable_binning_);
693  setMETitle(muPt_variableBinning_.at(iMu), "muon p_{T} [GeV]", "events");
694 
695  histname = "muEta_";
696  histtitle = "muon #eta - ";
697  histname.append(index);
698  histtitle.append(index);
699  bookME(ibooker, muEta_.at(iMu), histname, histtitle, eta_binning_.nbins, eta_binning_.xmin, eta_binning_.xmax);
700  setMETitle(muEta_.at(iMu), " muon #eta", "events");
701  histname.append("_variableBinning");
702  bookME(ibooker, muEta_variableBinning_.at(iMu), histname, histtitle, muEta_variable_binning_);
703  setMETitle(muEta_variableBinning_.at(iMu), " muon #eta", "events");
704 
705  histname = "muPhi_";
706  histtitle = "muon #phi - ";
707  histname.append(index);
708  histtitle.append(index);
709  bookME(ibooker, muPhi_.at(iMu), histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
710  setMETitle(muPhi_.at(iMu), " muon #phi", "events");
711 
712  if (enable2DPlots_) {
713  histname = "muPtEta_";
714  histtitle = "muon p_{T} - #eta - ";
715  histname.append(index);
716  histtitle.append(index);
717  bookME(ibooker, muPtEta_.at(iMu), histname, histtitle, muPt_variable_binning_2D_, muEta_variable_binning_2D_);
718  setMETitle(muPtEta_.at(iMu), "muon p_{T} [GeV]", "muon #eta");
719 
720  histname = "muEtaPhi_";
721  histtitle = "muon #eta - #phi - ";
722  histname.append(index);
723  histtitle.append(index);
724  bookME(ibooker, muEtaPhi_.at(iMu), histname, histtitle, muEta_variable_binning_2D_, phi_variable_binning_2D_);
725  setMETitle(muEtaPhi_.at(iMu), "muon #eta", "muon #phi");
726  }
727  }
728 
729  for (unsigned int iEle = 0; iEle < nelectrons_; ++iEle) {
730  std::string index = std::to_string(iEle + 1);
731 
732  histname = "elePt_";
733  histtitle = "electron p_{T} - ";
734  histname.append(index);
735  histtitle.append(index);
736  bookME(ibooker, elePt_.at(iEle), histname, histtitle, pt_binning_.nbins, pt_binning_.xmin, pt_binning_.xmax);
737  setMETitle(elePt_.at(iEle), "electron p_{T} [GeV]", "events");
738  histname.append("_variableBinning");
739  bookME(ibooker, elePt_variableBinning_.at(iEle), histname, histtitle, elePt_variable_binning_);
740  setMETitle(elePt_variableBinning_.at(iEle), "electron p_{T} [GeV]", "events");
741 
742  histname = "eleEta_";
743  histtitle = "electron #eta - ";
744  histname.append(index);
745  histtitle.append(index);
746  bookME(ibooker, eleEta_.at(iEle), histname, histtitle, eta_binning_.nbins, eta_binning_.xmin, eta_binning_.xmax);
747  setMETitle(eleEta_.at(iEle), " electron #eta", "events");
748  histname.append("_variableBinning");
749  bookME(ibooker, eleEta_variableBinning_.at(iEle), histname, histtitle, eleEta_variable_binning_);
750  setMETitle(eleEta_variableBinning_.at(iEle), "electron #eta", "events");
751 
752  histname = "elePhi_";
753  histtitle = "electron #phi - ";
754  histname.append(index);
755  histtitle.append(index);
756  bookME(ibooker, elePhi_.at(iEle), histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
757  setMETitle(elePhi_.at(iEle), " electron #phi", "events");
758 
759  if (enable2DPlots_) {
760  histname = "elePtEta_";
761  histtitle = "electron p_{T} - #eta - ";
762  histname.append(index);
763  histtitle.append(index);
764  bookME(ibooker, elePtEta_.at(iEle), histname, histtitle, elePt_variable_binning_2D_, eleEta_variable_binning_2D_);
765  setMETitle(elePtEta_.at(iEle), "electron p_{T} [GeV]", "electron #eta");
766 
767  histname = "eleEtaPhi_";
768  histtitle = "electron #eta - #phi - ";
769  histname.append(index);
770  histtitle.append(index);
771  bookME(ibooker, eleEtaPhi_.at(iEle), histname, histtitle, eleEta_variable_binning_2D_, phi_variable_binning_2D_);
772  setMETitle(eleEtaPhi_.at(iEle), "electron #eta", "electron #phi");
773  }
774  }
775 
776  //Menglei
777  if (enablePhotonPlot_) {
778  for (unsigned int iPho(0); iPho < nphotons_; iPho++) {
779  std::string index = std::to_string(iPho + 1);
780 
781  histname = "phoPt_";
782  histtitle = "photon p_{T} - ";
783  histname.append(index);
784  histtitle.append(index);
785  bookME(ibooker, phoPt_[iPho], histname, histtitle, pt_binning_.nbins, pt_binning_.xmin, pt_binning_.xmax);
786  setMETitle(phoPt_[iPho], "photon p_{T} [GeV]", "events");
787 
788  histname = "phoEta_";
789  histtitle = "photon #eta - ";
790  histname.append(index);
791  histtitle.append(index);
792  bookME(ibooker, phoEta_[iPho], histname, histtitle, eta_binning_.nbins, eta_binning_.xmin, eta_binning_.xmax);
793  setMETitle(phoEta_[iPho], "photon #eta", "events");
794 
795  histname = "phoPhi_";
796  histtitle = "photon #phi - ";
797  histname.append(index);
798  histtitle.append(index);
799  bookME(ibooker, phoPhi_[iPho], histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
800  setMETitle(phoPhi_[iPho], "photon #phi", "events");
801 
802  histname = "phoPtEta_";
803  histtitle = "photon p_{T} - #eta - ";
804  histname.append(index);
805  histtitle.append(index);
806  bookME(ibooker, phoPtEta_[iPho], histname, histtitle, phoPt_variable_binning_2D_, phoEta_variable_binning_2D_);
807  setMETitle(phoPtEta_[iPho], "photon p_{T} [GeV]", "photon #eta");
808 
809  histname = "phoEtaPhi_";
810  histtitle = "photon #eta - #phi - ";
811  histname.append(index);
812  histtitle.append(index);
813  bookME(ibooker, phoEtaPhi_[iPho], histname, histtitle, phoEta_variable_binning_2D_, phi_variable_binning_2D_);
814  setMETitle(phoEtaPhi_[iPho], "photon #eta", "photon #phi");
815  }
816  }
817 
818  for (unsigned int iJet = 0; iJet < njets_; ++iJet) {
819  std::string index = std::to_string(iJet + 1);
820 
821  histname = "jetPt_";
822  histtitle = "jet p_{T} - ";
823  histname.append(index);
824  histtitle.append(index);
825  bookME(ibooker, jetPt_.at(iJet), histname, histtitle, pt_binning_.nbins, pt_binning_.xmin, pt_binning_.xmax);
826  setMETitle(jetPt_.at(iJet), "jet p_{T} [GeV]", "events");
827  histname.append("_variableBinning");
828  bookME(ibooker, jetPt_variableBinning_.at(iJet), histname, histtitle, jetPt_variable_binning_);
829  setMETitle(jetPt_variableBinning_.at(iJet), "jet p_{T} [GeV]", "events");
830 
831  histname = "jetEta_";
832  histtitle = "jet #eta - ";
833  histname.append(index);
834  histtitle.append(index);
835  bookME(ibooker, jetEta_.at(iJet), histname, histtitle, eta_binning_.nbins, eta_binning_.xmin, eta_binning_.xmax);
836  setMETitle(jetEta_.at(iJet), "jet #eta", "events");
837  histname.append("_variableBinning");
838  bookME(ibooker, jetEta_variableBinning_.at(iJet), histname, histtitle, jetEta_variable_binning_);
839  setMETitle(jetEta_variableBinning_.at(iJet), "jet #eta", "events");
840 
841  histname = "jetPhi_";
842  histtitle = "jet #phi - ";
843  histname.append(index);
844  histtitle.append(index);
845  bookME(ibooker, jetPhi_.at(iJet), histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
846  setMETitle(jetPhi_.at(iJet), "jet #phi", "events");
847 
848  if (enable2DPlots_) {
849  histname = "jetPtEta_";
850  histtitle = "jet p_{T} - #eta - ";
851  histname.append(index);
852  histtitle.append(index);
853  bookME(ibooker, jetPtEta_.at(iJet), histname, histtitle, jetPt_variable_binning_2D_, jetEta_variable_binning_2D_);
854  setMETitle(jetPtEta_.at(iJet), "jet p_{T} [GeV]", "jet #eta");
855 
856  histname = "jetEtaPhi_";
857  histtitle = "jet #eta - #phi - ";
858  histname.append(index);
859  histtitle.append(index);
860  bookME(ibooker, jetEtaPhi_.at(iJet), histname, histtitle, jetEta_variable_binning_2D_, phi_variable_binning_2D_);
861  setMETitle(jetEtaPhi_.at(iJet), "jet #eta", "jet #phi");
862  }
863  }
864 
865  // Marina
866  for (unsigned int iBJet = 0; iBJet < nbjets_; ++iBJet) {
867  std::string index = std::to_string(iBJet + 1);
868 
869  histname = "bjetPt_";
870  histtitle = "b-jet p_{T} - ";
871  histname.append(index);
872  histtitle.append(index);
873  bookME(ibooker, bjetPt_.at(iBJet), histname, histtitle, pt_binning_.nbins, pt_binning_.xmin, pt_binning_.xmax);
874  setMETitle(bjetPt_.at(iBJet), "b-jet p_{T} [GeV]", "events");
875  histname.append("_variableBinning");
876  bookME(ibooker, bjetPt_variableBinning_.at(iBJet), histname, histtitle, jetPt_variable_binning_);
877  setMETitle(bjetPt_variableBinning_.at(iBJet), "b-jet p_{T} [GeV]", "events");
878 
879  histname = "bjetEta_";
880  histtitle = "b-jet #eta - ";
881  histname.append(index);
882  histtitle.append(index);
883  bookME(ibooker, bjetEta_.at(iBJet), histname, histtitle, eta_binning_.nbins, eta_binning_.xmin, eta_binning_.xmax);
884  setMETitle(bjetEta_.at(iBJet), "b-jet #eta", "events");
885  histname.append("_variableBinning");
886  bookME(ibooker, bjetEta_variableBinning_.at(iBJet), histname, histtitle, jetEta_variable_binning_);
887  setMETitle(bjetEta_variableBinning_.at(iBJet), "b-jet #eta", "events");
888 
889  histname = "bjetPhi_";
890  histtitle = "b-jet #phi - ";
891  histname.append(index);
892  histtitle.append(index);
893  bookME(ibooker, bjetPhi_.at(iBJet), histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
894  setMETitle(bjetPhi_.at(iBJet), "b-jet #phi", "events");
895 
896  histname = "bjetCSV_";
897  histtitle = "b-jet CSV - ";
898  histname.append(index);
899  histtitle.append(index);
900  bookME(ibooker, bjetCSV_.at(iBJet), histname, histtitle, csv_binning_.nbins, csv_binning_.xmin, csv_binning_.xmax);
901  setMETitle(bjetCSV_.at(iBJet), "b-jet CSV", "events");
902 
903  if (enable2DPlots_) {
904  histname = "bjetPtEta_";
905  histtitle = "b-jet p_{T} - #eta - ";
906  histname.append(index);
907  histtitle.append(index);
908  bookME(
909  ibooker, bjetPtEta_.at(iBJet), histname, histtitle, jetPt_variable_binning_2D_, jetEta_variable_binning_2D_);
910  setMETitle(bjetPtEta_.at(iBJet), "b-jet p_{T} [GeV]", "b-jet #eta");
911 
912  histname = "bjetEtaPhi_";
913  histtitle = "b-jet #eta - #phi - ";
914  histname.append(index);
915  histtitle.append(index);
916  bookME(
917  ibooker, bjetEtaPhi_.at(iBJet), histname, histtitle, jetEta_variable_binning_2D_, phi_variable_binning_2D_);
918  setMETitle(bjetEtaPhi_.at(iBJet), "b-jet #eta", "b-jet #phi");
919  }
920 
921  histname = "bjetCSVHT_";
922  histtitle = "HT - b-jet CSV - ";
923  histname.append(index);
924  histtitle.append(index);
925  bookME(ibooker,
926  bjetCSVHT_.at(iBJet),
927  histname,
928  histtitle,
934  HT_binning_.xmax);
935  setMETitle(bjetCSVHT_.at(iBJet), "b-jet CSV", "event HT [GeV]");
936  }
937 }
938 
940  // if valid HLT paths are required,
941  // analyze event only if all paths are valid
943  return;
944  }
945 
946  // Filter out events if Trigger Filtering is requested
947  if (den_genTriggerEventFlag_->on() && !den_genTriggerEventFlag_->accept(iEvent, iSetup)) {
948  return;
949  }
950 
952  iEvent.getByToken(vtxToken_, primaryVertices);
953  //Primary Vertex selection
954  const reco::Vertex* pv = nullptr;
955  for (auto const& v : *primaryVertices) {
956  if (!vtxSelection_(v)) {
957  continue;
958  }
959  pv = &v;
960  break;
961  }
962  if (applyLeptonPVcuts_ && (pv == nullptr)) {
963  edm::LogWarning("TopMonitor") << "Invalid handle to reco::VertexCollection, event will be skipped";
964  return;
965  }
966 
968  iEvent.getByToken(metToken_, metHandle);
969  if ((not metHandle.isValid()) && enableMETPlot_) {
970  edm::LogWarning("TopMonitor") << "MET handle not valid \n";
971  return;
972  }
973 
974  double met_pt(-99.);
975  double met_phi(-99.);
976 
977  if (enableMETPlot_) {
978  const reco::PFMET& pfmet = metHandle->front();
979 
980  if (!metSelection_(pfmet)) {
981  return;
982  }
983 
984  met_pt = pfmet.pt();
985  met_phi = pfmet.phi();
986  }
987 
989  iEvent.getByToken(eleToken_, eleHandle);
990  if (!eleHandle.isValid() && nelectrons_ > 0) {
991  edm::LogWarning("TopMonitor") << "Electron handle not valid \n";
992  return;
993  }
994 
995  edm::Handle<edm::ValueMap<bool> > eleIDHandle;
996  iEvent.getByToken(elecIDToken_, eleIDHandle);
997  if (!eleIDHandle.isValid() && nelectrons_ > 0) {
998  edm::LogWarning("TopMonitor") << "Electron ID handle not valid \n";
999  return;
1000  }
1001 
1002  std::vector<reco::GsfElectron> electrons;
1003  if (nelectrons_ > 0) {
1004  if (eleHandle->size() < nelectrons_) {
1005  return;
1006  }
1007 
1008  for (size_t index = 0; index < eleHandle->size(); index++) {
1009  const auto e = eleHandle->at(index);
1010  const auto el = eleHandle->ptrAt(index);
1011 
1012  bool pass_id = (*eleIDHandle)[el];
1013 
1014  if (eleSelection_(e) && pass_id) {
1015  electrons.push_back(e);
1016  }
1017 
1018  if (applyLeptonPVcuts_ && ((std::fabs(e.gsfTrack()->dxy(pv->position())) >= lepPVcuts_.dxy) ||
1019  (std::fabs(e.gsfTrack()->dz(pv->position())) >= lepPVcuts_.dz))) {
1020  continue;
1021  }
1022  }
1023 
1024  if (electrons.size() < nelectrons_) {
1025  return;
1026  }
1027  }
1028 
1030  iEvent.getByToken(muoToken_, muoHandle);
1031  if (!muoHandle.isValid() && nmuons_ > 0) {
1032  edm::LogWarning("TopMonitor") << "Muon handle not valid \n";
1033  return;
1034  }
1035 
1036  if (muoHandle->size() < nmuons_) {
1037  return;
1038  }
1039 
1040  std::vector<reco::Muon> muons;
1041  if (nmuons_ > 0) {
1042  for (auto const& m : *muoHandle) {
1043  if (muoSelection_(m)) {
1044  muons.push_back(m);
1045  }
1046 
1047  if (applyLeptonPVcuts_ && ((std::fabs(m.muonBestTrack()->dxy(pv->position())) >= lepPVcuts_.dxy) ||
1048  (std::fabs(m.muonBestTrack()->dz(pv->position())) >= lepPVcuts_.dz))) {
1049  continue;
1050  }
1051  }
1052 
1053  if (muons.size() < nmuons_) {
1054  return;
1055  }
1056  }
1057 
1058  double mll(-2);
1059  if (nmuons_ > 1) {
1060  mll = (muons[0].p4() + muons[1].p4()).M();
1061 
1062  if ((invMassUppercut_ > -1) && (invMassLowercut_ > -1) && ((mll > invMassUppercut_) || (mll < invMassLowercut_))) {
1063  return;
1064  }
1065  if (opsign_ && (muons[0].charge() == muons[1].charge())) {
1066  return;
1067  }
1068  }
1069 
1071  iEvent.getByToken(phoToken_, phoHandle);
1072  if (!phoHandle.isValid()) {
1073  edm::LogWarning("TopMonitor") << "Photon handle not valid \n";
1074  return;
1075  }
1076  if (phoHandle->size() < nphotons_) {
1077  return;
1078  }
1079 
1080  std::vector<reco::Photon> photons;
1081  for (auto const& p : *phoHandle) {
1082  if (phoSelection_(p)) {
1083  photons.push_back(p);
1084  }
1085  }
1086  if (photons.size() < nphotons_) {
1087  return;
1088  }
1089 
1090  double eventHT(0.);
1091  math::XYZTLorentzVector eventMHT(0., 0., 0., 0.);
1092 
1094  iEvent.getByToken(jetToken_, jetHandle);
1095  if (!jetHandle.isValid() && njets_ > 0) {
1096  edm::LogWarning("TopMonitor") << "Jet handle not valid \n";
1097  return;
1098  }
1099  std::vector<reco::PFJet> jets;
1100  if (njets_ > 0) {
1101  if (jetHandle->size() < njets_)
1102  return;
1103  for (auto const& j : *jetHandle) {
1104  if (HTdefinition_(j)) {
1105  eventHT += j.pt();
1106  }
1107  if (MHTdefinition_(j)) {
1108  eventMHT += j.p4();
1109  }
1110  if (jetSelection_(j)) {
1111  bool isJetOverlappedWithLepton = false;
1112  if (nmuons_ > 0) {
1113  for (auto const& m : muons) {
1114  if (deltaR(j, m) < leptJetDeltaRmin_) {
1115  isJetOverlappedWithLepton = true;
1116  break;
1117  }
1118  }
1119  }
1120  if (isJetOverlappedWithLepton)
1121  continue;
1122  if (nelectrons_ > 0) {
1123  for (auto const& e : electrons) {
1124  if (deltaR(j, e) < leptJetDeltaRmin_) {
1125  isJetOverlappedWithLepton = true;
1126  break;
1127  }
1128  }
1129  }
1130  if (isJetOverlappedWithLepton)
1131  continue;
1132  jets.push_back(j);
1133  }
1134  }
1135  if (jets.size() < njets_)
1136  return;
1137  }
1138 
1139  if (eventHT < HTcut_) {
1140  return;
1141  }
1142 
1143  if ((MHTcut_ > 0) && (eventMHT.pt() < MHTcut_)) {
1144  return;
1145  }
1146 
1147  bool allpairs = false;
1148  if (nmuons_ > 2) {
1149  double mumu_mass;
1150  for (unsigned int idx = 0; idx < muons.size(); idx++) {
1151  for (unsigned int idx2 = idx + 1; idx2 < muons.size(); idx2++) {
1152  //compute inv mass of two different leptons
1153  mumu_mass = (muons[idx2].p4() + muons[idx2].p4()).M();
1154  if (mumu_mass < invMassLowercut_ || mumu_mass > invMassUppercut_)
1155  allpairs = true;
1156  }
1157  }
1158  }
1159  //cut only if enabled and the event has a pair that failed the mll range
1160  if (allpairs && invMassCutInAllMuPairs_) {
1161  return;
1162  }
1163 
1164  JetTagMap bjets;
1165 
1166  if (nbjets_ > 0) {
1167  // map of Jet,btagValues (for all jets passing bJetSelection_)
1168  // - btagValue of each jet is calculated as sum of values from InputTags in jetTagTokens_
1169  JetTagMap allJetBTagVals;
1170 
1171  for (const auto& jetTagToken : jetTagTokens_) {
1173  iEvent.getByToken(jetTagToken, bjetHandle);
1174  if (not bjetHandle.isValid()) {
1175  edm::LogWarning("TopMonitor") << "B-Jet handle not valid, will skip event \n";
1176  return;
1177  }
1178 
1179  const reco::JetTagCollection& bTags = *(bjetHandle.product());
1180 
1181  for (const auto& i_jetTag : bTags) {
1182  const auto& jetRef = i_jetTag.first;
1183 
1184  if (not bjetSelection_(*dynamic_cast<const reco::Jet*>(jetRef.get()))) {
1185  continue;
1186  }
1187 
1188  const auto btagVal = i_jetTag.second;
1189 
1190  if (not std::isfinite(btagVal)) {
1191  continue;
1192  }
1193 
1194  if (allJetBTagVals.find(jetRef) != allJetBTagVals.end()) {
1195  allJetBTagVals.at(jetRef) += btagVal;
1196  } else {
1197  allJetBTagVals.insert(JetTagMap::value_type(jetRef, btagVal));
1198  }
1199  }
1200  }
1201 
1202  for (const auto& jetBTagVal : allJetBTagVals) {
1203  if (jetBTagVal.second < workingpoint_) {
1204  continue;
1205  }
1206 
1207  bjets.insert(JetTagMap::value_type(jetBTagVal.first, jetBTagVal.second));
1208  }
1209 
1210  if (bjets.size() < nbjets_) {
1211  return;
1212  }
1213  }
1214 
1215  if (nbjets_ > 1) {
1216  double deltaEta = std::abs(bjets.begin()->first->eta() - (++bjets.begin())->first->eta());
1217  if (deltaEta > bJetDeltaEtaMax_)
1218  return;
1219  }
1220 
1221  if ((nbjets_ > 0) && (nmuons_ > 0)) {
1222  bool foundMuonInsideJet = false;
1223  for (auto const& bjet : bjets) {
1224  for (auto const& mu : muons) {
1225  double dR = deltaR(*bjet.first, mu);
1226  if (dR < bJetMuDeltaRmax_) {
1227  foundMuonInsideJet = true;
1228  break;
1229  }
1230  }
1231  if (foundMuonInsideJet)
1232  break;
1233  }
1234 
1235  if (!foundMuonInsideJet)
1236  return;
1237  }
1238 
1239  const int ls = iEvent.id().luminosityBlock();
1240 
1241  // numerator condition
1242  const bool trg_passed = (num_genTriggerEventFlag_->on() && num_genTriggerEventFlag_->accept(iEvent, iSetup));
1243 
1244  if (enableMETPlot_) {
1245  metME_.fill(trg_passed, met_pt);
1246  metME_variableBinning_.fill(trg_passed, met_pt);
1247  metPhiME_.fill(trg_passed, met_phi);
1248  metVsLS_.fill(trg_passed, ls, met_pt);
1249  }
1250  if (HTcut_ > 0) {
1251  eventHT_.fill(trg_passed, eventHT);
1252  eventHT_variableBinning_.fill(trg_passed, eventHT);
1253  htVsLS_.fill(trg_passed, ls, eventHT);
1254  }
1255  //george
1256  if (MHTcut_ > 0) {
1257  eventMHT_.fill(trg_passed, eventMHT.pt());
1258  eventMHT_variableBinning_.fill(trg_passed, eventMHT.pt());
1259  }
1260 
1261  if (njets_ > 0) {
1262  jetMulti_.fill(trg_passed, jets.size());
1263  jetEtaPhi_HEP17_.fill(trg_passed, jets.at(0).eta(), jets.at(0).phi()); // for HEP17 monitorning
1264  jetVsLS_.fill(trg_passed, ls, jets.at(0).pt());
1265  }
1266 
1267  if (enablePhotonPlot_) {
1268  phoMulti_.fill(trg_passed, photons.size());
1269  }
1270 
1271  // Marina
1272  if (nbjets_ > 0) {
1273  bjetMulti_.fill(trg_passed, bjets.size());
1274  bjetVsLS_.fill(trg_passed, ls, bjets.begin()->first->pt());
1275  }
1276 
1277  if (nmuons_ > 0) {
1278  muMulti_.fill(trg_passed, muons.size());
1279  muVsLS_.fill(trg_passed, ls, muons.at(0).pt());
1280  if (nmuons_ > 1) {
1281  mu1Pt_mu2Pt_.fill(trg_passed, muons.at(0).pt(), muons.at(1).pt());
1282  mu1Eta_mu2Eta_.fill(trg_passed, muons.at(0).eta(), muons.at(1).eta());
1283  invMass_mumu_.fill(trg_passed, mll);
1284  invMass_mumu_variableBinning_.fill(trg_passed, mll);
1285  }
1286  if (njets_ > 0) {
1287  DeltaR_jet_Mu_.fill(trg_passed, deltaR(jets.at(0), muons.at(0)));
1288  }
1289  }
1290 
1291  if (nelectrons_ > 0) {
1292  eleMulti_.fill(trg_passed, electrons.size());
1293  eleVsLS_.fill(trg_passed, ls, electrons.at(0).pt());
1294  if (HTcut_ > 0)
1295  elePt_eventHT_.fill(trg_passed, electrons.at(0).pt(), eventHT);
1296  if (njets_ > 0)
1297  elePt_jetPt_.fill(trg_passed, electrons.at(0).pt(), jets.at(0).pt());
1298  if (nmuons_ > 0) {
1299  elePt_muPt_.fill(trg_passed, electrons.at(0).pt(), muons.at(0).pt());
1300  eleEta_muEta_.fill(trg_passed, electrons.at(0).eta(), muons.at(0).eta());
1301  }
1302  if (nelectrons_ > 1) {
1303  ele1Pt_ele2Pt_.fill(trg_passed, electrons.at(0).pt(), electrons.at(1).pt());
1304  ele1Eta_ele2Eta_.fill(trg_passed, electrons.at(0).eta(), electrons.at(1).eta());
1305  }
1306  }
1307 
1308  if (enablePhotonPlot_) {
1309  if (nphotons_ > 0) {
1310  phoVsLS_.fill(trg_passed, ls, photons.at(0).pt());
1311  if (nmuons_ > 0) {
1312  muPt_phoPt_.fill(trg_passed, muons.at(0).pt(), photons.at(0).pt());
1313  muEta_phoEta_.fill(trg_passed, muons.at(0).eta(), photons.at(0).eta());
1314  }
1315  }
1316  }
1317 
1318  for (unsigned int iMu = 0; iMu < muons.size(); ++iMu) {
1319  if (iMu >= nmuons_)
1320  break;
1321  muPhi_.at(iMu).fill(trg_passed, muons.at(iMu).phi());
1322  muEta_.at(iMu).fill(trg_passed, muons.at(iMu).eta());
1323  muPt_.at(iMu).fill(trg_passed, muons.at(iMu).pt());
1324  muEta_variableBinning_.at(iMu).fill(trg_passed, muons.at(iMu).eta());
1325  muPt_variableBinning_.at(iMu).fill(trg_passed, muons.at(iMu).pt());
1326  muPtEta_.at(iMu).fill(trg_passed, muons.at(iMu).pt(), muons.at(iMu).eta());
1327  muEtaPhi_.at(iMu).fill(trg_passed, muons.at(iMu).eta(), muons.at(iMu).phi());
1328  }
1329  for (unsigned int iEle = 0; iEle < electrons.size(); ++iEle) {
1330  if (iEle >= nelectrons_)
1331  break;
1332  elePhi_.at(iEle).fill(trg_passed, electrons.at(iEle).phi());
1333  eleEta_.at(iEle).fill(trg_passed, electrons.at(iEle).eta());
1334  elePt_.at(iEle).fill(trg_passed, electrons.at(iEle).pt());
1335  eleEta_variableBinning_.at(iEle).fill(trg_passed, electrons.at(iEle).eta());
1336  elePt_variableBinning_.at(iEle).fill(trg_passed, electrons.at(iEle).pt());
1337  elePtEta_.at(iEle).fill(trg_passed, electrons.at(iEle).pt(), electrons.at(iEle).eta());
1338  eleEtaPhi_.at(iEle).fill(trg_passed, electrons.at(iEle).eta(), electrons.at(iEle).phi());
1339  }
1340  //Menglei
1341  if (enablePhotonPlot_) {
1342  for (unsigned int iPho = 0; iPho < photons.size(); ++iPho) {
1343  if (iPho >= nphotons_)
1344  break;
1345  phoPhi_[iPho].fill(trg_passed, photons[iPho].phi());
1346  phoEta_[iPho].fill(trg_passed, photons[iPho].eta());
1347  phoPt_[iPho].fill(trg_passed, photons[iPho].pt());
1348  phoPtEta_[iPho].fill(trg_passed, photons[iPho].pt(), photons[iPho].eta());
1349  phoEtaPhi_[iPho].fill(trg_passed, photons[iPho].eta(), photons[iPho].phi());
1350  }
1351  }
1352 
1353  for (unsigned int iJet = 0; iJet < jets.size(); ++iJet) {
1354  if (iJet >= njets_)
1355  break;
1356  jetPhi_.at(iJet).fill(trg_passed, jets.at(iJet).phi());
1357  jetEta_.at(iJet).fill(trg_passed, jets.at(iJet).eta());
1358  jetPt_.at(iJet).fill(trg_passed, jets.at(iJet).pt());
1359  jetEta_variableBinning_.at(iJet).fill(trg_passed, jets.at(iJet).eta());
1360  jetPt_variableBinning_.at(iJet).fill(trg_passed, jets.at(iJet).pt());
1361  jetPtEta_.at(iJet).fill(trg_passed, jets.at(iJet).pt(), jets.at(iJet).eta());
1362  jetEtaPhi_.at(iJet).fill(trg_passed, jets.at(iJet).eta(), jets.at(iJet).phi());
1363  }
1364 
1365  // Marina
1366  unsigned int iBJet = 0;
1367  for (auto& bjet : bjets) {
1368  if (iBJet >= nbjets_)
1369  break;
1370 
1371  bjetPhi_.at(iBJet).fill(trg_passed, bjet.first->phi());
1372  bjetEta_.at(iBJet).fill(trg_passed, bjet.first->eta());
1373  bjetPt_.at(iBJet).fill(trg_passed, bjet.first->pt());
1374  bjetCSV_.at(iBJet).fill(trg_passed, std::fmax(0.0, bjet.second));
1375  bjetEta_variableBinning_.at(iBJet).fill(trg_passed, bjet.first->eta());
1376  bjetPt_variableBinning_.at(iBJet).fill(trg_passed, bjet.first->pt());
1377  bjetPtEta_.at(iBJet).fill(trg_passed, bjet.first->pt(), bjet.first->eta());
1378  bjetEtaPhi_.at(iBJet).fill(trg_passed, bjet.first->eta(), bjet.first->phi());
1379  bjetCSVHT_.at(iBJet).fill(trg_passed, std::fmax(0.0, bjet.second), eventHT);
1380 
1381  iBJet++;
1382  }
1383 }
1384 
1387  desc.add<std::string>("FolderName", "HLT/TOP");
1388 
1389  desc.add<bool>("requireValidHLTPaths", true);
1390 
1391  desc.add<edm::InputTag>("vertices", edm::InputTag("offlinePrimaryVertices"));
1392  desc.add<edm::InputTag>("muons", edm::InputTag("muons"));
1393  desc.add<edm::InputTag>("electrons", edm::InputTag("gedGsfElectrons"));
1394  desc.add<edm::InputTag>("elecID",
1395  edm::InputTag("egmGsfElectronIDsForDQM:cutBasedElectronID-RunIIIWinter22-V1-tight"));
1396  desc.add<edm::InputTag>("photons", edm::InputTag("photons"));
1397  desc.add<edm::InputTag>("jets", edm::InputTag("ak4PFJetsCHS"));
1398  desc.add<std::vector<edm::InputTag> >(
1399  "btagAlgos", {edm::InputTag("pfDeepCSVJetTags:probb"), edm::InputTag("pfDeepCSVJetTags:probbb")});
1400  desc.add<edm::InputTag>("met", edm::InputTag("pfMet"));
1401 
1402  desc.add<std::string>("metSelection", "pt > 0");
1403  desc.add<std::string>("jetSelection", "pt > 0");
1404  desc.add<std::string>("eleSelection", "pt > 0");
1405  desc.add<std::string>("muoSelection", "pt > 0");
1406  desc.add<std::string>("phoSelection", "pt > 0");
1407  desc.add<std::string>("HTdefinition", "pt > 0");
1408  desc.add<std::string>("vertexSelection", "!isFake");
1409  desc.add<std::string>("bjetSelection", "pt > 0");
1410  desc.add<unsigned int>("njets", 0);
1411  desc.add<unsigned int>("nelectrons", 0);
1412  desc.add<unsigned int>("nmuons", 0);
1413  desc.add<unsigned int>("nphotons", 0);
1414  desc.add<double>("leptJetDeltaRmin", 0);
1415  desc.add<double>("bJetMuDeltaRmax", 9999.);
1416  desc.add<double>("bJetDeltaEtaMax", 9999.);
1417  desc.add<double>("HTcut", 0);
1418 
1419  desc.add<unsigned int>("nbjets", 0);
1420  desc.add<double>("workingpoint", 0.4941); // DeepCSV Medium wp
1421  desc.add<bool>("applyLeptonPVcuts", false);
1422  desc.add<double>("invMassUppercut", -1.0);
1423  desc.add<double>("invMassLowercut", -1.0);
1424  desc.add<bool>("oppositeSignMuons", false);
1425  desc.add<std::string>("MHTdefinition", "pt > 0");
1426  desc.add<double>("MHTcut", -1);
1427  desc.add<bool>("invMassCutInAllMuPairs", false);
1428  desc.add<bool>("enablePhotonPlot", false);
1429  desc.add<bool>("enableMETPlot", false);
1430  desc.add<bool>("enable2DPlots", true);
1431 
1434  desc.add<edm::ParameterSetDescription>("numGenericTriggerEventPSet", genericTriggerEventPSet);
1435  desc.add<edm::ParameterSetDescription>("denGenericTriggerEventPSet", genericTriggerEventPSet);
1436 
1463  histoPSet.add<edm::ParameterSetDescription>("invMassPSet", invMassPSet);
1465 
1466  std::vector<double> bins = {0., 20., 40., 60., 80., 90., 100., 110., 120., 130., 140., 150., 160.,
1467  170., 180., 190., 200., 220., 240., 260., 280., 300., 350., 400., 450., 1000.};
1468  std::vector<double> eta_bins = {-3., -2.5, -2., -1.5, -1., -.5, 0., .5, 1., 1.5, 2., 2.5, 3.};
1469  histoPSet.add<std::vector<double> >("metBinning", bins);
1470  histoPSet.add<std::vector<double> >("HTBinning", bins);
1471  histoPSet.add<std::vector<double> >("jetPtBinning", bins);
1472  histoPSet.add<std::vector<double> >("elePtBinning", bins);
1473  histoPSet.add<std::vector<double> >("muPtBinning", bins);
1474  histoPSet.add<std::vector<double> >("jetEtaBinning", eta_bins);
1475  histoPSet.add<std::vector<double> >("eleEtaBinning", eta_bins);
1476  histoPSet.add<std::vector<double> >("muEtaBinning", eta_bins);
1477  histoPSet.add<std::vector<double> >("invMassVariableBinning", bins);
1478  histoPSet.add<std::vector<double> >("MHTVariableBinning", bins);
1479 
1480  std::vector<double> bins_2D = {0., 40., 80., 100., 120., 140., 160., 180., 200., 240., 280., 350., 450., 1000.};
1481  std::vector<double> eta_bins_2D = {-3., -2., -1., 0., 1., 2., 3.};
1482  std::vector<double> phi_bins_2D = {
1483  -3.1415, -2.5132, -1.8849, -1.2566, -0.6283, 0, 0.6283, 1.2566, 1.8849, 2.5132, 3.1415};
1484  histoPSet.add<std::vector<double> >("HTBinning2D", bins_2D);
1485  histoPSet.add<std::vector<double> >("jetPtBinning2D", bins_2D);
1486  histoPSet.add<std::vector<double> >("elePtBinning2D", bins_2D);
1487  histoPSet.add<std::vector<double> >("muPtBinning2D", bins_2D);
1488  histoPSet.add<std::vector<double> >("phoPtBinning2D", bins_2D);
1489  histoPSet.add<std::vector<double> >("jetEtaBinning2D", eta_bins_2D);
1490  histoPSet.add<std::vector<double> >("eleEtaBinning2D", eta_bins_2D);
1491  histoPSet.add<std::vector<double> >("muEtaBinning2D", eta_bins_2D);
1492  histoPSet.add<std::vector<double> >("phoEtaBinning2D", eta_bins_2D);
1493  histoPSet.add<std::vector<double> >("phiBinning2D", phi_bins_2D);
1494 
1498 
1499  desc.add<edm::ParameterSetDescription>("histoPSet", histoPSet);
1500 
1501  edm::ParameterSetDescription lPVcutPSet;
1502  lPVcutPSet.add<double>("dxy", 9999.);
1503  lPVcutPSet.add<double>("dz", 9999.);
1504  desc.add<edm::ParameterSetDescription>("leptonPVcuts", lPVcutPSet);
1505 
1506  descriptions.add("topMonitoring", desc);
1507 }
1508 
1509 // Define this as a plug-in
dqm::reco::DQMStore DQMStore
Definition: TopMonitor.cc:40
ObjME mu1Pt_mu2Pt_
Definition: TopMonitor.cc:135
std::vector< double > elePt_variable_binning_2D_
Definition: TopMonitor.cc:102
std::vector< ObjME > jetEta_variableBinning_
Definition: TopMonitor.cc:178
StringCutObjectSelector< reco::Jet, true > bjetSelection_
Definition: TopMonitor.cc:210
StringCutObjectSelector< reco::PFJet, true > jetSelection_
Definition: TopMonitor.cc:202
ObjME jetVsLS_
Definition: TopMonitor.cc:115
std::vector< double > jetEta_variable_binning_
Definition: TopMonitor.cc:93
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
std::string btagalgoName_
Definition: TopMonitor.cc:222
StringCutObjectSelector< reco::PFJet, true > HTdefinition_
Definition: TopMonitor.cc:206
std::vector< ObjME > jetEtaPhi_
Definition: TopMonitor.cc:183
std::vector< ObjME > bjetPtEta_
Definition: TopMonitor.cc:194
ObjME jetEtaPhi_HEP17_
Definition: TopMonitor.cc:122
double bJetMuDeltaRmax_
Definition: TopMonitor.cc:217
std::vector< double > muEta_variable_binning_
Definition: TopMonitor.cc:94
static void fillHistoLSPSetDescription(edm::ParameterSetDescription &pset)
double pt() const final
transverse momentum
ObjME DeltaR_jet_Mu_
Definition: TopMonitor.cc:146
ObjME muEta_phoEta_
Definition: TopMonitor.cc:144
std::vector< ObjME > muPt_
Definition: TopMonitor.cc:153
std::vector< ObjME > jetPtEta_
Definition: TopMonitor.cc:182
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
MEbinning invMass_mumu_binning_
Definition: TopMonitor.cc:85
std::vector< ObjME > bjetCSVHT_
Definition: TopMonitor.cc:196
std::vector< ObjME > bjetPt_variableBinning_
Definition: TopMonitor.cc:174
ObjME muVsLS_
Definition: TopMonitor.cc:116
std::vector< ObjME > muEta_
Definition: TopMonitor.cc:152
void fill(const bool pass_num, Args... args)
MEbinning HT_binning_
Definition: TopMonitor.cc:82
ObjME eleEta_muEta_
Definition: TopMonitor.cc:138
ObjME eventMHT_variableBinning_
Definition: TopMonitor.cc:142
T const * product() const
Definition: Handle.h:70
bool applyLeptonPVcuts_
Definition: TopMonitor.cc:224
std::vector< ObjME > elePt_variableBinning_
Definition: TopMonitor.cc:172
bool hltPathsAreValid_
Definition: TopMonitor.cc:61
std::vector< double > jetPt_variable_binning_
Definition: TopMonitor.cc:90
ObjME phoVsLS_
Definition: TopMonitor.cc:118
ObjME ele1Pt_ele2Pt_
Definition: TopMonitor.cc:133
std::string to_string(const V &value)
Definition: OMSAccess.h:77
ObjME ele1Eta_ele2Eta_
Definition: TopMonitor.cc:134
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
static void fillHistoPSetDescription(edm::ParameterSetDescription &pset)
ObjME elePt_eventHT_
Definition: TopMonitor.cc:131
edm::EDGetTokenT< reco::VertexCollection > vtxToken_
Definition: TopMonitor.cc:63
auto vector_transform(std::vector< InputType > const &input, Function predicate) -> std::vector< typename std::remove_cv< typename std::remove_reference< decltype(predicate(input.front()))>::type >::type >
Definition: transform.h:11
std::vector< ObjME > bjetCSV_
Definition: TopMonitor.cc:170
StringCutObjectSelector< reco::MET, true > metSelection_
Definition: TopMonitor.cc:201
std::vector< ObjME > phoEta_
Definition: TopMonitor.cc:164
std::vector< Vertex > VertexCollection
Definition: Vertex.h:31
ObjME muMulti_
Definition: TopMonitor.cc:126
std::vector< ObjME > eleEtaPhi_
Definition: TopMonitor.cc:186
void setMETitle(ObjME &me, const std::string &titleX, const std::string &titleY)
std::vector< double > muPt_variable_binning_
Definition: TopMonitor.cc:91
ObjME metME_variableBinning_
Definition: TopMonitor.cc:111
ObjME metME_
Definition: TopMonitor.cc:110
static const double deltaEta
Definition: CaloConstants.h:8
MEbinning met_binning_
Definition: TopMonitor.cc:77
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
edm::EDGetTokenT< reco::PFMETCollection > metToken_
Definition: TopMonitor.cc:70
bool invMassCutInAllMuPairs_
Definition: TopMonitor.cc:234
const bool requireValidHLTPaths_
Definition: TopMonitor.cc:60
ProductID id() const
Definition: RefToBase.h:216
ObjME eventMHT_
Definition: TopMonitor.cc:140
double bJetDeltaEtaMax_
Definition: TopMonitor.cc:218
ObjME bjetVsLS_
Definition: TopMonitor.cc:119
ObjME metVsLS_
Definition: TopMonitor.cc:112
TopMonitor(const edm::ParameterSet &)
Definition: TopMonitor.cc:241
edm::EDGetTokenT< reco::MuonCollection > muoToken_
Definition: TopMonitor.cc:64
PVcut lepPVcuts_
Definition: TopMonitor.cc:223
bool enable2DPlots_
Definition: TopMonitor.cc:238
std::vector< ObjME > jetPt_variableBinning_
Definition: TopMonitor.cc:173
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
bool enablePhotonPlot_
Definition: TopMonitor.cc:236
unsigned int nphotons_
Definition: TopMonitor.cc:215
ObjME elePt_jetPt_
Definition: TopMonitor.cc:130
std::vector< ObjME > muPhi_
Definition: TopMonitor.cc:151
std::vector< double > HT_variable_binning_
Definition: TopMonitor.cc:89
std::vector< ObjME > muPt_variableBinning_
Definition: TopMonitor.cc:171
int iEvent
Definition: GenABIO.cc:224
ObjME metPhiME_
Definition: TopMonitor.cc:113
unsigned int njets_
Definition: TopMonitor.cc:212
std::vector< ObjME > bjetPt_
Definition: TopMonitor.cc:169
ObjME jetMulti_
Definition: TopMonitor.cc:124
std::vector< double > invMass_mumu_variable_binning_
Definition: TopMonitor.cc:96
std::vector< double > MHT_variable_binning_
Definition: TopMonitor.cc:97
ObjME invMass_mumu_variableBinning_
Definition: TopMonitor.cc:141
std::vector< ObjME > muEtaPhi_
Definition: TopMonitor.cc:189
edm::EDGetTokenT< edm::View< reco::GsfElectron > > eleToken_
Definition: TopMonitor.cc:65
std::vector< ObjME > jetEta_
Definition: TopMonitor.cc:160
unsigned int nelectrons_
Definition: TopMonitor.cc:213
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::vector< ObjME > phoEtaPhi_
Definition: TopMonitor.cc:192
edm::EDGetTokenT< reco::PhotonCollection > phoToken_
Definition: TopMonitor.cc:67
unsigned int nmuons_
Definition: TopMonitor.cc:214
ObjME bjetMulti_
Definition: TopMonitor.cc:128
ObjME eleVsLS_
Definition: TopMonitor.cc:117
std::vector< double > met_variable_binning_
Definition: TopMonitor.cc:88
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
std::vector< ObjME > jetPhi_
Definition: TopMonitor.cc:159
std::vector< ObjME > eleEta_
Definition: TopMonitor.cc:156
std::vector< ObjME > muPtEta_
Definition: TopMonitor.cc:188
ParameterDescriptionBase * add(U const &iLabel, T const &value)
bool applyMETcut_
Definition: TopMonitor.cc:226
std::vector< double > jetPt_variable_binning_2D_
Definition: TopMonitor.cc:100
double MHTcut_
Definition: TopMonitor.cc:232
std::vector< double > HT_variable_binning_2D_
Definition: TopMonitor.cc:99
MEbinning MHT_binning_
Definition: TopMonitor.cc:86
std::vector< double > phi_variable_binning_2D_
Definition: TopMonitor.cc:108
std::vector< ObjME > jetPt_
Definition: TopMonitor.cc:161
double HTcut_
Definition: TopMonitor.cc:219
std::vector< ObjME > eleEta_variableBinning_
Definition: TopMonitor.cc:177
ObjME elePt_muPt_
Definition: TopMonitor.cc:137
std::vector< ObjME > elePhi_
Definition: TopMonitor.cc:155
std::vector< double > jetEta_variable_binning_2D_
Definition: TopMonitor.cc:104
ObjME invMass_mumu_
Definition: TopMonitor.cc:139
std::vector< ObjME > bjetEta_variableBinning_
Definition: TopMonitor.cc:179
std::vector< double > muPt_variable_binning_2D_
Definition: TopMonitor.cc:101
bool operator()(const edm::RefToBase< reco::Jet > &j1, const edm::RefToBase< reco::Jet > &j2) const
Definition: TopMonitor.cc:51
def ls(path, rec=False)
Definition: eostools.py:349
size_t key() const
Definition: RefToBase.h:221
StringCutObjectSelector< reco::Photon, true > phoSelection_
Definition: TopMonitor.cc:205
unsigned int nbjets_
Definition: TopMonitor.cc:220
std::map< edm::RefToBase< reco::Jet >, float, JetRefCompare > JetTagMap
Definition: TopMonitor.cc:55
ObjME phoMulti_
Definition: TopMonitor.cc:127
const std::string folderName_
Definition: TopMonitor.cc:58
std::vector< ObjME > elePt_
Definition: TopMonitor.cc:157
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: TopMonitor.cc:402
std::vector< ObjME > bjetEtaPhi_
Definition: TopMonitor.cc:195
StringCutObjectSelector< reco::GsfElectron, true > eleSelection_
Definition: TopMonitor.cc:203
std::vector< Photon > PhotonCollection
collectin of Photon objects
Definition: PhotonFwd.h:9
ObjME htVsLS_
Definition: TopMonitor.cc:120
std::vector< ObjME > phoPt_
Definition: TopMonitor.cc:165
std::vector< double > elePt_variable_binning_
Definition: TopMonitor.cc:92
void add(std::string const &label, ParameterSetDescription const &psetDescription)
MEbinning csv_binning_
Definition: TopMonitor.cc:84
double workingpoint_
Definition: TopMonitor.cc:221
ObjME mu1Eta_mu2Eta_
Definition: TopMonitor.cc:136
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: TopMonitor.cc:1385
std::unique_ptr< GenericTriggerEventFlag > den_genTriggerEventFlag_
Definition: TopMonitor.cc:199
bool isValid() const
Definition: HandleBase.h:70
void bookME(DQMStore::IBooker &, ObjME &me, const std::string &histname, const std::string &histtitle, const uint nbins, const double xmin, const double xmax, const bool bookDen=true)
double invMassUppercut_
Definition: TopMonitor.cc:228
std::vector< ObjME > bjetEta_
Definition: TopMonitor.cc:168
bool enableMETPlot_
Definition: TopMonitor.cc:237
std::vector< PFJet > PFJetCollection
collection of PFJet objects
fixed size matrix
HLT enums.
void analyze(edm::Event const &iEvent, edm::EventSetup const &iSetup) override
Definition: TopMonitor.cc:939
MEbinning DR_binning_
Definition: TopMonitor.cc:83
std::vector< ObjME > phoPtEta_
Definition: TopMonitor.cc:191
ObjME muPt_phoPt_
Definition: TopMonitor.cc:143
StringCutObjectSelector< reco::Vertex, true > vtxSelection_
Definition: TopMonitor.cc:208
std::vector< ObjME > elePtEta_
Definition: TopMonitor.cc:185
bool opsign_
Definition: TopMonitor.cc:230
StringCutObjectSelector< reco::PFJet, true > MHTdefinition_
Definition: TopMonitor.cc:231
edm::EDGetTokenT< reco::PFJetCollection > jetToken_
Definition: TopMonitor.cc:68
MEbinning phi_binning_
Definition: TopMonitor.cc:79
MEbinning eta_binning_
Definition: TopMonitor.cc:81
edm::EDGetTokenT< edm::ValueMap< bool > > elecIDToken_
Definition: TopMonitor.cc:66
ObjME eleMulti_
Definition: TopMonitor.cc:125
std::vector< double > phoEta_variable_binning_2D_
Definition: TopMonitor.cc:107
double leptJetDeltaRmin_
Definition: TopMonitor.cc:216
Log< level::Warning, false > LogWarning
std::vector< double > muEta_variable_binning_2D_
Definition: TopMonitor.cc:105
MEbinning ls_binning_
Definition: TopMonitor.cc:78
double phi() const final
momentum azimuthal angle
std::vector< double > eleEta_variable_binning_2D_
Definition: TopMonitor.cc:106
std::unique_ptr< GenericTriggerEventFlag > num_genTriggerEventFlag_
Definition: TopMonitor.cc:198
std::vector< ObjME > phoPhi_
Definition: TopMonitor.cc:163
static void fillPSetDescription(edm::ParameterSetDescription &desc)
double invMassLowercut_
Definition: TopMonitor.cc:229
dqm::reco::MonitorElement MonitorElement
Definition: TopMonitor.cc:39
~TopMonitor() override
Definition: TopMonitor.cc:395
MEbinning pt_binning_
Definition: TopMonitor.cc:80
Definition: Run.h:45
std::vector< double > phoPt_variable_binning_2D_
Definition: TopMonitor.cc:103
StringCutObjectSelector< reco::Muon, true > muoSelection_
Definition: TopMonitor.cc:204
ObjME eventHT_variableBinning_
Definition: TopMonitor.cc:149
std::vector< ObjME > muEta_variableBinning_
Definition: TopMonitor.cc:176
std::vector< ObjME > bjetPhi_
Definition: TopMonitor.cc:167
std::vector< edm::EDGetTokenT< reco::JetTagCollection > > jetTagTokens_
Definition: TopMonitor.cc:69
std::vector< double > eleEta_variable_binning_
Definition: TopMonitor.cc:95
ObjME eventHT_
Definition: TopMonitor.cc:148