CMS 3D CMS Logo

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