CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
GsfElectronFakeAnalyzer.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: RecoEgamma/Examples
4 // Class: GsfElectronFakeAnalyzer
5 //
13 //
14 // Original Author: Ursula Berthon
15 // Created: Mon Mar 27 13:22:06 CEST 2006
16 // $Id: GsfElectronFakeAnalyzer.cc,v 1.32 2011/03/04 14:43:15 chamont Exp $
17 //
18 //
19 
20 // user include files
38 
39 #include "CLHEP/Units/GlobalPhysicalConstants.h"
40 #include <iostream>
41 #include "TMath.h"
42 #include "TFile.h"
43 #include "TH1F.h"
44 #include "TH1I.h"
45 #include "TH2F.h"
46 #include "TProfile.h"
47 #include "TTree.h"
48 #include <iostream>
49 
50 using namespace reco;
51 
53 {
54 
55  outputFile_ = conf.getParameter<std::string>("outputFile");
56  histfile_ = new TFile(outputFile_.c_str(),"RECREATE");
57  electronCollection_=conf.getParameter<edm::InputTag>("electronCollection");
58  matchingObjectCollection_ = conf.getParameter<edm::InputTag>("matchingObjectCollection");
59  readAOD_ = conf.getParameter<bool>("readAOD");
60  maxPt_ = conf.getParameter<double>("MaxPt");
61  maxAbsEta_ = conf.getParameter<double>("MaxAbsEta");
62  deltaR_ = conf.getParameter<double>("DeltaR");
63 
64  edm::ParameterSet pset =
65  conf.getParameter<edm::ParameterSet>("HistosConfigurationFake") ;
66 
67  etamin=pset.getParameter<double>("Etamin");
68  etamax=pset.getParameter<double>("Etamax");
69  phimin=pset.getParameter<double>("Phimin");
70  phimax=pset.getParameter<double>("Phimax");
71  ptmax=pset.getParameter<double>("Ptmax");
72  pmax=pset.getParameter<double>("Pmax");
73  eopmax=pset.getParameter<double>("Eopmax");
74  eopmaxsht=pset.getParameter<double>("Eopmaxsht");
75  detamin=pset.getParameter<double>("Detamin");
76  detamax=pset.getParameter<double>("Detamax");
77  dphimin=pset.getParameter<double>("Dphimin");
78  dphimax=pset.getParameter<double>("Dphimax");
79  detamatchmin=pset.getParameter<double>("Detamatchmin");
80  detamatchmax=pset.getParameter<double>("Detamatchmax");
81  dphimatchmin=pset.getParameter<double>("Dphimatchmin");
82  dphimatchmax=pset.getParameter<double>("Dphimatchmax");
83  fhitsmax=pset.getParameter<double>("Fhitsmax");
84  lhitsmax=pset.getParameter<double>("Lhitsmax");
85  nbineta=pset.getParameter<int>("Nbineta");
86  nbineta2D=pset.getParameter<int>("Nbineta2D");
87  nbinp=pset.getParameter<int>("Nbinp");
88  nbinpt=pset.getParameter<int>("Nbinpt");
89  nbinp2D=pset.getParameter<int>("Nbinp2D");
90  nbinpt2D=pset.getParameter<int>("Nbinpt2D");
91  nbinpteff=pset.getParameter<int>("Nbinpteff");
92  nbinphi=pset.getParameter<int>("Nbinphi");
93  nbinphi2D=pset.getParameter<int>("Nbinphi2D");
94  nbineop=pset.getParameter<int>("Nbineop");
95  nbineop2D=pset.getParameter<int>("Nbineop2D");
96  nbinfhits=pset.getParameter<int>("Nbinfhits");
97  nbinlhits=pset.getParameter<int>("Nbinlhits");
98  nbinxyz=pset.getParameter<int>("Nbinxyz");
99  nbindeta=pset.getParameter<int>("Nbindeta");
100  nbindphi=pset.getParameter<int>("Nbindphi");
101  nbindetamatch=pset.getParameter<int>("Nbindetamatch");
102  nbindphimatch=pset.getParameter<int>("Nbindphimatch");
103  nbindetamatch2D=pset.getParameter<int>("Nbindetamatch2D");
104  nbindphimatch2D=pset.getParameter<int>("Nbindphimatch2D");
105  nbinmee= pset.getParameter<int>("Nbinmee");
106  meemin=pset.getParameter<double>("Meemin");
107  meemax=pset.getParameter<double>("Meemax");
108  nbinhoe= pset.getParameter<int>("Nbinhoe");
109  hoemin=pset.getParameter<double>("Hoemin");
110  hoemax=pset.getParameter<double>("Hoemax");
111 
112 }
113 
115 {
116 
117  // do anything here that needs to be done at desctruction time
118  // (e.g. close files, deallocate resources etc.)
119  histfile_->Write();
120  histfile_->Close();
121 }
122 
124 
125  histfile_->cd();
126 
127 
128  // matching object
129  std::string::size_type locJet = matchingObjectCollection_.label().find( "iterativeCone5CaloJets", 0 );
130  std::string type_;
131  if ( locJet != std::string::npos ) {
132  std::cout << "Matching objects are CaloJets " << std::endl;
133  type_ = "CaloJet";
134  } else {
135  std::cout << "Didn't recognize input matching objects!! " << std::endl;
136  }
137 
138  std::string htitle, hlabel;
139  hlabel="h_"+type_+"Num"; htitle="# "+type_+"s";
140  h_matchingObjectNum = new TH1F( hlabel.c_str(), htitle.c_str(), nbinfhits,0.,fhitsmax );
141 
142  // rec event
143 
144  histNum_= new TH1F("h_recEleNum","# rec electrons",20, 0.,20.);
145 
146  // matching object distributions
147  hlabel="h_"+type_+"_eta"; htitle=type_+" #eta";
148  h_matchingObjectEta = new TH1F( hlabel.c_str(), htitle.c_str(), nbineta,etamin,etamax);
149  hlabel="h_"+type_+"_abseta"; htitle=type_+" |#eta|";
150  h_matchingObjectAbsEta = new TH1F( hlabel.c_str(), htitle.c_str(), nbineta/2,0.,etamax);
151  hlabel="h_"+type_+"_P"; htitle=type_+" p";
152  h_matchingObjectP = new TH1F( hlabel.c_str(), htitle.c_str(), nbinp,0.,pmax);
153  hlabel="h_"+type_+"_Pt"; htitle=type_+" pt";
154  h_matchingObjectPt = new TH1F( hlabel.c_str(),htitle.c_str(), nbinpteff,5.,ptmax);
155  hlabel="h_"+type_+"_phi"; htitle=type_+" phi";
156  h_matchingObjectPhi = new TH1F( hlabel.c_str(), htitle.c_str(), nbinphi,phimin,phimax);
157  hlabel="h_"+type_+"_z"; htitle=type_+" z";
158  h_matchingObjectZ = new TH1F( hlabel.c_str(), htitle.c_str(), nbinxyz, -25, 25 );
159 
160  // all electrons
161  h_ele_EoverP_all = new TH1F( "h_ele_EoverP_all", "ele E/P_{vertex}, all reco electrons", nbineop,0.,eopmax);
162  h_ele_EseedOP_all = new TH1F( "h_ele_EseedOP_all", "ele E_{seed}/P_{vertex}, all reco electrons", nbineop,0.,eopmax);
163  h_ele_EoPout_all = new TH1F( "h_ele_EoPout_all", "ele E_{seed}/P_{out}, all reco electrons", nbineop,0.,eopmax);
164  h_ele_EeleOPout_all = new TH1F( "h_ele_EeleOPout_all", "ele E_{ele}/P_{out}, all reco electrons", nbineop,0.,eopmax);
165  h_ele_dEtaSc_propVtx_all = new TH1F( "h_ele_dEtaSc_propVtx_all", "ele #eta_{sc} - #eta_{tr}, prop from vertex, all reco electrons", nbindetamatch,detamatchmin,detamatchmax);
166  h_ele_dPhiSc_propVtx_all = new TH1F( "h_ele_dPhiSc_propVtx_all", "ele #phi_{sc} - #phi_{tr}, prop from vertex, all reco electrons", nbindphimatch,dphimatchmin,dphimatchmax);
167  h_ele_dEtaCl_propOut_all = new TH1F( "h_ele_dEtaCl_propOut_all", "ele #eta_{cl} - #eta_{tr}, prop from outermost, all reco electrons", nbindetamatch,detamatchmin,detamatchmax);
168  h_ele_dPhiCl_propOut_all = new TH1F( "h_ele_dPhiCl_propOut_all", "ele #phi_{cl} - #phi_{tr}, prop from outermost, all reco electrons", nbindphimatch,dphimatchmin,dphimatchmax);
169  h_ele_HoE_all = new TH1F("h_ele_HoE_all", "ele hadronic energy / em energy, all reco electrons", nbinhoe, hoemin, hoemax) ;
170  h_ele_vertexPt_all = new TH1F( "h_ele_vertexPt_all", "ele p_{T}, all reco electrons", nbinpteff,5.,ptmax);
171  h_ele_vertexPt_all->Sumw2();
172  h_ele_vertexEta_all = new TH1F( "h_ele_vertexEta_all", "ele eta, all reco electrons", nbineta,etamin,etamax);
173  h_ele_vertexEta_all->Sumw2();
174  h_ele_TIP_all = new TH1F( "h_ele_TIP_all", "ele vertex transverse radius, all reco electrons", 100,0.,0.2);
175  h_ele_mee_all = new TH1F( "h_ele_mee_all", "ele pairs invariant mass, all reco electrons", nbinmee, meemin, meemax );
176  h_ele_mee_os = new TH1F( "h_ele_mee_os", "ele pairs invariant mass, opp. sign", nbinmee, meemin, meemax );
177 
178  // duplicates
179  h_ele_E2mnE1vsMee_all = new TH2F("h_ele_E2mnE1vsMee_all", "E2 - E1 vs ele pairs invariant mass, all electrons", nbinmee, meemin, meemax, 100, -50., 50. );
180  h_ele_E2mnE1vsMee_egeg_all = new TH2F("h_ele_E2mnE1vsMee_egeg_all", "E2 - E1 vs ele pairs invariant mass, ecal driven pairs, all electrons", nbinmee, meemin, meemax, 100, -50., 50. );
181 
182  // matched electrons
183  h_ele_charge = new TH1F( "h_ele_charge", "ele charge", 5,-2.,2.);
184  h_ele_chargeVsEta = new TH2F( "h_ele_chargeVsEta", "ele charge vs eta", nbineta2D,etamin,etamax,5,-2.,2.);
185  h_ele_chargeVsPhi = new TH2F( "h_ele_chargeVsPhi", "ele charge vs phi", nbinphi2D,phimin,phimax,5,-2.,2.);
186  h_ele_chargeVsPt = new TH2F( "h_ele_chargeVsPt", "ele charge vs pt", nbinpt,0.,100.,5,-2.,2.);
187  h_ele_vertexP = new TH1F( "h_ele_vertexP", "ele momentum", nbinp,0.,pmax);
188  h_ele_vertexPt = new TH1F( "h_ele_vertexPt", "ele transverse momentum", nbinpt,0.,ptmax);
189  h_ele_vertexPtVsEta = new TH2F( "h_ele_vertexPtVsEta", "ele transverse momentum vs eta",nbineta2D,etamin,etamax,nbinpt2D,0.,ptmax);
190  h_ele_vertexPtVsPhi = new TH2F( "h_ele_vertexPtVsPhi", "ele transverse momentum vs phi",nbinphi2D,phimin,phimax,nbinpt2D,0.,ptmax);
191  h_ele_matchingObjectPt_matched = new TH1F( "h_ele_matchingObjectPt_matched", "Efficiency vs matching jet p_{T}", nbinpteff,5.,ptmax);
192  h_ele_matchingObjectPt_matched->Sumw2();
193  h_ele_vertexEta = new TH1F( "h_ele_vertexEta", "ele momentum eta", nbineta,etamin,etamax);
194  h_ele_vertexEtaVsPhi = new TH2F( "h_ele_vertexEtaVsPhi", "ele momentum eta vs phi",nbineta2D,etamin,etamax,nbinphi2D,phimin,phimax );
195  h_ele_matchingObjectAbsEta_matched = new TH1F( "h_ele_matchingObjectAbsEta_matched", "Efficiency vs matching jet |#eta|", nbineta/2,0.,2.5);
196  h_ele_matchingObjectAbsEta_matched->Sumw2();
197  h_ele_matchingObjectEta_matched = new TH1F( "h_ele_matchingObjectEta_matched", "Efficiency vs matching jet #eta", nbineta,etamin,etamax);
198  h_ele_matchingObjectEta_matched ->Sumw2();
199  h_ele_matchingObjectPhi_matched = new TH1F( "h_ele_matchingObjectPhi_matched", "Efficiency vs matching jet phi", nbinphi,phimin,phimax);
200  h_ele_matchingObjectPhi_matched->Sumw2();
201  h_ele_vertexPhi = new TH1F( "h_ele_vertexPhi", "ele momentum #phi", nbinphi,phimin,phimax);
202  h_ele_vertexX = new TH1F( "h_ele_vertexX", "ele vertex x", nbinxyz,-0.1,0.1 );
203  h_ele_vertexY = new TH1F( "h_ele_vertexY", "ele vertex y", nbinxyz,-0.1,0.1 );
204  h_ele_vertexZ = new TH1F( "h_ele_vertexZ", "ele vertex z", nbinxyz,-25, 25 );
205  h_ele_matchingObjectZ_matched = new TH1F( "h_ele_matchingObjectZ_matched", "Efficiency vs matching jet z", nbinxyz,-25,25);
206  h_ele_matchingObjectZ_matched->Sumw2();
207  h_ele_vertexTIP = new TH1F( "h_ele_vertexTIP", "ele transverse impact parameter (wrt bs)", 90,0.,0.15);
208  h_ele_vertexTIPVsEta = new TH2F( "h_ele_vertexTIPVsEta", "ele transverse impact parameter (wrt bs) vs eta", nbineta2D,etamin,etamax,45,0.,0.15);
209  h_ele_vertexTIPVsPhi = new TH2F( "h_ele_vertexTIPVsPhi", "ele transverse impact parameter (wrt bs) vs phi", nbinphi2D,phimin,phimax,45,0.,0.15);
210  h_ele_vertexTIPVsPt = new TH2F( "h_ele_vertexTIPVsPt", "ele transverse impact parameter (wrt bs) vs Pt", nbinpt2D,0.,ptmax,45,0.,0.15);
211  h_ele_PoPmatchingObject = new TH1F( "h_ele_PoPmatchingObject", "ele momentum / matching jet momentum", 75,0.,1.5);
212  h_ele_PoPmatchingObjectVsEta = new TH2F( "h_ele_PoPmatchingObjectVsEta", "ele momentum / matching jet momentum vs eta", nbineta2D,etamin,etamax,50,0.,1.5);
213  h_ele_PoPmatchingObjectVsPhi = new TH2F( "h_ele_PoPmatchingObjectVsPhi", "ele momentum / matching jet momentum vs phi", nbinphi2D,phimin,phimax,50,0.,1.5);
214  h_ele_PoPmatchingObjectVsPt = new TH2F( "h_ele_PoPmatchingObjectVsPt", "ele momentum / matching jet momentum vs eta", nbinpt2D,0.,ptmax,50,0.,1.5);
215  h_ele_PoPmatchingObject_barrel = new TH1F( "h_ele_PoPmatchingObject_barrel", "ele momentum / matching jet momentum, barrel",75,0.,1.5);
216  h_ele_PoPmatchingObject_endcaps = new TH1F( "h_ele_PoPmatchingObject_endcaps", "ele momentum / matching jet momentum, endcaps",75,0.,1.5);
217  h_ele_EtaMnEtamatchingObject = new TH1F( "h_ele_EtaMnEtamatchingObject", "ele momentum eta - matching jet eta",nbindeta,detamin,detamax);
218  h_ele_EtaMnEtamatchingObjectVsEta = new TH2F( "h_ele_EtaMnEtamatchingObjectVsEta", "ele momentum eta - matching jet eta vs eta",nbineta2D,etamin,etamax,nbindeta/2,detamin,detamax);
219  h_ele_EtaMnEtamatchingObjectVsPhi = new TH2F( "h_ele_EtaMnEtamatchingObjectVsPhi", "ele momentum eta - matching jet eta vs phi",nbinphi2D,phimin,phimax,nbindeta/2,detamin,detamax);
220  h_ele_EtaMnEtamatchingObjectVsPt = new TH2F( "h_ele_EtaMnEtamatchingObjectVsPt", "ele momentum eta - matching jet eta vs pt",nbinpt,0.,ptmax,nbindeta/2,detamin,detamax);
221  h_ele_PhiMnPhimatchingObject = new TH1F( "h_ele_PhiMnPhimatchingObject", "ele momentum phi - matching jet phi",nbindphi,dphimin,dphimax);
222  h_ele_PhiMnPhimatchingObject2 = new TH1F( "h_ele_PhiMnPhimatchingObject2", "ele momentum phi - matching jet phi",nbindphimatch2D,dphimatchmin,dphimatchmax);
223  h_ele_PhiMnPhimatchingObjectVsEta = new TH2F( "h_ele_PhiMnPhimatchingObjectVsEta", "ele momentum phi - matching SC phi vs eta",nbineta2D,etamin,etamax,nbindphi/2,dphimin,dphimax);
224  h_ele_PhiMnPhimatchingObjectVsPhi = new TH2F( "h_ele_PhiMnPhimatchingObjectVsPhi", "ele momentum phi - matching SC phi vs phi",nbinphi2D,phimin,phimax,nbindphi/2,dphimin,dphimax);
225  h_ele_PhiMnPhimatchingObjectVsPt = new TH2F( "h_ele_PhiMnPhimatchingObjectVsPt", "ele momentum phi - matching SC phi vs pt",nbinpt2D,0.,ptmax,nbindphi/2,dphimin,dphimax);
226 
227  // matched electron, superclusters
228  histSclEn_ = new TH1F("h_scl_energy","ele supercluster energy",nbinp,0.,pmax);
229  histSclEoEmatchingObject_barrel = new TH1F("h_scl_EoEmatchingObject_barrel","ele supercluster energy / matching jet energy, barrel",50,0.2,1.2);
230  histSclEoEmatchingObject_endcaps = new TH1F("h_scl_EoEmatchingObject_endcaps","ele supercluster energy / matching jet energy, endcaps",50,0.2,1.2);
231  histSclEt_ = new TH1F("h_scl_et","ele supercluster transverse energy",nbinpt,0.,ptmax);
232  histSclEtVsEta_ = new TH2F("h_scl_etVsEta","ele supercluster transverse energy vs eta",nbineta2D,etamin,etamax,nbinpt,0.,ptmax);
233  histSclEtVsPhi_ = new TH2F("h_scl_etVsPhi","ele supercluster transverse energy vs phi",nbinphi2D,phimin,phimax,nbinpt,0.,ptmax);
234  histSclEtaVsPhi_ = new TH2F("h_scl_etaVsPhi","ele supercluster eta vs phi",nbinphi2D,phimin,phimax,nbineta2D,etamin,etamax);
235  histSclEta_ = new TH1F("h_scl_eta","ele supercluster eta",nbineta,etamin,etamax);
236  histSclPhi_ = new TH1F("h_scl_phi","ele supercluster phi",nbinphi,phimin,phimax);
237 
238  histSclSigIEtaIEta_ = new TH1F("h_scl_sigietaieta","ele supercluster sigma ieta ieta",100,0.,0.05);
239  histSclSigIEtaIEta_barrel_ = new TH1F("h_scl_sigietaieta_barrel","ele supercluster sigma ieta ieta, barrel",100,0.,0.05);
240  histSclSigIEtaIEta_endcaps_ = new TH1F("h_scl_sigietaieta_endcaps","ele supercluster sigma ieta ieta, endcaps",100,0.,0.05);
241  histSclE1x5_ = new TH1F("h_scl_E1x5","ele supercluster energy in 1x5",nbinp,0.,pmax);
242  histSclE1x5_barrel_ = new TH1F("h_scl_E1x5_barrel","ele supercluster energy in 1x5 barrel",nbinp,0.,pmax);
243  histSclE1x5_endcaps_ = new TH1F("h_scl_E1x5_endcaps","ele supercluster energy in 1x5 endcaps",nbinp,0.,pmax);
244  histSclE2x5max_ = new TH1F("h_scl_E2x5max","ele supercluster energy in 2x5 max",nbinp,0.,pmax);
245  histSclE2x5max_barrel_ = new TH1F("h_scl_E2x5max_barrel","ele supercluster energy in 2x5 max barrel",nbinp,0.,pmax);
246  histSclE2x5max_endcaps_ = new TH1F("h_scl_E2x5max_endcaps","ele supercluster energy in 2x5 max endcaps",nbinp,0.,pmax);
247  histSclE5x5_ = new TH1F("h_scl_E5x5","ele supercluster energy in 5x5",nbinp,0.,pmax);
248  histSclE5x5_barrel_ = new TH1F("h_scl_E5x5_barrel","ele supercluster energy in 5x5 barrel",nbinp,0.,pmax);
249  histSclE5x5_endcaps_ = new TH1F("h_scl_E5x5_endcaps","ele supercluster energy in 5x5 endcaps",nbinp,0.,pmax);
250 
251  // matched electron, gsf tracks
252  h_ele_ambiguousTracks = new TH1F( "h_ele_ambiguousTracks", "ele # ambiguous tracks", 5,0.,5.);
253  h_ele_ambiguousTracksVsEta = new TH2F( "h_ele_ambiguousTracksVsEta","ele # ambiguous tracks vs eta", nbineta2D,etamin,etamax,5,0.,5.);
254  h_ele_ambiguousTracksVsPhi = new TH2F( "h_ele_ambiguousTracksVsPhi", "ele # ambiguous tracks vs phi", nbinphi2D,phimin,phimax,5,0.,5.);
255  h_ele_ambiguousTracksVsPt = new TH2F( "h_ele_ambiguousTracksVsPt", "ele # ambiguous tracks vs pt", nbinpt2D,0.,ptmax,5,0.,5.);
256  h_ele_foundHits = new TH1F( "h_ele_foundHits", "ele track # found hits", nbinfhits,0.,fhitsmax);
257  h_ele_foundHitsVsEta = new TH2F( "h_ele_foundHitsVsEta", "ele track # found hits vs eta", nbineta2D,etamin,etamax,nbinfhits,0.,fhitsmax);
258  h_ele_foundHitsVsPhi = new TH2F( "h_ele_foundHitsVsPhi", "ele track # found hits vs phi", nbinphi2D,phimin,phimax,nbinfhits,0.,fhitsmax);
259  h_ele_foundHitsVsPt = new TH2F( "h_ele_foundHitsVsPt", "ele track # found hits vs pt", nbinpt2D,0.,ptmax,nbinfhits,0.,fhitsmax);
260  h_ele_lostHits = new TH1F( "h_ele_lostHits", "ele track # lost hits", 5,0.,5.);
261  h_ele_lostHitsVsEta = new TH2F( "h_ele_lostHitsVsEta", "ele track # lost hits vs eta", nbineta2D,etamin,etamax,nbinlhits,0.,lhitsmax);
262  h_ele_lostHitsVsPhi = new TH2F( "h_ele_lostHitsVsPhi", "ele track # lost hits vs eta", nbinphi2D,phimin,phimax,nbinlhits,0.,lhitsmax);
263  h_ele_lostHitsVsPt = new TH2F( "h_ele_lostHitsVsPt", "ele track # lost hits vs eta", nbinpt2D,0.,ptmax,nbinlhits,0.,lhitsmax);
264  h_ele_chi2 = new TH1F( "h_ele_chi2", "ele track #chi^{2}", 100,0.,15.);
265  h_ele_chi2VsEta = new TH2F( "h_ele_chi2VsEta", "ele track #chi^{2} vs eta", nbineta2D,etamin,etamax,50,0.,15.);
266  h_ele_chi2VsPhi = new TH2F( "h_ele_chi2VsPhi", "ele track #chi^{2} vs phi", nbinphi2D,phimin,phimax,50,0.,15.);
267  h_ele_chi2VsPt = new TH2F( "h_ele_chi2VsPt", "ele track #chi^{2} vs pt", nbinpt2D,0.,ptmax,50,0.,15.);
268  h_ele_PinMnPout = new TH1F( "h_ele_PinMnPout", "ele track inner p - outer p, mean" ,nbinp,0.,200.);
269  h_ele_PinMnPout_mode = new TH1F( "h_ele_PinMnPout_mode", "ele track inner p - outer p, mode" ,nbinp,0.,100.);
270  h_ele_PinMnPoutVsEta_mode = new TH2F( "h_ele_PinMnPoutVsEta_mode", "ele track inner p - outer p vs eta, mode" ,nbineta2D, etamin,etamax,nbinp2D,0.,100.);
271  h_ele_PinMnPoutVsPhi_mode = new TH2F( "h_ele_PinMnPoutVsPhi_mode", "ele track inner p - outer p vs phi, mode" ,nbinphi2D, phimin,phimax,nbinp2D,0.,100.);
272  h_ele_PinMnPoutVsPt_mode = new TH2F( "h_ele_PinMnPoutVsPt_mode", "ele track inner p - outer p vs pt, mode" ,nbinpt2D, 0.,ptmax,nbinp2D,0.,100.);
273  h_ele_PinMnPoutVsE_mode = new TH2F( "h_ele_PinMnPoutVsE_mode", "ele track inner p - outer p vs E, mode" ,nbinp2D, 0.,200.,nbinp2D,0.,100.);
274  h_ele_PinMnPoutVsChi2_mode = new TH2F( "h_ele_PinMnPoutVsChi2_mode", "ele track inner p - outer p vs track chi2, mode" ,50, 0.,20.,nbinp2D,0.,100.);
275  h_ele_outerP = new TH1F( "h_ele_outerP", "ele track outer p, mean", nbinp,0.,pmax);
276  h_ele_outerP_mode = new TH1F( "h_ele_outerP_mode", "ele track outer p, mode", nbinp,0.,pmax);
277  h_ele_outerPVsEta_mode = new TH2F( "h_ele_outerPVsEta_mode", "ele track outer p vs eta mode", nbineta2D,etamin,etamax,50,0.,pmax);
278  h_ele_outerPt = new TH1F( "h_ele_outerPt", "ele track outer p_{T}, mean", nbinpt,0.,ptmax);
279  h_ele_outerPt_mode = new TH1F( "h_ele_outerPt_mode", "ele track outer p_{T}, mode", nbinpt,0.,ptmax);
280  h_ele_outerPtVsEta_mode = new TH2F( "h_ele_outerPtVsEta_mode", "ele track outer p_{T} vs eta, mode", nbineta2D,etamin,etamax,nbinpt2D,0.,ptmax);
281  h_ele_outerPtVsPhi_mode = new TH2F( "h_ele_outerPtVsPhi_mode", "ele track outer p_{T} vs phi, mode", nbinphi2D,phimin,phimax,nbinpt2D,0.,ptmax);
282  h_ele_outerPtVsPt_mode = new TH2F( "h_ele_outerPtVsPt_mode", "ele track outer p_{T} vs pt, mode", nbinpt2D,0.,100.,nbinpt2D,0.,ptmax);
283 
284  // matched electrons,cluster-track matching
285  h_ele_EoP = new TH1F( "h_ele_EoP", "ele E/P_{vertex}", nbineop,0.,eopmax);
286  h_ele_EoP->Sumw2();
287  h_ele_EoP_eg = new TH1F( "h_ele_EoP_eg", "ele E/P_{vertex}, ecal driven", nbineop,0.,eopmax);
288  h_ele_EoP_eg->Sumw2();
289  h_ele_EoP_barrel = new TH1F( "h_ele_EoP_barrel", "ele E/P_{vertex} barrel", nbineop,0.,eopmax);
290  h_ele_EoP_barrel->Sumw2();
291  h_ele_EoP_eg_barrel = new TH1F( "h_ele_EoP_eg_barrel", "ele E/P_{vertex}, ecal driven barrel", nbineop,0.,eopmax);
292  h_ele_EoP_eg_barrel->Sumw2();
293  h_ele_EoP_endcaps = new TH1F( "h_ele_EoP_endcaps", "ele E/P_{vertex} endcaps", nbineop,0.,eopmax);
294  h_ele_EoP_endcaps->Sumw2();
295  h_ele_EoP_eg_endcaps = new TH1F( "h_ele_EoP_eg_endcaps", "ele E/P_{vertex}, ecal driven endcaps", nbineop,0.,eopmax);
296  h_ele_EoP_eg_endcaps->Sumw2();
297  h_ele_EoPVsEta = new TH2F( "h_ele_EoPVsEta", "ele E/P_{vertex} vs eta", nbineta2D,etamin,etamax,nbineop2D,0.,eopmaxsht);
298  h_ele_EoPVsPhi = new TH2F( "h_ele_EoPVsPhi", "ele E/P_{vertex} vs phi", nbinphi2D,phimin,phimax,nbineop2D,0.,eopmaxsht);
299  h_ele_EoPVsE = new TH2F( "h_ele_EoPVsE", "ele E/P_{vertex} vs E", 50,0.,pmax ,50,0.,5.);
300  h_ele_EseedOP = new TH1F( "h_ele_EseedOP", "ele E_{seed}/P_{vertex}", nbineop,0.,eopmax);
301  h_ele_EseedOP->Sumw2();
302  h_ele_EseedOP_eg = new TH1F( "h_ele_EseedOP_eg", "ele E_{seed}/P_{vertex}, ecal driven", nbineop,0.,eopmax);
303  h_ele_EseedOP_eg->Sumw2();
304  h_ele_EseedOP_barrel = new TH1F( "h_ele_EseedOP_barrel", "ele E_{seed}/P_{vertex} barrel", nbineop,0.,eopmax);
305  h_ele_EseedOP_barrel->Sumw2();
306  h_ele_EseedOP_eg_barrel = new TH1F( "h_ele_EseedOP_eg_barrel", "ele E_{seed}/P_{vertex}, ecal driven barrel", nbineop,0.,eopmax);
307  h_ele_EseedOP_eg_barrel->Sumw2();
308  h_ele_EseedOP_endcaps = new TH1F( "h_ele_EseedOP_endcaps", "ele E_{seed}/P_{vertex} endcaps", nbineop,0.,eopmax);
309  h_ele_EseedOP_endcaps->Sumw2();
310  h_ele_EseedOP_eg_endcaps = new TH1F( "h_ele_EseedOP_eg_endcaps", "ele E_{seed}/P_{vertex}, ecal driven, endcaps", nbineop,0.,eopmax);
311  h_ele_EseedOP_eg_endcaps->Sumw2();
312  h_ele_EseedOPVsEta = new TH2F( "h_ele_EseedOPVsEta", "ele E_{seed}/P_{vertex} vs eta", nbineta2D,etamin,etamax,nbineop2D,0.,eopmaxsht);
313  h_ele_EseedOPVsPhi = new TH2F( "h_ele_EseedOPVsPhi", "ele E_{seed}/P_{vertex} vs phi", nbinphi2D,phimin,phimax,nbineop2D,0.,eopmaxsht);
314  h_ele_EseedOPVsE = new TH2F( "h_ele_EseedOPVsE", "ele E_{seed}/P_{vertex} vs E", 50,0.,pmax ,50,0.,5.);
315  h_ele_EoPout = new TH1F( "h_ele_EoPout", "ele E_{seed}/P_{out}", nbineop,0.,eopmax);
316  h_ele_EoPout->Sumw2();
317  h_ele_EoPout_eg = new TH1F( "h_ele_EoPout_eg", "ele E_{seed}/P_{out}, ecal driven", nbineop,0.,eopmax);
318  h_ele_EoPout_eg->Sumw2();
319  h_ele_EoPout_barrel = new TH1F( "h_ele_EoPout_barrel", "ele E_{seed}/P_{out} barrel", nbineop,0.,eopmax);
320  h_ele_EoPout_barrel->Sumw2();
321  h_ele_EoPout_eg_barrel = new TH1F( "h_ele_EoPout_eg_barrel", "ele E_{seed}/P_{out}, ecal driven, barrel", nbineop,0.,eopmax);
322  h_ele_EoPout_eg_barrel->Sumw2();
323  h_ele_EoPout_endcaps = new TH1F( "h_ele_EoPout_endcaps", "ele E_{seed}/P_{out} endcaps", nbineop,0.,eopmax);
324  h_ele_EoPout_endcaps->Sumw2();
325  h_ele_EoPout_eg_endcaps = new TH1F( "h_ele_EoPout_eg_endcaps", "ele E_{seed}/P_{out}, ecal driven, endcaps", nbineop,0.,eopmax);
326  h_ele_EoPout_eg_endcaps->Sumw2();
327  h_ele_EoPoutVsEta = new TH2F( "h_ele_EoPoutVsEta", "ele E/P_{out} vs eta", nbineta2D,etamin,etamax,nbineop2D,0.,eopmaxsht);
328  h_ele_EoPoutVsPhi = new TH2F( "h_ele_EoPoutVsPhi", "ele E/P_{out} vs phi", nbinphi2D,phimin,phimax,nbineop2D,0.,eopmaxsht);
329  h_ele_EoPoutVsE = new TH2F( "h_ele_EoPoutVsE", "ele E/P_{out} vs E", nbinp2D,0.,pmax,nbineop2D,0.,eopmaxsht);
330  h_ele_EeleOPout = new TH1F( "h_ele_EeleOPout", "ele E_{ele}/P_{out}", nbineop,0.,eopmax);
331  h_ele_EeleOPout->Sumw2();
332  h_ele_EeleOPout_eg = new TH1F( "h_ele_EeleOPout_eg", "ele E_{ele}/P_{out}, ecal driven", nbineop,0.,eopmax);
333  h_ele_EeleOPout_eg->Sumw2();
334  h_ele_EeleOPout_barrel = new TH1F( "h_ele_EeleOPout_barrel", "ele E_{ele}/P_{out} barrel", nbineop,0.,eopmax);
335  h_ele_EeleOPout_barrel->Sumw2();
336  h_ele_EeleOPout_eg_barrel = new TH1F( "h_ele_EeleOPout_eg_barrel", "ele E_{ele}/P_{out}, ecal driven, barrel", nbineop,0.,eopmax);
337  h_ele_EeleOPout_eg_barrel->Sumw2();
338  h_ele_EeleOPout_endcaps = new TH1F( "h_ele_EeleOPout_endcaps", "ele E_{ele}/P_{out} endcaps", nbineop,0.,eopmax);
339  h_ele_EeleOPout_endcaps->Sumw2();
340  h_ele_EeleOPout_eg_endcaps = new TH1F( "h_ele_EeleOPout_eg_endcaps", "ele E_{ele}/P_{out}, ecal driven, endcaps", nbineop,0.,eopmax);
341  h_ele_EeleOPout_eg_endcaps->Sumw2();
342  h_ele_EeleOPoutVsEta = new TH2F( "h_ele_EeleOPoutVsEta", "ele E_{ele}/P_{out} vs eta", nbineta2D,etamin,etamax,nbineop2D,0.,eopmaxsht);
343  h_ele_EeleOPoutVsPhi = new TH2F( "h_ele_EeleOPoutVsPhi", "ele E_{ele}/P_{out} vs phi", nbinphi2D,phimin,phimax,nbineop2D,0.,eopmaxsht);
344  h_ele_EeleOPoutVsE = new TH2F( "h_ele_EeleOPoutVsE", "ele E_{ele}/P_{out} vs E", nbinp2D,0.,pmax,nbineop2D,0.,eopmaxsht);
345  h_ele_dEtaSc_propVtx = new TH1F( "h_ele_dEtaSc_propVtx", "ele #eta_{sc} - #eta_{tr}, prop from vertex", nbindetamatch,detamatchmin,detamatchmax);
346  h_ele_dEtaSc_propVtx->Sumw2();
347  h_ele_dEtaSc_propVtx_eg = new TH1F( "h_ele_dEtaSc_propVtx_eg", "ele #eta_{sc} - #eta_{tr}, prop from vertex, ecal driven", nbindetamatch,detamatchmin,detamatchmax);
348  h_ele_dEtaSc_propVtx_eg->Sumw2();
349  h_ele_dEtaSc_propVtx_barrel = new TH1F( "h_ele_dEtaSc_propVtx_barrel", "ele #eta_{sc} - #eta_{tr}, prop from vertex, barrel", nbindetamatch,detamatchmin,detamatchmax);
350  h_ele_dEtaSc_propVtx_barrel->Sumw2();
351  h_ele_dEtaSc_propVtx_eg_barrel = new TH1F( "h_ele_dEtaSc_propVtx_eg_barrel", "ele #eta_{sc} - #eta_{tr}, prop from vertex, ecal driven, barrel", nbindetamatch,detamatchmin,detamatchmax);
352  h_ele_dEtaSc_propVtx_eg_barrel->Sumw2();
353  h_ele_dEtaSc_propVtx_endcaps = new TH1F( "h_ele_dEtaSc_propVtx_endcaps", "ele #eta_{sc} - #eta_{tr}, prop from vertex, endcaps", nbindetamatch,detamatchmin,detamatchmax);
354  h_ele_dEtaSc_propVtx_endcaps->Sumw2();
355  h_ele_dEtaSc_propVtx_eg_endcaps = new TH1F( "h_ele_dEtaSc_propVtx_eg_endcaps", "ele #eta_{sc} - #eta_{tr}, prop from vertex, ecal driven, endcaps", nbindetamatch,detamatchmin,detamatchmax);
356  h_ele_dEtaSc_propVtx_eg_endcaps->Sumw2();
357  h_ele_dEtaScVsEta_propVtx = new TH2F( "h_ele_dEtaScVsEta_propVtx", "ele #eta_{sc} - #eta_{tr} vs eta, prop from vertex", nbineta2D,etamin,etamax,nbindetamatch2D,detamatchmin,detamatchmax);
358  h_ele_dEtaScVsPhi_propVtx = new TH2F( "h_ele_dEtaScVsPhi_propVtx", "ele #eta_{sc} - #eta_{tr} vs phi, prop from vertex", nbinphi2D,phimin,phimax,nbindetamatch2D,detamatchmin,detamatchmax);
359  h_ele_dEtaScVsPt_propVtx = new TH2F( "h_ele_dEtaScVsPt_propVtx", "ele #eta_{sc} - #eta_{tr} vs pt, prop from vertex", nbinpt2D,0.,ptmax,nbindetamatch2D,detamatchmin,detamatchmax);
360  h_ele_dPhiSc_propVtx = new TH1F( "h_ele_dPhiSc_propVtx", "ele #phi_{sc} - #phi_{tr}, prop from vertex", nbindphimatch,dphimatchmin,dphimatchmax);
361  h_ele_dPhiSc_propVtx->Sumw2();
362  h_ele_dPhiSc_propVtx_eg = new TH1F( "h_ele_dPhiSc_propVtx_eg", "ele #phi_{sc} - #phi_{tr}, prop from vertex, ecal driven", nbindphimatch,dphimatchmin,dphimatchmax);
363  h_ele_dPhiSc_propVtx_eg->Sumw2();
364  h_ele_dPhiSc_propVtx_barrel = new TH1F( "h_ele_dPhiSc_propVtx_barrel", "ele #phi_{sc} - #phi_{tr}, prop from vertex, barrel", nbindphimatch,dphimatchmin,dphimatchmax);
365  h_ele_dPhiSc_propVtx_barrel->Sumw2();
366  h_ele_dPhiSc_propVtx_eg_barrel = new TH1F( "h_ele_dPhiSc_propVtx_eg_barrel", "ele #phi_{sc} - #phi_{tr}, prop from vertex, ecal driven, barrel", nbindphimatch,dphimatchmin,dphimatchmax);
367  h_ele_dPhiSc_propVtx_eg_barrel->Sumw2();
368  h_ele_dPhiSc_propVtx_endcaps = new TH1F( "h_ele_dPhiSc_propVtx_endcaps", "ele #phi_{sc} - #phi_{tr}, prop from vertex, endcaps", nbindphimatch,dphimatchmin,dphimatchmax);
369  h_ele_dPhiSc_propVtx_endcaps->Sumw2();
370  h_ele_dPhiSc_propVtx_eg_endcaps = new TH1F( "h_ele_dPhiSc_propVtx_eg_endcaps", "ele #phi_{sc} - #phi_{tr}, prop from vertex, ecal driven, endcaps", nbindphimatch,dphimatchmin,dphimatchmax);
371  h_ele_dPhiSc_propVtx_eg_endcaps->Sumw2();
372  h_ele_dPhiScVsEta_propVtx = new TH2F( "h_ele_dPhiScVsEta_propVtx", "ele #phi_{sc} - #phi_{tr} vs eta, prop from vertex", nbineta2D,etamin,etamax,nbindphimatch2D,dphimatchmin,dphimatchmax);
373  h_ele_dPhiScVsPhi_propVtx = new TH2F( "h_ele_dPhiScVsPhi_propVtx", "ele #phi_{sc} - #phi_{tr} vs phi, prop from vertex", nbinphi2D,phimin,phimax,nbindphimatch2D,dphimatchmin,dphimatchmax);
374  h_ele_dPhiScVsPt_propVtx = new TH2F( "h_ele_dPhiScVsPt_propVtx", "ele #phi_{sc} - #phi_{tr} vs pt, prop from vertex", nbinpt2D,0.,ptmax,nbindphimatch2D,dphimatchmin,dphimatchmax);
375  h_ele_dEtaCl_propOut = new TH1F( "h_ele_dEtaCl_propOut", "ele #eta_{cl} - #eta_{tr}, prop from outermost", nbindetamatch,detamatchmin,detamatchmax);
376  h_ele_dEtaCl_propOut->Sumw2();
377  h_ele_dEtaCl_propOut_eg = new TH1F( "h_ele_dEtaCl_propOut_eg", "ele #eta_{cl} - #eta_{tr}, prop from outermost, ecal driven", nbindetamatch,detamatchmin,detamatchmax);
378  h_ele_dEtaCl_propOut_eg->Sumw2();
379  h_ele_dEtaCl_propOut_barrel = new TH1F( "h_ele_dEtaCl_propOut_barrel", "ele #eta_{cl} - #eta_{tr}, prop from outermost, barrel", nbindetamatch,detamatchmin,detamatchmax);
380  h_ele_dEtaCl_propOut_barrel->Sumw2();
381  h_ele_dEtaCl_propOut_eg_barrel = new TH1F( "h_ele_dEtaCl_propOut_eg_barrel", "ele #eta_{cl} - #eta_{tr}, prop from outermost, ecal driven, barrel", nbindetamatch,detamatchmin,detamatchmax);
382  h_ele_dEtaCl_propOut_eg_barrel->Sumw2();
383  h_ele_dEtaCl_propOut_endcaps = new TH1F( "h_ele_dEtaCl_propOut_endcaps", "ele #eta_{cl} - #eta_{tr}, prop from outermost, endcaps", nbindetamatch,detamatchmin,detamatchmax);
384  h_ele_dEtaCl_propOut_endcaps->Sumw2();
385  h_ele_dEtaCl_propOut_eg_endcaps = new TH1F( "h_ele_dEtaCl_propOut_eg_endcaps", "ele #eta_{cl} - #eta_{tr}, prop from outermost, ecal driven, endcaps", nbindetamatch,detamatchmin,detamatchmax);
386  h_ele_dEtaCl_propOut_eg_endcaps->Sumw2();
387  h_ele_dEtaClVsEta_propOut = new TH2F( "h_ele_dEtaClVsEta_propOut", "ele #eta_{cl} - #eta_{tr} vs eta, prop from out", nbineta2D,etamin,etamax,nbindetamatch2D,detamatchmin,detamatchmax);
388  h_ele_dEtaClVsPhi_propOut = new TH2F( "h_ele_dEtaClVsPhi_propOut", "ele #eta_{cl} - #eta_{tr} vs phi, prop from out", nbinphi2D,phimin,phimax,nbindetamatch2D,detamatchmin,detamatchmax);
389  h_ele_dEtaClVsPt_propOut = new TH2F( "h_ele_dEtaScVsPt_propOut", "ele #eta_{cl} - #eta_{tr} vs pt, prop from out", nbinpt2D,0.,ptmax,nbindetamatch2D,detamatchmin,detamatchmax);
390  h_ele_dPhiCl_propOut = new TH1F( "h_ele_dPhiCl_propOut", "ele #phi_{cl} - #phi_{tr}, prop from outermost", nbindphimatch,dphimatchmin,dphimatchmax);
391  h_ele_dPhiCl_propOut->Sumw2();
392  h_ele_dPhiCl_propOut_eg = new TH1F( "h_ele_dPhiCl_propOut_eg", "ele #phi_{cl} - #phi_{tr}, prop from outermost, ecal driven", nbindphimatch,dphimatchmin,dphimatchmax);
393  h_ele_dPhiCl_propOut_eg->Sumw2();
394  h_ele_dPhiCl_propOut_barrel = new TH1F( "h_ele_dPhiCl_propOut_barrel", "ele #phi_{cl} - #phi_{tr}, prop from outermost, barrel", nbindphimatch,dphimatchmin,dphimatchmax);
395  h_ele_dPhiCl_propOut_barrel->Sumw2();
396  h_ele_dPhiCl_propOut_eg_barrel = new TH1F( "h_ele_dPhiCl_propOut_eg_barrel", "ele #phi_{cl} - #phi_{tr}, prop from outermost, ecal driven, barrel", nbindphimatch,dphimatchmin,dphimatchmax);
397  h_ele_dPhiCl_propOut_eg_barrel->Sumw2();
398  h_ele_dPhiCl_propOut_endcaps = new TH1F( "h_ele_dPhiCl_propOut_endcaps", "ele #phi_{cl} - #phi_{tr}, prop from outermost, endcaps", nbindphimatch,dphimatchmin,dphimatchmax);
399  h_ele_dPhiCl_propOut_endcaps->Sumw2();
400  h_ele_dPhiCl_propOut_eg_endcaps = new TH1F( "h_ele_dPhiCl_propOut_eg_endcaps", "ele #phi_{cl} - #phi_{tr}, prop from outermost, ecal driven, endcaps", nbindphimatch,dphimatchmin,dphimatchmax);
401  h_ele_dPhiCl_propOut_eg_endcaps->Sumw2();
402  h_ele_dPhiClVsEta_propOut = new TH2F( "h_ele_dPhiClVsEta_propOut", "ele #phi_{cl} - #phi_{tr} vs eta, prop from out", nbineta2D,etamin,etamax,nbindphimatch2D,dphimatchmin,dphimatchmax);
403  h_ele_dPhiClVsPhi_propOut = new TH2F( "h_ele_dPhiClVsPhi_propOut", "ele #phi_{cl} - #phi_{tr} vs phi, prop from out", nbinphi2D,phimin,phimax,nbindphimatch2D,dphimatchmin,dphimatchmax);
404  h_ele_dPhiClVsPt_propOut = new TH2F( "h_ele_dPhiSClsPt_propOut", "ele #phi_{cl} - #phi_{tr} vs pt, prop from out", nbinpt2D,0.,ptmax,nbindphimatch2D,dphimatchmin,dphimatchmax);
405  h_ele_dEtaEleCl_propOut = new TH1F( "h_ele_dEtaEleCl_propOut", "ele #eta_{EleCl} - #eta_{tr}, prop from outermost", nbindetamatch,detamatchmin,detamatchmax);
406  h_ele_dEtaEleCl_propOut->Sumw2();
407  h_ele_dEtaEleCl_propOut_eg = new TH1F( "h_ele_dEtaEleCl_propOut_eg", "ele #eta_{EleCl} - #eta_{tr}, prop from outermost, ecal driven", nbindetamatch,detamatchmin,detamatchmax);
408  h_ele_dEtaEleCl_propOut_eg->Sumw2();
409  h_ele_dEtaEleCl_propOut_barrel = new TH1F( "h_ele_dEtaEleCl_propOut_barrel", "ele #eta_{EleCl} - #eta_{tr}, prop from outermost, barrel", nbindetamatch,detamatchmin,detamatchmax);
410  h_ele_dEtaEleCl_propOut_barrel->Sumw2();
411  h_ele_dEtaEleCl_propOut_eg_barrel = new TH1F( "h_ele_dEtaEleCl_propOut_eg_barrel", "ele #eta_{EleCl} - #eta_{tr}, prop from outermost, ecal driven, barrel", nbindetamatch,detamatchmin,detamatchmax);
412  h_ele_dEtaEleCl_propOut_eg_barrel->Sumw2();
413  h_ele_dEtaEleCl_propOut_endcaps = new TH1F( "h_ele_dEtaEleCl_propOut_endcaps", "ele #eta_{EleCl} - #eta_{tr}, prop from outermost, endcaps", nbindetamatch,detamatchmin,detamatchmax);
414  h_ele_dEtaEleCl_propOut_endcaps->Sumw2();
415  h_ele_dEtaEleCl_propOut_eg_endcaps = new TH1F( "h_ele_dEtaEleCl_propOut_eg_endcaps", "ele #eta_{EleCl} - #eta_{tr}, prop from outermost, ecal driven, endcaps", nbindetamatch,detamatchmin,detamatchmax);
416  h_ele_dEtaEleCl_propOut_eg_endcaps->Sumw2();
417  h_ele_dEtaEleClVsEta_propOut = new TH2F( "h_ele_dEtaEleClVsEta_propOut", "ele #eta_{EleCl} - #eta_{tr} vs eta, prop from out", nbineta2D,etamin,etamax,nbindetamatch2D,detamatchmin,detamatchmax);
418  h_ele_dEtaEleClVsPhi_propOut = new TH2F( "h_ele_dEtaEleClVsPhi_propOut", "ele #eta_{EleCl} - #eta_{tr} vs phi, prop from out", nbinphi2D,phimin,phimax,nbindetamatch2D,detamatchmin,detamatchmax);
419  h_ele_dEtaEleClVsPt_propOut = new TH2F( "h_ele_dEtaScVsPt_propOut", "ele #eta_{EleCl} - #eta_{tr} vs pt, prop from out", nbinpt2D,0.,ptmax,nbindetamatch2D,detamatchmin,detamatchmax);
420  h_ele_dPhiEleCl_propOut = new TH1F( "h_ele_dPhiEleCl_propOut", "ele #phi_{EleCl} - #phi_{tr}, prop from outermost", nbindphimatch,dphimatchmin,dphimatchmax);
421  h_ele_dPhiEleCl_propOut->Sumw2();
422  h_ele_dPhiEleCl_propOut_eg = new TH1F( "h_ele_dPhiEleCl_propOut_eg", "ele #phi_{EleCl} - #phi_{tr}, prop from outermost, ecal driven", nbindphimatch,dphimatchmin,dphimatchmax);
423  h_ele_dPhiEleCl_propOut_eg->Sumw2();
424  h_ele_dPhiEleCl_propOut_barrel = new TH1F( "h_ele_dPhiEleCl_propOut_barrel", "ele #phi_{EleCl} - #phi_{tr}, prop from outermost, barrel", nbindphimatch,dphimatchmin,dphimatchmax);
425  h_ele_dPhiEleCl_propOut_barrel->Sumw2();
426  h_ele_dPhiEleCl_propOut_eg_barrel = new TH1F( "h_ele_dPhiEleCl_propOut_eg_barrel", "ele #phi_{EleCl} - #phi_{tr}, prop from outermost, ecal driven, barrel", nbindphimatch,dphimatchmin,dphimatchmax);
427  h_ele_dPhiEleCl_propOut_eg_barrel->Sumw2();
428  h_ele_dPhiEleCl_propOut_endcaps = new TH1F( "h_ele_dPhiEleCl_propOut_endcaps", "ele #phi_{EleCl} - #phi_{tr}, prop from outermost, endcaps", nbindphimatch,dphimatchmin,dphimatchmax);
429  h_ele_dPhiEleCl_propOut_endcaps->Sumw2();
430  h_ele_dPhiEleCl_propOut_eg_endcaps = new TH1F( "h_ele_dPhiEleCl_propOut_eg_endcaps", "ele #phi_{EleCl} - #phi_{tr}, prop from outermost, ecal driven, endcaps", nbindphimatch,dphimatchmin,dphimatchmax);
431  h_ele_dPhiEleCl_propOut_eg_endcaps->Sumw2();
432  h_ele_dPhiEleClVsEta_propOut = new TH2F( "h_ele_dPhiEleClVsEta_propOut", "ele #phi_{EleCl} - #phi_{tr} vs eta, prop from out", nbineta2D,etamin,etamax,nbindphimatch2D,dphimatchmin,dphimatchmax);
433  h_ele_dPhiEleClVsPhi_propOut = new TH2F( "h_ele_dPhiEleClVsPhi_propOut", "ele #phi_{EleCl} - #phi_{tr} vs phi, prop from out", nbinphi2D,phimin,phimax,nbindphimatch2D,dphimatchmin,dphimatchmax);
434  h_ele_dPhiEleClVsPt_propOut = new TH2F( "h_ele_dPhiSEleClsPt_propOut", "ele #phi_{EleCl} - #phi_{tr} vs pt, prop from out", nbinpt2D,0.,ptmax,nbindphimatch2D,dphimatchmin,dphimatchmax);
435 
436  h_ele_HoE = new TH1F("h_ele_HoE", "ele hadronic energy / em energy", nbinhoe, hoemin, hoemax) ;
437  h_ele_HoE->Sumw2();
438  h_ele_HoE_eg = new TH1F("h_ele_HoE_eg", "ele hadronic energy / em energy, ecal driven", nbinhoe, hoemin, hoemax) ;
439  h_ele_HoE_eg->Sumw2();
440  h_ele_HoE_barrel = new TH1F("h_ele_HoE_barrel", "ele hadronic energy / em energy, barrel", nbinhoe, hoemin, hoemax) ;
441  h_ele_HoE_barrel->Sumw2();
442  h_ele_HoE_eg_barrel = new TH1F("h_ele_HoE_eg_barrel", "ele hadronic energy / em energy, ecal driven, barrel", nbinhoe, hoemin, hoemax) ;
443  h_ele_HoE_eg_barrel->Sumw2();
444  h_ele_HoE_endcaps = new TH1F("h_ele_HoE_endcaps", "ele hadronic energy / em energy, endcaps", nbinhoe, hoemin, hoemax) ;
445  h_ele_HoE_endcaps->Sumw2();
446  h_ele_HoE_eg_endcaps = new TH1F("h_ele_HoE_eg_endcaps", "ele hadronic energy / em energy, ecal driven, endcaps", nbinhoe, hoemin, hoemax) ;
447  h_ele_HoE_eg_endcaps->Sumw2();
448  h_ele_HoE_fiducial = new TH1F("h_ele_HoE_fiducial", "ele hadronic energy / em energy",nbinhoe, hoemin, hoemax) ;
449  h_ele_HoEVsEta = new TH2F("h_ele_HoEVsEta", "ele hadronic energy / em energy vs eta", nbineta,etamin,etamax,nbinhoe, hoemin, hoemax) ;
450  h_ele_HoEVsPhi = new TH2F("h_ele_HoEVsPhi", "ele hadronic energy / em energy vs phi", nbinphi2D,phimin,phimax,nbinhoe, hoemin, hoemax) ;
451  h_ele_HoEVsE = new TH2F("h_ele_HoEVsE", "ele hadronic energy / em energy vs E", nbinp, 0.,300.,nbinhoe, hoemin, hoemax) ;
452 
453  h_ele_seed_dphi2_ = new TH1F("h_ele_seedDphi2", "ele seed dphi 2nd layer", 50,-0.003,+0.003) ;
454  h_ele_seed_dphi2VsEta_ = new TH2F("h_ele_seedDphi2VsEta", "ele seed dphi 2nd layer vs eta", nbineta2D,etamin,etamax,50,-0.003,+0.003) ;
455  h_ele_seed_dphi2VsPt_ = new TH2F("h_ele_seedDphi2VsPt", "ele seed dphi 2nd layer vs pt", nbinpt2D,0.,ptmax,50,-0.003,+0.003) ;
456  h_ele_seed_drz2_ = new TH1F("h_ele_seedDrz2", "ele seed dr/dz 2nd layer", 50,-0.03,+0.03) ;
457  h_ele_seed_drz2VsEta_ = new TH2F("h_ele_seedDrz2VsEta", "ele seed dr/dz 2nd layer vs eta", nbineta2D,etamin,etamax,50,-0.03,+0.03) ;
458  h_ele_seed_drz2VsPt_ = new TH2F("h_ele_seedDrz2VsPt", "ele seed dr/dz 2nd layer vs pt", nbinpt2D,0.,ptmax,50,-0.03,+0.03) ;
459  h_ele_seed_subdet2_ = new TH1F("h_ele_seedSubdet2", "ele seed subdet 2nd layer", 10,0.,10.) ;
460 
461  // classes
462  h_ele_classes = new TH1F( "h_ele_classes", "electron classes", 20,0.0,20.);
463  h_ele_eta = new TH1F( "h_ele_eta", "ele electron eta", nbineta/2,0.0,etamax);
464  h_ele_eta_golden = new TH1F( "h_ele_eta_golden", "ele electron eta golden", nbineta/2,0.0,etamax);
465  h_ele_eta_bbrem = new TH1F( "h_ele_eta_bbrem", "ele electron eta bbrem", nbineta/2,0.0,etamax);
466  h_ele_eta_narrow = new TH1F( "h_ele_eta_narrow", "ele electron eta narrow", nbineta/2,0.0,etamax);
467  h_ele_eta_shower = new TH1F( "h_ele_eta_show", "el, electron eta showering", nbineta/2,0.0,etamax);
468  h_ele_PinVsPoutGolden_mode = new TH2F( "h_ele_PinVsPoutGolden_mode", "ele track inner p vs outer p, golden, mode" ,nbinp2D,0.,pmax,50,0.,pmax);
469  h_ele_PinVsPoutShowering_mode = new TH2F( "h_ele_PinVsPoutShowering_mode", "ele track inner p vs outer p vs eta, showering, mode" ,nbinp2D,0.,pmax,50,0.,pmax);
470  h_ele_PinVsPoutGolden_mean = new TH2F( "h_ele_PinVsPoutGolden_mean", "ele track inner p vs outer p, golden, mean" ,nbinp2D,0.,pmax,50,0.,pmax);
471  h_ele_PinVsPoutShowering_mean = new TH2F( "h_ele_PinVsPoutShowering_mean", "ele track inner p vs outer p, showering, mean" ,nbinp2D,0.,pmax,50,0.,pmax);
472  h_ele_PtinVsPtoutGolden_mode = new TH2F( "h_ele_PtinVsPtoutGolden_mode", "ele track inner pt vs outer pt, golden, mode" ,nbinpt2D,0.,ptmax,50,0.,ptmax);
473  h_ele_PtinVsPtoutShowering_mode = new TH2F( "h_ele_PtinVsPtoutShowering_mode", "ele track inner pt vs outer pt, showering, mode" ,nbinpt2D,0.,ptmax,50,0.,ptmax);
474  h_ele_PtinVsPtoutGolden_mean = new TH2F( "h_ele_PtinVsPtoutGolden_mean", "ele track inner pt vs outer pt, golden, mean" ,nbinpt2D,0.,ptmax,50,0.,ptmax);
475  h_ele_PtinVsPtoutShowering_mean = new TH2F( "h_ele_PtinVsPtoutShowering_mean", "ele track inner pt vs outer pt, showering, mean" ,nbinpt2D,0.,ptmax,50,0.,ptmax);
476  histSclEoEmatchingObjectGolden_barrel = new TH1F("h_scl_EoEmatchingObject golden, barrel","ele SC energy over matching jet energy, golden, barrel",100,0.2,1.2);
477  histSclEoEmatchingObjectGolden_endcaps = new TH1F("h_scl_EoEmatchingObject golden, endcaps","ele SC energy over matching jet energy, golden, endcaps",100,0.2,1.2);
478  histSclEoEmatchingObjectShowering_barrel = new TH1F("h_scl_EoEmatchingObject showering, barrel","ele SC energy over matching jet energy, showering, barrel",100,0.2,1.2);
479  histSclEoEmatchingObjectShowering_endcaps = new TH1F("h_scl_EoEmatchingObject showering, endcaps","ele SC energy over matching jet energy, showering, endcaps",100,0.2,1.2);
480 
481  // isolation
482  h_ele_tkSumPt_dr03 = new TH1F("h_ele_tkSumPt_dr03","tk isolation sum, dR=0.3",100,0.0,20.);
483  h_ele_ecalRecHitSumEt_dr03= new TH1F("h_ele_ecalRecHitSumEt_dr03","ecal isolation sum, dR=0.3",100,0.0,20.);
484  h_ele_hcalDepth1TowerSumEt_dr03= new TH1F("h_ele_hcalDepth1TowerSumEt_dr03","hcal depth1 isolation sum, dR=0.3",100,0.0,20.);
485  h_ele_hcalDepth2TowerSumEt_dr03= new TH1F("h_ele_hcalDepth2TowerSumEt_dr03","hcal depth2 isolation sum, dR=0.3",100,0.0,20.);
486  h_ele_tkSumPt_dr04= new TH1F("h_ele_tkSumPt_dr04","hcal isolation sum",100,0.0,20.);
487  h_ele_ecalRecHitSumEt_dr04= new TH1F("h_ele_ecalRecHitSumEt_dr04","ecal isolation sum, dR=0.4",100,0.0,20.);
488  h_ele_hcalDepth1TowerSumEt_dr04= new TH1F("h_ele_hcalDepth1TowerSumEt_dr04","hcal depth1 isolation sum, dR=0.4",100,0.0,20.);
489  h_ele_hcalDepth2TowerSumEt_dr04= new TH1F("h_ele_hcalDepth2TowerSumEt_dr04","hcal depth2 isolation sum, dR=0.4",100,0.0,20.);
490 
491  // fbrem
492  h_ele_fbrem = new TH1F( "h_ele_fbrem","ele brem fraction, mode",100,0.,1.);
493  h_ele_fbremVsEta_mode = new TProfile( "h_ele_fbremvsEtamode","mean ele brem fraction vs eta, mode",nbineta2D,etamin,etamax,0.,1.);
494  h_ele_fbremVsEta_mean = new TProfile( "h_ele_fbremvsEtamean","mean ele brem fraction vs eta, mean",nbineta2D,etamin,etamax,0.,1.);
495 
496  // e/g et pflow electrons
497  h_ele_mva = new TH1F( "h_ele_mva","ele mva",100,-1.,1.);
498  h_ele_provenance = new TH1F( "h_ele_provenance","ele provenance",5,-2.,3.);
499 
500  // histos titles
501  h_matchingObjectNum -> GetXaxis()-> SetTitle("N_{SC}");
502  h_matchingObjectNum -> GetYaxis()-> SetTitle("Events");
503  h_matchingObjectEta -> GetXaxis()-> SetTitle("#eta_{SC}");
504  h_matchingObjectEta -> GetYaxis()-> SetTitle("Events");
505  h_matchingObjectP -> GetXaxis()-> SetTitle("E_{SC} (GeV)");
506  h_matchingObjectP -> GetYaxis()-> SetTitle("Events");
507  h_ele_foundHits -> GetXaxis()-> SetTitle("N_{hits}");
508  h_ele_foundHits -> GetYaxis()-> SetTitle("Events");
509  h_ele_ambiguousTracks -> GetXaxis()-> SetTitle("N_{ambiguous tracks}");
510  h_ele_ambiguousTracks -> GetYaxis()-> SetTitle("Events");
511  h_ele_lostHits -> GetXaxis()-> SetTitle("N_{lost hits}");
512  h_ele_lostHits -> GetYaxis()-> SetTitle("Events");
513  h_ele_chi2 -> GetXaxis()-> SetTitle("#Chi^{2}");
514  h_ele_chi2 -> GetYaxis()-> SetTitle("Events");
515  h_ele_charge -> GetXaxis()-> SetTitle("charge");
516  h_ele_charge -> GetYaxis()-> SetTitle("Events");
517  h_ele_vertexP -> GetXaxis()-> SetTitle("p_{vertex} (GeV/c)");
518  h_ele_vertexP -> GetYaxis()-> SetTitle("Events");
519  h_ele_vertexPt -> GetXaxis()-> SetTitle("p_{T vertex} (GeV/c)");
520  h_ele_vertexPt -> GetYaxis()-> SetTitle("Events");
521  h_ele_vertexEta -> GetXaxis()-> SetTitle("#eta");
522  h_ele_vertexEta -> GetYaxis()-> SetTitle("Events");
523  h_ele_vertexPhi -> GetXaxis()-> SetTitle("#phi (rad)");
524  h_ele_vertexPhi -> GetYaxis()-> SetTitle("Events");
525  h_ele_PoPmatchingObject -> GetXaxis()-> SetTitle("P/P_{jet}");
526  h_ele_PoPmatchingObject -> GetYaxis()-> SetTitle("Events");
527  h_ele_PoPmatchingObject_barrel -> GetXaxis()-> SetTitle("P/P_{jet}");
528  h_ele_PoPmatchingObject_barrel -> GetYaxis()-> SetTitle("Events");
529  h_ele_PoPmatchingObject_endcaps -> GetXaxis()-> SetTitle("P/P_{jet}");
530  h_ele_PoPmatchingObject_endcaps -> GetYaxis()-> SetTitle("Events");
531  histSclSigIEtaIEta_-> GetXaxis()-> SetTitle("#sigma_{#eta #eta}") ;
532  histSclSigIEtaIEta_-> GetYaxis()-> SetTitle("Events") ;
533  histSclSigIEtaIEta_barrel_-> GetXaxis()-> SetTitle("#sigma_{i#eta i#eta}") ;
534  histSclSigIEtaIEta_barrel_-> GetYaxis()-> SetTitle("Events") ;
535  histSclSigIEtaIEta_endcaps_-> GetXaxis()-> SetTitle("#sigma_{i#eta i#eta}") ;
536  histSclSigIEtaIEta_endcaps_-> GetYaxis()-> SetTitle("Events") ;
537  histSclE1x5_-> GetXaxis()-> SetTitle("E1x5 (GeV)") ;
538  histSclE1x5_-> GetYaxis()-> SetTitle("Events") ;
539  histSclE1x5_barrel_-> GetXaxis()-> SetTitle("E1x5 (GeV)") ;
540  histSclE1x5_barrel_-> GetYaxis()-> SetTitle("Events") ;
541  histSclE1x5_endcaps_-> GetXaxis()-> SetTitle("E1x5 (GeV)") ;
542  histSclE1x5_endcaps_-> GetYaxis()-> SetTitle("Events") ;
543  histSclE2x5max_-> GetXaxis()-> SetTitle("E2x5 (GeV)") ;
544  histSclE2x5max_-> GetYaxis()-> SetTitle("Events") ;
545  histSclE2x5max_barrel_-> GetXaxis()-> SetTitle("E2x5 (GeV)") ;
546  histSclE2x5max_barrel_-> GetYaxis()-> SetTitle("Events") ;
547  histSclE2x5max_endcaps_-> GetXaxis()-> SetTitle("E2x5 (GeV)") ;
548  histSclE2x5max_endcaps_-> GetYaxis()-> SetTitle("Events") ;
549  histSclE5x5_-> GetXaxis()-> SetTitle("E5x5 (GeV)") ;
550  histSclE5x5_-> GetYaxis()-> SetTitle("Events") ;
551  histSclE5x5_barrel_-> GetXaxis()-> SetTitle("E5x5 (GeV)") ;
552  histSclE5x5_barrel_-> GetYaxis()-> SetTitle("Events") ;
553  histSclE5x5_endcaps_-> GetXaxis()-> SetTitle("E5x5 (GeV)") ;
554  histSclE5x5_endcaps_-> GetYaxis()-> SetTitle("Events") ;
555  h_ele_EtaMnEtamatchingObject -> GetXaxis()-> SetTitle("#eta_{rec} - #eta_{jet}");
556  h_ele_EtaMnEtamatchingObject -> GetYaxis()-> SetTitle("Events");
557  h_ele_PhiMnPhimatchingObject -> GetXaxis()-> SetTitle("#phi_{rec} - #phi_{jet} (rad)");
558  h_ele_PhiMnPhimatchingObject -> GetYaxis()-> SetTitle("Events");
559  h_ele_PinMnPout -> GetXaxis()-> SetTitle("P_{vertex} - P_{out} (GeV/c)");
560  h_ele_PinMnPout -> GetYaxis()-> SetTitle("Events");
561  h_ele_PinMnPout_mode -> GetXaxis()-> SetTitle("P_{vertex} - P_{out}, mode (GeV/c)");
562  h_ele_PinMnPout_mode -> GetYaxis()-> SetTitle("Events");
563  h_ele_outerP -> GetXaxis()-> SetTitle("P_{out} (GeV/c)");
564  h_ele_outerP -> GetYaxis()-> SetTitle("Events");
565  h_ele_outerP_mode -> GetXaxis()-> SetTitle("P_{out} (GeV/c)");
566  h_ele_outerP_mode -> GetYaxis()-> SetTitle("Events");
567  h_ele_outerPt -> GetXaxis()-> SetTitle("P_{T out} (GeV/c)");
568  h_ele_outerPt -> GetYaxis()-> SetTitle("Events");
569  h_ele_outerPt_mode -> GetXaxis()-> SetTitle("P_{T out} (GeV/c)");
570  h_ele_outerPt_mode -> GetYaxis()-> SetTitle("Events");
571  h_ele_EoP -> GetXaxis()-> SetTitle("E/P_{vertex}");
572  h_ele_EoP -> GetYaxis()-> SetTitle("Events");
573  h_ele_EseedOP -> GetXaxis()-> SetTitle("E_{seed}/P_{vertex}");
574  h_ele_EseedOP -> GetYaxis()-> SetTitle("Events");
575  h_ele_EoPout -> GetXaxis()-> SetTitle("E_{seed}/P_{out}");
576  h_ele_EoPout -> GetYaxis()-> SetTitle("Events");
577  h_ele_EeleOPout -> GetXaxis()-> SetTitle("E_{ele}/P_{out}");
578  h_ele_EeleOPout -> GetYaxis()-> SetTitle("Events");
579  h_ele_EoP_barrel -> GetXaxis()-> SetTitle("E/P_{vertex}");
580  h_ele_EoP_barrel -> GetYaxis()-> SetTitle("Events");
581  h_ele_EseedOP_barrel -> GetXaxis()-> SetTitle("E_{seed}/P_{vertex}");
582  h_ele_EseedOP_barrel -> GetYaxis()-> SetTitle("Events");
583  h_ele_EoPout_barrel -> GetXaxis()-> SetTitle("E_{seed}/P_{out}");
584  h_ele_EoPout_barrel -> GetYaxis()-> SetTitle("Events");
585  h_ele_EeleOPout_barrel -> GetXaxis()-> SetTitle("E_{ele}/P_{out}");
586  h_ele_EeleOPout_barrel -> GetYaxis()-> SetTitle("Events");
587  h_ele_EoP_endcaps -> GetXaxis()-> SetTitle("E/P_{vertex}");
588  h_ele_EoP_endcaps -> GetYaxis()-> SetTitle("Events");
589  h_ele_EseedOP_endcaps -> GetXaxis()-> SetTitle("E_{seed}/P_{vertex}");
590  h_ele_EseedOP_endcaps -> GetYaxis()-> SetTitle("Events");
591  h_ele_EoPout_endcaps -> GetXaxis()-> SetTitle("E_{seed}/P_{out}");
592  h_ele_EoPout_endcaps -> GetYaxis()-> SetTitle("Events");
593  h_ele_EeleOPout_endcaps -> GetXaxis()-> SetTitle("E_{ele}/P_{out}");
594  h_ele_EeleOPout_endcaps -> GetYaxis()-> SetTitle("Events");
595  h_ele_vertexX-> GetXaxis()-> SetTitle("x (cm)");
596  h_ele_vertexX-> GetYaxis()-> SetTitle("Events");
597  h_ele_vertexY-> GetXaxis()-> SetTitle("y (cm)");
598  h_ele_vertexY-> GetYaxis()-> SetTitle("Events");
599  h_ele_vertexZ-> GetXaxis()-> SetTitle("z (cm)");
600  h_ele_vertexZ-> GetYaxis()-> SetTitle("Events");
601  h_ele_vertexTIP-> GetXaxis()-> SetTitle("TIP (cm)");
602  h_ele_vertexTIP-> GetYaxis()-> SetTitle("Events");
603  h_ele_TIP_all-> GetXaxis()-> SetTitle("r_{T} (cm)");
604  h_ele_TIP_all-> GetYaxis()-> SetTitle("Events");
605  h_ele_vertexTIPVsEta-> GetYaxis()-> SetTitle("TIP (cm)");
606  h_ele_vertexTIPVsEta-> GetXaxis()-> SetTitle("#eta");
607  h_ele_vertexTIPVsPhi-> GetYaxis()-> SetTitle("TIP (cm)");
608  h_ele_vertexTIPVsPhi-> GetXaxis()-> SetTitle("#phi (rad)");
609  h_ele_vertexTIPVsPt-> GetYaxis()-> SetTitle("TIP (cm)");
610  h_ele_vertexTIPVsPt-> GetXaxis()-> SetTitle("p_{T} (GeV/c)");
611  h_ele_dEtaSc_propVtx-> GetXaxis()-> SetTitle("#eta_{sc} - #eta_{tr}");
612  h_ele_dEtaSc_propVtx-> GetXaxis()-> SetTitle("#eta_{sc} - #eta_{tr}");
613  h_ele_dEtaSc_propVtx-> GetYaxis()-> SetTitle("Events");
614  h_ele_dEtaCl_propOut-> GetXaxis()-> SetTitle("#eta_{seedcl} - #eta_{tr}");
615  h_ele_dEtaCl_propOut-> GetYaxis()-> SetTitle("Events");
616  h_ele_dEtaEleCl_propOut-> GetXaxis()-> SetTitle("#eta_{elecl} - #eta_{tr}");
617  h_ele_dEtaEleCl_propOut-> GetYaxis()-> SetTitle("Events");
618  h_ele_dPhiSc_propVtx-> GetXaxis()-> SetTitle("#phi_{sc} - #phi_{tr} (rad)");
619  h_ele_dPhiSc_propVtx-> GetYaxis()-> SetTitle("Events");
620  h_ele_dPhiCl_propOut-> GetXaxis()-> SetTitle("#phi_{seedcl} - #phi_{tr} (rad)");
621  h_ele_dPhiCl_propOut-> GetYaxis()-> SetTitle("Events");
622  h_ele_dPhiEleCl_propOut-> GetXaxis()-> SetTitle("#phi_{elecl} - #phi_{tr} (rad)");
623  h_ele_dPhiEleCl_propOut-> GetYaxis()-> SetTitle("Events");
624  h_ele_dEtaSc_propVtx_barrel-> GetXaxis()-> SetTitle("#eta_{sc} - #eta_{tr}");
625  h_ele_dEtaSc_propVtx_barrel-> GetYaxis()-> SetTitle("Events");
626  h_ele_dEtaCl_propOut_barrel-> GetXaxis()-> SetTitle("#eta_{seedcl} - #eta_{tr}");
627  h_ele_dEtaCl_propOut_barrel-> GetYaxis()-> SetTitle("Events");
628  h_ele_dEtaEleCl_propOut_barrel-> GetXaxis()-> SetTitle("#eta_{elecl} - #eta_{tr}");
629  h_ele_dEtaEleCl_propOut_barrel-> GetYaxis()-> SetTitle("Events");
630  h_ele_dPhiSc_propVtx_barrel-> GetXaxis()-> SetTitle("#phi_{sc} - #phi_{tr} (rad)");
631  h_ele_dPhiSc_propVtx_barrel-> GetYaxis()-> SetTitle("Events");
632  h_ele_dPhiCl_propOut_barrel-> GetXaxis()-> SetTitle("#phi_{seedcl} - #phi_{tr} (rad)");
633  h_ele_dPhiCl_propOut_barrel-> GetYaxis()-> SetTitle("Events");
634  h_ele_dPhiEleCl_propOut_barrel-> GetXaxis()-> SetTitle("#phi_{elecl} - #phi_{tr} (rad)");
635  h_ele_dPhiEleCl_propOut_barrel-> GetYaxis()-> SetTitle("Events");
636  h_ele_dEtaSc_propVtx_endcaps-> GetXaxis()-> SetTitle("#eta_{sc} - #eta_{tr}");
637  h_ele_dEtaSc_propVtx_endcaps-> GetYaxis()-> SetTitle("Events");
638  h_ele_dEtaCl_propOut_endcaps-> GetXaxis()-> SetTitle("#eta_{seedcl} - #eta_{tr}");
639  h_ele_dEtaCl_propOut_endcaps-> GetYaxis()-> SetTitle("Events");
640  h_ele_dEtaEleCl_propOut_endcaps-> GetXaxis()-> SetTitle("#eta_{elecl} - #eta_{tr}");
641  h_ele_dEtaEleCl_propOut_endcaps-> GetYaxis()-> SetTitle("Events");
642  h_ele_dPhiSc_propVtx_endcaps-> GetXaxis()-> SetTitle("#phi_{sc} - #phi_{tr} (rad)");
643  h_ele_dPhiSc_propVtx_endcaps-> GetYaxis()-> SetTitle("Events");
644  h_ele_dPhiCl_propOut_endcaps-> GetXaxis()-> SetTitle("#phi_{seedcl} - #phi_{tr} (rad)");
645  h_ele_dPhiCl_propOut_endcaps-> GetYaxis()-> SetTitle("Events");
646  h_ele_dPhiEleCl_propOut_endcaps-> GetXaxis()-> SetTitle("#phi_{elecl} - #phi_{tr} (rad)");
647  h_ele_dPhiEleCl_propOut_endcaps-> GetYaxis()-> SetTitle("Events");
648  h_ele_HoE-> GetXaxis()-> SetTitle("H/E") ;
649  h_ele_HoE-> GetYaxis()-> SetTitle("Events") ;
650  h_ele_HoE_barrel-> GetXaxis()-> SetTitle("H/E") ;
651  h_ele_HoE_barrel-> GetYaxis()-> SetTitle("Events") ;
652  h_ele_HoE_endcaps-> GetXaxis()-> SetTitle("H/E") ;
653  h_ele_HoE_endcaps-> GetYaxis()-> SetTitle("Events") ;
654  h_ele_HoE_fiducial-> GetXaxis()-> SetTitle("H/E") ;
655  h_ele_HoE_fiducial-> GetYaxis()-> SetTitle("Events") ;
656  h_ele_fbrem-> GetXaxis()-> SetTitle("P_{in} - P_{out} / P_{in}");
657  h_ele_fbrem-> GetYaxis()-> SetTitle("Events");
658  h_ele_seed_dphi2_-> GetXaxis()-> SetTitle("#phi_{hit}-#phi_{pred} (rad)") ;
659  h_ele_seed_dphi2_-> GetYaxis()-> SetTitle("Events") ;
660  h_ele_seed_drz2_-> GetXaxis()-> SetTitle("r(z)_{hit}-r(z)_{pred} (cm)") ;
661  h_ele_seed_drz2_-> GetYaxis()-> SetTitle("Events") ;
662  h_ele_seed_subdet2_-> GetXaxis()-> SetTitle("2nd hit subdet Id") ;
663  h_ele_seed_subdet2_-> GetYaxis()-> SetTitle("Events") ;
664  h_ele_classes-> GetXaxis()-> SetTitle("class Id") ;
665  h_ele_classes-> GetYaxis()-> SetTitle("Events") ;
666  h_ele_EoverP_all-> GetXaxis()-> SetTitle("E/P_{vertex}");
667  h_ele_EoverP_all-> GetYaxis()-> SetTitle("Events");
668  h_ele_EseedOP_all-> GetXaxis()-> SetTitle("E_{seed}/P_{vertex}");
669  h_ele_EseedOP_all-> GetYaxis()-> SetTitle("Events");
670  h_ele_EoPout_all -> GetXaxis()-> SetTitle("E_{seed}/P_{out}");
671  h_ele_EoPout_all-> GetYaxis()-> SetTitle("Events");
672  h_ele_EeleOPout_all-> GetXaxis()-> SetTitle("E_{ele}/P_{out}");
673  h_ele_EeleOPout_all-> GetYaxis()-> SetTitle("Events");
674  h_ele_dEtaSc_propVtx_all-> GetXaxis()-> SetTitle("#eta_{sc} - #eta_{tr}");
675  h_ele_dEtaSc_propVtx_all-> GetYaxis()-> SetTitle("Events");
676  h_ele_dPhiSc_propVtx_all-> GetXaxis()-> SetTitle("#phi_{sc} - #phi_{tr} (rad)");
677  h_ele_dPhiSc_propVtx_all-> GetYaxis()-> SetTitle("Events");
678  h_ele_dEtaCl_propOut_all-> GetXaxis()-> SetTitle("#eta_{sc} - #eta_{tr}");
679  h_ele_dEtaCl_propOut_all-> GetYaxis()-> SetTitle("Events");
680  h_ele_dPhiCl_propOut_all-> GetXaxis()-> SetTitle("#phi_{sc} - #phi_{tr} (rad)");
681  h_ele_dPhiCl_propOut_all-> GetYaxis()-> SetTitle("Events");
682  h_ele_HoE_all-> GetXaxis()-> SetTitle("H/E") ;
683  h_ele_HoE_all-> GetYaxis()-> SetTitle("Events");
684  h_ele_mee_all-> GetXaxis()-> SetTitle("m_{ee} (GeV/c^{2})");
685  h_ele_mee_all-> GetYaxis()-> SetTitle("Events");
686  h_ele_mee_os-> GetXaxis()-> SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
687  h_ele_mee_os-> GetYaxis()-> SetTitle("Events");
688  h_ele_E2mnE1vsMee_all-> GetXaxis()-> SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
689  h_ele_E2mnE1vsMee_all-> GetYaxis()-> SetTitle("E2 - E1 (GeV)");
690  h_ele_E2mnE1vsMee_egeg_all-> GetXaxis()-> SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
691  h_ele_E2mnE1vsMee_egeg_all-> GetYaxis()-> SetTitle("E2 - E1 (GeV)");
692  histNum_-> GetXaxis()-> SetTitle("N_{ele}");
693  histNum_-> GetYaxis()-> SetTitle("Events");
694  h_ele_fbremVsEta_mode-> GetXaxis()-> SetTitle("#eta");
695  h_ele_fbremVsEta_mean-> GetXaxis()-> SetTitle("#eta");
696 
697 }
698 
699 void
701 
702  histfile_->cd();
703  std::cout << "efficiency calculation " << std::endl;
704  // efficiency vs eta
705  TH1F *h_ele_etaEff = (TH1F*)h_ele_matchingObjectEta_matched->Clone("h_ele_etaEff");
706  h_ele_etaEff->Reset();
707  h_ele_etaEff->Divide(h_ele_matchingObjectEta_matched,h_matchingObjectEta,1,1,"b");
708  h_ele_etaEff->Print();
709  h_ele_etaEff->GetXaxis()->SetTitle("#eta");
710  h_ele_etaEff->GetYaxis()->SetTitle("Efficiency");
711 
712  // efficiency vs z
713  TH1F *h_ele_zEff = (TH1F*)h_ele_matchingObjectZ_matched->Clone("h_ele_zEff");
714  h_ele_zEff->Reset();
715  h_ele_zEff->Divide(h_ele_matchingObjectZ_matched,h_matchingObjectZ,1,1,"b");
716  h_ele_zEff->Print();
717  h_ele_zEff->GetXaxis()->SetTitle("z (cm)");
718  h_ele_zEff->GetYaxis()->SetTitle("Efficiency");
719 
720  // efficiency vs |eta|
721  TH1F *h_ele_absetaEff = (TH1F*)h_ele_matchingObjectAbsEta_matched->Clone("h_ele_absetaEff");
722  h_ele_absetaEff->Reset();
723  h_ele_absetaEff->Divide(h_ele_matchingObjectAbsEta_matched,h_matchingObjectAbsEta,1,1,"b");
724  h_ele_absetaEff->GetXaxis()->SetTitle("|#eta|");
725  h_ele_absetaEff->GetYaxis()->SetTitle("Efficiency");
726 
727  // efficiency vs pt
728  TH1F *h_ele_ptEff = (TH1F*)h_ele_matchingObjectPt_matched->Clone("h_ele_ptEff");
729  h_ele_ptEff->Reset();
730  h_ele_ptEff->Divide(h_ele_matchingObjectPt_matched,h_matchingObjectPt,1,1,"b");
731  h_ele_ptEff->GetXaxis()->SetTitle("p_{T} (GeV/c)");
732  h_ele_ptEff->GetYaxis()->SetTitle("Efficiency");
733 
734  // efficiency vs phi
735  TH1F *h_ele_phiEff = (TH1F*)h_ele_matchingObjectPhi_matched->Clone("h_ele_phiEff");
736  h_ele_phiEff->Reset();
737  h_ele_phiEff->Divide(h_ele_matchingObjectPhi_matched,h_matchingObjectPhi,1,1,"b");
738  h_ele_phiEff->GetXaxis()->SetTitle("#phi (rad)");
739  h_ele_phiEff->GetYaxis()->SetTitle("Efficiency");
740 
741  // rec/matching objects all electrons
742  TH1F *h_ele_etaEff_all = (TH1F*)h_ele_vertexEta_all->Clone("h_ele_etaEff_all");
743  h_ele_etaEff_all->Reset();
744  h_ele_etaEff_all->Divide(h_ele_vertexEta_all,h_matchingObjectEta,1,1,"b");
745  h_ele_etaEff_all->Print();
746  h_ele_etaEff_all->GetXaxis()->SetTitle("#eta");
747  h_ele_etaEff_all->GetYaxis()->SetTitle("N_{rec}/N_{matching jet}");
748  TH1F *h_ele_ptEff_all = (TH1F*)h_ele_vertexPt_all->Clone("h_ele_ptEff_all");
749  h_ele_ptEff_all->Reset();
750  h_ele_ptEff_all->Divide(h_ele_vertexPt_all,h_matchingObjectPt,1,1,"b");
751  h_ele_ptEff_all->Print();
752  h_ele_ptEff_all->GetXaxis()->SetTitle("p_{T} (GeV/c)");
753  h_ele_ptEff_all->GetYaxis()->SetTitle("N_{rec}/N_{matching jet}");
754 
755  // classes
756  TH1F *h_ele_eta_goldenFrac = (TH1F*)h_ele_eta_golden->Clone("h_ele_eta_goldenFrac");
757  h_ele_eta_goldenFrac->Reset();
758  h_ele_eta_goldenFrac->GetXaxis()->SetTitle("|#eta|");
759  h_ele_eta_goldenFrac->GetYaxis()->SetTitle("Fraction of electrons");
760  h_ele_eta_goldenFrac->Divide(h_ele_eta_golden,h_ele_eta,1,1);
761  h_ele_eta_goldenFrac->SetTitle("fraction of golden electrons vs eta");
762  TH1F *h_ele_eta_bbremFrac = (TH1F*)h_ele_eta_bbrem->Clone("h_ele_eta_bbremFrac");
763  h_ele_eta_bbremFrac->Reset();
764  h_ele_eta_bbremFrac->Divide(h_ele_eta_bbrem,h_ele_eta,1,1);
765  h_ele_eta_bbremFrac->GetXaxis()->SetTitle("|#eta|");
766  h_ele_eta_bbremFrac->GetYaxis()->SetTitle("Fraction of electrons");
767  h_ele_eta_bbremFrac->SetTitle("fraction of big brem electrons vs eta");
768  TH1F *h_ele_eta_narrowFrac = (TH1F*)h_ele_eta_narrow->Clone("h_ele_eta_narrowFrac");
769  h_ele_eta_narrowFrac->Reset();
770  h_ele_eta_narrowFrac->Divide(h_ele_eta_narrow,h_ele_eta,1,1);
771  h_ele_eta_narrowFrac->GetXaxis()->SetTitle("|#eta|");
772  h_ele_eta_narrowFrac->GetYaxis()->SetTitle("Fraction of electrons");
773  h_ele_eta_narrowFrac->SetTitle("fraction of narrow electrons vs eta");
774  TH1F *h_ele_eta_showerFrac = (TH1F*)h_ele_eta_shower->Clone("h_ele_eta_showerFrac");
775  h_ele_eta_showerFrac->Reset();
776  h_ele_eta_showerFrac->Divide(h_ele_eta_shower,h_ele_eta,1,1);
777  h_ele_eta_showerFrac->GetXaxis()->SetTitle("|#eta|");
778  h_ele_eta_showerFrac->GetYaxis()->SetTitle("Fraction of electrons");
779  h_ele_eta_showerFrac->SetTitle("fraction of showering electrons vs eta");
780 
781  // fbrem
782  TH1F *h_ele_xOverX0VsEta = new TH1F( "h_ele_xOverx0VsEta","mean X/X_0 vs eta",nbineta/2,0.0,2.5);
783  for (int ibin=1;ibin<h_ele_fbremVsEta_mean->GetNbinsX()+1;ibin++) {
784  double xOverX0 = 0.;
785  if (h_ele_fbremVsEta_mean->GetBinContent(ibin)>0.) xOverX0 = -log(h_ele_fbremVsEta_mean->GetBinContent(ibin));
786  h_ele_xOverX0VsEta->SetBinContent(ibin,xOverX0);
787  }
788 
789  //profiles from 2D histos
790  TProfile *p_ele_PoPmatchingObjectVsEta = h_ele_PoPmatchingObjectVsEta->ProfileX();
791  p_ele_PoPmatchingObjectVsEta->SetTitle("mean ele momentum / matching SC energy vs eta");
792  p_ele_PoPmatchingObjectVsEta->GetXaxis()->SetTitle("#eta");
793  p_ele_PoPmatchingObjectVsEta->GetYaxis()->SetTitle("<P/E_{matching jet}>");
794  p_ele_PoPmatchingObjectVsEta->Write();
795  TProfile *p_ele_PoPmatchingObjectVsPhi = h_ele_PoPmatchingObjectVsPhi->ProfileX();
796  p_ele_PoPmatchingObjectVsPhi->SetTitle("mean ele momentum / gen momentum vs phi");
797  p_ele_PoPmatchingObjectVsPhi->GetXaxis()->SetTitle("#phi (rad)");
798  p_ele_PoPmatchingObjectVsPhi->GetYaxis()->SetTitle("<P/E_{matching jet}>");
799  p_ele_PoPmatchingObjectVsPhi->Write();
800  TProfile *p_ele_EtaMnEtamatchingObjectVsEta = h_ele_EtaMnEtamatchingObjectVsEta->ProfileX();
801  p_ele_EtaMnEtamatchingObjectVsEta->GetXaxis()->SetTitle("#eta");
802  p_ele_EtaMnEtamatchingObjectVsEta->GetYaxis()->SetTitle("<#eta_{rec} - #eta_{matching jet}>");
803  p_ele_EtaMnEtamatchingObjectVsEta->Write();
804  TProfile *p_ele_EtaMnEtamatchingObjectVsPhi = h_ele_EtaMnEtamatchingObjectVsPhi->ProfileX();
805  p_ele_EtaMnEtamatchingObjectVsPhi-> GetXaxis()-> SetTitle("#phi");
806  p_ele_EtaMnEtamatchingObjectVsPhi-> GetYaxis()-> SetTitle("<#eta_{rec} - #eta_{matching jet}>");
807  p_ele_EtaMnEtamatchingObjectVsPhi->Write();
808  TProfile *p_ele_PhiMnPhimatchingObjectVsEta = h_ele_PhiMnPhimatchingObjectVsEta->ProfileX();
809  p_ele_PhiMnPhimatchingObjectVsEta-> GetXaxis()-> SetTitle("#eta");
810  p_ele_PhiMnPhimatchingObjectVsEta-> GetYaxis()-> SetTitle("<#phi_{rec} - #phi_{matching jet}> (rad)");
811  p_ele_PhiMnPhimatchingObjectVsEta->Write();
812  TProfile *p_ele_PhiMnPhimatchingObjectVsPhi = h_ele_PhiMnPhimatchingObjectVsPhi->ProfileX();
813  p_ele_PhiMnPhimatchingObjectVsPhi-> GetXaxis()-> SetTitle("#phi");
814  p_ele_PhiMnPhimatchingObjectVsPhi-> GetYaxis()-> SetTitle("<#phi_{rec} - #phi_{matching jet}> (rad)");
815  p_ele_PhiMnPhimatchingObjectVsPhi->Write();
816  TProfile *p_ele_vertexPtVsEta = h_ele_vertexPtVsEta->ProfileX();
817  p_ele_vertexPtVsEta->GetXaxis()->SetTitle("#eta");
818  p_ele_vertexPtVsEta->GetYaxis()->SetTitle("<p_{T}> (GeV/c)");
819  p_ele_vertexPtVsEta->Write();
820  TProfile *p_ele_vertexPtVsPhi = h_ele_vertexPtVsPhi->ProfileX();
821  p_ele_vertexPtVsPhi->GetXaxis()->SetTitle("#phi (rad)");
822  p_ele_vertexPtVsPhi->GetYaxis()->SetTitle("<p_{T}> (GeV/c)");
823  p_ele_vertexPtVsPhi->Write();
824  TProfile *p_ele_EoPVsEta = h_ele_EoPVsEta->ProfileX();
825  p_ele_EoPVsEta->GetXaxis()->SetTitle("#eta");
826  p_ele_EoPVsEta->GetYaxis()->SetTitle("<E/P_{vertex}>");
827  p_ele_EoPVsEta->Write();
828  TProfile *p_ele_EoPVsPhi = h_ele_EoPVsPhi->ProfileX();
829  p_ele_EoPVsPhi->GetXaxis()->SetTitle("#phi (rad)");
830  p_ele_EoPVsPhi->GetYaxis()->SetTitle("<E/P_{vertex}>");
831  p_ele_EoPVsPhi->Write();
832  TProfile *p_ele_EoPoutVsEta = h_ele_EoPoutVsEta->ProfileX();
833  p_ele_EoPoutVsEta->GetXaxis()->SetTitle("#eta");
834  p_ele_EoPoutVsEta->GetYaxis()->SetTitle("<E_{seed}/P_{out}>");
835  p_ele_EoPoutVsEta->Write();
836  TProfile *p_ele_EoPoutVsPhi = h_ele_EoPoutVsPhi->ProfileX();
837  p_ele_EoPoutVsPhi->GetXaxis()->SetTitle("#phi (rad)");
838  p_ele_EoPoutVsPhi->GetYaxis()->SetTitle("<E_{seed}/P_{out}>");
839  p_ele_EoPoutVsPhi->Write();
840  TProfile *p_ele_EeleOPoutVsEta = h_ele_EeleOPoutVsEta->ProfileX();
841  p_ele_EeleOPoutVsEta->SetTitle("mean ele Eele/pout vs eta");
842  p_ele_EeleOPoutVsEta->GetXaxis()->SetTitle("#eta");
843  p_ele_EeleOPoutVsEta->GetYaxis()->SetTitle("<E_{ele}/P_{out}>");
844  p_ele_EeleOPoutVsEta->Write();
845  TProfile *p_ele_EeleOPoutVsPhi = h_ele_EeleOPoutVsPhi->ProfileX();
846  p_ele_EeleOPoutVsPhi->SetTitle("mean ele Eele/pout vs phi");
847  p_ele_EeleOPoutVsPhi->GetXaxis()->SetTitle("#phi (rad)");
848  p_ele_EeleOPoutVsPhi->GetYaxis()->SetTitle("<E_{ele}/P_{out}>");
849  p_ele_EeleOPoutVsPhi->Write();
850  TProfile *p_ele_HoEVsEta = h_ele_HoEVsEta->ProfileX();
851  p_ele_HoEVsEta->GetXaxis()->SetTitle("#eta");
852  p_ele_HoEVsEta->GetYaxis()->SetTitle("<H/E>");
853  p_ele_HoEVsEta->Write();
854  TProfile *p_ele_HoEVsPhi = h_ele_HoEVsPhi->ProfileX();
855  p_ele_HoEVsPhi->GetXaxis()->SetTitle("#phi (rad)");
856  p_ele_HoEVsPhi->GetYaxis()->SetTitle("<H/E>");
857  p_ele_HoEVsPhi->Write();
858  TProfile *p_ele_chi2VsEta = h_ele_chi2VsEta->ProfileX();
859  p_ele_chi2VsEta->GetXaxis()->SetTitle("#eta");
860  p_ele_chi2VsEta->GetYaxis()->SetTitle("<#Chi^{2}>");
861  p_ele_chi2VsEta->Write();
862  TProfile *p_ele_chi2VsPhi = h_ele_chi2VsPhi->ProfileX();
863  p_ele_chi2VsPhi->GetXaxis()->SetTitle("#phi (rad)");
864  p_ele_chi2VsPhi->GetYaxis()->SetTitle("<#Chi^{2}>");
865  p_ele_chi2VsPhi->Write();
866  TProfile *p_ele_foundHitsVsEta = h_ele_foundHitsVsEta->ProfileX();
867  p_ele_foundHitsVsEta->GetXaxis()->SetTitle("#eta");
868  p_ele_foundHitsVsEta->GetYaxis()->SetTitle("<N_{hits}>");
869  p_ele_foundHitsVsEta->Write();
870  TProfile *p_ele_foundHitsVsPhi = h_ele_foundHitsVsPhi->ProfileX();
871  p_ele_foundHitsVsPhi->GetXaxis()->SetTitle("#phi (rad)");
872  p_ele_foundHitsVsPhi->GetYaxis()->SetTitle("<N_{hits}>");
873  p_ele_foundHitsVsPhi->Write();
874  TProfile *p_ele_lostHitsVsEta = h_ele_lostHitsVsEta->ProfileX();
875  p_ele_lostHitsVsEta->GetXaxis()->SetTitle("#eta");
876  p_ele_lostHitsVsEta->GetYaxis()->SetTitle("<N_{hits}>");
877  p_ele_lostHitsVsEta->Write();
878  TProfile *p_ele_lostHitsVsPhi = h_ele_lostHitsVsPhi->ProfileX();
879  p_ele_lostHitsVsPhi->GetXaxis()->SetTitle("#phi (rad)");
880  p_ele_lostHitsVsPhi->GetYaxis()->SetTitle("<N_{hits}>");
881  p_ele_lostHitsVsPhi->Write();
882  TProfile *p_ele_vertexTIPVsEta = h_ele_vertexTIPVsEta->ProfileX();
883  p_ele_vertexTIPVsEta->SetTitle("mean tip (wrt gen vtx) vs eta");
884  p_ele_vertexTIPVsEta->GetXaxis()->SetTitle("#eta");
885  p_ele_vertexTIPVsEta->GetYaxis()->SetTitle("<TIP> (cm)");
886  p_ele_vertexTIPVsEta->Write();
887  TProfile *p_ele_vertexTIPVsPhi = h_ele_vertexTIPVsPhi->ProfileX();
888  p_ele_vertexTIPVsPhi->SetTitle("mean tip (wrt gen vtx) vs phi");
889  p_ele_vertexTIPVsPhi->GetXaxis()->SetTitle("#phi");
890  p_ele_vertexTIPVsPhi->GetYaxis()->SetTitle("<TIP> (cm)");
891  p_ele_vertexTIPVsPhi->Write();
892  TProfile *p_ele_vertexTIPVsPt = h_ele_vertexTIPVsPt->ProfileX();
893  p_ele_vertexTIPVsPt->SetTitle("mean tip (wrt gen vtx) vs phi");
894  p_ele_vertexTIPVsPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
895  p_ele_vertexTIPVsPt->GetYaxis()->SetTitle("<TIP> (cm)");
896  p_ele_vertexTIPVsPt->Write();
897 
898  // mc truth
899 
900  h_matchingObjectNum->Write();
901 
902  // rec event
903 
904  histNum_->Write();
905 
906  // mc
907  h_matchingObjectEta->Write();
908  h_matchingObjectAbsEta->Write();
909  h_matchingObjectP->Write();
910  h_matchingObjectPt->Write();
911  h_matchingObjectPhi->Write();
912  h_matchingObjectZ->Write();
913 
914  // all electrons
915  h_ele_EoverP_all->Write();
916  h_ele_EseedOP_all->Write();
917  h_ele_EoPout_all->Write();
918  h_ele_EeleOPout_all ->Write();
919  h_ele_dEtaSc_propVtx_all->Write();
920  h_ele_dPhiSc_propVtx_all->Write();
921  h_ele_dEtaCl_propOut_all ->Write();
922  h_ele_dPhiCl_propOut_all->Write();
923  h_ele_HoE_all->Write();
924  h_ele_TIP_all->Write();
925  h_ele_vertexPt_all->Write();
926  h_ele_vertexEta_all->Write();
927  h_ele_mee_all->Write();
928  h_ele_mee_os->Write();
929  h_ele_E2mnE1vsMee_all ->Write();
930  h_ele_E2mnE1vsMee_egeg_all->Write();
931 
932  // matched electrons
933  h_ele_charge->Write();
934  h_ele_chargeVsEta->Write();
935  h_ele_chargeVsPhi->Write();
936  h_ele_chargeVsPt->Write();
937  h_ele_vertexP->Write();
938  h_ele_vertexPt->Write();
939  h_ele_vertexPtVsEta->Write();
940  h_ele_vertexPtVsPhi->Write();
941  h_ele_matchingObjectPt_matched->Write();
942  h_ele_vertexEta->Write();
943  h_ele_vertexEtaVsPhi->Write();
944  h_ele_matchingObjectAbsEta_matched->Write();
945  h_ele_matchingObjectEta_matched->Write();
946  h_ele_vertexPhi->Write();
947  h_ele_matchingObjectPhi_matched->Write();
948  h_ele_vertexX->Write();
949  h_ele_vertexY ->Write();
950  h_ele_vertexZ->Write();
951  h_ele_vertexTIP->Write();
952  h_ele_matchingObjectZ_matched->Write();
953  h_ele_vertexTIPVsEta->Write();
954  h_ele_vertexTIPVsPhi->Write();
955  h_ele_vertexTIPVsPt->Write();
956  h_ele_PoPmatchingObject->Write();
957  h_ele_PoPmatchingObjectVsEta ->Write();
958  h_ele_PoPmatchingObjectVsPhi->Write();
959  h_ele_PoPmatchingObjectVsPt->Write();
960  h_ele_PoPmatchingObject_barrel ->Write();
961  h_ele_PoPmatchingObject_endcaps->Write();
962  h_ele_EtaMnEtamatchingObject->Write();
963  h_ele_EtaMnEtamatchingObjectVsEta ->Write();
964  h_ele_EtaMnEtamatchingObjectVsPhi->Write();
965  h_ele_EtaMnEtamatchingObjectVsPt->Write();
966  h_ele_PhiMnPhimatchingObject ->Write();
967  h_ele_PhiMnPhimatchingObject2 ->Write();
968  h_ele_PhiMnPhimatchingObjectVsEta->Write();
969  h_ele_PhiMnPhimatchingObjectVsPhi->Write();
970  h_ele_PhiMnPhimatchingObjectVsPt->Write();
971 
972  // matched electron, superclusters
973  histSclEn_->Write();
974  histSclEoEmatchingObject_barrel->Write();
975  histSclEoEmatchingObject_endcaps->Write();
976  histSclEt_->Write();
977  histSclEtVsEta_->Write();
978  histSclEtVsPhi_->Write();
979  histSclEtaVsPhi_ ->Write();
980  histSclEta_->Write();
981  histSclPhi_->Write();
982  histSclSigIEtaIEta_->Write();
983  histSclSigIEtaIEta_barrel_->Write();
984  histSclSigIEtaIEta_endcaps_->Write();
985  histSclE1x5_->Write();
986  histSclE1x5_barrel_->Write();
987  histSclE1x5_endcaps_->Write();
988  histSclE2x5max_->Write();
989  histSclE2x5max_barrel_->Write();
990  histSclE2x5max_endcaps_->Write();
991  histSclE5x5_->Write();
992  histSclE5x5_barrel_->Write();
993  histSclE5x5_endcaps_->Write();
994 
995  // matched electron, gsf tracks
996  h_ele_ambiguousTracks->Write();
997  h_ele_ambiguousTracksVsEta->Write();
998  h_ele_ambiguousTracksVsPhi->Write();
999  h_ele_ambiguousTracksVsPt->Write();
1000  h_ele_foundHits->Write();
1001  h_ele_foundHitsVsEta->Write();
1002  h_ele_foundHitsVsPhi->Write();
1003  h_ele_foundHitsVsPt->Write();
1004  h_ele_lostHits->Write();
1005  h_ele_lostHitsVsEta->Write();
1006  h_ele_lostHitsVsPhi->Write();
1007  h_ele_lostHitsVsPt->Write();
1008  h_ele_chi2 ->Write();
1009  h_ele_chi2VsEta ->Write();
1010  h_ele_chi2VsPhi ->Write();
1011  h_ele_chi2VsPt->Write();
1012  h_ele_PinMnPout->Write();
1013  h_ele_PinMnPout_mode->Write();
1014  h_ele_PinMnPoutVsEta_mode->Write();
1015  h_ele_PinMnPoutVsPhi_mode->Write();
1016  h_ele_PinMnPoutVsPt_mode->Write();
1017  h_ele_PinMnPoutVsE_mode->Write();
1018  h_ele_PinMnPoutVsChi2_mode->Write();
1019  h_ele_outerP ->Write();
1020  h_ele_outerP_mode->Write();
1021  h_ele_outerPVsEta_mode->Write();
1022  h_ele_outerPt->Write();
1023  h_ele_outerPt_mode ->Write();
1024  h_ele_outerPtVsEta_mode->Write();
1025  h_ele_outerPtVsPhi_mode->Write();
1026  h_ele_outerPtVsPt_mode->Write();
1027 
1028  // matched electrons, matching
1029  h_ele_EoP ->Write();
1030  h_ele_EoP_eg ->Write();
1031  h_ele_EoP_barrel ->Write();
1032  h_ele_EoP_eg_barrel ->Write();
1033  h_ele_EoP_endcaps ->Write();
1034  h_ele_EoP_eg_endcaps ->Write();
1035  h_ele_EoPVsEta ->Write();
1036  h_ele_EoPVsPhi->Write();
1037  h_ele_EoPVsE->Write();
1038  h_ele_EseedOP ->Write();
1039  h_ele_EseedOP_eg ->Write();
1040  h_ele_EseedOP_barrel ->Write();
1041  h_ele_EseedOP_eg_barrel ->Write();
1042  h_ele_EseedOP_endcaps ->Write();
1043  h_ele_EseedOP_eg_endcaps ->Write();
1044  h_ele_EseedOPVsEta ->Write();
1045  h_ele_EseedOPVsPhi->Write();
1046  h_ele_EseedOPVsE->Write();
1047  h_ele_EoPout->Write();
1048  h_ele_EoPout_eg->Write();
1049  h_ele_EoPout_barrel->Write();
1050  h_ele_EoPout_eg_barrel->Write();
1051  h_ele_EoPout_endcaps->Write();
1052  h_ele_EoPout_eg_endcaps->Write();
1053  h_ele_EoPoutVsEta->Write();
1054  h_ele_EoPoutVsPhi->Write();
1055  h_ele_EoPoutVsE ->Write();
1056  h_ele_EeleOPout->Write();
1057  h_ele_EeleOPout_eg->Write();
1058  h_ele_EeleOPout_barrel->Write();
1059  h_ele_EeleOPout_eg_barrel->Write();
1060  h_ele_EeleOPout_endcaps->Write();
1061  h_ele_EeleOPout_eg_endcaps->Write();
1062  h_ele_EeleOPoutVsEta->Write();
1063  h_ele_EeleOPoutVsPhi->Write();
1064  h_ele_EeleOPoutVsE ->Write();
1065  h_ele_dEtaSc_propVtx->Write();
1066  h_ele_dEtaSc_propVtx_eg->Write();
1067  h_ele_dEtaSc_propVtx_barrel->Write();
1068  h_ele_dEtaSc_propVtx_eg_barrel->Write();
1069  h_ele_dEtaSc_propVtx_endcaps->Write();
1070  h_ele_dEtaSc_propVtx_eg_endcaps->Write();
1071  h_ele_dEtaScVsEta_propVtx->Write();
1072  h_ele_dEtaScVsPhi_propVtx->Write();
1073  h_ele_dEtaScVsPt_propVtx ->Write();
1074  h_ele_dPhiSc_propVtx->Write();
1075  h_ele_dPhiSc_propVtx_eg->Write();
1076  h_ele_dPhiSc_propVtx_barrel->Write();
1077  h_ele_dPhiSc_propVtx_eg_barrel->Write();
1078  h_ele_dPhiSc_propVtx_endcaps->Write();
1079  h_ele_dPhiSc_propVtx_eg_endcaps->Write();
1080  h_ele_dPhiScVsEta_propVtx ->Write();
1081  h_ele_dPhiScVsPhi_propVtx->Write();
1082  h_ele_dPhiScVsPt_propVtx->Write();
1083  h_ele_dEtaCl_propOut->Write();
1084  h_ele_dEtaCl_propOut_eg->Write();
1085  h_ele_dEtaCl_propOut_barrel->Write();
1086  h_ele_dEtaCl_propOut_eg_barrel->Write();
1087  h_ele_dEtaCl_propOut_endcaps->Write();
1088  h_ele_dEtaCl_propOut_eg_endcaps->Write();
1089  h_ele_dEtaClVsEta_propOut->Write();
1090  h_ele_dEtaClVsPhi_propOut->Write();
1091  h_ele_dEtaClVsPt_propOut->Write();
1092  h_ele_dPhiCl_propOut->Write();
1093  h_ele_dPhiCl_propOut_eg->Write();
1094  h_ele_dPhiCl_propOut_barrel->Write();
1095  h_ele_dPhiCl_propOut_eg_barrel->Write();
1096  h_ele_dPhiCl_propOut_endcaps->Write();
1097  h_ele_dPhiCl_propOut_eg_endcaps->Write();
1098  h_ele_dPhiClVsEta_propOut->Write();
1099  h_ele_dPhiClVsPhi_propOut->Write();
1100  h_ele_dPhiClVsPt_propOut->Write();
1101  h_ele_dEtaEleCl_propOut->Write();
1102  h_ele_dEtaEleCl_propOut_eg->Write();
1103  h_ele_dEtaEleCl_propOut_barrel->Write();
1104  h_ele_dEtaEleCl_propOut_eg_barrel->Write();
1105  h_ele_dEtaEleCl_propOut_endcaps->Write();
1106  h_ele_dEtaEleCl_propOut_eg_endcaps->Write();
1107  h_ele_dEtaEleClVsEta_propOut->Write();
1108  h_ele_dEtaEleClVsPhi_propOut->Write();
1109  h_ele_dEtaEleClVsPt_propOut->Write();
1110  h_ele_dPhiEleCl_propOut->Write();
1111  h_ele_dPhiEleCl_propOut_eg->Write();
1112  h_ele_dPhiEleCl_propOut_barrel->Write();
1113  h_ele_dPhiEleCl_propOut_eg_barrel->Write();
1114  h_ele_dPhiEleCl_propOut_endcaps->Write();
1115  h_ele_dPhiEleCl_propOut_eg_endcaps->Write();
1116  h_ele_dPhiEleClVsEta_propOut->Write();
1117  h_ele_dPhiEleClVsPhi_propOut->Write();
1118  h_ele_dPhiEleClVsPt_propOut->Write();
1119  h_ele_HoE->Write();
1120  h_ele_HoE_eg->Write();
1121  h_ele_HoE_barrel->Write();
1122  h_ele_HoE_eg_barrel->Write();
1123  h_ele_HoE_endcaps->Write();
1124  h_ele_HoE_eg_endcaps->Write();
1125  h_ele_HoE_fiducial->Write();
1126  h_ele_HoEVsEta->Write();
1127  h_ele_HoEVsPhi->Write();
1128  h_ele_HoEVsE->Write();
1129 
1130  h_ele_seed_dphi2_->Write();
1131  h_ele_seed_subdet2_->Write();
1132  TProfile *p_ele_seed_dphi2VsEta_ = h_ele_seed_dphi2VsEta_->ProfileX();
1133  p_ele_seed_dphi2VsEta_->SetTitle("mean ele seed dphi 2nd layer vs eta");
1134  p_ele_seed_dphi2VsEta_->GetXaxis()->SetTitle("#eta");
1135  p_ele_seed_dphi2VsEta_->GetYaxis()->SetTitle("<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)");
1136  p_ele_seed_dphi2VsEta_->SetMinimum(-0.004);
1137  p_ele_seed_dphi2VsEta_->SetMaximum(0.004);
1138  p_ele_seed_dphi2VsEta_->Write();
1139  TProfile *p_ele_seed_dphi2VsPt_ = h_ele_seed_dphi2VsPt_->ProfileX();
1140  p_ele_seed_dphi2VsPt_->SetTitle("mean ele seed dphi 2nd layer vs pt");
1141  p_ele_seed_dphi2VsPt_->GetXaxis()->SetTitle("p_{T} (GeV/c)");
1142  p_ele_seed_dphi2VsPt_->GetYaxis()->SetTitle("<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)");
1143  p_ele_seed_dphi2VsPt_->SetMinimum(-0.004);
1144  p_ele_seed_dphi2VsPt_->SetMaximum(0.004);
1145  p_ele_seed_dphi2VsPt_->Write();
1146  h_ele_seed_drz2_->Write();
1147  TProfile *p_ele_seed_drz2VsEta_ = h_ele_seed_drz2VsEta_->ProfileX();
1148  p_ele_seed_drz2VsEta_->SetTitle("mean ele seed dr(dz) 2nd layer vs eta");
1149  p_ele_seed_drz2VsEta_->GetXaxis()->SetTitle("#eta");
1150  p_ele_seed_drz2VsEta_->GetYaxis()->SetTitle("<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)");
1151  p_ele_seed_drz2VsEta_->SetMinimum(-0.15);
1152  p_ele_seed_drz2VsEta_->SetMaximum(0.15);
1153  p_ele_seed_drz2VsEta_->Write();
1154  TProfile *p_ele_seed_drz2VsPt_ = h_ele_seed_drz2VsPt_->ProfileX();
1155  p_ele_seed_drz2VsPt_->SetTitle("mean ele seed dr(dz) 2nd layer vs pt");
1156  p_ele_seed_drz2VsPt_->GetXaxis()->SetTitle("p_{T} (GeV/c)");
1157  p_ele_seed_drz2VsPt_->GetYaxis()->SetTitle("<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)");
1158  p_ele_seed_drz2VsPt_->SetMinimum(-0.15);
1159  p_ele_seed_drz2VsPt_->SetMaximum(0.15);
1160  p_ele_seed_drz2VsPt_->Write();
1161 
1162  // classes
1163  h_ele_classes->Write();
1164  h_ele_eta->Write();
1165  h_ele_eta_golden->Write();
1166  h_ele_eta_bbrem->Write();
1167  h_ele_eta_narrow->Write();
1168  h_ele_eta_shower->Write();
1169  h_ele_PinVsPoutGolden_mode->Write();
1170  h_ele_PinVsPoutShowering_mode->Write();
1171  h_ele_PinVsPoutGolden_mean->Write();
1172  h_ele_PinVsPoutShowering_mean->Write();
1173  h_ele_PtinVsPtoutGolden_mode->Write();
1174  h_ele_PtinVsPtoutShowering_mode->Write();
1175  h_ele_PtinVsPtoutGolden_mean->Write();
1176  h_ele_PtinVsPtoutShowering_mean->Write();
1177  histSclEoEmatchingObjectGolden_barrel->Write();
1178  histSclEoEmatchingObjectGolden_endcaps->Write();
1179  histSclEoEmatchingObjectShowering_barrel->Write();
1180  histSclEoEmatchingObjectShowering_endcaps->Write();
1181 
1182  // fbrem
1183  h_ele_fbrem->Write();
1184  h_ele_fbremVsEta_mode->Write();
1185  h_ele_fbremVsEta_mean->Write();
1186  h_ele_etaEff->Write();
1187  h_ele_zEff->Write();
1188  h_ele_phiEff->Write();
1189  h_ele_absetaEff->Write();
1190  h_ele_ptEff->Write();
1191  h_ele_etaEff_all->Write();
1192  h_ele_ptEff_all->Write();
1193  h_ele_eta_goldenFrac->Write();
1194  h_ele_eta_bbremFrac->Write();
1195  h_ele_eta_narrowFrac->Write();
1196  h_ele_eta_showerFrac->Write();
1197  h_ele_xOverX0VsEta->Write();
1198 
1199  // e/g et pflow electrons
1200  h_ele_mva->Write();
1201  h_ele_provenance->Write();
1202 
1203  // isolation
1204  h_ele_tkSumPt_dr03->GetXaxis()->SetTitle("TkIsoSum, cone 0.3 (GeV/c)");
1205  h_ele_tkSumPt_dr03->GetYaxis()->SetTitle("Events");
1206  h_ele_tkSumPt_dr03->Write();
1207  h_ele_ecalRecHitSumEt_dr03->GetXaxis()->SetTitle("EcalIsoSum, cone 0.3 (GeV)");
1208  h_ele_ecalRecHitSumEt_dr03->GetYaxis()->SetTitle("Events");
1209  h_ele_ecalRecHitSumEt_dr03->Write();
1210  h_ele_hcalDepth1TowerSumEt_dr03->GetXaxis()->SetTitle("Hcal1IsoSum, cone 0.3 (GeV)");
1211  h_ele_hcalDepth1TowerSumEt_dr03->GetYaxis()->SetTitle("Events");
1212  h_ele_hcalDepth1TowerSumEt_dr03->Write();
1213  h_ele_hcalDepth2TowerSumEt_dr03->GetXaxis()->SetTitle("Hcal2IsoSum, cone 0.3 (GeV)");
1214  h_ele_hcalDepth2TowerSumEt_dr03->GetYaxis()->SetTitle("Events");
1215  h_ele_hcalDepth2TowerSumEt_dr03->Write();
1216  h_ele_tkSumPt_dr04->GetXaxis()->SetTitle("TkIsoSum, cone 0.4 (GeV/c)");
1217  h_ele_tkSumPt_dr04->GetYaxis()->SetTitle("Events");
1218  h_ele_tkSumPt_dr04->Write();
1219  h_ele_ecalRecHitSumEt_dr04->GetXaxis()->SetTitle("EcalIsoSum, cone 0.4 (GeV)");
1220  h_ele_ecalRecHitSumEt_dr04->GetYaxis()->SetTitle("Events");
1221  h_ele_ecalRecHitSumEt_dr04->Write();
1222  h_ele_hcalDepth1TowerSumEt_dr04->GetXaxis()->SetTitle("Hcal1IsoSum, cone 0.4 (GeV)");
1223  h_ele_hcalDepth1TowerSumEt_dr04->GetYaxis()->SetTitle("Events");
1224  h_ele_hcalDepth1TowerSumEt_dr04->Write();
1225  h_ele_hcalDepth2TowerSumEt_dr04->GetXaxis()->SetTitle("Hcal2IsoSum, cone 0.4 (GeV)");
1226  h_ele_hcalDepth2TowerSumEt_dr04->GetYaxis()->SetTitle("Events");
1227  h_ele_hcalDepth2TowerSumEt_dr04->Write();
1228 
1229 }
1230 
1231 void
1233 {
1234  std::cout << "analyzing new event " << std::endl;
1235 
1236  // get reco electrons
1238  iEvent.getByLabel(electronCollection_,gsfElectrons);
1239  edm::LogInfo("")<<"\n\n =================> Treating event "<<iEvent.id()<<" Number of electrons "<<gsfElectrons.product()->size();
1240 
1241  // get reco calojet collection
1243  iEvent.getByLabel(matchingObjectCollection_, recoCaloJets);
1244 
1245  // get the beamspot from the Event:
1246  edm::Handle<reco::BeamSpot> recoBeamSpotHandle;
1247  iEvent.getByType(recoBeamSpotHandle);
1248  const BeamSpot bs = *recoBeamSpotHandle;
1249 
1250  histNum_->Fill((*gsfElectrons).size());
1251 
1252  // all rec electrons
1253  for (reco::GsfElectronCollection::const_iterator gsfIter=gsfElectrons->begin();
1254  gsfIter!=gsfElectrons->end(); gsfIter++){
1255  // preselect electrons
1256  if (gsfIter->pt()>maxPt_ || std::abs(gsfIter->eta())>maxAbsEta_) continue;
1257  h_ele_EoverP_all -> Fill( gsfIter->eSuperClusterOverP() );
1258  h_ele_EseedOP_all -> Fill( gsfIter->eSeedClusterOverP() );
1259  h_ele_EoPout_all -> Fill( gsfIter->eSeedClusterOverPout() );
1260  h_ele_EeleOPout_all -> Fill( gsfIter->eEleClusterOverPout() );
1261  h_ele_dEtaSc_propVtx_all -> Fill(gsfIter->deltaEtaSuperClusterTrackAtVtx());
1262  h_ele_dPhiSc_propVtx_all -> Fill(gsfIter->deltaPhiSuperClusterTrackAtVtx());
1263  h_ele_dEtaCl_propOut_all -> Fill(gsfIter->deltaEtaSeedClusterTrackAtCalo());
1264  h_ele_dPhiCl_propOut_all -> Fill(gsfIter->deltaPhiSeedClusterTrackAtCalo());
1265  h_ele_HoE_all -> Fill( gsfIter->hadronicOverEm() );
1266  double d = gsfIter->vertex().x()*gsfIter->vertex().x()
1267  +gsfIter->vertex().y()*gsfIter->vertex().y();
1268  h_ele_TIP_all -> Fill( sqrt(d) );
1269  h_ele_vertexEta_all -> Fill( gsfIter->eta() );
1270  h_ele_vertexPt_all -> Fill( gsfIter->pt() );
1271  float enrj1=gsfIter->superCluster()->energy();
1272  // mee
1273  for (reco::GsfElectronCollection::const_iterator gsfIter2=gsfIter+1;
1274  gsfIter2!=gsfElectrons->end(); gsfIter2++){
1275  math::XYZTLorentzVector p12 = (*gsfIter).p4()+(*gsfIter2).p4();
1276  float mee2 = p12.Dot(p12);
1277  h_ele_mee_all -> Fill(sqrt(mee2));
1278  float enrj2=gsfIter2->superCluster()->energy();
1279  h_ele_E2mnE1vsMee_all->Fill(sqrt(mee2),enrj2-enrj1);
1280  if (gsfIter->ecalDrivenSeed() && gsfIter2->ecalDrivenSeed()) h_ele_E2mnE1vsMee_egeg_all->Fill(sqrt(mee2),enrj2-enrj1);
1281  if (gsfIter->charge()*gsfIter2->charge()<0.) h_ele_mee_os -> Fill(sqrt(mee2));
1282  }
1283  }
1284 
1285  // association matching object-reco electrons
1286  int matchingObjectNum=0;
1287 
1288  for ( reco::CaloJetCollection::const_iterator moIter=recoCaloJets->begin();
1289  moIter!=recoCaloJets->end(); moIter++ ) {
1290 
1291  // number of matching objects
1292  matchingObjectNum++;
1293 
1294  if (moIter->energy()/cosh(moIter->eta())> maxPt_ || std::abs(moIter->eta())> maxAbsEta_) continue;
1295 
1296  // suppress the endcaps
1297  //if (std::abs(moIter->eta()) > 1.5) continue;
1298  // select central z
1299  //if ( std::abs((*mcIter)->production_vertex()->position().z())>50.) continue;
1300 
1301  h_matchingObjectEta -> Fill( moIter->eta() );
1302  h_matchingObjectAbsEta -> Fill( std::abs(moIter->eta()) );
1303  h_matchingObjectP -> Fill( moIter->energy() );
1304  h_matchingObjectPt -> Fill( moIter->energy()/cosh(moIter->eta()) );
1305  h_matchingObjectPhi -> Fill( moIter->phi() );
1306  h_matchingObjectZ -> Fill( moIter->vz() );
1307 
1308  // looking for the best matching gsf electron
1309  bool okGsfFound = false;
1310  double gsfOkRatio = 999999.;
1311 
1312  // find best matched electron
1313  reco::GsfElectron bestGsfElectron;
1314  for (reco::GsfElectronCollection::const_iterator gsfIter=gsfElectrons->begin();
1315  gsfIter!=gsfElectrons->end(); gsfIter++){
1316 
1317  double dphi = gsfIter->phi()-moIter->phi();
1318  if (std::abs(dphi)>CLHEP::pi)
1319  dphi = dphi < 0? (CLHEP::twopi) + dphi : dphi - CLHEP::twopi;
1320  double deltaR = sqrt(std::pow((gsfIter->eta()-moIter->eta()),2) + std::pow(dphi,2));
1321  if ( deltaR < deltaR_ ){
1322  //if ( (genPc->pdg_id() == 11) && (gsfIter->charge() < 0.) || (genPc->pdg_id() == -11) &&
1323  //(gsfIter->charge() > 0.) ){
1324  double tmpGsfRatio = gsfIter->p()/moIter->energy();
1325  if ( std::abs(tmpGsfRatio-1) < std::abs(gsfOkRatio-1) ) {
1326  gsfOkRatio = tmpGsfRatio;
1327  bestGsfElectron=*gsfIter;
1328  okGsfFound = true;
1329  }
1330  //}
1331  }
1332  } // loop over rec ele to look for the best one
1333 
1334  // analysis when the matching object is matched by a rec electron
1335  if (okGsfFound){
1336 
1337  // electron related distributions
1338  h_ele_charge -> Fill( bestGsfElectron.charge() );
1339  h_ele_chargeVsEta -> Fill( bestGsfElectron.eta(),bestGsfElectron.charge() );
1340  h_ele_chargeVsPhi -> Fill( bestGsfElectron.phi(),bestGsfElectron.charge() );
1341  h_ele_chargeVsPt -> Fill( bestGsfElectron.pt(),bestGsfElectron.charge() );
1342  h_ele_vertexP -> Fill( bestGsfElectron.p() );
1343  h_ele_vertexPt -> Fill( bestGsfElectron.pt() );
1344  h_ele_vertexPtVsEta -> Fill( bestGsfElectron.eta(),bestGsfElectron.pt() );
1345  h_ele_vertexPtVsPhi -> Fill( bestGsfElectron.phi(),bestGsfElectron.pt() );
1346  h_ele_vertexEta -> Fill( bestGsfElectron.eta() );
1347  // generated distributions for matched electrons
1348  h_ele_matchingObjectPt_matched -> Fill( moIter->energy()/cosh(moIter->eta()) );
1349  h_ele_matchingObjectPhi_matched -> Fill( moIter->phi() );
1350  h_ele_matchingObjectAbsEta_matched -> Fill( std::abs(moIter->eta()) );
1351  h_ele_matchingObjectEta_matched -> Fill( moIter->eta() );
1352  h_ele_vertexEtaVsPhi -> Fill( bestGsfElectron.phi(),bestGsfElectron.eta() );
1353  h_ele_vertexPhi -> Fill( bestGsfElectron.phi() );
1354  h_ele_vertexX -> Fill( bestGsfElectron.vertex().x() );
1355  h_ele_vertexY -> Fill( bestGsfElectron.vertex().y() );
1356  h_ele_vertexZ -> Fill( bestGsfElectron.vertex().z() );
1357  h_ele_matchingObjectZ_matched -> Fill( moIter->vz() );
1358  double d = (bestGsfElectron.vertex().x()-bs.position().x())
1359  *(bestGsfElectron.vertex().x()-bs.position().x())+
1360  (bestGsfElectron.vertex().y()-bs.position().y())
1361  *(bestGsfElectron.vertex().y()-bs.position().y());
1362  d = sqrt(d);
1363  h_ele_vertexTIP -> Fill( d );
1364  h_ele_vertexTIPVsEta -> Fill( bestGsfElectron.eta(), d );
1365  h_ele_vertexTIPVsPhi -> Fill( bestGsfElectron.phi(), d );
1366  h_ele_vertexTIPVsPt -> Fill( bestGsfElectron.pt(), d );
1367  h_ele_EtaMnEtamatchingObject -> Fill( bestGsfElectron.eta()-moIter->eta());
1368  h_ele_EtaMnEtamatchingObjectVsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.eta()-moIter->eta());
1369  h_ele_EtaMnEtamatchingObjectVsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.eta()-moIter->eta());
1370  h_ele_EtaMnEtamatchingObjectVsPt -> Fill( bestGsfElectron.pt(), bestGsfElectron.eta()-moIter->eta());
1371  h_ele_PhiMnPhimatchingObject -> Fill( bestGsfElectron.phi()-moIter->phi());
1372  h_ele_PhiMnPhimatchingObject2 -> Fill( bestGsfElectron.phi()-moIter->phi());
1373  h_ele_PhiMnPhimatchingObjectVsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.phi()-moIter->phi());
1374  h_ele_PhiMnPhimatchingObjectVsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.phi()-moIter->phi());
1375  h_ele_PhiMnPhimatchingObjectVsPt -> Fill( bestGsfElectron.pt(), bestGsfElectron.phi()-moIter->phi());
1376  h_ele_PoPmatchingObject -> Fill( bestGsfElectron.p()/moIter->energy());
1377  h_ele_PoPmatchingObjectVsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.p()/moIter->energy());
1378  h_ele_PoPmatchingObjectVsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.p()/moIter->energy());
1379  h_ele_PoPmatchingObjectVsPt -> Fill( bestGsfElectron.py(), bestGsfElectron.p()/moIter->energy());
1380  if (bestGsfElectron.isEB()) h_ele_PoPmatchingObject_barrel -> Fill( bestGsfElectron.p()/moIter->energy());
1381  if (bestGsfElectron.isEE()) h_ele_PoPmatchingObject_endcaps -> Fill( bestGsfElectron.p()/moIter->energy());
1382 
1383  // supercluster related distributions
1384  reco::SuperClusterRef sclRef = bestGsfElectron.superCluster();
1385  if (!bestGsfElectron.ecalDrivenSeed()&&bestGsfElectron.trackerDrivenSeed()) sclRef = bestGsfElectron.pflowSuperCluster();
1386  histSclEn_->Fill(sclRef->energy());
1387  double R=TMath::Sqrt(sclRef->x()*sclRef->x() + sclRef->y()*sclRef->y() +sclRef->z()*sclRef->z());
1388  double Rt=TMath::Sqrt(sclRef->x()*sclRef->x() + sclRef->y()*sclRef->y());
1389  histSclEt_->Fill(sclRef->energy()*(Rt/R));
1390  histSclEtVsEta_->Fill(sclRef->eta(),sclRef->energy()*(Rt/R));
1391  histSclEtVsPhi_->Fill(sclRef->phi(),sclRef->energy()*(Rt/R));
1392  if (bestGsfElectron.classification() < 100) histSclEoEmatchingObject_barrel->Fill(sclRef->energy()/moIter->energy());
1393  if (bestGsfElectron.classification() >= 100) histSclEoEmatchingObject_endcaps->Fill(sclRef->energy()/moIter->energy());
1394  histSclEta_->Fill(sclRef->eta());
1395  histSclEtaVsPhi_->Fill(sclRef->phi(),sclRef->eta());
1396  histSclPhi_->Fill(sclRef->phi());
1397  histSclSigIEtaIEta_->Fill(bestGsfElectron.scSigmaIEtaIEta());
1398  if (bestGsfElectron.isEB()) histSclSigIEtaIEta_barrel_->Fill(bestGsfElectron.scSigmaIEtaIEta());
1399  if (bestGsfElectron.isEE()) histSclSigIEtaIEta_endcaps_->Fill(bestGsfElectron.scSigmaIEtaIEta());
1400  histSclE1x5_->Fill(bestGsfElectron.scE1x5());
1401  if (bestGsfElectron.isEB()) histSclE1x5_barrel_->Fill(bestGsfElectron.scE1x5());
1402  if (bestGsfElectron.isEE()) histSclE1x5_endcaps_->Fill(bestGsfElectron.scE1x5());
1403  histSclE2x5max_->Fill(bestGsfElectron.scE2x5Max());
1404  if (bestGsfElectron.isEB()) histSclE2x5max_barrel_->Fill(bestGsfElectron.scE2x5Max());
1405  if (bestGsfElectron.isEE()) histSclE2x5max_endcaps_->Fill(bestGsfElectron.scE2x5Max());
1406  histSclE5x5_->Fill(bestGsfElectron.scE5x5());
1407  if (bestGsfElectron.isEB()) histSclE5x5_barrel_->Fill(bestGsfElectron.scE5x5());
1408  if (bestGsfElectron.isEE()) histSclE5x5_endcaps_->Fill(bestGsfElectron.scE5x5());
1409 
1410  // track related distributions
1411  h_ele_ambiguousTracks -> Fill( bestGsfElectron.ambiguousGsfTracksSize() );
1412  h_ele_ambiguousTracksVsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.ambiguousGsfTracksSize() );
1413  h_ele_ambiguousTracksVsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.ambiguousGsfTracksSize() );
1414  h_ele_ambiguousTracksVsPt -> Fill( bestGsfElectron.pt(), bestGsfElectron.ambiguousGsfTracksSize() );
1415  if (!readAOD_) { // track extra does not exist in AOD
1416  h_ele_foundHits -> Fill( bestGsfElectron.gsfTrack()->numberOfValidHits() );
1417  h_ele_foundHitsVsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.gsfTrack()->numberOfValidHits() );
1418  h_ele_foundHitsVsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.gsfTrack()->numberOfValidHits() );
1419  h_ele_foundHitsVsPt -> Fill( bestGsfElectron.pt(), bestGsfElectron.gsfTrack()->numberOfValidHits() );
1420  h_ele_lostHits -> Fill( bestGsfElectron.gsfTrack()->numberOfLostHits() );
1421  h_ele_lostHitsVsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.gsfTrack()->numberOfLostHits() );
1422  h_ele_lostHitsVsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.gsfTrack()->numberOfLostHits() );
1423  h_ele_lostHitsVsPt -> Fill( bestGsfElectron.pt(), bestGsfElectron.gsfTrack()->numberOfLostHits() );
1424  h_ele_chi2 -> Fill( bestGsfElectron.gsfTrack()->normalizedChi2() );
1425  h_ele_chi2VsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.gsfTrack()->normalizedChi2() );
1426  h_ele_chi2VsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.gsfTrack()->normalizedChi2() );
1427  h_ele_chi2VsPt -> Fill( bestGsfElectron.pt(), bestGsfElectron.gsfTrack()->normalizedChi2() );
1428  }
1429  // from gsf track interface, hence using mean
1430  if (!readAOD_) { // track extra does not exist in AOD
1431  h_ele_PinMnPout -> Fill( bestGsfElectron.gsfTrack()->innerMomentum().R() - bestGsfElectron.gsfTrack()->outerMomentum().R() );
1432  h_ele_outerP -> Fill( bestGsfElectron.gsfTrack()->outerMomentum().R() );
1433  h_ele_outerPt -> Fill( bestGsfElectron.gsfTrack()->outerMomentum().Rho() );
1434  }
1435  // from electron interface, hence using mode
1436  h_ele_PinMnPout_mode -> Fill( bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R() );
1437  h_ele_PinMnPoutVsEta_mode -> Fill( bestGsfElectron.eta(), bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R() );
1438  h_ele_PinMnPoutVsPhi_mode -> Fill( bestGsfElectron.phi(), bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R() );
1439  h_ele_PinMnPoutVsPt_mode -> Fill( bestGsfElectron.pt(), bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R() );
1440  h_ele_PinMnPoutVsE_mode -> Fill( bestGsfElectron.caloEnergy(), bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R() );
1441  if (!readAOD_) // track extra does not exist in AOD
1442  h_ele_PinMnPoutVsChi2_mode -> Fill( bestGsfElectron.gsfTrack()->normalizedChi2(), bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R() );
1443  h_ele_outerP_mode -> Fill( bestGsfElectron.trackMomentumOut().R() );
1444  h_ele_outerPVsEta_mode -> Fill(bestGsfElectron.eta(), bestGsfElectron.trackMomentumOut().R() );
1445  h_ele_outerPt_mode -> Fill( bestGsfElectron.trackMomentumOut().Rho() );
1446  h_ele_outerPtVsEta_mode -> Fill(bestGsfElectron.eta(), bestGsfElectron.trackMomentumOut().Rho() );
1447  h_ele_outerPtVsPhi_mode -> Fill(bestGsfElectron.phi(), bestGsfElectron.trackMomentumOut().Rho() );
1448  h_ele_outerPtVsPt_mode -> Fill(bestGsfElectron.pt(), bestGsfElectron.trackMomentumOut().Rho() );
1449 
1450  if (!readAOD_) { // track extra does not exist in AOD
1451  edm::RefToBase<TrajectorySeed> seed = bestGsfElectron.gsfTrack()->extra()->seedRef();
1452  ElectronSeedRef elseed=seed.castTo<ElectronSeedRef>();
1453  h_ele_seed_dphi2_-> Fill(elseed->dPhi2());
1454  h_ele_seed_dphi2VsEta_-> Fill(bestGsfElectron.eta(), elseed->dPhi2());
1455  h_ele_seed_dphi2VsPt_-> Fill(bestGsfElectron.pt(), elseed->dPhi2()) ;
1456  h_ele_seed_drz2_-> Fill(elseed->dRz2());
1457  h_ele_seed_drz2VsEta_-> Fill(bestGsfElectron.eta(), elseed->dRz2());
1458  h_ele_seed_drz2VsPt_-> Fill(bestGsfElectron.pt(), elseed->dRz2());
1459  h_ele_seed_subdet2_-> Fill(elseed->subDet2());
1460  }
1461  // match distributions
1462  h_ele_EoP -> Fill( bestGsfElectron.eSuperClusterOverP() );
1463  if (bestGsfElectron.ecalDrivenSeed()) h_ele_EoP_eg -> Fill( bestGsfElectron.eSuperClusterOverP() );
1464  if (bestGsfElectron.isEB()) h_ele_EoP_barrel -> Fill( bestGsfElectron.eSuperClusterOverP() );
1465  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_EoP_eg_barrel -> Fill( bestGsfElectron.eSuperClusterOverP() );
1466  if (bestGsfElectron.isEE()) h_ele_EoP_endcaps -> Fill( bestGsfElectron.eSuperClusterOverP() );
1467  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_EoP_eg_endcaps -> Fill( bestGsfElectron.eSuperClusterOverP() );
1468  h_ele_EoPVsEta -> Fill(bestGsfElectron.eta(), bestGsfElectron.eSuperClusterOverP() );
1469  h_ele_EoPVsPhi -> Fill(bestGsfElectron.phi(), bestGsfElectron.eSuperClusterOverP() );
1470  h_ele_EoPVsE -> Fill(bestGsfElectron.caloEnergy(), bestGsfElectron.eSuperClusterOverP() );
1471  h_ele_EseedOP -> Fill( bestGsfElectron.eSeedClusterOverP() );
1472  if (bestGsfElectron.ecalDrivenSeed()) h_ele_EseedOP_eg -> Fill( bestGsfElectron.eSeedClusterOverP() );
1473  if (bestGsfElectron.isEB()) h_ele_EseedOP_barrel -> Fill( bestGsfElectron.eSeedClusterOverP() );
1474  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_EseedOP_eg_barrel -> Fill( bestGsfElectron.eSeedClusterOverP() );
1475  if (bestGsfElectron.isEE()) h_ele_EseedOP_endcaps -> Fill( bestGsfElectron.eSeedClusterOverP() );
1476  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_EseedOP_eg_endcaps -> Fill( bestGsfElectron.eSeedClusterOverP() );
1477  h_ele_EseedOPVsEta -> Fill(bestGsfElectron.eta(), bestGsfElectron.eSeedClusterOverP() );
1478  h_ele_EseedOPVsPhi -> Fill(bestGsfElectron.phi(), bestGsfElectron.eSeedClusterOverP() );
1479  h_ele_EseedOPVsE -> Fill(bestGsfElectron.caloEnergy(), bestGsfElectron.eSeedClusterOverP() );
1480  h_ele_EoPout -> Fill( bestGsfElectron.eSeedClusterOverPout() );
1481  if (bestGsfElectron.ecalDrivenSeed()) h_ele_EoPout_eg -> Fill( bestGsfElectron.eSeedClusterOverPout() );
1482  if (bestGsfElectron.isEB()) h_ele_EoPout_barrel -> Fill( bestGsfElectron.eSeedClusterOverPout() );
1483  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_EoPout_eg_barrel -> Fill( bestGsfElectron.eSeedClusterOverPout() );
1484  if (bestGsfElectron.isEE()) h_ele_EoPout_endcaps -> Fill( bestGsfElectron.eSeedClusterOverPout() );
1485  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_EoPout_eg_endcaps -> Fill( bestGsfElectron.eSeedClusterOverPout() );
1486  h_ele_EoPoutVsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.eSeedClusterOverPout() );
1487  h_ele_EoPoutVsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.eSeedClusterOverPout() );
1488  h_ele_EoPoutVsE -> Fill( bestGsfElectron.caloEnergy(), bestGsfElectron.eSeedClusterOverPout() );
1489  h_ele_EeleOPout -> Fill( bestGsfElectron.eEleClusterOverPout() );
1490  if (bestGsfElectron.ecalDrivenSeed()) h_ele_EeleOPout_eg -> Fill( bestGsfElectron.eEleClusterOverPout() );
1491  if (bestGsfElectron.isEB()) h_ele_EeleOPout_barrel -> Fill( bestGsfElectron.eEleClusterOverPout() );
1492  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_EeleOPout_eg_barrel -> Fill( bestGsfElectron.eEleClusterOverPout() );
1493  if (bestGsfElectron.isEE()) h_ele_EeleOPout_endcaps -> Fill( bestGsfElectron.eEleClusterOverPout() );
1494  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_EeleOPout_eg_endcaps -> Fill( bestGsfElectron.eEleClusterOverPout() );
1495  h_ele_EeleOPoutVsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.eEleClusterOverPout() );
1496  h_ele_EeleOPoutVsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.eEleClusterOverPout() );
1497  h_ele_EeleOPoutVsE -> Fill( bestGsfElectron.caloEnergy(), bestGsfElectron.eEleClusterOverPout() );
1498  h_ele_dEtaSc_propVtx -> Fill(bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
1499  if (bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaSc_propVtx_eg -> Fill(bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
1500  if (bestGsfElectron.isEB()) h_ele_dEtaSc_propVtx_barrel -> Fill(bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
1501  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaSc_propVtx_eg_barrel -> Fill(bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
1502  if (bestGsfElectron.isEE())h_ele_dEtaSc_propVtx_endcaps -> Fill(bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
1503  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaSc_propVtx_eg_endcaps -> Fill(bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
1504  h_ele_dEtaScVsEta_propVtx -> Fill( bestGsfElectron.eta(),bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
1505  h_ele_dEtaScVsPhi_propVtx -> Fill(bestGsfElectron.phi(),bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
1506  h_ele_dEtaScVsPt_propVtx -> Fill(bestGsfElectron.pt(),bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
1507  h_ele_dPhiSc_propVtx -> Fill(bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
1508  if (bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiSc_propVtx_eg -> Fill(bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
1509  if (bestGsfElectron.isEB()) h_ele_dPhiSc_propVtx_barrel -> Fill(bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
1510  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiSc_propVtx_eg_barrel -> Fill(bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
1511  if (bestGsfElectron.isEE())h_ele_dPhiSc_propVtx_endcaps -> Fill(bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
1512  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiSc_propVtx_eg_endcaps -> Fill(bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
1513  h_ele_dPhiScVsEta_propVtx -> Fill( bestGsfElectron.eta(),bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
1514  h_ele_dPhiScVsPhi_propVtx -> Fill(bestGsfElectron.phi(),bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
1515  h_ele_dPhiScVsPt_propVtx -> Fill(bestGsfElectron.pt(),bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
1516  h_ele_dEtaCl_propOut -> Fill(bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
1517  if (bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaCl_propOut_eg -> Fill(bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
1518  if (bestGsfElectron.isEB()) h_ele_dEtaCl_propOut_barrel -> Fill(bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
1519  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaCl_propOut_eg_barrel -> Fill(bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
1520  if (bestGsfElectron.isEE()) h_ele_dEtaCl_propOut_endcaps -> Fill(bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
1521  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaCl_propOut_eg_endcaps -> Fill(bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
1522  h_ele_dEtaClVsEta_propOut -> Fill( bestGsfElectron.eta(),bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
1523  h_ele_dEtaClVsPhi_propOut -> Fill(bestGsfElectron.phi(),bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
1524  h_ele_dEtaClVsPt_propOut -> Fill(bestGsfElectron.pt(),bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
1525  h_ele_dPhiCl_propOut -> Fill(bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
1526  if (bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiCl_propOut_eg -> Fill(bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
1527  if (bestGsfElectron.isEB()) h_ele_dPhiCl_propOut_barrel -> Fill(bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
1528  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiCl_propOut_eg_barrel -> Fill(bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
1529  if (bestGsfElectron.isEE()) h_ele_dPhiCl_propOut_endcaps -> Fill(bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
1530  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiCl_propOut_eg_endcaps -> Fill(bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
1531  h_ele_dPhiClVsEta_propOut -> Fill( bestGsfElectron.eta(),bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
1532  h_ele_dPhiClVsPhi_propOut -> Fill(bestGsfElectron.phi(),bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
1533  h_ele_dPhiClVsPt_propOut -> Fill(bestGsfElectron.pt(),bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
1534  h_ele_dEtaEleCl_propOut -> Fill(bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
1535  if (bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaEleCl_propOut_eg -> Fill(bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
1536  if (bestGsfElectron.isEB()) h_ele_dEtaEleCl_propOut_barrel -> Fill(bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
1537  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaEleCl_propOut_eg_barrel -> Fill(bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
1538  if (bestGsfElectron.isEE()) h_ele_dEtaEleCl_propOut_endcaps -> Fill(bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
1539  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaEleCl_propOut_eg_endcaps -> Fill(bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
1540  h_ele_dEtaEleClVsEta_propOut -> Fill( bestGsfElectron.eta(),bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
1541  h_ele_dEtaEleClVsPhi_propOut -> Fill(bestGsfElectron.phi(),bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
1542  h_ele_dEtaEleClVsPt_propOut -> Fill(bestGsfElectron.pt(),bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
1543  h_ele_dPhiEleCl_propOut -> Fill(bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
1544  if (bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiEleCl_propOut_eg -> Fill(bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
1545  if (bestGsfElectron.isEB()) h_ele_dPhiEleCl_propOut_barrel -> Fill(bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
1546  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiEleCl_propOut_eg_barrel -> Fill(bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
1547  if (bestGsfElectron.isEE()) h_ele_dPhiEleCl_propOut_endcaps -> Fill(bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
1548  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiEleCl_propOut_eg_endcaps -> Fill(bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
1549  h_ele_dPhiEleClVsEta_propOut -> Fill( bestGsfElectron.eta(),bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
1550  h_ele_dPhiEleClVsPhi_propOut -> Fill(bestGsfElectron.phi(),bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
1551  h_ele_dPhiEleClVsPt_propOut -> Fill(bestGsfElectron.pt(),bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
1552  h_ele_HoE -> Fill(bestGsfElectron.hadronicOverEm());
1553  if (bestGsfElectron.ecalDrivenSeed()) h_ele_HoE_eg -> Fill(bestGsfElectron.hadronicOverEm());
1554  if (bestGsfElectron.isEB()) h_ele_HoE_barrel -> Fill(bestGsfElectron.hadronicOverEm());
1555  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_HoE_eg_barrel -> Fill(bestGsfElectron.hadronicOverEm());
1556  if (bestGsfElectron.isEE()) h_ele_HoE_endcaps -> Fill(bestGsfElectron.hadronicOverEm());
1557  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_HoE_eg_endcaps -> Fill(bestGsfElectron.hadronicOverEm());
1558  if (!bestGsfElectron.isEBEtaGap() && !bestGsfElectron.isEBPhiGap()&& !bestGsfElectron.isEBEEGap() &&
1559  !bestGsfElectron.isEERingGap() && !bestGsfElectron.isEEDeeGap()) h_ele_HoE_fiducial -> Fill(bestGsfElectron.hadronicOverEm());
1560  h_ele_HoEVsEta -> Fill( bestGsfElectron.eta(),bestGsfElectron.hadronicOverEm());
1561  h_ele_HoEVsPhi -> Fill(bestGsfElectron.phi(),bestGsfElectron.hadronicOverEm());
1562  h_ele_HoEVsE -> Fill(bestGsfElectron.caloEnergy(),bestGsfElectron.hadronicOverEm());
1563 
1564  //classes
1565  int eleClass = bestGsfElectron.classification();
1566  if (bestGsfElectron.isEE()) eleClass+=10;
1567  h_ele_classes ->Fill(eleClass);
1568 
1569  h_ele_eta->Fill(std::abs(bestGsfElectron.eta()));
1570  if (bestGsfElectron.classification() == GsfElectron::GOLDEN) h_ele_eta_golden ->Fill(std::abs(bestGsfElectron.eta()));
1571  if (bestGsfElectron.classification() == GsfElectron::BIGBREM) h_ele_eta_bbrem ->Fill(std::abs(bestGsfElectron.eta()));
1572  //if (bestGsfElectron.classification() == GsfElectron::OLDNARROW) h_ele_eta_narrow ->Fill(std::abs(bestGsfElectron.eta()));
1573  if (bestGsfElectron.classification() == GsfElectron::SHOWERING) h_ele_eta_shower ->Fill(std::abs(bestGsfElectron.eta()));
1574 
1575  //fbrem
1576  double fbrem_mean=0.;
1577  if (!readAOD_) // track extra does not exist in AOD
1578  fbrem_mean = 1. - bestGsfElectron.gsfTrack()->outerMomentum().R()/bestGsfElectron.gsfTrack()->innerMomentum().R();
1579  double fbrem_mode = bestGsfElectron.fbrem();
1580  h_ele_fbrem->Fill(fbrem_mode);
1581  h_ele_fbremVsEta_mode->Fill(bestGsfElectron.eta(),fbrem_mode);
1582  if (!readAOD_) // track extra does not exist in AOD
1583  h_ele_fbremVsEta_mean->Fill(bestGsfElectron.eta(),fbrem_mean);
1584 
1585  if (bestGsfElectron.classification() == GsfElectron::GOLDEN) h_ele_PinVsPoutGolden_mode -> Fill(bestGsfElectron.trackMomentumOut().R(), bestGsfElectron.trackMomentumAtVtx().R());
1586  if (bestGsfElectron.classification() == GsfElectron::SHOWERING)
1587  h_ele_PinVsPoutShowering_mode -> Fill(bestGsfElectron.trackMomentumOut().R(), bestGsfElectron.trackMomentumAtVtx().R());
1588  if (!readAOD_) // track extra does not exist in AOD
1589  if (bestGsfElectron.classification() == GsfElectron::GOLDEN) h_ele_PinVsPoutGolden_mean -> Fill(bestGsfElectron.gsfTrack()->outerMomentum().R(), bestGsfElectron.gsfTrack()->innerMomentum().R());
1590  if (!readAOD_) // track extra does not exist in AOD
1591  if (bestGsfElectron.classification() == GsfElectron::SHOWERING)
1592  h_ele_PinVsPoutShowering_mean -> Fill(bestGsfElectron.gsfTrack()->outerMomentum().R(), bestGsfElectron.gsfTrack()->innerMomentum().R());
1593  if (bestGsfElectron.classification() == GsfElectron::GOLDEN) h_ele_PtinVsPtoutGolden_mode -> Fill(bestGsfElectron.trackMomentumOut().Rho(), bestGsfElectron.trackMomentumAtVtx().Rho());
1594  if (bestGsfElectron.classification() == GsfElectron::SHOWERING)
1595  h_ele_PtinVsPtoutShowering_mode -> Fill(bestGsfElectron.trackMomentumOut().Rho(), bestGsfElectron.trackMomentumAtVtx().Rho());
1596  if (!readAOD_) // track extra does not exist in AOD
1597  if (bestGsfElectron.classification() == GsfElectron::GOLDEN) h_ele_PtinVsPtoutGolden_mean -> Fill(bestGsfElectron.gsfTrack()->outerMomentum().Rho(), bestGsfElectron.gsfTrack()->innerMomentum().Rho());
1598  if (!readAOD_) // track extra does not exist in AOD
1599  if (bestGsfElectron.classification() == GsfElectron::SHOWERING)
1600  h_ele_PtinVsPtoutShowering_mean -> Fill(bestGsfElectron.gsfTrack()->outerMomentum().Rho(), bestGsfElectron.gsfTrack()->innerMomentum().Rho());
1601 
1602  h_ele_mva->Fill(bestGsfElectron.mva());
1603  if (bestGsfElectron.ecalDrivenSeed()) h_ele_provenance->Fill(1.);
1604  if (bestGsfElectron.trackerDrivenSeed()) h_ele_provenance->Fill(-1.);
1605  if (bestGsfElectron.trackerDrivenSeed()||bestGsfElectron.ecalDrivenSeed()) h_ele_provenance->Fill(0.);
1606  if (bestGsfElectron.trackerDrivenSeed()&&!bestGsfElectron.ecalDrivenSeed()) h_ele_provenance->Fill(-2.);
1607  if (!bestGsfElectron.trackerDrivenSeed()&&bestGsfElectron.ecalDrivenSeed()) h_ele_provenance->Fill(2.);
1608 
1609  h_ele_tkSumPt_dr03->Fill(bestGsfElectron.dr03TkSumPt());
1610  h_ele_ecalRecHitSumEt_dr03->Fill(bestGsfElectron.dr03EcalRecHitSumEt());
1611  h_ele_hcalDepth1TowerSumEt_dr03->Fill(bestGsfElectron.dr03HcalDepth1TowerSumEt());
1612  h_ele_hcalDepth2TowerSumEt_dr03->Fill(bestGsfElectron.dr03HcalDepth2TowerSumEt());
1613  h_ele_tkSumPt_dr04->Fill(bestGsfElectron.dr04TkSumPt());
1614  h_ele_ecalRecHitSumEt_dr04->Fill(bestGsfElectron.dr04EcalRecHitSumEt());
1615  h_ele_hcalDepth1TowerSumEt_dr04->Fill(bestGsfElectron.dr04HcalDepth1TowerSumEt());
1616  h_ele_hcalDepth2TowerSumEt_dr04->Fill(bestGsfElectron.dr04HcalDepth2TowerSumEt());
1617 
1618  } // gsf electron found
1619 
1620 // } // matching object found
1621 
1622 // }
1623 
1624  } // loop overmatching object
1625 
1626  h_matchingObjectNum->Fill(matchingObjectNum);
1627 
1628 }
1629 
1630 
T getParameter(std::string const &) const
virtual double p() const
magnitude of momentum vector
bool isEBEtaGap() const
Definition: GsfElectron.h:335
float eSuperClusterOverP() const
Definition: GsfElectron.h:229
bool isEBEEGap() const
Definition: GsfElectron.h:333
float dr04HcalDepth1TowerSumEt() const
Definition: GsfElectron.h:449
virtual const Point & vertex() const
vertex position
math::XYZVectorF trackMomentumAtVtx() const
Definition: GsfElectron.h:272
#define abs(x)
Definition: mlp_lapack.h:159
double deltaR_
float dr04TkSumPt() const
Definition: GsfElectron.h:447
GsfElectronFakeAnalyzer(const edm::ParameterSet &conf)
bool getByType(Handle< PROD > &result) const
Definition: Event.h:398
bool isEERingGap() const
Definition: GsfElectron.h:339
virtual void analyze(const edm::Event &e, const edm::EventSetup &c)
float dr03HcalDepth2TowerSumEt() const
Definition: GsfElectron.h:439
float fbrem() const
Definition: GsfElectron.h:639
float scE2x5Max() const
Definition: GsfElectron.h:401
uint16_t size_type
bool isEEDeeGap() const
Definition: GsfElectron.h:338
virtual double eta() const
momentum pseudorapidity
bool isEE() const
Definition: GsfElectron.h:331
bool isEB() const
Definition: GsfElectron.h:330
double deltaR(double eta1, double phi1, double eta2, double phi2)
Definition: deltaR.h:19
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:30
float dr04HcalDepth2TowerSumEt() const
Definition: GsfElectron.h:450
float mva() const
Definition: GsfElectron.h:567
float deltaEtaSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:233
int iEvent
Definition: GenABIO.cc:243
float hadronicOverEm() const
Definition: GsfElectron.h:403
float eSeedClusterOverP() const
Definition: GsfElectron.h:230
float dr04EcalRecHitSumEt() const
Definition: GsfElectron.h:448
float deltaPhiSeedClusterTrackAtCalo() const
Definition: GsfElectron.h:237
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
T sqrt(T t)
Definition: SSEVec.h:46
virtual SuperClusterRef superCluster() const
reference to a SuperCluster
Definition: GsfElectron.h:168
math::XYZVectorF trackMomentumOut() const
Definition: GsfElectron.h:274
float deltaPhiSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:236
virtual int charge() const
electric charge
float dr03TkSumPt() const
Definition: GsfElectron.h:436
float dr03HcalDepth1TowerSumEt() const
Definition: GsfElectron.h:438
float eEleClusterOverPout() const
Definition: GsfElectron.h:232
float eSeedClusterOverPout() const
Definition: GsfElectron.h:231
float scSigmaIEtaIEta() const
Definition: GsfElectron.h:399
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
float deltaPhiEleClusterTrackAtCalo() const
Definition: GsfElectron.h:238
tuple conf
Definition: dbtoconf.py:185
float deltaEtaEleClusterTrackAtCalo() const
Definition: GsfElectron.h:235
virtual double pt() const
transverse momentum
Classification classification() const
Definition: GsfElectron.h:635
REF castTo() const
cast to a concrete type
Definition: RefToBase.h:241
GsfTrackRefVector::size_type ambiguousGsfTracksSize() const
Definition: GsfElectron.h:588
T const * product() const
Definition: Handle.h:74
float dr03EcalRecHitSumEt() const
Definition: GsfElectron.h:437
edm::EventID id() const
Definition: EventBase.h:56
float deltaEtaSeedClusterTrackAtCalo() const
Definition: GsfElectron.h:234
bool isEBPhiGap() const
Definition: GsfElectron.h:336
bool trackerDrivenSeed() const
Definition: GsfElectron.h:173
tuple cout
Definition: gather_cfg.py:121
const Point & position() const
position
Definition: BeamSpot.h:63
float scE5x5() const
Definition: GsfElectron.h:402
double pi
float caloEnergy() const
Definition: GsfElectron.h:727
virtual double phi() const
momentum azimuthal angle
SuperClusterRef pflowSuperCluster() const
Definition: GsfElectron.h:174
virtual double py() const
y coordinate of momentum vector
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
float scE1x5() const
Definition: GsfElectron.h:400
virtual GsfTrackRef gsfTrack() const
reference to a GsfTrack
Definition: GsfElectron.h:169
bool ecalDrivenSeed() const
Definition: GsfElectron.h:172