CMS 3D CMS Logo

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