CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
GsfElectronMCAnalyzer.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: RecoEgamma/Examples
4 // Class: GsfElectronMCAnalyzer
5 //
13 //
14 // Original Author: Ursula Berthon
15 // Created: Mon Mar 27 13:22:06 CEST 2006
16 // $Id: GsfElectronMCAnalyzer.cc,v 1.51 2011/03/04 14:43:15 chamont Exp $
17 //
18 //
19 
20 // user include files
37 
38 #include "CLHEP/Units/GlobalPhysicalConstants.h"
39 #include <iostream>
40 #include <vector>
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  outputFile_ = conf.getParameter<std::string>("outputFile");
55  histfile_ = new TFile(outputFile_.c_str(),"RECREATE");
56  electronCollection_=conf.getParameter<edm::InputTag>("electronCollection");
57  mcTruthCollection_ = conf.getParameter<edm::InputTag>("mcTruthCollection");
58  readAOD_ = conf.getParameter<bool>("readAOD");
59  maxPt_ = conf.getParameter<double>("MaxPt");
60  maxAbsEta_ = conf.getParameter<double>("MaxAbsEta");
61  deltaR_ = conf.getParameter<double>("DeltaR");
62  matchingIDs_ = conf.getParameter<std::vector<int> >("MatchingID");
63  matchingMotherIDs_ = conf.getParameter<std::vector<int> >("MatchingMotherID");
64  edm::ParameterSet pset =
65  conf.getParameter<edm::ParameterSet>("HistosConfigurationMC") ;
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  nbinpoptrue= pset.getParameter<int>("Nbinpoptrue");
106  poptruemin=pset.getParameter<double>("Poptruemin");
107  poptruemax=pset.getParameter<double>("Poptruemax");
108  nbinmee= pset.getParameter<int>("Nbinmee");
109  meemin=pset.getParameter<double>("Meemin");
110  meemax=pset.getParameter<double>("Meemax");
111  nbinhoe= pset.getParameter<int>("Nbinhoe");
112  hoemin=pset.getParameter<double>("Hoemin");
113  hoemax=pset.getParameter<double>("Hoemax");
114  }
115 
117 
118  histfile_->cd();
119 
120  // mc truth
121  h_mcNum = new TH1F( "h_mcNum", "# mc particles", nbinfhits,0.,fhitsmax );
122  h_mcNum->Sumw2();
123  h_eleNum = new TH1F( "h_mcNum_ele", "# mc electrons", nbinfhits,0.,fhitsmax);
124  h_eleNum->Sumw2();
125  h_gamNum = new TH1F( "h_mcNum_gam", "# mc gammas", nbinfhits,0.,fhitsmax);
126  h_gamNum->Sumw2();
127 
128  // rec event
129  histNum_= new TH1F("h_recEleNum","# rec electrons",20, 0.,20.);
130 
131  // mc
132  h_simEta = new TH1F( "h_mc_eta", "gen #eta", nbineta,etamin,etamax);
133  h_simEta->Sumw2();
134  h_simAbsEta = new TH1F( "h_mc_abseta", "gen |#eta|", nbineta/2,0.,etamax);
135  h_simAbsEta->Sumw2();
136  h_simP = new TH1F( "h_mc_P", "gen p", nbinp,0.,pmax);
137  h_simP->Sumw2();
138  h_simPt = new TH1F( "h_mc_Pt", "gen pt", nbinpteff,5.,ptmax);
139  h_simPt->Sumw2();
140  h_simPhi = new TH1F( "h_mc_phi", "gen phi", nbinphi,phimin,phimax);
141  h_simPhi->Sumw2();
142  h_simZ = new TH1F( "h_mc_z", "gen z ", nbinxyz, -25, 25 );
143  h_simZ->Sumw2();
144  h_simPtEta = new TH2F( "h_mc_pteta", "gen pt vs #eta", nbineta2D,etamin,etamax, nbinpt2D,5.,ptmax );
145  h_simPtEta->Sumw2();
146 
147  // all electrons
148  h_ele_EoverP_all = new TH1F( "h_ele_EoverP_all", "ele E/P_{vertex}, all reco electrons", nbineop,0.,eopmax);
149  h_ele_EoverP_all->Sumw2();
150  h_ele_EoverP_all_barrel = new TH1F( "h_ele_EoverP_all_barrel", "ele E/P_{vertex}, all reco electrons, barrel", nbineop,0.,eopmax);
151  h_ele_EoverP_all_barrel->Sumw2();
152  h_ele_EoverP_all_endcaps = new TH1F( "h_ele_EoverP_all_endcaps", "ele E/P_{vertex}, all reco electrons, endcaps", nbineop,0.,eopmax);
153  h_ele_EoverP_all_endcaps->Sumw2();
154  h_ele_EseedOP_all = new TH1F( "h_ele_EseedOP_all", "ele E_{seed}/P_{vertex}, all reco electrons", nbineop,0.,eopmax);
155  h_ele_EseedOP_all->Sumw2();
156  h_ele_EseedOP_all_barrel = new TH1F( "h_ele_EseedOP_all_barrel", "ele E_{seed}/P_{vertex}, all reco electrons, barrel", nbineop,0.,eopmax);
157  h_ele_EseedOP_all_barrel->Sumw2();
158  h_ele_EseedOP_all_endcaps = new TH1F( "h_ele_EseedOP_all_endcaps", "ele E_{seed}/P_{vertex}, all reco electrons, endcaps", nbineop,0.,eopmax);
159  h_ele_EseedOP_all_endcaps->Sumw2();
160  h_ele_EoPout_all = new TH1F( "h_ele_EoPout_all", "ele E_{seed}/P_{out}, all reco electrons", nbineop,0.,eopmax);
161  h_ele_EoPout_all->Sumw2();
162  h_ele_EoPout_all_barrel = new TH1F( "h_ele_EoPout_all_barrel", "ele E_{seed}/P_{out}, all reco electrons barrel", nbineop,0.,eopmax);
163  h_ele_EoPout_all_barrel->Sumw2();
164  h_ele_EoPout_all_endcaps = new TH1F( "h_ele_EoPout_all_endcaps", "ele E_{seed}/P_{out}, all reco electrons endcaps", nbineop,0.,eopmax);
165  h_ele_EoPout_all_endcaps->Sumw2();
166  h_ele_EeleOPout_all = new TH1F( "h_ele_EeleOPout_all", "ele E_{ele}/P_{out}, all reco electrons", nbineop,0.,eopmax);
167  h_ele_EeleOPout_all->Sumw2();
168  h_ele_EeleOPout_all_barrel = new TH1F( "h_ele_EeleOPout_all_barrel", "ele E_{ele}/P_{out}, all reco electrons barrel", nbineop,0.,eopmax);
169  h_ele_EeleOPout_all_barrel->Sumw2();
170  h_ele_EeleOPout_all_endcaps = new TH1F( "h_ele_EeleOPout_all_endcaps", "ele E_{ele}/P_{out}, all reco electrons endcaps", nbineop,0.,eopmax);
171  h_ele_EeleOPout_all_endcaps->Sumw2();
172  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);
173  h_ele_dEtaSc_propVtx_all->Sumw2();
174  h_ele_dEtaSc_propVtx_all_barrel = new TH1F( "h_ele_dEtaSc_propVtx_all_barrel", "ele #eta_{sc} - #eta_{tr}, prop from vertex, all reco electrons barrel", nbindetamatch,detamatchmin,detamatchmax);
175  h_ele_dEtaSc_propVtx_all_barrel->Sumw2();
176  h_ele_dEtaSc_propVtx_all_endcaps = new TH1F( "h_ele_dEtaSc_propVtx_all_endcaps", "ele #eta_{sc} - #eta_{tr}, prop from vertex, all reco electrons endcaps", nbindetamatch,detamatchmin,detamatchmax);
177  h_ele_dEtaSc_propVtx_all_endcaps->Sumw2();
178  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);
179  h_ele_dPhiSc_propVtx_all->Sumw2();
180  h_ele_dPhiSc_propVtx_all_barrel = new TH1F( "h_ele_dPhiSc_propVtx_all_barrel", "ele #phi_{sc} - #phi_{tr}, prop from vertex, all reco electrons barrel", nbindphimatch,dphimatchmin,dphimatchmax);
181  h_ele_dPhiSc_propVtx_all_barrel->Sumw2();
182  h_ele_dPhiSc_propVtx_all_endcaps = new TH1F( "h_ele_dPhiSc_propVtx_all_endcaps", "ele #phi_{sc} - #phi_{tr}, prop from vertex, all reco electrons endcaps", nbindphimatch,dphimatchmin,dphimatchmax);
183  h_ele_dPhiSc_propVtx_all_endcaps->Sumw2();
184  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);
185  h_ele_dEtaCl_propOut_all->Sumw2();
186  h_ele_dEtaCl_propOut_all_barrel = new TH1F( "h_ele_dEtaCl_propOut_all_barrel", "ele #eta_{cl} - #eta_{tr}, prop from outermost, all reco electrons barrel", nbindetamatch,detamatchmin,detamatchmax);
187  h_ele_dEtaCl_propOut_all_barrel->Sumw2();
188  h_ele_dEtaCl_propOut_all_endcaps = new TH1F( "h_ele_dEtaCl_propOut_all_endcaps", "ele #eta_{cl} - #eta_{tr}, prop from outermost, all reco electrons endcaps", nbindetamatch,detamatchmin,detamatchmax);
189  h_ele_dEtaCl_propOut_all_endcaps->Sumw2();
190  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);
191  h_ele_dPhiCl_propOut_all->Sumw2();
192  h_ele_dPhiCl_propOut_all_barrel = new TH1F( "h_ele_dPhiCl_propOut_all_barrel", "ele #phi_{cl} - #phi_{tr}, prop from outermost, all reco electrons barrel", nbindphimatch,dphimatchmin,dphimatchmax);
193  h_ele_dPhiCl_propOut_all_endcaps = new TH1F( "h_ele_dPhiCl_propOut_all_endcaps", "ele #phi_{cl} - #phi_{tr}, prop from outermost, all reco electrons endcaps", nbindphimatch,dphimatchmin,dphimatchmax);
194  h_ele_dPhiCl_propOut_all_barrel->Sumw2();
195  h_ele_dPhiCl_propOut_all_endcaps->Sumw2();
196  h_ele_HoE_all = new TH1F("h_ele_HoE_all", "ele hadronic energy / em energy, all reco electrons", nbinhoe, hoemin, hoemax) ;
197  h_ele_HoE_all->Sumw2();
198  h_ele_HoE_all_barrel = new TH1F("h_ele_HoE_all_barrel", "ele hadronic energy / em energy, all reco electrons barrel", nbinhoe, hoemin, hoemax) ;
199  h_ele_HoE_all_barrel->Sumw2();
200  h_ele_HoE_all_endcaps = new TH1F("h_ele_HoE_all_endcaps", "ele hadronic energy / em energy, all reco electrons endcaps", nbinhoe, hoemin, hoemax) ;
201  h_ele_HoE_all_endcaps->Sumw2();
202  h_ele_vertexPt_all = new TH1F( "h_ele_vertexPt_all", "ele p_{T}, all reco electrons", nbinpteff,5.,ptmax);
203  h_ele_vertexPt_all->Sumw2();
204  h_ele_Et_all = new TH1F( "h_ele_Et_all", "ele SC E_{T}, all reco electrons", nbinpteff,5.,ptmax);
205  h_ele_Et_all->Sumw2();
206  h_ele_vertexEta_all = new TH1F( "h_ele_vertexEta_all", "ele eta, all reco electrons", nbineta,etamin,etamax);
207  h_ele_vertexEta_all->Sumw2();
208  h_ele_TIP_all = new TH1F( "h_ele_TIP_all", "ele vertex transverse radius, all reco electrons", 100,0.,0.2);
209  h_ele_TIP_all->Sumw2();
210  h_ele_TIP_all_barrel = new TH1F( "h_ele_TIP_all_barrel", "ele vertex transverse radius, all reco electrons barrel", 100,0.,0.2);
211  h_ele_TIP_all_barrel->Sumw2();
212  h_ele_TIP_all_endcaps = new TH1F( "h_ele_TIP_all_endcaps", "ele vertex transverse radius, all reco electrons endcaps", 100,0.,0.2);
213  h_ele_TIP_all_endcaps->Sumw2();
214  h_ele_mee_all = new TH1F( "h_ele_mee_all", "ele pairs invariant mass, all reco electrons", nbinmee, meemin, meemax );
215  h_ele_mee_all->Sumw2();
216  h_ele_mee_os = new TH1F( "h_ele_mee_os", "ele pairs invariant mass, opp. sign", nbinmee, meemin, meemax );
217  h_ele_mee_os->Sumw2();
218  h_ele_mee_os_ebeb = new TH1F( "h_ele_mee_os_ebeb", "ele pairs invariant mass, opp. sign, EB-EB", nbinmee, meemin, meemax );
219  h_ele_mee_os_ebeb->Sumw2();
220  h_ele_mee_os_ebee = new TH1F( "h_ele_mee_os_ebee", "ele pairs invariant mass, opp. sign, EB-EE", nbinmee, meemin, meemax );
221  h_ele_mee_os_ebee->Sumw2();
222  h_ele_mee_os_eeee = new TH1F( "h_ele_mee_os_eeee", "ele pairs invariant mass, opp. sign, EE-EE", nbinmee, meemin, meemax );
223  h_ele_mee_os_eeee->Sumw2();
224  h_ele_mee_os_gg = new TH1F( "h_ele_mee_os_gg", "ele pairs invariant mass, opp. sign, good-good", nbinmee, meemin, meemax );
225  h_ele_mee_os_gg->Sumw2();
226  h_ele_mee_os_gb = new TH1F( "h_ele_mee_os_gb", "ele pairs invariant mass, opp. sign, good-bad", nbinmee, meemin, meemax );
227  h_ele_mee_os_gb->Sumw2();
228  h_ele_mee_os_bb = new TH1F( "h_ele_mee_os_bb", "ele pairs invariant mass, opp. sign, bad-bad", nbinmee, meemin, meemax );
229  h_ele_mee_os_bb->Sumw2();
230 
231  // duplicates
232  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. );
233  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. );
234 
235  // charge ID
236  h_ele_ChargeMnChargeTrue = new TH1F( "h_ele_ChargeMnChargeTrue", "ele charge - gen charge ",5,-1.,4.);
237  h_ele_ChargeMnChargeTrue->Sumw2();
238  h_ele_simEta_matched_qmisid = new TH1F( "h_ele_eta_matched_qmisid","charge misid vs gen eta", nbineta,etamin,etamax);
239  h_ele_simEta_matched_qmisid->Sumw2();
240  h_ele_simAbsEta_matched_qmisid = new TH1F( "h_ele_abseta_matched_qmisid", "charge misid vs gen |eta|", nbineta/2,0.,etamax);
241  h_ele_simAbsEta_matched_qmisid->Sumw2();
242  h_ele_simPt_matched_qmisid = new TH1F( "h_ele_Pt_matched_qmisid", "charge misid vs gen transverse momentum", nbinpteff,5.,ptmax);
243  h_ele_simPt_matched_qmisid->Sumw2();
244  h_ele_simPhi_matched_qmisid = new TH1F( "h_ele_phi_matched_qmisid","charge misid vs gen phi", nbinphi,phimin,phimax);
245  h_ele_simPhi_matched_qmisid->Sumw2();
246  h_ele_simZ_matched_qmisid = new TH1F( "h_ele_z_matched_qmisid","charge misid vs gen z",nbinxyz, -25, 25 );
247  h_ele_simZ_matched_qmisid->Sumw2();
248 
249  // matched electrons
250  h_ele_charge = new TH1F( "h_ele_charge", "ele charge", 5,-2.,2.);
251  h_ele_charge->Sumw2();
252  h_ele_chargeVsEta = new TH2F( "h_ele_chargeVsEta", "ele charge vs eta", nbineta2D,etamin,etamax,5,-2.,2.);
253  h_ele_chargeVsPhi = new TH2F( "h_ele_chargeVsPhi", "ele charge vs phi", nbinphi2D,phimin,phimax,5,-2.,2.);
254  h_ele_chargeVsPt = new TH2F( "h_ele_chargeVsPt", "ele charge vs pt", nbinpt,0.,100.,5,-2.,2.);
255  h_ele_vertexP = new TH1F( "h_ele_vertexP", "ele momentum", nbinp,0.,pmax);
256  h_ele_vertexP->Sumw2();
257  h_ele_vertexPt = new TH1F( "h_ele_vertexPt", "ele transverse momentum", nbinpt,0.,ptmax);
258  h_ele_vertexPt->Sumw2();
259  h_ele_Et = new TH1F( "h_ele_Et", "ele transverse energy", nbinpt,0.,ptmax);
260  h_ele_Et->Sumw2();
261  h_ele_vertexPtVsEta = new TH2F( "h_ele_vertexPtVsEta", "ele transverse momentum vs eta",nbineta2D,etamin,etamax,nbinpt2D,0.,ptmax);
262  h_ele_vertexPtVsPhi = new TH2F( "h_ele_vertexPtVsPhi", "ele transverse momentum vs phi",nbinphi2D,phimin,phimax,nbinpt2D,0.,ptmax);
263  h_ele_simPt_matched = new TH1F( "h_ele_simPt_matched", "Efficiency vs gen transverse momentum", nbinpteff,5.,ptmax);
264  h_ele_vertexEta = new TH1F( "h_ele_vertexEta", "ele momentum eta", nbineta,etamin,etamax);
265  h_ele_vertexEta->Sumw2();
266  h_ele_vertexEtaVsPhi = new TH2F( "h_ele_vertexEtaVsPhi", "ele momentum eta vs phi",nbineta2D,etamin,etamax,nbinphi2D,phimin,phimax );
267  h_ele_simAbsEta_matched = new TH1F( "h_ele_simAbsEta_matched", "Efficiency vs gen |eta|", nbineta/2,0.,2.5);
268  h_ele_simAbsEta_matched->Sumw2();
269  h_ele_simEta_matched = new TH1F( "h_ele_simEta_matched", "Efficiency vs gen eta", nbineta,etamin,etamax);
270  h_ele_simEta_matched->Sumw2();
271  h_ele_simPtEta_matched = new TH2F( "h_ele_simPtEta_matched", "Efficiency vs pt #eta", nbineta2D,etamin,etamax, nbinpt2D,5.,ptmax );
272  h_ele_simPtEta_matched->Sumw2();
273  h_ele_simPhi_matched = new TH1F( "h_ele_simPhi_matched", "Efficiency vs gen phi", nbinphi,phimin,phimax);
274  h_ele_simPhi_matched->Sumw2();
275  h_ele_vertexPhi = new TH1F( "h_ele_vertexPhi", "ele momentum #phi", nbinphi,phimin,phimax);
276  h_ele_vertexPhi->Sumw2();
277  h_ele_vertexX = new TH1F( "h_ele_vertexX", "ele vertex x", nbinxyz,-0.1,0.1 );
278  h_ele_vertexX->Sumw2();
279  h_ele_vertexY = new TH1F( "h_ele_vertexY", "ele vertex y", nbinxyz,-0.1,0.1 );
280  h_ele_vertexY->Sumw2();
281  h_ele_vertexZ = new TH1F( "h_ele_vertexZ", "ele vertex z", nbinxyz,-25, 25 );
282  h_ele_vertexZ->Sumw2();
283  h_ele_simZ_matched = new TH1F( "h_ele_simZ_matched", "Efficiency vs gen vertex z", nbinxyz,-25,25);
284  h_ele_simZ_matched->Sumw2();
285  h_ele_vertexTIP = new TH1F( "h_ele_vertexTIP", "ele transverse impact parameter (wrt gen vtx)", 90,0.,0.15);
286  h_ele_vertexTIP->Sumw2();
287  h_ele_vertexTIPVsEta = new TH2F( "h_ele_vertexTIPVsEta", "ele transverse impact parameter (wrt gen vtx) vs eta", nbineta2D,etamin,etamax,45,0.,0.15);
288  h_ele_vertexTIPVsPhi = new TH2F( "h_ele_vertexTIPVsPhi", "ele transverse impact parameter (wrt gen vtx) vs phi", nbinphi2D,phimin,phimax,45,0.,0.15);
289  h_ele_vertexTIPVsPt = new TH2F( "h_ele_vertexTIPVsPt", "ele transverse impact parameter (wrt gen vtx) vs transverse momentum", nbinpt2D,0.,ptmax,45,0.,0.15);
290  h_ele_PoPtrue = new TH1F( "h_ele_PoPtrue", "ele momentum / gen momentum", nbinpoptrue,poptruemin,poptruemax);
291  h_ele_PoPtrue->Sumw2();
292  h_ele_PtoPttrue = new TH1F( "h_ele_PtoPttrue", "ele transverse momentum / gen transverse momentum", nbinpoptrue,poptruemin,poptruemax);
293  h_ele_PtoPttrue->Sumw2();
294  h_ele_PoPtrueVsEta = new TH2F( "h_ele_PoPtrueVsEta", "ele momentum / gen momentum vs eta", nbineta2D,etamin,etamax,50,poptruemin,poptruemax);
295  h_ele_PoPtrueVsPhi = new TH2F( "h_ele_PoPtrueVsPhi", "ele momentum / gen momentum vs phi", nbinphi2D,phimin,phimax,50,poptruemin,poptruemax);
296  h_ele_PoPtrueVsPt = new TH2F( "h_ele_PoPtrueVsPt", "ele momentum / gen momentum vs eta", nbinpt2D,0.,ptmax,50,poptruemin,poptruemax);
297  h_ele_PoPtrue_barrel = new TH1F( "h_ele_PoPtrue_barrel", "ele momentum / gen momentum, barrel",nbinpoptrue,poptruemin,poptruemax);
298  h_ele_PoPtrue_barrel->Sumw2();
299  h_ele_PoPtrue_endcaps = new TH1F( "h_ele_PoPtrue_endcaps", "ele momentum / gen momentum, endcaps",nbinpoptrue,poptruemin,poptruemax);
300  h_ele_PoPtrue_endcaps->Sumw2();
301  h_ele_PoPtrue_golden_barrel = new TH1F( "h_ele_PoPtrue_golden_barrel", "ele momentum / gen momentum, golden, barrel",nbinpoptrue,poptruemin,poptruemax);
302  h_ele_PoPtrue_golden_barrel->Sumw2();
303  h_ele_PoPtrue_golden_endcaps = new TH1F( "h_ele_PoPtrue_golden_endcaps", "ele momentum / gen momentum, golden, endcaps",nbinpoptrue,poptruemin,poptruemax);
304  h_ele_PoPtrue_golden_endcaps->Sumw2();
305  h_ele_PoPtrue_showering_barrel = new TH1F( "h_ele_PoPtrue_showering_barrel", "ele momentum / gen momentum, showering, barrel",nbinpoptrue,poptruemin,poptruemax);
306  h_ele_PoPtrue_showering_barrel->Sumw2();
307  h_ele_PoPtrue_showering_endcaps = new TH1F( "h_ele_PoPtrue_showering_endcaps", "ele momentum / gen momentum, showering, endcaps",nbinpoptrue,poptruemin,poptruemax);
308  h_ele_PoPtrue_showering_endcaps->Sumw2();
309  h_ele_PtoPttrue_barrel = new TH1F( "h_ele_PtoPttrue_barrel", "ele transverse momentum / gen transverse momentum, barrel",nbinpoptrue,poptruemin,poptruemax);
310  h_ele_PtoPttrue_barrel->Sumw2();
311  h_ele_PtoPttrue_endcaps = new TH1F( "h_ele_PtoPttrue_endcaps", "ele transverse momentum / gen transverse momentum, endcaps",nbinpoptrue,poptruemin,poptruemax);
312  h_ele_PtoPttrue_endcaps->Sumw2();
313  h_ele_EtaMnEtaTrue = new TH1F( "h_ele_EtaMnEtaTrue", "ele momentum eta - gen eta",nbindeta,detamin,detamax);
314  h_ele_EtaMnEtaTrue->Sumw2();
315  h_ele_EtaMnEtaTrue_barrel = new TH1F( "h_ele_EtaMnEtaTrue_barrel", "ele momentum eta - gen eta barrel",nbindeta,detamin,detamax);
316  h_ele_EtaMnEtaTrue_barrel->Sumw2();
317  h_ele_EtaMnEtaTrue_endcaps = new TH1F( "h_ele_EtaMnEtaTrue_endcaps", "ele momentum eta - gen eta endcaps",nbindeta,detamin,detamax);
318  h_ele_EtaMnEtaTrue_endcaps->Sumw2();
319  h_ele_EtaMnEtaTrueVsEta = new TH2F( "h_ele_EtaMnEtaTrueVsEta", "ele momentum eta - gen eta vs eta",nbineta2D,etamin,etamax,nbindeta/2,detamin,detamax);
320  h_ele_EtaMnEtaTrueVsPhi = new TH2F( "h_ele_EtaMnEtaTrueVsPhi", "ele momentum eta - gen eta vs phi",nbinphi2D,phimin,phimax,nbindeta/2,detamin,detamax);
321  h_ele_EtaMnEtaTrueVsPt = new TH2F( "h_ele_EtaMnEtaTrueVsPt", "ele momentum eta - gen eta vs pt",nbinpt,0.,ptmax,nbindeta/2,detamin,detamax);
322  h_ele_PhiMnPhiTrue = new TH1F( "h_ele_PhiMnPhiTrue", "ele momentum phi - gen phi",nbindphi,dphimin,dphimax);
323  h_ele_PhiMnPhiTrue->Sumw2();
324  h_ele_PhiMnPhiTrue_barrel = new TH1F( "h_ele_PhiMnPhiTrue_barrel", "ele momentum phi - gen phi barrel",nbindphi,dphimin,dphimax);
325  h_ele_PhiMnPhiTrue_barrel->Sumw2();
326  h_ele_PhiMnPhiTrue_endcaps = new TH1F( "h_ele_PhiMnPhiTrue_endcaps", "ele momentum phi - gen phi endcaps",nbindphi,dphimin,dphimax);
327  h_ele_PhiMnPhiTrue_endcaps->Sumw2();
328  h_ele_PhiMnPhiTrue2 = new TH1F( "h_ele_PhiMnPhiTrue2", "ele momentum phi - gen phi",nbindphimatch2D,dphimatchmin,dphimatchmax);
329  h_ele_PhiMnPhiTrueVsEta = new TH2F( "h_ele_PhiMnPhiTrueVsEta", "ele momentum phi - gen phi vs eta",nbineta2D,etamin,etamax,nbindphi/2,dphimin,dphimax);
330  h_ele_PhiMnPhiTrueVsPhi = new TH2F( "h_ele_PhiMnPhiTrueVsPhi", "ele momentum phi - gen phi vs phi",nbinphi2D,phimin,phimax,nbindphi/2,dphimin,dphimax);
331  h_ele_PhiMnPhiTrueVsPt = new TH2F( "h_ele_PhiMnPhiTrueVsPt", "ele momentum phi - gen phi vs pt",nbinpt2D,0.,ptmax,nbindphi/2,dphimin,dphimax);
332 
333  // matched electron, superclusters
334  histSclEn_ = new TH1F("h_scl_energy","ele supercluster energy",nbinp,0.,pmax);
335  histSclEn_->Sumw2();
336  histSclEoEtrue_barrel = new TH1F("h_scl_EoEtrue_barrel","ele supercluster energy / gen energy, barrel",50,0.2,1.2);
337  histSclEoEtrue_barrel->Sumw2();
338  histSclEoEtrue_barrel_eg = new TH1F("h_scl_EoEtrue_barrel_eg","ele supercluster energy / gen energy, barrel, ecal driven",50,0.2,1.2);
339  histSclEoEtrue_barrel_eg->Sumw2();
340  histSclEoEtrue_barrel_etagap = new TH1F("h_scl_EoEtrue_barrel_etagap","ele supercluster energy / gen energy, barrel, etagap",50,0.2,1.2);
341  histSclEoEtrue_barrel_etagap->Sumw2();
342  histSclEoEtrue_barrel_phigap = new TH1F("h_scl_EoEtrue_barrel_phigap","ele supercluster energy / gen energy, barrel, phigap",50,0.2,1.2);
343  histSclEoEtrue_barrel_phigap->Sumw2();
344  histSclEoEtrue_ebeegap = new TH1F("h_scl_EoEtrue_ebeegap","ele supercluster energy / gen energy, ebeegap",50,0.2,1.2);
345  histSclEoEtrue_ebeegap->Sumw2();
346  histSclEoEtrue_endcaps = new TH1F("h_scl_EoEtrue_endcaps","ele supercluster energy / gen energy, endcaps",50,0.2,1.2);
347  histSclEoEtrue_endcaps->Sumw2();
348  histSclEoEtrue_endcaps_eg = new TH1F("h_scl_EoEtrue_endcaps_eg","ele supercluster energy / gen energy, endcaps, ecal driven",50,0.2,1.2);
349  histSclEoEtrue_endcaps_eg->Sumw2();
350  histSclEoEtrue_endcaps_deegap = new TH1F("h_scl_EoEtrue_endcaps_deegap","ele supercluster energy / gen energy, endcaps, deegap",50,0.2,1.2);
351  histSclEoEtrue_endcaps_deegap->Sumw2();
352  histSclEoEtrue_endcaps_ringgap = new TH1F("h_scl_EoEtrue_endcaps_ringgap","ele supercluster energy / gen energy, endcaps, ringgap",50,0.2,1.2);
353  histSclEoEtrue_endcaps_ringgap->Sumw2();
354  histSclEoEtrue_barrel_new = new TH1F("h_scl_EoEtrue_barrel_new","ele supercluster energy / gen energy, barrel",nbinpoptrue,poptruemin,poptruemax);
355  histSclEoEtrue_barrel_new->Sumw2();
356  histSclEoEtrue_barrel_eg_new = new TH1F("h_scl_EoEtrue_barrel_eg_new","ele supercluster energy / gen energy, barrel, ecal driven",nbinpoptrue,poptruemin,poptruemax);
357  histSclEoEtrue_barrel_eg_new->Sumw2();
358  histSclEoEtrue_barrel_etagap_new = new TH1F("h_scl_EoEtrue_barrel_etagap_new","ele supercluster energy / gen energy, barrel, etagap",nbinpoptrue,poptruemin,poptruemax);
359  histSclEoEtrue_barrel_etagap_new->Sumw2();
360  histSclEoEtrue_barrel_phigap_new = new TH1F("h_scl_EoEtrue_barrel_phigap_new","ele supercluster energy / gen energy, barrel, phigap",nbinpoptrue,poptruemin,poptruemax);
361  histSclEoEtrue_barrel_phigap_new->Sumw2();
362  histSclEoEtrue_ebeegap_new = new TH1F("h_scl_EoEtrue_ebeegap_new","ele supercluster energy / gen energy, ebeegap",nbinpoptrue,poptruemin,poptruemax);
363  histSclEoEtrue_ebeegap_new->Sumw2();
364  histSclEoEtrue_endcaps_new = new TH1F("h_scl_EoEtrue_endcaps_new","ele supercluster energy / gen energy, endcaps",nbinpoptrue,poptruemin,poptruemax);
365  histSclEoEtrue_endcaps_new->Sumw2();
366  histSclEoEtrue_endcaps_eg_new = new TH1F("h_scl_EoEtrue_endcaps_eg_new","ele supercluster energy / gen energy, endcaps, ecal driven",nbinpoptrue,poptruemin,poptruemax);
367  histSclEoEtrue_endcaps_eg_new->Sumw2();
368  histSclEoEtrue_endcaps_deegap_new = new TH1F("h_scl_EoEtrue_endcaps_deegap_new","ele supercluster energy / gen energy, endcaps, deegap",nbinpoptrue,poptruemin,poptruemax);
369  histSclEoEtrue_endcaps_deegap_new->Sumw2();
370  histSclEoEtrue_endcaps_ringgap_new = new TH1F("h_scl_EoEtrue_endcaps_ringgap_new","ele supercluster energy / gen energy, endcaps, ringgap",nbinpoptrue,poptruemin,poptruemax);
371  histSclEoEtrue_endcaps_ringgap_new->Sumw2();
372  histSclEt_ = new TH1F("h_scl_et","ele supercluster transverse energy",nbinpt,0.,ptmax);
373  histSclEt_->Sumw2();
374  histSclEtVsEta_ = new TH2F("h_scl_etVsEta","ele supercluster transverse energy vs eta",nbineta2D,etamin,etamax,nbinpt,0.,ptmax);
375  histSclEtVsPhi_ = new TH2F("h_scl_etVsPhi","ele supercluster transverse energy vs phi",nbinphi2D,phimin,phimax,nbinpt,0.,ptmax);
376  histSclEtaVsPhi_ = new TH2F("h_scl_etaVsPhi","ele supercluster eta vs phi",nbinphi2D,phimin,phimax,nbineta2D,etamin,etamax);
377  histSclEta_ = new TH1F("h_scl_eta","ele supercluster eta",nbineta,etamin,etamax);
378  histSclEta_->Sumw2();
379  histSclPhi_ = new TH1F("h_scl_phi","ele supercluster phi",nbinphi,phimin,phimax);
380  histSclPhi_->Sumw2();
381 
382  histSclSigEtaEta_ = new TH1F("h_scl_sigetaeta","ele supercluster sigma eta eta",100,0.,0.05);
383  histSclSigEtaEta_->Sumw2();
384  histSclSigEtaEta_barrel_ = new TH1F("h_scl_sigetaeta_barrel","ele supercluster sigma eta eta barrel",100,0.,0.05);
385  histSclSigEtaEta_barrel_->Sumw2();
386  histSclSigEtaEta_endcaps_ = new TH1F("h_scl_sigetaeta_endcaps","ele supercluster sigma eta eta endcaps",100,0.,0.05);
387  histSclSigEtaEta_endcaps_->Sumw2();
388  histSclSigIEtaIEta_ = new TH1F("h_scl_sigietaieta","ele supercluster sigma ieta ieta",100,0.,0.05);
389  histSclSigIEtaIEta_->Sumw2();
390  histSclSigIEtaIEta_barrel_ = new TH1F("h_scl_sigietaieta_barrel","ele supercluster sigma ieta ieta, barrel",100,0.,0.05);
391  histSclSigIEtaIEta_barrel_->Sumw2();
392  histSclSigIEtaIEta_endcaps_ = new TH1F("h_scl_sigietaieta_endcaps","ele supercluster sigma ieta ieta, endcaps",100,0.,0.05);
393  histSclSigIEtaIEta_endcaps_->Sumw2();
394  histSclE1x5_ = new TH1F("h_scl_E1x5","ele supercluster energy in 1x5",nbinp,0., pmax);
395  histSclE1x5_->Sumw2();
396  histSclE1x5_barrel_ = new TH1F("h_scl_E1x5_barrel","ele supercluster energy in 1x5 barrel",nbinp,0., pmax);
397  histSclE1x5_barrel_->Sumw2();
398  histSclE1x5_endcaps_ = new TH1F("h_scl_E1x5_endcaps","ele supercluster energy in 1x5 endcaps",nbinp,0., pmax);
399  histSclE1x5_endcaps_->Sumw2();
400  histSclE2x5max_ = new TH1F("h_scl_E2x5max","ele supercluster energy in 2x5 max",nbinp,0.,pmax);
401  histSclE2x5max_->Sumw2();
402  histSclE2x5max_barrel_ = new TH1F("h_scl_E2x5max_barrel","ele supercluster energy in 2x5 max barrel",nbinp,0.,pmax);
403  histSclE2x5max_barrel_->Sumw2();
404  histSclE2x5max_endcaps_ = new TH1F("h_scl_E2x5max_endcaps","ele supercluster energy in 2x5 max endcaps",nbinp,0.,pmax);
405  histSclE2x5max_endcaps_->Sumw2();
406  histSclE5x5_ = new TH1F("h_scl_E5x5","ele supercluster energy in 5x5",nbinp,0.,pmax);
407  histSclE5x5_->Sumw2();
408  histSclE5x5_barrel_ = new TH1F("h_scl_E5x5_barrel","ele supercluster energy in 5x5 barrel",nbinp,0.,pmax);
409  histSclE5x5_barrel_->Sumw2();
410  histSclE5x5_endcaps_ = new TH1F("h_scl_E5x5_endcaps","ele supercluster energy in 5x5 endcaps",nbinp,0.,pmax);
411  histSclE5x5_endcaps_->Sumw2();
412  histSclSigEtaEta_eg_ = new TH1F("h_scl_sigetaeta_eg","ele supercluster sigma eta eta, ecal driven",100,0.,0.05);
413  histSclSigEtaEta_eg_->Sumw2();
414  histSclSigEtaEta_eg_barrel_ = new TH1F("h_scl_sigetaeta_eg_barrel","ele supercluster sigma eta eta, ecal driven barrel",100,0.,0.05);
415  histSclSigEtaEta_eg_barrel_->Sumw2();
416  histSclSigEtaEta_eg_endcaps_ = new TH1F("h_scl_sigetaeta_eg_endcaps","ele supercluster sigma eta eta, ecal driven endcaps",100,0.,0.05);
417  histSclSigEtaEta_eg_endcaps_->Sumw2();
418  histSclSigIEtaIEta_eg_ = new TH1F("h_scl_sigietaieta_eg","ele supercluster sigma ieta ieta, ecal driven",100,0.,0.05);
419  histSclSigIEtaIEta_eg_->Sumw2();
420  histSclSigIEtaIEta_eg_barrel_ = new TH1F("h_scl_sigietaieta_barrel_eg","ele supercluster sigma ieta ieta, barrel, ecal driven",100,0.,0.05);
421  histSclSigIEtaIEta_eg_barrel_->Sumw2();
422  histSclSigIEtaIEta_eg_endcaps_ = new TH1F("h_scl_sigietaieta_endcaps_eg","ele supercluster sigma ieta ieta, endcaps, ecal driven",100,0.,0.05);
423  histSclSigIEtaIEta_eg_endcaps_->Sumw2();
424  histSclE1x5_eg_ = new TH1F("h_scl_E1x5_eg","ele supercluster energy in 1x5, ecal driven",nbinp,0., pmax);
425  histSclE1x5_eg_->Sumw2();
426  histSclE1x5_eg_barrel_ = new TH1F("h_scl_E1x5_eg_barrel","ele supercluster energy in 1x5, ecal driven barrel",nbinp,0., pmax);
427  histSclE1x5_eg_barrel_->Sumw2();
428  histSclE1x5_eg_endcaps_ = new TH1F("h_scl_E1x5_eg_endcaps","ele supercluster energy in 1x5, ecal driven endcaps",nbinp,0., pmax);
429  histSclE1x5_eg_endcaps_->Sumw2();
430  histSclE2x5max_eg_ = new TH1F("h_scl_E2x5max_eg","ele supercluster energy in 2x5 max, ecal driven",nbinp,0.,pmax);
431  histSclE2x5max_eg_->Sumw2();
432  histSclE2x5max_eg_barrel_ = new TH1F("h_scl_E2x5max_eg_barrel","ele supercluster energy in 2x5 max, ecal driven barrel",nbinp,0.,pmax);
433  histSclE2x5max_eg_barrel_->Sumw2();
434  histSclE2x5max_eg_endcaps_ = new TH1F("h_scl_E2x5max_eg_endcaps","ele supercluster energy in 2x5 max, ecal driven endcaps",nbinp,0.,pmax);
435  histSclE2x5max_eg_endcaps_->Sumw2();
436  histSclE5x5_eg_ = new TH1F("h_scl_E5x5_eg","ele supercluster energy in 5x5, ecal driven",nbinp,0.,pmax);
437  histSclE5x5_eg_->Sumw2();
438  histSclE5x5_eg_barrel_ = new TH1F("h_scl_E5x5_eg_barrel","ele supercluster energy in 5x5, ecal driven barrel",nbinp,0.,pmax);
439  histSclE5x5_eg_barrel_->Sumw2();
440  histSclE5x5_eg_endcaps_ = new TH1F("h_scl_E5x5_eg_endcaps","ele supercluster energy in 5x5, ecal driven endcaps",nbinp,0.,pmax);
441  histSclE5x5_eg_endcaps_->Sumw2();
442 
443  histSclEoEtruePfVsEg = new TH2F("h_scl_EoEtruePfVsEg","ele supercluster energy / gen energy pflow vs eg",75,-0.1,1.4, 75, -0.1, 1.4);
444 
445  // matched electron, gsf tracks
446  h_ele_ambiguousTracks = new TH1F( "h_ele_ambiguousTracks", "ele # ambiguous tracks", 5,0.,5.);
447  h_ele_ambiguousTracks->Sumw2();
448  h_ele_ambiguousTracksVsEta = new TH2F( "h_ele_ambiguousTracksVsEta","ele # ambiguous tracks vs eta", nbineta2D,etamin,etamax,5,0.,5.);
449  h_ele_ambiguousTracksVsPhi = new TH2F( "h_ele_ambiguousTracksVsPhi", "ele # ambiguous tracks vs phi", nbinphi2D,phimin,phimax,5,0.,5.);
450  h_ele_ambiguousTracksVsPt = new TH2F( "h_ele_ambiguousTracksVsPt", "ele # ambiguous tracks vs pt", nbinpt2D,0.,ptmax,5,0.,5.);
451  h_ele_foundHits = new TH1F( "h_ele_foundHits", "ele track # found hits", nbinfhits,0.,fhitsmax);
452  h_ele_foundHits->Sumw2();
453  h_ele_foundHits_barrel = new TH1F( "h_ele_foundHits_barrel", "ele track # found hits, barrel", nbinfhits,0.,fhitsmax);
454  h_ele_foundHits_barrel->Sumw2();
455  h_ele_foundHits_endcaps = new TH1F( "h_ele_foundHits_endcaps", "ele track # found hits, endcaps", nbinfhits,0.,fhitsmax);
456  h_ele_foundHits_endcaps->Sumw2();
457  h_ele_foundHitsVsEta = new TH2F( "h_ele_foundHitsVsEta", "ele track # found hits vs eta", nbineta2D,etamin,etamax,nbinfhits,0.,fhitsmax);
458  h_ele_foundHitsVsPhi = new TH2F( "h_ele_foundHitsVsPhi", "ele track # found hits vs phi", nbinphi2D,phimin,phimax,nbinfhits,0.,fhitsmax);
459  h_ele_foundHitsVsPt = new TH2F( "h_ele_foundHitsVsPt", "ele track # found hits vs pt", nbinpt2D,0.,ptmax,nbinfhits,0.,fhitsmax);
460  h_ele_lostHits = new TH1F( "h_ele_lostHits", "ele track # lost hits", 5,0.,5.);
461  h_ele_lostHits->Sumw2();
462  h_ele_lostHits_barrel = new TH1F( "h_ele_lostHits_barrel", "ele track # lost hits, barrel", 5,0.,5.);
463  h_ele_lostHits_barrel->Sumw2();
464  h_ele_lostHits_endcaps = new TH1F( "h_ele_lostHits_endcaps", "ele track # lost hits, endcaps", 5,0.,5.);
465  h_ele_lostHits_endcaps->Sumw2();
466  h_ele_lostHitsVsEta = new TH2F( "h_ele_lostHitsVsEta", "ele track # lost hits vs eta", nbineta2D,etamin,etamax,nbinlhits,0.,lhitsmax);
467  h_ele_lostHitsVsPhi = new TH2F( "h_ele_lostHitsVsPhi", "ele track # lost hits vs eta", nbinphi2D,phimin,phimax,nbinlhits,0.,lhitsmax);
468  h_ele_lostHitsVsPt = new TH2F( "h_ele_lostHitsVsPt", "ele track # lost hits vs eta", nbinpt2D,0.,ptmax,nbinlhits,0.,lhitsmax);
469  h_ele_chi2 = new TH1F( "h_ele_chi2", "ele track #chi^{2}", 100,0.,15.);
470  h_ele_chi2->Sumw2();
471  h_ele_chi2_barrel = new TH1F( "h_ele_chi2_barrel", "ele track #chi^{2}, barrel", 100,0.,15.);
472  h_ele_chi2_barrel->Sumw2();
473  h_ele_chi2_endcaps = new TH1F( "h_ele_chi2_endcaps", "ele track #chi^{2}, endcaps", 100,0.,15.);
474  h_ele_chi2_endcaps->Sumw2();
475  h_ele_chi2VsEta = new TH2F( "h_ele_chi2VsEta", "ele track #chi^{2} vs eta", nbineta2D,etamin,etamax,50,0.,15.);
476  h_ele_chi2VsPhi = new TH2F( "h_ele_chi2VsPhi", "ele track #chi^{2} vs phi", nbinphi2D,phimin,phimax,50,0.,15.);
477  h_ele_chi2VsPt = new TH2F( "h_ele_chi2VsPt", "ele track #chi^{2} vs pt", nbinpt2D,0.,ptmax,50,0.,15.);
478  h_ele_PinMnPout = new TH1F( "h_ele_PinMnPout", "ele track inner p - outer p, mean of GSF components" ,nbinp,0.,200.);
479  h_ele_PinMnPout->Sumw2();
480  h_ele_PinMnPout_mode = new TH1F( "h_ele_PinMnPout_mode", "ele track inner p - outer p, mode of GSF components" ,nbinp,0.,100.);
481  h_ele_PinMnPout_mode->Sumw2();
482  h_ele_PinMnPoutVsEta_mode = new TH2F( "h_ele_PinMnPoutVsEta_mode", "ele track inner p - outer p vs eta, mode of GSF components" ,nbineta2D, etamin,etamax,nbinp2D,0.,100.);
483  h_ele_PinMnPoutVsPhi_mode = new TH2F( "h_ele_PinMnPoutVsPhi_mode", "ele track inner p - outer p vs phi, mode of GSF components" ,nbinphi2D, phimin,phimax,nbinp2D,0.,100.);
484  h_ele_PinMnPoutVsPt_mode = new TH2F( "h_ele_PinMnPoutVsPt_mode", "ele track inner p - outer p vs pt, mode of GSF components" ,nbinpt2D, 0.,ptmax,nbinp2D,0.,100.);
485  h_ele_PinMnPoutVsE_mode = new TH2F( "h_ele_PinMnPoutVsE_mode", "ele track inner p - outer p vs E, mode of GSF components" ,nbinp2D, 0.,200.,nbinp2D,0.,100.);
486  h_ele_PinMnPoutVsChi2_mode = new TH2F( "h_ele_PinMnPoutVsChi2_mode", "ele track inner p - outer p vs track chi2, mode of GSF components" ,50, 0.,20.,nbinp2D,0.,100.);
487  h_ele_outerP = new TH1F( "h_ele_outerP", "ele track outer p, mean of GSF components", nbinp,0.,pmax);
488  h_ele_outerP->Sumw2();
489  h_ele_outerP_mode = new TH1F( "h_ele_outerP_mode", "ele track outer p, mode of GSF components", nbinp,0.,pmax);
490  h_ele_outerP_mode->Sumw2();
491  h_ele_outerPVsEta_mode = new TH2F( "h_ele_outerPVsEta_mode", "ele track outer p vs eta mode", nbineta2D,etamin,etamax,50,0.,pmax);
492  h_ele_outerPt = new TH1F( "h_ele_outerPt", "ele track outer p_{T}, mean of GSF components", nbinpt,0.,ptmax);
493  h_ele_outerPt->Sumw2();
494  h_ele_outerPt_mode = new TH1F( "h_ele_outerPt_mode", "ele track outer p_{T}, mode of GSF components", nbinpt,0.,ptmax);
495  h_ele_outerPt_mode->Sumw2();
496  h_ele_outerPtVsEta_mode = new TH2F( "h_ele_outerPtVsEta_mode", "ele track outer p_{T} vs eta, mode of GSF components", nbineta2D,etamin,etamax,nbinpt2D,0.,ptmax);
497  h_ele_outerPtVsPhi_mode = new TH2F( "h_ele_outerPtVsPhi_mode", "ele track outer p_{T} vs phi, mode of GSF components", nbinphi2D,phimin,phimax,nbinpt2D,0.,ptmax);
498  h_ele_outerPtVsPt_mode = new TH2F( "h_ele_outerPtVsPt_mode", "ele track outer p_{T} vs pt, mode of GSF components", nbinpt2D,0.,100.,nbinpt2D,0.,ptmax);
499 
500  // matched electrons, matching
501  h_ele_EoP = new TH1F( "h_ele_EoP", "ele E/P_{vertex}", nbineop,0.,eopmax);
502  h_ele_EoP->Sumw2();
503  h_ele_EoP_eg = new TH1F( "h_ele_EoP_eg", "ele E/P_{vertex}, ecal driven", nbineop,0.,eopmax);
504  h_ele_EoP_eg->Sumw2();
505  h_ele_EoP_barrel = new TH1F( "h_ele_EoP_barrel", "ele E/P_{vertex} barrel", nbineop,0.,eopmax);
506  h_ele_EoP_barrel->Sumw2();
507  h_ele_EoP_eg_barrel = new TH1F( "h_ele_EoP_eg_barrel", "ele E/P_{vertex}, ecal driven barrel", nbineop,0.,eopmax);
508  h_ele_EoP_eg_barrel->Sumw2();
509  h_ele_EoP_endcaps = new TH1F( "h_ele_EoP_endcaps", "ele E/P_{vertex} endcaps", nbineop,0.,eopmax);
510  h_ele_EoP_endcaps->Sumw2();
511  h_ele_EoP_eg_endcaps = new TH1F( "h_ele_EoP_eg_endcaps", "ele E/P_{vertex}, ecal driven endcaps", nbineop,0.,eopmax);
512  h_ele_EoP_eg_endcaps->Sumw2();
513  h_ele_EoPVsEta = new TH2F( "h_ele_EoPVsEta", "ele E/P_{vertex} vs eta", nbineta2D,etamin,etamax,nbineop2D,0.,eopmaxsht);
514  h_ele_EoPVsPhi = new TH2F( "h_ele_EoPVsPhi", "ele E/P_{vertex} vs phi", nbinphi2D,phimin,phimax,nbineop2D,0.,eopmaxsht);
515  h_ele_EoPVsE = new TH2F( "h_ele_EoPVsE", "ele E/P_{vertex} vs E", 50,0.,pmax ,50,0.,5.);
516  h_ele_EseedOP = new TH1F( "h_ele_EseedOP", "ele E_{seed}/P_{vertex}", nbineop,0.,eopmax);
517  h_ele_EseedOP->Sumw2();
518  h_ele_EseedOP_eg = new TH1F( "h_ele_EseedOP_eg", "ele E_{seed}/P_{vertex}, ecal driven", nbineop,0.,eopmax);
519  h_ele_EseedOP_eg->Sumw2();
520  h_ele_EseedOP_barrel = new TH1F( "h_ele_EseedOP_barrel", "ele E_{seed}/P_{vertex} barrel", nbineop,0.,eopmax);
521  h_ele_EseedOP_barrel->Sumw2();
522  h_ele_EseedOP_eg_barrel = new TH1F( "h_ele_EseedOP_eg_barrel", "ele E_{seed}/P_{vertex}, ecal driven barrel", nbineop,0.,eopmax);
523  h_ele_EseedOP_eg_barrel->Sumw2();
524  h_ele_EseedOP_endcaps = new TH1F( "h_ele_EseedOP_endcaps", "ele E_{seed}/P_{vertex} endcaps", nbineop,0.,eopmax);
525  h_ele_EseedOP_endcaps->Sumw2();
526  h_ele_EseedOP_eg_endcaps = new TH1F( "h_ele_EseedOP_eg_endcaps", "ele E_{seed}/P_{vertex}, ecal driven, endcaps", nbineop,0.,eopmax);
527  h_ele_EseedOP_eg_endcaps->Sumw2();
528  h_ele_EseedOPVsEta = new TH2F( "h_ele_EseedOPVsEta", "ele E_{seed}/P_{vertex} vs eta", nbineta2D,etamin,etamax,nbineop2D,0.,eopmaxsht);
529  h_ele_EseedOPVsPhi = new TH2F( "h_ele_EseedOPVsPhi", "ele E_{seed}/P_{vertex} vs phi", nbinphi2D,phimin,phimax,nbineop2D,0.,eopmaxsht);
530  h_ele_EseedOPVsE = new TH2F( "h_ele_EseedOPVsE", "ele E_{seed}/P_{vertex} vs E", 50,0.,pmax ,50,0.,5.);
531  h_ele_EoPout = new TH1F( "h_ele_EoPout", "ele E_{seed}/P_{out}", nbineop,0.,eopmax);
532  h_ele_EoPout->Sumw2();
533  h_ele_EoPout_eg = new TH1F( "h_ele_EoPout_eg", "ele E_{seed}/P_{out}, ecal driven", nbineop,0.,eopmax);
534  h_ele_EoPout_eg->Sumw2();
535  h_ele_EoPout_barrel = new TH1F( "h_ele_EoPout_barrel", "ele E_{seed}/P_{out} barrel", nbineop,0.,eopmax);
536  h_ele_EoPout_barrel->Sumw2();
537  h_ele_EoPout_eg_barrel = new TH1F( "h_ele_EoPout_eg_barrel", "ele E_{seed}/P_{out}, ecal driven, barrel", nbineop,0.,eopmax);
538  h_ele_EoPout_eg_barrel->Sumw2();
539  h_ele_EoPout_endcaps = new TH1F( "h_ele_EoPout_endcaps", "ele E_{seed}/P_{out} endcaps", nbineop,0.,eopmax);
540  h_ele_EoPout_endcaps->Sumw2();
541  h_ele_EoPout_eg_endcaps = new TH1F( "h_ele_EoPout_eg_endcaps", "ele E_{seed}/P_{out}, ecal driven, endcaps", nbineop,0.,eopmax);
542  h_ele_EoPout_eg_endcaps->Sumw2();
543  h_ele_EoPoutVsEta = new TH2F( "h_ele_EoPoutVsEta", "ele E_{seed}/P_{out} vs eta", nbineta2D,etamin,etamax,nbineop2D,0.,eopmaxsht);
544  h_ele_EoPoutVsPhi = new TH2F( "h_ele_EoPoutVsPhi", "ele E_{seed}/P_{out} vs phi", nbinphi2D,phimin,phimax,nbineop2D,0.,eopmaxsht);
545  h_ele_EoPoutVsE = new TH2F( "h_ele_EoPoutVsE", "ele E_{seed}/P_{out} vs E", nbinp2D,0.,pmax,nbineop2D,0.,eopmaxsht);
546  h_ele_EeleOPout = new TH1F( "h_ele_EeleOPout", "ele E_{ele}/P_{out}", nbineop,0.,eopmax);
547  h_ele_EeleOPout->Sumw2();
548  h_ele_EeleOPout_eg = new TH1F( "h_ele_EeleOPout_eg", "ele E_{ele}/P_{out}, ecal driven", nbineop,0.,eopmax);
549  h_ele_EeleOPout_eg->Sumw2();
550  h_ele_EeleOPout_barrel = new TH1F( "h_ele_EeleOPout_barrel", "ele E_{ele}/P_{out} barrel", nbineop,0.,eopmax);
551  h_ele_EeleOPout_barrel->Sumw2();
552  h_ele_EeleOPout_eg_barrel = new TH1F( "h_ele_EeleOPout_eg_barrel", "ele E_{ele}/P_{out}, ecal driven, barrel", nbineop,0.,eopmax);
553  h_ele_EeleOPout_eg_barrel->Sumw2();
554  h_ele_EeleOPout_endcaps = new TH1F( "h_ele_EeleOPout_endcaps", "ele E_{ele}/P_{out} endcaps", nbineop,0.,eopmax);
555  h_ele_EeleOPout_endcaps->Sumw2();
556  h_ele_EeleOPout_eg_endcaps = new TH1F( "h_ele_EeleOPout_eg_endcaps", "ele E_{ele}/P_{out}, ecal driven, endcaps", nbineop,0.,eopmax);
557  h_ele_EeleOPout_eg_endcaps->Sumw2();
558  h_ele_EeleOPoutVsEta = new TH2F( "h_ele_EeleOPoutVsEta", "ele E_{ele}/P_{out} vs eta", nbineta2D,etamin,etamax,nbineop2D,0.,eopmaxsht);
559  h_ele_EeleOPoutVsPhi = new TH2F( "h_ele_EeleOPoutVsPhi", "ele E_{ele}/P_{out} vs phi", nbinphi2D,phimin,phimax,nbineop2D,0.,eopmaxsht);
560  h_ele_EeleOPoutVsE = new TH2F( "h_ele_EeleOPoutVsE", "ele E_{ele}/P_{out} vs E", nbinp2D,0.,pmax,nbineop2D,0.,eopmaxsht);
561  h_ele_dEtaSc_propVtx = new TH1F( "h_ele_dEtaSc_propVtx", "ele #eta_{sc} - #eta_{tr}, prop from vertex", nbindetamatch,detamatchmin,detamatchmax);
562  h_ele_dEtaSc_propVtx->Sumw2();
563  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);
564  h_ele_dEtaSc_propVtx_eg->Sumw2();
565  h_ele_dEtaSc_propVtx_barrel = new TH1F( "h_ele_dEtaSc_propVtx_barrel", "ele #eta_{sc} - #eta_{tr}, prop from vertex, barrel", nbindetamatch,detamatchmin,detamatchmax);
566  h_ele_dEtaSc_propVtx_barrel->Sumw2();
567  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);
568  h_ele_dEtaSc_propVtx_eg_barrel->Sumw2();
569  h_ele_dEtaSc_propVtx_endcaps = new TH1F( "h_ele_dEtaSc_propVtx_endcaps", "ele #eta_{sc} - #eta_{tr}, prop from vertex, endcaps", nbindetamatch,detamatchmin,detamatchmax);
570  h_ele_dEtaSc_propVtx_endcaps->Sumw2();
571  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);
572  h_ele_dEtaSc_propVtx_eg_endcaps->Sumw2();
573  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);
574  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);
575  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);
576  h_ele_dPhiSc_propVtx = new TH1F( "h_ele_dPhiSc_propVtx", "ele #phi_{sc} - #phi_{tr}, prop from vertex", nbindphimatch,dphimatchmin,dphimatchmax);
577  h_ele_dPhiSc_propVtx->Sumw2();
578  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);
579  h_ele_dPhiSc_propVtx_eg->Sumw2();
580  h_ele_dPhiSc_propVtx_barrel = new TH1F( "h_ele_dPhiSc_propVtx_barrel", "ele #phi_{sc} - #phi_{tr}, prop from vertex, barrel", nbindphimatch,dphimatchmin,dphimatchmax);
581  h_ele_dPhiSc_propVtx_barrel->Sumw2();
582  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);
583  h_ele_dPhiSc_propVtx_eg_barrel->Sumw2();
584  h_ele_dPhiSc_propVtx_endcaps = new TH1F( "h_ele_dPhiSc_propVtx_endcaps", "ele #phi_{sc} - #phi_{tr}, prop from vertex, endcaps", nbindphimatch,dphimatchmin,dphimatchmax);
585  h_ele_dPhiSc_propVtx_endcaps->Sumw2();
586  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);
587  h_ele_dPhiSc_propVtx_eg_endcaps->Sumw2();
588  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);
589  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);
590  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);
591  h_ele_dEtaCl_propOut = new TH1F( "h_ele_dEtaCl_propOut", "ele #eta_{cl} - #eta_{tr}, prop from outermost", nbindetamatch,detamatchmin,detamatchmax);
592  h_ele_dEtaCl_propOut->Sumw2();
593  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);
594  h_ele_dEtaCl_propOut_eg->Sumw2();
595  h_ele_dEtaCl_propOut_barrel = new TH1F( "h_ele_dEtaCl_propOut_barrel", "ele #eta_{cl} - #eta_{tr}, prop from outermost, barrel", nbindetamatch,detamatchmin,detamatchmax);
596  h_ele_dEtaCl_propOut_barrel->Sumw2();
597  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);
598  h_ele_dEtaCl_propOut_eg_barrel->Sumw2();
599  h_ele_dEtaCl_propOut_endcaps = new TH1F( "h_ele_dEtaCl_propOut_endcaps", "ele #eta_{cl} - #eta_{tr}, prop from outermost, endcaps", nbindetamatch,detamatchmin,detamatchmax);
600  h_ele_dEtaCl_propOut_endcaps->Sumw2();
601  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);
602  h_ele_dEtaCl_propOut_eg_endcaps->Sumw2();
603  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);
604  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);
605  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);
606  h_ele_dPhiCl_propOut = new TH1F( "h_ele_dPhiCl_propOut", "ele #phi_{cl} - #phi_{tr}, prop from outermost", nbindphimatch,dphimatchmin,dphimatchmax);
607  h_ele_dPhiCl_propOut->Sumw2();
608  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);
609  h_ele_dPhiCl_propOut_eg->Sumw2();
610  h_ele_dPhiCl_propOut_barrel = new TH1F( "h_ele_dPhiCl_propOut_barrel", "ele #phi_{cl} - #phi_{tr}, prop from outermost, barrel", nbindphimatch,dphimatchmin,dphimatchmax);
611  h_ele_dPhiCl_propOut_barrel->Sumw2();
612  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);
613  h_ele_dPhiCl_propOut_eg_barrel->Sumw2();
614  h_ele_dPhiCl_propOut_endcaps = new TH1F( "h_ele_dPhiCl_propOut_endcaps", "ele #phi_{cl} - #phi_{tr}, prop from outermost, endcaps", nbindphimatch,dphimatchmin,dphimatchmax);
615  h_ele_dPhiCl_propOut_endcaps->Sumw2();
616  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);
617  h_ele_dPhiCl_propOut_eg_endcaps->Sumw2();
618  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);
619  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);
620  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);
621  h_ele_dEtaEleCl_propOut = new TH1F( "h_ele_dEtaEleCl_propOut", "ele #eta_{EleCl} - #eta_{tr}, prop from outermost", nbindetamatch,detamatchmin,detamatchmax);
622  h_ele_dEtaEleCl_propOut->Sumw2();
623  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);
624  h_ele_dEtaEleCl_propOut_eg->Sumw2();
625  h_ele_dEtaEleCl_propOut_barrel = new TH1F( "h_ele_dEtaEleCl_propOut_barrel", "ele #eta_{EleCl} - #eta_{tr}, prop from outermost, barrel", nbindetamatch,detamatchmin,detamatchmax);
626  h_ele_dEtaEleCl_propOut_barrel->Sumw2();
627  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);
628  h_ele_dEtaEleCl_propOut_eg_barrel->Sumw2();
629  h_ele_dEtaEleCl_propOut_endcaps = new TH1F( "h_ele_dEtaEleCl_propOut_endcaps", "ele #eta_{EleCl} - #eta_{tr}, prop from outermost, endcaps", nbindetamatch,detamatchmin,detamatchmax);
630  h_ele_dEtaEleCl_propOut_endcaps->Sumw2();
631  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);
632  h_ele_dEtaEleCl_propOut_eg_endcaps->Sumw2();
633  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);
634  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);
635  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);
636  h_ele_dPhiEleCl_propOut = new TH1F( "h_ele_dPhiEleCl_propOut", "ele #phi_{EleCl} - #phi_{tr}, prop from outermost", nbindphimatch,dphimatchmin,dphimatchmax);
637  h_ele_dPhiEleCl_propOut->Sumw2();
638  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);
639  h_ele_dPhiEleCl_propOut_eg->Sumw2();
640  h_ele_dPhiEleCl_propOut_barrel = new TH1F( "h_ele_dPhiEleCl_propOut_barrel", "ele #phi_{EleCl} - #phi_{tr}, prop from outermost, barrel", nbindphimatch,dphimatchmin,dphimatchmax);
641  h_ele_dPhiEleCl_propOut_barrel->Sumw2();
642  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);
643  h_ele_dPhiEleCl_propOut_eg_barrel->Sumw2();
644  h_ele_dPhiEleCl_propOut_endcaps = new TH1F( "h_ele_dPhiEleCl_propOut_endcaps", "ele #phi_{EleCl} - #phi_{tr}, prop from outermost, endcaps", nbindphimatch,dphimatchmin,dphimatchmax);
645  h_ele_dPhiEleCl_propOut_endcaps->Sumw2();
646  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);
647  h_ele_dPhiEleCl_propOut_eg_endcaps->Sumw2();
648  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);
649  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);
650  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);
651 
652  h_ele_HoE = new TH1F("h_ele_HoE", "ele hadronic energy / em energy", nbinhoe, hoemin, hoemax) ;
653  h_ele_HoE->Sumw2();
654  h_ele_HoE_eg = new TH1F("h_ele_HoE_eg", "ele hadronic energy / em energy, ecal driven", nbinhoe, hoemin, hoemax) ;
655  h_ele_HoE_eg->Sumw2();
656  h_ele_HoE_barrel = new TH1F("h_ele_HoE_barrel", "ele hadronic energy / em energy, barrel", nbinhoe, hoemin, hoemax) ;
657  h_ele_HoE_barrel->Sumw2();
658  h_ele_HoE_eg_barrel = new TH1F("h_ele_HoE_eg_barrel", "ele hadronic energy / em energy, ecal driven, barrel", nbinhoe, hoemin, hoemax) ;
659  h_ele_HoE_eg_barrel->Sumw2();
660  h_ele_HoE_endcaps = new TH1F("h_ele_HoE_endcaps", "ele hadronic energy / em energy, endcaps", nbinhoe, hoemin, hoemax) ;
661  h_ele_HoE_endcaps->Sumw2();
662  h_ele_HoE_eg_endcaps = new TH1F("h_ele_HoE_eg_endcaps", "ele hadronic energy / em energy, ecal driven, endcaps", nbinhoe, hoemin, hoemax) ;
663  h_ele_HoE_eg_endcaps->Sumw2();
664  h_ele_HoE_fiducial = new TH1F("h_ele_HoE_fiducial", "ele hadronic energy / em energy, fiducial region", nbinhoe, hoemin, hoemax) ;
665  h_ele_HoE_fiducial->Sumw2();
666  h_ele_HoEVsEta = new TH2F("h_ele_HoEVsEta", "ele hadronic energy / em energy vs eta", nbineta,etamin,etamax,nbinhoe, hoemin, hoemax) ;
667  h_ele_HoEVsPhi = new TH2F("h_ele_HoEVsPhi", "ele hadronic energy / em energy vs phi", nbinphi2D,phimin,phimax,nbinhoe, hoemin, hoemax) ;
668  h_ele_HoEVsE = new TH2F("h_ele_HoEVsE", "ele hadronic energy / em energy vs E", nbinp, 0.,300.,nbinhoe, hoemin, hoemax) ;
669 
670  h_ele_seed_dphi2_ = new TH1F("h_ele_seedDphi2", "ele seed dphi 2nd layer", 50,-0.003,+0.003) ;
671  h_ele_seed_dphi2_->Sumw2();
672  h_ele_seed_dphi2VsEta_ = new TH2F("h_ele_seedDphi2VsEta", "ele seed dphi 2nd layer vs eta", nbineta2D,etamin,etamax,50,-0.003,+0.003) ;
673  h_ele_seed_dphi2VsPt_ = new TH2F("h_ele_seedDphi2VsPt", "ele seed dphi 2nd layer vs pt", nbinpt2D,0.,ptmax,50,-0.003,+0.003) ;
674  h_ele_seed_drz2_ = new TH1F("h_ele_seedDrz2", "ele seed dr (dz) 2nd layer", 50,-0.03,+0.03) ;
675  h_ele_seed_drz2_->Sumw2();
676  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) ;
677  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) ;
678  h_ele_seed_subdet2_ = new TH1F("h_ele_seedSubdet2", "ele seed subdet 2nd layer", 10,0.,10.) ;
679  h_ele_seed_subdet2_->Sumw2();
680 
681  // classes
682  h_ele_classes = new TH1F( "h_ele_classes", "ele classes", 20,0.0,20.);
683  h_ele_classes->Sumw2();
684  h_ele_eta = new TH1F( "h_ele_eta", "ele electron eta", nbineta/2,0.0,etamax);
685  h_ele_eta->Sumw2();
686  h_ele_eta_golden = new TH1F( "h_ele_eta_golden", "ele electron eta golden", nbineta/2,0.0,etamax);
687  h_ele_eta_golden->Sumw2();
688  h_ele_eta_bbrem = new TH1F( "h_ele_eta_bbrem", "ele electron eta bbrem", nbineta/2,0.0,etamax);
689  h_ele_eta_bbrem->Sumw2();
690  h_ele_eta_narrow = new TH1F( "h_ele_eta_narrow", "ele electron eta narrow", nbineta/2,0.0,etamax);
691  h_ele_eta_narrow->Sumw2();
692  h_ele_eta_shower = new TH1F( "h_ele_eta_show", "ele electron eta showering", nbineta/2,0.0,etamax);
693  h_ele_eta_shower->Sumw2();
694  h_ele_PinVsPoutGolden_mode = new TH2F( "h_ele_PinVsPoutGolden_mode", "ele track inner p vs outer p vs eta, golden, mode of GSF components" ,nbinp2D,0.,pmax,50,0.,pmax);
695  h_ele_PinVsPoutShowering_mode = new TH2F( "h_ele_PinVsPoutShowering_mode", "ele track inner p vs outer p vs eta, showering, mode of GSF components" ,nbinp2D,0.,pmax,50,0.,pmax);
696  h_ele_PinVsPoutGolden_mean = new TH2F( "h_ele_PinVsPoutGolden_mean", "ele track inner p vs outer p vs eta, golden, mean of GSF components" ,nbinp2D,0.,pmax,50,0.,pmax);
697  h_ele_PinVsPoutShowering_mean = new TH2F( "h_ele_PinVsPoutShowering_mean", "ele track inner p vs outer p vs eta, showering, mean of GSF components" ,nbinp2D,0.,pmax,50,0.,pmax);
698  h_ele_PtinVsPtoutGolden_mode = new TH2F( "h_ele_PtinVsPtoutGolden_mode", "ele track inner pt vs outer pt vs eta, golden, mode of GSF components" ,nbinpt2D,0.,ptmax,50,0.,ptmax);
699  h_ele_PtinVsPtoutShowering_mode = new TH2F( "h_ele_PtinVsPtoutShowering_mode", "ele track inner pt vs outer pt vs eta, showering, mode of GSF components" ,nbinpt2D,0.,ptmax,50,0.,ptmax);
700  h_ele_PtinVsPtoutGolden_mean = new TH2F( "h_ele_PtinVsPtoutGolden_mean", "ele track inner pt vs outer pt vs eta, golden, mean of GSF components" ,nbinpt2D,0.,ptmax,50,0.,ptmax);
701  h_ele_PtinVsPtoutShowering_mean = new TH2F( "h_ele_PtinVsPtoutShowering_mean", "ele track inner pt vs outer pt vs eta, showering, mean of GSF components" ,nbinpt2D,0.,ptmax,50,0.,ptmax);
702  histSclEoEtrueGolden_barrel = new TH1F("h_scl_EoEtrue_golden_barrel","ele supercluster energy / gen energy, golden, barrel",nbinpoptrue,poptruemin,poptruemax);
703  histSclEoEtrueGolden_barrel->Sumw2();
704  histSclEoEtrueGolden_endcaps = new TH1F("h_scl_EoEtrue_golden_endcaps","ele supercluster energy / gen energy, golden, endcaps",nbinpoptrue,poptruemin,poptruemax);
705  histSclEoEtrueGolden_endcaps->Sumw2();
706  histSclEoEtrueShowering_barrel = new TH1F("h_scl_EoEtrue_showering_barrel","ele supercluster energy / gen energy, showering, barrel",nbinpoptrue,poptruemin,poptruemax);
707  histSclEoEtrueShowering_barrel->Sumw2();
708  histSclEoEtrueShowering_endcaps = new TH1F("h_scl_EoEtrue_showering_endcaps","ele supercluster energy / gen energy, showering, endcaps",nbinpoptrue,poptruemin,poptruemax);
709  histSclEoEtrueShowering_endcaps->Sumw2();
710 
711  // isolation
712  h_ele_tkSumPt_dr03 = new TH1F("h_ele_tkSumPt_dr03","tk isolation sum, dR=0.3",100,0.0,20.);
713  h_ele_tkSumPt_dr03->Sumw2();
714  h_ele_ecalRecHitSumEt_dr03= new TH1F("h_ele_ecalRecHitSumEt_dr03","ecal isolation sum, dR=0.3",100,0.0,20.);
715  h_ele_ecalRecHitSumEt_dr03->Sumw2();
716  h_ele_hcalDepth1TowerSumEt_dr03= new TH1F("h_ele_hcalDepth1TowerSumEt_dr03","hcal depth1 isolation sum, dR=0.3",100,0.0,20.);
717  h_ele_hcalDepth1TowerSumEt_dr03->Sumw2();
718  h_ele_hcalDepth2TowerSumEt_dr03= new TH1F("h_ele_hcalDepth2TowerSumEt_dr03","hcal depth2 isolation sum, dR=0.3",100,0.0,20.);
719  h_ele_hcalDepth2TowerSumEt_dr03->Sumw2();
720  h_ele_tkSumPt_dr04= new TH1F("h_ele_tkSumPt_dr04","tk isolation sum, dR=0.4",100,0.0,20.);
721  h_ele_tkSumPt_dr04->Sumw2();
722  h_ele_ecalRecHitSumEt_dr04= new TH1F("h_ele_ecalRecHitSumEt_dr04","ecal isolation sum, dR=0.4",100,0.0,20.);
723  h_ele_ecalRecHitSumEt_dr04->Sumw2();
724  h_ele_hcalDepth1TowerSumEt_dr04= new TH1F("h_ele_hcalDepth1TowerSumEt_dr04","hcal depth1 isolation sum, dR=0.4",100,0.0,20.);
725  h_ele_hcalDepth1TowerSumEt_dr04->Sumw2();
726  h_ele_hcalDepth2TowerSumEt_dr04= new TH1F("h_ele_hcalDepth2TowerSumEt_dr04","hcal depth2 isolation sum, dR=0.4",100,0.0,20.);
727  h_ele_hcalDepth2TowerSumEt_dr04->Sumw2();
728 
729  // fbrem
730  h_ele_fbrem = new TH1F( "h_ele_fbrem","ele brem fraction, mode of GSF components",100,0.,1.);
731  h_ele_fbrem->Sumw2();
732  h_ele_fbrem_eg = new TH1F( "h_ele_fbrem_eg","ele brem fraction, mode of GSF components, ecal driven",100,0.,1.);
733  h_ele_fbrem_eg->Sumw2();
734  h_ele_fbremVsEta_mode = new TProfile( "h_ele_fbremvsEtamode","mean ele brem fraction vs eta, mode of GSF components",nbineta2D,etamin,etamax,0.,1.);
735  h_ele_fbremVsEta_mean = new TProfile( "h_ele_fbremvsEtamean","mean ele brem fraction vs eta, mean of GSF components",nbineta2D,etamin,etamax,0.,1.);
736 
737  // e/g et pflow electrons
738  h_ele_mva = new TH1F( "h_ele_mva","ele identification mva",100,-1.,1.);
739  h_ele_mva->Sumw2();
740  h_ele_mva_eg = new TH1F( "h_ele_mva_eg","ele identification mva, ecal driven",100,-1.,1.);
741  h_ele_mva_eg->Sumw2();
742  h_ele_provenance = new TH1F( "h_ele_provenance","ele provenance",5,-2.,3.);
743  h_ele_provenance->Sumw2();
744 
745  // histos titles
746  h_mcNum -> GetXaxis()-> SetTitle("N_{gen}");
747  h_mcNum -> GetYaxis()-> SetTitle("Events");
748  h_eleNum -> GetXaxis()-> SetTitle("# gen ele");
749  h_eleNum -> GetYaxis()-> SetTitle("Events");
750  h_gamNum -> GetXaxis()-> SetTitle("N_{gen #gamma}");
751  h_gamNum -> GetYaxis()-> SetTitle("Events");
752  h_simEta -> GetXaxis()-> SetTitle("#eta");
753  h_simEta -> GetYaxis()-> SetTitle("Events");
754  h_simP -> GetXaxis()-> SetTitle("p (GeV/c)");
755  h_simP -> GetYaxis()-> SetTitle("Events");
756  h_ele_foundHits -> GetXaxis()-> SetTitle("N_{hits}");
757  h_ele_foundHits -> GetYaxis()-> SetTitle("Events");
758  h_ele_foundHits_barrel -> GetXaxis()-> SetTitle("N_{hits}");
759  h_ele_foundHits_barrel -> GetYaxis()-> SetTitle("Events");
760  h_ele_foundHits_endcaps -> GetXaxis()-> SetTitle("N_{hits}");
761  h_ele_foundHits_endcaps -> GetYaxis()-> SetTitle("Events");
762  h_ele_ambiguousTracks -> GetXaxis()-> SetTitle("N_{ambiguous tracks}");
763  h_ele_ambiguousTracks -> GetYaxis()-> SetTitle("Events");
764  h_ele_lostHits -> GetXaxis()-> SetTitle("N_{lost hits}");
765  h_ele_lostHits -> GetYaxis()-> SetTitle("Events");
766  h_ele_lostHits_barrel -> GetXaxis()-> SetTitle("N_{lost hits}");
767  h_ele_lostHits_barrel -> GetYaxis()-> SetTitle("Events");
768  h_ele_lostHits_endcaps -> GetXaxis()-> SetTitle("N_{lost hits}");
769  h_ele_lostHits_endcaps -> GetYaxis()-> SetTitle("Events");
770  h_ele_chi2 -> GetXaxis()-> SetTitle("#Chi^{2}");
771  h_ele_chi2 -> GetYaxis()-> SetTitle("Events");
772  h_ele_chi2_barrel -> GetXaxis()-> SetTitle("#Chi^{2}");
773  h_ele_chi2_barrel -> GetYaxis()-> SetTitle("Events");
774  h_ele_chi2_endcaps -> GetXaxis()-> SetTitle("#Chi^{2}");
775  h_ele_chi2_endcaps -> GetYaxis()-> SetTitle("Events");
776  h_ele_charge -> GetXaxis()-> SetTitle("charge");
777  h_ele_charge -> GetYaxis()-> SetTitle("Events");
778  h_ele_vertexP -> GetXaxis()-> SetTitle("p_{vertex} (GeV/c)");
779  h_ele_vertexP -> GetYaxis()-> SetTitle("Events");
780  h_ele_vertexPt -> GetXaxis()-> SetTitle("p_{T vertex} (GeV/c)");
781  h_ele_vertexPt -> GetYaxis()-> SetTitle("Events");
782  h_ele_Et -> GetXaxis()-> SetTitle("E_{T} (GeV)");
783  h_ele_Et -> GetYaxis()-> SetTitle("Events");
784  h_ele_Et_all -> GetXaxis()-> SetTitle("E_{T} (GeV)");
785  h_ele_Et_all -> GetYaxis()-> SetTitle("Events");
786  h_ele_vertexEta -> GetXaxis()-> SetTitle("#eta");
787  h_ele_vertexEta -> GetYaxis()-> SetTitle("Events");
788  h_ele_vertexPhi -> GetXaxis()-> SetTitle("#phi (rad)");
789  h_ele_vertexPhi -> GetYaxis()-> SetTitle("Events");
790  h_ele_PoPtrue -> GetXaxis()-> SetTitle("P/P_{gen}");
791  h_ele_PoPtrue -> GetYaxis()-> SetTitle("Events");
792  h_ele_PoPtrue_barrel -> GetXaxis()-> SetTitle("P/P_{gen}");
793  h_ele_PoPtrue_barrel -> GetYaxis()-> SetTitle("Events");
794  h_ele_PoPtrue_endcaps -> GetXaxis()-> SetTitle("P/P_{gen}");
795  h_ele_PoPtrue_endcaps -> GetYaxis()-> SetTitle("Events");
796  h_ele_PoPtrue_golden_barrel -> GetXaxis()-> SetTitle("P/P_{gen}");
797  h_ele_PoPtrue_golden_barrel -> GetYaxis()-> SetTitle("Events");
798  h_ele_PoPtrue_showering_barrel -> GetXaxis()-> SetTitle("P/P_{gen}");
799  h_ele_PoPtrue_showering_barrel -> GetYaxis()-> SetTitle("Events");
800  h_ele_PoPtrue_golden_endcaps -> GetXaxis()-> SetTitle("P/P_{gen}");
801  h_ele_PoPtrue_golden_endcaps -> GetYaxis()-> SetTitle("Events");
802  h_ele_PoPtrue_showering_endcaps -> GetXaxis()-> SetTitle("P/P_{gen}");
803  h_ele_PoPtrue_showering_endcaps -> GetYaxis()-> SetTitle("Events");
804  h_ele_PtoPttrue -> GetXaxis()-> SetTitle("P_{T}/P_{T}^{gen}");
805  h_ele_PtoPttrue -> GetYaxis()-> SetTitle("Events");
806  h_ele_PtoPttrue_barrel -> GetXaxis()-> SetTitle("P_{T}/P_{T}^{gen}");
807  h_ele_PtoPttrue_barrel -> GetYaxis()-> SetTitle("Events");
808  h_ele_PtoPttrue_endcaps -> GetXaxis()-> SetTitle("P_{T}/P_{T}^{gen}");
809  h_ele_PtoPttrue_endcaps -> GetYaxis()-> SetTitle("Events");
810  histSclEoEtrue_barrel -> GetXaxis()-> SetTitle("E/E_{gen}") ;
811  histSclEoEtrue_barrel -> GetYaxis()-> SetTitle("Events") ;
812  histSclEoEtrue_endcaps -> GetXaxis()-> SetTitle("E/E_{gen}") ;
813  histSclEoEtrue_endcaps -> GetYaxis()-> SetTitle("Events") ;
814  histSclEoEtrueGolden_barrel -> GetXaxis()-> SetTitle("E/E_{gen}") ;
815  histSclEoEtrueGolden_barrel -> GetYaxis()-> SetTitle("Events") ;
816  histSclEoEtrueShowering_barrel -> GetXaxis()-> SetTitle("E/E_{gen}") ;
817  histSclEoEtrueShowering_barrel -> GetYaxis()-> SetTitle("Events") ;
818  histSclEoEtrueGolden_endcaps -> GetXaxis()-> SetTitle("E/E_{gen}") ;
819  histSclEoEtrueGolden_endcaps -> GetYaxis()-> SetTitle("Events") ;
820  histSclEoEtrueShowering_endcaps -> GetXaxis()-> SetTitle("E/E_{gen}") ;
821  histSclEoEtrueShowering_endcaps -> GetYaxis()-> SetTitle("Events") ;
822  histSclEoEtrue_barrel_etagap -> GetXaxis()-> SetTitle("E/E_{gen}");
823  histSclEoEtrue_barrel_etagap -> GetYaxis()-> SetTitle("Events");
824  histSclEoEtrue_barrel_phigap -> GetXaxis()-> SetTitle("E/E_{gen}");
825  histSclEoEtrue_barrel_phigap -> GetYaxis()-> SetTitle("Events");
826  histSclEoEtrue_ebeegap -> GetXaxis()-> SetTitle("E/E_{gen}");
827  histSclEoEtrue_ebeegap -> GetYaxis()-> SetTitle("Events");
828  histSclEoEtrue_endcaps_deegap -> GetXaxis()-> SetTitle("E/E_{gen}");
829  histSclEoEtrue_endcaps_deegap -> GetYaxis()-> SetTitle("Events");
830  histSclEoEtrue_endcaps_ringgap -> GetXaxis()-> SetTitle("E/E_{gen}");
831  histSclEoEtrue_endcaps_ringgap -> GetYaxis()-> SetTitle("Events");
832  histSclEoEtrue_barrel_new -> GetXaxis()-> SetTitle("E/E_{gen}") ;
833  histSclEoEtrue_barrel_new -> GetYaxis()-> SetTitle("Events") ;
834  histSclEoEtrue_endcaps_new -> GetXaxis()-> SetTitle("E/E_{gen}") ;
835  histSclEoEtrue_endcaps_new -> GetYaxis()-> SetTitle("Events") ;
836  histSclEoEtrue_barrel_etagap_new -> GetXaxis()-> SetTitle("E/E_{gen}");
837  histSclEoEtrue_barrel_etagap_new -> GetYaxis()-> SetTitle("Events");
838  histSclEoEtrue_barrel_phigap_new -> GetXaxis()-> SetTitle("E/E_{gen}");
839  histSclEoEtrue_barrel_phigap_new -> GetYaxis()-> SetTitle("Events");
840  histSclEoEtrue_ebeegap_new -> GetXaxis()-> SetTitle("E/E_{gen}");
841  histSclEoEtrue_ebeegap_new -> GetYaxis()-> SetTitle("Events");
842  histSclEoEtrue_endcaps_deegap_new -> GetXaxis()-> SetTitle("E/E_{gen}");
843  histSclEoEtrue_endcaps_deegap_new -> GetYaxis()-> SetTitle("Events");
844  histSclEoEtrue_endcaps_ringgap_new -> GetXaxis()-> SetTitle("E/E_{gen}");
845  histSclEoEtrue_endcaps_ringgap_new -> GetYaxis()-> SetTitle("Events");
846  histSclSigEtaEta_-> GetXaxis()-> SetTitle("#sigma_{#eta #eta}") ;
847  histSclSigEtaEta_-> GetYaxis()-> SetTitle("Events") ;
848  histSclSigEtaEta_barrel_-> GetXaxis()-> SetTitle("#sigma_{#eta #eta}") ;
849  histSclSigEtaEta_barrel_-> GetYaxis()-> SetTitle("Events") ;
850  histSclSigEtaEta_endcaps_-> GetXaxis()-> SetTitle("#sigma_{#eta #eta}") ;
851  histSclSigEtaEta_endcaps_-> GetYaxis()-> SetTitle("Events") ;
852  histSclSigIEtaIEta_-> GetXaxis()-> SetTitle("#sigma_{i#eta i#eta}") ;
853  histSclSigIEtaIEta_-> GetYaxis()-> SetTitle("Events") ;
854  histSclSigIEtaIEta_barrel_-> GetXaxis()-> SetTitle("#sigma_{i#eta i#eta}") ;
855  histSclSigIEtaIEta_barrel_-> GetYaxis()-> SetTitle("Events") ;
856  histSclSigIEtaIEta_endcaps_-> GetXaxis()-> SetTitle("#sigma_{i#eta i#eta}") ;
857  histSclSigIEtaIEta_endcaps_-> GetYaxis()-> SetTitle("Events") ;
858  histSclE1x5_-> GetXaxis()-> SetTitle("E1x5 (GeV)") ;
859  histSclE1x5_-> GetYaxis()-> SetTitle("Events") ;
860  histSclE1x5_barrel_-> GetXaxis()-> SetTitle("E1x5 (GeV)") ;
861  histSclE1x5_barrel_-> GetYaxis()-> SetTitle("Events") ;
862  histSclE1x5_endcaps_-> GetXaxis()-> SetTitle("E1x5 (GeV)") ;
863  histSclE1x5_endcaps_-> GetYaxis()-> SetTitle("Events") ;
864  histSclE2x5max_-> GetXaxis()-> SetTitle("E2x5 (GeV)") ;
865  histSclE2x5max_-> GetYaxis()-> SetTitle("Events") ;
866  histSclE2x5max_barrel_-> GetXaxis()-> SetTitle("E2x5 (GeV)") ;
867  histSclE2x5max_barrel_-> GetYaxis()-> SetTitle("Events") ;
868  histSclE2x5max_endcaps_-> GetXaxis()-> SetTitle("E2x5 (GeV)") ;
869  histSclE2x5max_endcaps_-> GetYaxis()-> SetTitle("Events") ;
870  histSclE5x5_-> GetXaxis()-> SetTitle("E5x5 (GeV)") ;
871  histSclE5x5_-> GetYaxis()-> SetTitle("Events") ;
872  histSclE5x5_barrel_-> GetXaxis()-> SetTitle("E5x5 (GeV)") ;
873  histSclE5x5_barrel_-> GetYaxis()-> SetTitle("Events") ;
874  histSclE5x5_endcaps_-> GetXaxis()-> SetTitle("E5x5 (GeV)") ;
875  histSclE5x5_endcaps_-> GetYaxis()-> SetTitle("Events") ;
876  histSclEoEtruePfVsEg->GetXaxis()->SetTitle("E/E_{gen} (e/g)") ;
877  histSclEoEtruePfVsEg->GetYaxis()->SetTitle("E/E_{gen} (pflow)") ;
878  h_ele_ChargeMnChargeTrue -> GetXaxis()-> SetTitle("q_{rec} - q_{gen}");
879  h_ele_ChargeMnChargeTrue -> GetYaxis()-> SetTitle("Events");
880  h_ele_EtaMnEtaTrue -> GetXaxis()-> SetTitle("#eta_{rec} - #eta_{gen}");
881  h_ele_EtaMnEtaTrue -> GetYaxis()-> SetTitle("Events");
882  h_ele_EtaMnEtaTrue_barrel -> GetXaxis()-> SetTitle("#eta_{rec} - #eta_{gen}");
883  h_ele_EtaMnEtaTrue_barrel -> GetYaxis()-> SetTitle("Events");
884  h_ele_EtaMnEtaTrue_endcaps -> GetXaxis()-> SetTitle("#eta_{rec} - #eta_{gen}");
885  h_ele_EtaMnEtaTrue_endcaps -> GetYaxis()-> SetTitle("Events");
886  h_ele_PhiMnPhiTrue -> GetXaxis()-> SetTitle("#phi_{rec} - #phi_{gen} (rad)");
887  h_ele_PhiMnPhiTrue -> GetYaxis()-> SetTitle("Events");
888  h_ele_PhiMnPhiTrue_barrel -> GetXaxis()-> SetTitle("#phi_{rec} - #phi_{gen} (rad)");
889  h_ele_PhiMnPhiTrue_barrel -> GetYaxis()-> SetTitle("Events");
890  h_ele_PhiMnPhiTrue_endcaps -> GetXaxis()-> SetTitle("#phi_{rec} - #phi_{gen} (rad)");
891  h_ele_PhiMnPhiTrue_endcaps -> GetYaxis()-> SetTitle("Events");
892  h_ele_PinMnPout -> GetXaxis()-> SetTitle("P_{vertex} - P_{out} (GeV/c)");
893  h_ele_PinMnPout -> GetYaxis()-> SetTitle("Events");
894  h_ele_PinMnPout_mode -> GetXaxis()-> SetTitle("P_{vertex} - P_{out}, mode of GSF components (GeV/c)");
895  h_ele_PinMnPout_mode -> GetYaxis()-> SetTitle("Events");
896  h_ele_outerP -> GetXaxis()-> SetTitle("P_{out} (GeV/c)");
897  h_ele_outerP -> GetYaxis()-> SetTitle("Events");
898  h_ele_outerP_mode -> GetXaxis()-> SetTitle("P_{out} (GeV/c)");
899  h_ele_outerP_mode -> GetYaxis()-> SetTitle("Events");
900  h_ele_outerPt -> GetXaxis()-> SetTitle("P_{T out} (GeV/c)");
901  h_ele_outerPt -> GetYaxis()-> SetTitle("Events");
902  h_ele_outerPt_mode -> GetXaxis()-> SetTitle("P_{T out} (GeV/c)");
903  h_ele_outerPt_mode -> GetYaxis()-> SetTitle("Events");
904  h_ele_EoP -> GetXaxis()-> SetTitle("E/P_{vertex}");
905  h_ele_EoP -> GetYaxis()-> SetTitle("Events");
906  h_ele_EseedOP -> GetXaxis()-> SetTitle("E_{seed}/P_{vertex}");
907  h_ele_EseedOP -> GetYaxis()-> SetTitle("Events");
908  h_ele_EoPout -> GetXaxis()-> SetTitle("E_{seed}/P_{out}");
909  h_ele_EoPout -> GetYaxis()-> SetTitle("Events");
910  h_ele_EeleOPout -> GetXaxis()-> SetTitle("E_{ele}/P_{out}");
911  h_ele_EeleOPout -> GetYaxis()-> SetTitle("Events");
912  h_ele_EoP_barrel -> GetXaxis()-> SetTitle("E/P_{vertex}");
913  h_ele_EoP_barrel -> GetYaxis()-> SetTitle("Events");
914  h_ele_EseedOP_barrel -> GetXaxis()-> SetTitle("E_{seed}/P_{vertex}");
915  h_ele_EseedOP_barrel -> GetYaxis()-> SetTitle("Events");
916  h_ele_EoPout_barrel -> GetXaxis()-> SetTitle("E_{seed}/P_{out}");
917  h_ele_EoPout_barrel -> GetYaxis()-> SetTitle("Events");
918  h_ele_EeleOPout_barrel -> GetXaxis()-> SetTitle("E_{ele}/P_{out}");
919  h_ele_EeleOPout_barrel -> GetYaxis()-> SetTitle("Events");
920  h_ele_EoP_endcaps -> GetXaxis()-> SetTitle("E/P_{vertex}");
921  h_ele_EoP_endcaps -> GetYaxis()-> SetTitle("Events");
922  h_ele_EseedOP_endcaps -> GetXaxis()-> SetTitle("E_{seed}/P_{vertex}");
923  h_ele_EseedOP_endcaps -> GetYaxis()-> SetTitle("Events");
924  h_ele_EoPout_endcaps -> GetXaxis()-> SetTitle("E_{seed}/P_{out}");
925  h_ele_EoPout_endcaps -> GetYaxis()-> SetTitle("Events");
926  h_ele_EeleOPout_endcaps -> GetXaxis()-> SetTitle("E_{ele}/P_{out}");
927  h_ele_EeleOPout_endcaps -> GetYaxis()-> SetTitle("Events");
928  h_ele_vertexX-> GetXaxis()-> SetTitle("x (cm)");
929  h_ele_vertexX-> GetYaxis()-> SetTitle("Events");
930  h_ele_vertexY-> GetXaxis()-> SetTitle("y (cm)");
931  h_ele_vertexY-> GetYaxis()-> SetTitle("Events");
932  h_ele_vertexZ-> GetXaxis()-> SetTitle("z (cm)");
933  h_ele_vertexZ-> GetYaxis()-> SetTitle("Events");
934  h_ele_vertexTIP-> GetXaxis()-> SetTitle("TIP (cm)");
935  h_ele_vertexTIP-> GetYaxis()-> SetTitle("Events");
936  h_ele_TIP_all-> GetXaxis()-> SetTitle("r_{T} (cm)");
937  h_ele_TIP_all-> GetYaxis()-> SetTitle("Events");
938  h_ele_vertexTIPVsEta-> GetYaxis()-> SetTitle("TIP (cm)");
939  h_ele_vertexTIPVsEta-> GetXaxis()-> SetTitle("#eta");
940  h_ele_vertexTIPVsPhi-> GetYaxis()-> SetTitle("TIP (cm)");
941  h_ele_vertexTIPVsPhi-> GetXaxis()-> SetTitle("#phi (rad)");
942  h_ele_vertexTIPVsPt-> GetYaxis()-> SetTitle("TIP (cm)");
943  h_ele_vertexTIPVsPt-> GetXaxis()-> SetTitle("p_{T} (GeV/c)");
944  h_ele_dEtaSc_propVtx-> GetXaxis()-> SetTitle("#eta_{sc} - #eta_{tr}");
945  h_ele_dEtaSc_propVtx-> GetYaxis()-> SetTitle("Events");
946  h_ele_dEtaCl_propOut-> GetXaxis()-> SetTitle("#eta_{seedcl} - #eta_{tr}");
947  h_ele_dEtaCl_propOut-> GetYaxis()-> SetTitle("Events");
948  h_ele_dEtaEleCl_propOut-> GetXaxis()-> SetTitle("#eta_{elecl} - #eta_{tr}");
949  h_ele_dEtaEleCl_propOut-> GetYaxis()-> SetTitle("Events");
950  h_ele_dPhiSc_propVtx-> GetXaxis()-> SetTitle("#phi_{sc} - #phi_{tr} (rad)");
951  h_ele_dPhiSc_propVtx-> GetYaxis()-> SetTitle("Events");
952  h_ele_dPhiCl_propOut-> GetXaxis()-> SetTitle("#phi_{seedcl} - #phi_{tr} (rad)");
953  h_ele_dPhiCl_propOut-> GetYaxis()-> SetTitle("Events");
954  h_ele_dPhiEleCl_propOut-> GetXaxis()-> SetTitle("#phi_{elecl} - #phi_{tr} (rad)");
955  h_ele_dPhiEleCl_propOut-> GetYaxis()-> SetTitle("Events");
956  h_ele_dEtaSc_propVtx_barrel-> GetXaxis()-> SetTitle("#eta_{sc} - #eta_{tr}");
957  h_ele_dEtaSc_propVtx_barrel-> GetYaxis()-> SetTitle("Events");
958  h_ele_dEtaCl_propOut_barrel-> GetXaxis()-> SetTitle("#eta_{seedcl} - #eta_{tr}");
959  h_ele_dEtaCl_propOut_barrel-> GetYaxis()-> SetTitle("Events");
960  h_ele_dEtaEleCl_propOut_barrel-> GetXaxis()-> SetTitle("#eta_{elecl} - #eta_{tr}");
961  h_ele_dEtaEleCl_propOut_barrel-> GetYaxis()-> SetTitle("Events");
962  h_ele_dPhiSc_propVtx_barrel-> GetXaxis()-> SetTitle("#phi_{sc} - #phi_{tr} (rad)");
963  h_ele_dPhiSc_propVtx_barrel-> GetYaxis()-> SetTitle("Events");
964  h_ele_dPhiCl_propOut_barrel-> GetXaxis()-> SetTitle("#phi_{seedcl} - #phi_{tr} (rad)");
965  h_ele_dPhiCl_propOut_barrel-> GetYaxis()-> SetTitle("Events");
966  h_ele_dPhiEleCl_propOut_barrel-> GetXaxis()-> SetTitle("#phi_{elecl} - #phi_{tr} (rad)");
967  h_ele_dPhiEleCl_propOut_barrel-> GetYaxis()-> SetTitle("Events");
968  h_ele_dEtaSc_propVtx_endcaps-> GetXaxis()-> SetTitle("#eta_{sc} - #eta_{tr}");
969  h_ele_dEtaSc_propVtx_endcaps-> GetYaxis()-> SetTitle("Events");
970  h_ele_dEtaCl_propOut_endcaps-> GetXaxis()-> SetTitle("#eta_{seedcl} - #eta_{tr}");
971  h_ele_dEtaCl_propOut_endcaps-> GetYaxis()-> SetTitle("Events");
972  h_ele_dEtaEleCl_propOut_endcaps-> GetXaxis()-> SetTitle("#eta_{elecl} - #eta_{tr}");
973  h_ele_dEtaEleCl_propOut_endcaps-> GetYaxis()-> SetTitle("Events");
974  h_ele_dPhiSc_propVtx_endcaps-> GetXaxis()-> SetTitle("#phi_{sc} - #phi_{tr} (rad)");
975  h_ele_dPhiSc_propVtx_endcaps-> GetYaxis()-> SetTitle("Events");
976  h_ele_dPhiCl_propOut_endcaps-> GetXaxis()-> SetTitle("#phi_{seedcl} - #phi_{tr} (rad)");
977  h_ele_dPhiCl_propOut_endcaps-> GetYaxis()-> SetTitle("Events");
978  h_ele_dPhiEleCl_propOut_endcaps-> GetXaxis()-> SetTitle("#phi_{elecl} - #phi_{tr} (rad)");
979  h_ele_dPhiEleCl_propOut_endcaps-> GetYaxis()-> SetTitle("Events");
980  h_ele_HoE-> GetXaxis()-> SetTitle("H/E") ;
981  h_ele_HoE-> GetYaxis()-> SetTitle("Events") ;
982  h_ele_HoE_barrel-> GetXaxis()-> SetTitle("H/E") ;
983  h_ele_HoE_barrel-> GetYaxis()-> SetTitle("Events") ;
984  h_ele_HoE_endcaps-> GetXaxis()-> SetTitle("H/E") ;
985  h_ele_HoE_endcaps-> GetYaxis()-> SetTitle("Events") ;
986  h_ele_HoE_fiducial-> GetXaxis()-> SetTitle("H/E") ;
987  h_ele_HoE_fiducial-> GetYaxis()-> SetTitle("Events") ;
988  h_ele_fbrem-> GetXaxis()-> SetTitle("P_{in} - P_{out} / P_{in}");
989  h_ele_fbrem-> GetYaxis()-> SetTitle("Events");
990  h_ele_seed_dphi2_-> GetXaxis()-> SetTitle("#phi_{hit}-#phi_{pred} (rad)") ;
991  h_ele_seed_dphi2_-> GetYaxis()-> SetTitle("Events") ;
992  h_ele_seed_drz2_-> GetXaxis()-> SetTitle("r(z)_{hit}-r(z)_{pred} (cm)") ;
993  h_ele_seed_drz2_-> GetYaxis()-> SetTitle("Events") ;
994  h_ele_seed_subdet2_-> GetXaxis()-> SetTitle("2nd hit subdet Id") ;
995  h_ele_seed_subdet2_-> GetYaxis()-> SetTitle("Events") ;
996  h_ele_classes-> GetXaxis()-> SetTitle("class Id") ;
997  h_ele_classes-> GetYaxis()-> SetTitle("Events") ;
998  h_ele_EoverP_all-> GetXaxis()-> SetTitle("E/P_{vertex}");
999  h_ele_EoverP_all-> GetYaxis()-> SetTitle("Events");
1000  h_ele_EseedOP_all-> GetXaxis()-> SetTitle("E_{seed}/P_{vertex}");
1001  h_ele_EseedOP_all-> GetYaxis()-> SetTitle("Events");
1002  h_ele_EoPout_all -> GetXaxis()-> SetTitle("E_{seed}/P_{out}");
1003  h_ele_EoPout_all-> GetYaxis()-> SetTitle("Events");
1004  h_ele_EeleOPout_all-> GetXaxis()-> SetTitle("E_{ele}/P_{out}");
1005  h_ele_EeleOPout_all-> GetYaxis()-> SetTitle("Events");
1006  h_ele_dEtaSc_propVtx_all-> GetXaxis()-> SetTitle("#eta_{sc} - #eta_{tr}");
1007  h_ele_dEtaSc_propVtx_all-> GetYaxis()-> SetTitle("Events");
1008  h_ele_dPhiSc_propVtx_all-> GetXaxis()-> SetTitle("#phi_{sc} - #phi_{tr} (rad)");
1009  h_ele_dPhiSc_propVtx_all-> GetYaxis()-> SetTitle("Events");
1010  h_ele_dEtaCl_propOut_all-> GetXaxis()-> SetTitle("#eta_{sc} - #eta_{tr}");
1011  h_ele_dEtaCl_propOut_all-> GetYaxis()-> SetTitle("Events");
1012  h_ele_dPhiCl_propOut_all-> GetXaxis()-> SetTitle("#phi_{sc} - #phi_{tr} (rad)");
1013  h_ele_dPhiCl_propOut_all-> GetYaxis()-> SetTitle("Events");
1014  h_ele_HoE_all-> GetXaxis()-> SetTitle("H/E") ;
1015  h_ele_HoE_all-> GetYaxis()-> SetTitle("Events");
1016  h_ele_mee_all-> GetXaxis()-> SetTitle("m_{ee} (GeV/c^{2})");
1017  h_ele_mee_all-> GetYaxis()-> SetTitle("Events");
1018  h_ele_mee_os-> GetXaxis()-> SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
1019  h_ele_mee_os-> GetYaxis()-> SetTitle("Events");
1020  h_ele_mee_os_ebeb-> GetXaxis()-> SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
1021  h_ele_mee_os_ebeb-> GetYaxis()-> SetTitle("Events");
1022  h_ele_mee_os_ebee-> GetXaxis()-> SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
1023  h_ele_mee_os_ebee-> GetYaxis()-> SetTitle("Events");
1024  h_ele_mee_os_eeee-> GetXaxis()-> SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
1025  h_ele_mee_os_eeee-> GetYaxis()-> SetTitle("Events");
1026  h_ele_mee_os_gg-> GetXaxis()-> SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
1027  h_ele_mee_os_gg-> GetYaxis()-> SetTitle("Events");
1028  h_ele_mee_os_gb-> GetXaxis()-> SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
1029  h_ele_mee_os_gb-> GetYaxis()-> SetTitle("Events");
1030  h_ele_mee_os_bb-> GetXaxis()-> SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
1031  h_ele_mee_os_bb-> GetYaxis()-> SetTitle("Events");
1032  h_ele_E2mnE1vsMee_all-> GetXaxis()-> SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
1033  h_ele_E2mnE1vsMee_all-> GetYaxis()-> SetTitle("E2 - E1 (GeV)");
1034  h_ele_E2mnE1vsMee_egeg_all-> GetXaxis()-> SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
1035  h_ele_E2mnE1vsMee_egeg_all-> GetYaxis()-> SetTitle("E2 - E1 (GeV)");
1036  histNum_-> GetXaxis()-> SetTitle("N_{ele}");
1037  histNum_-> GetYaxis()-> SetTitle("Events");
1038  h_ele_fbremVsEta_mode-> GetXaxis()-> SetTitle("#eta");
1039  h_ele_fbremVsEta_mean-> GetXaxis()-> SetTitle("#eta");
1040 
1041 }
1042 
1043 void
1045 
1046  histfile_->cd();
1047 
1048  std::cout << "[GsfElectronMCAnalyzer] efficiency calculation " << std::endl;
1049  // efficiency vs eta
1050  TH1F *h_ele_etaEff = (TH1F*)h_ele_simEta_matched->Clone("h_ele_etaEff");
1051  h_ele_etaEff->Reset();
1052  h_ele_etaEff->Divide(h_ele_simEta_matched,h_simEta,1,1,"b");
1053  h_ele_etaEff->Print();
1054  h_ele_etaEff->GetXaxis()->SetTitle("#eta");
1055  h_ele_etaEff->GetYaxis()->SetTitle("Efficiency");
1056 
1057  // efficiency vs z
1058  TH1F *h_ele_zEff = (TH1F*)h_ele_simZ_matched->Clone("h_ele_zEff");
1059  h_ele_zEff->Reset();
1060  h_ele_zEff->Divide(h_ele_simZ_matched,h_simZ,1,1,"b");
1061  h_ele_zEff->Print();
1062  h_ele_zEff->GetXaxis()->SetTitle("z (cm)");
1063  h_ele_zEff->GetYaxis()->SetTitle("Efficiency");
1064 
1065  // efficiency vs |eta|
1066  TH1F *h_ele_absetaEff = (TH1F*)h_ele_simAbsEta_matched->Clone("h_ele_absetaEff");
1067  h_ele_absetaEff->Reset();
1068  h_ele_absetaEff->Divide(h_ele_simAbsEta_matched,h_simAbsEta,1,1,"b");
1069  h_ele_absetaEff->GetXaxis()->SetTitle("|#eta|");
1070  h_ele_absetaEff->GetYaxis()->SetTitle("Efficiency");
1071 
1072  // efficiency vs pt
1073  TH1F *h_ele_ptEff = (TH1F*)h_ele_simPt_matched->Clone("h_ele_ptEff");
1074  h_ele_ptEff->Reset();
1075  h_ele_ptEff->Divide(h_ele_simPt_matched,h_simPt,1,1,"b");
1076  h_ele_ptEff->GetXaxis()->SetTitle("p_{T} (GeV/c)");
1077  h_ele_ptEff->GetYaxis()->SetTitle("Efficiency");
1078 
1079  // efficiency vs phi
1080  TH1F *h_ele_phiEff = (TH1F*)h_ele_simPhi_matched->Clone("h_ele_phiEff");
1081  h_ele_phiEff->Reset();
1082  h_ele_phiEff->Divide(h_ele_simPhi_matched,h_simPhi,1,1,"b");
1083  h_ele_phiEff->GetXaxis()->SetTitle("#phi (rad)");
1084  h_ele_phiEff->GetYaxis()->SetTitle("Efficiency");
1085 
1086  // efficiency vs pt eta
1087  TH2F *h_ele_ptEtaEff = (TH2F*)h_ele_simPtEta_matched->Clone("h_ele_ptEtaEff");
1088  h_ele_ptEtaEff->Reset();
1089  h_ele_ptEtaEff->Divide(h_ele_simPtEta_matched,h_simPtEta,1,1,"b");
1090  h_ele_ptEtaEff->GetYaxis()->SetTitle("p_{T} (GeV/c)");
1091  h_ele_ptEtaEff->GetXaxis()->SetTitle("#eta");
1092 
1093  std::cout << "[GsfElectronMCAnalyzer] q-misid calculation " << std::endl;
1094  // misid vs eta
1095  TH1F *h_ele_etaQmisid = (TH1F*)h_ele_simEta_matched_qmisid->Clone("h_ele_etaQmisid");
1096  h_ele_etaQmisid->Reset();
1097  h_ele_etaQmisid->Divide(h_ele_simEta_matched_qmisid,h_simEta,1,1,"b");
1098  h_ele_etaQmisid->Print();
1099  h_ele_etaQmisid->GetXaxis()->SetTitle("#eta");
1100  h_ele_etaQmisid->GetYaxis()->SetTitle("q misId");
1101 
1102  // misid vs z
1103  TH1F *h_ele_zQmisid = (TH1F*)h_ele_simZ_matched_qmisid->Clone("h_ele_zQmisid");
1104  h_ele_zQmisid->Reset();
1105  h_ele_zQmisid->Divide(h_ele_simZ_matched_qmisid,h_simZ,1,1,"b");
1106  h_ele_zQmisid->Print();
1107  h_ele_zQmisid->GetXaxis()->SetTitle("z (cm)");
1108  h_ele_zQmisid->GetYaxis()->SetTitle("q misId");
1109 
1110  // misid vs |eta|
1111  TH1F *h_ele_absetaQmisid = (TH1F*)h_ele_simAbsEta_matched_qmisid->Clone("h_ele_absetaQmisid");
1112  h_ele_absetaQmisid->Reset();
1113  h_ele_absetaQmisid->Divide(h_ele_simAbsEta_matched_qmisid,h_simAbsEta,1,1,"b");
1114  h_ele_absetaQmisid->GetXaxis()->SetTitle("|#eta|");
1115  h_ele_absetaQmisid->GetYaxis()->SetTitle("q misId");
1116 
1117  // misid vs pt
1118  TH1F *h_ele_ptQmisid = (TH1F*)h_ele_simPt_matched_qmisid->Clone("h_ele_ptQmisid");
1119  h_ele_ptQmisid->Reset();
1120  h_ele_ptQmisid->Divide(h_ele_simPt_matched_qmisid,h_simPt,1,1,"b");
1121  h_ele_ptQmisid->GetXaxis()->SetTitle("p_{T} (GeV/c)");
1122  h_ele_ptQmisid->GetYaxis()->SetTitle("q misId");
1123 
1124  std::cout << "[GsfElectronMCAnalyzer] all reco electrons " << std::endl;
1125  // rec/gen all electrons
1126  TH1F *h_ele_etaEff_all = (TH1F*)h_ele_vertexEta_all->Clone("h_ele_etaEff_all");
1127  h_ele_etaEff_all->Reset();
1128  h_ele_etaEff_all->Divide(h_ele_vertexEta_all,h_simEta,1,1,"b");
1129  h_ele_etaEff_all->Print();
1130  h_ele_etaEff_all->GetXaxis()->SetTitle("#eta");
1131  h_ele_etaEff_all->GetYaxis()->SetTitle("N_{rec}/N_{gen}");
1132  TH1F *h_ele_ptEff_all = (TH1F*)h_ele_vertexPt_all->Clone("h_ele_ptEff_all");
1133  h_ele_ptEff_all->Reset();
1134  h_ele_ptEff_all->Divide(h_ele_vertexPt_all,h_simPt,1,1,"b");
1135  h_ele_ptEff_all->Print();
1136  h_ele_ptEff_all->GetXaxis()->SetTitle("p_{T} (GeV/c)");
1137  h_ele_ptEff_all->GetYaxis()->SetTitle("N_{rec}/N_{gen}");
1138 
1139  // classes
1140  TH1F *h_ele_eta_goldenFrac = (TH1F*)h_ele_eta_golden->Clone("h_ele_eta_goldenFrac");
1141  h_ele_eta_goldenFrac->Reset();
1142  h_ele_eta_goldenFrac->Divide(h_ele_eta_golden,h_ele_eta,1,1,"b");
1143  h_ele_eta_goldenFrac->GetXaxis()->SetTitle("|#eta|");
1144  h_ele_eta_goldenFrac->GetYaxis()->SetTitle("Fraction of electrons");
1145  h_ele_eta_goldenFrac->SetTitle("fraction of golden electrons vs eta");
1146  TH1F *h_ele_eta_bbremFrac = (TH1F*)h_ele_eta_bbrem->Clone("h_ele_eta_bbremFrac");
1147  h_ele_eta_bbremFrac->Reset();
1148  h_ele_eta_bbremFrac->GetXaxis()->SetTitle("|#eta|");
1149  h_ele_eta_bbremFrac->GetYaxis()->SetTitle("Fraction of electrons");
1150  h_ele_eta_bbremFrac->Divide(h_ele_eta_bbrem,h_ele_eta,1,1,"b");
1151  h_ele_eta_bbremFrac->SetTitle("fraction of big brem electrons vs eta");
1152  TH1F *h_ele_eta_narrowFrac = (TH1F*)h_ele_eta_narrow->Clone("h_ele_eta_narrowFrac");
1153  h_ele_eta_narrowFrac->Reset();
1154  h_ele_eta_narrowFrac->Divide(h_ele_eta_narrow,h_ele_eta,1,1,"b");
1155  h_ele_eta_narrowFrac->GetXaxis()->SetTitle("|#eta|");
1156  h_ele_eta_narrowFrac->GetYaxis()->SetTitle("Fraction of electrons");
1157  h_ele_eta_narrowFrac->SetTitle("fraction of narrow electrons vs eta");
1158  TH1F *h_ele_eta_showerFrac = (TH1F*)h_ele_eta_shower->Clone("h_ele_eta_showerFrac");
1159  h_ele_eta_showerFrac->Reset();
1160  h_ele_eta_showerFrac->Divide(h_ele_eta_shower,h_ele_eta,1,1,"b");
1161  h_ele_eta_showerFrac->GetXaxis()->SetTitle("|#eta|");
1162  h_ele_eta_showerFrac->GetYaxis()->SetTitle("Fraction of electrons");
1163  h_ele_eta_showerFrac->SetTitle("fraction of showering electrons vs eta");
1164 
1165  // fbrem
1166  TH1F *h_ele_xOverX0VsEta = new TH1F( "h_ele_xOverx0VsEta","mean X/X_0 vs eta",nbineta/2,0.0,2.5);
1167  for (int ibin=1;ibin<h_ele_fbremVsEta_mean->GetNbinsX()+1;ibin++) {
1168  double xOverX0 = 0.;
1169  if (h_ele_fbremVsEta_mean->GetBinContent(ibin)>0.) xOverX0 = -log(h_ele_fbremVsEta_mean->GetBinContent(ibin));
1170  h_ele_xOverX0VsEta->SetBinContent(ibin,xOverX0);
1171  }
1172 
1173  //profiles from 2D histos
1174  TProfile *p_ele_PoPtrueVsEta = h_ele_PoPtrueVsEta->ProfileX();
1175  p_ele_PoPtrueVsEta->SetTitle("mean ele momentum / gen momentum vs eta");
1176  p_ele_PoPtrueVsEta->GetXaxis()->SetTitle("#eta");
1177  p_ele_PoPtrueVsEta->GetYaxis()->SetTitle("<P/P_{gen}>");
1178  p_ele_PoPtrueVsEta->Write();
1179  TProfile *p_ele_PoPtrueVsPhi = h_ele_PoPtrueVsPhi->ProfileX();
1180  p_ele_PoPtrueVsPhi->SetTitle("mean ele momentum / gen momentum vs phi");
1181  p_ele_PoPtrueVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1182  p_ele_PoPtrueVsPhi->GetYaxis()->SetTitle("<P/P_{gen}>");
1183  p_ele_PoPtrueVsPhi->Write();
1184  TProfile *p_ele_EoEtruePfVsEg_x = histSclEoEtruePfVsEg->ProfileX();
1185  p_ele_EoEtruePfVsEg_x->SetTitle("mean pflow sc energy / true energy vs e/g sc energy");
1186  p_ele_EoEtruePfVsEg_x->GetXaxis()->SetTitle("E/E_{gen} (e/g)") ;
1187  p_ele_EoEtruePfVsEg_x->GetYaxis()->SetTitle("<E/E_{gen}> (pflow)") ;
1188  p_ele_EoEtruePfVsEg_x->Write();
1189  TProfile *p_ele_EoEtruePfVsEg_y = histSclEoEtruePfVsEg->ProfileY();
1190  p_ele_EoEtruePfVsEg_y->SetTitle("mean e/g sc energy / true energy vs pflow sc energy");
1191  p_ele_EoEtruePfVsEg_y->GetXaxis()->SetTitle("E/E_{gen} (pflow)") ;
1192  p_ele_EoEtruePfVsEg_y->GetYaxis()->SetTitle("<E/E_{gen}> (eg)") ;
1193  p_ele_EoEtruePfVsEg_y->Write();
1194  TProfile *p_ele_EtaMnEtaTrueVsEta = h_ele_EtaMnEtaTrueVsEta->ProfileX();
1195  p_ele_EtaMnEtaTrueVsEta->SetTitle("mean ele eta - gen eta vs eta");
1196  p_ele_EtaMnEtaTrueVsEta->GetXaxis()->SetTitle("#eta");
1197  p_ele_EtaMnEtaTrueVsEta->GetYaxis()->SetTitle("<#eta_{rec} - #eta_{gen}>");
1198  p_ele_EtaMnEtaTrueVsEta->Write();
1199  TProfile *p_ele_EtaMnEtaTrueVsPhi = h_ele_EtaMnEtaTrueVsPhi->ProfileX();
1200  p_ele_EtaMnEtaTrueVsPhi->SetTitle("mean ele eta - gen eta vs phi");
1201  p_ele_EtaMnEtaTrueVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1202  p_ele_EtaMnEtaTrueVsPhi->GetYaxis()->SetTitle("<#eta_{rec} - #eta_{gen}>");
1203  p_ele_EtaMnEtaTrueVsPhi->Write();
1204  TProfile *p_ele_PhiMnPhiTrueVsEta = h_ele_PhiMnPhiTrueVsEta->ProfileX();
1205  p_ele_PhiMnPhiTrueVsEta->SetTitle("mean ele phi - gen phi vs eta");
1206  p_ele_PhiMnPhiTrueVsEta->GetXaxis()->SetTitle("#eta");
1207  p_ele_PhiMnPhiTrueVsEta->GetYaxis()->SetTitle("<#phi_{rec} - #phi_{gen}> (rad)");
1208  p_ele_PhiMnPhiTrueVsEta->Write();
1209  TProfile *p_ele_PhiMnPhiTrueVsPhi = h_ele_PhiMnPhiTrueVsPhi->ProfileX();
1210  p_ele_PhiMnPhiTrueVsPhi->SetTitle("mean ele phi - gen phi vs phi");
1211  p_ele_PhiMnPhiTrueVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1212  p_ele_PhiMnPhiTrueVsPhi->Write();
1213  TProfile *p_ele_vertexPtVsEta = h_ele_vertexPtVsEta->ProfileX();
1214  p_ele_vertexPtVsEta->SetTitle("mean ele transverse momentum vs eta");
1215  p_ele_vertexPtVsEta->GetXaxis()->SetTitle("#eta");
1216  p_ele_vertexPtVsEta->GetYaxis()->SetTitle("<p_{T}> (GeV/c)");
1217  p_ele_vertexPtVsEta->Write();
1218  TProfile *p_ele_vertexPtVsPhi = h_ele_vertexPtVsPhi->ProfileX();
1219  p_ele_vertexPtVsPhi->SetTitle("mean ele transverse momentum vs phi");
1220  p_ele_vertexPtVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1221  p_ele_vertexPtVsPhi->GetYaxis()->SetTitle("<p_{T}> (GeV/c)");
1222  p_ele_vertexPtVsPhi->Write();
1223  TProfile *p_ele_EoPVsEta = h_ele_EoPVsEta->ProfileX();
1224  p_ele_EoPVsEta->SetTitle("mean ele E/p vs eta");
1225  p_ele_EoPVsEta->GetXaxis()->SetTitle("#eta");
1226  p_ele_EoPVsEta->GetYaxis()->SetTitle("<E/P_{vertex}>");
1227  p_ele_EoPVsEta->Write();
1228  TProfile *p_ele_EoPVsPhi = h_ele_EoPVsPhi->ProfileX();
1229  p_ele_EoPVsPhi->SetTitle("mean ele E/p vs phi");
1230  p_ele_EoPVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1231  p_ele_EoPVsPhi->GetYaxis()->SetTitle("<E/P_{vertex}>");
1232  p_ele_EoPVsPhi->Write();
1233  TProfile *p_ele_EoPoutVsEta = h_ele_EoPoutVsEta->ProfileX();
1234  p_ele_EoPoutVsEta->SetTitle("mean ele E/pout vs eta");
1235  p_ele_EoPoutVsEta->GetXaxis()->SetTitle("#eta");
1236  p_ele_EoPoutVsEta->GetYaxis()->SetTitle("<E_{seed}/P_{out}>");
1237  p_ele_EoPoutVsEta->Write();
1238  TProfile *p_ele_EoPoutVsPhi = h_ele_EoPoutVsPhi->ProfileX();
1239  p_ele_EoPoutVsPhi->SetTitle("mean ele E/pout vs phi");
1240  p_ele_EoPoutVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1241  p_ele_EoPoutVsPhi->GetYaxis()->SetTitle("<E_{seed}/P_{out}>");
1242  p_ele_EoPoutVsPhi->Write();
1243  TProfile *p_ele_EeleOPoutVsEta = h_ele_EeleOPoutVsEta->ProfileX();
1244  p_ele_EeleOPoutVsEta->SetTitle("mean ele Eele/pout vs eta");
1245  p_ele_EeleOPoutVsEta->GetXaxis()->SetTitle("#eta");
1246  p_ele_EeleOPoutVsEta->GetYaxis()->SetTitle("<E_{ele}/P_{out}>");
1247  p_ele_EeleOPoutVsEta->Write();
1248  TProfile *p_ele_EeleOPoutVsPhi = h_ele_EeleOPoutVsPhi->ProfileX();
1249  p_ele_EeleOPoutVsPhi->SetTitle("mean ele Eele/pout vs phi");
1250  p_ele_EeleOPoutVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1251  p_ele_EeleOPoutVsPhi->GetYaxis()->SetTitle("<E_{ele}/P_{out}>");
1252  p_ele_EeleOPoutVsPhi->Write();
1253  TProfile *p_ele_HoEVsEta = h_ele_HoEVsEta->ProfileX();
1254  p_ele_HoEVsEta->SetTitle("mean ele H/E vs eta");
1255  p_ele_HoEVsEta->GetXaxis()->SetTitle("#eta");
1256  p_ele_HoEVsEta->GetYaxis()->SetTitle("<H/E>");
1257  p_ele_HoEVsEta->Write();
1258  TProfile *p_ele_HoEVsPhi = h_ele_HoEVsPhi->ProfileX();
1259  p_ele_HoEVsPhi->SetTitle("mean ele H/E vs phi");
1260  p_ele_HoEVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1261  p_ele_HoEVsPhi->GetYaxis()->SetTitle("<H/E>");
1262  p_ele_HoEVsPhi->Write();
1263  TProfile *p_ele_chi2VsEta = h_ele_chi2VsEta->ProfileX();
1264  p_ele_chi2VsEta->SetTitle("mean ele track chi2 vs eta");
1265  p_ele_chi2VsEta->GetXaxis()->SetTitle("#eta");
1266  p_ele_chi2VsEta->GetYaxis()->SetTitle("<#Chi^{2}>");
1267  p_ele_chi2VsEta->Write();
1268  TProfile *p_ele_chi2VsPhi = h_ele_chi2VsPhi->ProfileX();
1269  p_ele_chi2VsPhi->SetTitle("mean ele track chi2 vs phi");
1270  p_ele_chi2VsPhi->GetXaxis()->SetTitle("#phi (rad)");
1271  p_ele_chi2VsPhi->GetYaxis()->SetTitle("<#Chi^{2}>");
1272  p_ele_chi2VsPhi->Write();
1273  TProfile *p_ele_foundHitsVsEta = h_ele_foundHitsVsEta->ProfileX();
1274  p_ele_foundHitsVsEta->SetTitle("mean ele track # found hits vs eta");
1275  p_ele_foundHitsVsEta->GetXaxis()->SetTitle("#eta");
1276  p_ele_foundHitsVsEta->GetYaxis()->SetTitle("<N_{hits}>");
1277  p_ele_foundHitsVsEta->Write();
1278  TProfile *p_ele_foundHitsVsPhi = h_ele_foundHitsVsPhi->ProfileX();
1279  p_ele_foundHitsVsPhi->SetTitle("mean ele track # found hits vs phi");
1280  p_ele_foundHitsVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1281  p_ele_foundHitsVsPhi->GetYaxis()->SetTitle("<N_{hits}>");
1282  p_ele_foundHitsVsPhi->Write();
1283  TProfile *p_ele_lostHitsVsEta = h_ele_lostHitsVsEta->ProfileX();
1284  p_ele_lostHitsVsEta->SetTitle("mean ele track # lost hits vs eta");
1285  p_ele_lostHitsVsEta->GetXaxis()->SetTitle("#eta");
1286  p_ele_lostHitsVsEta->GetYaxis()->SetTitle("<N_{hits}>");
1287  p_ele_lostHitsVsEta->Write();
1288  TProfile *p_ele_lostHitsVsPhi = h_ele_lostHitsVsPhi->ProfileX();
1289  p_ele_lostHitsVsPhi->SetTitle("mean ele track # lost hits vs phi");
1290  p_ele_lostHitsVsPhi->GetXaxis()->SetTitle("#phi (rad)");
1291  p_ele_lostHitsVsPhi->GetYaxis()->SetTitle("<N_{hits}>");
1292  p_ele_lostHitsVsPhi->Write();
1293  TProfile *p_ele_vertexTIPVsEta = h_ele_vertexTIPVsEta->ProfileX();
1294  p_ele_vertexTIPVsEta->SetTitle("mean tip (wrt gen vtx) vs eta");
1295  p_ele_vertexTIPVsEta->GetXaxis()->SetTitle("#eta");
1296  p_ele_vertexTIPVsEta->GetYaxis()->SetTitle("<TIP> (cm)");
1297  p_ele_vertexTIPVsEta->Write();
1298  TProfile *p_ele_vertexTIPVsPhi = h_ele_vertexTIPVsPhi->ProfileX();
1299  p_ele_vertexTIPVsPhi->SetTitle("mean tip (wrt gen vtx) vs phi");
1300  p_ele_vertexTIPVsPhi->GetXaxis()->SetTitle("#phi");
1301  p_ele_vertexTIPVsPhi->GetYaxis()->SetTitle("<TIP> (cm)");
1302  p_ele_vertexTIPVsPhi->Write();
1303  TProfile *p_ele_vertexTIPVsPt = h_ele_vertexTIPVsPt->ProfileX();
1304  p_ele_vertexTIPVsPt->SetTitle("mean tip (wrt gen vtx) vs phi");
1305  p_ele_vertexTIPVsPt->GetXaxis()->SetTitle("p_{T} (GeV/c)");
1306  p_ele_vertexTIPVsPt->GetYaxis()->SetTitle("<TIP> (cm)");
1307  p_ele_vertexTIPVsPt->Write();
1308 
1309  // mc truth
1310  h_mcNum->Write();
1311  h_eleNum->Write();
1312  h_gamNum->Write();
1313 
1314  // rec event
1315  histNum_->Write();
1316 
1317  // mc
1318  h_simEta->Write();
1319  h_simAbsEta->Write();
1320  h_simP->Write();
1321  h_simPt->Write();
1322  h_simZ->Write();
1323  h_simPhi->Write();
1324  h_simPtEta->Write();
1325 
1326  // all electrons
1327  h_ele_EoverP_all->Write();
1328  h_ele_EseedOP_all->Write();
1329  h_ele_EoPout_all->Write();
1330  h_ele_EeleOPout_all ->Write();
1331  h_ele_dEtaSc_propVtx_all->Write();
1332  h_ele_dPhiSc_propVtx_all->Write();
1333  h_ele_dEtaCl_propOut_all ->Write();
1334  h_ele_dPhiCl_propOut_all->Write();
1335  h_ele_HoE_all->Write();
1336  h_ele_TIP_all->Write();
1337  h_ele_vertexPt_all->Write();
1338  h_ele_Et_all->Write();
1339  h_ele_vertexEta_all->Write();
1340  h_ele_mee_all->Write();
1341  h_ele_mee_os->Write();
1342  h_ele_mee_os_ebeb->Write();
1343  h_ele_mee_os_ebee->Write();
1344  h_ele_mee_os_eeee->Write();
1345  h_ele_mee_os_gg->Write();
1346  h_ele_mee_os_gb->Write();
1347  h_ele_mee_os_bb->Write();
1348  h_ele_E2mnE1vsMee_all ->Write();
1349  h_ele_E2mnE1vsMee_egeg_all->Write();
1350 
1351  // charge ID
1352  h_ele_charge->Write();
1353  h_ele_simEta_matched_qmisid->Write();
1354  h_ele_simAbsEta_matched_qmisid->Write();
1355  h_ele_simPt_matched_qmisid->Write();
1356  h_ele_simPhi_matched_qmisid->Write();
1357  h_ele_simZ_matched_qmisid->Write();
1358 
1359  // matched electrons
1360  h_ele_vertexP->Write();
1361  h_ele_vertexPt->Write();
1362  h_ele_Et->Write();
1363  h_ele_vertexPtVsEta->Write();
1364  h_ele_vertexPtVsPhi->Write();
1365  h_ele_simPt_matched->Write();
1366  h_ele_vertexEta->Write();
1367  h_ele_vertexEtaVsPhi->Write();
1368  h_ele_simAbsEta_matched->Write();
1369  h_ele_simEta_matched->Write();
1370  h_ele_simPhi_matched->Write();
1371  h_ele_simPtEta_matched->Write();
1372  h_ele_vertexPhi->Write();
1373  h_ele_vertexX->Write();
1374  h_ele_vertexY ->Write();
1375  h_ele_vertexZ->Write();
1376  h_ele_vertexTIP->Write();
1377  h_ele_simZ_matched->Write();
1378  h_ele_vertexTIPVsEta->Write();
1379  h_ele_vertexTIPVsPhi->Write();
1380  h_ele_vertexTIPVsPt->Write();
1381  h_ele_PoPtrue->Write();
1382  h_ele_PoPtrueVsEta ->Write();
1383  h_ele_PoPtrueVsPhi->Write();
1384  h_ele_PoPtrueVsPt->Write();
1385  h_ele_PoPtrue_barrel ->Write();
1386  h_ele_PoPtrue_endcaps->Write();
1387  h_ele_PoPtrue_golden_barrel ->Write();
1388  h_ele_PoPtrue_golden_endcaps->Write();
1389  h_ele_PoPtrue_showering_barrel ->Write();
1390  h_ele_PoPtrue_showering_endcaps->Write();
1391  h_ele_PtoPttrue->Write();
1392  h_ele_PtoPttrue_barrel ->Write();
1393  h_ele_PtoPttrue_endcaps->Write();
1394  h_ele_ChargeMnChargeTrue->Write();
1395  h_ele_EtaMnEtaTrue->Write();
1396  h_ele_EtaMnEtaTrue_barrel->Write();
1397  h_ele_EtaMnEtaTrue_endcaps->Write();
1398  h_ele_EtaMnEtaTrueVsEta ->Write();
1399  h_ele_EtaMnEtaTrueVsPhi->Write();
1400  h_ele_EtaMnEtaTrueVsPt->Write();
1401  h_ele_PhiMnPhiTrue ->Write();
1402  h_ele_PhiMnPhiTrue_barrel ->Write();
1403  h_ele_PhiMnPhiTrue_endcaps ->Write();
1404  h_ele_PhiMnPhiTrue2 ->Write();
1405  h_ele_PhiMnPhiTrueVsEta->Write();
1406  h_ele_PhiMnPhiTrueVsPhi->Write();
1407  h_ele_PhiMnPhiTrueVsPt->Write();
1408 
1409  // matched electron, superclusters
1410  histSclEn_->Write();
1411  histSclEoEtrue_barrel->Write();
1412  histSclEoEtrue_endcaps->Write();
1413  histSclEoEtrue_barrel_eg->Write();
1414  histSclEoEtrue_endcaps_eg->Write();
1415  histSclEoEtrue_barrel_etagap->Write();
1416  histSclEoEtrue_barrel_phigap->Write();
1417  histSclEoEtrue_ebeegap->Write();
1418  histSclEoEtrue_endcaps->Write();
1419  histSclEoEtrue_endcaps_deegap->Write();
1420  histSclEoEtrue_endcaps_ringgap->Write();
1421  histSclEoEtruePfVsEg->Write();
1422  histSclEoEtrue_barrel_new->Write();
1423  histSclEoEtrue_endcaps_new->Write();
1424  histSclEoEtrue_barrel_eg_new->Write();
1425  histSclEoEtrue_endcaps_eg_new->Write();
1426  histSclEoEtrue_barrel_etagap_new->Write();
1427  histSclEoEtrue_barrel_phigap_new->Write();
1428  histSclEoEtrue_ebeegap_new->Write();
1429  histSclEoEtrue_endcaps_new->Write();
1430  histSclEoEtrue_endcaps_deegap_new->Write();
1431  histSclEoEtrue_endcaps_ringgap_new->Write();
1432  histSclEoEtruePfVsEg->Write();
1433  histSclEt_->Write();
1434  histSclEtVsEta_->Write();
1435  histSclEtVsPhi_->Write();
1436  histSclEtaVsPhi_ ->Write();
1437  histSclEta_->Write();
1438  histSclPhi_->Write();
1439  histSclSigEtaEta_->Write();
1440  histSclSigEtaEta_barrel_->Write();
1441  histSclSigEtaEta_endcaps_->Write();
1442  histSclSigIEtaIEta_->Write();
1443  histSclSigIEtaIEta_barrel_->Write();
1444  histSclSigIEtaIEta_endcaps_->Write();
1445  histSclE1x5_->Write();
1446  histSclE1x5_barrel_->Write();
1447  histSclE1x5_endcaps_->Write();
1448  histSclE2x5max_->Write();
1449  histSclE2x5max_barrel_->Write();
1450  histSclE2x5max_endcaps_->Write();
1451  histSclE5x5_->Write();
1452  histSclE5x5_barrel_->Write();
1453  histSclE5x5_endcaps_->Write();
1454  histSclSigEtaEta_eg_->Write();
1455  histSclSigEtaEta_eg_barrel_->Write();
1456  histSclSigEtaEta_eg_endcaps_->Write();
1457  histSclSigIEtaIEta_eg_->Write();
1458  histSclSigIEtaIEta_eg_barrel_->Write();
1459  histSclSigIEtaIEta_eg_endcaps_->Write();
1460  histSclE1x5_eg_->Write();
1461  histSclE1x5_eg_barrel_->Write();
1462  histSclE1x5_eg_endcaps_->Write();
1463  histSclE2x5max_eg_->Write();
1464  histSclE2x5max_eg_barrel_->Write();
1465  histSclE2x5max_eg_endcaps_->Write();
1466  histSclE5x5_eg_->Write();
1467  histSclE5x5_eg_barrel_->Write();
1468  histSclE5x5_eg_endcaps_->Write();
1469 
1470  // matched electron, gsf tracks
1471  h_ele_ambiguousTracks->Write();
1472  h_ele_ambiguousTracksVsEta->Write();
1473  h_ele_ambiguousTracksVsPhi->Write();
1474  h_ele_ambiguousTracksVsPt->Write();
1475  h_ele_foundHits->Write();
1476  h_ele_foundHits_barrel->Write();
1477  h_ele_foundHits_endcaps->Write();
1478  h_ele_foundHitsVsEta->Write();
1479  h_ele_foundHitsVsPhi->Write();
1480  h_ele_foundHitsVsPt->Write();
1481  h_ele_lostHits->Write();
1482  h_ele_lostHits_barrel->Write();
1483  h_ele_lostHits_endcaps->Write();
1484  h_ele_lostHitsVsEta->Write();
1485  h_ele_lostHitsVsPhi->Write();
1486  h_ele_lostHitsVsPt->Write();
1487  h_ele_chi2 ->Write();
1488  h_ele_chi2_barrel ->Write();
1489  h_ele_chi2_endcaps ->Write();
1490  h_ele_chi2VsEta ->Write();
1491  h_ele_chi2VsPhi ->Write();
1492  h_ele_chi2VsPt->Write();
1493  h_ele_PinMnPout->Write();
1494  h_ele_PinMnPout_mode->Write();
1495  h_ele_PinMnPoutVsEta_mode->Write();
1496  h_ele_PinMnPoutVsPhi_mode->Write();
1497  h_ele_PinMnPoutVsPt_mode->Write();
1498  h_ele_PinMnPoutVsE_mode->Write();
1499  h_ele_PinMnPoutVsChi2_mode->Write();
1500  h_ele_outerP ->Write();
1501  h_ele_outerP_mode->Write();
1502  h_ele_outerPVsEta_mode->Write();
1503  h_ele_outerPt->Write();
1504  h_ele_outerPt_mode ->Write();
1505  h_ele_outerPtVsEta_mode->Write();
1506  h_ele_outerPtVsPhi_mode->Write();
1507  h_ele_outerPtVsPt_mode->Write();
1508 
1509  // matched electrons, matching
1510  h_ele_EoP ->Write();
1511  h_ele_EoP_eg ->Write();
1512  h_ele_EoP_barrel ->Write();
1513  h_ele_EoP_eg_barrel ->Write();
1514  h_ele_EoP_endcaps ->Write();
1515  h_ele_EoP_eg_endcaps ->Write();
1516  h_ele_EoPVsEta ->Write();
1517  h_ele_EoPVsPhi->Write();
1518  h_ele_EoPVsE->Write();
1519  h_ele_EseedOP ->Write();
1520  h_ele_EseedOP_eg ->Write();
1521  h_ele_EseedOP_barrel ->Write();
1522  h_ele_EseedOP_eg_barrel ->Write();
1523  h_ele_EseedOP_endcaps ->Write();
1524  h_ele_EseedOP_eg_endcaps ->Write();
1525  h_ele_EseedOPVsEta ->Write();
1526  h_ele_EseedOPVsPhi->Write();
1527  h_ele_EseedOPVsE->Write();
1528  h_ele_EoPout->Write();
1529  h_ele_EoPout_eg->Write();
1530  h_ele_EoPout_barrel->Write();
1531  h_ele_EoPout_eg_barrel->Write();
1532  h_ele_EoPout_endcaps->Write();
1533  h_ele_EoPout_eg_endcaps->Write();
1534  h_ele_EoPoutVsEta->Write();
1535  h_ele_EoPoutVsPhi->Write();
1536  h_ele_EoPoutVsE ->Write();
1537  h_ele_EeleOPout->Write();
1538  h_ele_EeleOPout_eg->Write();
1539  h_ele_EeleOPout_barrel->Write();
1540  h_ele_EeleOPout_eg_barrel->Write();
1541  h_ele_EeleOPout_endcaps->Write();
1542  h_ele_EeleOPout_eg_endcaps->Write();
1543  h_ele_EeleOPoutVsEta->Write();
1544  h_ele_EeleOPoutVsPhi->Write();
1545  h_ele_EeleOPoutVsE ->Write();
1546  h_ele_dEtaSc_propVtx->Write();
1547  h_ele_dEtaSc_propVtx_eg->Write();
1548  h_ele_dEtaSc_propVtx_barrel->Write();
1549  h_ele_dEtaSc_propVtx_eg_barrel->Write();
1550  h_ele_dEtaSc_propVtx_endcaps->Write();
1551  h_ele_dEtaSc_propVtx_eg_endcaps->Write();
1552  h_ele_dEtaScVsEta_propVtx->Write();
1553  h_ele_dEtaScVsPhi_propVtx->Write();
1554  h_ele_dEtaScVsPt_propVtx ->Write();
1555  h_ele_dPhiSc_propVtx->Write();
1556  h_ele_dPhiSc_propVtx_eg->Write();
1557  h_ele_dPhiSc_propVtx_barrel->Write();
1558  h_ele_dPhiSc_propVtx_eg_barrel->Write();
1559  h_ele_dPhiSc_propVtx_endcaps->Write();
1560  h_ele_dPhiSc_propVtx_eg_endcaps->Write();
1561  h_ele_dPhiScVsEta_propVtx ->Write();
1562  h_ele_dPhiScVsPhi_propVtx->Write();
1563  h_ele_dPhiScVsPt_propVtx->Write();
1564  h_ele_dEtaCl_propOut->Write();
1565  h_ele_dEtaCl_propOut_eg->Write();
1566  h_ele_dEtaCl_propOut_barrel->Write();
1567  h_ele_dEtaCl_propOut_eg_barrel->Write();
1568  h_ele_dEtaCl_propOut_endcaps->Write();
1569  h_ele_dEtaCl_propOut_eg_endcaps->Write();
1570  h_ele_dEtaClVsEta_propOut->Write();
1571  h_ele_dEtaClVsPhi_propOut->Write();
1572  h_ele_dEtaClVsPt_propOut->Write();
1573  h_ele_dPhiCl_propOut->Write();
1574  h_ele_dPhiCl_propOut_eg->Write();
1575  h_ele_dPhiCl_propOut_barrel->Write();
1576  h_ele_dPhiCl_propOut_eg_barrel->Write();
1577  h_ele_dPhiCl_propOut_endcaps->Write();
1578  h_ele_dPhiCl_propOut_eg_endcaps->Write();
1579  h_ele_dPhiClVsEta_propOut->Write();
1580  h_ele_dPhiClVsPhi_propOut->Write();
1581  h_ele_dPhiClVsPt_propOut->Write();
1582  h_ele_dEtaEleCl_propOut->Write();
1583  h_ele_dEtaEleCl_propOut_eg->Write();
1584  h_ele_dEtaEleCl_propOut_barrel->Write();
1585  h_ele_dEtaEleCl_propOut_eg_barrel->Write();
1586  h_ele_dEtaEleCl_propOut_endcaps->Write();
1587  h_ele_dEtaEleCl_propOut_eg_endcaps->Write();
1588  h_ele_dEtaEleClVsEta_propOut->Write();
1589  h_ele_dEtaEleClVsPhi_propOut->Write();
1590  h_ele_dEtaEleClVsPt_propOut->Write();
1591  h_ele_dPhiEleCl_propOut->Write();
1592  h_ele_dPhiEleCl_propOut_eg->Write();
1593  h_ele_dPhiEleCl_propOut_barrel->Write();
1594  h_ele_dPhiEleCl_propOut_eg_barrel->Write();
1595  h_ele_dPhiEleCl_propOut_endcaps->Write();
1596  h_ele_dPhiEleCl_propOut_eg_endcaps->Write();
1597  h_ele_dPhiEleClVsEta_propOut->Write();
1598  h_ele_dPhiEleClVsPhi_propOut->Write();
1599  h_ele_dPhiEleClVsPt_propOut->Write();
1600  h_ele_HoE->Write();
1601  h_ele_HoE_eg->Write();
1602  h_ele_HoE_barrel->Write();
1603  h_ele_HoE_eg_barrel->Write();
1604  h_ele_HoE_endcaps->Write();
1605  h_ele_HoE_eg_endcaps->Write();
1606  h_ele_HoE_fiducial->Write();
1607  h_ele_HoEVsEta->Write();
1608  h_ele_HoEVsPhi->Write();
1609  h_ele_HoEVsE->Write();
1610 
1611  h_ele_seed_dphi2_->Write();
1612  h_ele_seed_subdet2_->Write();
1613  TProfile *p_ele_seed_dphi2VsEta_ = h_ele_seed_dphi2VsEta_->ProfileX();
1614  p_ele_seed_dphi2VsEta_->SetTitle("mean ele seed dphi 2nd layer vs eta");
1615  p_ele_seed_dphi2VsEta_->GetXaxis()->SetTitle("#eta");
1616  p_ele_seed_dphi2VsEta_->GetYaxis()->SetTitle("<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)");
1617  p_ele_seed_dphi2VsEta_->SetMinimum(-0.004);
1618  p_ele_seed_dphi2VsEta_->SetMaximum(0.004);
1619  p_ele_seed_dphi2VsEta_->Write();
1620  TProfile *p_ele_seed_dphi2VsPt_ = h_ele_seed_dphi2VsPt_->ProfileX();
1621  p_ele_seed_dphi2VsPt_->SetTitle("mean ele seed dphi 2nd layer vs pt");
1622  p_ele_seed_dphi2VsPt_->GetXaxis()->SetTitle("p_{T} (GeV/c)");
1623  p_ele_seed_dphi2VsPt_->GetYaxis()->SetTitle("<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)");
1624  p_ele_seed_dphi2VsPt_->SetMinimum(-0.004);
1625  p_ele_seed_dphi2VsPt_->SetMaximum(0.004);
1626  p_ele_seed_dphi2VsPt_->Write();
1627  h_ele_seed_drz2_->Write();
1628  TProfile *p_ele_seed_drz2VsEta_ = h_ele_seed_drz2VsEta_->ProfileX();
1629  p_ele_seed_drz2VsEta_->SetTitle("mean ele seed dr(dz) 2nd layer vs eta");
1630  p_ele_seed_drz2VsEta_->GetXaxis()->SetTitle("#eta");
1631  p_ele_seed_drz2VsEta_->GetYaxis()->SetTitle("<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)");
1632  p_ele_seed_drz2VsEta_->SetMinimum(-0.15);
1633  p_ele_seed_drz2VsEta_->SetMaximum(0.15);
1634  p_ele_seed_drz2VsEta_->Write();
1635  TProfile *p_ele_seed_drz2VsPt_ = h_ele_seed_drz2VsPt_->ProfileX();
1636  p_ele_seed_drz2VsPt_->SetTitle("mean ele seed dr(dz) 2nd layer vs pt");
1637  p_ele_seed_drz2VsPt_->GetXaxis()->SetTitle("p_{T} (GeV/c)");
1638  p_ele_seed_drz2VsPt_->GetYaxis()->SetTitle("<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)");
1639  p_ele_seed_drz2VsPt_->SetMinimum(-0.15);
1640  p_ele_seed_drz2VsPt_->SetMaximum(0.15);
1641  p_ele_seed_drz2VsPt_->Write();
1642 
1643  // classes
1644  h_ele_classes->Write();
1645  h_ele_eta->Write();
1646  h_ele_eta_golden->Write();
1647  h_ele_eta_bbrem->Write();
1648  h_ele_eta_narrow->Write();
1649  h_ele_eta_shower->Write();
1650  h_ele_PinVsPoutGolden_mode->Write();
1651  h_ele_PinVsPoutShowering_mode->Write();
1652  h_ele_PinVsPoutGolden_mean->Write();
1653  h_ele_PinVsPoutShowering_mean->Write();
1654  h_ele_PtinVsPtoutGolden_mode->Write();
1655  h_ele_PtinVsPtoutShowering_mode->Write();
1656  h_ele_PtinVsPtoutGolden_mean->Write();
1657  h_ele_PtinVsPtoutShowering_mean->Write();
1658  histSclEoEtrueGolden_barrel->Write();
1659  histSclEoEtrueGolden_endcaps->Write();
1660  histSclEoEtrueShowering_barrel->Write();
1661  histSclEoEtrueShowering_endcaps->Write();
1662 
1663  // fbrem
1664  h_ele_fbrem->Write();
1665  h_ele_fbrem_eg->Write();
1666  h_ele_fbremVsEta_mode->GetXaxis()->SetTitle("#eta");
1667  h_ele_fbremVsEta_mode->GetYaxis()->SetTitle("<P_{in} - P_{out} / P_{in}>");
1668  h_ele_fbremVsEta_mode->Write();
1669  h_ele_fbremVsEta_mean->GetXaxis()->SetTitle("#eta");
1670  h_ele_fbremVsEta_mean->GetYaxis()->SetTitle("<P_{in} - P_{out} / P_{in}>");
1671  h_ele_fbremVsEta_mean->Write();
1672  h_ele_eta_goldenFrac->Write();
1673  h_ele_eta_bbremFrac->Write();
1674  h_ele_eta_narrowFrac->Write();
1675  h_ele_eta_showerFrac->Write();
1676  h_ele_xOverX0VsEta->Write();
1677 
1678  // efficiencies
1679  h_ele_etaEff->Write();
1680  h_ele_zEff->Write();
1681  h_ele_phiEff->Write();
1682  h_ele_absetaEff->Write();
1683  h_ele_ptEff->Write();
1684  h_ele_ptEtaEff->Write();
1685  h_ele_etaEff_all->Write();
1686  h_ele_ptEff_all->Write();
1687 
1688  // q misid
1689  h_ele_etaQmisid->Write();
1690  h_ele_zQmisid->Write();
1691  h_ele_absetaQmisid->Write();
1692  h_ele_ptQmisid->Write();
1693 
1694  // e/g et pflow electrons
1695  h_ele_mva->Write();
1696  h_ele_mva_eg->Write();
1697  h_ele_provenance->Write();
1698 
1699  // isolation
1700  h_ele_tkSumPt_dr03->GetXaxis()->SetTitle("TkIsoSum, cone 0.3 (GeV/c)");
1701  h_ele_tkSumPt_dr03->GetYaxis()->SetTitle("Events");
1702  h_ele_tkSumPt_dr03->Write();
1703  h_ele_ecalRecHitSumEt_dr03->GetXaxis()->SetTitle("EcalIsoSum, cone 0.3 (GeV)");
1704  h_ele_ecalRecHitSumEt_dr03->GetYaxis()->SetTitle("Events");
1705  h_ele_ecalRecHitSumEt_dr03->Write();
1706  h_ele_hcalDepth1TowerSumEt_dr03->GetXaxis()->SetTitle("Hcal1IsoSum, cone 0.3 (GeV)");
1707  h_ele_hcalDepth1TowerSumEt_dr03->GetYaxis()->SetTitle("Events");
1708  h_ele_hcalDepth1TowerSumEt_dr03->Write();
1709  h_ele_hcalDepth2TowerSumEt_dr03->GetXaxis()->SetTitle("Hcal2IsoSum, cone 0.3 (GeV)");
1710  h_ele_hcalDepth2TowerSumEt_dr03->GetYaxis()->SetTitle("Events");
1711  h_ele_hcalDepth2TowerSumEt_dr03->Write();
1712  h_ele_tkSumPt_dr04->GetXaxis()->SetTitle("TkIsoSum, cone 0.4 (GeV/c)");
1713  h_ele_tkSumPt_dr04->GetYaxis()->SetTitle("Events");
1714  h_ele_tkSumPt_dr04->Write();
1715  h_ele_ecalRecHitSumEt_dr04->GetXaxis()->SetTitle("EcalIsoSum, cone 0.4 (GeV)");
1716  h_ele_ecalRecHitSumEt_dr04->GetYaxis()->SetTitle("Events");
1717  h_ele_ecalRecHitSumEt_dr04->Write();
1718  h_ele_hcalDepth1TowerSumEt_dr04->GetXaxis()->SetTitle("Hcal1IsoSum, cone 0.4 (GeV)");
1719  h_ele_hcalDepth1TowerSumEt_dr04->GetYaxis()->SetTitle("Events");
1720  h_ele_hcalDepth1TowerSumEt_dr04->Write();
1721  h_ele_hcalDepth2TowerSumEt_dr04->GetXaxis()->SetTitle("Hcal2IsoSum, cone 0.4 (GeV)");
1722  h_ele_hcalDepth2TowerSumEt_dr04->GetYaxis()->SetTitle("Events");
1723  h_ele_hcalDepth2TowerSumEt_dr04->Write();
1724 
1725 }
1726 
1728 {
1729 
1730  // do anything here that needs to be done at desctruction time
1731  // (e.g. close files, deallocate resources etc.)
1732  histfile_->Write();
1733  histfile_->Close();
1734 
1735 }
1736 
1737 
1738 //=========================================================================
1739 // Main method
1740 //=========================================================================
1741 
1742 void
1744 {
1745  std::cout << "analyzing new event " << std::endl;
1746  // get electrons
1747 
1749  iEvent.getByLabel(electronCollection_,gsfElectrons);
1750  edm::LogInfo("")<<"\n\n =================> Treating event "<<iEvent.id()<<" Number of electrons "<<gsfElectrons.product()->size();
1751 
1753  iEvent.getByLabel(mcTruthCollection_, genParticles);
1754 
1755  histNum_->Fill((*gsfElectrons).size());
1756 
1757  // all rec electrons
1758  for (reco::GsfElectronCollection::const_iterator gsfIter=gsfElectrons->begin();
1759  gsfIter!=gsfElectrons->end(); gsfIter++){
1760  // preselect electrons
1761  if (gsfIter->pt()>maxPt_ || std::abs(gsfIter->eta())>maxAbsEta_) continue;
1762  h_ele_EoverP_all -> Fill( gsfIter->eSuperClusterOverP() );
1763  h_ele_EseedOP_all -> Fill( gsfIter->eSeedClusterOverP() );
1764  h_ele_EoPout_all -> Fill( gsfIter->eSeedClusterOverPout() );
1765  h_ele_EeleOPout_all -> Fill( gsfIter->eEleClusterOverPout() );
1766  h_ele_dEtaSc_propVtx_all -> Fill(gsfIter->deltaEtaSuperClusterTrackAtVtx());
1767  h_ele_dPhiSc_propVtx_all -> Fill(gsfIter->deltaPhiSuperClusterTrackAtVtx());
1768  h_ele_dEtaCl_propOut_all -> Fill(gsfIter->deltaEtaSeedClusterTrackAtCalo());
1769  h_ele_dPhiCl_propOut_all -> Fill(gsfIter->deltaPhiSeedClusterTrackAtCalo());
1770  h_ele_HoE_all -> Fill( gsfIter->hadronicOverEm() );
1771  double d = gsfIter->vertex().x()*gsfIter->vertex().x()+gsfIter->vertex().y()*gsfIter->vertex().y();
1772  h_ele_TIP_all -> Fill( sqrt(d) );
1773  h_ele_vertexEta_all -> Fill( gsfIter->eta() );
1774  h_ele_vertexPt_all -> Fill( gsfIter->pt() );
1775  h_ele_Et_all -> Fill( gsfIter->superCluster()->energy()/cosh(gsfIter->superCluster()->eta()));
1776  float enrj1=gsfIter->superCluster()->energy();
1777  // mee
1778  for (reco::GsfElectronCollection::const_iterator gsfIter2=gsfIter+1;
1779  gsfIter2!=gsfElectrons->end(); gsfIter2++){
1780  math::XYZTLorentzVector p12 = (*gsfIter).p4()+(*gsfIter2).p4();
1781  float mee2 = p12.Dot(p12);
1782  float enrj2=gsfIter2->superCluster()->energy();
1783  h_ele_mee_all -> Fill(sqrt(mee2));
1784  h_ele_E2mnE1vsMee_all->Fill(sqrt(mee2),enrj2-enrj1);
1785  if (gsfIter->ecalDrivenSeed() && gsfIter2->ecalDrivenSeed()) h_ele_E2mnE1vsMee_egeg_all->Fill(sqrt(mee2),enrj2-enrj1);
1786  if (gsfIter->charge()*gsfIter2->charge()<0.) {
1787  h_ele_mee_os -> Fill(sqrt(mee2));
1788  if (gsfIter->isEB() && gsfIter2->isEB()) h_ele_mee_os_ebeb -> Fill(sqrt(mee2));
1789  if ((gsfIter->isEB() && gsfIter2->isEE()) || (gsfIter->isEE() && gsfIter2->isEB())) h_ele_mee_os_ebee -> Fill(sqrt(mee2));
1790  if (gsfIter->isEE() && gsfIter2->isEE()) h_ele_mee_os_eeee -> Fill(sqrt(mee2));
1791  if ((gsfIter->classification()==GsfElectron::GOLDEN && gsfIter2->classification()==GsfElectron::GOLDEN) ||
1792  (gsfIter->classification()==GsfElectron::GOLDEN && gsfIter2->classification()==GsfElectron::BIGBREM) ||
1793  //(gsfIter->classification()==GsfElectron::GOLDEN && gsfIter2->classification()==GsfElectron::OLDNARROW) ||
1794  (gsfIter->classification()==GsfElectron::BIGBREM && gsfIter2->classification()==GsfElectron::GOLDEN) ||
1795  (gsfIter->classification()==GsfElectron::BIGBREM && gsfIter2->classification()==GsfElectron::BIGBREM)/* ||
1796  (gsfIter->classification()==GsfElectron::BIGBREM && gsfIter2->classification()==GsfElectron::OLDNARROW) ||
1797  (gsfIter->classification()==GsfElectron::OLDNARROW && gsfIter2->classification()==GsfElectron::GOLDEN) ||
1798  (gsfIter->classification()==GsfElectron::OLDNARROW && gsfIter2->classification()==GsfElectron::BIGBREM) ||
1799  (gsfIter->classification()==GsfElectron::OLDNARROW && gsfIter2->classification()==GsfElectron::OLDNARROW)*/ )
1800  { h_ele_mee_os_gg -> Fill(sqrt(mee2));}
1801  else if (
1802  (gsfIter->classification()==GsfElectron::SHOWERING && gsfIter2->classification()==GsfElectron::SHOWERING) ||
1803  (gsfIter->classification()==GsfElectron::SHOWERING && gsfIter2->isGap()) ||
1804  (gsfIter->isGap() && gsfIter2->classification()==GsfElectron::SHOWERING) ||
1805  (gsfIter->isGap() && gsfIter2->isGap()))
1806  { h_ele_mee_os_bb -> Fill(sqrt(mee2));}
1807  else
1808  { h_ele_mee_os_gb -> Fill(sqrt(mee2));}
1809  }
1810  }
1811  }
1812 
1813  int mcNum=0, gamNum=0, eleNum=0;
1814  bool matchingID, matchingMotherID;
1815 
1816  // charge mis-ID
1817  for (reco::GenParticleCollection::const_iterator mcIter=genParticles->begin(); mcIter != genParticles->end(); mcIter++ ) {
1818 
1819  // select requested matching gen particle
1820  matchingID=false;
1821  for (unsigned int i=0; i<matchingIDs_.size(); i++)
1822  if ( mcIter->pdgId() == matchingIDs_[i] ) matchingID=true;
1823 
1824  if (matchingID) {
1825 
1826  // select requested mother matching gen particle
1827  // always include single particle with no mother
1828  const Candidate * mother = mcIter->mother();
1829  matchingMotherID=false;
1830  for (unsigned int i=0; i<matchingMotherIDs_.size(); i++)
1831  if ((mother == 0) || ((mother != 0) && mother->pdgId() == matchingMotherIDs_[i]) ) matchingMotherID=true;
1832 
1833  if (matchingMotherID) {
1834 
1835  if (mcIter->pt()> maxPt_ || std::abs(mcIter->eta())> maxAbsEta_) continue;
1836 
1837  // suppress the endcaps
1838  //if (std::abs(mcIter->eta()) > 1.5) continue;
1839  // select central z
1840  //if ( std::abs(mcIter->production_vertex()->position().z())>50.) continue;
1841 
1842  // looking for the best matching gsf electron
1843  bool okGsfFound = false;
1844  double gsfOkRatio = 999999.;
1845 
1846  // find best matched electron
1847  reco::GsfElectron bestGsfElectron;
1848  for (reco::GsfElectronCollection::const_iterator gsfIter=gsfElectrons->begin();
1849  gsfIter!=gsfElectrons->end(); gsfIter++){
1850 
1851  double dphi = gsfIter->phi()-mcIter->phi();
1852  if (std::abs(dphi)>CLHEP::pi)
1853  dphi = dphi < 0? (CLHEP::twopi) + dphi : dphi - CLHEP::twopi;
1854  double deltaR = sqrt(std::pow((gsfIter->eta()-mcIter->eta()),2) + std::pow(dphi,2));
1855  if ( deltaR < deltaR_ ){
1856  double mc_charge = mcIter->pdgId() == 11 ? -1. : 1. ;
1857  h_ele_ChargeMnChargeTrue -> Fill( std::abs(gsfIter->charge()-mc_charge));
1858  // require here a charge mismatch
1859  if ( ( (mcIter->pdgId() == 11) && (gsfIter->charge() > 0.) ) ||
1860  ( (mcIter->pdgId() == -11) && (gsfIter->charge() < 0.) ) )
1861  {
1862  double tmpGsfRatio = gsfIter->p()/mcIter->p();
1863  if ( std::abs(tmpGsfRatio-1) < std::abs(gsfOkRatio-1) ) {
1864  gsfOkRatio = tmpGsfRatio;
1865  bestGsfElectron=*gsfIter;
1866  okGsfFound = true;
1867  }
1868  }
1869  }
1870  } // loop over rec ele to look for the best one
1871 
1872  // analysis when the mc track is found
1873  if (okGsfFound)
1874  {
1875 
1876  // generated distributions for matched electrons
1877  h_ele_simPt_matched_qmisid -> Fill( mcIter->pt() );
1878  h_ele_simPhi_matched_qmisid -> Fill( mcIter->phi() );
1879  h_ele_simAbsEta_matched_qmisid -> Fill( std::abs(mcIter->eta()) );
1880  h_ele_simEta_matched_qmisid -> Fill( mcIter->eta() );
1881  h_ele_simZ_matched_qmisid -> Fill( mcIter->vz() );
1882 
1883  }
1884  }
1885  }
1886 
1887  }
1888 
1889  // association mc-reco
1890  for (reco::GenParticleCollection::const_iterator mcIter=genParticles->begin(); mcIter != genParticles->end(); mcIter++ ) {
1891 
1892  // number of mc particles
1893  mcNum++;
1894 
1895  // counts photons
1896  if (mcIter->pdgId() == 22 ){ gamNum++; }
1897 
1898  // select requested matching gen particle
1899  matchingID=false;
1900  for (unsigned int i=0; i<matchingIDs_.size(); i++)
1901  if ( mcIter->pdgId() == matchingIDs_[i] ) matchingID=true;
1902 
1903  if (matchingID) {
1904 
1905  // select requested mother matching gen particle
1906  // always include single particle with no mother
1907  const Candidate * mother = mcIter->mother();
1908  matchingMotherID=false;
1909  for (unsigned int i=0; i<matchingMotherIDs_.size(); i++)
1910  if ((mother == 0) || ((mother != 0) && mother->pdgId() == matchingMotherIDs_[i]) ) matchingMotherID=true;
1911 
1912  if (matchingMotherID) {
1913 
1914  if (mcIter->pt()> maxPt_ || std::abs(mcIter->eta())> maxAbsEta_) continue;
1915 
1916  // suppress the endcaps
1917  //if (std::abs(mcIter->eta()) > 1.5) continue;
1918  // select central z
1919  //if ( std::abs(mcIter->production_vertex()->position().z())>50.) continue;
1920 
1921  eleNum++;
1922  h_simEta -> Fill( mcIter->eta() );
1923  h_simAbsEta -> Fill( std::abs(mcIter->eta()) );
1924  h_simP -> Fill( mcIter->p() );
1925  h_simPt -> Fill( mcIter->pt() );
1926  h_simPhi -> Fill( mcIter->phi() );
1927  h_simZ -> Fill( mcIter->vz() );
1928  h_simPtEta -> Fill( mcIter->eta(),mcIter->pt() );
1929 
1930  // looking for the best matching gsf electron
1931  bool okGsfFound = false;
1932  double gsfOkRatio = 999999.;
1933 
1934  // find best matched electron
1935  reco::GsfElectron bestGsfElectron;
1936  for (reco::GsfElectronCollection::const_iterator gsfIter=gsfElectrons->begin();
1937  gsfIter!=gsfElectrons->end(); gsfIter++){
1938 
1939  double dphi = gsfIter->phi()-mcIter->phi();
1940  if (std::abs(dphi)>CLHEP::pi)
1941  dphi = dphi < 0? (CLHEP::twopi) + dphi : dphi - CLHEP::twopi;
1942  double deltaR = sqrt(std::pow((gsfIter->eta()-mcIter->eta()),2) + std::pow(dphi,2));
1943  if ( deltaR < deltaR_ ){
1944  if ( ( (mcIter->pdgId() == 11) && (gsfIter->charge() < 0.) ) ||
1945  ( (mcIter->pdgId() == -11) && (gsfIter->charge() > 0.) ) )
1946  {
1947  double tmpGsfRatio = gsfIter->p()/mcIter->p();
1948  if ( std::abs(tmpGsfRatio-1) < std::abs(gsfOkRatio-1) ) {
1949  gsfOkRatio = tmpGsfRatio;
1950  bestGsfElectron=*gsfIter;
1951  okGsfFound = true;
1952  }
1953  }
1954  }
1955  } // loop over rec ele to look for the best one
1956 
1957  // analysis when the mc track is found
1958  if (okGsfFound){
1959 
1960  // electron related distributions
1961  h_ele_charge -> Fill( bestGsfElectron.charge() );
1962  h_ele_chargeVsEta -> Fill( bestGsfElectron.eta(),bestGsfElectron.charge() );
1963  h_ele_chargeVsPhi -> Fill( bestGsfElectron.phi(),bestGsfElectron.charge() );
1964  h_ele_chargeVsPt -> Fill( bestGsfElectron.pt(),bestGsfElectron.charge() );
1965  h_ele_vertexP -> Fill( bestGsfElectron.p() );
1966  h_ele_vertexPt -> Fill( bestGsfElectron.pt() );
1967  h_ele_Et -> Fill( bestGsfElectron.superCluster()->energy()/cosh(bestGsfElectron.superCluster()->eta()));
1968  h_ele_vertexPtVsEta -> Fill( bestGsfElectron.eta(),bestGsfElectron.pt() );
1969  h_ele_vertexPtVsPhi -> Fill( bestGsfElectron.phi(),bestGsfElectron.pt() );
1970  h_ele_vertexEta -> Fill( bestGsfElectron.eta() );
1971  // generated distributions for matched electrons
1972  h_ele_simPt_matched -> Fill( mcIter->pt() );
1973  h_ele_simPhi_matched -> Fill( mcIter->phi() );
1974  h_ele_simAbsEta_matched -> Fill( std::abs(mcIter->eta()) );
1975  h_ele_simEta_matched -> Fill( mcIter->eta() );
1976  h_ele_simPtEta_matched -> Fill( mcIter->eta(),mcIter->pt() );
1977  h_ele_vertexEtaVsPhi -> Fill( bestGsfElectron.phi(),bestGsfElectron.eta() );
1978  h_ele_vertexPhi -> Fill( bestGsfElectron.phi() );
1979  h_ele_vertexX -> Fill( bestGsfElectron.vertex().x() );
1980  h_ele_vertexY -> Fill( bestGsfElectron.vertex().y() );
1981  h_ele_vertexZ -> Fill( bestGsfElectron.vertex().z() );
1982  h_ele_simZ_matched -> Fill( mcIter->vz() );
1983  double d = (bestGsfElectron.vertex().x()-mcIter->vx())
1984  *(bestGsfElectron.vertex().x()-mcIter->vx())+
1985  (bestGsfElectron.vertex().y()-mcIter->vy())
1986  *(bestGsfElectron.vertex().y()-mcIter->vy());
1987  d = sqrt(d);
1988  h_ele_vertexTIP -> Fill( d );
1989  h_ele_vertexTIPVsEta -> Fill( bestGsfElectron.eta(), d );
1990  h_ele_vertexTIPVsPhi -> Fill( bestGsfElectron.phi(), d );
1991  h_ele_vertexTIPVsPt -> Fill( bestGsfElectron.pt(), d );
1992  h_ele_EtaMnEtaTrue -> Fill( bestGsfElectron.eta()-mcIter->eta());
1993  if (bestGsfElectron.isEB()) h_ele_EtaMnEtaTrue_barrel -> Fill( bestGsfElectron.eta()-mcIter->eta());
1994  if (bestGsfElectron.isEE()) h_ele_EtaMnEtaTrue_endcaps -> Fill( bestGsfElectron.eta()-mcIter->eta());
1995  h_ele_EtaMnEtaTrueVsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.eta()-mcIter->eta());
1996  h_ele_EtaMnEtaTrueVsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.eta()-mcIter->eta());
1997  h_ele_EtaMnEtaTrueVsPt -> Fill( bestGsfElectron.pt(), bestGsfElectron.eta()-mcIter->eta());
1998  h_ele_PhiMnPhiTrue -> Fill( bestGsfElectron.phi()-mcIter->phi());
1999  if (bestGsfElectron.isEB()) h_ele_PhiMnPhiTrue_barrel -> Fill( bestGsfElectron.phi()-mcIter->phi());
2000  if (bestGsfElectron.isEE()) h_ele_PhiMnPhiTrue_endcaps -> Fill( bestGsfElectron.phi()-mcIter->phi());
2001  h_ele_PhiMnPhiTrue2 -> Fill( bestGsfElectron.phi()-mcIter->phi());
2002  h_ele_PhiMnPhiTrueVsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.phi()-mcIter->phi());
2003  h_ele_PhiMnPhiTrueVsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.phi()-mcIter->phi());
2004  h_ele_PhiMnPhiTrueVsPt -> Fill( bestGsfElectron.pt(), bestGsfElectron.phi()-mcIter->phi());
2005  h_ele_PoPtrue -> Fill( bestGsfElectron.p()/mcIter->p());
2006  h_ele_PtoPttrue -> Fill( bestGsfElectron.pt()/mcIter->pt());
2007  h_ele_PoPtrueVsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.p()/mcIter->p());
2008  h_ele_PoPtrueVsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.p()/mcIter->p());
2009  h_ele_PoPtrueVsPt -> Fill( bestGsfElectron.py(), bestGsfElectron.p()/mcIter->p());
2010  if (bestGsfElectron.isEB()) h_ele_PoPtrue_barrel -> Fill( bestGsfElectron.p()/mcIter->p());
2011  if (bestGsfElectron.isEE()) h_ele_PoPtrue_endcaps -> Fill( bestGsfElectron.p()/mcIter->p());
2012  if (bestGsfElectron.isEB() && bestGsfElectron.classification() == GsfElectron::GOLDEN) h_ele_PoPtrue_golden_barrel -> Fill( bestGsfElectron.p()/mcIter->p());
2013  if (bestGsfElectron.isEE() && bestGsfElectron.classification() == GsfElectron::GOLDEN) h_ele_PoPtrue_golden_endcaps -> Fill( bestGsfElectron.p()/mcIter->p());
2014  if (bestGsfElectron.isEB() && bestGsfElectron.classification() == GsfElectron::SHOWERING) h_ele_PoPtrue_showering_barrel -> Fill( bestGsfElectron.p()/mcIter->p());
2015  if (bestGsfElectron.isEE() && bestGsfElectron.classification() == GsfElectron::SHOWERING) h_ele_PoPtrue_showering_endcaps -> Fill( bestGsfElectron.p()/mcIter->p());
2016  if (bestGsfElectron.isEB()) h_ele_PtoPttrue_barrel -> Fill( bestGsfElectron.pt()/mcIter->pt());
2017  if (bestGsfElectron.isEE()) h_ele_PtoPttrue_endcaps -> Fill( bestGsfElectron.pt()/mcIter->pt());
2018 
2019  // supercluster related distributions
2020  reco::SuperClusterRef sclRef = bestGsfElectron.superCluster();
2021  if (!bestGsfElectron.ecalDrivenSeed()&&bestGsfElectron.trackerDrivenSeed()) sclRef = bestGsfElectron.pflowSuperCluster();
2022  histSclEn_->Fill(sclRef->energy());
2023  double R=TMath::Sqrt(sclRef->x()*sclRef->x() + sclRef->y()*sclRef->y() +sclRef->z()*sclRef->z());
2024  double Rt=TMath::Sqrt(sclRef->x()*sclRef->x() + sclRef->y()*sclRef->y());
2025  histSclEt_->Fill(sclRef->energy()*(Rt/R));
2026  histSclEtVsEta_->Fill(sclRef->eta(),sclRef->energy()*(Rt/R));
2027  histSclEtVsPhi_->Fill(sclRef->phi(),sclRef->energy()*(Rt/R));
2028  if (bestGsfElectron.isEB()) histSclEoEtrue_barrel->Fill(sclRef->energy()/mcIter->p());
2029  if (bestGsfElectron.isEE()) histSclEoEtrue_endcaps->Fill(sclRef->energy()/mcIter->p());
2030  if (bestGsfElectron.isEB() && bestGsfElectron.ecalDrivenSeed()) histSclEoEtrue_barrel_eg->Fill(sclRef->energy()/mcIter->p());
2031  if (bestGsfElectron.isEE() && bestGsfElectron.ecalDrivenSeed()) histSclEoEtrue_endcaps_eg->Fill(sclRef->energy()/mcIter->p());
2032  if (bestGsfElectron.isEB() && bestGsfElectron.isEBEtaGap()) histSclEoEtrue_barrel_etagap->Fill(sclRef->energy()/mcIter->p());
2033  if (bestGsfElectron.isEB() && bestGsfElectron.isEBPhiGap()) histSclEoEtrue_barrel_phigap->Fill(sclRef->energy()/mcIter->p());
2034  if (bestGsfElectron.isEBEEGap()) histSclEoEtrue_ebeegap->Fill(sclRef->energy()/mcIter->p());
2035  //if (bestGsfElectron.isEE()) histSclEoEtrue_endcaps->Fill(sclRef->energy()/mcIter->p());
2036  if (bestGsfElectron.isEE() && bestGsfElectron.isEEDeeGap()) histSclEoEtrue_endcaps_deegap->Fill(sclRef->energy()/mcIter->p());
2037  if (bestGsfElectron.isEE() && bestGsfElectron.isEERingGap()) histSclEoEtrue_endcaps_ringgap->Fill(sclRef->energy()/mcIter->p());
2038  if (bestGsfElectron.isEB()) histSclEoEtrue_barrel_new->Fill(sclRef->energy()/mcIter->p());
2039  if (bestGsfElectron.isEE()) histSclEoEtrue_endcaps_new->Fill(sclRef->energy()/mcIter->p());
2040  if (bestGsfElectron.isEB() && bestGsfElectron.ecalDrivenSeed()) histSclEoEtrue_barrel_eg_new->Fill(sclRef->energy()/mcIter->p());
2041  if (bestGsfElectron.isEE() && bestGsfElectron.ecalDrivenSeed()) histSclEoEtrue_endcaps_eg_new->Fill(sclRef->energy()/mcIter->p());
2042  if (bestGsfElectron.isEB() && bestGsfElectron.isEBEtaGap()) histSclEoEtrue_barrel_etagap_new->Fill(sclRef->energy()/mcIter->p());
2043  if (bestGsfElectron.isEB() && bestGsfElectron.isEBPhiGap()) histSclEoEtrue_barrel_phigap_new->Fill(sclRef->energy()/mcIter->p());
2044  if (bestGsfElectron.isEBEEGap()) histSclEoEtrue_ebeegap_new->Fill(sclRef->energy()/mcIter->p());
2045  //if (bestGsfElectron.isEE()) histSclEoEtrue_endcaps_new->Fill(sclRef->energy()/mcIter->p());
2046  if (bestGsfElectron.isEE() && bestGsfElectron.isEEDeeGap()) histSclEoEtrue_endcaps_deegap_new->Fill(sclRef->energy()/mcIter->p());
2047  if (bestGsfElectron.isEE() && bestGsfElectron.isEERingGap()) histSclEoEtrue_endcaps_ringgap_new->Fill(sclRef->energy()/mcIter->p());
2048  histSclEta_->Fill(sclRef->eta());
2049  histSclEtaVsPhi_->Fill(sclRef->phi(),sclRef->eta());
2050  histSclPhi_->Fill(sclRef->phi());
2051  histSclSigEtaEta_->Fill(bestGsfElectron.scSigmaEtaEta());
2052  if (bestGsfElectron.isEB()) histSclSigEtaEta_barrel_->Fill(bestGsfElectron.scSigmaEtaEta());
2053  if (bestGsfElectron.isEE()) histSclSigEtaEta_endcaps_->Fill(bestGsfElectron.scSigmaEtaEta());
2054  histSclSigIEtaIEta_->Fill(bestGsfElectron.scSigmaIEtaIEta());
2055  if (bestGsfElectron.isEB()) histSclSigIEtaIEta_barrel_->Fill(bestGsfElectron.scSigmaIEtaIEta());
2056  if (bestGsfElectron.isEE()) histSclSigIEtaIEta_endcaps_->Fill(bestGsfElectron.scSigmaIEtaIEta());
2057  histSclE1x5_->Fill(bestGsfElectron.scE1x5());
2058  if (bestGsfElectron.isEB()) histSclE1x5_barrel_->Fill(bestGsfElectron.scE1x5());
2059  if (bestGsfElectron.isEE()) histSclE1x5_endcaps_->Fill(bestGsfElectron.scE1x5());
2060  histSclE2x5max_->Fill(bestGsfElectron.scE2x5Max());
2061  if (bestGsfElectron.isEB()) histSclE2x5max_barrel_->Fill(bestGsfElectron.scE2x5Max());
2062  if (bestGsfElectron.isEE()) histSclE2x5max_endcaps_->Fill(bestGsfElectron.scE2x5Max());
2063  histSclE5x5_->Fill(bestGsfElectron.scE5x5());
2064  if (bestGsfElectron.isEB()) histSclE5x5_barrel_->Fill(bestGsfElectron.scE5x5());
2065  if (bestGsfElectron.isEE()) histSclE5x5_endcaps_->Fill(bestGsfElectron.scE5x5());
2066  if (bestGsfElectron.ecalDrivenSeed()) histSclSigIEtaIEta_eg_->Fill(bestGsfElectron.scSigmaIEtaIEta());
2067  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) histSclSigIEtaIEta_eg_barrel_->Fill(bestGsfElectron.scSigmaIEtaIEta());
2068  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) histSclSigIEtaIEta_eg_endcaps_->Fill(bestGsfElectron.scSigmaIEtaIEta());
2069  if (bestGsfElectron.ecalDrivenSeed())histSclE1x5_eg_->Fill(bestGsfElectron.scE1x5());
2070  if (bestGsfElectron.isEB() && bestGsfElectron.ecalDrivenSeed())histSclE1x5_eg_barrel_->Fill(bestGsfElectron.scE1x5());
2071  if (bestGsfElectron.isEE() && bestGsfElectron.ecalDrivenSeed())histSclE1x5_eg_endcaps_->Fill(bestGsfElectron.scE1x5());
2072  if (bestGsfElectron.ecalDrivenSeed())histSclE2x5max_eg_->Fill(bestGsfElectron.scE2x5Max());
2073  if (bestGsfElectron.isEB() && bestGsfElectron.ecalDrivenSeed())histSclE2x5max_eg_barrel_->Fill(bestGsfElectron.scE2x5Max());
2074  if (bestGsfElectron.isEE() && bestGsfElectron.ecalDrivenSeed())histSclE2x5max_eg_endcaps_->Fill(bestGsfElectron.scE2x5Max());
2075  if (bestGsfElectron.ecalDrivenSeed())histSclE5x5_eg_->Fill(bestGsfElectron.scE5x5());
2076  if (bestGsfElectron.isEB() && bestGsfElectron.ecalDrivenSeed())histSclE5x5_eg_barrel_->Fill(bestGsfElectron.scE5x5());
2077  if (bestGsfElectron.isEE() && bestGsfElectron.ecalDrivenSeed())histSclE5x5_eg_endcaps_->Fill(bestGsfElectron.scE5x5());
2078  float pfEnergy=0., egEnergy=0.;
2079  if (!bestGsfElectron.superCluster().isNull()) egEnergy = bestGsfElectron.superCluster()->energy();
2080  if (!bestGsfElectron.pflowSuperCluster().isNull()) pfEnergy = bestGsfElectron.pflowSuperCluster()->energy();
2081  histSclEoEtruePfVsEg->Fill(egEnergy/mcIter->p(),pfEnergy/mcIter->p());
2082 
2083  // track related distributions
2084  h_ele_ambiguousTracks -> Fill( bestGsfElectron.ambiguousGsfTracksSize() );
2085  h_ele_ambiguousTracksVsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.ambiguousGsfTracksSize() );
2086  h_ele_ambiguousTracksVsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.ambiguousGsfTracksSize() );
2087  h_ele_ambiguousTracksVsPt -> Fill( bestGsfElectron.pt(), bestGsfElectron.ambiguousGsfTracksSize() );
2088  if (!readAOD_) { // track extra does not exist in AOD
2089  h_ele_foundHits -> Fill( bestGsfElectron.gsfTrack()->numberOfValidHits() );
2090  if (bestGsfElectron.isEB()) h_ele_foundHits_barrel -> Fill( bestGsfElectron.gsfTrack()->numberOfValidHits() );
2091  if (bestGsfElectron.isEE()) h_ele_foundHits_endcaps -> Fill( bestGsfElectron.gsfTrack()->numberOfValidHits() );
2092  h_ele_foundHitsVsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.gsfTrack()->numberOfValidHits() );
2093  h_ele_foundHitsVsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.gsfTrack()->numberOfValidHits() );
2094  h_ele_foundHitsVsPt -> Fill( bestGsfElectron.pt(), bestGsfElectron.gsfTrack()->numberOfValidHits() );
2095  h_ele_lostHits -> Fill( bestGsfElectron.gsfTrack()->numberOfLostHits() );
2096  if (bestGsfElectron.isEB()) h_ele_lostHits_barrel -> Fill( bestGsfElectron.gsfTrack()->numberOfLostHits() );
2097  if (bestGsfElectron.isEE()) h_ele_lostHits_endcaps -> Fill( bestGsfElectron.gsfTrack()->numberOfLostHits() );
2098  h_ele_lostHitsVsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.gsfTrack()->numberOfLostHits() );
2099  h_ele_lostHitsVsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.gsfTrack()->numberOfLostHits() );
2100  h_ele_lostHitsVsPt -> Fill( bestGsfElectron.pt(), bestGsfElectron.gsfTrack()->numberOfLostHits() );
2101  h_ele_chi2 -> Fill( bestGsfElectron.gsfTrack()->normalizedChi2() );
2102  if (bestGsfElectron.isEB()) h_ele_chi2_barrel -> Fill( bestGsfElectron.gsfTrack()->normalizedChi2() );
2103  if (bestGsfElectron.isEE()) h_ele_chi2_endcaps -> Fill( bestGsfElectron.gsfTrack()->normalizedChi2() );
2104  h_ele_chi2VsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.gsfTrack()->normalizedChi2() );
2105  h_ele_chi2VsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.gsfTrack()->normalizedChi2() );
2106  h_ele_chi2VsPt -> Fill( bestGsfElectron.pt(), bestGsfElectron.gsfTrack()->normalizedChi2() );
2107  }
2108  // from gsf track interface, hence using mean
2109  if (!readAOD_) { // track extra does not exist in AOD
2110  h_ele_PinMnPout -> Fill( bestGsfElectron.gsfTrack()->innerMomentum().R() - bestGsfElectron.gsfTrack()->outerMomentum().R() );
2111  h_ele_outerP -> Fill( bestGsfElectron.gsfTrack()->outerMomentum().R() );
2112  h_ele_outerPt -> Fill( bestGsfElectron.gsfTrack()->outerMomentum().Rho() );
2113  }
2114  // from electron interface, hence using mode
2115  h_ele_PinMnPout_mode -> Fill( bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R() );
2116  h_ele_PinMnPoutVsEta_mode -> Fill( bestGsfElectron.eta(), bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R() );
2117  h_ele_PinMnPoutVsPhi_mode -> Fill( bestGsfElectron.phi(), bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R() );
2118  h_ele_PinMnPoutVsPt_mode -> Fill( bestGsfElectron.pt(), bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R() );
2119  h_ele_PinMnPoutVsE_mode -> Fill( bestGsfElectron.caloEnergy(), bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R() );
2120  if (!readAOD_) // track extra does not exist in AOD
2121  h_ele_PinMnPoutVsChi2_mode -> Fill( bestGsfElectron.gsfTrack()->normalizedChi2(), bestGsfElectron.trackMomentumAtVtx().R() - bestGsfElectron.trackMomentumOut().R() );
2122  h_ele_outerP_mode -> Fill( bestGsfElectron.trackMomentumOut().R() );
2123  h_ele_outerPVsEta_mode -> Fill(bestGsfElectron.eta(), bestGsfElectron.trackMomentumOut().R() );
2124  h_ele_outerPt_mode -> Fill( bestGsfElectron.trackMomentumOut().Rho() );
2125  h_ele_outerPtVsEta_mode -> Fill(bestGsfElectron.eta(), bestGsfElectron.trackMomentumOut().Rho() );
2126  h_ele_outerPtVsPhi_mode -> Fill(bestGsfElectron.phi(), bestGsfElectron.trackMomentumOut().Rho() );
2127  h_ele_outerPtVsPt_mode -> Fill(bestGsfElectron.pt(), bestGsfElectron.trackMomentumOut().Rho() );
2128 
2129  if (!readAOD_) { // track extra does not exist in AOD
2130  edm::RefToBase<TrajectorySeed> seed = bestGsfElectron.gsfTrack()->extra()->seedRef();
2131  ElectronSeedRef elseed=seed.castTo<ElectronSeedRef>();
2132  h_ele_seed_dphi2_-> Fill(elseed->dPhi2());
2133  h_ele_seed_dphi2VsEta_-> Fill(bestGsfElectron.eta(), elseed->dPhi2());
2134  h_ele_seed_dphi2VsPt_-> Fill(bestGsfElectron.pt(), elseed->dPhi2()) ;
2135  h_ele_seed_drz2_-> Fill(elseed->dRz2());
2136  h_ele_seed_drz2VsEta_-> Fill(bestGsfElectron.eta(), elseed->dRz2());
2137  h_ele_seed_drz2VsPt_-> Fill(bestGsfElectron.pt(), elseed->dRz2());
2138  h_ele_seed_subdet2_-> Fill(elseed->subDet2());
2139  }
2140  // match distributions
2141  h_ele_EoP -> Fill( bestGsfElectron.eSuperClusterOverP() );
2142  if (bestGsfElectron.ecalDrivenSeed()) h_ele_EoP_eg -> Fill( bestGsfElectron.eSuperClusterOverP() );
2143  if (bestGsfElectron.isEB()) h_ele_EoP_barrel -> Fill( bestGsfElectron.eSuperClusterOverP() );
2144  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_EoP_eg_barrel -> Fill( bestGsfElectron.eSuperClusterOverP() );
2145  if (bestGsfElectron.isEE()) h_ele_EoP_endcaps -> Fill( bestGsfElectron.eSuperClusterOverP() );
2146  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_EoP_eg_endcaps -> Fill( bestGsfElectron.eSuperClusterOverP() );
2147  h_ele_EoPVsEta -> Fill(bestGsfElectron.eta(), bestGsfElectron.eSuperClusterOverP() );
2148  h_ele_EoPVsPhi -> Fill(bestGsfElectron.phi(), bestGsfElectron.eSuperClusterOverP() );
2149  h_ele_EoPVsE -> Fill(bestGsfElectron.caloEnergy(), bestGsfElectron.eSuperClusterOverP() );
2150  h_ele_EseedOP -> Fill( bestGsfElectron.eSeedClusterOverP() );
2151  if (bestGsfElectron.ecalDrivenSeed()) h_ele_EseedOP_eg -> Fill( bestGsfElectron.eSeedClusterOverP() );
2152  if (bestGsfElectron.isEB()) h_ele_EseedOP_barrel -> Fill( bestGsfElectron.eSeedClusterOverP() );
2153  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_EseedOP_eg_barrel -> Fill( bestGsfElectron.eSeedClusterOverP() );
2154  if (bestGsfElectron.isEE()) h_ele_EseedOP_endcaps -> Fill( bestGsfElectron.eSeedClusterOverP() );
2155  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_EseedOP_eg_endcaps -> Fill( bestGsfElectron.eSeedClusterOverP() );
2156  h_ele_EseedOPVsEta -> Fill(bestGsfElectron.eta(), bestGsfElectron.eSeedClusterOverP() );
2157  h_ele_EseedOPVsPhi -> Fill(bestGsfElectron.phi(), bestGsfElectron.eSeedClusterOverP() );
2158  h_ele_EseedOPVsE -> Fill(bestGsfElectron.caloEnergy(), bestGsfElectron.eSeedClusterOverP() );
2159  h_ele_EoPout -> Fill( bestGsfElectron.eSeedClusterOverPout() );
2160  if (bestGsfElectron.ecalDrivenSeed()) h_ele_EoPout_eg -> Fill( bestGsfElectron.eSeedClusterOverPout() );
2161  if (bestGsfElectron.isEB()) h_ele_EoPout_barrel -> Fill( bestGsfElectron.eSeedClusterOverPout() );
2162  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_EoPout_eg_barrel -> Fill( bestGsfElectron.eSeedClusterOverPout() );
2163  if (bestGsfElectron.isEE()) h_ele_EoPout_endcaps -> Fill( bestGsfElectron.eSeedClusterOverPout() );
2164  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_EoPout_eg_endcaps -> Fill( bestGsfElectron.eSeedClusterOverPout() );
2165  h_ele_EoPoutVsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.eSeedClusterOverPout() );
2166  h_ele_EoPoutVsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.eSeedClusterOverPout() );
2167  h_ele_EoPoutVsE -> Fill( bestGsfElectron.caloEnergy(), bestGsfElectron.eSeedClusterOverPout() );
2168  h_ele_EeleOPout -> Fill( bestGsfElectron.eEleClusterOverPout() );
2169  if (bestGsfElectron.ecalDrivenSeed()) h_ele_EeleOPout_eg -> Fill( bestGsfElectron.eEleClusterOverPout() );
2170  if (bestGsfElectron.isEB()) h_ele_EeleOPout_barrel -> Fill( bestGsfElectron.eEleClusterOverPout() );
2171  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_EeleOPout_eg_barrel -> Fill( bestGsfElectron.eEleClusterOverPout() );
2172  if (bestGsfElectron.isEE()) h_ele_EeleOPout_endcaps -> Fill( bestGsfElectron.eEleClusterOverPout() );
2173  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_EeleOPout_eg_endcaps -> Fill( bestGsfElectron.eEleClusterOverPout() );
2174  h_ele_EeleOPoutVsEta -> Fill( bestGsfElectron.eta(), bestGsfElectron.eEleClusterOverPout() );
2175  h_ele_EeleOPoutVsPhi -> Fill( bestGsfElectron.phi(), bestGsfElectron.eEleClusterOverPout() );
2176  h_ele_EeleOPoutVsE -> Fill( bestGsfElectron.caloEnergy(), bestGsfElectron.eEleClusterOverPout() );
2177  h_ele_dEtaSc_propVtx -> Fill(bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
2178  if (bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaSc_propVtx_eg -> Fill(bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
2179  if (bestGsfElectron.isEB()) h_ele_dEtaSc_propVtx_barrel -> Fill(bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
2180  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaSc_propVtx_eg_barrel -> Fill(bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
2181  if (bestGsfElectron.isEE())h_ele_dEtaSc_propVtx_endcaps -> Fill(bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
2182  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaSc_propVtx_eg_endcaps -> Fill(bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
2183  h_ele_dEtaScVsEta_propVtx -> Fill( bestGsfElectron.eta(),bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
2184  h_ele_dEtaScVsPhi_propVtx -> Fill(bestGsfElectron.phi(),bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
2185  h_ele_dEtaScVsPt_propVtx -> Fill(bestGsfElectron.pt(),bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
2186  h_ele_dPhiSc_propVtx -> Fill(bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
2187  if (bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiSc_propVtx_eg -> Fill(bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
2188  if (bestGsfElectron.isEB()) h_ele_dPhiSc_propVtx_barrel -> Fill(bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
2189  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiSc_propVtx_eg_barrel -> Fill(bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
2190  if (bestGsfElectron.isEE())h_ele_dPhiSc_propVtx_endcaps -> Fill(bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
2191  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiSc_propVtx_eg_endcaps -> Fill(bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
2192  h_ele_dPhiScVsEta_propVtx -> Fill( bestGsfElectron.eta(),bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
2193  h_ele_dPhiScVsPhi_propVtx -> Fill(bestGsfElectron.phi(),bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
2194  h_ele_dPhiScVsPt_propVtx -> Fill(bestGsfElectron.pt(),bestGsfElectron.deltaPhiSuperClusterTrackAtVtx());
2195  h_ele_dEtaCl_propOut -> Fill(bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
2196  if (bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaCl_propOut_eg -> Fill(bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
2197  if (bestGsfElectron.isEB()) h_ele_dEtaCl_propOut_barrel -> Fill(bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
2198  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaCl_propOut_eg_barrel -> Fill(bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
2199  if (bestGsfElectron.isEE()) h_ele_dEtaCl_propOut_endcaps -> Fill(bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
2200  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaCl_propOut_eg_endcaps -> Fill(bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
2201  h_ele_dEtaClVsEta_propOut -> Fill( bestGsfElectron.eta(),bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
2202  h_ele_dEtaClVsPhi_propOut -> Fill(bestGsfElectron.phi(),bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
2203  h_ele_dEtaClVsPt_propOut -> Fill(bestGsfElectron.pt(),bestGsfElectron.deltaEtaSeedClusterTrackAtCalo());
2204  h_ele_dPhiCl_propOut -> Fill(bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
2205  if (bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiCl_propOut_eg -> Fill(bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
2206  if (bestGsfElectron.isEB()) h_ele_dPhiCl_propOut_barrel -> Fill(bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
2207  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiCl_propOut_eg_barrel -> Fill(bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
2208  if (bestGsfElectron.isEE()) h_ele_dPhiCl_propOut_endcaps -> Fill(bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
2209  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiCl_propOut_eg_endcaps -> Fill(bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
2210  h_ele_dPhiClVsEta_propOut -> Fill( bestGsfElectron.eta(),bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
2211  h_ele_dPhiClVsPhi_propOut -> Fill(bestGsfElectron.phi(),bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
2212  h_ele_dPhiClVsPt_propOut -> Fill(bestGsfElectron.pt(),bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
2213  h_ele_dEtaEleCl_propOut -> Fill(bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
2214  if (bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaEleCl_propOut_eg -> Fill(bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
2215  if (bestGsfElectron.isEB()) h_ele_dEtaEleCl_propOut_barrel -> Fill(bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
2216  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaEleCl_propOut_eg_barrel -> Fill(bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
2217  if (bestGsfElectron.isEE()) h_ele_dEtaEleCl_propOut_endcaps -> Fill(bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
2218  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dEtaEleCl_propOut_eg_endcaps -> Fill(bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
2219  h_ele_dEtaEleClVsEta_propOut -> Fill( bestGsfElectron.eta(),bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
2220  h_ele_dEtaEleClVsPhi_propOut -> Fill(bestGsfElectron.phi(),bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
2221  h_ele_dEtaEleClVsPt_propOut -> Fill(bestGsfElectron.pt(),bestGsfElectron.deltaEtaEleClusterTrackAtCalo());
2222  h_ele_dPhiEleCl_propOut -> Fill(bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
2223  if (bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiEleCl_propOut_eg -> Fill(bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
2224  if (bestGsfElectron.isEB()) h_ele_dPhiEleCl_propOut_barrel -> Fill(bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
2225  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiEleCl_propOut_eg_barrel -> Fill(bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
2226  if (bestGsfElectron.isEE()) h_ele_dPhiEleCl_propOut_endcaps -> Fill(bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
2227  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_dPhiEleCl_propOut_eg_endcaps -> Fill(bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
2228  h_ele_dPhiEleClVsEta_propOut -> Fill( bestGsfElectron.eta(),bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
2229  h_ele_dPhiEleClVsPhi_propOut -> Fill(bestGsfElectron.phi(),bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
2230  h_ele_dPhiEleClVsPt_propOut -> Fill(bestGsfElectron.pt(),bestGsfElectron.deltaPhiEleClusterTrackAtCalo());
2231  h_ele_HoE -> Fill(bestGsfElectron.hadronicOverEm());
2232  if (bestGsfElectron.ecalDrivenSeed()) h_ele_HoE_eg -> Fill(bestGsfElectron.hadronicOverEm());
2233  if (bestGsfElectron.isEB()) h_ele_HoE_barrel -> Fill(bestGsfElectron.hadronicOverEm());
2234  if (bestGsfElectron.isEB()&&bestGsfElectron.ecalDrivenSeed()) h_ele_HoE_eg_barrel -> Fill(bestGsfElectron.hadronicOverEm());
2235  if (bestGsfElectron.isEE()) h_ele_HoE_endcaps -> Fill(bestGsfElectron.hadronicOverEm());
2236  if (bestGsfElectron.isEE()&&bestGsfElectron.ecalDrivenSeed()) h_ele_HoE_eg_endcaps -> Fill(bestGsfElectron.hadronicOverEm());
2237  if (!bestGsfElectron.isEBEtaGap() && !bestGsfElectron.isEBPhiGap()&& !bestGsfElectron.isEBEEGap() &&
2238  !bestGsfElectron.isEERingGap() && !bestGsfElectron.isEEDeeGap()) h_ele_HoE_fiducial -> Fill(bestGsfElectron.hadronicOverEm());
2239  h_ele_HoEVsEta -> Fill( bestGsfElectron.eta(),bestGsfElectron.hadronicOverEm());
2240  h_ele_HoEVsPhi -> Fill(bestGsfElectron.phi(),bestGsfElectron.hadronicOverEm());
2241  h_ele_HoEVsE -> Fill(bestGsfElectron.caloEnergy(),bestGsfElectron.hadronicOverEm());
2242 
2243  //classes
2244  int eleClass = bestGsfElectron.classification();
2245  if (bestGsfElectron.isEE()) eleClass+=10;
2246  h_ele_classes ->Fill(eleClass);
2247 
2248  if (bestGsfElectron.classification() == GsfElectron::GOLDEN && bestGsfElectron.isEB()) histSclEoEtrueGolden_barrel->Fill(sclRef->energy()/mcIter->p());
2249  if (bestGsfElectron.classification() == GsfElectron::GOLDEN && bestGsfElectron.isEE()) histSclEoEtrueGolden_endcaps->Fill(sclRef->energy()/mcIter->p());
2250  if (bestGsfElectron.classification() == GsfElectron::SHOWERING && bestGsfElectron.isEB()) histSclEoEtrueShowering_barrel->Fill(sclRef->energy()/mcIter->p());
2251  if (bestGsfElectron.classification() == GsfElectron::SHOWERING && bestGsfElectron.isEE()) histSclEoEtrueShowering_endcaps->Fill(sclRef->energy()/mcIter->p());
2252 
2253  //eleClass = eleClass%100; // get rid of barrel/endcap distinction
2254  h_ele_eta->Fill(std::abs(bestGsfElectron.eta()));
2255  if (bestGsfElectron.classification() == GsfElectron::GOLDEN) h_ele_eta_golden ->Fill(std::abs(bestGsfElectron.eta()));
2256  if (bestGsfElectron.classification() == GsfElectron::BIGBREM) h_ele_eta_bbrem ->Fill(std::abs(bestGsfElectron.eta()));
2257  //if (bestGsfElectron.classification() == GsfElectron::NARROW) h_ele_eta_narrow ->Fill(std::abs(bestGsfElectron.eta()));
2258  if (bestGsfElectron.classification() == GsfElectron::SHOWERING) h_ele_eta_shower ->Fill(std::abs(bestGsfElectron.eta()));
2259 
2260  //fbrem
2261  double fbrem_mean=0.;
2262  if (!readAOD_) // track extra does not exist in AOD
2263  fbrem_mean = 1. - bestGsfElectron.gsfTrack()->outerMomentum().R()/bestGsfElectron.gsfTrack()->innerMomentum().R();
2264  double fbrem_mode = bestGsfElectron.fbrem();
2265  h_ele_fbrem->Fill(fbrem_mode);
2266  if (bestGsfElectron.ecalDrivenSeed()) h_ele_fbrem_eg->Fill(fbrem_mode);
2267  h_ele_fbremVsEta_mode->Fill(bestGsfElectron.eta(),fbrem_mode);
2268  if (!readAOD_) // track extra does not exist in AOD
2269  h_ele_fbremVsEta_mean->Fill(bestGsfElectron.eta(),fbrem_mean);
2270 
2271  if (bestGsfElectron.classification() == GsfElectron::GOLDEN) h_ele_PinVsPoutGolden_mode -> Fill(bestGsfElectron.trackMomentumOut().R(), bestGsfElectron.trackMomentumAtVtx().R());
2272  if (bestGsfElectron.classification() == GsfElectron::SHOWERING)
2273  h_ele_PinVsPoutShowering_mode -> Fill(bestGsfElectron.trackMomentumOut().R(), bestGsfElectron.trackMomentumAtVtx().R());
2274  if (!readAOD_) { // track extra not available in AOD
2275  if (bestGsfElectron.classification() == GsfElectron::GOLDEN) h_ele_PinVsPoutGolden_mean -> Fill(bestGsfElectron.gsfTrack()->outerMomentum().R(), bestGsfElectron.gsfTrack()->innerMomentum().R());
2276  if (bestGsfElectron.classification() == GsfElectron::SHOWERING)
2277  h_ele_PinVsPoutShowering_mean -> Fill(bestGsfElectron.gsfTrack()->outerMomentum().R(), bestGsfElectron.gsfTrack()->innerMomentum().R());
2278  }
2279  if (bestGsfElectron.classification() == GsfElectron::GOLDEN) h_ele_PtinVsPtoutGolden_mode -> Fill(bestGsfElectron.trackMomentumOut().Rho(), bestGsfElectron.trackMomentumAtVtx().Rho());
2280  if (bestGsfElectron.classification() == GsfElectron::SHOWERING)
2281  h_ele_PtinVsPtoutShowering_mode -> Fill(bestGsfElectron.trackMomentumOut().Rho(), bestGsfElectron.trackMomentumAtVtx().Rho());
2282  if (!readAOD_) { // track extra not available in AOD
2283  if (bestGsfElectron.classification() == GsfElectron::GOLDEN) h_ele_PtinVsPtoutGolden_mean -> Fill(bestGsfElectron.gsfTrack()->outerMomentum().Rho(), bestGsfElectron.gsfTrack()->innerMomentum().Rho());
2284  if (bestGsfElectron.classification() == GsfElectron::SHOWERING)
2285  h_ele_PtinVsPtoutShowering_mean -> Fill(bestGsfElectron.gsfTrack()->outerMomentum().Rho(), bestGsfElectron.gsfTrack()->innerMomentum().Rho());
2286  }
2287 
2288  h_ele_mva->Fill(bestGsfElectron.mva());
2289  if (bestGsfElectron.ecalDrivenSeed()) h_ele_mva_eg->Fill(bestGsfElectron.mva());
2290  if (bestGsfElectron.ecalDrivenSeed()) h_ele_provenance->Fill(1.);
2291  if (bestGsfElectron.trackerDrivenSeed()) h_ele_provenance->Fill(-1.);
2292  if (bestGsfElectron.trackerDrivenSeed()||bestGsfElectron.ecalDrivenSeed()) h_ele_provenance->Fill(0.);
2293  if (bestGsfElectron.trackerDrivenSeed()&&!bestGsfElectron.ecalDrivenSeed()) h_ele_provenance->Fill(-2.);
2294  if (!bestGsfElectron.trackerDrivenSeed()&&bestGsfElectron.ecalDrivenSeed()) h_ele_provenance->Fill(2.);
2295 
2296  h_ele_tkSumPt_dr03->Fill(bestGsfElectron.dr03TkSumPt());
2297  h_ele_ecalRecHitSumEt_dr03->Fill(bestGsfElectron.dr03EcalRecHitSumEt());
2298  h_ele_hcalDepth1TowerSumEt_dr03->Fill(bestGsfElectron.dr03HcalDepth1TowerSumEt());
2299  h_ele_hcalDepth2TowerSumEt_dr03->Fill(bestGsfElectron.dr03HcalDepth2TowerSumEt());
2300  h_ele_tkSumPt_dr04->Fill(bestGsfElectron.dr04TkSumPt());
2301  h_ele_ecalRecHitSumEt_dr04->Fill(bestGsfElectron.dr04EcalRecHitSumEt());
2302  h_ele_hcalDepth1TowerSumEt_dr04->Fill(bestGsfElectron.dr04HcalDepth1TowerSumEt());
2303  h_ele_hcalDepth2TowerSumEt_dr04->Fill(bestGsfElectron.dr04HcalDepth2TowerSumEt());
2304 
2305  } // gsf electron found
2306 
2307  } // mc particle found
2308 
2309  }
2310 
2311  } // loop over mc particle
2312 
2313  h_mcNum->Fill(mcNum);
2314  h_eleNum->Fill(eleNum);
2315 
2316 }
2317 
2318 
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
virtual double p() const
magnitude of momentum vector
float scSigmaEtaEta() const
Definition: GsfElectron.h:398
bool isEBEtaGap() const
Definition: GsfElectron.h:335
float eSuperClusterOverP() const
Definition: GsfElectron.h:229
virtual const Candidate * mother(size_type i=0) const =0
return pointer to mother
bool isEBEEGap() const
Definition: GsfElectron.h:333
float dr04HcalDepth1TowerSumEt() const
Definition: GsfElectron.h:449
GsfElectronMCAnalyzer(const edm::ParameterSet &conf)
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
bool isEERingGap() const
Definition: GsfElectron.h:339
float dr03HcalDepth2TowerSumEt() const
Definition: GsfElectron.h:439
float fbrem() const
Definition: GsfElectron.h:639
float scE2x5Max() const
Definition: GsfElectron.h:401
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
bool isNull() const
Checks for null.
Definition: Ref.h:247
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
virtual void analyze(const edm::Event &e, const edm::EventSetup &c)
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
virtual int pdgId() const =0
PDG identifier.
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
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