CMS 3D CMS Logo

ElectronMcMiniAODSignalValidator.cc
Go to the documentation of this file.
1 // user include files
3 #include "CLHEP/Units/GlobalPhysicalConstants.h"
5 
6 // user include files
7 
8 using namespace reco;
9 using namespace pat;
10 
12  : ElectronDqmAnalyzerBase(iConfig) {
13  mcTruthCollection_ = consumes<edm::View<reco::GenParticle> >(
14  iConfig.getParameter<edm::InputTag>("mcTruthCollection")); // prunedGenParticles
16  consumes<pat::ElectronCollection>(iConfig.getParameter<edm::InputTag>("electrons")); // slimmedElectrons
18  consumes<pat::ElectronCollection>(iConfig.getParameter<edm::InputTag>("electrons_endcaps")); // slimmedElectrons
19 
20  edm::ParameterSet histosSet = iConfig.getParameter<edm::ParameterSet>("histosCfg");
21  edm::ParameterSet isolationSet = iConfig.getParameter<edm::ParameterSet>("isolationCfg");
22 
23  maxPt_ = iConfig.getParameter<double>("MaxPt");
24  maxAbsEta_ = iConfig.getParameter<double>("MaxAbsEta");
25  deltaR_ = iConfig.getParameter<double>("DeltaR");
27  matchingIDs_ = iConfig.getParameter<std::vector<int> >("MatchingID");
28  matchingMotherIDs_ = iConfig.getParameter<std::vector<int> >("MatchingMotherID");
29  outputInternalPath_ = iConfig.getParameter<std::string>("OutputFolderName");
30 
31  // histos bining and limits
32 
33  xyz_nbin = histosSet.getParameter<int>("Nbinxyz");
34 
35  pt_nbin = histosSet.getParameter<int>("Nbinpt");
36  pt2D_nbin = histosSet.getParameter<int>("Nbinpt2D");
37  pteff_nbin = histosSet.getParameter<int>("Nbinpteff");
38  pt_max = histosSet.getParameter<double>("Ptmax");
39 
40  fhits_nbin = histosSet.getParameter<int>("Nbinfhits");
41  fhits_max = histosSet.getParameter<double>("Fhitsmax");
42 
43  eta_nbin = histosSet.getParameter<int>("Nbineta");
44  eta2D_nbin = histosSet.getParameter<int>("Nbineta2D");
45  eta_min = histosSet.getParameter<double>("Etamin");
46  eta_max = histosSet.getParameter<double>("Etamax");
47 
48  detamatch_nbin = histosSet.getParameter<int>("Nbindetamatch");
49  detamatch2D_nbin = histosSet.getParameter<int>("Nbindetamatch2D");
50  detamatch_min = histosSet.getParameter<double>("Detamatchmin");
51  detamatch_max = histosSet.getParameter<double>("Detamatchmax");
52 
53  dphi_nbin = histosSet.getParameter<int>("Nbindphi");
54  dphi_min = histosSet.getParameter<double>("Dphimin");
55  dphi_max = histosSet.getParameter<double>("Dphimax");
56 
57  dphimatch_nbin = histosSet.getParameter<int>("Nbindphimatch");
58  dphimatch2D_nbin = histosSet.getParameter<int>("Nbindphimatch2D");
59  dphimatch_min = histosSet.getParameter<double>("Dphimatchmin");
60  dphimatch_max = histosSet.getParameter<double>("Dphimatchmax");
61 
62  hoe_nbin = histosSet.getParameter<int>("Nbinhoe");
63  hoe_min = histosSet.getParameter<double>("Hoemin");
64  hoe_max = histosSet.getParameter<double>("Hoemax");
65 
66  mee_nbin = histosSet.getParameter<int>("Nbinmee");
67  mee_min = histosSet.getParameter<double>("Meemin");
68  mee_max = histosSet.getParameter<double>("Meemax");
69 
70  poptrue_nbin = histosSet.getParameter<int>("Nbinpoptrue");
71  poptrue_min = histosSet.getParameter<double>("Poptruemin");
72  poptrue_max = histosSet.getParameter<double>("Poptruemax");
73 
74  set_EfficiencyFlag = histosSet.getParameter<bool>("EfficiencyFlag");
75  set_StatOverflowFlag = histosSet.getParameter<bool>("StatOverflowFlag");
76 
77  ele_nbin = histosSet.getParameter<int>("NbinELE");
78  ele_min = histosSet.getParameter<double>("ELE_min");
79  ele_max = histosSet.getParameter<double>("ELE_max");
80 
81  // so to please coverity...
82 
83  h1_recEleNum = nullptr;
84 
85  h1_ele_vertexPt = nullptr;
86  h1_ele_vertexEta = nullptr;
87  h1_ele_vertexPt_nocut = nullptr;
88 
89  h1_scl_SigIEtaIEta_mAOD = nullptr;
92 
93  h2_ele_foundHitsVsEta = nullptr;
95 
96  h2_ele_PoPtrueVsEta = nullptr;
97  h2_ele_sigmaIetaIetaVsPt = nullptr;
98 
99  h1_ele_HoE_mAOD = nullptr;
100  h1_ele_HoE_mAOD_barrel = nullptr;
101  h1_ele_HoE_mAOD_endcaps = nullptr;
102  h1_ele_mee_all = nullptr;
103  h1_ele_mee_os = nullptr;
104 
105  h1_ele_fbrem_mAOD = nullptr;
106  h1_ele_fbrem_mAOD_barrel = nullptr;
107  h1_ele_fbrem_mAOD_endcaps = nullptr;
108 
109  h1_ele_dEtaSc_propVtx_mAOD = nullptr;
112  h1_ele_dPhiCl_propOut_mAOD = nullptr;
115 
125 }
126 
128 
130  edm::Run const&,
131  edm::EventSetup const&) {
133 
134  setBookIndex(-1);
135  setBookPrefix("h");
138 
139  // rec event collections sizes
140  h1_recEleNum = bookH1(iBooker, "recEleNum", "# rec electrons", ele_nbin, ele_min, ele_max, "N_{ele}");
141  // matched electrons
142  setBookPrefix("h_mc");
143  setBookPrefix("h_ele");
145  bookH1withSumw2(iBooker, "vertexPt", "ele transverse momentum", pt_nbin, 0., pt_max, "p_{T vertex} (GeV/c)");
146  h1_ele_vertexEta = bookH1withSumw2(iBooker, "vertexEta", "ele momentum eta", eta_nbin, eta_min, eta_max, "#eta");
148  bookH1withSumw2(iBooker, "vertexPt_nocut", "pT of prunned electrons", pt_nbin, 0., 20., "p_{T vertex} (GeV/c)");
150  "PoPtrueVsEta",
151  "ele momentum / gen momentum vs eta",
152  eta2D_nbin,
153  eta_min,
154  eta_max,
155  50,
156  poptrue_min,
157  poptrue_max);
159  bookH2(iBooker, "sigmaIetaIetaVsPt", "SigmaIetaIeta vs pt", 100, 0., pt_max, 100, 0., 0.05);
160 
161  // all electrons
162  setBookPrefix("h_ele");
164  "mee_all",
165  "ele pairs invariant mass, all reco electrons",
166  mee_nbin,
167  mee_min,
168  mee_max,
169  "m_{ee} (GeV/c^{2})",
170  "Events",
171  "ELE_LOGY E1 P");
172  h1_ele_mee_os = bookH1withSumw2(iBooker,
173  "mee_os",
174  "ele pairs invariant mass, opp. sign",
175  mee_nbin,
176  mee_min,
177  mee_max,
178  "m_{e^{+}e^{-}} (GeV/c^{2})",
179  "Events",
180  "ELE_LOGY E1 P");
181 
182  // matched electron, superclusters
183  setBookPrefix("h_scl");
185  "SigIEtaIEta_mAOD",
186  "ele supercluster sigma ieta ieta",
187  100,
188  0.,
189  0.05,
190  "#sigma_{i#eta i#eta}",
191  "Events",
192  "ELE_LOGY E1 P");
194  "SigIEtaIEta_mAOD_barrel",
195  "ele supercluster sigma ieta ieta, barrel",
196  100,
197  0.,
198  0.05,
199  "#sigma_{i#eta i#eta}",
200  "Events",
201  "ELE_LOGY E1 P");
203  "SigIEtaIEta_mAOD_endcaps",
204  "ele supercluster sigma ieta ieta, endcaps",
205  100,
206  0.,
207  0.05,
208  "#sigma_{i#eta i#eta}",
209  "Events",
210  "ELE_LOGY E1 P");
211 
212  // matched electron, gsf tracks
213  setBookPrefix("h_ele");
214  h2_ele_foundHitsVsEta = bookH2(iBooker,
215  "foundHitsVsEta",
216  "ele track # found hits vs eta",
217  eta2D_nbin,
218  eta_min,
219  eta_max,
220  fhits_nbin,
221  0.,
222  fhits_max);
224  "foundHitsVsEta_mAOD",
225  "ele track # found hits vs eta",
226  eta2D_nbin,
227  eta_min,
228  eta_max,
229  fhits_nbin,
230  0.,
231  fhits_max);
232 
233  // matched electrons, matching
234  setBookPrefix("h_ele");
236  "HoE_mAOD",
237  "ele hadronic energy / em energy",
238  hoe_nbin,
239  hoe_min,
240  hoe_max,
241  "H/E",
242  "Events",
243  "ELE_LOGY E1 P");
245  "HoE_mAOD_barrel",
246  "ele hadronic energy / em energy, barrel",
247  hoe_nbin,
248  hoe_min,
249  hoe_max,
250  "H/E",
251  "Events",
252  "ELE_LOGY E1 P");
254  "HoE_mAOD_endcaps",
255  "ele hadronic energy / em energy, endcaps",
256  hoe_nbin,
257  hoe_min,
258  hoe_max,
259  "H/E",
260  "Events",
261  "ELE_LOGY E1 P");
263  "dEtaSc_propVtx_mAOD",
264  "ele #eta_{sc} - #eta_{tr}, prop from vertex",
268  "#eta_{sc} - #eta_{tr}",
269  "Events",
270  "ELE_LOGY E1 P");
272  "dEtaSc_propVtx_mAOD_barrel",
273  "ele #eta_{sc} - #eta_{tr}, prop from vertex, barrel",
277  "#eta_{sc} - #eta_{tr}",
278  "Events",
279  "ELE_LOGY E1 P");
281  "dEtaSc_propVtx_mAOD_endcaps",
282  "ele #eta_{sc} - #eta_{tr}, prop from vertex, endcaps",
286  "#eta_{sc} - #eta_{tr}",
287  "Events",
288  "ELE_LOGY E1 P");
290  "dPhiCl_propOut_mAOD",
291  "ele #phi_{cl} - #phi_{tr}, prop from outermost",
295  "#phi_{seedcl} - #phi_{tr} (rad)",
296  "Events",
297  "ELE_LOGY E1 P");
299  "dPhiCl_propOut_mAOD_barrel",
300  "ele #phi_{cl} - #phi_{tr}, prop from outermost, barrel",
304  "#phi_{seedcl} - #phi_{tr} (rad)",
305  "Events",
306  "ELE_LOGY E1 P");
308  "dPhiCl_propOut_mAOD_endcaps",
309  "ele #phi_{cl} - #phi_{tr}, prop from outermost, endcaps",
313  "#phi_{seedcl} - #phi_{tr} (rad)",
314  "Events",
315  "ELE_LOGY E1 P");
316 
317  // fbrem
319  iBooker, "fbrem_mAOD", "ele brem fraction, mode of GSF components", 100, 0., 1., "P_{in} - P_{out} / P_{in}");
321  "fbrem_mAOD_barrel",
322  "ele brem fraction for barrel, mode of GSF components",
323  100,
324  0.,
325  1.,
326  "P_{in} - P_{out} / P_{in}");
328  "fbrem_mAOD_endcaps",
329  "ele brem franction for endcaps, mode of GSF components",
330  100,
331  0.,
332  1.,
333  "P_{in} - P_{out} / P_{in}");
334 
335  // -- pflow over pT
337  "chargedHadronRelativeIso_mAOD",
338  "chargedHadronRelativeIso",
339  100,
340  0.0,
341  2.,
342  "chargedHadronRelativeIso",
343  "Events",
344  "ELE_LOGY E1 P");
346  "chargedHadronRelativeIso_mAOD_barrel",
347  "chargedHadronRelativeIso for barrel",
348  100,
349  0.0,
350  2.,
351  "chargedHadronRelativeIso_barrel",
352  "Events",
353  "ELE_LOGY E1 P");
355  "chargedHadronRelativeIso_mAOD_endcaps",
356  "chargedHadronRelativeIso for endcaps",
357  100,
358  0.0,
359  2.,
360  "chargedHadronRelativeIso_endcaps",
361  "Events",
362  "ELE_LOGY E1 P");
364  "neutralHadronRelativeIso_mAOD",
365  "neutralHadronRelativeIso",
366  100,
367  0.0,
368  2.,
369  "neutralHadronRelativeIso",
370  "Events",
371  "ELE_LOGY E1 P");
373  "neutralHadronRelativeIso_mAOD_barrel",
374  "neutralHadronRelativeIso for barrel",
375  100,
376  0.0,
377  2.,
378  "neutralHadronRelativeIso_barrel",
379  "Events",
380  "ELE_LOGY E1 P");
382  "neutralHadronRelativeIso_mAOD_endcaps",
383  "neutralHadronRelativeIso for endcaps",
384  100,
385  0.0,
386  2.,
387  "neutralHadronRelativeIso_endcaps",
388  "Events",
389  "ELE_LOGY E1 P");
391  "photonRelativeIso_mAOD",
392  "photonRelativeIso",
393  100,
394  0.0,
395  2.,
396  "photonRelativeIso",
397  "Events",
398  "ELE_LOGY E1 P");
400  "photonRelativeIso_mAOD_barrel",
401  "photonRelativeIso for barrel",
402  100,
403  0.0,
404  2.,
405  "photonRelativeIso_barrel",
406  "Events",
407  "ELE_LOGY E1 P");
409  "photonRelativeIso_mAOD_endcaps",
410  "photonRelativeIso for endcaps",
411  100,
412  0.0,
413  2.,
414  "photonRelativeIso_endcaps",
415  "Events",
416  "ELE_LOGY E1 P");
417 }
418 
420  // get collections
421  auto electrons = iEvent.getHandle(electronToken_);
423  auto genParticles = iEvent.getHandle(mcTruthCollection_);
424 
425  edm::Handle<pat::ElectronCollection> mergedElectrons;
426 
427  edm::LogInfo("ElectronMcSignalValidatorMiniAOD::analyze")
428  << "Treating event " << iEvent.id() << " with " << electrons.product()->size() << " electrons";
429  edm::LogInfo("ElectronMcSignalValidatorMiniAOD::analyze")
430  << "Treating event " << iEvent.id() << " with " << electrons_endcaps.product()->size()
431  << " multi slimmed electrons";
432 
433  h1_recEleNum->Fill((*electrons).size());
434 
435  //===============================================
436  // all rec electrons
437  //===============================================
438 
439  pat::Electron gsfElectron;
440  pat::ElectronCollection::const_iterator el1;
441  std::vector<pat::Electron>::const_iterator el3;
442  std::vector<pat::Electron>::const_iterator el4;
443 
444  //===============================================
445  // get a vector with EB & EE
446  //===============================================
447  std::vector<pat::Electron> localCollection;
448 
449  // looking for EB
450  for (el1 = electrons->begin(); el1 != electrons->end(); el1++) {
451  if (el1->isEB()) {
452  localCollection.push_back(*el1);
453  }
454  }
455 
456  // looking for EE
457  for (el1 = electrons_endcaps->begin(); el1 != electrons_endcaps->end(); el1++) {
458  if (el1->isEE()) {
459  localCollection.push_back(*el1);
460  }
461  }
462 
463  for (el3 = localCollection.begin(); el3 != localCollection.end(); el3++) {
464  for (el4 = el3 + 1; el4 != localCollection.end(); el4++) {
465  math::XYZTLorentzVector p12 = el3->p4() + el4->p4();
466  float mee2 = p12.Dot(p12);
467  h1_ele_mee_all->Fill(sqrt(mee2));
468  if (el3->charge() * el4->charge() < 0.) {
469  h1_ele_mee_os->Fill(sqrt(mee2));
470  }
471  }
472  }
473 
474  //===============================================
475  // charge mis-ID
476  //===============================================
477 
478  bool matchingMotherID;
479 
480  //===============================================
481  // association mc-reco
482  //===============================================
483 
484  for (size_t i = 0; i < genParticles->size(); i++) {
485  // select requested mother matching gen particle
486  // always include single particle with no mother
487  const Candidate* mother = (*genParticles)[i].mother(0);
488  matchingMotherID = false;
489  for (unsigned int ii = 0; ii < matchingMotherIDs_.size(); ii++) {
490  if (mother == nullptr) {
491  matchingMotherID = true;
492  } else if (mother->pdgId() == matchingMotherIDs_[ii]) {
493  if (mother->numberOfDaughters() <= 2) {
494  matchingMotherID = true;
495  }
496  } // end of mother if test
497 
498  } // end of for loop
499  if (!matchingMotherID) {
500  continue;
501  }
502 
503  // electron preselection
504  if ((*genParticles)[i].pt() > maxPt_ || std::abs((*genParticles)[i].eta()) > maxAbsEta_) {
505  continue;
506  }
507 
508  // find best matched electron
509  bool okGsfFound = false;
510  bool passMiniAODSelection = true;
511  double gsfOkRatio = 999999.;
512  bool isEBflag = false;
513  bool isEEflag = false;
514  pat::Electron bestGsfElectron;
515 
516  for (el3 = localCollection.begin(); el3 != localCollection.end(); el3++) {
517  double dphi = el3->phi() - (*genParticles)[i].phi();
518  if (std::abs(dphi) > CLHEP::pi) {
519  dphi = dphi < 0 ? (CLHEP::twopi) + dphi : dphi - CLHEP::twopi;
520  }
521  double deltaR2 = (el3->eta() - (*genParticles)[i].eta()) * (el3->eta() - (*genParticles)[i].eta()) + dphi * dphi;
522  if (deltaR2 < deltaR2_) {
523  if ((((*genParticles)[i].pdgId() == 11) && (el3->charge() < 0.)) ||
524  (((*genParticles)[i].pdgId() == -11) && (el3->charge() > 0.))) {
525  double tmpGsfRatio = el3->p() / (*genParticles)[i].p();
526  if (std::abs(tmpGsfRatio - 1) < std::abs(gsfOkRatio - 1)) {
527  gsfOkRatio = tmpGsfRatio;
528  bestGsfElectron = *el3;
529  okGsfFound = true;
530  }
531  }
532  }
533  } // end *electrons loop
534 
535  if (okGsfFound) {
536  //------------------------------------
537  // analysis when the mc track is found
538  //------------------------------------
539  passMiniAODSelection = bestGsfElectron.pt() >= 5.;
540  double one_over_pt = 1. / bestGsfElectron.pt();
541  isEBflag = bestGsfElectron.isEB();
542  isEEflag = bestGsfElectron.isEE();
543 
544  // electron related distributions
545  h1_ele_vertexPt->Fill(bestGsfElectron.pt());
546  h1_ele_vertexEta->Fill(bestGsfElectron.eta());
547  if ((bestGsfElectron.scSigmaIEtaIEta() == 0.) && (bestGsfElectron.fbrem() == 0.))
548  h1_ele_vertexPt_nocut->Fill(bestGsfElectron.pt());
549  // track related distributions
550  h2_ele_foundHitsVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.gsfTrack()->numberOfValidHits());
551 
552  // generated distributions for matched electrons
553  h2_ele_PoPtrueVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.p() / (*genParticles)[i].p());
554 
555  if (passMiniAODSelection) { // Pt > 5.
556  h2_ele_sigmaIetaIetaVsPt->Fill(bestGsfElectron.pt(), bestGsfElectron.scSigmaIEtaIEta());
557 
558  // supercluster related distributions
559  h1_scl_SigIEtaIEta_mAOD->Fill(bestGsfElectron.scSigmaIEtaIEta());
562 
563  // track related distributions
564  h2_ele_foundHitsVsEta_mAOD->Fill(bestGsfElectron.eta(), bestGsfElectron.gsfTrack()->numberOfValidHits());
565 
566  // match distributions
567  h1_ele_HoE_mAOD->Fill(bestGsfElectron.hcalOverEcal());
568 
569  // fbrem
570  h1_ele_fbrem_mAOD->Fill(bestGsfElectron.fbrem());
571 
572  // -- pflow over pT
573 
575  one_over_pt);
577  one_over_pt);
578  h1_ele_photonRelativeIso_mAOD->Fill(bestGsfElectron.pfIsolationVariables().sumPhotonEt * one_over_pt);
579 
580  if (isEBflag) {
581  // supercluster related distributions
585  // match distributions
586  h1_ele_HoE_mAOD_barrel->Fill(bestGsfElectron.hcalOverEcal());
587  // fbrem
588  h1_ele_fbrem_mAOD_barrel->Fill(bestGsfElectron.fbrem());
589 
591  one_over_pt);
593  one_over_pt);
595  }
596 
597  // supercluster related distributions
598  else if (isEEflag) {
602  // match distributions
603  h1_ele_HoE_mAOD_endcaps->Fill(bestGsfElectron.hcalOverEcal());
604  // fbrem
605  h1_ele_fbrem_mAOD_endcaps->Fill(bestGsfElectron.fbrem());
607  one_over_pt);
609  one_over_pt);
611  }
612  }
613  }
614  //} // end loop i_elec
615  } // end loop size_t i
616 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
float scSigmaIEtaIEta() const
Definition: GsfElectron.h:496
double pt() const final
transverse momentum
float deltaPhiSeedClusterTrackAtCalo() const
Definition: GsfElectron.h:229
virtual const Candidate * mother(size_type i=0) const =0
return pointer to mother
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
reco::GsfTrackRef gsfTrack() const override
override the reco::GsfElectron::gsfTrack method, to access the internal storage of the supercluster ...
ElectronMcSignalValidatorMiniAOD(const edm::ParameterSet &)
Definition: HeavyIon.h:7
const Double_t pi
bool isEB() const
Definition: GsfElectron.h:328
void Fill(long long x)
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
edm::EDGetTokenT< edm::View< reco::GenParticle > > mcTruthCollection_
MonitorElement * bookH1(DQMStore::IBooker &, const std::string &name, const std::string &title, int nchX, double lowX, double highX, const std::string &titleX="", const std::string &titleY="Events", Option_t *option="E1 P")
virtual size_type numberOfDaughters() const =0
number of daughters
const PflowIsolationVariables & pfIsolationVariables() const
Definition: GsfElectron.h:729
int iEvent
Definition: GenABIO.cc:224
double p() const final
magnitude of momentum vector
T sqrt(T t)
Definition: SSEVec.h:19
float sumPhotonEt
sum pt of PF photons // old float photonIso ;
Definition: GsfElectron.h:665
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
void setBookPrefix(const std::string &)
float sumNeutralHadronEt
sum pt of neutral hadrons // old float neutralHadronIso ;
Definition: GsfElectron.h:664
const LorentzVector & p4(P4Kind kind) const
Definition: GsfElectron.cc:217
float hcalOverEcal(const ShowerShape &ss, int depth) const
Definition: GsfElectron.h:425
edm::EDGetTokenT< pat::ElectronCollection > electronTokenEndcaps_
ii
Definition: cuy.py:589
void setBookEfficiencyFlag(const bool &)
virtual int pdgId() const =0
PDG identifier.
Log< level::Info, false > LogInfo
float deltaEtaSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:225
bool isEE() const
Definition: GsfElectron.h:329
MonitorElement * bookH2withSumw2(DQMStore::IBooker &, const std::string &name, const std::string &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const std::string &titleX="", const std::string &titleY="", Option_t *option="COLZ")
Analysis-level electron class.
Definition: Electron.h:51
void analyze(const edm::Event &, const edm::EventSetup &) override
float fbrem() const
Definition: GsfElectron.h:809
fixed size matrix
MonitorElement * bookH2(DQMStore::IBooker &, const std::string &name, const std::string &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const std::string &titleX="", const std::string &titleY="", Option_t *option="COLZ")
MonitorElement * bookH1withSumw2(DQMStore::IBooker &, const std::string &name, const std::string &title, int nchX, double lowX, double highX, const std::string &titleX="", const std::string &titleY="Events", Option_t *option="E1 P")
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
edm::EDGetTokenT< pat::ElectronCollection > electronToken_
double phi() const final
momentum azimuthal angle
void setBookStatOverflowFlag(const bool &)
float sumChargedHadronPt
sum-pt of charged Hadron // old float chargedHadronIso ;
Definition: GsfElectron.h:663
Definition: Run.h:45
double eta() const final
momentum pseudorapidity