CMS 3D CMS Logo

ZCounting.cc
Go to the documentation of this file.
10 
11 #include <TLorentzVector.h>
12 
13 #include <memory>
14 
16 
17 //
18 // -------------------------------------- Constructor --------------------------------------------
19 //
21  : triggerResultsInputTag_(iConfig.getParameter<edm::InputTag>("TriggerResults")),
22  fPVName_token(consumes<reco::VertexCollection>(
23  iConfig.getUntrackedParameter<std::string>("edmPVName", "offlinePrimaryVertices"))),
24  fMuonName_token(consumes<reco::MuonCollection>(iConfig.getUntrackedParameter<std::string>("edmName", "muons"))),
25  fTrackName_token(
26  consumes<reco::TrackCollection>(iConfig.getUntrackedParameter<std::string>("edmTrackName", "generalTracks"))),
27 
28  PtCutL1_(iConfig.getUntrackedParameter<double>("PtCutL1")),
29  PtCutL2_(iConfig.getUntrackedParameter<double>("PtCutL2")),
30  EtaCutL1_(iConfig.getUntrackedParameter<double>("EtaCutL1")),
31  EtaCutL2_(iConfig.getUntrackedParameter<double>("EtaCutL2")),
32 
33  MassBin_(iConfig.getUntrackedParameter<int>("MassBin")),
34  MassMin_(iConfig.getUntrackedParameter<double>("MassMin")),
35  MassMax_(iConfig.getUntrackedParameter<double>("MassMax")),
36 
37  LumiBin_(iConfig.getUntrackedParameter<int>("LumiBin")),
38  LumiMin_(iConfig.getUntrackedParameter<double>("LumiMin")),
39  LumiMax_(iConfig.getUntrackedParameter<double>("LumiMax")),
40 
41  PVBin_(iConfig.getUntrackedParameter<int>("PVBin")),
42  PVMin_(iConfig.getUntrackedParameter<double>("PVMin")),
43  PVMax_(iConfig.getUntrackedParameter<double>("PVMax")),
44 
45  VtxNTracksFitCut_(iConfig.getUntrackedParameter<double>("VtxNTracksFitMin")),
46  VtxNdofCut_(iConfig.getUntrackedParameter<double>("VtxNdofMin")),
47  VtxAbsZCut_(iConfig.getUntrackedParameter<double>("VtxAbsZMax")),
48  VtxRhoCut_(iConfig.getUntrackedParameter<double>("VtxRhoMax")),
49 
50  IDTypestr_(iConfig.getUntrackedParameter<std::string>("IDType")),
51  IsoTypestr_(iConfig.getUntrackedParameter<std::string>("IsoType")),
52  IsoCut_(iConfig.getUntrackedParameter<double>("IsoCut")) {
53  edm::LogInfo("ZCounting") << "Constructor ZCounting::ZCounting " << std::endl;
54 
55  // Trigger settings
56  triggers = new TriggerTools();
57  triggers->setTriggerResultsToken(consumes<edm::TriggerResults>(triggerResultsInputTag_));
58  triggers->setTriggerEventToken(consumes<trigger::TriggerEvent>(iConfig.getParameter<edm::InputTag>("TriggerEvent")));
60 
61  edm::LogVerbatim("ZCounting") << "ZCounting::ZCounting set trigger names";
62  const std::vector<std::string> patterns_ = iConfig.getParameter<std::vector<std::string>>("MuonTriggerNames");
63  for (const std::string& pattern_ : patterns_) {
64  triggers->addTriggerRecord(pattern_);
65  }
66 
67  if (IDTypestr_ == "Loose")
68  IDType_ = LooseID;
69  else if (IDTypestr_ == "Medium")
70  IDType_ = MediumID;
71  else if (IDTypestr_ == "Tight")
72  IDType_ = TightID;
73  else if (IDTypestr_ == "CustomTight")
75  else
76  IDType_ = NoneID;
77 
78  if (IsoTypestr_ == "Tracker-based")
80  else if (IsoTypestr_ == "PF-based")
81  IsoType_ = PFIso;
82  else
83  IsoType_ = NoneIso;
84 }
85 
86 //
87 // -------------------------------------- Destructor --------------------------------------------
88 //
89 ZCounting::~ZCounting() { edm::LogInfo("ZCounting") << "Destructor ZCounting::~ZCounting " << std::endl; }
90 
91 //
92 // -------------------------------------- beginRun --------------------------------------------
93 //
94 void ZCounting::dqmBeginRun(edm::Run const& iRun, edm::EventSetup const& iSetup) {
95  edm::LogInfo("ZCounting") << "ZCounting::beginRun" << std::endl;
96 
97  // initialize triggers
98 
99  edm::LogVerbatim("ZCounting") << "ZCounting::dqmBeginRun now at " << iRun.id();
100  bool hltChanged_ = true;
101  if (hltConfigProvider_.init(iRun, iSetup, triggerResultsInputTag_.process(), hltChanged_)) {
102  edm::LogVerbatim("ZCounting") << "ZCounting::dqmBeginRun [TriggerObjMatchValueMapsProducer::beginRun] "
103  "HLTConfigProvider initialized [processName() = \""
104  << hltConfigProvider_.processName() << "\", tableName() = \""
105  << hltConfigProvider_.tableName() << "\", size() = " << hltConfigProvider_.size()
106  << "]";
107  } else {
108  edm::LogError("ZCounting") << "ZCounting::dqmBeginRun Initialization of HLTConfigProvider failed for Run="
109  << iRun.id() << " (process=\"" << triggerResultsInputTag_.process()
110  << "\") -> plugin will not produce outputs for this Run";
111  return;
112  }
113 
115 }
116 
117 //
118 // -------------------------------------- bookHistos --------------------------------------------
119 //
121  edm::LogInfo("ZCounting") << "ZCounting::bookHistograms" << std::endl;
122  ibooker_.cd();
123  ibooker_.setCurrentFolder("ZCounting/Histograms");
124 
125  // Muon histograms
126  h_mass_2HLT_BB = ibooker_.book2D("h_mass_2HLT_BB",
127  "Both muon pass HLT in barrel-barrel",
128  LumiBin_,
129  LumiMin_,
130  LumiMax_,
131  MassBin_,
132  MassMin_,
133  MassMax_);
134  h_mass_2HLT_BE = ibooker_.book2D("h_mass_2HLT_BE",
135  "Both muon pass HLT passing in barrel-endcap",
136  LumiBin_,
137  LumiMin_,
138  LumiMax_,
139  MassBin_,
140  MassMin_,
141  MassMax_);
142  h_mass_2HLT_EE = ibooker_.book2D("h_mass_2HLT_EE",
143  "Both muon pass HLT passing in endcap-endcap",
144  LumiBin_,
145  LumiMin_,
146  LumiMax_,
147  MassBin_,
148  MassMin_,
149  MassMax_);
150  h_mass_1HLT_BB = ibooker_.book2D("h_mass_1HLT_BB",
151  "One muon pass HLT in barrel-barrel",
152  LumiBin_,
153  LumiMin_,
154  LumiMax_,
155  MassBin_,
156  MassMin_,
157  MassMax_);
158  h_mass_1HLT_BE = ibooker_.book2D("h_mass_1HLT_BE",
159  "One muon pass HLT passing in barrel-endcap",
160  LumiBin_,
161  LumiMin_,
162  LumiMax_,
163  MassBin_,
164  MassMin_,
165  MassMax_);
166  h_mass_1HLT_EE = ibooker_.book2D("h_mass_1HLT_EE",
167  "One muon pass HLT passing in endcap-endcap",
168  LumiBin_,
169  LumiMin_,
170  LumiMax_,
171  MassBin_,
172  MassMin_,
173  MassMax_);
174 
175  h_mass_SIT_fail_BB = ibooker_.book2D("h_mass_SIT_fail_BB",
176  "Muon SIT failing barrel-barrel",
177  LumiBin_,
178  LumiMin_,
179  LumiMax_,
180  MassBin_,
181  MassMin_,
182  MassMax_);
183  h_mass_SIT_fail_BE = ibooker_.book2D("h_mass_SIT_fail_BE",
184  "Muon SIT failing barrel-endcap",
185  LumiBin_,
186  LumiMin_,
187  LumiMax_,
188  MassBin_,
189  MassMin_,
190  MassMax_);
191 
192  h_mass_SIT_fail_EE = ibooker_.book2D("h_mass_SIT_fail_EE",
193  "Muon SIT failing endcap-endcap",
194  LumiBin_,
195  LumiMin_,
196  LumiMax_,
197  MassBin_,
198  MassMin_,
199  MassMax_);
200 
201  h_mass_Glo_fail_BB = ibooker_.book2D("h_mass_Glo_fail_BB",
202  "Muon Glo failing barrel-barrel",
203  LumiBin_,
204  LumiMin_,
205  LumiMax_,
206  MassBin_,
207  MassMin_,
208  MassMax_);
209  h_mass_Glo_fail_BE = ibooker_.book2D("h_mass_Glo_fail_BE",
210  "Muon Glo failing barrel-endcap",
211  LumiBin_,
212  LumiMin_,
213  LumiMax_,
214  MassBin_,
215  MassMin_,
216  MassMax_);
217 
218  h_mass_Glo_fail_EE = ibooker_.book2D("h_mass_Glo_fail_EE",
219  "Muon Glo failing endcap-endcap",
220  LumiBin_,
221  LumiMin_,
222  LumiMax_,
223  MassBin_,
224  MassMin_,
225  MassMax_);
226 
227  h_npv = ibooker_.book2D(
228  "h_npv", "Events with valid primary vertex", LumiBin_, LumiMin_, LumiMax_, PVBin_, PVMin_, PVMax_);
229 
230  // Axis titles
231  h_mass_2HLT_BB->setAxisTitle("luminosity section", 1);
232  h_mass_2HLT_BE->setAxisTitle("luminosity section", 1);
233  h_mass_2HLT_EE->setAxisTitle("luminosity section", 1);
234  h_mass_1HLT_BB->setAxisTitle("luminosity section", 1);
235  h_mass_1HLT_BE->setAxisTitle("luminosity section", 1);
236  h_mass_1HLT_EE->setAxisTitle("luminosity section", 1);
237  h_mass_SIT_fail_BB->setAxisTitle("luminosity section", 1);
238  h_mass_SIT_fail_BE->setAxisTitle("luminosity section", 1);
239  h_mass_SIT_fail_EE->setAxisTitle("luminosity section", 1);
240  h_mass_Glo_fail_BB->setAxisTitle("luminosity section", 1);
241  h_mass_Glo_fail_BE->setAxisTitle("luminosity section", 1);
242  h_mass_Glo_fail_EE->setAxisTitle("luminosity section", 1);
243  h_mass_2HLT_BB->setAxisTitle("tag and probe mass", 2);
244  h_mass_2HLT_BE->setAxisTitle("tag and probe mass", 2);
245  h_mass_2HLT_EE->setAxisTitle("tag and probe mass", 2);
246  h_mass_1HLT_BB->setAxisTitle("tag and probe mass", 2);
247  h_mass_1HLT_BE->setAxisTitle("tag and probe mass", 2);
248  h_mass_1HLT_EE->setAxisTitle("tag and probe mass", 2);
249  h_mass_SIT_fail_BB->setAxisTitle("tag and probe mass", 2);
250  h_mass_SIT_fail_BE->setAxisTitle("tag and probe mass", 2);
251  h_mass_SIT_fail_EE->setAxisTitle("tag and probe mass", 2);
252  h_mass_Glo_fail_BB->setAxisTitle("tag and probe mass", 2);
253  h_mass_Glo_fail_BE->setAxisTitle("tag and probe mass", 2);
254  h_mass_Glo_fail_EE->setAxisTitle("tag and probe mass", 2);
255  h_npv->setAxisTitle("luminosity section", 1);
256  h_npv->setAxisTitle("number of primary vertices", 2);
257 }
258 
259 //
260 // -------------------------------------- Analyze --------------------------------------------
261 //
262 //--------------------------------------------------------------------------------------------------
263 void ZCounting::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) { // Fill event tree on the fly
264  edm::LogInfo("ZCounting") << "ZCounting::analyze" << std::endl;
265 
266  //-------------------------------
267  //--- Vertex
268  //-------------------------------
270  iEvent.getByToken(fPVName_token, hVertexProduct);
271  if (!hVertexProduct.isValid()) {
272  edm::LogWarning("ZCounting") << "ZCounting::analyze - no valid primary vertex product found" << std::endl;
273  return;
274  }
275 
276  const reco::Vertex* pv = nullptr;
277  int nvtx = 0;
278 
279  for (auto const& itVtx : *hVertexProduct) {
280  if (itVtx.isFake())
281  continue;
282  if (itVtx.tracksSize() < VtxNTracksFitCut_)
283  continue;
284  if (itVtx.ndof() < VtxNdofCut_)
285  continue;
286  if (fabs(itVtx.z()) > VtxAbsZCut_)
287  continue;
288  if (itVtx.position().Rho() > VtxRhoCut_)
289  continue;
290 
291  if (nvtx == 0) {
292  pv = &itVtx;
293  }
294  nvtx++;
295  }
296 
297  h_npv->Fill(iEvent.luminosityBlock(), nvtx);
298 
299  //-------------------------------
300  //--- Trigger
301  //-------------------------------
303 
304  // Trigger requirement
305  if (!triggers->pass())
306  return;
307 
308  //-------------------------------
309  //--- Muons and Tracks
310  //-------------------------------
312  iEvent.getByToken(fMuonName_token, hMuonProduct);
313  if (!hMuonProduct.isValid())
314  return;
315 
317  iEvent.getByToken(fTrackName_token, hTrackProduct);
318  if (!hTrackProduct.isValid())
319  return;
320 
321  TLorentzVector vTag(0., 0., 0., 0.);
322  TLorentzVector vProbe(0., 0., 0., 0.);
323  TLorentzVector vTrack(0., 0., 0., 0.);
324 
325  // Tag loop
326  for (auto const& itMu1 : *hMuonProduct) {
327  const float pt1 = itMu1.muonBestTrack()->pt();
328  const float eta1 = itMu1.muonBestTrack()->eta();
329  const float phi1 = itMu1.muonBestTrack()->phi();
330  const float q1 = itMu1.muonBestTrack()->charge();
331 
332  // Tag selection: kinematic cuts, lepton selection and trigger matching
333  if (pt1 < PtCutL1_)
334  continue;
335  if (fabs(eta1) > EtaCutL1_)
336  continue;
337  if (!(passMuonID(itMu1, pv) && passMuonIso(itMu1)))
338  continue;
339  if (!triggers->passObj(eta1, phi1))
340  continue;
341 
342  vTag.SetPtEtaPhiM(pt1, eta1, phi1, MUON_MASS);
343 
344  bool isTagCentral = false;
345  if (fabs(eta1) < MUON_BOUND)
346  isTagCentral = true;
347 
348  // Probe loop over muons
349  for (auto const& itMu2 : *hMuonProduct) {
350  if (&itMu2 == &itMu1)
351  continue;
352 
353  const float pt2 = itMu2.muonBestTrack()->pt();
354  const float eta2 = itMu2.muonBestTrack()->eta();
355  const float phi2 = itMu2.muonBestTrack()->phi();
356  const float q2 = itMu2.muonBestTrack()->charge();
357 
358  // Probe selection: kinematic cuts and opposite charge requirement
359  if (pt2 < PtCutL2_)
360  continue;
361  if (fabs(eta2) > EtaCutL2_)
362  continue;
363  if (q1 == q2)
364  continue;
365 
366  vProbe.SetPtEtaPhiM(pt2, eta2, phi2, MUON_MASS);
367 
368  // Mass window
369  TLorentzVector vDilep = vTag + vProbe;
370  float dilepMass = vDilep.M();
371  if ((dilepMass < MassMin_) || (dilepMass > MassMax_))
372  continue;
373 
374  bool isProbeCentral = false;
375  if (fabs(eta2) < MUON_BOUND)
376  isProbeCentral = true;
377 
378  // Determine event category for efficiency calculation
379  if (passMuonID(itMu2, pv) && passMuonIso(itMu2)) {
380  if (triggers->passObj(eta2, phi2)) {
381  // category 2HLT: both muons passing trigger requirements
382  if (&itMu1 > &itMu2)
383  continue; // make sure we don't double count MuMu2HLT category
384 
385  if (isTagCentral && isProbeCentral) {
386  h_mass_2HLT_BB->Fill(iEvent.luminosityBlock(), dilepMass);
387  } else if (!isTagCentral && !isProbeCentral) {
388  h_mass_2HLT_EE->Fill(iEvent.luminosityBlock(), dilepMass);
389  } else {
390  h_mass_2HLT_BE->Fill(iEvent.luminosityBlock(), dilepMass);
391  }
392  } else {
393  // category 1HLT: only one muon passes trigger
394  if (isTagCentral && isProbeCentral) {
395  h_mass_1HLT_BB->Fill(iEvent.luminosityBlock(), dilepMass);
396  } else if (!isTagCentral && !isProbeCentral) {
397  h_mass_1HLT_EE->Fill(iEvent.luminosityBlock(), dilepMass);
398  } else {
399  h_mass_1HLT_BE->Fill(iEvent.luminosityBlock(), dilepMass);
400  }
401  }
402  } else if (itMu2.isGlobalMuon()) {
403  // category Glo: probe is a Global muon but failing selection
404  if (isTagCentral && isProbeCentral) {
405  h_mass_SIT_fail_BB->Fill(iEvent.luminosityBlock(), dilepMass);
406  } else if (!isTagCentral && !isProbeCentral) {
407  h_mass_SIT_fail_EE->Fill(iEvent.luminosityBlock(), dilepMass);
408  } else {
409  h_mass_SIT_fail_BE->Fill(iEvent.luminosityBlock(), dilepMass);
410  }
411  } else if (itMu2.isStandAloneMuon()) {
412  // category Sta: probe is a Standalone muon
413  if (isTagCentral && isProbeCentral) {
414  h_mass_Glo_fail_BB->Fill(iEvent.luminosityBlock(), dilepMass);
415  } else if (!isTagCentral && !isProbeCentral) {
416  h_mass_Glo_fail_EE->Fill(iEvent.luminosityBlock(), dilepMass);
417  } else {
418  h_mass_Glo_fail_BE->Fill(iEvent.luminosityBlock(), dilepMass);
419  }
420  } else if (itMu2.innerTrack()->hitPattern().trackerLayersWithMeasurement() >= 6 &&
421  itMu2.innerTrack()->hitPattern().numberOfValidPixelHits() >= 1) {
422  // cateogry Trk: probe is a tracker track
423  if (isTagCentral && isProbeCentral) {
424  h_mass_Glo_fail_BB->Fill(iEvent.luminosityBlock(), dilepMass);
425  } else if (!isTagCentral && !isProbeCentral) {
426  h_mass_Glo_fail_EE->Fill(iEvent.luminosityBlock(), dilepMass);
427  } else {
428  h_mass_Glo_fail_BE->Fill(iEvent.luminosityBlock(), dilepMass);
429  }
430  }
431  } // End of probe loop over muons
432 
433  // Probe loop over tracks, only for standalone efficiency calculation
434  for (auto const& itTrk : *hTrackProduct) {
435  // Check track is not a muon
436  bool isMuon = false;
437  for (auto const& itMu : *hMuonProduct) {
438  if (itMu.innerTrack().isNonnull() && itMu.innerTrack().get() == &itTrk) {
439  isMuon = true;
440  break;
441  }
442  }
443  if (isMuon)
444  continue;
445 
446  const float pt2 = itTrk.pt();
447  const float eta2 = itTrk.eta();
448  const float phi2 = itTrk.phi();
449  const float q2 = itTrk.charge();
450 
451  // Probe selection: kinematic cuts and opposite charge requirement
452  if (pt2 < PtCutL2_)
453  continue;
454  if (fabs(eta2) > EtaCutL2_)
455  continue;
456  if (q1 == q2)
457  continue;
458 
459  vTrack.SetPtEtaPhiM(pt2, eta2, phi2, MUON_MASS);
460 
461  TLorentzVector vDilep = vTag + vTrack;
462  float dilepMass = vDilep.M();
463  if ((dilepMass < MassMin_) || (dilepMass > MassMax_))
464  continue;
465 
466  bool isTrackCentral = false;
467  if (fabs(eta2) < MUON_BOUND)
468  isTrackCentral = true;
469 
470  if (itTrk.hitPattern().trackerLayersWithMeasurement() >= 6 && itTrk.hitPattern().numberOfValidPixelHits() >= 1) {
471  if (isTagCentral && isTrackCentral) {
472  h_mass_Glo_fail_BB->Fill(iEvent.luminosityBlock(), dilepMass);
473  } else if (!isTagCentral && !isTrackCentral) {
474  h_mass_Glo_fail_EE->Fill(iEvent.luminosityBlock(), dilepMass);
475  } else {
476  h_mass_Glo_fail_BE->Fill(iEvent.luminosityBlock(), dilepMass);
477  }
478  }
479  } //End of probe loop over tracks
480  } //End of tag loop
481 }
482 
483 //
484 // -------------------------------------- functions --------------------------------------------
485 //
486 
487 //--------------------------------------------------------------------------------------------------
488 // Definition of the CustomTightID function
490  if (!muon.isPFMuon() || !muon.isGlobalMuon())
491  return false;
492 
493  bool muID = isGoodMuon(muon, muon::GlobalMuonPromptTight) && (muon.numberOfMatchedStations() > 1);
494 
495  bool muIdAndHits = muID && muon.innerTrack()->hitPattern().trackerLayersWithMeasurement() > 5 &&
496  muon.innerTrack()->hitPattern().numberOfValidPixelHits() > 0;
497 
498  return muIdAndHits;
499 }
500 
501 //--------------------------------------------------------------------------------------------------
503  // Muon ID selection, using internal function "DataFormats/MuonReco/src/MuonSelectors.cc
504  switch (IDType_) {
505  case LooseID:
506  return muon::isLooseMuon(muon);
507  case MediumID:
508  return muon::isMediumMuon(muon);
509  case CustomTightID:
510  return isCustomTightMuon(muon);
511  case TightID:
512  return vtx != nullptr && muon::isTightMuon(muon, *vtx);
513  case NoneID:
514  return true;
515  }
516  return false;
517 }
518 
519 //--------------------------------------------------------------------------------------------------
521  //Muon isolation selection, up-to-date with MUO POG recommendation
522  switch (IsoType_) {
523  case TrackerIso:
524  return muon.isolationR03().sumPt < IsoCut_;
525  case PFIso:
526  return muon.pfIsolationR04().sumChargedHadronPt +
527  std::max(0.,
528  muon.pfIsolationR04().sumNeutralHadronEt + muon.pfIsolationR04().sumPhotonEt -
529  0.5 * muon.pfIsolationR04().sumPUPt) <
530  IsoCut_;
531  case NoneIso:
532  return true;
533  }
534 
535  return false;
536 }
537 
ZCounting(const edm::ParameterSet &ps)
Definition: ZCounting.cc:20
Log< level::Info, true > LogVerbatim
const double MassMax_
Definition: ZCounting.h:65
MonitorElement * h_mass_SIT_fail_BE
Definition: ZCounting.h:111
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
void setDRMAX(const double _drMax)
Definition: TriggerTools.h:28
bool isMuon(const Candidate &part)
Definition: pdgIdUtils.h:9
bool passMuonIso(const reco::Muon &muon)
Definition: ZCounting.cc:520
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
bool isMediumMuon(const reco::Muon &, bool run2016_hip_mitigation=false)
const double VtxNTracksFitCut_
Definition: ZCounting.h:75
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
void initHLTObjects(const HLTConfigProvider &hltConfigProvider_)
Definition: TriggerTools.cc:35
const edm::InputTag triggerResultsInputTag_
Definition: ZCounting.h:46
MonitorElement * h_mass_1HLT_BE
Definition: ZCounting.h:107
TriggerTools * triggers
Definition: ZCounting.h:90
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
const double VtxAbsZCut_
Definition: ZCounting.h:77
const int PVBin_
Definition: ZCounting.h:71
const std::string IDTypestr_
Definition: ZCounting.h:80
const double EtaCutL2_
Definition: ZCounting.h:61
MuonIsoTypes IsoType_
Definition: ZCounting.h:86
void setTriggerEventToken(edm::EDGetTokenT< trigger::TriggerEvent > token)
Definition: TriggerTools.h:27
MonitorElement * h_mass_2HLT_BE
Definition: ZCounting.h:103
const double EtaCutL1_
Definition: ZCounting.h:60
const double DRMAX
Definition: ZCounting.h:93
Log< level::Error, false > LogError
MonitorElement * h_mass_SIT_fail_BB
Definition: ZCounting.h:110
std::vector< Vertex > VertexCollection
Definition: Vertex.h:31
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
MonitorElement * h_mass_Glo_fail_BE
Definition: ZCounting.h:115
bool isLooseMuon(const reco::Muon &)
HLTConfigProvider hltConfigProvider_
Definition: ZCounting.h:89
edm::EDGetTokenT< reco::TrackCollection > fTrackName_token
Definition: ZCounting.h:55
void Fill(long long x)
bool isCustomTightMuon(const reco::Muon &muon)
Definition: ZCounting.cc:489
bool passMuonID(const reco::Muon &muon, const reco::Vertex *vtx)
Definition: ZCounting.cc:502
const double MUON_MASS
Definition: ZCounting.h:95
edm::EDGetTokenT< reco::MuonCollection > fMuonName_token
Definition: ZCounting.h:50
const double MassMin_
Definition: ZCounting.h:64
const double VtxNdofCut_
Definition: ZCounting.h:76
int iEvent
Definition: GenABIO.cc:224
const double LumiMax_
Definition: ZCounting.h:69
const double IsoCut_
Definition: ZCounting.h:82
unsigned int size() const
number of trigger paths in trigger table
edm::EDGetTokenT< reco::VertexCollection > fPVName_token
Definition: ZCounting.h:47
def pv(vc)
Definition: MetAnalyzer.py:7
void setTriggerResultsToken(edm::EDGetTokenT< edm::TriggerResults > token)
Definition: TriggerTools.h:26
bool pass() const
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: ZCounting.cc:120
const std::string IsoTypestr_
Definition: ZCounting.h:81
MuonIDTypes IDType_
Definition: ZCounting.h:85
bool passObj(const double eta, const double phi) const
MonitorElement * h_npv
Definition: ZCounting.h:99
const int LumiBin_
Definition: ZCounting.h:67
void analyze(edm::Event const &e, edm::EventSetup const &eSetup) override
Definition: ZCounting.cc:263
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
MonitorElement * h_mass_2HLT_EE
Definition: ZCounting.h:104
const double MUON_BOUND
Definition: ZCounting.h:96
RunID const & id() const
Definition: RunBase.h:39
MonitorElement * h_mass_2HLT_BB
Definition: ZCounting.h:102
const double PVMin_
Definition: ZCounting.h:72
Log< level::Info, false > LogInfo
void addTriggerRecord(const std::string &name)
Definition: TriggerTools.h:30
const double PVMax_
Definition: ZCounting.h:73
const std::string & processName() const
process name
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d&#39;tor
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:212
~ZCounting() override
Definition: ZCounting.cc:89
MonitorElement * h_mass_Glo_fail_BB
Definition: ZCounting.h:114
const double LumiMin_
Definition: ZCounting.h:68
bool isValid() const
Definition: HandleBase.h:70
fixed size matrix
const std::string & tableName() const
HLT ConfDB table name.
void dqmBeginRun(edm::Run const &, edm::EventSetup const &) override
Definition: ZCounting.cc:94
HLT enums.
void readEvent(const edm::Event &iEvent)
Definition: TriggerTools.cc:90
const double PtCutL1_
Definition: ZCounting.h:58
MonitorElement * h_mass_1HLT_EE
Definition: ZCounting.h:108
Log< level::Warning, false > LogWarning
bool isTightMuon(const reco::Muon &, const reco::Vertex &)
MonitorElement * h_mass_SIT_fail_EE
Definition: ZCounting.h:112
std::string const & process() const
Definition: InputTag.h:40
const double PtCutL2_
Definition: ZCounting.h:59
Definition: Run.h:45
MonitorElement * h_mass_1HLT_BB
Definition: ZCounting.h:106
MonitorElement * h_mass_Glo_fail_EE
Definition: ZCounting.h:116
const double VtxRhoCut_
Definition: ZCounting.h:78
const int MassBin_
Definition: ZCounting.h:63
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)