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_vertexPt_EB = nullptr;
87  h1_ele_vertexPt_EE = nullptr;
88  h1_ele_vertexEta = nullptr;
89  h1_ele_vertexPt_nocut = nullptr;
90 
91  h1_scl_SigIEtaIEta_mAOD = nullptr;
94 
95  h2_ele_foundHitsVsEta = nullptr;
97 
98  h2_ele_PoPtrueVsEta = nullptr;
99  h2_ele_sigmaIetaIetaVsPt = nullptr;
100 
101  h1_ele_HoE_mAOD = nullptr;
102  h1_ele_HoE_mAOD_barrel = nullptr;
103  h1_ele_HoE_mAOD_endcaps = nullptr;
104  h1_ele_mee_all = nullptr;
105  h1_ele_mee_os = nullptr;
106 
107  h1_ele_fbrem_mAOD = nullptr;
108  h1_ele_fbrem_mAOD_barrel = nullptr;
109  h1_ele_fbrem_mAOD_endcaps = nullptr;
110 
111  h1_ele_dEtaSc_propVtx_mAOD = nullptr;
114  h1_ele_dPhiCl_propOut_mAOD = nullptr;
117 
127 }
128 
130 
132  edm::Run const&,
133  edm::EventSetup const&) {
135 
136  setBookIndex(-1);
137  setBookPrefix("h");
140 
141  // rec event collections sizes
142  h1_recEleNum = bookH1(iBooker, "recEleNum", "# rec electrons", ele_nbin, ele_min, ele_max, "N_{ele}");
143  // matched electrons
144  setBookPrefix("h_mc");
145  setBookPrefix("h_ele");
147  bookH1withSumw2(iBooker, "vertexPt", "ele transverse momentum", pt_nbin, 0., pt_max, "p_{T vertex} (GeV/c)");
149  iBooker, "vertexPt_EB", "ele transverse momentum barrel", pt_nbin, 0., pt_max, "p_{T vertex} (GeV/c)");
151  iBooker, "vertexPt_EE", "ele transverse momentum endcaps", pt_nbin, 0., pt_max, "p_{T vertex} (GeV/c)");
152  h1_ele_vertexEta = bookH1withSumw2(iBooker, "vertexEta", "ele momentum eta", eta_nbin, eta_min, eta_max, "#eta");
154  bookH1withSumw2(iBooker, "vertexPt_nocut", "pT of prunned electrons", pt_nbin, 0., 20., "p_{T vertex} (GeV/c)");
156  "PoPtrueVsEta",
157  "ele momentum / gen momentum vs eta",
158  eta2D_nbin,
159  eta_min,
160  eta_max,
161  50,
162  poptrue_min,
163  poptrue_max);
165  bookH2(iBooker, "sigmaIetaIetaVsPt", "SigmaIetaIeta vs pt", 100, 0., pt_max, 100, 0., 0.05);
166 
167  // all electrons
168  setBookPrefix("h_ele");
170  "mee_all",
171  "ele pairs invariant mass, all reco electrons",
172  mee_nbin,
173  mee_min,
174  mee_max,
175  "m_{ee} (GeV/c^{2})",
176  "Events",
177  "ELE_LOGY E1 P");
178  h1_ele_mee_os = bookH1withSumw2(iBooker,
179  "mee_os",
180  "ele pairs invariant mass, opp. sign",
181  mee_nbin,
182  mee_min,
183  mee_max,
184  "m_{e^{+}e^{-}} (GeV/c^{2})",
185  "Events",
186  "ELE_LOGY E1 P");
187 
188  // matched electron, superclusters
189  setBookPrefix("h_scl");
191  "SigIEtaIEta_mAOD",
192  "ele supercluster sigma ieta ieta",
193  100,
194  0.,
195  0.05,
196  "#sigma_{i#eta i#eta}",
197  "Events",
198  "ELE_LOGY E1 P");
200  "SigIEtaIEta_mAOD_barrel",
201  "ele supercluster sigma ieta ieta, barrel",
202  100,
203  0.,
204  0.05,
205  "#sigma_{i#eta i#eta}",
206  "Events",
207  "ELE_LOGY E1 P");
209  "SigIEtaIEta_mAOD_endcaps",
210  "ele supercluster sigma ieta ieta, endcaps",
211  100,
212  0.,
213  0.05,
214  "#sigma_{i#eta i#eta}",
215  "Events",
216  "ELE_LOGY E1 P");
217 
218  // matched electron, gsf tracks
219  setBookPrefix("h_ele");
220  h2_ele_foundHitsVsEta = bookH2(iBooker,
221  "foundHitsVsEta",
222  "ele track # found hits vs eta",
223  eta2D_nbin,
224  eta_min,
225  eta_max,
226  fhits_nbin,
227  0.,
228  fhits_max);
230  "foundHitsVsEta_mAOD",
231  "ele track # found hits vs eta",
232  eta2D_nbin,
233  eta_min,
234  eta_max,
235  fhits_nbin,
236  0.,
237  fhits_max);
238 
239  // matched electrons, matching
240  setBookPrefix("h_ele");
242  "HoE_mAOD",
243  "ele hadronic energy / em energy",
244  hoe_nbin,
245  hoe_min,
246  hoe_max,
247  "H/E",
248  "Events",
249  "ELE_LOGY E1 P");
251  "HoE_mAOD_barrel",
252  "ele hadronic energy / em energy, barrel",
253  hoe_nbin,
254  hoe_min,
255  hoe_max,
256  "H/E",
257  "Events",
258  "ELE_LOGY E1 P");
260  "HoE_mAOD_endcaps",
261  "ele hadronic energy / em energy, endcaps",
262  hoe_nbin,
263  hoe_min,
264  hoe_max,
265  "H/E",
266  "Events",
267  "ELE_LOGY E1 P");
269  "dEtaSc_propVtx_mAOD",
270  "ele #eta_{sc} - #eta_{tr}, prop from vertex",
274  "#eta_{sc} - #eta_{tr}",
275  "Events",
276  "ELE_LOGY E1 P");
278  "dEtaSc_propVtx_mAOD_barrel",
279  "ele #eta_{sc} - #eta_{tr}, prop from vertex, barrel",
283  "#eta_{sc} - #eta_{tr}",
284  "Events",
285  "ELE_LOGY E1 P");
287  "dEtaSc_propVtx_mAOD_endcaps",
288  "ele #eta_{sc} - #eta_{tr}, prop from vertex, endcaps",
292  "#eta_{sc} - #eta_{tr}",
293  "Events",
294  "ELE_LOGY E1 P");
296  "dPhiCl_propOut_mAOD",
297  "ele #phi_{cl} - #phi_{tr}, prop from outermost",
301  "#phi_{seedcl} - #phi_{tr} (rad)",
302  "Events",
303  "ELE_LOGY E1 P");
305  "dPhiCl_propOut_mAOD_barrel",
306  "ele #phi_{cl} - #phi_{tr}, prop from outermost, barrel",
310  "#phi_{seedcl} - #phi_{tr} (rad)",
311  "Events",
312  "ELE_LOGY E1 P");
314  "dPhiCl_propOut_mAOD_endcaps",
315  "ele #phi_{cl} - #phi_{tr}, prop from outermost, endcaps",
319  "#phi_{seedcl} - #phi_{tr} (rad)",
320  "Events",
321  "ELE_LOGY E1 P");
322 
323  // fbrem
325  iBooker, "fbrem_mAOD", "ele brem fraction, mode of GSF components", 100, 0., 1., "P_{in} - P_{out} / P_{in}");
327  "fbrem_mAOD_barrel",
328  "ele brem fraction for barrel, mode of GSF components",
329  100,
330  0.,
331  1.,
332  "P_{in} - P_{out} / P_{in}");
334  "fbrem_mAOD_endcaps",
335  "ele brem franction for endcaps, mode of GSF components",
336  100,
337  0.,
338  1.,
339  "P_{in} - P_{out} / P_{in}");
340 
341  // -- pflow over pT
343  "chargedHadronRelativeIso_mAOD",
344  "chargedHadronRelativeIso",
345  100,
346  0.0,
347  2.,
348  "chargedHadronRelativeIso",
349  "Events",
350  "ELE_LOGY E1 P");
352  "chargedHadronRelativeIso_mAOD_barrel",
353  "chargedHadronRelativeIso for barrel",
354  100,
355  0.0,
356  2.,
357  "chargedHadronRelativeIso_barrel",
358  "Events",
359  "ELE_LOGY E1 P");
361  "chargedHadronRelativeIso_mAOD_endcaps",
362  "chargedHadronRelativeIso for endcaps",
363  100,
364  0.0,
365  2.,
366  "chargedHadronRelativeIso_endcaps",
367  "Events",
368  "ELE_LOGY E1 P");
370  "neutralHadronRelativeIso_mAOD",
371  "neutralHadronRelativeIso",
372  100,
373  0.0,
374  2.,
375  "neutralHadronRelativeIso",
376  "Events",
377  "ELE_LOGY E1 P");
379  "neutralHadronRelativeIso_mAOD_barrel",
380  "neutralHadronRelativeIso for barrel",
381  100,
382  0.0,
383  2.,
384  "neutralHadronRelativeIso_barrel",
385  "Events",
386  "ELE_LOGY E1 P");
388  "neutralHadronRelativeIso_mAOD_endcaps",
389  "neutralHadronRelativeIso for endcaps",
390  100,
391  0.0,
392  2.,
393  "neutralHadronRelativeIso_endcaps",
394  "Events",
395  "ELE_LOGY E1 P");
397  "photonRelativeIso_mAOD",
398  "photonRelativeIso",
399  100,
400  0.0,
401  2.,
402  "photonRelativeIso",
403  "Events",
404  "ELE_LOGY E1 P");
406  "photonRelativeIso_mAOD_barrel",
407  "photonRelativeIso for barrel",
408  100,
409  0.0,
410  2.,
411  "photonRelativeIso_barrel",
412  "Events",
413  "ELE_LOGY E1 P");
415  "photonRelativeIso_mAOD_endcaps",
416  "photonRelativeIso for endcaps",
417  100,
418  0.0,
419  2.,
420  "photonRelativeIso_endcaps",
421  "Events",
422  "ELE_LOGY E1 P");
423 }
424 
426  // get collections
427  auto electrons = iEvent.getHandle(electronToken_);
429  auto genParticles = iEvent.getHandle(mcTruthCollection_);
430 
431  edm::Handle<pat::ElectronCollection> mergedElectrons;
432 
433  edm::LogInfo("ElectronMcSignalValidatorMiniAOD::analyze")
434  << "Treating event " << iEvent.id() << " with " << electrons.product()->size() << " electrons";
435  edm::LogInfo("ElectronMcSignalValidatorMiniAOD::analyze")
436  << "Treating event " << iEvent.id() << " with " << electrons_endcaps.product()->size()
437  << " multi slimmed electrons";
438 
439  //h1_recEleNum->Fill((*electrons).size());
440 
441  //===============================================
442  // all rec electrons
443  //===============================================
444 
445  pat::Electron gsfElectron;
446  pat::ElectronCollection::const_iterator el1;
447  std::vector<pat::Electron>::const_iterator el3;
448  std::vector<pat::Electron>::const_iterator el4;
449 
450  //===============================================
451  // get a vector with EB & EE
452  //===============================================
453  std::vector<pat::Electron> localCollection;
454  std::vector<pat::Electron> localCollection_EB;
455  std::vector<pat::Electron> localCollection_EE;
456 
457  // looking for EB
458  for (el1 = electrons->begin(); el1 != electrons->end(); el1++) {
459  if (el1->isEB()) {
460  localCollection.push_back(*el1);
461  localCollection_EB.push_back(*el1);
462  }
463  }
464 
465  // looking for EE
466  for (el1 = electrons_endcaps->begin(); el1 != electrons_endcaps->end(); el1++) {
467  if (el1->isEE()) {
468  localCollection.push_back(*el1);
469  localCollection_EE.push_back(*el1);
470  }
471  }
472  h1_recEleNum->Fill((localCollection).size());
473 
474  for (el3 = localCollection.begin(); el3 != localCollection.end(); el3++) {
475  for (el4 = el3 + 1; el4 != localCollection.end(); el4++) {
476  math::XYZTLorentzVector p12 = el3->p4() + el4->p4();
477  float mee2 = p12.Dot(p12);
478  h1_ele_mee_all->Fill(sqrt(mee2));
479  if (el3->charge() * el4->charge() < 0.) {
480  h1_ele_mee_os->Fill(sqrt(mee2));
481  }
482  }
483  }
484 
485  //===============================================
486  // charge mis-ID
487  //===============================================
488 
489  bool matchingMotherID;
490 
491  //===============================================
492  // association mc-reco
493  //===============================================
494 
495  for (size_t i = 0; i < genParticles->size(); i++) {
496  // select requested mother matching gen particle
497  // always include single particle with no mother
498  const Candidate* mother = (*genParticles)[i].mother(0);
499  matchingMotherID = false;
500  for (unsigned int ii = 0; ii < matchingMotherIDs_.size(); ii++) {
501  if (mother == nullptr) {
502  matchingMotherID = true;
503  } else if (mother->pdgId() == matchingMotherIDs_[ii]) {
504  if (mother->numberOfDaughters() <= 2) {
505  matchingMotherID = true;
506  }
507  } // end of mother if test
508 
509  } // end of for loop
510  if (!matchingMotherID) {
511  continue;
512  }
513 
514  // electron preselection
515  if ((*genParticles)[i].pt() > maxPt_ || std::abs((*genParticles)[i].eta()) > maxAbsEta_) {
516  continue;
517  }
518 
519  // find best matched electron
520  bool okGsfFound = false;
521  bool passMiniAODSelection = true;
522  double gsfOkRatio = 999999.;
523  bool isEBflag = false;
524  bool isEEflag = false;
525  pat::Electron bestGsfElectron;
526 
527  for (el3 = localCollection.begin(); el3 != localCollection.end(); el3++) {
528  double dphi = el3->phi() - (*genParticles)[i].phi();
529  if (std::abs(dphi) > CLHEP::pi) {
530  dphi = dphi < 0 ? (CLHEP::twopi) + dphi : dphi - CLHEP::twopi;
531  }
532  double deltaR2 = (el3->eta() - (*genParticles)[i].eta()) * (el3->eta() - (*genParticles)[i].eta()) + dphi * dphi;
533  if (deltaR2 < deltaR2_) {
534  if ((((*genParticles)[i].pdgId() == 11) && (el3->charge() < 0.)) ||
535  (((*genParticles)[i].pdgId() == -11) && (el3->charge() > 0.))) {
536  double tmpGsfRatio = el3->p() / (*genParticles)[i].p();
537  if (std::abs(tmpGsfRatio - 1) < std::abs(gsfOkRatio - 1)) {
538  gsfOkRatio = tmpGsfRatio;
539  bestGsfElectron = *el3;
540  okGsfFound = true;
541  }
542  }
543  }
544  } // end *electrons loop
545 
546  if (okGsfFound) {
547  //------------------------------------
548  // analysis when the mc track is found
549  //------------------------------------
550  passMiniAODSelection = bestGsfElectron.pt() >= 5.;
551  double one_over_pt = 1. / bestGsfElectron.pt();
552  isEBflag = bestGsfElectron.isEB();
553  isEEflag = bestGsfElectron.isEE();
554 
555  // electron related distributions
556  h1_ele_vertexPt->Fill(bestGsfElectron.pt());
557  if (isEBflag) {
558  h1_ele_vertexPt_EB->Fill(bestGsfElectron.pt());
559  } else if (isEEflag) {
560  h1_ele_vertexPt_EE->Fill(bestGsfElectron.pt());
561  }
562  h1_ele_vertexEta->Fill(bestGsfElectron.eta());
563  if ((bestGsfElectron.scSigmaIEtaIEta() == 0.) && (bestGsfElectron.fbrem() == 0.))
564  h1_ele_vertexPt_nocut->Fill(bestGsfElectron.pt());
565  // track related distributions
566  h2_ele_foundHitsVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.gsfTrack()->numberOfValidHits());
567 
568  // generated distributions for matched electrons
569  h2_ele_PoPtrueVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.p() / (*genParticles)[i].p());
570 
571  if (passMiniAODSelection) { // Pt > 5.
572  h2_ele_sigmaIetaIetaVsPt->Fill(bestGsfElectron.pt(), bestGsfElectron.scSigmaIEtaIEta());
573 
574  // supercluster related distributions
575  h1_scl_SigIEtaIEta_mAOD->Fill(bestGsfElectron.scSigmaIEtaIEta());
578 
579  // track related distributions
580  h2_ele_foundHitsVsEta_mAOD->Fill(bestGsfElectron.eta(), bestGsfElectron.gsfTrack()->numberOfValidHits());
581 
582  // match distributions
583  h1_ele_HoE_mAOD->Fill(bestGsfElectron.hcalOverEcal());
584 
585  // fbrem
586  h1_ele_fbrem_mAOD->Fill(bestGsfElectron.fbrem());
587 
588  // -- pflow over pT
589 
591  one_over_pt);
593  one_over_pt);
594  h1_ele_photonRelativeIso_mAOD->Fill(bestGsfElectron.pfIsolationVariables().sumPhotonEt * one_over_pt);
595 
596  if (isEBflag) {
597  // supercluster related distributions
601  // match distributions
602  h1_ele_HoE_mAOD_barrel->Fill(bestGsfElectron.hcalOverEcal());
603  // fbrem
604  h1_ele_fbrem_mAOD_barrel->Fill(bestGsfElectron.fbrem());
605 
607  one_over_pt);
609  one_over_pt);
611  }
612 
613  // supercluster related distributions
614  else if (isEEflag) {
618  // match distributions
619  h1_ele_HoE_mAOD_endcaps->Fill(bestGsfElectron.hcalOverEcal());
620  // fbrem
621  h1_ele_fbrem_mAOD_endcaps->Fill(bestGsfElectron.fbrem());
623  one_over_pt);
625  one_over_pt);
627  }
628  }
629  }
630  //} // end loop i_elec
631  } // end loop size_t i
632 }
size
Write out results.
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
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:23
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
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