CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
GsfElectronMCFakeAnalyzer.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: RecoEgamma/Examples
4 // Class: GsfElectronMCFakeAnalyzer
5 //
13 //
14 // Original Author: Ursula Berthon, Claude Charlot
15 // Created: Mon Mar 27 13:22:06 CEST 2006
16 //
17 //
18 
38 
39 #include "CLHEP/Units/GlobalPhysicalConstants.h"
40 
41 #include "TFile.h"
42 #include "TH1F.h"
43 #include "TH1I.h"
44 #include "TH2F.h"
45 #include "TProfile.h"
46 #include "TTree.h"
47 
48 #include <iostream>
49 
51 public:
52  explicit GsfElectronMCFakeAnalyzer(const edm::ParameterSet &conf);
53 
54  ~GsfElectronMCFakeAnalyzer() override;
55 
56  void beginJob() override;
57  void endJob() override;
58  void analyze(const edm::Event &e, const edm::EventSetup &c) override;
59 
60 private:
64  bool readAOD_;
66 
70 
71  float mcEnergy[10], mcEta[10], mcPhi[10], mcPt[10], mcQ[10];
73  float seedMomentum[10], seedEta[10], seedPhi[10], seedPt[10], seedQ[10];
74 
75  double maxPt_;
76  double maxAbsEta_;
77  double deltaR_;
78 
79  TFile *histfile_;
80  TTree *tree_;
81 
82  // histos limits and binning
83 
84  int nbinxyz;
85  int nbinp;
86  int nbinp2D;
87  double pmax;
88  int nbinpt;
89  int nbinpt2D;
90  int nbinpteff;
91  double ptmax;
92  int nbinfhits;
93  double fhitsmax;
94  int nbinlhits;
95  double lhitsmax;
96  int nbineta;
97  int nbineta2D;
98  double etamin;
99  double etamax;
100  int nbindeta;
101  double detamin;
102  double detamax;
105  double detamatchmin;
106  double detamatchmax;
107  int nbinphi;
109  double phimin;
110  double phimax;
111  int nbindphi;
112  double dphimin;
113  double dphimax;
116  double dphimatchmin;
117  double dphimatchmax;
118  int nbineop;
120  double eopmax;
121  double eopmaxsht;
122  int nbinmee;
123  double meemin;
124  double meemax;
125  int nbinhoe;
126  double hoemin;
127  double hoemax;
128 
129  // histos
130 
132 
139 
154 
157 
163 
183 
184  TH1F *histNum_;
185 
186  TH1F *histSclEn_;
189  TH1F *histSclEt_;
193  TH1F *histSclEta_;
194  TH1F *histSclPhi_;
210 
227  TH1F *h_ele_chi2;
233 
249 
257 
266  TH1F *h_ele_EoP;
302 
357 
365 
367  TH1F *h_ele_eta;
372 
373  TH1F *h_ele_HoE;
383 
384  TH1F *h_ele_fbrem;
387 
400 
401  TH1F *h_ele_mva;
403 
412 };
413 
416 
417 using namespace reco;
418 
420  : beamSpot_(conf.getParameter<edm::InputTag>("beamSpot")) {
421  outputFile_ = conf.getParameter<std::string>("outputFile");
422  histfile_ = new TFile(outputFile_.c_str(), "RECREATE");
423  electronCollection_ = conf.getParameter<edm::InputTag>("electronCollection");
424  matchingObjectCollection_ = conf.getParameter<edm::InputTag>("matchingObjectCollection");
425  readAOD_ = conf.getParameter<bool>("readAOD");
426  maxPt_ = conf.getParameter<double>("MaxPt");
427  maxAbsEta_ = conf.getParameter<double>("MaxAbsEta");
428  deltaR_ = conf.getParameter<double>("DeltaR");
429 
430  edm::ParameterSet pset = conf.getParameter<edm::ParameterSet>("HistosConfigurationFake");
431 
432  etamin = pset.getParameter<double>("Etamin");
433  etamax = pset.getParameter<double>("Etamax");
434  phimin = pset.getParameter<double>("Phimin");
435  phimax = pset.getParameter<double>("Phimax");
436  ptmax = pset.getParameter<double>("Ptmax");
437  pmax = pset.getParameter<double>("Pmax");
438  eopmax = pset.getParameter<double>("Eopmax");
439  eopmaxsht = pset.getParameter<double>("Eopmaxsht");
440  detamin = pset.getParameter<double>("Detamin");
441  detamax = pset.getParameter<double>("Detamax");
442  dphimin = pset.getParameter<double>("Dphimin");
443  dphimax = pset.getParameter<double>("Dphimax");
444  detamatchmin = pset.getParameter<double>("Detamatchmin");
445  detamatchmax = pset.getParameter<double>("Detamatchmax");
446  dphimatchmin = pset.getParameter<double>("Dphimatchmin");
447  dphimatchmax = pset.getParameter<double>("Dphimatchmax");
448  fhitsmax = pset.getParameter<double>("Fhitsmax");
449  lhitsmax = pset.getParameter<double>("Lhitsmax");
450  nbineta = pset.getParameter<int>("Nbineta");
451  nbineta2D = pset.getParameter<int>("Nbineta2D");
452  nbinp = pset.getParameter<int>("Nbinp");
453  nbinpt = pset.getParameter<int>("Nbinpt");
454  nbinp2D = pset.getParameter<int>("Nbinp2D");
455  nbinpt2D = pset.getParameter<int>("Nbinpt2D");
456  nbinpteff = pset.getParameter<int>("Nbinpteff");
457  nbinphi = pset.getParameter<int>("Nbinphi");
458  nbinphi2D = pset.getParameter<int>("Nbinphi2D");
459  nbineop = pset.getParameter<int>("Nbineop");
460  nbineop2D = pset.getParameter<int>("Nbineop2D");
461  nbinfhits = pset.getParameter<int>("Nbinfhits");
462  nbinlhits = pset.getParameter<int>("Nbinlhits");
463  nbinxyz = pset.getParameter<int>("Nbinxyz");
464  nbindeta = pset.getParameter<int>("Nbindeta");
465  nbindphi = pset.getParameter<int>("Nbindphi");
466  nbindetamatch = pset.getParameter<int>("Nbindetamatch");
467  nbindphimatch = pset.getParameter<int>("Nbindphimatch");
468  nbindetamatch2D = pset.getParameter<int>("Nbindetamatch2D");
469  nbindphimatch2D = pset.getParameter<int>("Nbindphimatch2D");
470  nbinmee = pset.getParameter<int>("Nbinmee");
471  meemin = pset.getParameter<double>("Meemin");
472  meemax = pset.getParameter<double>("Meemax");
473  nbinhoe = pset.getParameter<int>("Nbinhoe");
474  hoemin = pset.getParameter<double>("Hoemin");
475  hoemax = pset.getParameter<double>("Hoemax");
476 }
477 
479  // do anything here that needs to be done at desctruction time
480  // (e.g. close files, deallocate resources etc.)
481  histfile_->Write();
482  histfile_->Close();
483 }
484 
486  histfile_->cd();
487 
488  // matching object
489  std::string::size_type locJet = matchingObjectCollection_.label().find("ak4GenJets", 0);
490  std::string type_;
491  if (locJet != std::string::npos) {
492  std::cout << "Matching objects are GenJets " << std::endl;
493  type_ = "GenJet";
494  } else {
495  std::cout << "Didn't recognize input matching objects!! " << std::endl;
496  }
497 
498  std::string htitle, hlabel;
499  hlabel = "h_" + type_ + "Num";
500  htitle = "# " + type_ + "s";
501  h_matchingObjectNum = new TH1F(hlabel.c_str(), htitle.c_str(), nbinfhits, 0., fhitsmax);
502 
503  // rec event
504  histNum_ = new TH1F("h_recEleNum", "# rec electrons", 20, 0., 20.);
505 
506  // matching object distributions
507  hlabel = "h_matchingObject_eta";
508  htitle = type_ + " #eta";
509  h_matchingObjectEta = new TH1F(hlabel.c_str(), htitle.c_str(), nbineta, etamin, etamax);
510  hlabel = "h_matchingObject_abseta";
511  htitle = type_ + " |#eta|";
512  h_matchingObjectAbsEta = new TH1F(hlabel.c_str(), htitle.c_str(), nbineta / 2, 0., etamax);
513  hlabel = "h_matchingObject_P";
514  htitle = type_ + " p";
515  h_matchingObjectP = new TH1F(hlabel.c_str(), htitle.c_str(), nbinp, 0., pmax);
516  hlabel = "h_matchingObject_Pt";
517  htitle = type_ + " pt";
518  h_matchingObjectPt = new TH1F(hlabel.c_str(), htitle.c_str(), nbinpteff, 5., ptmax);
519  hlabel = "h_matchingObject_phi";
520  htitle = type_ + " phi";
521  h_matchingObjectPhi = new TH1F(hlabel.c_str(), htitle.c_str(), nbinphi, phimin, phimax);
522  hlabel = "h_matchingObject_z";
523  htitle = type_ + " z";
524  h_matchingObjectZ = new TH1F(hlabel.c_str(), htitle.c_str(), nbinxyz, -25, 25);
525 
526  // all electrons
527  h_ele_EoverP_all = new TH1F("h_ele_EoverP_all", "ele E/P_{vertex}, all reco electrons", nbineop, 0., eopmax);
528  h_ele_EseedOP_all = new TH1F("h_ele_EseedOP_all", "ele E_{seed}/P_{vertex}, all reco electrons", nbineop, 0., eopmax);
529  h_ele_EoPout_all = new TH1F("h_ele_EoPout_all", "ele E_{seed}/P_{out}, all reco electrons", nbineop, 0., eopmax);
530  h_ele_EeleOPout_all = new TH1F("h_ele_EeleOPout_all", "ele E_{ele}/P_{out}, all reco electrons", nbineop, 0., eopmax);
531  h_ele_dEtaSc_propVtx_all = new TH1F("h_ele_dEtaSc_propVtx_all",
532  "ele #eta_{sc} - #eta_{tr}, prop from vertex, all reco electrons",
534  detamatchmin,
535  detamatchmax);
536  h_ele_dPhiSc_propVtx_all = new TH1F("h_ele_dPhiSc_propVtx_all",
537  "ele #phi_{sc} - #phi_{tr}, prop from vertex, all reco electrons",
539  dphimatchmin,
540  dphimatchmax);
541  h_ele_dEtaCl_propOut_all = new TH1F("h_ele_dEtaCl_propOut_all",
542  "ele #eta_{cl} - #eta_{tr}, prop from outermost, all reco electrons",
544  detamatchmin,
545  detamatchmax);
546  h_ele_dPhiCl_propOut_all = new TH1F("h_ele_dPhiCl_propOut_all",
547  "ele #phi_{cl} - #phi_{tr}, prop from outermost, all reco electrons",
549  dphimatchmin,
550  dphimatchmax);
551  h_ele_TIP_all = new TH1F("h_ele_TIP_all", "ele vertex transverse radius, all reco electrons", 100, 0., 0.2);
552  h_ele_HoE_all =
553  new TH1F("h_ele_HoE_all", "ele hadronic energy / em energy, all reco electrons", nbinhoe, hoemin, hoemax);
554  h_ele_vertexEta_all = new TH1F("h_ele_vertexEta_all", "ele eta, all reco electrons", nbineta, etamin, etamax);
555  h_ele_vertexEta_all->Sumw2();
556  h_ele_vertexPt_all = new TH1F("h_ele_vertexPt_all", "ele p_{T}, all reco electrons", nbinpteff, 5., ptmax);
557  h_ele_vertexPt_all->Sumw2();
558  h_ele_mee_all = new TH1F("h_ele_mee_all", "ele pairs invariant mass, all reco electrons", nbinmee, meemin, meemax);
559  h_ele_mee_os = new TH1F("h_ele_mee_os", "ele pairs invariant mass, opp. sign", nbinmee, meemin, meemax);
560 
561  // duplicates
562  h_ele_E2mnE1vsMee_all = new TH2F("h_ele_E2mnE1vsMee_all",
563  "E2 - E1 vs ele pairs invariant mass, all electrons",
564  nbinmee,
565  meemin,
566  meemax,
567  100,
568  -50.,
569  50.);
570  h_ele_E2mnE1vsMee_egeg_all = new TH2F("h_ele_E2mnE1vsMee_egeg_all",
571  "E2 - E1 vs ele pairs invariant mass, ecal driven pairs, all electrons",
572  nbinmee,
573  meemin,
574  meemax,
575  100,
576  -50.,
577  50.);
578 
579  // matched electrons
580 
582  new TH1F("h_ele_matchingObjectPt_matched", "Efficiency vs matching jet p_{T}", nbinpteff, 5., ptmax);
585  new TH1F("h_ele_matchingObjectAbsEta_matched", "Efficiency vs matching jet |#eta|", nbineta / 2, 0., 2.5);
588  new TH1F("h_ele_matchingObjectEta_matched", "Efficiency vs matching jet #eta", nbineta, etamin, etamax);
591  new TH1F("h_ele_matchingObjectPhi_matched", "Efficiency vs matching jet phi", nbinphi, phimin, phimax);
594  new TH1F("h_ele_matchingObjectZ_matched", "Efficiency vs matching jet z", nbinxyz, -25, 25);
596 
597  h_ele_charge = new TH1F("h_ele_charge", "ele charge", 5, -2., 2.);
598  h_ele_chargeVsEta = new TH2F("h_ele_chargeVsEta", "ele charge vs eta", nbineta2D, etamin, etamax, 5, -2., 2.);
599  h_ele_chargeVsPhi = new TH2F("h_ele_chargeVsPhi", "ele charge vs phi", nbinphi2D, phimin, phimax, 5, -2., 2.);
600  h_ele_chargeVsPt = new TH2F("h_ele_chargeVsPt", "ele charge vs pt", nbinpt, 0., 100., 5, -2., 2.);
601  h_ele_vertexP = new TH1F("h_ele_vertexP", "ele momentum", nbinp, 0., pmax);
602  h_ele_vertexPt = new TH1F("h_ele_vertexPt", "ele transverse momentum", nbinpt, 0., ptmax);
604  new TH2F("h_ele_vertexPtVsEta", "ele transverse momentum vs eta", nbineta2D, etamin, etamax, nbinpt2D, 0., ptmax);
606  new TH2F("h_ele_vertexPtVsPhi", "ele transverse momentum vs phi", nbinphi2D, phimin, phimax, nbinpt2D, 0., ptmax);
607  h_ele_vertexEta = new TH1F("h_ele_vertexEta", "ele momentum eta", nbineta, etamin, etamax);
609  new TH2F("h_ele_vertexEtaVsPhi", "ele momentum eta vs phi", nbineta2D, etamin, etamax, nbinphi2D, phimin, phimax);
610  h_ele_vertexPhi = new TH1F("h_ele_vertexPhi", "ele momentum #phi", nbinphi, phimin, phimax);
611  h_ele_vertexX = new TH1F("h_ele_vertexX", "ele vertex x", nbinxyz, -0.1, 0.1);
612  h_ele_vertexY = new TH1F("h_ele_vertexY", "ele vertex y", nbinxyz, -0.1, 0.1);
613  h_ele_vertexZ = new TH1F("h_ele_vertexZ", "ele vertex z", nbinxyz, -25, 25);
614  h_ele_vertexTIP = new TH1F("h_ele_vertexTIP", "ele transverse impact parameter (wrt bs)", 90, 0., 0.15);
615  h_ele_vertexTIPVsEta = new TH2F("h_ele_vertexTIPVsEta",
616  "ele transverse impact parameter (wrt bs) vs eta",
617  nbineta2D,
618  etamin,
619  etamax,
620  45,
621  0.,
622  0.15);
623  h_ele_vertexTIPVsPhi = new TH2F("h_ele_vertexTIPVsPhi",
624  "ele transverse impact parameter (wrt bs) vs phi",
625  nbinphi2D,
626  phimin,
627  phimax,
628  45,
629  0.,
630  0.15);
631  h_ele_vertexTIPVsPt = new TH2F(
632  "h_ele_vertexTIPVsPt", "ele transverse impact parameter (wrt bs) vs Pt", nbinpt2D, 0., ptmax, 45, 0., 0.15);
633 
634  h_ele_PoPmatchingObject = new TH1F("h_ele_PoPmatchingObject", "ele momentum / matching jet momentum", 75, 0., 1.5);
635  h_ele_PoPmatchingObjectVsEta = new TH2F("h_ele_PoPmatchingObjectVsEta",
636  "ele momentum / matching jet momentum vs eta",
637  nbineta2D,
638  etamin,
639  etamax,
640  50,
641  0.,
642  1.5);
643  h_ele_PoPmatchingObjectVsPhi = new TH2F("h_ele_PoPmatchingObjectVsPhi",
644  "ele momentum / matching jet momentum vs phi",
645  nbinphi2D,
646  phimin,
647  phimax,
648  50,
649  0.,
650  1.5);
651  h_ele_PoPmatchingObjectVsPt = new TH2F(
652  "h_ele_PoPmatchingObjectVsPt", "ele momentum / matching jet momentum vs eta", nbinpt2D, 0., ptmax, 50, 0., 1.5);
654  new TH1F("h_ele_PoPmatchingObject_barrel", "ele momentum / matching jet momentum, barrel", 75, 0., 1.5);
656  new TH1F("h_ele_PoPmatchingObject_endcaps", "ele momentum / matching jet momentum, endcaps", 75, 0., 1.5);
657 
659  new TH1F("h_ele_EtaMnEtamatchingObject", "ele momentum eta - matching jet eta", nbindeta, detamin, detamax);
660  h_ele_EtaMnEtamatchingObjectVsEta = new TH2F("h_ele_EtaMnEtamatchingObjectVsEta",
661  "ele momentum eta - matching jet eta vs eta",
662  nbineta2D,
663  etamin,
664  etamax,
665  nbindeta / 2,
666  detamin,
667  detamax);
668  h_ele_EtaMnEtamatchingObjectVsPhi = new TH2F("h_ele_EtaMnEtamatchingObjectVsPhi",
669  "ele momentum eta - matching jet eta vs phi",
670  nbinphi2D,
671  phimin,
672  phimax,
673  nbindeta / 2,
674  detamin,
675  detamax);
676  h_ele_EtaMnEtamatchingObjectVsPt = new TH2F("h_ele_EtaMnEtamatchingObjectVsPt",
677  "ele momentum eta - matching jet eta vs pt",
678  nbinpt,
679  0.,
680  ptmax,
681  nbindeta / 2,
682  detamin,
683  detamax);
685  new TH1F("h_ele_PhiMnPhimatchingObject", "ele momentum phi - matching jet phi", nbindphi, dphimin, dphimax);
686  h_ele_PhiMnPhimatchingObject2 = new TH1F("h_ele_PhiMnPhimatchingObject2",
687  "ele momentum phi - matching jet phi",
689  dphimatchmin,
690  dphimatchmax);
691  h_ele_PhiMnPhimatchingObjectVsEta = new TH2F("h_ele_PhiMnPhimatchingObjectVsEta",
692  "ele momentum phi - matching SC phi vs eta",
693  nbineta2D,
694  etamin,
695  etamax,
696  nbindphi / 2,
697  dphimin,
698  dphimax);
699  h_ele_PhiMnPhimatchingObjectVsPhi = new TH2F("h_ele_PhiMnPhimatchingObjectVsPhi",
700  "ele momentum phi - matching SC phi vs phi",
701  nbinphi2D,
702  phimin,
703  phimax,
704  nbindphi / 2,
705  dphimin,
706  dphimax);
707  h_ele_PhiMnPhimatchingObjectVsPt = new TH2F("h_ele_PhiMnPhimatchingObjectVsPt",
708  "ele momentum phi - matching SC phi vs pt",
709  nbinpt2D,
710  0.,
711  ptmax,
712  nbindphi / 2,
713  dphimin,
714  dphimax);
715 
716  // matched electron, superclusters
717  histSclEn_ = new TH1F("h_scl_energy", "ele supercluster energy", nbinp, 0., pmax);
719  new TH1F("h_scl_EoEmatchingObject_barrel", "ele supercluster energy / matching jet energy, barrel", 50, 0.2, 1.2);
721  "h_scl_EoEmatchingObject_endcaps", "ele supercluster energy / matching jet energy, endcaps", 50, 0.2, 1.2);
722  histSclEt_ = new TH1F("h_scl_et", "ele supercluster transverse energy", nbinpt, 0., ptmax);
723  histSclEtVsEta_ = new TH2F(
724  "h_scl_etVsEta", "ele supercluster transverse energy vs eta", nbineta2D, etamin, etamax, nbinpt, 0., ptmax);
725  histSclEtVsPhi_ = new TH2F(
726  "h_scl_etVsPhi", "ele supercluster transverse energy vs phi", nbinphi2D, phimin, phimax, nbinpt, 0., ptmax);
728  new TH2F("h_scl_etaVsPhi", "ele supercluster eta vs phi", nbinphi2D, phimin, phimax, nbineta2D, etamin, etamax);
729  histSclEta_ = new TH1F("h_scl_eta", "ele supercluster eta", nbineta, etamin, etamax);
730  histSclPhi_ = new TH1F("h_scl_phi", "ele supercluster phi", nbinphi, phimin, phimax);
731 
732  histSclSigIEtaIEta_ = new TH1F("h_scl_sigietaieta", "ele supercluster sigma ieta ieta", 100, 0., 0.05);
734  new TH1F("h_scl_sigietaieta_barrel", "ele supercluster sigma ieta ieta, barrel", 100, 0., 0.05);
736  new TH1F("h_scl_sigietaieta_endcaps", "ele supercluster sigma ieta ieta, endcaps", 100, 0., 0.05);
737  histSclE1x5_ = new TH1F("h_scl_E1x5", "ele supercluster energy in 1x5", nbinp, 0., pmax);
738  histSclE1x5_barrel_ = new TH1F("h_scl_E1x5_barrel", "ele supercluster energy in 1x5 barrel", nbinp, 0., pmax);
739  histSclE1x5_endcaps_ = new TH1F("h_scl_E1x5_endcaps", "ele supercluster energy in 1x5 endcaps", nbinp, 0., pmax);
740  histSclE2x5max_ = new TH1F("h_scl_E2x5max", "ele supercluster energy in 2x5 max", nbinp, 0., pmax);
742  new TH1F("h_scl_E2x5max_barrel", "ele supercluster energy in 2x5 max barrel", nbinp, 0., pmax);
744  new TH1F("h_scl_E2x5max_endcaps", "ele supercluster energy in 2x5 max endcaps", nbinp, 0., pmax);
745  histSclE5x5_ = new TH1F("h_scl_E5x5", "ele supercluster energy in 5x5", nbinp, 0., pmax);
746  histSclE5x5_barrel_ = new TH1F("h_scl_E5x5_barrel", "ele supercluster energy in 5x5 barrel", nbinp, 0., pmax);
747  histSclE5x5_endcaps_ = new TH1F("h_scl_E5x5_endcaps", "ele supercluster energy in 5x5 endcaps", nbinp, 0., pmax);
748 
749  // matched electron, gsf tracks
750  h_ele_ambiguousTracks = new TH1F("h_ele_ambiguousTracks", "ele # ambiguous tracks", 5, 0., 5.);
752  new TH2F("h_ele_ambiguousTracksVsEta", "ele # ambiguous tracks vs eta", nbineta2D, etamin, etamax, 5, 0., 5.);
754  new TH2F("h_ele_ambiguousTracksVsPhi", "ele # ambiguous tracks vs phi", nbinphi2D, phimin, phimax, 5, 0., 5.);
756  new TH2F("h_ele_ambiguousTracksVsPt", "ele # ambiguous tracks vs pt", nbinpt2D, 0., ptmax, 5, 0., 5.);
757  h_ele_foundHits = new TH1F("h_ele_foundHits", "ele track # found hits", nbinfhits, 0., fhitsmax);
758  h_ele_foundHitsVsEta = new TH2F(
759  "h_ele_foundHitsVsEta", "ele track # found hits vs eta", nbineta2D, etamin, etamax, nbinfhits, 0., fhitsmax);
760  h_ele_foundHitsVsPhi = new TH2F(
761  "h_ele_foundHitsVsPhi", "ele track # found hits vs phi", nbinphi2D, phimin, phimax, nbinfhits, 0., fhitsmax);
763  new TH2F("h_ele_foundHitsVsPt", "ele track # found hits vs pt", nbinpt2D, 0., ptmax, nbinfhits, 0., fhitsmax);
764  h_ele_lostHits = new TH1F("h_ele_lostHits", "ele track # lost hits", 5, 0., 5.);
765  h_ele_lostHitsVsEta = new TH2F(
766  "h_ele_lostHitsVsEta", "ele track # lost hits vs eta", nbineta2D, etamin, etamax, nbinlhits, 0., lhitsmax);
767  h_ele_lostHitsVsPhi = new TH2F(
768  "h_ele_lostHitsVsPhi", "ele track # lost hits vs eta", nbinphi2D, phimin, phimax, nbinlhits, 0., lhitsmax);
770  new TH2F("h_ele_lostHitsVsPt", "ele track # lost hits vs eta", nbinpt2D, 0., ptmax, nbinlhits, 0., lhitsmax);
771  h_ele_chi2 = new TH1F("h_ele_chi2", "ele track #chi^{2}", 100, 0., 15.);
772  h_ele_chi2VsEta = new TH2F("h_ele_chi2VsEta", "ele track #chi^{2} vs eta", nbineta2D, etamin, etamax, 50, 0., 15.);
773  h_ele_chi2VsPhi = new TH2F("h_ele_chi2VsPhi", "ele track #chi^{2} vs phi", nbinphi2D, phimin, phimax, 50, 0., 15.);
774  h_ele_chi2VsPt = new TH2F("h_ele_chi2VsPt", "ele track #chi^{2} vs pt", nbinpt2D, 0., ptmax, 50, 0., 15.);
775  h_ele_PinMnPout = new TH1F("h_ele_PinMnPout", "ele track inner p - outer p, mean", nbinp, 0., 200.);
776  h_ele_PinMnPout_mode = new TH1F("h_ele_PinMnPout_mode", "ele track inner p - outer p, mode", nbinp, 0., 100.);
777  h_ele_PinMnPoutVsEta_mode = new TH2F("h_ele_PinMnPoutVsEta_mode",
778  "ele track inner p - outer p vs eta, mode",
779  nbineta2D,
780  etamin,
781  etamax,
782  nbinp2D,
783  0.,
784  100.);
785  h_ele_PinMnPoutVsPhi_mode = new TH2F("h_ele_PinMnPoutVsPhi_mode",
786  "ele track inner p - outer p vs phi, mode",
787  nbinphi2D,
788  phimin,
789  phimax,
790  nbinp2D,
791  0.,
792  100.);
793  h_ele_PinMnPoutVsPt_mode = new TH2F(
794  "h_ele_PinMnPoutVsPt_mode", "ele track inner p - outer p vs pt, mode", nbinpt2D, 0., ptmax, nbinp2D, 0., 100.);
795  h_ele_PinMnPoutVsE_mode = new TH2F(
796  "h_ele_PinMnPoutVsE_mode", "ele track inner p - outer p vs E, mode", nbinp2D, 0., 200., nbinp2D, 0., 100.);
797  h_ele_PinMnPoutVsChi2_mode = new TH2F(
798  "h_ele_PinMnPoutVsChi2_mode", "ele track inner p - outer p vs track chi2, mode", 50, 0., 20., nbinp2D, 0., 100.);
799  h_ele_outerP = new TH1F("h_ele_outerP", "ele track outer p, mean", nbinp, 0., pmax);
800  h_ele_outerP_mode = new TH1F("h_ele_outerP_mode", "ele track outer p, mode", nbinp, 0., pmax);
802  new TH2F("h_ele_outerPVsEta_mode", "ele track outer p vs eta mode", nbineta2D, etamin, etamax, 50, 0., pmax);
803  h_ele_outerPt = new TH1F("h_ele_outerPt", "ele track outer p_{T}, mean", nbinpt, 0., ptmax);
804  h_ele_outerPt_mode = new TH1F("h_ele_outerPt_mode", "ele track outer p_{T}, mode", nbinpt, 0., ptmax);
805  h_ele_outerPtVsEta_mode = new TH2F(
806  "h_ele_outerPtVsEta_mode", "ele track outer p_{T} vs eta, mode", nbineta2D, etamin, etamax, nbinpt2D, 0., ptmax);
807  h_ele_outerPtVsPhi_mode = new TH2F(
808  "h_ele_outerPtVsPhi_mode", "ele track outer p_{T} vs phi, mode", nbinphi2D, phimin, phimax, nbinpt2D, 0., ptmax);
810  new TH2F("h_ele_outerPtVsPt_mode", "ele track outer p_{T} vs pt, mode", nbinpt2D, 0., 100., nbinpt2D, 0., ptmax);
811 
812  // matched electrons,cluster-track matching
813  h_ele_EoP = new TH1F("h_ele_EoP", "ele E/P_{vertex}", nbineop, 0., eopmax);
814  h_ele_EoP->Sumw2();
815  h_ele_EoP_eg = new TH1F("h_ele_EoP_eg", "ele E/P_{vertex}, ecal driven", nbineop, 0., eopmax);
816  h_ele_EoP_eg->Sumw2();
817  h_ele_EoP_barrel = new TH1F("h_ele_EoP_barrel", "ele E/P_{vertex} barrel", nbineop, 0., eopmax);
818  h_ele_EoP_barrel->Sumw2();
819  h_ele_EoP_eg_barrel = new TH1F("h_ele_EoP_eg_barrel", "ele E/P_{vertex}, ecal driven barrel", nbineop, 0., eopmax);
820  h_ele_EoP_eg_barrel->Sumw2();
821  h_ele_EoP_endcaps = new TH1F("h_ele_EoP_endcaps", "ele E/P_{vertex} endcaps", nbineop, 0., eopmax);
822  h_ele_EoP_endcaps->Sumw2();
823  h_ele_EoP_eg_endcaps = new TH1F("h_ele_EoP_eg_endcaps", "ele E/P_{vertex}, ecal driven endcaps", nbineop, 0., eopmax);
824  h_ele_EoP_eg_endcaps->Sumw2();
826  new TH2F("h_ele_EoPVsEta", "ele E/P_{vertex} vs eta", nbineta2D, etamin, etamax, nbineop2D, 0., eopmaxsht);
828  new TH2F("h_ele_EoPVsPhi", "ele E/P_{vertex} vs phi", nbinphi2D, phimin, phimax, nbineop2D, 0., eopmaxsht);
829  h_ele_EoPVsE = new TH2F("h_ele_EoPVsE", "ele E/P_{vertex} vs E", 50, 0., pmax, 50, 0., 5.);
830  h_ele_EseedOP = new TH1F("h_ele_EseedOP", "ele E_{seed}/P_{vertex}", nbineop, 0., eopmax);
831  h_ele_EseedOP->Sumw2();
832  h_ele_EseedOP_eg = new TH1F("h_ele_EseedOP_eg", "ele E_{seed}/P_{vertex}, ecal driven", nbineop, 0., eopmax);
833  h_ele_EseedOP_eg->Sumw2();
834  h_ele_EseedOP_barrel = new TH1F("h_ele_EseedOP_barrel", "ele E_{seed}/P_{vertex} barrel", nbineop, 0., eopmax);
835  h_ele_EseedOP_barrel->Sumw2();
837  new TH1F("h_ele_EseedOP_eg_barrel", "ele E_{seed}/P_{vertex}, ecal driven barrel", nbineop, 0., eopmax);
838  h_ele_EseedOP_eg_barrel->Sumw2();
839  h_ele_EseedOP_endcaps = new TH1F("h_ele_EseedOP_endcaps", "ele E_{seed}/P_{vertex} endcaps", nbineop, 0., eopmax);
840  h_ele_EseedOP_endcaps->Sumw2();
842  new TH1F("h_ele_EseedOP_eg_endcaps", "ele E_{seed}/P_{vertex}, ecal driven, endcaps", nbineop, 0., eopmax);
843  h_ele_EseedOP_eg_endcaps->Sumw2();
844  h_ele_EseedOPVsEta = new TH2F(
845  "h_ele_EseedOPVsEta", "ele E_{seed}/P_{vertex} vs eta", nbineta2D, etamin, etamax, nbineop2D, 0., eopmaxsht);
846  h_ele_EseedOPVsPhi = new TH2F(
847  "h_ele_EseedOPVsPhi", "ele E_{seed}/P_{vertex} vs phi", nbinphi2D, phimin, phimax, nbineop2D, 0., eopmaxsht);
848  h_ele_EseedOPVsE = new TH2F("h_ele_EseedOPVsE", "ele E_{seed}/P_{vertex} vs E", 50, 0., pmax, 50, 0., 5.);
849  h_ele_EoPout = new TH1F("h_ele_EoPout", "ele E_{seed}/P_{out}", nbineop, 0., eopmax);
850  h_ele_EoPout->Sumw2();
851  h_ele_EoPout_eg = new TH1F("h_ele_EoPout_eg", "ele E_{seed}/P_{out}, ecal driven", nbineop, 0., eopmax);
852  h_ele_EoPout_eg->Sumw2();
853  h_ele_EoPout_barrel = new TH1F("h_ele_EoPout_barrel", "ele E_{seed}/P_{out} barrel", nbineop, 0., eopmax);
854  h_ele_EoPout_barrel->Sumw2();
856  new TH1F("h_ele_EoPout_eg_barrel", "ele E_{seed}/P_{out}, ecal driven, barrel", nbineop, 0., eopmax);
857  h_ele_EoPout_eg_barrel->Sumw2();
858  h_ele_EoPout_endcaps = new TH1F("h_ele_EoPout_endcaps", "ele E_{seed}/P_{out} endcaps", nbineop, 0., eopmax);
859  h_ele_EoPout_endcaps->Sumw2();
861  new TH1F("h_ele_EoPout_eg_endcaps", "ele E_{seed}/P_{out}, ecal driven, endcaps", nbineop, 0., eopmax);
862  h_ele_EoPout_eg_endcaps->Sumw2();
864  new TH2F("h_ele_EoPoutVsEta", "ele E/P_{out} vs eta", nbineta2D, etamin, etamax, nbineop2D, 0., eopmaxsht);
866  new TH2F("h_ele_EoPoutVsPhi", "ele E/P_{out} vs phi", nbinphi2D, phimin, phimax, nbineop2D, 0., eopmaxsht);
867  h_ele_EoPoutVsE = new TH2F("h_ele_EoPoutVsE", "ele E/P_{out} vs E", nbinp2D, 0., pmax, nbineop2D, 0., eopmaxsht);
868  h_ele_EeleOPout = new TH1F("h_ele_EeleOPout", "ele E_{ele}/P_{out}", nbineop, 0., eopmax);
869  h_ele_EeleOPout->Sumw2();
870  h_ele_EeleOPout_eg = new TH1F("h_ele_EeleOPout_eg", "ele E_{ele}/P_{out}, ecal driven", nbineop, 0., eopmax);
871  h_ele_EeleOPout_eg->Sumw2();
872  h_ele_EeleOPout_barrel = new TH1F("h_ele_EeleOPout_barrel", "ele E_{ele}/P_{out} barrel", nbineop, 0., eopmax);
873  h_ele_EeleOPout_barrel->Sumw2();
875  new TH1F("h_ele_EeleOPout_eg_barrel", "ele E_{ele}/P_{out}, ecal driven, barrel", nbineop, 0., eopmax);
876  h_ele_EeleOPout_eg_barrel->Sumw2();
877  h_ele_EeleOPout_endcaps = new TH1F("h_ele_EeleOPout_endcaps", "ele E_{ele}/P_{out} endcaps", nbineop, 0., eopmax);
878  h_ele_EeleOPout_endcaps->Sumw2();
880  new TH1F("h_ele_EeleOPout_eg_endcaps", "ele E_{ele}/P_{out}, ecal driven, endcaps", nbineop, 0., eopmax);
882  h_ele_EeleOPoutVsEta = new TH2F(
883  "h_ele_EeleOPoutVsEta", "ele E_{ele}/P_{out} vs eta", nbineta2D, etamin, etamax, nbineop2D, 0., eopmaxsht);
884  h_ele_EeleOPoutVsPhi = new TH2F(
885  "h_ele_EeleOPoutVsPhi", "ele E_{ele}/P_{out} vs phi", nbinphi2D, phimin, phimax, nbineop2D, 0., eopmaxsht);
887  new TH2F("h_ele_EeleOPoutVsE", "ele E_{ele}/P_{out} vs E", nbinp2D, 0., pmax, nbineop2D, 0., eopmaxsht);
888  h_ele_dEtaSc_propVtx = new TH1F(
889  "h_ele_dEtaSc_propVtx", "ele #eta_{sc} - #eta_{tr}, prop from vertex", nbindetamatch, detamatchmin, detamatchmax);
890  h_ele_dEtaSc_propVtx->Sumw2();
891  h_ele_dEtaSc_propVtx_eg = new TH1F("h_ele_dEtaSc_propVtx_eg",
892  "ele #eta_{sc} - #eta_{tr}, prop from vertex, ecal driven",
894  detamatchmin,
895  detamatchmax);
896  h_ele_dEtaSc_propVtx_eg->Sumw2();
897  h_ele_dEtaSc_propVtx_barrel = new TH1F("h_ele_dEtaSc_propVtx_barrel",
898  "ele #eta_{sc} - #eta_{tr}, prop from vertex, barrel",
900  detamatchmin,
901  detamatchmax);
903  h_ele_dEtaSc_propVtx_eg_barrel = new TH1F("h_ele_dEtaSc_propVtx_eg_barrel",
904  "ele #eta_{sc} - #eta_{tr}, prop from vertex, ecal driven, barrel",
906  detamatchmin,
907  detamatchmax);
909  h_ele_dEtaSc_propVtx_endcaps = new TH1F("h_ele_dEtaSc_propVtx_endcaps",
910  "ele #eta_{sc} - #eta_{tr}, prop from vertex, endcaps",
912  detamatchmin,
913  detamatchmax);
915  h_ele_dEtaSc_propVtx_eg_endcaps = new TH1F("h_ele_dEtaSc_propVtx_eg_endcaps",
916  "ele #eta_{sc} - #eta_{tr}, prop from vertex, ecal driven, endcaps",
918  detamatchmin,
919  detamatchmax);
921  h_ele_dEtaScVsEta_propVtx = new TH2F("h_ele_dEtaScVsEta_propVtx",
922  "ele #eta_{sc} - #eta_{tr} vs eta, prop from vertex",
923  nbineta2D,
924  etamin,
925  etamax,
927  detamatchmin,
928  detamatchmax);
929  h_ele_dEtaScVsPhi_propVtx = new TH2F("h_ele_dEtaScVsPhi_propVtx",
930  "ele #eta_{sc} - #eta_{tr} vs phi, prop from vertex",
931  nbinphi2D,
932  phimin,
933  phimax,
935  detamatchmin,
936  detamatchmax);
937  h_ele_dEtaScVsPt_propVtx = new TH2F("h_ele_dEtaScVsPt_propVtx",
938  "ele #eta_{sc} - #eta_{tr} vs pt, prop from vertex",
939  nbinpt2D,
940  0.,
941  ptmax,
943  detamatchmin,
944  detamatchmax);
945  h_ele_dPhiSc_propVtx = new TH1F(
946  "h_ele_dPhiSc_propVtx", "ele #phi_{sc} - #phi_{tr}, prop from vertex", nbindphimatch, dphimatchmin, dphimatchmax);
947  h_ele_dPhiSc_propVtx->Sumw2();
948  h_ele_dPhiSc_propVtx_eg = new TH1F("h_ele_dPhiSc_propVtx_eg",
949  "ele #phi_{sc} - #phi_{tr}, prop from vertex, ecal driven",
951  dphimatchmin,
952  dphimatchmax);
953  h_ele_dPhiSc_propVtx_eg->Sumw2();
954  h_ele_dPhiSc_propVtx_barrel = new TH1F("h_ele_dPhiSc_propVtx_barrel",
955  "ele #phi_{sc} - #phi_{tr}, prop from vertex, barrel",
957  dphimatchmin,
958  dphimatchmax);
960  h_ele_dPhiSc_propVtx_eg_barrel = new TH1F("h_ele_dPhiSc_propVtx_eg_barrel",
961  "ele #phi_{sc} - #phi_{tr}, prop from vertex, ecal driven, barrel",
963  dphimatchmin,
964  dphimatchmax);
966  h_ele_dPhiSc_propVtx_endcaps = new TH1F("h_ele_dPhiSc_propVtx_endcaps",
967  "ele #phi_{sc} - #phi_{tr}, prop from vertex, endcaps",
969  dphimatchmin,
970  dphimatchmax);
972  h_ele_dPhiSc_propVtx_eg_endcaps = new TH1F("h_ele_dPhiSc_propVtx_eg_endcaps",
973  "ele #phi_{sc} - #phi_{tr}, prop from vertex, ecal driven, endcaps",
975  dphimatchmin,
976  dphimatchmax);
978  h_ele_dPhiScVsEta_propVtx = new TH2F("h_ele_dPhiScVsEta_propVtx",
979  "ele #phi_{sc} - #phi_{tr} vs eta, prop from vertex",
980  nbineta2D,
981  etamin,
982  etamax,
984  dphimatchmin,
985  dphimatchmax);
986  h_ele_dPhiScVsPhi_propVtx = new TH2F("h_ele_dPhiScVsPhi_propVtx",
987  "ele #phi_{sc} - #phi_{tr} vs phi, prop from vertex",
988  nbinphi2D,
989  phimin,
990  phimax,
992  dphimatchmin,
993  dphimatchmax);
994  h_ele_dPhiScVsPt_propVtx = new TH2F("h_ele_dPhiScVsPt_propVtx",
995  "ele #phi_{sc} - #phi_{tr} vs pt, prop from vertex",
996  nbinpt2D,
997  0.,
998  ptmax,
1000  dphimatchmin,
1001  dphimatchmax);
1002  h_ele_dEtaCl_propOut = new TH1F("h_ele_dEtaCl_propOut",
1003  "ele #eta_{cl} - #eta_{tr}, prop from outermost",
1004  nbindetamatch,
1005  detamatchmin,
1006  detamatchmax);
1007  h_ele_dEtaCl_propOut->Sumw2();
1008  h_ele_dEtaCl_propOut_eg = new TH1F("h_ele_dEtaCl_propOut_eg",
1009  "ele #eta_{cl} - #eta_{tr}, prop from outermost, ecal driven",
1010  nbindetamatch,
1011  detamatchmin,
1012  detamatchmax);
1013  h_ele_dEtaCl_propOut_eg->Sumw2();
1014  h_ele_dEtaCl_propOut_barrel = new TH1F("h_ele_dEtaCl_propOut_barrel",
1015  "ele #eta_{cl} - #eta_{tr}, prop from outermost, barrel",
1016  nbindetamatch,
1017  detamatchmin,
1018  detamatchmax);
1019  h_ele_dEtaCl_propOut_barrel->Sumw2();
1020  h_ele_dEtaCl_propOut_eg_barrel = new TH1F("h_ele_dEtaCl_propOut_eg_barrel",
1021  "ele #eta_{cl} - #eta_{tr}, prop from outermost, ecal driven, barrel",
1022  nbindetamatch,
1023  detamatchmin,
1024  detamatchmax);
1026  h_ele_dEtaCl_propOut_endcaps = new TH1F("h_ele_dEtaCl_propOut_endcaps",
1027  "ele #eta_{cl} - #eta_{tr}, prop from outermost, endcaps",
1028  nbindetamatch,
1029  detamatchmin,
1030  detamatchmax);
1032  h_ele_dEtaCl_propOut_eg_endcaps = new TH1F("h_ele_dEtaCl_propOut_eg_endcaps",
1033  "ele #eta_{cl} - #eta_{tr}, prop from outermost, ecal driven, endcaps",
1034  nbindetamatch,
1035  detamatchmin,
1036  detamatchmax);
1038  h_ele_dEtaClVsEta_propOut = new TH2F("h_ele_dEtaClVsEta_propOut",
1039  "ele #eta_{cl} - #eta_{tr} vs eta, prop from out",
1040  nbineta2D,
1041  etamin,
1042  etamax,
1044  detamatchmin,
1045  detamatchmax);
1046  h_ele_dEtaClVsPhi_propOut = new TH2F("h_ele_dEtaClVsPhi_propOut",
1047  "ele #eta_{cl} - #eta_{tr} vs phi, prop from out",
1048  nbinphi2D,
1049  phimin,
1050  phimax,
1052  detamatchmin,
1053  detamatchmax);
1054  h_ele_dEtaClVsPt_propOut = new TH2F("h_ele_dEtaScVsPt_propOut",
1055  "ele #eta_{cl} - #eta_{tr} vs pt, prop from out",
1056  nbinpt2D,
1057  0.,
1058  ptmax,
1060  detamatchmin,
1061  detamatchmax);
1062  h_ele_dPhiCl_propOut = new TH1F("h_ele_dPhiCl_propOut",
1063  "ele #phi_{cl} - #phi_{tr}, prop from outermost",
1064  nbindphimatch,
1065  dphimatchmin,
1066  dphimatchmax);
1067  h_ele_dPhiCl_propOut->Sumw2();
1068  h_ele_dPhiCl_propOut_eg = new TH1F("h_ele_dPhiCl_propOut_eg",
1069  "ele #phi_{cl} - #phi_{tr}, prop from outermost, ecal driven",
1070  nbindphimatch,
1071  dphimatchmin,
1072  dphimatchmax);
1073  h_ele_dPhiCl_propOut_eg->Sumw2();
1074  h_ele_dPhiCl_propOut_barrel = new TH1F("h_ele_dPhiCl_propOut_barrel",
1075  "ele #phi_{cl} - #phi_{tr}, prop from outermost, barrel",
1076  nbindphimatch,
1077  dphimatchmin,
1078  dphimatchmax);
1079  h_ele_dPhiCl_propOut_barrel->Sumw2();
1080  h_ele_dPhiCl_propOut_eg_barrel = new TH1F("h_ele_dPhiCl_propOut_eg_barrel",
1081  "ele #phi_{cl} - #phi_{tr}, prop from outermost, ecal driven, barrel",
1082  nbindphimatch,
1083  dphimatchmin,
1084  dphimatchmax);
1086  h_ele_dPhiCl_propOut_endcaps = new TH1F("h_ele_dPhiCl_propOut_endcaps",
1087  "ele #phi_{cl} - #phi_{tr}, prop from outermost, endcaps",
1088  nbindphimatch,
1089  dphimatchmin,
1090  dphimatchmax);
1092  h_ele_dPhiCl_propOut_eg_endcaps = new TH1F("h_ele_dPhiCl_propOut_eg_endcaps",
1093  "ele #phi_{cl} - #phi_{tr}, prop from outermost, ecal driven, endcaps",
1094  nbindphimatch,
1095  dphimatchmin,
1096  dphimatchmax);
1098  h_ele_dPhiClVsEta_propOut = new TH2F("h_ele_dPhiClVsEta_propOut",
1099  "ele #phi_{cl} - #phi_{tr} vs eta, prop from out",
1100  nbineta2D,
1101  etamin,
1102  etamax,
1104  dphimatchmin,
1105  dphimatchmax);
1106  h_ele_dPhiClVsPhi_propOut = new TH2F("h_ele_dPhiClVsPhi_propOut",
1107  "ele #phi_{cl} - #phi_{tr} vs phi, prop from out",
1108  nbinphi2D,
1109  phimin,
1110  phimax,
1112  dphimatchmin,
1113  dphimatchmax);
1114  h_ele_dPhiClVsPt_propOut = new TH2F("h_ele_dPhiSClsPt_propOut",
1115  "ele #phi_{cl} - #phi_{tr} vs pt, prop from out",
1116  nbinpt2D,
1117  0.,
1118  ptmax,
1120  dphimatchmin,
1121  dphimatchmax);
1122  h_ele_dEtaEleCl_propOut = new TH1F("h_ele_dEtaEleCl_propOut",
1123  "ele #eta_{EleCl} - #eta_{tr}, prop from outermost",
1124  nbindetamatch,
1125  detamatchmin,
1126  detamatchmax);
1127  h_ele_dEtaEleCl_propOut->Sumw2();
1128  h_ele_dEtaEleCl_propOut_eg = new TH1F("h_ele_dEtaEleCl_propOut_eg",
1129  "ele #eta_{EleCl} - #eta_{tr}, prop from outermost, ecal driven",
1130  nbindetamatch,
1131  detamatchmin,
1132  detamatchmax);
1133  h_ele_dEtaEleCl_propOut_eg->Sumw2();
1134  h_ele_dEtaEleCl_propOut_barrel = new TH1F("h_ele_dEtaEleCl_propOut_barrel",
1135  "ele #eta_{EleCl} - #eta_{tr}, prop from outermost, barrel",
1136  nbindetamatch,
1137  detamatchmin,
1138  detamatchmax);
1140  h_ele_dEtaEleCl_propOut_eg_barrel = new TH1F("h_ele_dEtaEleCl_propOut_eg_barrel",
1141  "ele #eta_{EleCl} - #eta_{tr}, prop from outermost, ecal driven, barrel",
1142  nbindetamatch,
1143  detamatchmin,
1144  detamatchmax);
1146  h_ele_dEtaEleCl_propOut_endcaps = new TH1F("h_ele_dEtaEleCl_propOut_endcaps",
1147  "ele #eta_{EleCl} - #eta_{tr}, prop from outermost, endcaps",
1148  nbindetamatch,
1149  detamatchmin,
1150  detamatchmax);
1153  new TH1F("h_ele_dEtaEleCl_propOut_eg_endcaps",
1154  "ele #eta_{EleCl} - #eta_{tr}, prop from outermost, ecal driven, endcaps",
1155  nbindetamatch,
1156  detamatchmin,
1157  detamatchmax);
1159  h_ele_dEtaEleClVsEta_propOut = new TH2F("h_ele_dEtaEleClVsEta_propOut",
1160  "ele #eta_{EleCl} - #eta_{tr} vs eta, prop from out",
1161  nbineta2D,
1162  etamin,
1163  etamax,
1165  detamatchmin,
1166  detamatchmax);
1167  h_ele_dEtaEleClVsPhi_propOut = new TH2F("h_ele_dEtaEleClVsPhi_propOut",
1168  "ele #eta_{EleCl} - #eta_{tr} vs phi, prop from out",
1169  nbinphi2D,
1170  phimin,
1171  phimax,
1173  detamatchmin,
1174  detamatchmax);
1175  h_ele_dEtaEleClVsPt_propOut = new TH2F("h_ele_dEtaScVsPt_propOut",
1176  "ele #eta_{EleCl} - #eta_{tr} vs pt, prop from out",
1177  nbinpt2D,
1178  0.,
1179  ptmax,
1181  detamatchmin,
1182  detamatchmax);
1183  h_ele_dPhiEleCl_propOut = new TH1F("h_ele_dPhiEleCl_propOut",
1184  "ele #phi_{EleCl} - #phi_{tr}, prop from outermost",
1185  nbindphimatch,
1186  dphimatchmin,
1187  dphimatchmax);
1188  h_ele_dPhiEleCl_propOut->Sumw2();
1189  h_ele_dPhiEleCl_propOut_eg = new TH1F("h_ele_dPhiEleCl_propOut_eg",
1190  "ele #phi_{EleCl} - #phi_{tr}, prop from outermost, ecal driven",
1191  nbindphimatch,
1192  dphimatchmin,
1193  dphimatchmax);
1194  h_ele_dPhiEleCl_propOut_eg->Sumw2();
1195  h_ele_dPhiEleCl_propOut_barrel = new TH1F("h_ele_dPhiEleCl_propOut_barrel",
1196  "ele #phi_{EleCl} - #phi_{tr}, prop from outermost, barrel",
1197  nbindphimatch,
1198  dphimatchmin,
1199  dphimatchmax);
1201  h_ele_dPhiEleCl_propOut_eg_barrel = new TH1F("h_ele_dPhiEleCl_propOut_eg_barrel",
1202  "ele #phi_{EleCl} - #phi_{tr}, prop from outermost, ecal driven, barrel",
1203  nbindphimatch,
1204  dphimatchmin,
1205  dphimatchmax);
1207  h_ele_dPhiEleCl_propOut_endcaps = new TH1F("h_ele_dPhiEleCl_propOut_endcaps",
1208  "ele #phi_{EleCl} - #phi_{tr}, prop from outermost, endcaps",
1209  nbindphimatch,
1210  dphimatchmin,
1211  dphimatchmax);
1214  new TH1F("h_ele_dPhiEleCl_propOut_eg_endcaps",
1215  "ele #phi_{EleCl} - #phi_{tr}, prop from outermost, ecal driven, endcaps",
1216  nbindphimatch,
1217  dphimatchmin,
1218  dphimatchmax);
1220  h_ele_dPhiEleClVsEta_propOut = new TH2F("h_ele_dPhiEleClVsEta_propOut",
1221  "ele #phi_{EleCl} - #phi_{tr} vs eta, prop from out",
1222  nbineta2D,
1223  etamin,
1224  etamax,
1226  dphimatchmin,
1227  dphimatchmax);
1228  h_ele_dPhiEleClVsPhi_propOut = new TH2F("h_ele_dPhiEleClVsPhi_propOut",
1229  "ele #phi_{EleCl} - #phi_{tr} vs phi, prop from out",
1230  nbinphi2D,
1231  phimin,
1232  phimax,
1234  dphimatchmin,
1235  dphimatchmax);
1236  h_ele_dPhiEleClVsPt_propOut = new TH2F("h_ele_dPhiSEleClsPt_propOut",
1237  "ele #phi_{EleCl} - #phi_{tr} vs pt, prop from out",
1238  nbinpt2D,
1239  0.,
1240  ptmax,
1242  dphimatchmin,
1243  dphimatchmax);
1244 
1245  h_ele_HoE = new TH1F("h_ele_HoE", "ele hadronic energy / em energy", nbinhoe, hoemin, hoemax);
1246  h_ele_HoE->Sumw2();
1247  h_ele_HoE_eg = new TH1F("h_ele_HoE_eg", "ele hadronic energy / em energy, ecal driven", nbinhoe, hoemin, hoemax);
1248  h_ele_HoE_eg->Sumw2();
1249  h_ele_HoE_barrel = new TH1F("h_ele_HoE_barrel", "ele hadronic energy / em energy, barrel", nbinhoe, hoemin, hoemax);
1250  h_ele_HoE_barrel->Sumw2();
1252  new TH1F("h_ele_HoE_eg_barrel", "ele hadronic energy / em energy, ecal driven, barrel", nbinhoe, hoemin, hoemax);
1253  h_ele_HoE_eg_barrel->Sumw2();
1255  new TH1F("h_ele_HoE_endcaps", "ele hadronic energy / em energy, endcaps", nbinhoe, hoemin, hoemax);
1256  h_ele_HoE_endcaps->Sumw2();
1257  h_ele_HoE_eg_endcaps = new TH1F(
1258  "h_ele_HoE_eg_endcaps", "ele hadronic energy / em energy, ecal driven, endcaps", nbinhoe, hoemin, hoemax);
1259  h_ele_HoE_eg_endcaps->Sumw2();
1260  h_ele_HoE_fiducial = new TH1F("h_ele_HoE_fiducial", "ele hadronic energy / em energy", nbinhoe, hoemin, hoemax);
1261  h_ele_HoEVsEta = new TH2F(
1262  "h_ele_HoEVsEta", "ele hadronic energy / em energy vs eta", nbineta, etamin, etamax, nbinhoe, hoemin, hoemax);
1263  h_ele_HoEVsPhi = new TH2F(
1264  "h_ele_HoEVsPhi", "ele hadronic energy / em energy vs phi", nbinphi2D, phimin, phimax, nbinhoe, hoemin, hoemax);
1265  h_ele_HoEVsE =
1266  new TH2F("h_ele_HoEVsE", "ele hadronic energy / em energy vs E", nbinp, 0., 300., nbinhoe, hoemin, hoemax);
1267 
1268  h_ele_seed_dphi2_ = new TH1F("h_ele_seedDphi2", "ele seed dphi 2nd layer", 50, -0.003, +0.003);
1270  new TH2F("h_ele_seedDphi2VsEta", "ele seed dphi 2nd layer vs eta", nbineta2D, etamin, etamax, 50, -0.003, +0.003);
1272  new TH2F("h_ele_seedDphi2VsPt", "ele seed dphi 2nd layer vs pt", nbinpt2D, 0., ptmax, 50, -0.003, +0.003);
1273  h_ele_seed_drz2_ = new TH1F("h_ele_seedDrz2", "ele seed dr/dz 2nd layer", 50, -0.03, +0.03);
1275  new TH2F("h_ele_seedDrz2VsEta", "ele seed dr/dz 2nd layer vs eta", nbineta2D, etamin, etamax, 50, -0.03, +0.03);
1277  new TH2F("h_ele_seedDrz2VsPt", "ele seed dr/dz 2nd layer vs pt", nbinpt2D, 0., ptmax, 50, -0.03, +0.03);
1278  h_ele_seed_subdet2_ = new TH1F("h_ele_seedSubdet2", "ele seed subdet 2nd layer", 10, 0., 10.);
1279 
1280  // classes
1281  h_ele_classes = new TH1F("h_ele_classes", "electron classes", 20, 0.0, 20.);
1282  h_ele_eta = new TH1F("h_ele_eta", "ele electron eta", nbineta / 2, 0.0, etamax);
1283  h_ele_eta_golden = new TH1F("h_ele_eta_golden", "ele electron eta golden", nbineta / 2, 0.0, etamax);
1284  h_ele_eta_bbrem = new TH1F("h_ele_eta_bbrem", "ele electron eta bbrem", nbineta / 2, 0.0, etamax);
1285  h_ele_eta_narrow = new TH1F("h_ele_eta_narrow", "ele electron eta narrow", nbineta / 2, 0.0, etamax);
1286  h_ele_eta_shower = new TH1F("h_ele_eta_show", "el, electron eta showering", nbineta / 2, 0.0, etamax);
1287  h_ele_PinVsPoutGolden_mode = new TH2F(
1288  "h_ele_PinVsPoutGolden_mode", "ele track inner p vs outer p, golden, mode", nbinp2D, 0., pmax, 50, 0., pmax);
1289  h_ele_PinVsPoutShowering_mode = new TH2F("h_ele_PinVsPoutShowering_mode",
1290  "ele track inner p vs outer p vs eta, showering, mode",
1291  nbinp2D,
1292  0.,
1293  pmax,
1294  50,
1295  0.,
1296  pmax);
1297  h_ele_PinVsPoutGolden_mean = new TH2F(
1298  "h_ele_PinVsPoutGolden_mean", "ele track inner p vs outer p, golden, mean", nbinp2D, 0., pmax, 50, 0., pmax);
1299  h_ele_PinVsPoutShowering_mean = new TH2F(
1300  "h_ele_PinVsPoutShowering_mean", "ele track inner p vs outer p, showering, mean", nbinp2D, 0., pmax, 50, 0., pmax);
1301  h_ele_PtinVsPtoutGolden_mode = new TH2F("h_ele_PtinVsPtoutGolden_mode",
1302  "ele track inner pt vs outer pt, golden, mode",
1303  nbinpt2D,
1304  0.,
1305  ptmax,
1306  50,
1307  0.,
1308  ptmax);
1309  h_ele_PtinVsPtoutShowering_mode = new TH2F("h_ele_PtinVsPtoutShowering_mode",
1310  "ele track inner pt vs outer pt, showering, mode",
1311  nbinpt2D,
1312  0.,
1313  ptmax,
1314  50,
1315  0.,
1316  ptmax);
1317  h_ele_PtinVsPtoutGolden_mean = new TH2F("h_ele_PtinVsPtoutGolden_mean",
1318  "ele track inner pt vs outer pt, golden, mean",
1319  nbinpt2D,
1320  0.,
1321  ptmax,
1322  50,
1323  0.,
1324  ptmax);
1325  h_ele_PtinVsPtoutShowering_mean = new TH2F("h_ele_PtinVsPtoutShowering_mean",
1326  "ele track inner pt vs outer pt, showering, mean",
1327  nbinpt2D,
1328  0.,
1329  ptmax,
1330  50,
1331  0.,
1332  ptmax);
1334  "h_scl_EoEmatchingObject golden, barrel", "ele SC energy over matching jet energy, golden, barrel", 100, 0.2, 1.2);
1335  histSclEoEmatchingObjectGolden_endcaps = new TH1F("h_scl_EoEmatchingObject golden, endcaps",
1336  "ele SC energy over matching jet energy, golden, endcaps",
1337  100,
1338  0.2,
1339  1.2);
1340  histSclEoEmatchingObjectShowering_barrel = new TH1F("h_scl_EoEmatchingObject showering, barrel",
1341  "ele SC energy over matching jet energy, showering, barrel",
1342  100,
1343  0.2,
1344  1.2);
1345  histSclEoEmatchingObjectShowering_endcaps = new TH1F("h_scl_EoEmatchingObject showering, endcaps",
1346  "ele SC energy over matching jet energy, showering, endcaps",
1347  100,
1348  0.2,
1349  1.2);
1350 
1351  // isolation
1352  h_ele_tkSumPt_dr03 = new TH1F("h_ele_tkSumPt_dr03", "tk isolation sum, dR=0.3", 100, 0.0, 20.);
1353  h_ele_ecalRecHitSumEt_dr03 = new TH1F("h_ele_ecalRecHitSumEt_dr03", "ecal isolation sum, dR=0.3", 100, 0.0, 20.);
1355  new TH1F("h_ele_hcalDepth1TowerSumEt_dr03", "hcal depth1 isolation sum, dR=0.3", 100, 0.0, 20.);
1357  new TH1F("h_ele_hcalDepth2TowerSumEt_dr03", "hcal depth2 isolation sum, dR=0.3", 100, 0.0, 20.);
1358  h_ele_tkSumPt_dr04 = new TH1F("h_ele_tkSumPt_dr04", "hcal isolation sum", 100, 0.0, 20.);
1359  h_ele_ecalRecHitSumEt_dr04 = new TH1F("h_ele_ecalRecHitSumEt_dr04", "ecal isolation sum, dR=0.4", 100, 0.0, 20.);
1361  new TH1F("h_ele_hcalDepth1TowerSumEt_dr04", "hcal depth1 isolation sum, dR=0.4", 100, 0.0, 20.);
1363  new TH1F("h_ele_hcalDepth2TowerSumEt_dr04", "hcal depth2 isolation sum, dR=0.4", 100, 0.0, 20.);
1364 
1365  // fbrem
1366  h_ele_fbrem = new TH1F("h_ele_fbrem", "ele brem fraction, mode", 100, 0., 1.);
1368  new TProfile("h_ele_fbremvsEtamode", "mean ele brem fraction vs eta, mode", nbineta2D, etamin, etamax, 0., 1.);
1370  new TProfile("h_ele_fbremvsEtamean", "mean ele brem fraction vs eta, mean", nbineta2D, etamin, etamax, 0., 1.);
1371 
1372  // e/g et pflow electrons
1373  h_ele_mva = new TH1F("h_ele_mva", "ele mva", 100, -1., 1.);
1374  h_ele_provenance = new TH1F("h_ele_provenance", "ele provenance", 5, -2., 3.);
1375 
1376  // histos titles
1377  h_matchingObjectNum->GetXaxis()->SetTitle("N_{GenJet}");
1378  h_matchingObjectNum->GetYaxis()->SetTitle("Events");
1379  h_matchingObjectEta->GetXaxis()->SetTitle("#eta_{GenJet}");
1380  h_matchingObjectEta->GetYaxis()->SetTitle("Events");
1381  h_matchingObjectP->GetXaxis()->SetTitle("E_{GenJet} (GeV)");
1382  h_matchingObjectP->GetYaxis()->SetTitle("Events");
1383  h_ele_foundHits->GetXaxis()->SetTitle("N_{hits}");
1384  h_ele_foundHits->GetYaxis()->SetTitle("Events");
1385  h_ele_ambiguousTracks->GetXaxis()->SetTitle("N_{ambiguous tracks}");
1386  h_ele_ambiguousTracks->GetYaxis()->SetTitle("Events");
1387  h_ele_lostHits->GetXaxis()->SetTitle("N_{lost hits}");
1388  h_ele_lostHits->GetYaxis()->SetTitle("Events");
1389  h_ele_chi2->GetXaxis()->SetTitle("#Chi^{2}");
1390  h_ele_chi2->GetYaxis()->SetTitle("Events");
1391  h_ele_charge->GetXaxis()->SetTitle("charge");
1392  h_ele_charge->GetYaxis()->SetTitle("Events");
1393  h_ele_vertexP->GetXaxis()->SetTitle("p_{vertex} (GeV/c)");
1394  h_ele_vertexP->GetYaxis()->SetTitle("Events");
1395  h_ele_vertexPt->GetXaxis()->SetTitle("p_{T vertex} (GeV/c)");
1396  h_ele_vertexPt->GetYaxis()->SetTitle("Events");
1397  h_ele_vertexEta->GetXaxis()->SetTitle("#eta");
1398  h_ele_vertexEta->GetYaxis()->SetTitle("Events");
1399  h_ele_vertexPhi->GetXaxis()->SetTitle("#phi (rad)");
1400  h_ele_vertexPhi->GetYaxis()->SetTitle("Events");
1401  h_ele_PoPmatchingObject->GetXaxis()->SetTitle("P/P_{gen jet}");
1402  h_ele_PoPmatchingObject->GetYaxis()->SetTitle("Events");
1403  h_ele_PoPmatchingObject_barrel->GetXaxis()->SetTitle("P/P_{gen jet}");
1404  h_ele_PoPmatchingObject_barrel->GetYaxis()->SetTitle("Events");
1405  h_ele_PoPmatchingObject_endcaps->GetXaxis()->SetTitle("P/P_{gen jet}");
1406  h_ele_PoPmatchingObject_endcaps->GetYaxis()->SetTitle("Events");
1407  histSclSigIEtaIEta_->GetXaxis()->SetTitle("#sigma_{i#eta i#eta}");
1408  histSclSigIEtaIEta_->GetYaxis()->SetTitle("Events");
1409  histSclSigIEtaIEta_barrel_->GetXaxis()->SetTitle("#sigma_{i#eta i#eta}");
1410  histSclSigIEtaIEta_barrel_->GetYaxis()->SetTitle("Events");
1411  histSclSigIEtaIEta_endcaps_->GetXaxis()->SetTitle("#sigma_{i#eta i#eta}");
1412  histSclSigIEtaIEta_endcaps_->GetYaxis()->SetTitle("Events");
1413  histSclE1x5_->GetXaxis()->SetTitle("E1x5 (GeV)");
1414  histSclE1x5_->GetYaxis()->SetTitle("Events");
1415  histSclE1x5_barrel_->GetXaxis()->SetTitle("E1x5 (GeV)");
1416  histSclE1x5_barrel_->GetYaxis()->SetTitle("Events");
1417  histSclE1x5_endcaps_->GetXaxis()->SetTitle("E1x5 (GeV)");
1418  histSclE1x5_endcaps_->GetYaxis()->SetTitle("Events");
1419  histSclE2x5max_->GetXaxis()->SetTitle("E2x5 (GeV)");
1420  histSclE2x5max_->GetYaxis()->SetTitle("Events");
1421  histSclE2x5max_barrel_->GetXaxis()->SetTitle("E2x5 (GeV)");
1422  histSclE2x5max_barrel_->GetYaxis()->SetTitle("Events");
1423  histSclE2x5max_endcaps_->GetXaxis()->SetTitle("E2x5 (GeV)");
1424  histSclE2x5max_endcaps_->GetYaxis()->SetTitle("Events");
1425  histSclE5x5_->GetXaxis()->SetTitle("E5x5 (GeV)");
1426  histSclE5x5_->GetYaxis()->SetTitle("Events");
1427  histSclE5x5_barrel_->GetXaxis()->SetTitle("E5x5 (GeV)");
1428  histSclE5x5_barrel_->GetYaxis()->SetTitle("Events");
1429  histSclE5x5_endcaps_->GetXaxis()->SetTitle("E5x5 (GeV)");
1430  histSclE5x5_endcaps_->GetYaxis()->SetTitle("Events");
1431  h_ele_EtaMnEtamatchingObject->GetXaxis()->SetTitle("#eta_{rec} - #eta_{jet}");
1432  h_ele_EtaMnEtamatchingObject->GetYaxis()->SetTitle("Events");
1433  h_ele_PhiMnPhimatchingObject->GetXaxis()->SetTitle("#phi_{rec} - #phi_{jet} (rad)");
1434  h_ele_PhiMnPhimatchingObject->GetYaxis()->SetTitle("Events");
1435  h_ele_PinMnPout->GetXaxis()->SetTitle("P_{vertex} - P_{out} (GeV/c)");
1436  h_ele_PinMnPout->GetYaxis()->SetTitle("Events");
1437  h_ele_PinMnPout_mode->GetXaxis()->SetTitle("P_{vertex} - P_{out}, mode (GeV/c)");
1438  h_ele_PinMnPout_mode->GetYaxis()->SetTitle("Events");
1439  h_ele_outerP->GetXaxis()->SetTitle("P_{out} (GeV/c)");
1440  h_ele_outerP->GetYaxis()->SetTitle("Events");
1441  h_ele_outerP_mode->GetXaxis()->SetTitle("P_{out} (GeV/c)");
1442  h_ele_outerP_mode->GetYaxis()->SetTitle("Events");
1443  h_ele_outerPt->GetXaxis()->SetTitle("P_{T out} (GeV/c)");
1444  h_ele_outerPt->GetYaxis()->SetTitle("Events");
1445  h_ele_outerPt_mode->GetXaxis()->SetTitle("P_{T out} (GeV/c)");
1446  h_ele_outerPt_mode->GetYaxis()->SetTitle("Events");
1447  h_ele_EoP->GetXaxis()->SetTitle("E/P_{vertex}");
1448  h_ele_EoP->GetYaxis()->SetTitle("Events");
1449  h_ele_EseedOP->GetXaxis()->SetTitle("E_{seed}/P_{vertex}");
1450  h_ele_EseedOP->GetYaxis()->SetTitle("Events");
1451  h_ele_EoPout->GetXaxis()->SetTitle("E_{seed}/P_{out}");
1452  h_ele_EoPout->GetYaxis()->SetTitle("Events");
1453  h_ele_EeleOPout->GetXaxis()->SetTitle("E_{ele}/P_{out}");
1454  h_ele_EeleOPout->GetYaxis()->SetTitle("Events");
1455  h_ele_EoP_barrel->GetXaxis()->SetTitle("E/P_{vertex}");
1456  h_ele_EoP_barrel->GetYaxis()->SetTitle("Events");
1457  h_ele_EseedOP_barrel->GetXaxis()->SetTitle("E_{seed}/P_{vertex}");
1458  h_ele_EseedOP_barrel->GetYaxis()->SetTitle("Events");
1459  h_ele_EoPout_barrel->GetXaxis()->SetTitle("E_{seed}/P_{out}");
1460  h_ele_EoPout_barrel->GetYaxis()->SetTitle("Events");
1461  h_ele_EeleOPout_barrel->GetXaxis()->SetTitle("E_{ele}/P_{out}");
1462  h_ele_EeleOPout_barrel->GetYaxis()->SetTitle("Events");
1463  h_ele_EoP_endcaps->GetXaxis()->SetTitle("E/P_{vertex}");
1464  h_ele_EoP_endcaps->GetYaxis()->SetTitle("Events");
1465  h_ele_EseedOP_endcaps->GetXaxis()->SetTitle("E_{seed}/P_{vertex}");
1466  h_ele_EseedOP_endcaps->GetYaxis()->SetTitle("Events");
1467  h_ele_EoPout_endcaps->GetXaxis()->SetTitle("E_{seed}/P_{out}");
1468  h_ele_EoPout_endcaps->GetYaxis()->SetTitle("Events");
1469  h_ele_EeleOPout_endcaps->GetXaxis()->SetTitle("E_{ele}/P_{out}");
1470  h_ele_EeleOPout_endcaps->GetYaxis()->SetTitle("Events");
1471  h_ele_vertexX->GetXaxis()->SetTitle("x (cm)");
1472  h_ele_vertexX->GetYaxis()->SetTitle("Events");
1473  h_ele_vertexY->GetXaxis()->SetTitle("y (cm)");
1474  h_ele_vertexY->GetYaxis()->SetTitle("Events");
1475  h_ele_vertexZ->GetXaxis()->SetTitle("z (cm)");
1476  h_ele_vertexZ->GetYaxis()->SetTitle("Events");
1477  h_ele_vertexTIP->GetXaxis()->SetTitle("TIP (cm)");
1478  h_ele_vertexTIP->GetYaxis()->SetTitle("Events");
1479  h_ele_TIP_all->GetXaxis()->SetTitle("r_{T} (cm)");
1480  h_ele_TIP_all->GetYaxis()->SetTitle("Events");
1481  h_ele_vertexTIPVsEta->GetYaxis()->SetTitle("TIP (cm)");
1482  h_ele_vertexTIPVsEta->GetXaxis()->SetTitle("#eta");
1483  h_ele_vertexTIPVsPhi->GetYaxis()->SetTitle("TIP (cm)");
1484  h_ele_vertexTIPVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1485  h_ele_vertexTIPVsPt->GetYaxis()->SetTitle("TIP (cm)");
1486  h_ele_vertexTIPVsPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
1487  h_ele_dEtaSc_propVtx->GetXaxis()->SetTitle("#eta_{sc} - #eta_{tr}");
1488  h_ele_dEtaSc_propVtx->GetXaxis()->SetTitle("#eta_{sc} - #eta_{tr}");
1489  h_ele_dEtaSc_propVtx->GetYaxis()->SetTitle("Events");
1490  h_ele_dEtaCl_propOut->GetXaxis()->SetTitle("#eta_{seedcl} - #eta_{tr}");
1491  h_ele_dEtaCl_propOut->GetYaxis()->SetTitle("Events");
1492  h_ele_dEtaEleCl_propOut->GetXaxis()->SetTitle("#eta_{elecl} - #eta_{tr}");
1493  h_ele_dEtaEleCl_propOut->GetYaxis()->SetTitle("Events");
1494  h_ele_dPhiSc_propVtx->GetXaxis()->SetTitle("#phi_{sc} - #phi_{tr} (rad)");
1495  h_ele_dPhiSc_propVtx->GetYaxis()->SetTitle("Events");
1496  h_ele_dPhiCl_propOut->GetXaxis()->SetTitle("#phi_{seedcl} - #phi_{tr} (rad)");
1497  h_ele_dPhiCl_propOut->GetYaxis()->SetTitle("Events");
1498  h_ele_dPhiEleCl_propOut->GetXaxis()->SetTitle("#phi_{elecl} - #phi_{tr} (rad)");
1499  h_ele_dPhiEleCl_propOut->GetYaxis()->SetTitle("Events");
1500  h_ele_dEtaSc_propVtx_barrel->GetXaxis()->SetTitle("#eta_{sc} - #eta_{tr}");
1501  h_ele_dEtaSc_propVtx_barrel->GetYaxis()->SetTitle("Events");
1502  h_ele_dEtaCl_propOut_barrel->GetXaxis()->SetTitle("#eta_{seedcl} - #eta_{tr}");
1503  h_ele_dEtaCl_propOut_barrel->GetYaxis()->SetTitle("Events");
1504  h_ele_dEtaEleCl_propOut_barrel->GetXaxis()->SetTitle("#eta_{elecl} - #eta_{tr}");
1505  h_ele_dEtaEleCl_propOut_barrel->GetYaxis()->SetTitle("Events");
1506  h_ele_dPhiSc_propVtx_barrel->GetXaxis()->SetTitle("#phi_{sc} - #phi_{tr} (rad)");
1507  h_ele_dPhiSc_propVtx_barrel->GetYaxis()->SetTitle("Events");
1508  h_ele_dPhiCl_propOut_barrel->GetXaxis()->SetTitle("#phi_{seedcl} - #phi_{tr} (rad)");
1509  h_ele_dPhiCl_propOut_barrel->GetYaxis()->SetTitle("Events");
1510  h_ele_dPhiEleCl_propOut_barrel->GetXaxis()->SetTitle("#phi_{elecl} - #phi_{tr} (rad)");
1511  h_ele_dPhiEleCl_propOut_barrel->GetYaxis()->SetTitle("Events");
1512  h_ele_dEtaSc_propVtx_endcaps->GetXaxis()->SetTitle("#eta_{sc} - #eta_{tr}");
1513  h_ele_dEtaSc_propVtx_endcaps->GetYaxis()->SetTitle("Events");
1514  h_ele_dEtaCl_propOut_endcaps->GetXaxis()->SetTitle("#eta_{seedcl} - #eta_{tr}");
1515  h_ele_dEtaCl_propOut_endcaps->GetYaxis()->SetTitle("Events");
1516  h_ele_dEtaEleCl_propOut_endcaps->GetXaxis()->SetTitle("#eta_{elecl} - #eta_{tr}");
1517  h_ele_dEtaEleCl_propOut_endcaps->GetYaxis()->SetTitle("Events");
1518  h_ele_dPhiSc_propVtx_endcaps->GetXaxis()->SetTitle("#phi_{sc} - #phi_{tr} (rad)");
1519  h_ele_dPhiSc_propVtx_endcaps->GetYaxis()->SetTitle("Events");
1520  h_ele_dPhiCl_propOut_endcaps->GetXaxis()->SetTitle("#phi_{seedcl} - #phi_{tr} (rad)");
1521  h_ele_dPhiCl_propOut_endcaps->GetYaxis()->SetTitle("Events");
1522  h_ele_dPhiEleCl_propOut_endcaps->GetXaxis()->SetTitle("#phi_{elecl} - #phi_{tr} (rad)");
1523  h_ele_dPhiEleCl_propOut_endcaps->GetYaxis()->SetTitle("Events");
1524  h_ele_HoE->GetXaxis()->SetTitle("H/E");
1525  h_ele_HoE->GetYaxis()->SetTitle("Events");
1526  h_ele_HoE_barrel->GetXaxis()->SetTitle("H/E");
1527  h_ele_HoE_barrel->GetYaxis()->SetTitle("Events");
1528  h_ele_HoE_endcaps->GetXaxis()->SetTitle("H/E");
1529  h_ele_HoE_endcaps->GetYaxis()->SetTitle("Events");
1530  h_ele_HoE_fiducial->GetXaxis()->SetTitle("H/E");
1531  h_ele_HoE_fiducial->GetYaxis()->SetTitle("Events");
1532  h_ele_fbrem->GetXaxis()->SetTitle("P_{in} - P_{out} / P_{in}");
1533  h_ele_fbrem->GetYaxis()->SetTitle("Events");
1534  h_ele_seed_dphi2_->GetXaxis()->SetTitle("#phi_{hit}-#phi_{pred} (rad)");
1535  h_ele_seed_dphi2_->GetYaxis()->SetTitle("Events");
1536  h_ele_seed_drz2_->GetXaxis()->SetTitle("r(z)_{hit}-r(z)_{pred} (cm)");
1537  h_ele_seed_drz2_->GetYaxis()->SetTitle("Events");
1538  h_ele_seed_subdet2_->GetXaxis()->SetTitle("2nd hit subdet Id");
1539  h_ele_seed_subdet2_->GetYaxis()->SetTitle("Events");
1540  h_ele_classes->GetXaxis()->SetTitle("class Id");
1541  h_ele_classes->GetYaxis()->SetTitle("Events");
1542  h_ele_EoverP_all->GetXaxis()->SetTitle("E/P_{vertex}");
1543  h_ele_EoverP_all->GetYaxis()->SetTitle("Events");
1544  h_ele_EseedOP_all->GetXaxis()->SetTitle("E_{seed}/P_{vertex}");
1545  h_ele_EseedOP_all->GetYaxis()->SetTitle("Events");
1546  h_ele_EoPout_all->GetXaxis()->SetTitle("E_{seed}/P_{out}");
1547  h_ele_EoPout_all->GetYaxis()->SetTitle("Events");
1548  h_ele_EeleOPout_all->GetXaxis()->SetTitle("E_{ele}/P_{out}");
1549  h_ele_EeleOPout_all->GetYaxis()->SetTitle("Events");
1550  h_ele_dEtaSc_propVtx_all->GetXaxis()->SetTitle("#eta_{sc} - #eta_{tr}");
1551  h_ele_dEtaSc_propVtx_all->GetYaxis()->SetTitle("Events");
1552  h_ele_dPhiSc_propVtx_all->GetXaxis()->SetTitle("#phi_{sc} - #phi_{tr} (rad)");
1553  h_ele_dPhiSc_propVtx_all->GetYaxis()->SetTitle("Events");
1554  h_ele_dEtaCl_propOut_all->GetXaxis()->SetTitle("#eta_{sc} - #eta_{tr}");
1555  h_ele_dEtaCl_propOut_all->GetYaxis()->SetTitle("Events");
1556  h_ele_dPhiCl_propOut_all->GetXaxis()->SetTitle("#phi_{sc} - #phi_{tr} (rad)");
1557  h_ele_dPhiCl_propOut_all->GetYaxis()->SetTitle("Events");
1558  h_ele_HoE_all->GetXaxis()->SetTitle("H/E");
1559  h_ele_HoE_all->GetYaxis()->SetTitle("Events");
1560  h_ele_mee_all->GetXaxis()->SetTitle("m_{ee} (GeV/c^{2})");
1561  h_ele_mee_all->GetYaxis()->SetTitle("Events");
1562  h_ele_mee_os->GetXaxis()->SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
1563  h_ele_mee_os->GetYaxis()->SetTitle("Events");
1564  h_ele_E2mnE1vsMee_all->GetXaxis()->SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
1565  h_ele_E2mnE1vsMee_all->GetYaxis()->SetTitle("E2 - E1 (GeV)");
1566  h_ele_E2mnE1vsMee_egeg_all->GetXaxis()->SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
1567  h_ele_E2mnE1vsMee_egeg_all->GetYaxis()->SetTitle("E2 - E1 (GeV)");
1568  histNum_->GetXaxis()->SetTitle("N_{ele}");
1569  histNum_->GetYaxis()->SetTitle("Events");
1570  h_ele_fbremVsEta_mode->GetXaxis()->SetTitle("#eta");
1571  h_ele_fbremVsEta_mean->GetXaxis()->SetTitle("#eta");
1572 }
1573 
1575  histfile_->cd();
1576  std::cout << "efficiency calculation " << std::endl;
1577  // efficiency vs eta
1578  TH1F *h_ele_etaEff = (TH1F *)h_ele_matchingObjectEta_matched->Clone("h_ele_etaEff");
1579  h_ele_etaEff->Reset();
1580  h_ele_etaEff->Divide(h_ele_matchingObjectEta_matched, h_matchingObjectEta, 1, 1, "b");
1581  h_ele_etaEff->Print();
1582  h_ele_etaEff->GetXaxis()->SetTitle("#eta");
1583  h_ele_etaEff->GetYaxis()->SetTitle("Efficiency");
1584 
1585  // efficiency vs z
1586  TH1F *h_ele_zEff = (TH1F *)h_ele_matchingObjectZ_matched->Clone("h_ele_zEff");
1587  h_ele_zEff->Reset();
1588  h_ele_zEff->Divide(h_ele_matchingObjectZ_matched, h_matchingObjectZ, 1, 1, "b");
1589  h_ele_zEff->Print();
1590  h_ele_zEff->GetXaxis()->SetTitle("z (cm)");
1591  h_ele_zEff->GetYaxis()->SetTitle("Efficiency");
1592 
1593  // efficiency vs |eta|
1594  TH1F *h_ele_absetaEff = (TH1F *)h_ele_matchingObjectAbsEta_matched->Clone("h_ele_absetaEff");
1595  h_ele_absetaEff->Reset();
1596  h_ele_absetaEff->Divide(h_ele_matchingObjectAbsEta_matched, h_matchingObjectAbsEta, 1, 1, "b");
1597  h_ele_absetaEff->GetXaxis()->SetTitle("|#eta|");
1598  h_ele_absetaEff->GetYaxis()->SetTitle("Efficiency");
1599 
1600  // efficiency vs pt
1601  TH1F *h_ele_ptEff = (TH1F *)h_ele_matchingObjectPt_matched->Clone("h_ele_ptEff");
1602  h_ele_ptEff->Reset();
1603  h_ele_ptEff->Divide(h_ele_matchingObjectPt_matched, h_matchingObjectPt, 1, 1, "b");
1604  h_ele_ptEff->GetXaxis()->SetTitle("p_{T} (GeV/c)");
1605  h_ele_ptEff->GetYaxis()->SetTitle("Efficiency");
1606 
1607  // efficiency vs phi
1608  TH1F *h_ele_phiEff = (TH1F *)h_ele_matchingObjectPhi_matched->Clone("h_ele_phiEff");
1609  h_ele_phiEff->Reset();
1610  h_ele_phiEff->Divide(h_ele_matchingObjectPhi_matched, h_matchingObjectPhi, 1, 1, "b");
1611  h_ele_phiEff->GetXaxis()->SetTitle("#phi (rad)");
1612  h_ele_phiEff->GetYaxis()->SetTitle("Efficiency");
1613 
1614  // rec/matching objects all electrons
1615  TH1F *h_ele_etaEff_all = (TH1F *)h_ele_vertexEta_all->Clone("h_ele_etaEff_all");
1616  h_ele_etaEff_all->Reset();
1617  h_ele_etaEff_all->Divide(h_ele_vertexEta_all, h_matchingObjectEta, 1, 1, "b");
1618  h_ele_etaEff_all->Print();
1619  h_ele_etaEff_all->GetXaxis()->SetTitle("#eta");
1620  h_ele_etaEff_all->GetYaxis()->SetTitle("N_{rec}/N_{matching jet}");
1621 
1622  TH1F *h_ele_ptEff_all = (TH1F *)h_ele_vertexPt_all->Clone("h_ele_ptEff_all");
1623  h_ele_ptEff_all->Reset();
1624  h_ele_ptEff_all->Divide(h_ele_vertexPt_all, h_matchingObjectPt, 1, 1, "b");
1625  h_ele_ptEff_all->Print();
1626  h_ele_ptEff_all->GetXaxis()->SetTitle("p_{T} (GeV/c)");
1627  h_ele_ptEff_all->GetYaxis()->SetTitle("N_{rec}/N_{matching gen jet}");
1628 
1629  // classes
1630  TH1F *h_ele_eta_goldenFrac = (TH1F *)h_ele_eta_golden->Clone("h_ele_eta_goldenFrac");
1631  h_ele_eta_goldenFrac->Reset();
1632  h_ele_eta_goldenFrac->GetXaxis()->SetTitle("|#eta|");
1633  h_ele_eta_goldenFrac->GetYaxis()->SetTitle("Fraction of electrons");
1634  h_ele_eta_goldenFrac->Divide(h_ele_eta_golden, h_ele_eta, 1, 1);
1635  h_ele_eta_goldenFrac->SetTitle("fraction of golden electrons vs eta");
1636  TH1F *h_ele_eta_bbremFrac = (TH1F *)h_ele_eta_bbrem->Clone("h_ele_eta_bbremFrac");
1637  h_ele_eta_bbremFrac->Reset();
1638  h_ele_eta_bbremFrac->Divide(h_ele_eta_bbrem, h_ele_eta, 1, 1);
1639  h_ele_eta_bbremFrac->GetXaxis()->SetTitle("|#eta|");
1640  h_ele_eta_bbremFrac->GetYaxis()->SetTitle("Fraction of electrons");
1641  h_ele_eta_bbremFrac->SetTitle("fraction of big brem electrons vs eta");
1642  TH1F *h_ele_eta_narrowFrac = (TH1F *)h_ele_eta_narrow->Clone("h_ele_eta_narrowFrac");
1643  h_ele_eta_narrowFrac->Reset();
1644  h_ele_eta_narrowFrac->Divide(h_ele_eta_narrow, h_ele_eta, 1, 1);
1645  h_ele_eta_narrowFrac->GetXaxis()->SetTitle("|#eta|");
1646  h_ele_eta_narrowFrac->GetYaxis()->SetTitle("Fraction of electrons");
1647  h_ele_eta_narrowFrac->SetTitle("fraction of narrow electrons vs eta");
1648  TH1F *h_ele_eta_showerFrac = (TH1F *)h_ele_eta_shower->Clone("h_ele_eta_showerFrac");
1649  h_ele_eta_showerFrac->Reset();
1650  h_ele_eta_showerFrac->Divide(h_ele_eta_shower, h_ele_eta, 1, 1);
1651  h_ele_eta_showerFrac->GetXaxis()->SetTitle("|#eta|");
1652  h_ele_eta_showerFrac->GetYaxis()->SetTitle("Fraction of electrons");
1653  h_ele_eta_showerFrac->SetTitle("fraction of showering electrons vs eta");
1654 
1655  // fbrem
1656  TH1F *h_ele_xOverX0VsEta = new TH1F("h_ele_xOverx0VsEta", "mean X/X_0 vs eta", nbineta / 2, 0.0, 2.5);
1657  for (int ibin = 1; ibin < h_ele_fbremVsEta_mean->GetNbinsX() + 1; ibin++) {
1658  double xOverX0 = 0.;
1659  if (h_ele_fbremVsEta_mean->GetBinContent(ibin) > 0.)
1660  xOverX0 = -log(h_ele_fbremVsEta_mean->GetBinContent(ibin));
1661  h_ele_xOverX0VsEta->SetBinContent(ibin, xOverX0);
1662  }
1663 
1664  //profiles from 2D histos
1665  TProfile *p_ele_PoPmatchingObjectVsEta = h_ele_PoPmatchingObjectVsEta->ProfileX();
1666  p_ele_PoPmatchingObjectVsEta->SetTitle("mean ele momentum / matching SC energy vs eta");
1667  p_ele_PoPmatchingObjectVsEta->GetXaxis()->SetTitle("#eta");
1668  p_ele_PoPmatchingObjectVsEta->GetYaxis()->SetTitle("<P/E_{matching gen jet}>");
1669  p_ele_PoPmatchingObjectVsEta->Write();
1670  TProfile *p_ele_PoPmatchingObjectVsPhi = h_ele_PoPmatchingObjectVsPhi->ProfileX();
1671  p_ele_PoPmatchingObjectVsPhi->SetTitle("mean ele momentum / gen momentum vs phi");
1672  p_ele_PoPmatchingObjectVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1673  p_ele_PoPmatchingObjectVsPhi->GetYaxis()->SetTitle("<P/E_{matching gen jet}>");
1674  p_ele_PoPmatchingObjectVsPhi->Write();
1675  TProfile *p_ele_EtaMnEtamatchingObjectVsEta = h_ele_EtaMnEtamatchingObjectVsEta->ProfileX();
1676  p_ele_EtaMnEtamatchingObjectVsEta->GetXaxis()->SetTitle("#eta");
1677  p_ele_EtaMnEtamatchingObjectVsEta->GetYaxis()->SetTitle("<#eta_{rec} - #eta_{matching gen jet}>");
1678  p_ele_EtaMnEtamatchingObjectVsEta->Write();
1679  TProfile *p_ele_EtaMnEtamatchingObjectVsPhi = h_ele_EtaMnEtamatchingObjectVsPhi->ProfileX();
1680  p_ele_EtaMnEtamatchingObjectVsPhi->GetXaxis()->SetTitle("#phi");
1681  p_ele_EtaMnEtamatchingObjectVsPhi->GetYaxis()->SetTitle("<#eta_{rec} - #eta_{matching gen jet}>");
1682  p_ele_EtaMnEtamatchingObjectVsPhi->Write();
1683  TProfile *p_ele_PhiMnPhimatchingObjectVsEta = h_ele_PhiMnPhimatchingObjectVsEta->ProfileX();
1684  p_ele_PhiMnPhimatchingObjectVsEta->GetXaxis()->SetTitle("#eta");
1685  p_ele_PhiMnPhimatchingObjectVsEta->GetYaxis()->SetTitle("<#phi_{rec} - #phi_{matching gen jet}> (rad)");
1686  p_ele_PhiMnPhimatchingObjectVsEta->Write();
1687  TProfile *p_ele_PhiMnPhimatchingObjectVsPhi = h_ele_PhiMnPhimatchingObjectVsPhi->ProfileX();
1688  p_ele_PhiMnPhimatchingObjectVsPhi->GetXaxis()->SetTitle("#phi");
1689  p_ele_PhiMnPhimatchingObjectVsPhi->GetYaxis()->SetTitle("<#phi_{rec} - #phi_{matching gen jet}> (rad)");
1690  p_ele_PhiMnPhimatchingObjectVsPhi->Write();
1691  TProfile *p_ele_vertexPtVsEta = h_ele_vertexPtVsEta->ProfileX();
1692  p_ele_vertexPtVsEta->GetXaxis()->SetTitle("#eta");
1693  p_ele_vertexPtVsEta->GetYaxis()->SetTitle("<p_{T}> (GeV/c)");
1694  p_ele_vertexPtVsEta->Write();
1695  TProfile *p_ele_vertexPtVsPhi = h_ele_vertexPtVsPhi->ProfileX();
1696  p_ele_vertexPtVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1697  p_ele_vertexPtVsPhi->GetYaxis()->SetTitle("<p_{T}> (GeV/c)");
1698  p_ele_vertexPtVsPhi->Write();
1699  TProfile *p_ele_EoPVsEta = h_ele_EoPVsEta->ProfileX();
1700  p_ele_EoPVsEta->GetXaxis()->SetTitle("#eta");
1701  p_ele_EoPVsEta->GetYaxis()->SetTitle("<E/P_{vertex}>");
1702  p_ele_EoPVsEta->Write();
1703  TProfile *p_ele_EoPVsPhi = h_ele_EoPVsPhi->ProfileX();
1704  p_ele_EoPVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1705  p_ele_EoPVsPhi->GetYaxis()->SetTitle("<E/P_{vertex}>");
1706  p_ele_EoPVsPhi->Write();
1707  TProfile *p_ele_EoPoutVsEta = h_ele_EoPoutVsEta->ProfileX();
1708  p_ele_EoPoutVsEta->GetXaxis()->SetTitle("#eta");
1709  p_ele_EoPoutVsEta->GetYaxis()->SetTitle("<E_{seed}/P_{out}>");
1710  p_ele_EoPoutVsEta->Write();
1711  TProfile *p_ele_EoPoutVsPhi = h_ele_EoPoutVsPhi->ProfileX();
1712  p_ele_EoPoutVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1713  p_ele_EoPoutVsPhi->GetYaxis()->SetTitle("<E_{seed}/P_{out}>");
1714  p_ele_EoPoutVsPhi->Write();
1715  TProfile *p_ele_EeleOPoutVsEta = h_ele_EeleOPoutVsEta->ProfileX();
1716  p_ele_EeleOPoutVsEta->SetTitle("mean ele Eele/pout vs eta");
1717  p_ele_EeleOPoutVsEta->GetXaxis()->SetTitle("#eta");
1718  p_ele_EeleOPoutVsEta->GetYaxis()->SetTitle("<E_{ele}/P_{out}>");
1719  p_ele_EeleOPoutVsEta->Write();
1720  TProfile *p_ele_EeleOPoutVsPhi = h_ele_EeleOPoutVsPhi->ProfileX();
1721  p_ele_EeleOPoutVsPhi->SetTitle("mean ele Eele/pout vs phi");
1722  p_ele_EeleOPoutVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1723  p_ele_EeleOPoutVsPhi->GetYaxis()->SetTitle("<E_{ele}/P_{out}>");
1724  p_ele_EeleOPoutVsPhi->Write();
1725  TProfile *p_ele_HoEVsEta = h_ele_HoEVsEta->ProfileX();
1726  p_ele_HoEVsEta->GetXaxis()->SetTitle("#eta");
1727  p_ele_HoEVsEta->GetYaxis()->SetTitle("<H/E>");
1728  p_ele_HoEVsEta->Write();
1729  TProfile *p_ele_HoEVsPhi = h_ele_HoEVsPhi->ProfileX();
1730  p_ele_HoEVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1731  p_ele_HoEVsPhi->GetYaxis()->SetTitle("<H/E>");
1732  p_ele_HoEVsPhi->Write();
1733  TProfile *p_ele_chi2VsEta = h_ele_chi2VsEta->ProfileX();
1734  p_ele_chi2VsEta->GetXaxis()->SetTitle("#eta");
1735  p_ele_chi2VsEta->GetYaxis()->SetTitle("<#Chi^{2}>");
1736  p_ele_chi2VsEta->Write();
1737  TProfile *p_ele_chi2VsPhi = h_ele_chi2VsPhi->ProfileX();
1738  p_ele_chi2VsPhi->GetXaxis()->SetTitle("#phi (rad)");
1739  p_ele_chi2VsPhi->GetYaxis()->SetTitle("<#Chi^{2}>");
1740  p_ele_chi2VsPhi->Write();
1741  TProfile *p_ele_foundHitsVsEta = h_ele_foundHitsVsEta->ProfileX();
1742  p_ele_foundHitsVsEta->GetXaxis()->SetTitle("#eta");
1743  p_ele_foundHitsVsEta->GetYaxis()->SetTitle("<N_{hits}>");
1744  p_ele_foundHitsVsEta->Write();
1745  TProfile *p_ele_foundHitsVsPhi = h_ele_foundHitsVsPhi->ProfileX();
1746  p_ele_foundHitsVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1747  p_ele_foundHitsVsPhi->GetYaxis()->SetTitle("<N_{hits}>");
1748  p_ele_foundHitsVsPhi->Write();
1749  TProfile *p_ele_lostHitsVsEta = h_ele_lostHitsVsEta->ProfileX();
1750  p_ele_lostHitsVsEta->GetXaxis()->SetTitle("#eta");
1751  p_ele_lostHitsVsEta->GetYaxis()->SetTitle("<N_{hits}>");
1752  p_ele_lostHitsVsEta->Write();
1753  TProfile *p_ele_lostHitsVsPhi = h_ele_lostHitsVsPhi->ProfileX();
1754  p_ele_lostHitsVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1755  p_ele_lostHitsVsPhi->GetYaxis()->SetTitle("<N_{hits}>");
1756  p_ele_lostHitsVsPhi->Write();
1757  TProfile *p_ele_vertexTIPVsEta = h_ele_vertexTIPVsEta->ProfileX();
1758  p_ele_vertexTIPVsEta->SetTitle("mean tip (wrt gen vtx) vs eta");
1759  p_ele_vertexTIPVsEta->GetXaxis()->SetTitle("#eta");
1760  p_ele_vertexTIPVsEta->GetYaxis()->SetTitle("<TIP> (cm)");
1761  p_ele_vertexTIPVsEta->Write();
1762  TProfile *p_ele_vertexTIPVsPhi = h_ele_vertexTIPVsPhi->ProfileX();
1763  p_ele_vertexTIPVsPhi->SetTitle("mean tip (wrt gen vtx) vs phi");
1764  p_ele_vertexTIPVsPhi->GetXaxis()->SetTitle("#phi");
1765  p_ele_vertexTIPVsPhi->GetYaxis()->SetTitle("<TIP> (cm)");
1766  p_ele_vertexTIPVsPhi->Write();
1767  TProfile *p_ele_vertexTIPVsPt = h_ele_vertexTIPVsPt->ProfileX();
1768  p_ele_vertexTIPVsPt->SetTitle("mean tip (wrt gen vtx) vs phi");
1769  p_ele_vertexTIPVsPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
1770  p_ele_vertexTIPVsPt->GetYaxis()->SetTitle("<TIP> (cm)");
1771  p_ele_vertexTIPVsPt->Write();
1772 
1773  // mc truth
1774 
1775  h_matchingObjectNum->Write();
1776 
1777  // rec event
1778 
1779  histNum_->Write();
1780 
1781  // mc
1782  h_matchingObjectEta->Write();
1783  h_matchingObjectAbsEta->Write();
1784  h_matchingObjectP->Write();
1785  h_matchingObjectPt->Write();
1786  h_matchingObjectPhi->Write();
1787  h_matchingObjectZ->Write();
1788 
1789  // all electrons
1790  h_ele_EoverP_all->Write();
1791  h_ele_EseedOP_all->Write();
1792  h_ele_EoPout_all->Write();
1793  h_ele_EeleOPout_all->Write();
1794  h_ele_dEtaSc_propVtx_all->Write();
1795  h_ele_dPhiSc_propVtx_all->Write();
1796  h_ele_dEtaCl_propOut_all->Write();
1797  h_ele_dPhiCl_propOut_all->Write();
1798  h_ele_HoE_all->Write();
1799  h_ele_TIP_all->Write();
1800  h_ele_vertexPt_all->Write();
1801  h_ele_vertexEta_all->Write();
1802  h_ele_mee_all->Write();
1803  h_ele_mee_os->Write();
1804  h_ele_E2mnE1vsMee_all->Write();
1805  h_ele_E2mnE1vsMee_egeg_all->Write();
1806 
1807  // matched electrons
1808  h_ele_charge->Write();
1809  h_ele_chargeVsEta->Write();
1810  h_ele_chargeVsPhi->Write();
1811  h_ele_chargeVsPt->Write();
1812  h_ele_vertexP->Write();
1813  h_ele_vertexPt->Write();
1814  h_ele_vertexPtVsEta->Write();
1815  h_ele_vertexPtVsPhi->Write();
1817  h_ele_vertexEta->Write();
1818  h_ele_vertexEtaVsPhi->Write();
1821  h_ele_vertexPhi->Write();
1823  h_ele_vertexX->Write();
1824  h_ele_vertexY->Write();
1825  h_ele_vertexZ->Write();
1826  h_ele_vertexTIP->Write();
1828  h_ele_vertexTIPVsEta->Write();
1829  h_ele_vertexTIPVsPhi->Write();
1830  h_ele_vertexTIPVsPt->Write();
1831  h_ele_PoPmatchingObject->Write();
1834  h_ele_PoPmatchingObjectVsPt->Write();
1846 
1847  // matched electron, superclusters
1848  histSclEn_->Write();
1851  histSclEt_->Write();
1852  histSclEtVsEta_->Write();
1853  histSclEtVsPhi_->Write();
1854  histSclEtaVsPhi_->Write();
1855  histSclEta_->Write();
1856  histSclPhi_->Write();
1857  histSclSigIEtaIEta_->Write();
1858  histSclSigIEtaIEta_barrel_->Write();
1859  histSclSigIEtaIEta_endcaps_->Write();
1860  histSclE1x5_->Write();
1861  histSclE1x5_barrel_->Write();
1862  histSclE1x5_endcaps_->Write();
1863  histSclE2x5max_->Write();
1864  histSclE2x5max_barrel_->Write();
1865  histSclE2x5max_endcaps_->Write();
1866  histSclE5x5_->Write();
1867  histSclE5x5_barrel_->Write();
1868  histSclE5x5_endcaps_->Write();
1869 
1870  // matched electron, gsf tracks
1871  h_ele_ambiguousTracks->Write();
1872  h_ele_ambiguousTracksVsEta->Write();
1873  h_ele_ambiguousTracksVsPhi->Write();
1874  h_ele_ambiguousTracksVsPt->Write();
1875  h_ele_foundHits->Write();
1876  h_ele_foundHitsVsEta->Write();
1877  h_ele_foundHitsVsPhi->Write();
1878  h_ele_foundHitsVsPt->Write();
1879  h_ele_lostHits->Write();
1880  h_ele_lostHitsVsEta->Write();
1881  h_ele_lostHitsVsPhi->Write();
1882  h_ele_lostHitsVsPt->Write();
1883  h_ele_chi2->Write();
1884  h_ele_chi2VsEta->Write();
1885  h_ele_chi2VsPhi->Write();
1886  h_ele_chi2VsPt->Write();
1887  h_ele_PinMnPout->Write();
1888  h_ele_PinMnPout_mode->Write();
1889  h_ele_PinMnPoutVsEta_mode->Write();
1890  h_ele_PinMnPoutVsPhi_mode->Write();
1891  h_ele_PinMnPoutVsPt_mode->Write();
1892  h_ele_PinMnPoutVsE_mode->Write();
1893  h_ele_PinMnPoutVsChi2_mode->Write();
1894  h_ele_outerP->Write();
1895  h_ele_outerP_mode->Write();
1896  h_ele_outerPVsEta_mode->Write();
1897  h_ele_outerPt->Write();
1898  h_ele_outerPt_mode->Write();
1899  h_ele_outerPtVsEta_mode->Write();
1900  h_ele_outerPtVsPhi_mode->Write();
1901  h_ele_outerPtVsPt_mode->Write();
1902 
1903  // matched electrons, matching
1904  h_ele_EoP->Write();
1905  h_ele_EoP_eg->Write();
1906  h_ele_EoP_barrel->Write();
1907  h_ele_EoP_eg_barrel->Write();
1908  h_ele_EoP_endcaps->Write();
1909  h_ele_EoP_eg_endcaps->Write();
1910  h_ele_EoPVsEta->Write();
1911  h_ele_EoPVsPhi->Write();
1912  h_ele_EoPVsE->Write();
1913  h_ele_EseedOP->Write();
1914  h_ele_EseedOP_eg->Write();
1915  h_ele_EseedOP_barrel->Write();
1916  h_ele_EseedOP_eg_barrel->Write();
1917  h_ele_EseedOP_endcaps->Write();
1918  h_ele_EseedOP_eg_endcaps->Write();
1919  h_ele_EseedOPVsEta->Write();
1920  h_ele_EseedOPVsPhi->Write();
1921  h_ele_EseedOPVsE->Write();
1922  h_ele_EoPout->Write();
1923  h_ele_EoPout_eg->Write();
1924  h_ele_EoPout_barrel->Write();
1925  h_ele_EoPout_eg_barrel->Write();
1926  h_ele_EoPout_endcaps->Write();
1927  h_ele_EoPout_eg_endcaps->Write();
1928  h_ele_EoPoutVsEta->Write();
1929  h_ele_EoPoutVsPhi->Write();
1930  h_ele_EoPoutVsE->Write();
1931  h_ele_EeleOPout->Write();
1932  h_ele_EeleOPout_eg->Write();
1933  h_ele_EeleOPout_barrel->Write();
1934  h_ele_EeleOPout_eg_barrel->Write();
1935  h_ele_EeleOPout_endcaps->Write();
1936  h_ele_EeleOPout_eg_endcaps->Write();
1937  h_ele_EeleOPoutVsEta->Write();
1938  h_ele_EeleOPoutVsPhi->Write();
1939  h_ele_EeleOPoutVsE->Write();
1940  h_ele_dEtaSc_propVtx->Write();
1941  h_ele_dEtaSc_propVtx_eg->Write();
1942  h_ele_dEtaSc_propVtx_barrel->Write();
1946  h_ele_dEtaScVsEta_propVtx->Write();
1947  h_ele_dEtaScVsPhi_propVtx->Write();
1948  h_ele_dEtaScVsPt_propVtx->Write();
1949  h_ele_dPhiSc_propVtx->Write();
1950  h_ele_dPhiSc_propVtx_eg->Write();
1951  h_ele_dPhiSc_propVtx_barrel->Write();
1955  h_ele_dPhiScVsEta_propVtx->Write();
1956  h_ele_dPhiScVsPhi_propVtx->Write();
1957  h_ele_dPhiScVsPt_propVtx->Write();
1958  h_ele_dEtaCl_propOut->Write();
1959  h_ele_dEtaCl_propOut_eg->Write();
1960  h_ele_dEtaCl_propOut_barrel->Write();
1964  h_ele_dEtaClVsEta_propOut->Write();
1965  h_ele_dEtaClVsPhi_propOut->Write();
1966  h_ele_dEtaClVsPt_propOut->Write();
1967  h_ele_dPhiCl_propOut->Write();
1968  h_ele_dPhiCl_propOut_eg->Write();
1969  h_ele_dPhiCl_propOut_barrel->Write();
1973  h_ele_dPhiClVsEta_propOut->Write();
1974  h_ele_dPhiClVsPhi_propOut->Write();
1975  h_ele_dPhiClVsPt_propOut->Write();
1976  h_ele_dEtaEleCl_propOut->Write();
1977  h_ele_dEtaEleCl_propOut_eg->Write();
1984  h_ele_dEtaEleClVsPt_propOut->Write();
1985  h_ele_dPhiEleCl_propOut->Write();
1986  h_ele_dPhiEleCl_propOut_eg->Write();
1993  h_ele_dPhiEleClVsPt_propOut->Write();
1994  h_ele_HoE->Write();
1995  h_ele_HoE_eg->Write();
1996  h_ele_HoE_barrel->Write();
1997  h_ele_HoE_eg_barrel->Write();
1998  h_ele_HoE_endcaps->Write();
1999  h_ele_HoE_eg_endcaps->Write();
2000  h_ele_HoE_fiducial->Write();
2001  h_ele_HoEVsEta->Write();
2002  h_ele_HoEVsPhi->Write();
2003  h_ele_HoEVsE->Write();
2004 
2005  h_ele_seed_dphi2_->Write();
2006  h_ele_seed_subdet2_->Write();
2007  TProfile *p_ele_seed_dphi2VsEta_ = h_ele_seed_dphi2VsEta_->ProfileX();
2008  p_ele_seed_dphi2VsEta_->SetTitle("mean ele seed dphi 2nd layer vs eta");
2009  p_ele_seed_dphi2VsEta_->GetXaxis()->SetTitle("#eta");
2010  p_ele_seed_dphi2VsEta_->GetYaxis()->SetTitle("<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)");
2011  p_ele_seed_dphi2VsEta_->SetMinimum(-0.004);
2012  p_ele_seed_dphi2VsEta_->SetMaximum(0.004);
2013  p_ele_seed_dphi2VsEta_->Write();
2014  TProfile *p_ele_seed_dphi2VsPt_ = h_ele_seed_dphi2VsPt_->ProfileX();
2015  p_ele_seed_dphi2VsPt_->SetTitle("mean ele seed dphi 2nd layer vs pt");
2016  p_ele_seed_dphi2VsPt_->GetXaxis()->SetTitle("p_{T} (GeV/c)");
2017  p_ele_seed_dphi2VsPt_->GetYaxis()->SetTitle("<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)");
2018  p_ele_seed_dphi2VsPt_->SetMinimum(-0.004);
2019  p_ele_seed_dphi2VsPt_->SetMaximum(0.004);
2020  p_ele_seed_dphi2VsPt_->Write();
2021  h_ele_seed_drz2_->Write();
2022  TProfile *p_ele_seed_drz2VsEta_ = h_ele_seed_drz2VsEta_->ProfileX();
2023  p_ele_seed_drz2VsEta_->SetTitle("mean ele seed dr(dz) 2nd layer vs eta");
2024  p_ele_seed_drz2VsEta_->GetXaxis()->SetTitle("#eta");
2025  p_ele_seed_drz2VsEta_->GetYaxis()->SetTitle("<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)");
2026  p_ele_seed_drz2VsEta_->SetMinimum(-0.15);
2027  p_ele_seed_drz2VsEta_->SetMaximum(0.15);
2028  p_ele_seed_drz2VsEta_->Write();
2029  TProfile *p_ele_seed_drz2VsPt_ = h_ele_seed_drz2VsPt_->ProfileX();
2030  p_ele_seed_drz2VsPt_->SetTitle("mean ele seed dr(dz) 2nd layer vs pt");
2031  p_ele_seed_drz2VsPt_->GetXaxis()->SetTitle("p_{T} (GeV/c)");
2032  p_ele_seed_drz2VsPt_->GetYaxis()->SetTitle("<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)");
2033  p_ele_seed_drz2VsPt_->SetMinimum(-0.15);
2034  p_ele_seed_drz2VsPt_->SetMaximum(0.15);
2035  p_ele_seed_drz2VsPt_->Write();
2036 
2037  // classes
2038  h_ele_classes->Write();
2039  h_ele_eta->Write();
2040  h_ele_eta_golden->Write();
2041  h_ele_eta_bbrem->Write();
2042  h_ele_eta_narrow->Write();
2043  h_ele_eta_shower->Write();
2044  h_ele_PinVsPoutGolden_mode->Write();
2046  h_ele_PinVsPoutGolden_mean->Write();
2056 
2057  // fbrem
2058  h_ele_fbrem->Write();
2059  h_ele_fbremVsEta_mode->Write();
2060  h_ele_fbremVsEta_mean->Write();
2061  h_ele_etaEff->Write();
2062  h_ele_zEff->Write();
2063  h_ele_phiEff->Write();
2064  h_ele_absetaEff->Write();
2065  h_ele_ptEff->Write();
2066  h_ele_etaEff_all->Write();
2067  h_ele_ptEff_all->Write();
2068  h_ele_eta_goldenFrac->Write();
2069  h_ele_eta_bbremFrac->Write();
2070  h_ele_eta_narrowFrac->Write();
2071  h_ele_eta_showerFrac->Write();
2072  h_ele_xOverX0VsEta->Write();
2073 
2074  // e/g et pflow electrons
2075  h_ele_mva->Write();
2076  h_ele_provenance->Write();
2077 
2078  // isolation
2079  h_ele_tkSumPt_dr03->GetXaxis()->SetTitle("TkIsoSum, cone 0.3 (GeV/c)");
2080  h_ele_tkSumPt_dr03->GetYaxis()->SetTitle("Events");
2081  h_ele_tkSumPt_dr03->Write();
2082  h_ele_ecalRecHitSumEt_dr03->GetXaxis()->SetTitle("EcalIsoSum, cone 0.3 (GeV)");
2083  h_ele_ecalRecHitSumEt_dr03->GetYaxis()->SetTitle("Events");
2084  h_ele_ecalRecHitSumEt_dr03->Write();
2085  h_ele_hcalDepth1TowerSumEt_dr03->GetXaxis()->SetTitle("Hcal1IsoSum, cone 0.3 (GeV)");
2086  h_ele_hcalDepth1TowerSumEt_dr03->GetYaxis()->SetTitle("Events");
2088  h_ele_hcalDepth2TowerSumEt_dr03->GetXaxis()->SetTitle("Hcal2IsoSum, cone 0.3 (GeV)");
2089  h_ele_hcalDepth2TowerSumEt_dr03->GetYaxis()->SetTitle("Events");
2091  h_ele_tkSumPt_dr04->GetXaxis()->SetTitle("TkIsoSum, cone 0.4 (GeV/c)");
2092  h_ele_tkSumPt_dr04->GetYaxis()->SetTitle("Events");
2093  h_ele_tkSumPt_dr04->Write();
2094  h_ele_ecalRecHitSumEt_dr04->GetXaxis()->SetTitle("EcalIsoSum, cone 0.4 (GeV)");
2095  h_ele_ecalRecHitSumEt_dr04->GetYaxis()->SetTitle("Events");
2096  h_ele_ecalRecHitSumEt_dr04->Write();
2097  h_ele_hcalDepth1TowerSumEt_dr04->GetXaxis()->SetTitle("Hcal1IsoSum, cone 0.4 (GeV)");
2098  h_ele_hcalDepth1TowerSumEt_dr04->GetYaxis()->SetTitle("Events");
2100  h_ele_hcalDepth2TowerSumEt_dr04->GetXaxis()->SetTitle("Hcal2IsoSum, cone 0.4 (GeV)");
2101  h_ele_hcalDepth2TowerSumEt_dr04->GetYaxis()->SetTitle("Events");
2103 }
2104 
2106  std::cout << "analyzing new event " << std::endl;
2107 
2108  // get reco electrons
2110  iEvent.getByLabel(electronCollection_, gsfElectrons);
2111  edm::LogInfo("") << "\n\n =================> Treating event " << iEvent.id() << " Number of electrons "
2112  << gsfElectrons.product()->size();
2113 
2114  // get gen jets
2116  iEvent.getByLabel(matchingObjectCollection_, genJets);
2117 
2118  // get the beamspot from the Event:
2119  edm::Handle<reco::BeamSpot> recoBeamSpotHandle;
2120  iEvent.getByLabel(beamSpot_, recoBeamSpotHandle);
2121  const BeamSpot bs = *recoBeamSpotHandle;
2122 
2123  histNum_->Fill((*gsfElectrons).size());
2124 
2125  // all rec electrons
2126  for (reco::GsfElectronCollection::const_iterator gsfIter = gsfElectrons->begin(); gsfIter != gsfElectrons->end();
2127  gsfIter++) {
2128  // preselect electrons
2129  if (gsfIter->pt() > maxPt_ || std::abs(gsfIter->eta()) > maxAbsEta_)
2130  continue;
2131  h_ele_EoverP_all->Fill(gsfIter->eSuperClusterOverP());
2132  h_ele_EseedOP_all->Fill(gsfIter->eSeedClusterOverP());
2133  h_ele_EoPout_all->Fill(gsfIter->eSeedClusterOverPout());
2134  h_ele_EeleOPout_all->Fill(gsfIter->eEleClusterOverPout());
2135  h_ele_dEtaSc_propVtx_all->Fill(gsfIter->deltaEtaSuperClusterTrackAtVtx());
2136  h_ele_dPhiSc_propVtx_all->Fill(gsfIter->deltaPhiSuperClusterTrackAtVtx());
2137  h_ele_dEtaCl_propOut_all->Fill(gsfIter->deltaEtaSeedClusterTrackAtCalo());
2138  h_ele_dPhiCl_propOut_all->Fill(gsfIter->deltaPhiSeedClusterTrackAtCalo());
2139  h_ele_HoE_all->Fill(gsfIter->hadronicOverEm());
2140  double d = gsfIter->vertex().x() * gsfIter->vertex().x() + gsfIter->vertex().y() * gsfIter->vertex().y();
2141  h_ele_TIP_all->Fill(sqrt(d));
2142  h_ele_vertexEta_all->Fill(gsfIter->eta());
2143  h_ele_vertexPt_all->Fill(gsfIter->pt());
2144  float enrj1 = gsfIter->superCluster()->energy();
2145  // mee
2146  for (reco::GsfElectronCollection::const_iterator gsfIter2 = gsfIter + 1; gsfIter2 != gsfElectrons->end();
2147  gsfIter2++) {
2148  math::XYZTLorentzVector p12 = (*gsfIter).p4() + (*gsfIter2).p4();
2149  float mee2 = p12.Dot(p12);
2150  h_ele_mee_all->Fill(sqrt(mee2));
2151  float enrj2 = gsfIter2->superCluster()->energy();
2152  h_ele_E2mnE1vsMee_all->Fill(sqrt(mee2), enrj2 - enrj1);
2153  if (gsfIter->ecalDrivenSeed() && gsfIter2->ecalDrivenSeed())
2154  h_ele_E2mnE1vsMee_egeg_all->Fill(sqrt(mee2), enrj2 - enrj1);
2155  if (gsfIter->charge() * gsfIter2->charge() < 0.)
2156  h_ele_mee_os->Fill(sqrt(mee2));
2157  }
2158  }
2159 
2160  // association matching object-reco electrons
2161  int matchingObjectNum = 0;
2162 
2163  for (reco::GenJetCollection::const_iterator moIter = genJets->begin(); moIter != genJets->end(); ++moIter) {
2164  // number of matching objects
2165  matchingObjectNum++;
2166 
2167  if (moIter->energy() / cosh(moIter->eta()) > maxPt_ || std::abs(moIter->eta()) > maxAbsEta_)
2168  continue;
2169 
2170  // suppress the endcaps
2171  //if (std::abs(moIter->eta()) > 1.5) continue;
2172  // select central z
2173  //if ( std::abs((*mcIter)->production_vertex()->position().z())>50.) continue;
2174 
2175  h_matchingObjectEta->Fill(moIter->eta());
2176  h_matchingObjectAbsEta->Fill(std::abs(moIter->eta()));
2177  h_matchingObjectP->Fill(moIter->energy());
2178  h_matchingObjectPt->Fill(moIter->energy() / cosh(moIter->eta()));
2179  h_matchingObjectPhi->Fill(moIter->phi());
2180  h_matchingObjectZ->Fill(moIter->vz());
2181 
2182  // looking for the best matching gsf electron
2183  bool okGsfFound = false;
2184  double gsfOkRatio = 999999.;
2185 
2186  // find best matched electron
2187  reco::GsfElectron bestGsfElectron;
2188  for (reco::GsfElectronCollection::const_iterator gsfIter = gsfElectrons->begin(); gsfIter != gsfElectrons->end();
2189  gsfIter++) {
2190  double dphi = gsfIter->phi() - moIter->phi();
2191  if (std::abs(dphi) > CLHEP::pi)
2192  dphi = dphi < 0 ? (CLHEP::twopi) + dphi : dphi - CLHEP::twopi;
2193  double deltaR = sqrt(std::pow((gsfIter->eta() - moIter->eta()), 2) + std::pow(dphi, 2));
2194  if (deltaR < deltaR_) {
2195  //if ( (genPc->pdg_id() == 11) && (gsfIter->charge() < 0.) || (genPc->pdg_id() == -11) &&
2196  //(gsfIter->charge() > 0.) ){
2197  double tmpGsfRatio = gsfIter->p() / moIter->energy();
2198  if (std::abs(tmpGsfRatio - 1) < std::abs(gsfOkRatio - 1)) {
2199  gsfOkRatio = tmpGsfRatio;
2200  bestGsfElectron = *gsfIter;
2201  okGsfFound = true;
2202  }
2203  //}
2204  }
2205  } // loop over rec ele to look for the best one
2206 
2207  // analysis when the matching object is matched by a rec electron
2208  if (okGsfFound) {
2209  // electron related distributions
2210  h_ele_charge->Fill(bestGsfElectron.charge());
2211  h_ele_chargeVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.charge());
2212  h_ele_chargeVsPhi->Fill(bestGsfElectron.phi(), bestGsfElectron.charge());
2213  h_ele_chargeVsPt->Fill(bestGsfElectron.pt(), bestGsfElectron.charge());
2214  h_ele_vertexP->Fill(bestGsfElectron.p());
2215  h_ele_vertexPt->Fill(bestGsfElectron.pt());
2216  h_ele_vertexPtVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.pt());
2217  h_ele_vertexPtVsPhi->Fill(bestGsfElectron.phi(), bestGsfElectron.pt());
2218  h_ele_vertexEta->Fill(bestGsfElectron.eta());
2219  // generated distributions for matched electrons
2220  h_ele_matchingObjectPt_matched->Fill(moIter->energy() / cosh(moIter->eta()));
2221  h_ele_matchingObjectPhi_matched->Fill(moIter->phi());
2222  h_ele_matchingObjectAbsEta_matched->Fill(std::abs(moIter->eta()));
2223  h_ele_matchingObjectEta_matched->Fill(moIter->eta());
2224  h_ele_vertexEtaVsPhi->Fill(bestGsfElectron.phi(), bestGsfElectron.eta());
2225  h_ele_vertexPhi->Fill(bestGsfElectron.phi());
2226  h_ele_vertexX->Fill(bestGsfElectron.vertex().x());
2227  h_ele_vertexY->Fill(bestGsfElectron.vertex().y());
2228  h_ele_vertexZ->Fill(bestGsfElectron.vertex().z());
2229  h_ele_matchingObjectZ_matched->Fill(moIter->vz());
2230  double d =
2231  (bestGsfElectron.vertex().x() - bs.position().x()) * (bestGsfElectron.vertex().x() - bs.position().x()) +
2232  (bestGsfElectron.vertex().y() - bs.position().y()) * (bestGsfElectron.vertex().y() - bs.position().y());
2233  d = sqrt(d);
2234  h_ele_vertexTIP->Fill(d);
2235  h_ele_vertexTIPVsEta->Fill(bestGsfElectron.eta(), d);
2236  h_ele_vertexTIPVsPhi->Fill(bestGsfElectron.phi(), d);
2237  h_ele_vertexTIPVsPt->Fill(bestGsfElectron.pt(), d);
2238  h_ele_EtaMnEtamatchingObject->Fill(bestGsfElectron.eta() - moIter->eta());
2239  h_ele_EtaMnEtamatchingObjectVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.eta() - moIter->eta());
2240  h_ele_EtaMnEtamatchingObjectVsPhi->Fill(bestGsfElectron.phi(), bestGsfElectron.eta() - moIter->eta());
2241  h_ele_EtaMnEtamatchingObjectVsPt->Fill(bestGsfElectron.pt(), bestGsfElectron.eta() - moIter->eta());
2242  h_ele_PhiMnPhimatchingObject->Fill(bestGsfElectron.phi() - moIter->phi());
2243  h_ele_PhiMnPhimatchingObject2->Fill(bestGsfElectron.phi() - moIter->phi());
2244  h_ele_PhiMnPhimatchingObjectVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.phi() - moIter->phi());
2245  h_ele_PhiMnPhimatchingObjectVsPhi->Fill(bestGsfElectron.phi(), bestGsfElectron.phi() - moIter->phi());
2246  h_ele_PhiMnPhimatchingObjectVsPt->Fill(bestGsfElectron.pt(), bestGsfElectron.phi() - moIter->phi());
2247  h_ele_PoPmatchingObject->Fill(bestGsfElectron.p() / moIter->energy());
2248  h_ele_PoPmatchingObjectVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.p() / moIter->energy());
2249  h_ele_PoPmatchingObjectVsPhi->Fill(bestGsfElectron.phi(), bestGsfElectron.p() / moIter->energy());
2250  h_ele_PoPmatchingObjectVsPt->Fill(bestGsfElectron.py(), bestGsfElectron.p() / moIter->energy());
2251  if (bestGsfElectron.isEB())
2252  h_ele_PoPmatchingObject_barrel->Fill(bestGsfElectron.p() / moIter->energy());
2253  if (bestGsfElectron.isEE())
2254  h_ele_PoPmatchingObject_endcaps->Fill(bestGsfElectron.p() / moIter->energy());
2255 
2256  // supercluster related distributions
2257  reco::SuperClusterRef sclRef = bestGsfElectron.superCluster();
2258  if (!bestGsfElectron.ecalDrivenSeed() && bestGsfElectron.trackerDrivenSeed())
2259  sclRef = bestGsfElectron.parentSuperCluster();
2260  histSclEn_->Fill(sclRef->energy());
2261  double R = std::sqrt(sclRef->x() * sclRef->x() + sclRef->y() * sclRef->y() + sclRef->z() * sclRef->z());
2262  double Rt = std::sqrt(sclRef->x() * sclRef->x() + sclRef->y() * sclRef->y());
2263  histSclEt_->Fill(sclRef->energy() * (Rt / R));
2264  histSclEtVsEta_->Fill(sclRef->eta(), sclRef->energy() * (Rt / R));
2265  histSclEtVsPhi_->Fill(sclRef->phi(), sclRef->energy() * (Rt / R));
2266  if (bestGsfElectron.isEB())
2267  histSclEoEmatchingObject_barrel->Fill(sclRef->energy() / moIter->energy());
2268  if (bestGsfElectron.isEE())
2269  histSclEoEmatchingObject_endcaps->Fill(sclRef->energy() / moIter->energy());
2270  histSclEta_->Fill(sclRef->eta());
2271  histSclEtaVsPhi_->Fill(sclRef->phi(), sclRef->eta());
2272  histSclPhi_->Fill(sclRef->phi());
2273  histSclSigIEtaIEta_->Fill(bestGsfElectron.scSigmaIEtaIEta());
2274  if (bestGsfElectron.isEB())
2275  histSclSigIEtaIEta_barrel_->Fill(bestGsfElectron.scSigmaIEtaIEta());
2276  if (bestGsfElectron.isEE())
2277  histSclSigIEtaIEta_endcaps_->Fill(bestGsfElectron.scSigmaIEtaIEta());
2278  histSclE1x5_->Fill(bestGsfElectron.scE1x5());
2279  if (bestGsfElectron.isEB())
2280  histSclE1x5_barrel_->Fill(bestGsfElectron.scE1x5());
2281  if (bestGsfElectron.isEE())
2282  histSclE1x5_endcaps_->Fill(bestGsfElectron.scE1x5());
2283  histSclE2x5max_->Fill(bestGsfElectron.scE2x5Max());
2284  if (bestGsfElectron.isEB())
2285  histSclE2x5max_barrel_->Fill(bestGsfElectron.scE2x5Max());
2286  if (bestGsfElectron.isEE())
2287  histSclE2x5max_endcaps_->Fill(bestGsfElectron.scE2x5Max());
2288  histSclE5x5_->Fill(bestGsfElectron.scE5x5());
2289  if (bestGsfElectron.isEB())
2290  histSclE5x5_barrel_->Fill(bestGsfElectron.scE5x5());
2291  if (bestGsfElectron.isEE())
2292  histSclE5x5_endcaps_->Fill(bestGsfElectron.scE5x5());
2293 
2294  // track related distributions
2295  h_ele_ambiguousTracks->Fill(bestGsfElectron.ambiguousGsfTracksSize());
2296  h_ele_ambiguousTracksVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.ambiguousGsfTracksSize());
2297  h_ele_ambiguousTracksVsPhi->Fill(bestGsfElectron.phi(), bestGsfElectron.ambiguousGsfTracksSize());
2298  h_ele_ambiguousTracksVsPt->Fill(bestGsfElectron.pt(), bestGsfElectron.ambiguousGsfTracksSize());
2299  if (!readAOD_) { // track extra does not exist in AOD
2300  h_ele_foundHits->Fill(bestGsfElectron.gsfTrack()->numberOfValidHits());
2301  h_ele_foundHitsVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.gsfTrack()->numberOfValidHits());
2302  h_ele_foundHitsVsPhi->Fill(bestGsfElectron.phi(), bestGsfElectron.gsfTrack()->numberOfValidHits());
2303  h_ele_foundHitsVsPt->Fill(bestGsfElectron.pt(), bestGsfElectron.gsfTrack()->numberOfValidHits());
2304  h_ele_lostHits->Fill(bestGsfElectron.gsfTrack()->numberOfLostHits());
2305  h_ele_lostHitsVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.gsfTrack()->numberOfLostHits());
2306  h_ele_lostHitsVsPhi->Fill(bestGsfElectron.phi(), bestGsfElectron.gsfTrack()->numberOfLostHits());
2307  h_ele_lostHitsVsPt->Fill(bestGsfElectron.pt(), bestGsfElectron.gsfTrack()->numberOfLostHits());
2308  h_ele_chi2->Fill(bestGsfElectron.gsfTrack()->normalizedChi2());
2309  h_ele_chi2VsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.gsfTrack()->normalizedChi2());
2310  h_ele_chi2VsPhi->Fill(bestGsfElectron.phi(), bestGsfElectron.gsfTrack()->normalizedChi2());
2311  h_ele_chi2VsPt->Fill(bestGsfElectron.pt(), bestGsfElectron.gsfTrack()->normalizedChi2());
2312  }
2313  // from gsf track interface, hence using mean
2314  if (!readAOD_) { // track extra does not exist in AOD
2315  h_ele_PinMnPout->Fill(bestGsfElectron.gsfTrack()->innerMomentum().R() -
2316  bestGsfElectron.gsfTrack()->outerMomentum().R());
2317  h_ele_outerP->Fill(bestGsfElectron.gsfTrack()->outerMomentum().R());
2318  h_ele_outerPt->Fill(bestGsfElectron.gsfTrack()->outerMomentum().Rho());
2319  }
2320  // from electron interface, hence using mode
2321  h_ele_PinMnPout_mode->Fill(bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R());
2323  bestGsfElectron.eta(), bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R());
2325  bestGsfElectron.phi(), bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R());
2326  h_ele_PinMnPoutVsPt_mode->Fill(bestGsfElectron.pt(),
2327  bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R());
2328  h_ele_PinMnPoutVsE_mode->Fill(bestGsfElectron.caloEnergy(),
2329  bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R());
2330  if (!readAOD_) // track extra does not exist in AOD
2332  bestGsfElectron.gsfTrack()->normalizedChi2(),
2333  bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R());
2334  h_ele_outerP_mode->Fill(bestGsfElectron.trackMomentumOut().R());
2335  h_ele_outerPVsEta_mode->Fill(bestGsfElectron.eta(), bestGsfElectron.trackMomentumOut().R());
2336  h_ele_outerPt_mode->Fill(bestGsfElectron.trackMomentumOut().Rho());
2337  h_ele_outerPtVsEta_mode->Fill(bestGsfElectron.eta(), bestGsfElectron.trackMomentumOut().Rho());
2338  h_ele_outerPtVsPhi_mode->Fill(bestGsfElectron.phi(), bestGsfElectron.trackMomentumOut().Rho());
2339  h_ele_outerPtVsPt_mode->Fill(bestGsfElectron.pt(), bestGsfElectron.trackMomentumOut().Rho());
2340 
2341  if (!readAOD_) { // track extra does not exist in AOD
2342  edm::RefToBase<TrajectorySeed> seed = bestGsfElectron.gsfTrack()->extra()->seedRef();
2343  ElectronSeedRef elseed = seed.castTo<ElectronSeedRef>();
2344  h_ele_seed_dphi2_->Fill(elseed->dPhiNeg(1));
2345  h_ele_seed_dphi2VsEta_->Fill(bestGsfElectron.eta(), elseed->dPhiNeg(1));
2346  h_ele_seed_dphi2VsPt_->Fill(bestGsfElectron.pt(), elseed->dPhiNeg(1));
2347  h_ele_seed_drz2_->Fill(elseed->dRZNeg(1));
2348  h_ele_seed_drz2VsEta_->Fill(bestGsfElectron.eta(), elseed->dRZNeg(1));
2349  h_ele_seed_drz2VsPt_->Fill(bestGsfElectron.pt(), elseed->dRZNeg(1));
2350  h_ele_seed_subdet2_->Fill(elseed->subDet(1));
2351  }
2352  // match distributions
2353  h_ele_EoP->Fill(bestGsfElectron.eSuperClusterOverP());
2354  if (bestGsfElectron.ecalDrivenSeed())
2355  h_ele_EoP_eg->Fill(bestGsfElectron.eSuperClusterOverP());
2356  if (bestGsfElectron.isEB())
2357  h_ele_EoP_barrel->Fill(bestGsfElectron.eSuperClusterOverP());
2358  if (bestGsfElectron.isEB() && bestGsfElectron.ecalDrivenSeed())
2359  h_ele_EoP_eg_barrel->Fill(bestGsfElectron.eSuperClusterOverP());
2360  if (bestGsfElectron.isEE())
2361  h_ele_EoP_endcaps->Fill(bestGsfElectron.eSuperClusterOverP());
2362  if (bestGsfElectron.isEE() && bestGsfElectron.ecalDrivenSeed())
2363  h_ele_EoP_eg_endcaps->Fill(bestGsfElectron.eSuperClusterOverP());
2364  h_ele_EoPVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.eSuperClusterOverP());
2365  h_ele_EoPVsPhi->Fill(bestGsfElectron.phi(), bestGsfElectron.eSuperClusterOverP());
2366  h_ele_EoPVsE->Fill(bestGsfElectron.caloEnergy(), bestGsfElectron.eSuperClusterOverP());
2367  h_ele_EseedOP->Fill(bestGsfElectron.eSeedClusterOverP());
2368  if (bestGsfElectron.ecalDrivenSeed())
2369  h_ele_EseedOP_eg->Fill(bestGsfElectron.eSeedClusterOverP());
2370  if (bestGsfElectron.isEB())
2371  h_ele_EseedOP_barrel->Fill(bestGsfElectron.eSeedClusterOverP());
2372  if (bestGsfElectron.isEB() && bestGsfElectron.ecalDrivenSeed())
2373  h_ele_EseedOP_eg_barrel->Fill(bestGsfElectron.eSeedClusterOverP());
2374  if (bestGsfElectron.isEE())
2375  h_ele_EseedOP_endcaps->Fill(bestGsfElectron.eSeedClusterOverP());
2376  if (bestGsfElectron.isEE() && bestGsfElectron.ecalDrivenSeed())
2377  h_ele_EseedOP_eg_endcaps->Fill(bestGsfElectron.eSeedClusterOverP());
2378  h_ele_EseedOPVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.eSeedClusterOverP());
2379  h_ele_EseedOPVsPhi->Fill(bestGsfElectron.phi(), bestGsfElectron.eSeedClusterOverP());
2380  h_ele_EseedOPVsE->Fill(bestGsfElectron.caloEnergy(), bestGsfElectron.eSeedClusterOverP());
2381  h_ele_EoPout->Fill(bestGsfElectron.eSeedClusterOverPout());
2382  if (bestGsfElectron.ecalDrivenSeed())
2383  h_ele_EoPout_eg->Fill(bestGsfElectron.eSeedClusterOverPout());
2384  if (bestGsfElectron.isEB())
2385  h_ele_EoPout_barrel->Fill(bestGsfElectron.eSeedClusterOverPout());
2386  if (bestGsfElectron.isEB() && bestGsfElectron.ecalDrivenSeed())
2387  h_ele_EoPout_eg_barrel->Fill(bestGsfElectron.eSeedClusterOverPout());
2388  if (bestGsfElectron.isEE())
2389  h_ele_EoPout_endcaps->Fill(bestGsfElectron.eSeedClusterOverPout());
2390  if (bestGsfElectron.isEE() && bestGsfElectron.ecalDrivenSeed())
2391  h_ele_EoPout_eg_endcaps->Fill(bestGsfElectron.eSeedClusterOverPout());
2392  h_ele_EoPoutVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.eSeedClusterOverPout());
2393  h_ele_EoPoutVsPhi->Fill(bestGsfElectron.phi(), bestGsfElectron.eSeedClusterOverPout());
2394  h_ele_EoPoutVsE->Fill(bestGsfElectron.caloEnergy(), bestGsfElectron.eSeedClusterOverPout());
2395  h_ele_EeleOPout->Fill(bestGsfElectron.eEleClusterOverPout());
2396  if (bestGsfElectron.ecalDrivenSeed())
2397  h_ele_EeleOPout_eg->Fill(bestGsfElectron.eEleClusterOverPout());
2398  if (bestGsfElectron.isEB())
2399  h_ele_EeleOPout_barrel->Fill(bestGsfElectron.eEleClusterOverPout());
2400  if (bestGsfElectron.isEB() && bestGsfElectron.ecalDrivenSeed())
2401  h_ele_EeleOPout_eg_barrel->Fill(bestGsfElectron.eEleClusterOverPout());
2402  if (bestGsfElectron.isEE())
2403  h_ele_EeleOPout_endcaps->Fill(bestGsfElectron.eEleClusterOverPout());
2404  if (bestGsfElectron.isEE() && bestGsfElectron.ecalDrivenSeed())
2405  h_ele_EeleOPout_eg_endcaps->Fill(bestGsfElectron.eEleClusterOverPout());
2406  h_ele_EeleOPoutVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.eEleClusterOverPout());
2407  h_ele_EeleOPoutVsPhi->Fill(bestGsfElectron.phi(), bestGsfElectron.eEleClusterOverPout());
2408  h_ele_EeleOPoutVsE->Fill(bestGsfElectron.caloEnergy(), bestGsfElectron.eEleClusterOverPout());
2409  h_ele_dEtaSc_propVtx->Fill(bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
2410  if (bestGsfElectron.ecalDrivenSeed())
2412  if (bestGsfElectron.isEB())
2414  if (bestGsfElectron.isEB() && bestGsfElectron.ecalDrivenSeed())
2416  if (bestGsfElectron.isEE())
2418  if (bestGsfElectron.isEE() && bestGsfElectron.ecalDrivenSeed())
2420  h_ele_dEtaScVsEta_propVtx->Fill(bestGsfElectron.eta(), bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
2421  h_ele_dEtaScVsPhi_propVtx->Fill(bestGsfElectron.phi(), bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
2422  h_ele_dEtaScVsPt_propVtx->Fill(bestGsfElectron.pt(), bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
2423  h_ele_dPhiSc_propVtx->Fill(bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
2424  if (bestGsfElectron.ecalDrivenSeed())
2426  if (bestGsfElectron.isEB())
2428  if (bestGsfElectron.isEB() && bestGsfElectron.ecalDrivenSeed())
2430  if (bestGsfElectron.isEE())
2432  if (bestGsfElectron.isEE() && bestGsfElectron.ecalDrivenSeed())
2434  h_ele_dPhiScVsEta_propVtx->Fill(bestGsfElectron.eta(), bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
2435  h_ele_dPhiScVsPhi_propVtx->Fill(bestGsfElectron.phi(), bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
2436  h_ele_dPhiScVsPt_propVtx->Fill(bestGsfElectron.pt(), bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
2437  h_ele_dEtaCl_propOut->Fill(bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
2438  if (bestGsfElectron.ecalDrivenSeed())
2440  if (bestGsfElectron.isEB())
2442  if (bestGsfElectron.isEB() && bestGsfElectron.ecalDrivenSeed())
2444  if (bestGsfElectron.isEE())
2446  if (bestGsfElectron.isEE() && bestGsfElectron.ecalDrivenSeed())
2448  h_ele_dEtaClVsEta_propOut->Fill(bestGsfElectron.eta(), bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
2449  h_ele_dEtaClVsPhi_propOut->Fill(bestGsfElectron.phi(), bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
2450  h_ele_dEtaClVsPt_propOut->Fill(bestGsfElectron.pt(), bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
2451  h_ele_dPhiCl_propOut->Fill(bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
2452  if (bestGsfElectron.ecalDrivenSeed())
2454  if (bestGsfElectron.isEB())
2456  if (bestGsfElectron.isEB() && bestGsfElectron.ecalDrivenSeed())
2458  if (bestGsfElectron.isEE())
2460  if (bestGsfElectron.isEE() && bestGsfElectron.ecalDrivenSeed())
2462  h_ele_dPhiClVsEta_propOut->Fill(bestGsfElectron.eta(), bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
2463  h_ele_dPhiClVsPhi_propOut->Fill(bestGsfElectron.phi(), bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
2464  h_ele_dPhiClVsPt_propOut->Fill(bestGsfElectron.pt(), bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
2465  h_ele_dEtaEleCl_propOut->Fill(bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
2466  if (bestGsfElectron.ecalDrivenSeed())
2468  if (bestGsfElectron.isEB())
2470  if (bestGsfElectron.isEB() && bestGsfElectron.ecalDrivenSeed())
2472  if (bestGsfElectron.isEE())
2474  if (bestGsfElectron.isEE() && bestGsfElectron.ecalDrivenSeed())
2476  h_ele_dEtaEleClVsEta_propOut->Fill(bestGsfElectron.eta(), bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
2477  h_ele_dEtaEleClVsPhi_propOut->Fill(bestGsfElectron.phi(), bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
2478  h_ele_dEtaEleClVsPt_propOut->Fill(bestGsfElectron.pt(), bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
2479  h_ele_dPhiEleCl_propOut->Fill(bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
2480  if (bestGsfElectron.ecalDrivenSeed())
2482  if (bestGsfElectron.isEB())
2484  if (bestGsfElectron.isEB() && bestGsfElectron.ecalDrivenSeed())
2486  if (bestGsfElectron.isEE())
2488  if (bestGsfElectron.isEE() && bestGsfElectron.ecalDrivenSeed())
2490  h_ele_dPhiEleClVsEta_propOut->Fill(bestGsfElectron.eta(), bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
2491  h_ele_dPhiEleClVsPhi_propOut->Fill(bestGsfElectron.phi(), bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
2492  h_ele_dPhiEleClVsPt_propOut->Fill(bestGsfElectron.pt(), bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
2493  h_ele_HoE->Fill(bestGsfElectron.hadronicOverEm());
2494  if (bestGsfElectron.ecalDrivenSeed())
2495  h_ele_HoE_eg->Fill(bestGsfElectron.hadronicOverEm());
2496  if (bestGsfElectron.isEB())
2497  h_ele_HoE_barrel->Fill(bestGsfElectron.hadronicOverEm());
2498  if (bestGsfElectron.isEB() && bestGsfElectron.ecalDrivenSeed())
2499  h_ele_HoE_eg_barrel->Fill(bestGsfElectron.hadronicOverEm());
2500  if (bestGsfElectron.isEE())
2501  h_ele_HoE_endcaps->Fill(bestGsfElectron.hadronicOverEm());
2502  if (bestGsfElectron.isEE() && bestGsfElectron.ecalDrivenSeed())
2503  h_ele_HoE_eg_endcaps->Fill(bestGsfElectron.hadronicOverEm());
2504  if (!bestGsfElectron.isEBEtaGap() && !bestGsfElectron.isEBPhiGap() && !bestGsfElectron.isEBEEGap() &&
2505  !bestGsfElectron.isEERingGap() && !bestGsfElectron.isEEDeeGap())
2506  h_ele_HoE_fiducial->Fill(bestGsfElectron.hadronicOverEm());
2507  h_ele_HoEVsEta->Fill(bestGsfElectron.eta(), bestGsfElectron.hadronicOverEm());
2508  h_ele_HoEVsPhi->Fill(bestGsfElectron.phi(), bestGsfElectron.hadronicOverEm());
2509  h_ele_HoEVsE->Fill(bestGsfElectron.caloEnergy(), bestGsfElectron.hadronicOverEm());
2510 
2511  //classes
2512  int eleClass = bestGsfElectron.classification();
2513  if (bestGsfElectron.isEE())
2514  eleClass += 10;
2515  h_ele_classes->Fill(eleClass);
2516 
2517  h_ele_eta->Fill(std::abs(bestGsfElectron.eta()));
2518  if (bestGsfElectron.classification() == GsfElectron::GOLDEN)
2519  h_ele_eta_golden->Fill(std::abs(bestGsfElectron.eta()));
2520  if (bestGsfElectron.classification() == GsfElectron::BIGBREM)
2521  h_ele_eta_bbrem->Fill(std::abs(bestGsfElectron.eta()));
2522  //if (bestGsfElectron.classification() == GsfElectron::OLDNARROW) h_ele_eta_narrow ->Fill(std::abs(bestGsfElectron.eta()));
2523  if (bestGsfElectron.classification() == GsfElectron::SHOWERING)
2524  h_ele_eta_shower->Fill(std::abs(bestGsfElectron.eta()));
2525 
2526  //fbrem
2527  double fbrem_mean = 0.;
2528  if (!readAOD_) // track extra does not exist in AOD
2529  fbrem_mean =
2530  1. - bestGsfElectron.gsfTrack()->outerMomentum().R() / bestGsfElectron.gsfTrack()->innerMomentum().R();
2531  double fbrem_mode = bestGsfElectron.fbrem();
2532  h_ele_fbrem->Fill(fbrem_mode);
2533  h_ele_fbremVsEta_mode->Fill(bestGsfElectron.eta(), fbrem_mode);
2534  if (!readAOD_) // track extra does not exist in AOD
2535  h_ele_fbremVsEta_mean->Fill(bestGsfElectron.eta(), fbrem_mean);
2536 
2537  if (bestGsfElectron.classification() == GsfElectron::GOLDEN)
2538  h_ele_PinVsPoutGolden_mode->Fill(bestGsfElectron.trackMomentumOut().R(),
2539  bestGsfElectron.trackMomentumAtVtx().R());
2540  if (bestGsfElectron.classification() == GsfElectron::SHOWERING)
2541  h_ele_PinVsPoutShowering_mode->Fill(bestGsfElectron.trackMomentumOut().R(),
2542  bestGsfElectron.trackMomentumAtVtx().R());
2543  if (!readAOD_) // track extra does not exist in AOD
2544  if (bestGsfElectron.classification() == GsfElectron::GOLDEN)
2545  h_ele_PinVsPoutGolden_mean->Fill(bestGsfElectron.gsfTrack()->outerMomentum().R(),
2546  bestGsfElectron.gsfTrack()->innerMomentum().R());
2547  if (!readAOD_) // track extra does not exist in AOD
2548  if (bestGsfElectron.classification() == GsfElectron::SHOWERING)
2549  h_ele_PinVsPoutShowering_mean->Fill(bestGsfElectron.gsfTrack()->outerMomentum().R(),
2550  bestGsfElectron.gsfTrack()->innerMomentum().R());
2551  if (bestGsfElectron.classification() == GsfElectron::GOLDEN)
2552  h_ele_PtinVsPtoutGolden_mode->Fill(bestGsfElectron.trackMomentumOut().Rho(),
2553  bestGsfElectron.trackMomentumAtVtx().Rho());
2554  if (bestGsfElectron.classification() == GsfElectron::SHOWERING)
2555  h_ele_PtinVsPtoutShowering_mode->Fill(bestGsfElectron.trackMomentumOut().Rho(),
2556  bestGsfElectron.trackMomentumAtVtx().Rho());
2557  if (!readAOD_) // track extra does not exist in AOD
2558  if (bestGsfElectron.classification() == GsfElectron::GOLDEN)
2559  h_ele_PtinVsPtoutGolden_mean->Fill(bestGsfElectron.gsfTrack()->outerMomentum().Rho(),
2560  bestGsfElectron.gsfTrack()->innerMomentum().Rho());
2561  if (!readAOD_) // track extra does not exist in AOD
2562  if (bestGsfElectron.classification() == GsfElectron::SHOWERING)
2563  h_ele_PtinVsPtoutShowering_mean->Fill(bestGsfElectron.gsfTrack()->outerMomentum().Rho(),
2564  bestGsfElectron.gsfTrack()->innerMomentum().Rho());
2565 
2566  h_ele_mva->Fill(bestGsfElectron.mva_e_pi());
2567  if (bestGsfElectron.ecalDrivenSeed())
2568  h_ele_provenance->Fill(1.);
2569  if (bestGsfElectron.trackerDrivenSeed())
2570  h_ele_provenance->Fill(-1.);
2571  if (bestGsfElectron.trackerDrivenSeed() || bestGsfElectron.ecalDrivenSeed())
2572  h_ele_provenance->Fill(0.);
2573  if (bestGsfElectron.trackerDrivenSeed() && !bestGsfElectron.ecalDrivenSeed())
2574  h_ele_provenance->Fill(-2.);
2575  if (!bestGsfElectron.trackerDrivenSeed() && bestGsfElectron.ecalDrivenSeed())
2576  h_ele_provenance->Fill(2.);
2577 
2578  h_ele_tkSumPt_dr03->Fill(bestGsfElectron.dr03TkSumPt());
2579  h_ele_ecalRecHitSumEt_dr03->Fill(bestGsfElectron.dr03EcalRecHitSumEt());
2580  h_ele_hcalDepth1TowerSumEt_dr03->Fill(bestGsfElectron.dr03HcalTowerSumEt(1));
2581  h_ele_hcalDepth2TowerSumEt_dr03->Fill(bestGsfElectron.dr03HcalTowerSumEt(2));
2582  h_ele_tkSumPt_dr04->Fill(bestGsfElectron.dr04TkSumPt());
2583  h_ele_ecalRecHitSumEt_dr04->Fill(bestGsfElectron.dr04EcalRecHitSumEt());
2584  h_ele_hcalDepth1TowerSumEt_dr04->Fill(bestGsfElectron.dr04HcalTowerSumEt(1));
2585  h_ele_hcalDepth2TowerSumEt_dr04->Fill(bestGsfElectron.dr04HcalTowerSumEt(2));
2586 
2587  } // gsf electron found
2588 
2589  // } // matching object found
2590 
2591  // }
2592 
2593  } // loop overmatching object
2594 
2595  h_matchingObjectNum->Fill(matchingObjectNum);
2596 }
void analyze(const edm::Event &e, const edm::EventSetup &c) override
static std::vector< std::string > checklist log
const edm::EventSetup & c
bool isEBEtaGap() const
Definition: GsfElectron.h:333
virtual SuperClusterRef parentSuperCluster() const
Definition: GsfElectron.h:160
double pt() const final
transverse momentum
float eSuperClusterOverP() const
Definition: GsfElectron.h:221
bool isEBEEGap() const
Definition: GsfElectron.h:331
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
math::XYZVectorF trackMomentumAtVtx() const
Definition: GsfElectron.h:268
float dr03HcalTowerSumEt(int depth=0) const
Definition: GsfElectron.h:576
float dr04TkSumPt() const
Definition: GsfElectron.h:597
bool isEERingGap() const
Definition: GsfElectron.h:337
const Point & vertex() const override
vertex position (overwritten by PF...)
TrajectoryStateTransform transformer_
float fbrem() const
Definition: GsfElectron.h:809
float scE2x5Max() const
Definition: GsfElectron.h:498
uint16_t size_type
bool isEEDeeGap() const
Definition: GsfElectron.h:336
bool isEE() const
Definition: GsfElectron.h:329
bool isEB() const
Definition: GsfElectron.h:328
const Double_t pi
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
tuple d
Definition: ztail.py:151
GsfTrackRef gsfTrack() const override
reference to a GsfTrack
Definition: GsfElectron.h:156
float deltaEtaSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:225
int iEvent
Definition: GenABIO.cc:224
double p() const final
magnitude of momentum vector
float hadronicOverEm() const
Definition: GsfElectron.h:500
float eSeedClusterOverP() const
Definition: GsfElectron.h:222
float dr04EcalRecHitSumEt() const
Definition: GsfElectron.h:599
float deltaPhiSeedClusterTrackAtCalo() const
Definition: GsfElectron.h:229
T sqrt(T t)
Definition: SSEVec.h:19
math::XYZVectorF trackMomentumOut() const
Definition: GsfElectron.h:270
float deltaPhiSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:228
float dr03TkSumPt() const
Definition: GsfElectron.h:557
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
float eEleClusterOverPout() const
Definition: GsfElectron.h:224
float eSeedClusterOverPout() const
Definition: GsfElectron.h:223
double py() const final
y coordinate of momentum vector
float scSigmaIEtaIEta() const
Definition: GsfElectron.h:496
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:500
float deltaPhiEleClusterTrackAtCalo() const
Definition: GsfElectron.h:230
Log< level::Info, false > LogInfo
T const * product() const
Definition: Handle.h:70
float deltaEtaEleClusterTrackAtCalo() const
Definition: GsfElectron.h:227
Classification classification() const
Definition: GsfElectron.h:805
REF castTo() const
Definition: RefToBase.h:257
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
GsfTrackRefVector::size_type ambiguousGsfTracksSize() const
Definition: GsfElectron.h:766
float dr03EcalRecHitSumEt() const
Definition: GsfElectron.h:559
float mva_e_pi() const
Definition: GsfElectron.h:744
std::string const & label() const
Definition: InputTag.h:36
edm::EventID id() const
Definition: EventBase.h:59
float deltaEtaSeedClusterTrackAtCalo() const
Definition: GsfElectron.h:226
bool isEBPhiGap() const
Definition: GsfElectron.h:334
bool trackerDrivenSeed() const
Definition: GsfElectron.h:159
tuple cout
Definition: gather_cfg.py:144
const Point & position() const
position
Definition: BeamSpot.h:59
float scE5x5() const
Definition: GsfElectron.h:499
edm::ESHandle< MagneticField > theMagField
float dr04HcalTowerSumEt(int depth=0) const
Definition: GsfElectron.h:600
edm::ESHandle< TrackerGeometry > pDD
double phi() const final
momentum azimuthal angle
float caloEnergy() const
Definition: GsfElectron.h:899
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
SuperClusterRef superCluster() const override
reference to a SuperCluster
Definition: GsfElectron.h:155
GsfElectronMCFakeAnalyzer(const edm::ParameterSet &conf)
int charge() const final
electric charge
float scE1x5() const
Definition: GsfElectron.h:497
bool ecalDrivenSeed() const
Definition: GsfElectron.h:158
double eta() const final
momentum pseudorapidity