CMS 3D CMS Logo

LepHTMonitor.cc
Go to the documentation of this file.
2 
3 #include <limits>
4 #include <algorithm>
5 
9 
11 
13 
15 
19 #include "RecoEgamma/EgammaTools/src/ConversionTools.cc" //Would prefer to include header, but fails to find hasMatchedConversion definition without this..
21 
23 
24 namespace {
25 
26  //Offline electron definition
27  bool isGood(const reco::GsfElectron &el,
28  const reco::Vertex::Point &pv_position,
29  const reco::BeamSpot::Point &bs_position,
31  bool pass_id,
32  const double lep_counting_threshold,
33  const double lep_iso_cut,
34  const double lep_eta_cut,
35  const double d0_cut_b,
36  const double dz_cut_b,
37  const double d0_cut_e,
38  const double dz_cut_e) {
39  //Electron ID
40  if (!pass_id)
41  return false;
42 
43  //pT
44  if (el.pt() < lep_counting_threshold || std::abs(el.superCluster()->eta()) > lep_eta_cut)
45  return false;
46 
47  //Isolation
48  auto const &iso = el.pfIsolationVariables();
49  const float absiso =
50  iso.sumChargedHadronPt + std::max(0.0, iso.sumNeutralHadronEt + iso.sumPhotonEt - 0.5 * iso.sumPUPt);
51  const float relisowithdb = absiso / el.pt();
52  if (relisowithdb > lep_iso_cut)
53  return false;
54 
55  //Conversion matching
56  bool pass_conversion = false;
57  if (convs.isValid()) {
58  pass_conversion = !ConversionTools::hasMatchedConversion(el, *convs, bs_position);
59  } else {
60  edm::LogError("LepHTMonitor") << "Electron conversion matching failed.\n";
61  }
62  if (!pass_conversion)
63  return false;
64 
65  //Impact parameter
66  float d0 = 999., dz = 999.;
67  if (el.gsfTrack().isNonnull()) {
68  d0 = -(el.gsfTrack()->dxy(pv_position));
69  dz = el.gsfTrack()->dz(pv_position);
70  } else {
71  edm::LogError("LepHTMonitor") << "Could not read electron.gsfTrack().\n";
72  return false;
73  }
74  float etasc = el.superCluster()->eta();
75  if (std::abs(etasc) > 1.479) { //Endcap
76  if (std::abs(d0) > d0_cut_e || std::abs(dz) > dz_cut_e)
77  return false;
78 
79  } else { //Barrel
80  if (std::abs(d0) > d0_cut_b || std::abs(dz) > dz_cut_b)
81  return false;
82  }
83 
84  return true;
85  }
86 
87  //Offline muon definition
88  bool isGood(const reco::Muon &mu,
89  const reco::Vertex &pv,
90  const double lep_counting_threshold,
91  const double lep_iso_cut,
92  const double lep_eta_cut,
93  const double d0_cut,
94  const double dz_cut,
95  int muonIDlevel) {
96  const reco::Vertex::Point &pv_position = pv.position();
97 
98  // Muon pt and eta acceptance
99  if (mu.pt() < lep_counting_threshold || std::abs(mu.eta()) > lep_eta_cut)
100  return false;
101 
102  // Muon isolation
103  auto const &iso = mu.pfIsolationR04();
104  const float absiso =
105  iso.sumChargedHadronPt + std::max(0.0, iso.sumNeutralHadronEt + iso.sumPhotonEt - 0.5 * iso.sumPUPt);
106  const float relisowithdb = absiso / mu.pt();
107  if (relisowithdb > lep_iso_cut)
108  return false;
109 
110  // Muon ID
111  bool pass_id = false;
112  if (muonIDlevel == 1)
113  pass_id = muon::isLooseMuon(mu);
114  else if (muonIDlevel == 3)
115  pass_id = muon::isTightMuon(mu, pv);
116  else
117  pass_id = muon::isMediumMuon(mu);
118 
119  if (!pass_id)
120  return false;
121 
122  // Muon impact parameter
123  float d0 = std::abs(mu.muonBestTrack()->dxy(pv_position));
124  float dz = std::abs(mu.muonBestTrack()->dz(pv_position));
125  if (d0 > d0_cut || dz > dz_cut)
126  return false;
127 
128  return true;
129  }
130 } // namespace
131 
133  : theElectronTag_(ps.getParameter<edm::InputTag>("electronCollection")),
134  theElectronCollection_(consumes<edm::View<reco::GsfElectron> >(theElectronTag_)),
135  theElectronVIDTag_(ps.getParameter<edm::InputTag>("electronVID")),
136  theElectronVIDMap_(consumes<edm::ValueMap<bool> >(theElectronVIDTag_)),
137  theMuonTag_(ps.getParameter<edm::InputTag>("muonCollection")),
138  theMuonCollection_(consumes<reco::MuonCollection>(theMuonTag_)),
139  thePfMETTag_(ps.getParameter<edm::InputTag>("pfMetCollection")),
140  thePfMETCollection_(consumes<reco::PFMETCollection>(thePfMETTag_)),
141  thePfJetTag_(ps.getParameter<edm::InputTag>("pfJetCollection")),
142  thePfJetCollection_(consumes<reco::PFJetCollection>(thePfJetTag_)),
143  theJetTagTag_(ps.getParameter<edm::InputTag>("jetTagCollection")),
144  theJetTagCollection_(consumes<reco::JetTagCollection>(theJetTagTag_)),
145  theVertexCollectionTag_(ps.getParameter<edm::InputTag>("vertexCollection")),
146  theVertexCollection_(consumes<reco::VertexCollection>(theVertexCollectionTag_)),
147  theConversionCollectionTag_(ps.getParameter<edm::InputTag>("conversionCollection")),
148  theConversionCollection_(consumes<reco::ConversionCollection>(theConversionCollectionTag_)),
149  theBeamSpotTag_(ps.getParameter<edm::InputTag>("beamSpot")),
150  theBeamSpot_(consumes<reco::BeamSpot>(theBeamSpotTag_)),
151 
152  num_genTriggerEventFlag_(new GenericTriggerEventFlag(
153  ps.getParameter<edm::ParameterSet>("numGenericTriggerEventPSet"), consumesCollector(), *this)),
154  den_lep_genTriggerEventFlag_(new GenericTriggerEventFlag(
155  ps.getParameter<edm::ParameterSet>("den_lep_GenericTriggerEventPSet"), consumesCollector(), *this)),
156  den_HT_genTriggerEventFlag_(new GenericTriggerEventFlag(
157  ps.getParameter<edm::ParameterSet>("den_HT_GenericTriggerEventPSet"), consumesCollector(), *this)),
158 
159  folderName_(ps.getParameter<std::string>("folderName")),
160 
161  muonIDlevel_(ps.getUntrackedParameter<int>("muonIDlevel")),
162 
163  jetPtCut_(ps.getUntrackedParameter<double>("jetPtCut")),
164  jetEtaCut_(ps.getUntrackedParameter<double>("jetEtaCut")),
165  metCut_(ps.getUntrackedParameter<double>("metCut")),
166  htCut_(ps.getUntrackedParameter<double>("htCut")),
167 
168  nmusCut_(ps.getUntrackedParameter<double>("nmus")),
169  nelsCut_(ps.getUntrackedParameter<double>("nels")),
170  lep_pt_plateau_(ps.getUntrackedParameter<double>("leptonPtPlateau")),
171  lep_counting_threshold_(ps.getUntrackedParameter<double>("leptonCountingThreshold")),
172  lep_iso_cut_(ps.getUntrackedParameter<double>("lepIsoCut")),
173  lep_eta_cut_(ps.getUntrackedParameter<double>("lepEtaCut")),
174  lep_d0_cut_b_(ps.getUntrackedParameter<double>("lep_d0_cut_b")),
175  lep_dz_cut_b_(ps.getUntrackedParameter<double>("lep_dz_cut_b")),
176  lep_d0_cut_e_(ps.getUntrackedParameter<double>("lep_d0_cut_e")),
177  lep_dz_cut_e_(ps.getUntrackedParameter<double>("lep_dz_cut_e")),
178  ptbins_(ps.getParameter<std::vector<double> >("ptbins")),
179  htbins_(ps.getParameter<std::vector<double> >("htbins")),
180 
181  nbins_eta_(ps.getUntrackedParameter<int>("nbins_eta")),
182  nbins_phi_(ps.getUntrackedParameter<int>("nbins_phi")),
183  nbins_npv_(ps.getUntrackedParameter<int>("nbins_npv")),
184  etabins_min_(ps.getUntrackedParameter<double>("etabins_min")),
185  etabins_max_(ps.getUntrackedParameter<double>("etabins_max")),
186  phibins_min_(ps.getUntrackedParameter<double>("phibins_min")),
187  phibins_max_(ps.getUntrackedParameter<double>("phibins_max")),
188  npvbins_min_(ps.getUntrackedParameter<double>("npvbins_min")),
189  npvbins_max_(ps.getUntrackedParameter<double>("npvbins_max")),
190 
191  h_pfHTTurnOn_num_(nullptr),
192  h_pfHTTurnOn_den_(nullptr),
193  h_lepPtTurnOn_num_(nullptr),
194  h_lepPtTurnOn_den_(nullptr),
195  h_lepEtaTurnOn_num_(nullptr),
196  h_lepEtaTurnOn_den_(nullptr),
197  h_lepPhiTurnOn_num_(nullptr),
198  h_lepPhiTurnOn_den_(nullptr),
199  h_NPVTurnOn_num_(nullptr),
200  h_NPVTurnOn_den_(nullptr) {
201  edm::LogInfo("LepHTMonitor") << "Constructor LepHTMonitor::LepHTMonitor\n";
202 }
203 
204 LepHTMonitor::~LepHTMonitor() { edm::LogInfo("LepHTMonitor") << "Destructor LepHTMonitor::~LepHTMonitor\n"; }
205 
207  edm::LogInfo("LepHTMonitor") << "LepHTMonitor::beginRun\n";
208 }
209 
210 void LepHTMonitor::bookHistograms(DQMStore::IBooker &ibooker, const edm::Run &iRun, const edm::EventSetup &iSetup) {
211  edm::LogInfo("LepHTMonitor") << "LepHTMonitor::bookHistograms\n";
212  //book at beginRun
213  ibooker.cd();
214  ibooker.setCurrentFolder("HLT/SUSY/LepHT/" + folderName_);
215 
216  bool is_mu = false;
217  bool is_ele = false;
218  if (theElectronTag_.label().empty() and not theMuonTag_.label().empty()) {
219  is_mu = true;
220  } else if (not theElectronTag_.label().empty() and theMuonTag_.label().empty()) {
221  is_ele = true;
222  }
223  //Cosmetic axis names
224  std::string lepton = "lepton", Lepton = "Lepton";
225  if (is_mu && !is_ele) {
226  lepton = "muon";
227  Lepton = "Muon";
228  } else if (is_ele && !is_mu) {
229  lepton = "electron";
230  Lepton = "Electron";
231  }
232  //Initialize trigger flags
234  num_genTriggerEventFlag_->initRun(iRun, iSetup);
236  den_lep_genTriggerEventFlag_->initRun(iRun, iSetup);
238  den_HT_genTriggerEventFlag_->initRun(iRun, iSetup);
239 
240  //Convert to vfloat for picky TH1F constructor
241  vector<float> f_ptbins;
242  for (double ptbin : ptbins_)
243  f_ptbins.push_back(static_cast<float>(ptbin));
244  vector<float> f_htbins;
245  for (double htbin : htbins_)
246  f_htbins.push_back(static_cast<float>(htbin));
247 
248  //num and den hists to be divided in harvesting step to make turn on curves
250  ibooker.book1D("pfHTTurnOn_num", "Numerator;Offline H_{T} [GeV];", f_htbins.size() - 1, f_htbins.data());
252  ibooker.book1D("pfHTTurnOn_den", "Denominator;Offline H_{T} [GeV];", f_htbins.size() - 1, f_htbins.data());
253 
254  h_lepPtTurnOn_num_ = ibooker.book1D("lepPtTurnOn_num",
255  ("Numerator;Offline " + lepton + " p_{T} [GeV];").c_str(),
256  f_ptbins.size() - 1,
257  f_ptbins.data());
258  h_lepPtTurnOn_den_ = ibooker.book1D("lepPtTurnOn_den",
259  ("Denominator;Offline " + lepton + " p_{T} [GeV];").c_str(),
260  f_ptbins.size() - 1,
261  f_ptbins.data());
263  ibooker.book1D("lepEtaTurnOn_num", "Numerator;Offline lepton #eta;", nbins_eta_, etabins_min_, etabins_max_);
265  ibooker.book1D("lepEtaTurnOn_den", "Denominator;Offline lepton #eta;", nbins_eta_, etabins_min_, etabins_max_);
267  ibooker.book1D("lepPhiTurnOn_num", "Numerator;Offline lepton #phi;", nbins_phi_, phibins_min_, phibins_max_);
269  ibooker.book1D("lepPhiTurnOn_den", "Denominator;Offline lepton #phi;", nbins_phi_, phibins_min_, phibins_max_);
270 
271  h_lepEtaPhiTurnOn_num_ = ibooker.book2D("lepEtaPhiTurnOn_num",
272  "Numerator;Offline lepton #eta;Offline lepton #phi;",
273  nbins_eta_ / 2,
274  etabins_min_,
275  etabins_max_,
276  nbins_phi_ / 2,
277  phibins_min_,
278  phibins_max_);
279  h_lepEtaPhiTurnOn_den_ = ibooker.book2D("lepEtaPhiTurnOn_den",
280  "Denominator;Offline lepton #eta;Offline lepton #phi;",
281  nbins_eta_ / 2,
282  etabins_min_,
283  etabins_max_,
284  nbins_phi_ / 2,
285  phibins_min_,
286  phibins_max_);
287 
288  h_NPVTurnOn_num_ = ibooker.book1D("NPVTurnOn_num", "Numerator;N_{PV};", nbins_npv_, npvbins_min_, npvbins_max_);
289  h_NPVTurnOn_den_ = ibooker.book1D("NPVTurnOn_den", "Denominator;N_{PV};", nbins_npv_, npvbins_min_, npvbins_max_);
290 
291  ibooker.cd();
292 }
293 
294 void LepHTMonitor::analyze(const edm::Event &e, const edm::EventSetup &eSetup) {
295  edm::LogInfo("LepHTMonitor") << "LepHTMonitor::analyze\n";
296 
297  //Find whether main and auxilliary triggers fired
298  bool hasFired = false;
299  bool hasFiredAuxiliary = false;
300  bool hasFiredLeptonAuxiliary = false;
301  if (den_lep_genTriggerEventFlag_->on() && den_lep_genTriggerEventFlag_->accept(e, eSetup))
302  hasFiredLeptonAuxiliary = true;
303  if (den_HT_genTriggerEventFlag_->on() && den_HT_genTriggerEventFlag_->accept(e, eSetup))
304  hasFiredAuxiliary = true;
305  if (num_genTriggerEventFlag_->on() && num_genTriggerEventFlag_->accept(e, eSetup))
306  hasFired = true;
307 
308  if (!(hasFiredAuxiliary || hasFiredLeptonAuxiliary))
309  return;
310  int npv = 0;
311  //Vertex
313  if (not theVertexCollectionTag_.label().empty()) {
314  e.getByToken(theVertexCollection_, VertexCollection);
315  if (!VertexCollection.isValid()) {
316  edm::LogWarning("LepHTMonitor") << "Invalid VertexCollection: " << theVertexCollectionTag_.label() << '\n';
317  } else
318  npv = VertexCollection->size();
319  }
320 
321  //Get electron ID map
322  edm::Handle<edm::ValueMap<bool> > ele_id_decisions;
323  if (not theElectronVIDTag_.label().empty()) {
324  e.getByToken(theElectronVIDMap_, ele_id_decisions);
325  if (!ele_id_decisions.isValid()) {
326  edm::LogWarning("LepHTMonitor") << "Invalid Electron VID map: " << theElectronVIDTag_.label() << '\n';
327  }
328  }
329 
330  //Conversions
332  if (not theConversionCollectionTag_.label().empty()) {
333  e.getByToken(theConversionCollection_, ConversionCollection);
334  if (!ConversionCollection.isValid()) {
335  edm::LogWarning("LepHTMonitor") << "Invalid ConversionCollection: " << theConversionCollectionTag_.label()
336  << '\n';
337  }
338  }
339 
340  //Beam Spot
342  if (not theBeamSpotTag_.label().empty()) {
343  e.getByToken(theBeamSpot_, BeamSpot);
344  if (!BeamSpot.isValid()) {
345  edm::LogWarning("LepHTMonitor") << "Invalid BeamSpot: " << theBeamSpotTag_.label() << '\n';
346  }
347  }
348 
349  //MET
351  if (not thePfMETTag_.label().empty()) {
352  e.getByToken(thePfMETCollection_, pfMETCollection);
353  if (!pfMETCollection.isValid()) {
354  edm::LogWarning("LepHTMonitor") << "Invalid PFMETCollection: " << thePfMETTag_.label() << '\n';
355  }
356  }
357 
358  //Jets
360  if (not thePfJetTag_.label().empty()) {
361  e.getByToken(thePfJetCollection_, pfJetCollection);
362  if (!pfJetCollection.isValid()) {
363  edm::LogWarning("LepHTMonitor") << "Invalid PFJetCollection: " << thePfJetTag_.label() << '\n';
364  }
365  }
366 
367  //Electron
369  if (not theElectronTag_.label().empty()) {
370  e.getByToken(theElectronCollection_, ElectronCollection);
371  if (!ElectronCollection.isValid()) {
372  edm::LogWarning("LepHTMonitor") << "Invalid GsfElectronCollection: " << theElectronTag_.label() << '\n';
373  }
374  }
375 
376  //Muon
378  if (not theMuonTag_.label().empty()) {
379  e.getByToken(theMuonCollection_, MuonCollection);
380  if (!MuonCollection.isValid()) {
381  edm::LogWarning("LepHTMonitor") << "Invalid MuonCollection: " << theMuonTag_.label() << '\n';
382  }
383  }
384 
385  //Get offline HT
386  double pfHT = -1.0;
387  if (pfJetCollection.isValid()) {
388  pfHT = 0.0;
389  for (auto const &pfjet : *pfJetCollection) {
390  if (pfjet.pt() < jetPtCut_)
391  continue;
392  if (std::abs(pfjet.eta()) > jetEtaCut_)
393  continue;
394  pfHT += pfjet.pt();
395  }
396  }
397 
398  //Get offline MET
399  double pfMET = -1.0;
400  if (pfMETCollection.isValid() && !pfMETCollection->empty()) {
401  pfMET = pfMETCollection->front().et();
402  }
403 
404  //Find offline leptons and keep track of pt,eta of leading and trailing leptons
405  double lep_max_pt = -1.0;
406  double lep_eta = 0;
407  double lep_phi = 0;
408  double trailing_ele_eta = 0;
409  double trailing_ele_phi = 0;
410  double trailing_mu_eta = 0;
411  double trailing_mu_phi = 0;
412  double min_ele_pt = -1.0;
413  double min_mu_pt = -1.0;
414  int nels = 0;
415  int nmus = 0;
416  if (VertexCollection.isValid() && !VertexCollection->empty()) { //for quality checks
417  //Try to find a reco electron
418  if (ElectronCollection.isValid() && ConversionCollection.isValid() && BeamSpot.isValid() &&
419  ele_id_decisions.isValid()) {
420  size_t index = 0;
421  for (auto const &electron : *ElectronCollection) {
422  const auto el = ElectronCollection->ptrAt(index);
423  bool pass_id = (*ele_id_decisions)[el];
424  if (isGood(electron,
425  VertexCollection->front().position(),
426  BeamSpot->position(),
428  pass_id,
430  lep_iso_cut_,
431  lep_eta_cut_,
435  lep_dz_cut_e_)) {
436  if (electron.pt() > lep_max_pt) {
437  lep_max_pt = electron.pt();
438  lep_eta = electron.eta();
439  lep_phi = electron.phi();
440  }
441  if (electron.pt() < min_ele_pt || min_ele_pt < 0) {
442  min_ele_pt = electron.pt();
443  trailing_ele_eta = electron.eta();
444  trailing_ele_phi = electron.phi();
445  }
446  nels++;
447  }
448  index++;
449  }
450  }
451 
452  //Try to find a reco muon
453  if (MuonCollection.isValid()) {
454  for (auto const &muon : *MuonCollection) {
455  if (isGood(muon,
456  VertexCollection->front(),
458  lep_iso_cut_,
459  lep_eta_cut_,
462  muonIDlevel_)) {
463  if (muon.pt() > lep_max_pt) {
464  lep_max_pt = muon.pt();
465  lep_eta = muon.eta();
466  lep_phi = muon.phi();
467  }
468  if (muon.pt() < min_mu_pt || min_mu_pt < 0) {
469  min_mu_pt = muon.pt();
470  trailing_mu_eta = muon.eta();
471  trailing_mu_phi = muon.phi();
472  }
473  nmus++;
474  }
475  }
476  }
477  }
478 
479  //Fill single lepton triggers with leading lepton pT
480  float lep_pt = lep_max_pt;
481 
482  //For dilepton triggers, use trailing rather than leading lepton
483  if (nmusCut_ >= 2) {
484  lep_pt = min_mu_pt;
485  lep_eta = trailing_mu_eta;
486  lep_phi = trailing_mu_phi;
487  }
488  if (nelsCut_ >= 2) {
489  lep_pt = min_ele_pt;
490  lep_eta = trailing_ele_eta;
491  lep_phi = trailing_ele_phi;
492  }
493  if (nelsCut_ >= 1 && nmusCut_ >= 1) {
494  if (min_ele_pt < min_mu_pt) {
495  lep_pt = min_ele_pt;
496  lep_eta = trailing_ele_eta;
497  lep_phi = trailing_ele_phi;
498  } else {
499  lep_pt = min_mu_pt;
500  lep_eta = trailing_mu_eta;
501  lep_phi = trailing_mu_phi;
502  }
503  }
504 
505  const bool nleps_cut = nels >= nelsCut_ && nmus >= nmusCut_;
506  bool lep_plateau = lep_pt > lep_pt_plateau_ || lep_pt_plateau_ < 0.0;
507 
508  //Fill lepton pT and eta histograms
509  if (hasFiredLeptonAuxiliary || !e.isRealData()) {
510  if (nleps_cut && (pfMET > metCut_ || metCut_ < 0.0) && (pfHT > htCut_ || htCut_ < 0.0)) {
511  if (h_lepPtTurnOn_den_) {
512  if (lep_pt > ptbins_.back())
513  lep_pt = ptbins_.back() - 1; //Overflow protection
514  h_lepPtTurnOn_den_->Fill(lep_pt);
515  }
516  if (h_lepPtTurnOn_num_ && hasFired)
517  h_lepPtTurnOn_num_->Fill(lep_pt);
518 
519  if (lep_plateau) {
520  //Fill Eta and Phi histograms for leptons above pT threshold
522  h_lepEtaTurnOn_den_->Fill(lep_eta);
523  if (h_lepEtaTurnOn_num_ && hasFired)
524  h_lepEtaTurnOn_num_->Fill(lep_eta);
526  h_lepPhiTurnOn_den_->Fill(lep_phi);
527  if (h_lepPhiTurnOn_num_ && hasFired)
528  h_lepPhiTurnOn_num_->Fill(lep_phi);
530  h_lepEtaPhiTurnOn_den_->Fill(lep_eta, lep_phi);
531  if (h_lepEtaPhiTurnOn_num_ && hasFired)
532  h_lepEtaPhiTurnOn_num_->Fill(lep_eta, lep_phi);
533 
534  //Fill NPV histograms
535  if (h_NPVTurnOn_den_)
536  h_NPVTurnOn_den_->Fill(npv);
537  if (h_NPVTurnOn_num_ && hasFired)
538  h_NPVTurnOn_num_->Fill(npv);
539  }
540  }
541  }
542 
543  //Fill HT turn-on histograms
544  if (hasFiredAuxiliary || !e.isRealData()) {
545  if (nleps_cut && lep_plateau) {
546  if (h_pfHTTurnOn_den_) {
547  if (pfHT > htbins_.back())
548  pfHT = htbins_.back() - 1; //Overflow protection
549  h_pfHTTurnOn_den_->Fill(pfHT);
550  }
551  if (h_pfHTTurnOn_num_ && hasFired)
552  h_pfHTTurnOn_num_->Fill(pfHT);
553  }
554  }
555 }
556 
558  edm::LogInfo("LepHTMonitor") << "LepHTMonitor::endRun\n";
559 }
560 
561 //define this as a plug-in
const PflowIsolationVariables & pfIsolationVariables() const
Definition: GsfElectron.h:650
edm::EDGetTokenT< edm::ValueMap< bool > > theElectronVIDMap_
Definition: LepHTMonitor.h:69
double lep_d0_cut_e_
Definition: LepHTMonitor.h:105
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX)
Definition: DQMStore.cc:239
float etabins_max_
Definition: LepHTMonitor.h:114
GsfTrackRef gsfTrack() const override
reference to a GsfTrack
Definition: GsfElectron.h:156
float npvbins_min_
Definition: LepHTMonitor.h:117
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
double eta() const final
momentum pseudorapidity
double lep_iso_cut_
Definition: LepHTMonitor.h:101
double jetEtaCut_
Definition: LepHTMonitor.h:94
std::string folderName_
Definition: LepHTMonitor.h:89
bool isMediumMuon(const reco::Muon &, bool run2016_hip_mitigation=false)
MonitorElement * h_pfHTTurnOn_num_
Definition: LepHTMonitor.h:121
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
edm::InputTag thePfMETTag_
Definition: LepHTMonitor.h:72
double jetPtCut_
Definition: LepHTMonitor.h:93
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:418
double htCut_
Definition: LepHTMonitor.h:96
double lep_dz_cut_e_
Definition: LepHTMonitor.h:106
#define nullptr
nels
1: loose, 2: medium, 3: tight
MonitorElement * h_lepEtaTurnOn_den_
Definition: LepHTMonitor.h:126
double pt() const final
transverse momentum
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
math::XYZPoint Point
point in the space
Definition: BeamSpot.h:27
MonitorElement * h_pfHTTurnOn_den_
Definition: LepHTMonitor.h:122
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
float etabins_min_
Definition: LepHTMonitor.h:113
MonitorElement * h_lepPhiTurnOn_num_
Definition: LepHTMonitor.h:127
bool isRealData() const
Definition: EventBase.h:62
const Point & position() const
position
Definition: Vertex.h:113
MonitorElement * h_NPVTurnOn_num_
Definition: LepHTMonitor.h:131
std::vector< Conversion > ConversionCollection
collectin of Conversion objects
Definition: ConversionFwd.h:9
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
bool isLooseMuon(const reco::Muon &)
std::vector< double > ptbins_
Definition: LepHTMonitor.h:108
edm::EDGetTokenT< reco::PFMETCollection > thePfMETCollection_
Definition: LepHTMonitor.h:73
void Fill(long long x)
void bookHistograms(DQMStore::IBooker &ibooker, const edm::Run &, const edm::EventSetup &) override
double nmusCut_
Definition: LepHTMonitor.h:97
double lep_d0_cut_b_
Definition: LepHTMonitor.h:103
std::unique_ptr< GenericTriggerEventFlag > den_lep_genTriggerEventFlag_
Definition: LepHTMonitor.h:86
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
virtual TrackRef muonBestTrack() const
Definition: Muon.h:60
edm::EDGetTokenT< edm::View< reco::GsfElectron > > theElectronCollection_
Definition: LepHTMonitor.h:67
edm::InputTag thePfJetTag_
Definition: LepHTMonitor.h:74
edm::InputTag theElectronTag_
Definition: LepHTMonitor.h:66
static bool hasMatchedConversion(const reco::GsfElectron &ele, const reco::ConversionCollection &convCol, const math::XYZPoint &beamspot, bool allowCkfMatch=true, float lxyMin=2.0, float probMin=1e-6, unsigned int nHitsBeforeVtxMax=0)
edm::EDGetTokenT< reco::BeamSpot > theBeamSpot_
Definition: LepHTMonitor.h:84
MonitorElement * h_lepPtTurnOn_den_
Definition: LepHTMonitor.h:124
MonitorElement * h_lepPtTurnOn_num_
Definition: LepHTMonitor.h:123
def pv(vc)
Definition: MetAnalyzer.py:7
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
math::XYZPoint Point
point in the space
Definition: Vertex.h:39
edm::EDGetTokenT< reco::ConversionCollection > theConversionCollection_
Definition: LepHTMonitor.h:82
~LepHTMonitor() override
edm::InputTag theMuonTag_
Definition: LepHTMonitor.h:70
void analyze(const edm::Event &e, const edm::EventSetup &eSetup) override
bool isValid() const
Definition: HandleBase.h:70
std::vector< Electron > ElectronCollection
collectin of Electron objects
Definition: ElectronFwd.h:9
edm::EDGetTokenT< reco::PFJetCollection > thePfJetCollection_
Definition: LepHTMonitor.h:75
double lep_counting_threshold_
Definition: LepHTMonitor.h:100
float phibins_max_
Definition: LepHTMonitor.h:116
MonitorElement * h_NPVTurnOn_den_
Definition: LepHTMonitor.h:132
const MuonPFIsolation & pfIsolationR04() const
Definition: Muon.h:172
float npvbins_max_
Definition: LepHTMonitor.h:118
float phibins_min_
Definition: LepHTMonitor.h:115
std::string const & label() const
Definition: InputTag.h:36
std::unique_ptr< GenericTriggerEventFlag > num_genTriggerEventFlag_
Definition: LepHTMonitor.h:85
double metCut_
Definition: LepHTMonitor.h:95
std::vector< PFJet > PFJetCollection
collection of PFJet objects
fixed size matrix
MonitorElement * h_lepEtaPhiTurnOn_den_
Definition: LepHTMonitor.h:130
HLT enums.
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Definition: DQMStore.cc:266
std::vector< double > htbins_
Definition: LepHTMonitor.h:109
void dqmEndRun(const edm::Run &run, const edm::EventSetup &eSetup) override
double lep_eta_cut_
Definition: LepHTMonitor.h:102
SuperClusterRef superCluster() const override
reference to a SuperCluster
Definition: GsfElectron.h:155
void dqmBeginRun(const edm::Run &run, const edm::EventSetup &e) override
const Point & position() const
position
Definition: BeamSpot.h:59
double lep_pt_plateau_
Definition: LepHTMonitor.h:99
double nelsCut_
Definition: LepHTMonitor.h:98
Definition: Lepton.py:1
edm::EDGetTokenT< reco::VertexCollection > theVertexCollection_
Definition: LepHTMonitor.h:80
std::unique_ptr< GenericTriggerEventFlag > den_HT_genTriggerEventFlag_
Definition: LepHTMonitor.h:87
bool isTightMuon(const reco::Muon &, const reco::Vertex &)
edm::InputTag theConversionCollectionTag_
Definition: LepHTMonitor.h:81
double lep_dz_cut_b_
Definition: LepHTMonitor.h:104
edm::InputTag theElectronVIDTag_
Definition: LepHTMonitor.h:68
MonitorElement * h_lepEtaPhiTurnOn_num_
Definition: LepHTMonitor.h:129
float sumChargedHadronPt
sum-pt of charged Hadron // old float chargedHadronIso ;
Definition: GsfElectron.h:600
MonitorElement * h_lepPhiTurnOn_den_
Definition: LepHTMonitor.h:128
LepHTMonitor(const edm::ParameterSet &ps)
edm::InputTag theVertexCollectionTag_
Definition: LepHTMonitor.h:79
edm::EDGetTokenT< reco::MuonCollection > theMuonCollection_
Definition: LepHTMonitor.h:71
Definition: Run.h:45
edm::InputTag theBeamSpotTag_
Definition: LepHTMonitor.h:83
MonitorElement * h_lepEtaTurnOn_num_
Definition: LepHTMonitor.h:125
float sumChargedHadronPt
sum-pt of charged Hadron
Collection of PF MET.