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