CMS 3D CMS Logo

EgammaObjects.cc
Go to the documentation of this file.
2 
5 
14 
16 
17 #include "TF1.h"
18 
20 {
21  particleID = ps.getParameter<int>("particleID");
22  EtCut = ps.getParameter<int>("EtCut");
23 
24  if( particleID == 22 ) particleString = "Photon";
25  else if( particleID == 11 ) particleString = "Electron";
26  else
27  throw(std::runtime_error("\n\nEgammaObjects: Only 11 = Photon and 22 = Electron are acceptable parictleIDs! Exiting...\n\n"));
28 
29  loadCMSSWObjects(ps);
31 
32  rootFile_ = TFile::Open(ps.getParameter<std::string>("outputFile").c_str(),"RECREATE");
33 
44 
45  hist_Phi_ = nullptr ;
57 
62 
67 
72 
77 
82 
87 
88 }
89 
91 {
92  MCTruthCollectionT_ = consumes<edm::HepMCProduct>(
93  ps.getParameter<edm::InputTag>("MCTruthCollection"));
94  RecoCollectionT_ = consumes<reco::GsfElectronCollection>(
95  ps.getParameter<edm::InputTag>("RecoCollection"));
96 }
97 
99 {
100  hist_min_Et_ = ps.getParameter<double>("hist_min_Et");
101  hist_max_Et_ = ps.getParameter<double>("hist_max_Et");
102  hist_bins_Et_ = ps.getParameter<int> ("hist_bins_Et");
103 
104  hist_min_E_ = ps.getParameter<double>("hist_min_E");
105  hist_max_E_ = ps.getParameter<double>("hist_max_E");
106  hist_bins_E_ = ps.getParameter<int> ("hist_bins_E");
107 
108  hist_min_Eta_ = ps.getParameter<double>("hist_min_Eta");
109  hist_max_Eta_ = ps.getParameter<double>("hist_max_Eta");
110  hist_bins_Eta_ = ps.getParameter<int> ("hist_bins_Eta");
111 
112  hist_min_Phi_ = ps.getParameter<double>("hist_min_Phi");
113  hist_max_Phi_ = ps.getParameter<double>("hist_max_Phi");
114  hist_bins_Phi_ = ps.getParameter<int> ("hist_bins_Phi");
115 
116  hist_min_EtOverTruth_ = ps.getParameter<double>("hist_min_EtOverTruth");
117  hist_max_EtOverTruth_ = ps.getParameter<double>("hist_max_EtOverTruth");
118  hist_bins_EtOverTruth_ = ps.getParameter<int> ("hist_bins_EtOverTruth");
119 
120  hist_min_EOverTruth_ = ps.getParameter<double>("hist_min_EOverTruth");
121  hist_max_EOverTruth_ = ps.getParameter<double>("hist_max_EOverTruth");
122  hist_bins_EOverTruth_ = ps.getParameter<int> ("hist_bins_EOverTruth");
123 
124  hist_min_EtaOverTruth_ = ps.getParameter<double>("hist_min_EtaOverTruth");
125  hist_max_EtaOverTruth_ = ps.getParameter<double>("hist_max_EtaOverTruth");
126  hist_bins_EtaOverTruth_ = ps.getParameter<int> ("hist_bins_EtaOverTruth");
127 
128  hist_min_PhiOverTruth_ = ps.getParameter<double>("hist_min_PhiOverTruth");
129  hist_max_PhiOverTruth_ = ps.getParameter<double>("hist_max_PhiOverTruth");
130  hist_bins_PhiOverTruth_ = ps.getParameter<int> ("hist_bins_PhiOverTruth");
131 
132  hist_min_deltaEta_ = ps.getParameter<double>("hist_min_deltaEta");
133  hist_max_deltaEta_ = ps.getParameter<double>("hist_max_deltaEta");
134  hist_bins_deltaEta_ = ps.getParameter<int> ("hist_bins_deltaEta");
135 
136  hist_min_deltaPhi_ = ps.getParameter<double>("hist_min_deltaPhi");
137  hist_max_deltaPhi_ = ps.getParameter<double>("hist_max_deltaPhi");
138  hist_bins_deltaPhi_ = ps.getParameter<int> ("hist_bins_deltaPhi");
139 
140  hist_min_recoMass_ = ps.getParameter<double>("hist_min_recoMass");
141  hist_max_recoMass_ = ps.getParameter<double>("hist_max_recoMass");
142  hist_bins_recoMass_ = ps.getParameter<int> ("hist_bins_recoMass");
143 }
144 
146 {
147  delete rootFile_;
148 }
149 
151 {
152  TH1::SetDefaultSumw2(true);
153 
156 }
157 
159 {
160  hist_Et_
161  = new TH1D("hist_Et_",("Et Distribution of "+particleString).c_str(),
164  = new TH1D("hist_EtOverTruth_",("Reco Et over True Et of "+particleString).c_str(),
167  = new TH1D("hist_EtEfficiency_",("# of True "+particleString+" Reconstructed over # of True "+particleString+" VS Et of "+particleString).c_str(),
170  = new TH1D("hist_EtNumRecoOverNumTrue_",("# of Reco "+particleString+" over # of True "+particleString+" VS Et of "+particleString).c_str(),
172 
173  hist_E_
174  = new TH1D("hist_E_",("E Distribution of "+particleString).c_str(),
177  = new TH1D("hist_EOverTruth_",("Reco E over True E of "+particleString).c_str(),
180  = new TH1D("hist_EEfficiency_",("# of True "+particleString+" Reconstructed over # of True "+particleString+" VS E of "+particleString).c_str(),
183  = new TH1D("hist_ENumRecoOverNumTrue_",("# of Reco "+particleString+" over # of True "+particleString+" VS E of "+particleString).c_str(),
185 
186  hist_Eta_
187  = new TH1D("hist_Eta_",("Eta Distribution of "+particleString).c_str(),
190  = new TH1D("hist_EtaOverTruth_",("Reco Eta over True Eta of "+particleString).c_str(),
193  = new TH1D("hist_EtaEfficiency_",("# of True "+particleString+" Reconstructed over # of True "+particleString+" VS Eta of "+particleString).c_str(),
196  = new TH1D("hist_EtaNumRecoOverNumTrue_",("# of Reco "+particleString+" over # of True "+particleString+" VS Eta of "+particleString).c_str(),
198 
199  hist_Phi_
200  = new TH1D("hist_Phi_",("Phi Distribution of "+particleString).c_str(),
203  = new TH1D("hist_PhiOverTruth_",("Reco Phi over True Phi of "+particleString).c_str(),
206  = new TH1D("hist_PhiEfficiency_",("# of True "+particleString+" Reconstructed over # of True "+particleString+" VS Phi of "+particleString).c_str(),
209  = new TH1D("hist_PhiNumRecoOverNumTrue_",("# of Reco "+particleString+" over # of True "+particleString+" VS Phi of "+particleString).c_str(),
211 
212  std::string recoParticleName;
213 
214  if( particleID == 22 ) recoParticleName = "Higgs";
215  else if( particleID == 11 ) recoParticleName = "Z";
216 
218  = new TH1D("hist_All_recoMass_",(recoParticleName+" Mass from "+particleString+" in All Regions").c_str(),
221  = new TH1D("hist_BarrelOnly_recoMass_",(recoParticleName+" Mass from "+particleString+" in Barrel").c_str(),
224  = new TH1D("hist_EndcapOnly_recoMass_",(recoParticleName+" Mass from "+particleString+" in EndCap").c_str(),
227  = new TH1D("hist_Mixed_recoMass_",(recoParticleName+" Mass from "+particleString+" in Split Detectors").c_str(),
229 
231  = new TH1D("hist_recoMass_withBackgroud_NoEtCut_",(recoParticleName+" Mass from "+particleString+" with Background, No Et Cut").c_str(),
234  = new TH1D("hist_recoMass_withBackgroud_5EtCut_",(recoParticleName+" Mass from "+particleString+" with Background, 5 Et Cut").c_str(),
237  = new TH1D("hist_recoMass_withBackgroud_10EtCut_",(recoParticleName+" Mass from "+particleString+" with Background, 10 Et Cut").c_str(),
240  = new TH1D("hist_recoMass_withBackgroud_20EtCut_",(recoParticleName+" Mass from "+particleString+" with Background, 20 Et Cut").c_str(),
242 }
243 
245 {
247  = new TH2D("_TEMP_scatterPlot_EtOverTruthVsEt_","_TEMP_scatterPlot_EtOverTruthVsEt_",
250  = new TH2D("_TEMP_scatterPlot_EtOverTruthVsE_","_TEMP_scatterPlot_EtOverTruthVsE_",
253  = new TH2D("_TEMP_scatterPlot_EtOverTruthVsEta_","_TEMP_scatterPlot_EtOverTruthVsEta_",
256  = new TH2D("_TEMP_scatterPlot_EtOverTruthVsPhi_","_TEMP_scatterPlot_EtOverTruthVsPhi_",
258 
260  = new TH2D("_TEMP_scatterPlot_EOverTruthVsEt_","_TEMP_scatterPlot_EOverTruthVsEt_",
263  = new TH2D("_TEMP_scatterPlot_EOverTruthVsE_","_TEMP_scatterPlot_EOverTruthVsE_",
266  = new TH2D("_TEMP_scatterPlot_EOverTruthVsEta_","_TEMP_scatterPlot_EOverTruthVsEta_",
269  = new TH2D("_TEMP_scatterPlot_EOverTruthVsPhi_","_TEMP_scatterPlot_EOverTruthVsPhi_",
271 
273  = new TH2D("_TEMP_scatterPlot_deltaEtaVsEt_","_TEMP_scatterPlot_deltaEtaVsEt_",
276  = new TH2D("_TEMP_scatterPlot_deltaEtaVsE_","_TEMP_scatterPlot_deltaEtaVsE_",
279  = new TH2D("_TEMP_scatterPlot_deltaEtaVsEta_","_TEMP_scatterPlot_deltaEtaVsEta_",
282  = new TH2D("_TEMP_scatterPlot_deltaEtaVsPhi_","_TEMP_scatterPlot_deltaEtaVsPhi_",
284 
286  = new TH2D("_TEMP_scatterPlot_deltaPhiVsEt_","_TEMP_scatterPlot_deltaPhiVsEt_",
289  = new TH2D("_TEMP_scatterPlot_deltaPhiVsE_","_TEMP_scatterPlot_deltaPhiVsE_",
292  = new TH2D("_TEMP_scatterPlot_deltaPhiVsEta_","_TEMP_scatterPlot_deltaPhiVsEta_",
295  = new TH2D("_TEMP_scatterPlot_deltaPhiVsPhi_","_TEMP_scatterPlot_deltaPhiVsPhi_",
297 }
298 
299 void EgammaObjects::analyze( const edm::Event& evt, const edm::EventSetup& es )
300 {
301  if( particleID == 22 ) analyzePhotons(evt, es);
302  else if( particleID == 11 ) analyzeElectrons(evt, es);
303 }
304 
306 {
308  evt.getByToken(RecoCollectionT_, pPhotons);
309  if (!pPhotons.isValid()) {
310  Labels l;
312  edm::LogError("EgammaObjects")
313  << "Error! can't get collection with label "
314  << l.module;
315  }
316 
317  const reco::PhotonCollection* photons = pPhotons.product();
318  std::vector<reco::Photon> photonsMCMatched;
319 
320  for(reco::PhotonCollection::const_iterator aClus = photons->begin(); aClus != photons->end(); aClus++)
321  {
322  if(aClus->et() >= EtCut)
323  {
324  hist_Et_->Fill(aClus->et());
325  hist_E_->Fill(aClus->energy());
326  hist_Eta_->Fill(aClus->eta());
327  hist_Phi_->Fill(aClus->phi());
328  }
329  }
330 
331  for(int firstPhoton = 0, numPhotons = photons->size(); firstPhoton < numPhotons - 1; firstPhoton++)
332  for(int secondPhoton = firstPhoton + 1; secondPhoton < numPhotons; secondPhoton++)
333  {
334  reco::Photon pOne = (*photons)[firstPhoton];
335  reco::Photon pTwo = (*photons)[secondPhoton];
336 
337  double recoMass = findRecoMass(pOne, pTwo);
338 
339  hist_recoMass_withBackgroud_NoEtCut_->Fill(recoMass);
340 
341  if(pOne.et() >= 5 && pTwo.et() >= 5)
342  hist_recoMass_withBackgroud_5EtCut_->Fill(recoMass);
343 
344  if(pOne.et() >= 10 && pTwo.et() >= 10)
345  hist_recoMass_withBackgroud_10EtCut_->Fill(recoMass);
346 
347  if(pOne.et() >= 20 && pTwo.et() >= 20)
348  hist_recoMass_withBackgroud_20EtCut_->Fill(recoMass);
349  }
350 
352  evt.getByToken(MCTruthCollectionT_, pMCTruth);
353  if (!pMCTruth.isValid()) {
354  Labels l;
356  edm::LogError("EgammaObjects")
357  << "Error! can't get collection with label "
358  << l.module;
359  }
360 
361  const HepMC::GenEvent* genEvent = pMCTruth->GetEvent();
362 
363  for(HepMC::GenEvent::particle_const_iterator currentParticle = genEvent->particles_begin();
364  currentParticle != genEvent->particles_end(); currentParticle++ )
365  {
366  if(abs((*currentParticle)->pdg_id())==22 && (*currentParticle)->status()==1
367  && (*currentParticle)->momentum().e()/cosh(ecalEta((*currentParticle)->momentum().eta(), (*currentParticle)->production_vertex()->position().z()/10.,
368  (*currentParticle)->production_vertex()->position().perp()/10.)) >= EtCut)
369  {
370  HepMC::FourVector vtx = (*currentParticle)->production_vertex()->position();
371  double phiTrue = (*currentParticle)->momentum().phi();
372  double etaTrue = ecalEta((*currentParticle)->momentum().eta(), vtx.z()/10., vtx.perp()/10.);
373  double eTrue = (*currentParticle)->momentum().e();
374  double etTrue = (*currentParticle)->momentum().e()/cosh(etaTrue);
375 
376  double etaCurrent, etaFound = -999;
377  double phiCurrent, phiFound = -999;
378  double etCurrent, etFound = -999;
379  double eCurrent, eFound = -999;
380 
381  reco::Photon bestMatchPhoton;
382 
383  double closestParticleDistance = 999;
384 
385  for(reco::PhotonCollection::const_iterator aClus = photons->begin(); aClus != photons->end(); aClus++)
386  {
387  if(aClus->et() > EtCut)
388  {
389  etaCurrent = aClus->eta();
390  phiCurrent = aClus->phi();
391  etCurrent = aClus->et();
392  eCurrent = aClus->energy();
393 
394  double deltaPhi = phiCurrent-phiTrue;
395  if(deltaPhi > Geom::pi()) deltaPhi -= 2.*Geom::pi();
396  if(deltaPhi < -Geom::pi()) deltaPhi += 2.*Geom::pi();
397  double deltaR = std::sqrt(std::pow(etaCurrent-etaTrue,2)+std::pow(deltaPhi,2));
398 
399  if(deltaR < closestParticleDistance)
400  {
401  etFound = etCurrent;
402  eFound = eCurrent;
403  etaFound = etaCurrent;
404  phiFound = phiCurrent;
405  closestParticleDistance = deltaR;
406  bestMatchPhoton = *aClus;
407  }
408  }
409  }
410 
411  if(closestParticleDistance < 0.05 && etFound/etTrue > .5 && etFound/etTrue < 1.5)
412  {
413  hist_EtOverTruth_->Fill(etFound/etTrue);
414  hist_EOverTruth_->Fill(eFound/eTrue);
415  hist_EtaOverTruth_->Fill(etaFound/etaTrue);
416  hist_PhiOverTruth_->Fill(phiFound/phiTrue);
417 
418  hist_EtEfficiency_->Fill(etTrue);
419  hist_EEfficiency_->Fill(eTrue);
420  hist_EtaEfficiency_->Fill(etaTrue);
421  hist_PhiEfficiency_->Fill(phiTrue);
422 
423  double deltaPhi = phiFound-phiTrue;
424  if(deltaPhi > Geom::pi()) deltaPhi -= 2.*Geom::pi();
425  if(deltaPhi < -Geom::pi()) deltaPhi += 2.*Geom::pi();
426 
427  _TEMP_scatterPlot_EtOverTruthVsEt_->Fill(etFound,etFound/etTrue);
428  _TEMP_scatterPlot_EtOverTruthVsE_->Fill(eFound,etFound/etTrue);
429  _TEMP_scatterPlot_EtOverTruthVsEta_->Fill(etaFound,etFound/etTrue);
430  _TEMP_scatterPlot_EtOverTruthVsPhi_->Fill(phiFound,etFound/etTrue);
431 
432  _TEMP_scatterPlot_EOverTruthVsEt_->Fill(etFound,eFound/eTrue);
433  _TEMP_scatterPlot_EOverTruthVsE_->Fill(eFound,eFound/eTrue);
434  _TEMP_scatterPlot_EOverTruthVsEta_->Fill(etaFound,eFound/eTrue);
435  _TEMP_scatterPlot_EOverTruthVsPhi_->Fill(phiFound,eFound/eTrue);
436 
437  _TEMP_scatterPlot_deltaEtaVsEt_->Fill(etFound,etaFound-etaTrue);
438  _TEMP_scatterPlot_deltaEtaVsE_->Fill(eFound,etaFound-etaTrue);
439  _TEMP_scatterPlot_deltaEtaVsEta_->Fill(etaFound,etaFound-etaTrue);
440  _TEMP_scatterPlot_deltaEtaVsPhi_->Fill(phiFound,etaFound-etaTrue);
441 
442  _TEMP_scatterPlot_deltaPhiVsEt_->Fill(etFound,deltaPhi);
443  _TEMP_scatterPlot_deltaPhiVsE_->Fill(eFound,deltaPhi);
444  _TEMP_scatterPlot_deltaPhiVsEta_->Fill(etaFound,deltaPhi);
445  _TEMP_scatterPlot_deltaPhiVsPhi_->Fill(phiFound,deltaPhi);
446 
447  photonsMCMatched.push_back(bestMatchPhoton);
448  }
449 
450  hist_EtNumRecoOverNumTrue_->Fill(etTrue);
451  hist_ENumRecoOverNumTrue_->Fill(eTrue);
452  hist_EtaNumRecoOverNumTrue_->Fill(etaTrue);
453  hist_PhiNumRecoOverNumTrue_->Fill(phiTrue);
454  }
455  }
456 
457  if(photonsMCMatched.size() == 2)
458  {
459  reco::Photon pOne = photonsMCMatched[0];
460  reco::Photon pTwo = photonsMCMatched[1];
461 
462  double recoMass = findRecoMass(pOne, pTwo);
463 
464  hist_All_recoMass_->Fill(recoMass);
465 
466  if(pOne.superCluster()->seed()->algo() == 1 && pTwo.superCluster()->seed()->algo() == 1)
467  hist_BarrelOnly_recoMass_->Fill(recoMass);
468  else if(pOne.superCluster()->seed()->algo() == 0 && pTwo.superCluster()->seed()->algo() == 0)
469  hist_EndcapOnly_recoMass_->Fill(recoMass);
470  else
471  hist_Mixed_recoMass_->Fill(recoMass);
472  }
473 }
474 
476 {
478  evt.getByToken(RecoCollectionT_, pElectrons);
479  if (!pElectrons.isValid()) {
480  Labels l;
482  edm::LogError("DOEPlotsProducerElectrons")
483  << "Error! can't get collection with label "
484  << l.module;
485  }
486 
487  const reco::GsfElectronCollection* electrons = pElectrons.product();
488  std::vector<reco::GsfElectron> electronsMCMatched;
489 
490  for(reco::GsfElectronCollection::const_iterator aClus = electrons->begin(); aClus != electrons->end(); aClus++)
491  {
492  if(aClus->et() >= EtCut)
493  {
494  hist_Et_->Fill(aClus->et());
495  hist_E_->Fill(aClus->energy());
496  hist_Eta_->Fill(aClus->eta());
497  hist_Phi_->Fill(aClus->phi());
498  }
499  }
500 
501  for(int firstElectron = 0, numElectrons = electrons->size(); firstElectron < numElectrons - 1; firstElectron++)
502  for(int secondElectron = firstElectron + 1; secondElectron < numElectrons; secondElectron++)
503  {
504  reco::GsfElectron eOne = (*electrons)[firstElectron];
505  reco::GsfElectron eTwo = (*electrons)[secondElectron];
506 
507  double recoMass = findRecoMass(eOne, eTwo);
508 
509  hist_recoMass_withBackgroud_NoEtCut_->Fill(recoMass);
510 
511  if(eOne.et() >= 5 && eTwo.et() >= 5)
512  hist_recoMass_withBackgroud_5EtCut_->Fill(recoMass);
513 
514  if(eOne.et() >= 10 && eTwo.et() >= 10)
515  hist_recoMass_withBackgroud_10EtCut_->Fill(recoMass);
516 
517  if(eOne.et() >= 20 && eTwo.et() >= 20)
518  hist_recoMass_withBackgroud_20EtCut_->Fill(recoMass);
519  }
520 
522  evt.getByToken(MCTruthCollectionT_, pMCTruth);
523  if (!pMCTruth.isValid()) {
524  Labels l;
526  edm::LogError("DOEPlotsProducerElectrons")
527  << "Error! can't get collection with label "
528  << l.module;
529  }
530 
531  const HepMC::GenEvent* genEvent = pMCTruth->GetEvent();
532  for(HepMC::GenEvent::particle_const_iterator currentParticle = genEvent->particles_begin();
533  currentParticle != genEvent->particles_end(); currentParticle++ )
534  {
535  if(abs((*currentParticle)->pdg_id())==11 && (*currentParticle)->status()==1
536  && (*currentParticle)->momentum().e()/cosh((*currentParticle)->momentum().eta()) >= EtCut)
537  {
538  double phiTrue = (*currentParticle)->momentum().phi();
539  double etaTrue = (*currentParticle)->momentum().eta();
540  double eTrue = (*currentParticle)->momentum().e();
541  double etTrue = (*currentParticle)->momentum().e()/cosh(etaTrue);
542 
543  double etaCurrent, etaFound = -999;
544  double phiCurrent, phiFound = -999;
545  double etCurrent, etFound = -999;
546  double eCurrent, eFound = -999;
547 
548  reco::GsfElectron bestMatchElectron;
549 
550  double closestParticleDistance = 999;
551 
552  for(reco::GsfElectronCollection::const_iterator aClus = electrons->begin(); aClus != electrons->end(); aClus++)
553  {
554  if(aClus->et() > EtCut)
555  {
556  etaCurrent = aClus->eta();
557  phiCurrent = aClus->phi();
558  etCurrent = aClus->et();
559  eCurrent = aClus->energy();
560 
561  double deltaPhi = phiCurrent-phiTrue;
562  if(deltaPhi > Geom::pi()) deltaPhi -= 2.*Geom::pi();
563  if(deltaPhi < -Geom::pi()) deltaPhi += 2.*Geom::pi();
564  double deltaR = std::sqrt(std::pow(etaCurrent-etaTrue,2)+std::pow(deltaPhi,2));
565 
566  if(deltaR < closestParticleDistance)
567  {
568  etFound = etCurrent;
569  eFound = eCurrent;
570  etaFound = etaCurrent;
571  phiFound = phiCurrent;
572  closestParticleDistance = deltaR;
573  bestMatchElectron = *aClus;
574  }
575  }
576  }
577 
578  if(closestParticleDistance < 0.05 && etFound/etTrue > .5 && etFound/etTrue < 1.5)
579  {
580  hist_EtOverTruth_->Fill(etFound/etTrue);
581  hist_EOverTruth_->Fill(eFound/eTrue);
582  hist_EtaOverTruth_->Fill(etaFound/etaTrue);
583  hist_PhiOverTruth_->Fill(phiFound/phiTrue);
584 
585  hist_EtEfficiency_->Fill(etTrue);
586  hist_EEfficiency_->Fill(eTrue);
587  hist_EtaEfficiency_->Fill(etaTrue);
588  hist_PhiEfficiency_->Fill(phiTrue);
589 
590  double deltaPhi = phiFound-phiTrue;
591  if(deltaPhi > Geom::pi()) deltaPhi -= 2.*Geom::pi();
592  if(deltaPhi < -Geom::pi()) deltaPhi += 2.*Geom::pi();
593 
594  _TEMP_scatterPlot_EtOverTruthVsEt_->Fill(etFound,etFound/etTrue);
595  _TEMP_scatterPlot_EtOverTruthVsE_->Fill(eFound,etFound/etTrue);
596  _TEMP_scatterPlot_EtOverTruthVsEta_->Fill(etaFound,etFound/etTrue);
597  _TEMP_scatterPlot_EtOverTruthVsPhi_->Fill(phiFound,etFound/etTrue);
598 
599  _TEMP_scatterPlot_EOverTruthVsEt_->Fill(etFound,eFound/eTrue);
600  _TEMP_scatterPlot_EOverTruthVsE_->Fill(eFound,eFound/eTrue);
601  _TEMP_scatterPlot_EOverTruthVsEta_->Fill(etaFound,eFound/eTrue);
602  _TEMP_scatterPlot_EOverTruthVsPhi_->Fill(phiFound,eFound/eTrue);
603 
604  _TEMP_scatterPlot_deltaEtaVsEt_->Fill(etFound,etaFound-etaTrue);
605  _TEMP_scatterPlot_deltaEtaVsE_->Fill(eFound,etaFound-etaTrue);
606  _TEMP_scatterPlot_deltaEtaVsEta_->Fill(etaFound,etaFound-etaTrue);
607  _TEMP_scatterPlot_deltaEtaVsPhi_->Fill(phiFound,etaFound-etaTrue);
608 
609  _TEMP_scatterPlot_deltaPhiVsEt_->Fill(etFound,deltaPhi);
610  _TEMP_scatterPlot_deltaPhiVsE_->Fill(eFound,deltaPhi);
611  _TEMP_scatterPlot_deltaPhiVsEta_->Fill(etaFound,deltaPhi);
612  _TEMP_scatterPlot_deltaPhiVsPhi_->Fill(phiFound,deltaPhi);
613 
614  electronsMCMatched.push_back(bestMatchElectron);
615  }
616 
617  hist_EtNumRecoOverNumTrue_->Fill(etTrue);
618  hist_ENumRecoOverNumTrue_->Fill(eTrue);
619  hist_EtaNumRecoOverNumTrue_->Fill(etaTrue);
620  hist_PhiNumRecoOverNumTrue_->Fill(phiTrue);
621  }
622  }
623 
624  if(electronsMCMatched.size() == 2)
625  {
626  reco::GsfElectron eOne = electronsMCMatched[0];
627  reco::GsfElectron eTwo = electronsMCMatched[1];
628 
629  double recoMass = findRecoMass(eOne, eTwo);
630 
631  hist_All_recoMass_->Fill(recoMass);
632 
633  if(eOne.superCluster()->seed()->algo() == 1 && eTwo.superCluster()->seed()->algo() == 1)
634  hist_BarrelOnly_recoMass_->Fill(recoMass);
635  else if(eOne.superCluster()->seed()->algo() == 0 && eTwo.superCluster()->seed()->algo() == 0)
636  hist_EndcapOnly_recoMass_->Fill(recoMass);
637  else
638  hist_Mixed_recoMass_->Fill(recoMass);
639  }
640 }
641 
643 {
644  double cosTheta
645  = (cos(pOne.superCluster()->phi() - pTwo.superCluster()->phi()) + sinh(pOne.superCluster()->eta()) * sinh(pTwo.superCluster()->eta())) /
646  (cosh(pOne.superCluster()->eta()) * cosh(pTwo.superCluster()->eta()));
647 
648  double recoMass = sqrt(2 * (pOne.superCluster())->energy() * (pTwo.superCluster())->energy() * (1 - cosTheta));
649 
650  return recoMass;
651 }
652 
654 {
655  double cosTheta
656  = (cos(eOne.caloPosition().phi() - eTwo.caloPosition().phi()) + sinh(eOne.caloPosition().eta()) * sinh(eTwo.caloPosition().eta())) /
657  (cosh(eOne.caloPosition().eta()) * cosh(eTwo.caloPosition().eta()));
658 
659  double recoMass = sqrt(2 * eOne.caloEnergy() * eTwo.caloEnergy() * (1 - cosTheta));
660 
661  return recoMass;
662 }
663 
664 float EgammaObjects::ecalEta(float EtaParticle , float Zvertex, float plane_Radius)
665 {
666  const float R_ECAL = 136.5;
667  const float Z_Endcap = 328.0;
668  const float etaBarrelEndcap = 1.479;
669 
670  if(EtaParticle != 0.)
671  {
672  float Theta = 0.0 ;
673  float ZEcal = (R_ECAL-plane_Radius)*sinh(EtaParticle)+Zvertex;
674 
675  if(ZEcal != 0.0) Theta = atan(R_ECAL/ZEcal);
676  if(Theta<0.0) Theta = Theta+Geom::pi() ;
677 
678  float ETA = - log(tan(0.5*Theta));
679 
680  if( std::abs(ETA) > etaBarrelEndcap )
681  {
682  float Zend = Z_Endcap ;
683  if(EtaParticle<0.0 ) Zend = -Zend ;
684  float Zlen = Zend - Zvertex ;
685  float RR = Zlen/sinh(EtaParticle);
686  Theta = atan((RR+plane_Radius)/Zend);
687  if(Theta<0.0) Theta = Theta+Geom::pi() ;
688  ETA = - log(tan(0.5*Theta));
689  }
690 
691  return ETA;
692  }
693  else
694  {
695  edm::LogWarning("") << "[EgammaObjects::ecalEta] Warning: Eta equals to zero, not correcting" ;
696  return EtaParticle;
697  }
698 }
699 
700 
702 {
703  rootFile_->cd();
704  rootFile_->mkdir(particleString.c_str());
705 
708  fitHistos();
709 
710  applyLabels();
711  setDrawOptions();
712  saveHistos();
713  rootFile_->Close();
714 }
715 
717 {
718  _TEMP_scatterPlot_EtOverTruthVsEt_->FitSlicesY(nullptr,1,hist_bins_Et_,10,"QRG3");
719  _TEMP_scatterPlot_EtOverTruthVsE_->FitSlicesY(nullptr,1,hist_bins_E_,10,"QRG3");
720  _TEMP_scatterPlot_EtOverTruthVsEta_->FitSlicesY(nullptr,1,hist_bins_Eta_,10,"QRG2");
721  _TEMP_scatterPlot_EtOverTruthVsPhi_->FitSlicesY(nullptr,1,hist_bins_Phi_,10,"QRG2");
722 
723  _TEMP_scatterPlot_EOverTruthVsEt_->FitSlicesY(nullptr,1,hist_bins_Et_,10,"QRG3");
724  _TEMP_scatterPlot_EOverTruthVsE_->FitSlicesY(nullptr,1,hist_bins_E_,10,"QRG3");
725  _TEMP_scatterPlot_EOverTruthVsEta_->FitSlicesY(nullptr,1,hist_bins_Eta_,10,"QRG2");
726  _TEMP_scatterPlot_EOverTruthVsPhi_->FitSlicesY(nullptr,1,hist_bins_Phi_,10,"QRG2");
727 
728  _TEMP_scatterPlot_deltaEtaVsEt_->FitSlicesY(nullptr,1,hist_bins_Et_,10,"QRG3");
729  _TEMP_scatterPlot_deltaEtaVsE_->FitSlicesY(nullptr,1,hist_bins_E_,10,"QRG3");
730  _TEMP_scatterPlot_deltaEtaVsEta_->FitSlicesY(nullptr,1,hist_bins_Eta_,10,"QRG2");
731  _TEMP_scatterPlot_deltaEtaVsPhi_->FitSlicesY(nullptr,1,hist_bins_Phi_,10,"QRG2");
732 
733  _TEMP_scatterPlot_deltaPhiVsEt_->FitSlicesY(nullptr,1,hist_bins_Et_,10,"QRG3");
734  _TEMP_scatterPlot_deltaPhiVsE_->FitSlicesY(nullptr,1,hist_bins_E_,10,"QRG3");
735  _TEMP_scatterPlot_deltaPhiVsEta_->FitSlicesY(nullptr,1,hist_bins_Eta_,10,"QRG2");
736  _TEMP_scatterPlot_deltaPhiVsPhi_->FitSlicesY(nullptr,1,hist_bins_Phi_,10,"QRG2");
737 
738  hist_EtOverTruthVsEt_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_EtOverTruthVsEt__1");
739  hist_EtOverTruthVsE_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_EtOverTruthVsE__1");
740  hist_EtOverTruthVsEta_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_EtOverTruthVsEta__1");
741  hist_EtOverTruthVsPhi_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_EtOverTruthVsPhi__1");
742 
743  hist_EOverTruthVsEt_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_EOverTruthVsEt__1");
744  hist_EOverTruthVsE_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_EOverTruthVsE__1");
745  hist_EOverTruthVsEta_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_EOverTruthVsEta__1");
746  hist_EOverTruthVsPhi_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_EOverTruthVsPhi__1");
747 
748  hist_deltaEtaVsEt_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_deltaEtaVsEt__1");
749  hist_deltaEtaVsE_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_deltaEtaVsE__1");
750  hist_deltaEtaVsEta_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_deltaEtaVsEta__1");
751  hist_deltaEtaVsPhi_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_deltaEtaVsPhi__1");
752 
753  hist_deltaPhiVsEt_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_deltaPhiVsEt__1");
754  hist_deltaPhiVsE_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_deltaPhiVsE__1");
755  hist_deltaPhiVsEta_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_deltaPhiVsEta__1");
756  hist_deltaPhiVsPhi_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_deltaPhiVsPhi__1");
757 
758  hist_EtOverTruthVsEt_->SetNameTitle("hist_EtOverTruthVsEt_",("Reco Et over True Et VS Et of "+particleString).c_str());
759  hist_EtOverTruthVsE_->SetNameTitle("hist_EtOverTruthVsE_",("Reco Et over True Et VS E of "+particleString).c_str());
760  hist_EtOverTruthVsEta_->SetNameTitle("hist_EtOverTruthVsEta_",("Reco Et over True Et VS Eta of "+particleString).c_str());
761  hist_EtOverTruthVsPhi_->SetNameTitle("hist_EtOverTruthVsPhi_",("Reco Et over True Et VS Phi of "+particleString).c_str());
762 
763  hist_EOverTruthVsEt_->SetNameTitle("hist_EOverTruthVsEt_",("Reco E over True E VS Et of "+particleString).c_str());
764  hist_EOverTruthVsE_->SetNameTitle("hist_EOverTruthVsE_",("Reco E over True E VS E of "+particleString).c_str());
765  hist_EOverTruthVsEta_->SetNameTitle("hist_EOverTruthVsEta_",("Reco E over True E VS Eta of "+particleString).c_str());
766  hist_EOverTruthVsPhi_->SetNameTitle("hist_EOverTruthVsPhi_",("Reco E over True E VS Phi of "+particleString).c_str());
767 
768  hist_deltaEtaVsEt_->SetNameTitle("hist_deltaEtaVsEt_",("delta Eta VS Et of "+particleString).c_str());
769  hist_deltaEtaVsE_->SetNameTitle("hist_deltaEtaVsE_",("delta Eta VS E of "+particleString).c_str());
770  hist_deltaEtaVsEta_->SetNameTitle("hist_deltaEtaVsEta_",("delta Eta VS Eta of "+particleString).c_str());
771  hist_deltaEtaVsPhi_->SetNameTitle("hist_deltaEtaVsPhi_",("delta Eta VS Phi of "+particleString).c_str());
772 
773  hist_deltaPhiVsEt_->SetNameTitle("hist_deltaPhiVsEt_",("delta Phi VS Et of "+particleString).c_str());
774  hist_deltaPhiVsE_->SetNameTitle("hist_deltaPhiVsE_",("delta Phi VS E of "+particleString).c_str());
775  hist_deltaPhiVsEta_->SetNameTitle("hist_deltaPhiVsEta_",("delta Phi VS Eta of "+particleString).c_str());
776  hist_deltaPhiVsPhi_->SetNameTitle("hist_deltaPhiVsPhi_",("delta Phi VS Phi of "+particleString).c_str());
777 
778  hist_resolutionEtVsEt_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_EtOverTruthVsEt__2");
779  hist_resolutionEtVsE_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_EtOverTruthVsE__2");
780  hist_resolutionEtVsEta_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_EtOverTruthVsEta__2");
781  hist_resolutionEtVsPhi_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_EtOverTruthVsPhi__2");
782 
783  hist_resolutionEVsEt_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_EOverTruthVsEt__2");
784  hist_resolutionEVsE_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_EOverTruthVsE__2");
785  hist_resolutionEVsEta_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_EOverTruthVsEta__2");
786  hist_resolutionEVsPhi_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_EOverTruthVsPhi__2");
787 
788  hist_resolutionEtaVsEt_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_deltaEtaVsEt__2");
789  hist_resolutionEtaVsE_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_deltaEtaVsE__2");
790  hist_resolutionEtaVsEta_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_deltaEtaVsEta__2");
791  hist_resolutionEtaVsPhi_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_deltaEtaVsPhi__2");
792 
793  hist_resolutionPhiVsEt_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_deltaPhiVsEt__2");
794  hist_resolutionPhiVsE_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_deltaPhiVsE__2");
795  hist_resolutionPhiVsEta_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_deltaPhiVsEta__2");
796  hist_resolutionPhiVsPhi_ = (TH1D*)gDirectory->Get("_TEMP_scatterPlot_deltaPhiVsPhi__2");
797 
798  hist_resolutionEtVsEt_->SetNameTitle("hist_resolutionEtVsEt_",("#sigma of Reco Et over True Et VS Et of "+particleString).c_str());
799  hist_resolutionEtVsE_->SetNameTitle("hist_resolutionEtVsE_",("#sigma of Reco Et over True Et VS E of "+particleString).c_str());
800  hist_resolutionEtVsEta_->SetNameTitle("hist_resolutionEtVsEta_",("#sigma of Reco Et over True Et VS Eta of "+particleString).c_str());
801  hist_resolutionEtVsPhi_->SetNameTitle("hist_resolutionEtVsPhi_",("#sigma of Reco Et over True Et VS Phi of "+particleString).c_str());
802 
803  hist_resolutionEVsEt_->SetNameTitle("hist_resolutionEVsEt_",("#sigma of Reco E over True E VS Et of "+particleString).c_str());
804  hist_resolutionEVsE_->SetNameTitle("hist_resolutionEVsE_",("#sigma of Reco E over True E VS E of "+particleString).c_str());
805  hist_resolutionEVsEta_->SetNameTitle("hist_resolutionEVsEta_",("#sigma of Reco E over True E VS Eta of "+particleString).c_str());
806  hist_resolutionEVsPhi_->SetNameTitle("hist_resolutionEVsPhi_",("#sigma of Reco E over True E VS Phi of "+particleString).c_str());
807 
808  hist_resolutionEtaVsEt_->SetNameTitle("hist_resolutionEtaVsEt_",("#sigma of delta Eta VS Et of "+particleString).c_str());
809  hist_resolutionEtaVsE_->SetNameTitle("hist_resolutionEtaVsE_",("#sigma of delta Eta VS E of "+particleString).c_str());
810  hist_resolutionEtaVsEta_->SetNameTitle("hist_resolutionEtaVsEta_",("#sigma of delta Eta VS Eta of "+particleString).c_str());
811  hist_resolutionEtaVsPhi_->SetNameTitle("hist_resolutionEtaVsPhi_",("#sigma of delta Eta VS Phi of "+particleString).c_str());
812 
813  hist_resolutionPhiVsEt_->SetNameTitle("hist_resolutionPhiVsEt_",("#sigma of delta Phi VS Et of "+particleString).c_str());
814  hist_resolutionPhiVsE_->SetNameTitle("hist_resolutionPhiVsE_",("#sigma of delta Phi VS E of "+particleString).c_str());
815  hist_resolutionPhiVsEta_->SetNameTitle("hist_resolutionPhiVsEta_",("#sigma of delta Phi VS Eta of "+particleString).c_str());
816  hist_resolutionPhiVsPhi_->SetNameTitle("hist_resolutionPhiVsPhi_",("#sigma of delta Phi VS Phi of "+particleString).c_str());
817 }
818 
820 {
825 
830 }
831 
833 {
834  //Use our own copy for thread safety
835  TF1 gaus("mygaus","gaus");
836  hist_EtOverTruth_->Fit(&gaus,"QEM");
837 // hist_EtNumRecoOverNumTrue_->Fit("pol1","QEM");
838 
839  hist_EOverTruth_->Fit(&gaus,"QEM");
840 // hist_ENumRecoOverNumTrue_->Fit("pol1","QEM");
841 
842  hist_EtaOverTruth_->Fit(&gaus,"QEM");
843 // hist_EtaNumRecoOverNumTrue_->Fit("pol1","QEM");
844 
845  hist_PhiOverTruth_->Fit(&gaus,"QEM");
846 // hist_PhiNumRecoOverNumTrue_->Fit("pol1","QEM");
847 
848  /*
849  hist_EtOverTruthVsEt_->Fit("pol1","QEM");
850  hist_EtOverTruthVsEta_->Fit("pol1","QEM");
851  hist_EtOverTruthVsPhi_->Fit("pol1","QEM");
852  hist_resolutionEtVsEt_->Fit("pol1","QEM");
853  hist_resolutionEtVsEta_->Fit("pol1","QEM");
854  hist_resolutionEtVsPhi_->Fit("pol1","QEM");
855 
856  hist_EOverTruthVsEt_->Fit("pol1","QEM");
857  hist_EOverTruthVsEta_->Fit("pol1","QEM");
858  hist_EOverTruthVsPhi_->Fit("pol1","QEM");
859  hist_resolutionEVsEt_->Fit("pol1","QEM");
860  hist_resolutionEVsEta_->Fit("pol1","QEM");
861  hist_resolutionEVsPhi_->Fit("pol1","QEM");
862 
863  hist_deltaEtaVsEt_->Fit("pol1","QEM");
864  hist_deltaEtaVsEta_->Fit("pol1","QEM");
865  hist_deltaEtaVsPhi_->Fit("pol1","QEM");
866  hist_resolutionEtaVsEt_->Fit("pol1","QEM");
867  hist_resolutionEtaVsEta_->Fit("pol1","QEM");
868  hist_resolutionEtaVsPhi_->Fit("pol1","QEM");
869 
870  hist_deltaPhiVsEt_->Fit("pol1","QEM");
871  hist_deltaPhiVsEta_->Fit("pol1","QEM");
872  hist_deltaPhiVsPhi_->Fit("pol1","QEM");
873  hist_resolutionPhiVsEt_->Fit("pol1","QEM");
874  hist_resolutionPhiVsEta_->Fit("pol1","QEM");
875  hist_resolutionPhiVsPhi_->Fit("pol1","QEM");
876  */
877 }
878 
880 {
881  hist_Et_->GetXaxis()->SetTitle("Et (GeV)");
882  hist_Et_->GetYaxis()->SetTitle("# per Et Bin");
883  hist_EtOverTruth_->GetXaxis()->SetTitle("Reco Et/True Et");
884  hist_EtOverTruth_->GetYaxis()->SetTitle("# per Ratio Bin");
885  hist_EtEfficiency_->GetXaxis()->SetTitle("Et (GeV)");
886  hist_EtEfficiency_->GetYaxis()->SetTitle("# True Reconstructed/# True per Et Bin");
887  hist_EtNumRecoOverNumTrue_->GetXaxis()->SetTitle("Et (GeV)");
888  hist_EtNumRecoOverNumTrue_->GetYaxis()->SetTitle("# Reco/# True per Et Bin");
889  hist_EtOverTruthVsEt_->GetXaxis()->SetTitle("Et (GeV)");
890  hist_EtOverTruthVsEt_->GetYaxis()->SetTitle("Reco Et/True Et per Et Bin");
891  hist_EtOverTruthVsE_->GetXaxis()->SetTitle("E (GeV)");
892  hist_EtOverTruthVsE_->GetYaxis()->SetTitle("Reco Et/True Et per E Bin");
893  hist_EtOverTruthVsEta_->GetXaxis()->SetTitle("#eta (Radians)");
894  hist_EtOverTruthVsEta_->GetYaxis()->SetTitle("Reco Et/True Et per Eta Bin");
895  hist_EtOverTruthVsPhi_->GetXaxis()->SetTitle("#phi (Radians)");
896  hist_EtOverTruthVsPhi_->GetYaxis()->SetTitle("Reco Et/True Et per Phi Bin");
897  hist_resolutionEtVsEt_->GetXaxis()->SetTitle("Et (GeV)");
898  hist_resolutionEtVsEt_->GetYaxis()->SetTitle("#sigma of Reco Et/True Et per Et Bin");
899  hist_resolutionEtVsE_->GetXaxis()->SetTitle("E (GeV)");
900  hist_resolutionEtVsE_->GetYaxis()->SetTitle("#sigma of Reco Et/True Et per E Bin");
901  hist_resolutionEtVsEta_->GetXaxis()->SetTitle("#eta (Radians)");
902  hist_resolutionEtVsEta_->GetYaxis()->SetTitle("#sigma of Reco Et/True Et per Eta Bin");
903  hist_resolutionEtVsPhi_->GetXaxis()->SetTitle("#phi (Radians)");
904  hist_resolutionEtVsPhi_->GetYaxis()->SetTitle("#sigma of Reco Et/True Et per Phi Bin");
905 
906  hist_E_->GetXaxis()->SetTitle("E (GeV)");
907  hist_E_->GetYaxis()->SetTitle("# per E Bin");
908  hist_EOverTruth_->GetXaxis()->SetTitle("Reco E/True E");
909  hist_EOverTruth_->GetYaxis()->SetTitle("# per Ratio Bin");
910  hist_EEfficiency_->GetXaxis()->SetTitle("E (GeV)");
911  hist_EEfficiency_->GetYaxis()->SetTitle("# True Reconstructed/# True per E Bin");
912  hist_ENumRecoOverNumTrue_->GetXaxis()->SetTitle("E (GeV)");
913  hist_ENumRecoOverNumTrue_->GetYaxis()->SetTitle("# Reco/# True per E Bin");
914  hist_EOverTruthVsEt_->GetXaxis()->SetTitle("Et (GeV)");
915  hist_EOverTruthVsEt_->GetYaxis()->SetTitle("Reco E/True E per Et Bin");
916  hist_EOverTruthVsE_->GetXaxis()->SetTitle("E (GeV)");
917  hist_EOverTruthVsE_->GetYaxis()->SetTitle("Reco E/True E per E Bin");
918  hist_EOverTruthVsEta_->GetXaxis()->SetTitle("#eta (Radians)");
919  hist_EOverTruthVsEta_->GetYaxis()->SetTitle("Reco E/True E per Eta Bin");
920  hist_EOverTruthVsPhi_->GetXaxis()->SetTitle("#phi (Radians)");
921  hist_EOverTruthVsPhi_->GetYaxis()->SetTitle("Reco E/True E per Phi Bin");
922  hist_resolutionEVsEt_->GetXaxis()->SetTitle("Et (GeV)");
923  hist_resolutionEVsEt_->GetYaxis()->SetTitle("#sigma of Reco E/True E per Et Bin");
924  hist_resolutionEVsE_->GetXaxis()->SetTitle("E (GeV)");
925  hist_resolutionEVsE_->GetYaxis()->SetTitle("#sigma of Reco E/True E per E Bin");
926  hist_resolutionEVsEta_->GetXaxis()->SetTitle("#eta (Radians)");
927  hist_resolutionEVsEta_->GetYaxis()->SetTitle("#sigma of Reco E/True E per Eta Bin");
928  hist_resolutionEVsPhi_->GetXaxis()->SetTitle("#phi (Radians)");
929  hist_resolutionEVsPhi_->GetYaxis()->SetTitle("#sigma of Reco E/True E per Phi Bin");
930 
931  hist_Eta_->GetXaxis()->SetTitle("#eta (Radians)");
932  hist_Eta_->GetYaxis()->SetTitle("# per Eta Bin");
933  hist_EtaOverTruth_->GetXaxis()->SetTitle("Reco Eta/True Eta");
934  hist_EtaOverTruth_->GetYaxis()->SetTitle("# per Ratio Bin");
935  hist_EtaEfficiency_->GetXaxis()->SetTitle("#eta (Radians)");
936  hist_EtaEfficiency_->GetYaxis()->SetTitle("# True Reconstructed/# True per Eta Bin");
937  hist_EtaNumRecoOverNumTrue_->GetXaxis()->SetTitle("#eta (Radians)");
938  hist_EtaNumRecoOverNumTrue_->GetYaxis()->SetTitle("# Reco/# True per Eta Bin");
939  hist_deltaEtaVsEt_->GetXaxis()->SetTitle("Et (GeV)");
940  hist_deltaEtaVsEt_->GetYaxis()->SetTitle("Reco Eta - True Eta per Et Bin");
941  hist_deltaEtaVsE_->GetXaxis()->SetTitle("E (GeV)");
942  hist_deltaEtaVsE_->GetYaxis()->SetTitle("Reco Eta - True Eta per E Bin");
943  hist_deltaEtaVsEta_->GetXaxis()->SetTitle("#eta (Radians)");
944  hist_deltaEtaVsEta_->GetYaxis()->SetTitle("Reco Eta - True Eta per Eta Bin");
945  hist_deltaEtaVsPhi_->GetXaxis()->SetTitle("#phi (Radians)");
946  hist_deltaEtaVsPhi_->GetYaxis()->SetTitle("Reco Eta - True Eta per Phi Bin");
947  hist_resolutionEtaVsEt_->GetXaxis()->SetTitle("Et (GeV)");
948  hist_resolutionEtaVsEt_->GetYaxis()->SetTitle("#sigma of Reco Eta - True Eta per Et Bin");
949  hist_resolutionEtaVsE_->GetXaxis()->SetTitle("E (GeV)");
950  hist_resolutionEtaVsE_->GetYaxis()->SetTitle("#sigma of Reco Eta - True Eta per E Bin");
951  hist_resolutionEtaVsEta_->GetXaxis()->SetTitle("#eta (Radians)");
952  hist_resolutionEtaVsEta_->GetYaxis()->SetTitle("#sigma of Reco Eta - True Eta per Eta Bin");
953  hist_resolutionEtaVsPhi_->GetXaxis()->SetTitle("#phi (Radians)");
954  hist_resolutionEtaVsPhi_->GetYaxis()->SetTitle("#sigma of Reco Eta - True Eta per Phi Bin");
955 
956  hist_Phi_->GetXaxis()->SetTitle("#phi (Radians)");
957  hist_Phi_->GetYaxis()->SetTitle("# per Phi Bin");
958  hist_PhiOverTruth_->GetXaxis()->SetTitle("Reco Phi/True Phi");
959  hist_PhiOverTruth_->GetYaxis()->SetTitle("# per Ratio Bin");
960  hist_PhiEfficiency_->GetXaxis()->SetTitle("#phi (Radians)");
961  hist_PhiEfficiency_->GetYaxis()->SetTitle("# True Reconstructed/# True per Phi Bin");
962  hist_PhiNumRecoOverNumTrue_->GetXaxis()->SetTitle("#Phi (Radians)");
963  hist_PhiNumRecoOverNumTrue_->GetYaxis()->SetTitle("# Reco/# True per Phi Bin");
964  hist_deltaPhiVsEt_->GetXaxis()->SetTitle("Et (GeV)");
965  hist_deltaPhiVsEt_->GetYaxis()->SetTitle("Reco Phi - True Phi per Et Bin");
966  hist_deltaPhiVsE_->GetXaxis()->SetTitle("E (GeV)");
967  hist_deltaPhiVsE_->GetYaxis()->SetTitle("Reco Phi - True Phi per E Bin");
968  hist_deltaPhiVsEta_->GetXaxis()->SetTitle("#eta (Radians)");
969  hist_deltaPhiVsEta_->GetYaxis()->SetTitle("Reco Phi - True Phi per Eta Bin");
970  hist_deltaPhiVsPhi_->GetXaxis()->SetTitle("#phi (Radians)");
971  hist_deltaPhiVsPhi_->GetYaxis()->SetTitle("Reco Phi - True Phi per Phi Bin");
972  hist_resolutionPhiVsEt_->GetXaxis()->SetTitle("Et (GeV)");
973  hist_resolutionPhiVsEt_->GetYaxis()->SetTitle("#sigma of Reco Phi - True Phi per Et Bin");
974  hist_resolutionPhiVsE_->GetXaxis()->SetTitle("E (GeV)");
975  hist_resolutionPhiVsE_->GetYaxis()->SetTitle("#sigma of Reco Phi - True Phi per E Bin");
976  hist_resolutionPhiVsEta_->GetXaxis()->SetTitle("#eta (Radians)");
977  hist_resolutionPhiVsEta_->GetYaxis()->SetTitle("#sigma of Reco Phi - True Phi per Eta Bin");
978  hist_resolutionPhiVsPhi_->GetXaxis()->SetTitle("#phi (Radians)");
979  hist_resolutionPhiVsPhi_->GetYaxis()->SetTitle("#sigma of Reco Phi - True Phi per Phi Bin");
980 
981  std::string recoParticleName;
982 
983  if( particleID == 22 ) recoParticleName = "Reco Higgs";
984  else if( particleID == 11 ) recoParticleName = "Reco Z";
985 
986  hist_All_recoMass_->GetXaxis()->SetTitle((recoParticleName+" Mass (GeV)").c_str());
987  hist_All_recoMass_->GetYaxis()->SetTitle("# of Reco Masses per Mass Bin");
988  hist_BarrelOnly_recoMass_->GetXaxis()->SetTitle((recoParticleName+" Mass (GeV)").c_str());
989  hist_BarrelOnly_recoMass_->GetYaxis()->SetTitle("# of Reco Masses per Mass Bin");
990  hist_EndcapOnly_recoMass_->GetXaxis()->SetTitle((recoParticleName+" Mass (GeV)").c_str());
991  hist_EndcapOnly_recoMass_->GetYaxis()->SetTitle("# of Reco Masses per Mass Bin");
992  hist_Mixed_recoMass_->GetXaxis()->SetTitle((recoParticleName+" Mass (GeV)").c_str());
993  hist_Mixed_recoMass_->GetYaxis()->SetTitle("# of Reco Masses per Mass Bin");
994  hist_recoMass_withBackgroud_NoEtCut_->GetXaxis()->SetTitle((recoParticleName+" Mass (GeV)").c_str());
995  hist_recoMass_withBackgroud_NoEtCut_->GetYaxis()->SetTitle("# of Reco Masses per Mass Bin");
996  hist_recoMass_withBackgroud_5EtCut_->GetXaxis()->SetTitle((recoParticleName+" Mass (GeV)").c_str());
997  hist_recoMass_withBackgroud_5EtCut_->GetYaxis()->SetTitle("# of Reco Masses per Mass Bin");
998  hist_recoMass_withBackgroud_10EtCut_->GetXaxis()->SetTitle((recoParticleName+" Mass (GeV)").c_str());
999  hist_recoMass_withBackgroud_10EtCut_->GetYaxis()->SetTitle("# of Reco Masses per Mass Bin");
1000  hist_recoMass_withBackgroud_20EtCut_->GetXaxis()->SetTitle((recoParticleName+" Mass (GeV)").c_str());
1001  hist_recoMass_withBackgroud_20EtCut_->GetYaxis()->SetTitle("# of Reco Masses per Mass Bin");
1002 }
1003 
1005 {
1006  hist_Et_->SetOption("e");
1007  hist_EtOverTruth_->SetOption("e");
1008  hist_EtEfficiency_->SetOption("e");
1009  hist_EtNumRecoOverNumTrue_->SetOption("e");
1010  hist_EtOverTruthVsEt_->SetOption("e");
1011  hist_EtOverTruthVsE_->SetOption("e");
1012  hist_EtOverTruthVsEta_->SetOption("e");
1013  hist_EtOverTruthVsPhi_->SetOption("e");
1014  hist_resolutionEtVsEt_->SetOption("e");
1015  hist_resolutionEtVsE_->SetOption("e");
1016  hist_resolutionEtVsEta_->SetOption("e");
1017  hist_resolutionEtVsPhi_->SetOption("e");
1018 
1019  hist_E_->SetOption("e");
1020  hist_EOverTruth_->SetOption("e");
1021  hist_EEfficiency_->SetOption("e");
1022  hist_ENumRecoOverNumTrue_->SetOption("e");
1023  hist_EOverTruthVsEt_->SetOption("e");
1024  hist_EOverTruthVsE_->SetOption("e");
1025  hist_EOverTruthVsEta_->SetOption("e");
1026  hist_EOverTruthVsPhi_->SetOption("e");
1027  hist_resolutionEVsEt_->SetOption("e");
1028  hist_resolutionEVsE_->SetOption("e");
1029  hist_resolutionEVsEta_->SetOption("e");
1030  hist_resolutionEVsPhi_->SetOption("e");
1031 
1032  hist_Eta_->SetOption("e");
1033  hist_EtaOverTruth_->SetOption("e");
1034  hist_EtaEfficiency_->SetOption("e");
1035  hist_EtaNumRecoOverNumTrue_->SetOption("e");
1036  hist_deltaEtaVsEt_->SetOption("e");
1037  hist_deltaEtaVsE_->SetOption("e");
1038  hist_deltaEtaVsEta_->SetOption("e");
1039  hist_deltaEtaVsPhi_->SetOption("e");
1040  hist_resolutionEtaVsEt_->SetOption("e");
1041  hist_resolutionEtaVsE_->SetOption("e");
1042  hist_resolutionEtaVsEta_->SetOption("e");
1043  hist_resolutionEtaVsPhi_->SetOption("e");
1044 
1045  hist_Phi_->SetOption("e");
1046  hist_PhiOverTruth_->SetOption("e");
1047  hist_PhiEfficiency_->SetOption("e");
1048  hist_PhiNumRecoOverNumTrue_->SetOption("e");
1049  hist_deltaPhiVsEt_->SetOption("e");
1050  hist_deltaPhiVsE_->SetOption("e");
1051  hist_deltaPhiVsEta_->SetOption("e");
1052  hist_deltaPhiVsPhi_->SetOption("e");
1053  hist_resolutionPhiVsEt_->SetOption("e");
1054  hist_resolutionPhiVsE_->SetOption("e");
1055  hist_resolutionPhiVsEta_->SetOption("e");
1056  hist_resolutionPhiVsPhi_->SetOption("e");
1057 
1058  hist_All_recoMass_->SetOption("e");
1059  hist_BarrelOnly_recoMass_->SetOption("e");
1060  hist_EndcapOnly_recoMass_->SetOption("e");
1061  hist_Mixed_recoMass_->SetOption("e");
1062  hist_recoMass_withBackgroud_NoEtCut_->SetOption("e");
1063  hist_recoMass_withBackgroud_5EtCut_->SetOption("e");
1064  hist_recoMass_withBackgroud_10EtCut_->SetOption("e");
1065  hist_recoMass_withBackgroud_20EtCut_->SetOption("e");
1066 }
1067 
1069 {
1070  rootFile_->cd();
1071  rootFile_->GetDirectory(particleString.c_str())->mkdir("ET");
1072  rootFile_->cd(("/"+particleString+"/ET").c_str());
1073 
1074  hist_Et_->Write();
1075  hist_EtOverTruth_->Write();
1076  hist_EtEfficiency_->Write();
1077  hist_EtNumRecoOverNumTrue_->Write();
1078  hist_EtOverTruthVsEt_->Write();
1079  hist_EtOverTruthVsE_->Write();
1080  hist_EtOverTruthVsEta_->Write();
1081  hist_EtOverTruthVsPhi_->Write();
1082  hist_resolutionEtVsEt_->Write();
1083  hist_resolutionEtVsE_->Write();
1084  hist_resolutionEtVsEta_->Write();
1085  hist_resolutionEtVsPhi_->Write();
1086 
1087  rootFile_->cd();
1088  rootFile_->GetDirectory(particleString.c_str())->mkdir("E");
1089  rootFile_->cd(("/"+particleString+"/E").c_str());
1090 
1091  hist_E_->Write();
1092  hist_EOverTruth_->Write();
1093  hist_EEfficiency_->Write();
1094  hist_ENumRecoOverNumTrue_->Write();
1095  hist_EOverTruthVsEt_->Write();
1096  hist_EOverTruthVsE_->Write();
1097  hist_EOverTruthVsEta_->Write();
1098  hist_EOverTruthVsPhi_->Write();
1099  hist_resolutionEVsEt_->Write();
1100  hist_resolutionEVsE_->Write();
1101  hist_resolutionEVsEta_->Write();
1102  hist_resolutionEVsPhi_->Write();
1103 
1104  rootFile_->cd();
1105  rootFile_->GetDirectory(particleString.c_str())->mkdir("Eta");
1106  rootFile_->cd(("/"+particleString+"/Eta").c_str());
1107 
1108  hist_Eta_->Write();
1109  hist_EtaOverTruth_->Write();
1110  hist_EtaEfficiency_->Write();
1111  hist_EtaNumRecoOverNumTrue_->Write();
1112  hist_deltaEtaVsEt_->Write();
1113  hist_deltaEtaVsE_->Write();
1114  hist_deltaEtaVsEta_->Write();
1115  hist_deltaEtaVsPhi_->Write();
1116  hist_resolutionEtaVsEt_->Write();
1117  hist_resolutionEtaVsE_->Write();
1118  hist_resolutionEtaVsEta_->Write();
1119  hist_resolutionEtaVsPhi_->Write();
1120 
1121  rootFile_->cd();
1122  rootFile_->GetDirectory(particleString.c_str())->mkdir("Phi");
1123  rootFile_->cd(("/"+particleString+"/Phi").c_str());
1124 
1125  hist_Phi_->Write();
1126  hist_PhiOverTruth_->Write();
1127  hist_PhiEfficiency_->Write();
1128  hist_PhiNumRecoOverNumTrue_->Write();
1129  hist_deltaPhiVsEt_->Write();
1130  hist_deltaPhiVsE_->Write();
1131  hist_deltaPhiVsEta_->Write();
1132  hist_deltaPhiVsPhi_->Write();
1133  hist_resolutionPhiVsEt_->Write();
1134  hist_resolutionPhiVsE_->Write();
1135  hist_resolutionPhiVsEta_->Write();
1136  hist_resolutionPhiVsPhi_->Write();
1137 
1138  std::string recoParticleName;
1139 
1140  if( particleID == 22 ) recoParticleName = "HiggsRecoMass";
1141  else if( particleID == 11 ) recoParticleName = "ZRecoMass";
1142 
1143  rootFile_->cd();
1144  rootFile_->GetDirectory(particleString.c_str())->mkdir(recoParticleName.c_str());
1145  rootFile_->cd(("/"+particleString+"/"+recoParticleName).c_str());
1146 
1147  hist_All_recoMass_->Write();
1148  hist_BarrelOnly_recoMass_->Write();
1149  hist_EndcapOnly_recoMass_->Write();
1150  hist_Mixed_recoMass_->Write();
1155 
1156  rootFile_->cd();
1157  rootFile_->GetDirectory(particleString.c_str())->mkdir("_TempScatterPlots");
1158  rootFile_->cd(("/"+particleString+"/_TempScatterPlots").c_str());
1159 
1164 
1169 
1174 
1179 
1180  rootFile_->cd();
1181 }
1182 
TH1D * hist_resolutionEVsPhi_
TH2D * _TEMP_scatterPlot_EtOverTruthVsPhi_
double hist_min_deltaEta_
Definition: EgammaObjects.h:75
int hist_bins_deltaEta_
Definition: EgammaObjects.h:77
T getParameter(std::string const &) const
double hist_min_EtaOverTruth_
Definition: EgammaObjects.h:67
TH2D * _TEMP_scatterPlot_deltaEtaVsEta_
TH1D * hist_resolutionEVsE_
int hist_bins_deltaPhi_
Definition: EgammaObjects.h:81
TH2D * _TEMP_scatterPlot_deltaPhiVsPhi_
TH1D * hist_PhiEfficiency_
double eta() const final
momentum pseudorapidity
TH1D * hist_deltaEtaVsEta_
float ecalEta(float EtaParticle, float Zvertex, float plane_Radius)
int hist_bins_recoMass_
Definition: EgammaObjects.h:85
void analyzePhotons(const edm::Event &, const edm::EventSetup &)
TH1D * hist_EOverTruth_
TH1D * hist_EtOverTruthVsEt_
Definition: EgammaObjects.h:91
TH1D * hist_resolutionEVsEta_
TH1D * hist_deltaEtaVsPhi_
TH1D * hist_EEfficiency_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
TH1D * hist_EOverTruthVsEt_
TH1D * hist_recoMass_withBackgroud_20EtCut_
TH2D * _TEMP_scatterPlot_EtOverTruthVsE_
double hist_max_Eta_
Definition: EgammaObjects.h:52
TH2D * _TEMP_scatterPlot_deltaPhiVsE_
void getEfficiencyHistosViaDividing()
TH1D * hist_Mixed_recoMass_
double hist_min_PhiOverTruth_
Definition: EgammaObjects.h:71
double hist_max_Phi_
Definition: EgammaObjects.h:56
#define nullptr
TH1D * hist_resolutionPhiVsPhi_
TH1D * hist_resolutionEtVsEta_
Definition: EgammaObjects.h:97
TH2D * _TEMP_scatterPlot_EOverTruthVsEta_
TH2D * _TEMP_scatterPlot_deltaPhiVsEt_
TH1D * hist_ENumRecoOverNumTrue_
TH1D * hist_deltaPhiVsPhi_
double hist_max_EtaOverTruth_
Definition: EgammaObjects.h:68
void loadHistoParameters(const edm::ParameterSet &ps)
double hist_min_Phi_
Definition: EgammaObjects.h:55
TH1D * hist_EOverTruthVsE_
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
double hist_min_Eta_
Definition: EgammaObjects.h:51
TH1D * hist_EtNumRecoOverNumTrue_
Definition: EgammaObjects.h:90
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
TH1D * hist_resolutionEVsEt_
void createTempHistoObjects()
TH1D * hist_resolutionEtVsPhi_
Definition: EgammaObjects.h:98
std::string particleString
Definition: EgammaObjects.h:39
void beginJob() override
TH1D * hist_EtOverTruth_
Definition: EgammaObjects.h:88
int hist_bins_EOverTruth_
Definition: EgammaObjects.h:65
void analyze(const edm::Event &, const edm::EventSetup &) override
TH1D * hist_EOverTruthVsPhi_
TH2D * _TEMP_scatterPlot_EtOverTruthVsEta_
TH1D * hist_EtOverTruthVsEta_
Definition: EgammaObjects.h:93
double hist_min_EtOverTruth_
Definition: EgammaObjects.h:59
#define ETA
TH1D * hist_EOverTruthVsEta_
void getDeltaResHistosViaSlicing()
TH1D * hist_resolutionEtVsE_
Definition: EgammaObjects.h:96
TH2D * _TEMP_scatterPlot_deltaEtaVsE_
double hist_max_recoMass_
Definition: EgammaObjects.h:84
TH1D * hist_PhiNumRecoOverNumTrue_
double hist_max_E_
Definition: EgammaObjects.h:48
TH1D * hist_PhiOverTruth_
double et() const final
transverse energy
double hist_min_deltaPhi_
Definition: EgammaObjects.h:79
TH1D * hist_recoMass_withBackgroud_5EtCut_
TH2D * _TEMP_scatterPlot_deltaEtaVsPhi_
T sqrt(T t)
Definition: SSEVec.h:18
TH1D * hist_resolutionEtVsEt_
Definition: EgammaObjects.h:95
TH2D * _TEMP_scatterPlot_EOverTruthVsEt_
double hist_max_deltaEta_
Definition: EgammaObjects.h:76
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
TH1D * hist_EtOverTruthVsE_
Definition: EgammaObjects.h:92
TH1D * hist_resolutionEtaVsE_
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
static float etaBarrelEndcap
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
TH1D * hist_BarrelOnly_recoMass_
TH1D * hist_EndcapOnly_recoMass_
TH1D * hist_deltaPhiVsEt_
TH1D * hist_EtaOverTruth_
TH1D * hist_deltaPhiVsEta_
bool isValid() const
Definition: HandleBase.h:74
char const * module
Definition: ProductLabels.h:5
TH1D * hist_deltaEtaVsEt_
double hist_max_deltaPhi_
Definition: EgammaObjects.h:80
int hist_bins_EtOverTruth_
Definition: EgammaObjects.h:61
edm::EDGetTokenT< edm::HepMCProduct > MCTruthCollectionT_
Definition: EgammaObjects.h:35
TH1D * hist_recoMass_withBackgroud_10EtCut_
edm::EDGetTokenT< reco::GsfElectronCollection > RecoCollectionT_
Definition: EgammaObjects.h:36
TH1D * hist_resolutionPhiVsEt_
double hist_max_PhiOverTruth_
Definition: EgammaObjects.h:72
void analyzeElectrons(const edm::Event &, const edm::EventSetup &)
TH2D * _TEMP_scatterPlot_deltaPhiVsEta_
TH2D * _TEMP_scatterPlot_EOverTruthVsE_
double hist_max_EtOverTruth_
Definition: EgammaObjects.h:60
const HepMC::GenEvent * GetEvent() const
Definition: HepMCProduct.h:38
~EgammaObjects() override
T const * product() const
Definition: Handle.h:74
double hist_min_E_
Definition: EgammaObjects.h:47
EgammaObjects(const edm::ParameterSet &)
TH1D * hist_All_recoMass_
TH2D * _TEMP_scatterPlot_deltaEtaVsEt_
std::vector< Photon > PhotonCollection
collectin of Photon objects
Definition: PhotonFwd.h:9
double hist_min_Et_
Definition: EgammaObjects.h:43
math::XYZPoint caloPosition() const
Definition: GsfElectron.h:329
TH2D * _TEMP_scatterPlot_EOverTruthVsPhi_
TH1D * hist_deltaEtaVsE_
TH1D * hist_resolutionEtaVsPhi_
TH1D * hist_EtOverTruthVsPhi_
Definition: EgammaObjects.h:94
void labelsForToken(EDGetToken iToken, Labels &oLabels) const
TH1D * hist_deltaPhiVsE_
def mkdir(path)
Definition: eostools.py:251
double hist_min_recoMass_
Definition: EgammaObjects.h:83
TH1D * hist_EtaEfficiency_
void endJob() override
TH1D * hist_resolutionPhiVsE_
double hist_min_EOverTruth_
Definition: EgammaObjects.h:63
void loadCMSSWObjects(const edm::ParameterSet &ps)
TH1D * hist_recoMass_withBackgroud_NoEtCut_
SuperClusterRef superCluster() const override
reference to a SuperCluster
Definition: GsfElectron.h:185
TH2D * _TEMP_scatterPlot_EtOverTruthVsEt_
int hist_bins_PhiOverTruth_
Definition: EgammaObjects.h:73
double findRecoMass(const reco::Photon &pOne, const reco::Photon &pTwo)
double hist_max_EOverTruth_
Definition: EgammaObjects.h:64
double hist_max_Et_
Definition: EgammaObjects.h:44
static float Z_Endcap
int hist_bins_EtaOverTruth_
Definition: EgammaObjects.h:69
TFile * rootFile_
Definition: EgammaObjects.h:33
constexpr double pi()
Definition: Pi.h:31
void createBookedHistoObjects()
TH1D * hist_resolutionEtaVsEta_
TH1D * hist_resolutionPhiVsEta_
float caloEnergy() const
Definition: GsfElectron.h:862
TH1D * hist_EtEfficiency_
Definition: EgammaObjects.h:89
static float R_ECAL
TH1D * hist_EtaNumRecoOverNumTrue_
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
TH1D * hist_resolutionEtaVsEt_