CMS 3D CMS Logo

ElectronAnalyzer.cc
Go to the documentation of this file.
2 
4 
11 
19 
20 #include "CLHEP/Units/GlobalPhysicalConstants.h"
21 #include "TMath.h"
22 
23 #include <iostream>
24 
25 using namespace reco ;
26 
29  {
30  // general, collections
31  Selection_ = conf.getParameter<int>("Selection");
32  electronCollection_ = consumes<GsfElectronCollection>(conf.getParameter<edm::InputTag>("ElectronCollection"));
33  matchingObjectCollection_ = consumes<SuperClusterCollection>(conf.getParameter<edm::InputTag>("MatchingObjectCollection"));
34  trackCollection_ = consumes<TrackCollection>(conf.getParameter<edm::InputTag>("TrackCollection"));
35  vertexCollection_ = consumes<VertexCollection>(conf.getParameter<edm::InputTag>("VertexCollection"));
36  gsftrackCollection_ = consumes<GsfTrackCollection>(conf.getParameter<edm::InputTag>("GsfTrackCollection"));
37  beamSpotTag_ = consumes<BeamSpot>(conf.getParameter<edm::InputTag>("BeamSpot"));
38  readAOD_ = conf.getParameter<bool>("ReadAOD");
39 
40  // matching
41  matchingCondition_ = conf.getParameter<std::string>("MatchingCondition");
42  assert (matchingCondition_=="Cone") ;
43  maxPtMatchingObject_ = conf.getParameter<double>("MaxPtMatchingObject");
44  maxAbsEtaMatchingObject_ = conf.getParameter<double>("MaxAbsEtaMatchingObject");
45  deltaR_ = conf.getParameter<double>("DeltaR");
46 
47  // electron selection
48  minEt_ = conf.getParameter<double>("MinEt");
49  minPt_ = conf.getParameter<double>("MinPt");
50  maxAbsEta_ = conf.getParameter<double>("MaxAbsEta");
51  isEB_ = conf.getParameter<bool>("SelectEb");
52  isEE_ = conf.getParameter<bool>("SelectEe");
53  isNotEBEEGap_ = conf.getParameter<bool>("SelectNotEbEeGap");
54  isEcalDriven_ = conf.getParameter<bool>("SelectEcalDriven");
55  isTrackerDriven_ = conf.getParameter<bool>("SelectTrackerDriven");
56  eOverPMinBarrel_ = conf.getParameter<double>("MinEopBarrel");
57  eOverPMaxBarrel_ = conf.getParameter<double>("MaxEopBarrel");
58  eOverPMinEndcaps_ = conf.getParameter<double>("MinEopEndcaps");
59  eOverPMaxEndcaps_ = conf.getParameter<double>("MaxEopEndcaps");
60  dEtaMinBarrel_ = conf.getParameter<double>("MinDetaBarrel");
61  dEtaMaxBarrel_ = conf.getParameter<double>("MaxDetaBarrel");
62  dEtaMinEndcaps_ = conf.getParameter<double>("MinDetaEndcaps");
63  dEtaMaxEndcaps_ = conf.getParameter<double>("MaxDetaEndcaps");
64  dPhiMinBarrel_ = conf.getParameter<double>("MinDphiBarrel");
65  dPhiMaxBarrel_ = conf.getParameter<double>("MaxDphiBarrel");
66  dPhiMinEndcaps_ = conf.getParameter<double>("MinDphiEndcaps");
67  dPhiMaxEndcaps_ = conf.getParameter<double>("MaxDphiEndcaps");
68  sigIetaIetaMinBarrel_ = conf.getParameter<double>("MinSigIetaIetaBarrel");
69  sigIetaIetaMaxBarrel_ = conf.getParameter<double>("MaxSigIetaIetaBarrel");
70  sigIetaIetaMinEndcaps_ = conf.getParameter<double>("MinSigIetaIetaEndcaps");
71  sigIetaIetaMaxEndcaps_ = conf.getParameter<double>("MaxSigIetaIetaEndcaps");
72  hadronicOverEmMaxBarrel_ = conf.getParameter<double>("MaxHoeBarrel");
73  hadronicOverEmMaxEndcaps_ = conf.getParameter<double>("MaxHoeEndcaps");
74  mvaMin_ = conf.getParameter<double>("MinMva");
75  tipMaxBarrel_ = conf.getParameter<double>("MaxTipBarrel");
76  tipMaxEndcaps_ = conf.getParameter<double>("MaxTipEndcaps");
77  tkIso03Max_ = conf.getParameter<double>("MaxTkIso03");
78  hcalIso03Depth1MaxBarrel_ = conf.getParameter<double>("MaxHcalIso03Depth1Barrel");
79  hcalIso03Depth1MaxEndcaps_ = conf.getParameter<double>("MaxHcalIso03Depth1Endcaps");
80  hcalIso03Depth2MaxEndcaps_ = conf.getParameter<double>("MaxHcalIso03Depth2Endcaps");
81  ecalIso03MaxBarrel_ = conf.getParameter<double>("MaxEcalIso03Barrel");
82  ecalIso03MaxEndcaps_ = conf.getParameter<double>("MaxEcalIso03Endcaps");
83 
84  // for trigger
85  triggerResults_ = conf.getParameter<edm::InputTag>("TriggerResults");
86 
87  // histos limits and binning
88 // edm::ParameterSet histosSet = conf.getParameter<edm::ParameterSet>("histosCfg") ;
89 
90  nbineta=conf.getParameter<int>("NbinEta");
91  nbineta2D=conf.getParameter<int>("NbinEta2D");
92  etamin=conf.getParameter<double>("EtaMin");
93  etamax=conf.getParameter<double>("EtaMax");
94  //
95  nbinphi=conf.getParameter<int>("NbinPhi");
96  nbinphi2D=conf.getParameter<int>("NbinPhi2D");
97  phimin=conf.getParameter<double>("PhiMin");
98  phimax=conf.getParameter<double>("PhiMax");
99  //
100  nbinpt=conf.getParameter<int>("NbinPt");
101  nbinpteff=conf.getParameter<int>("NbinPtEff");
102  nbinpt2D=conf.getParameter<int>("NbinPt2D");
103  ptmax=conf.getParameter<double>("PtMax");
104  //
105  nbinp=conf.getParameter<int>("NbinP");
106  nbinp2D=conf.getParameter<int>("NbinP2D");
107  pmax=conf.getParameter<double>("PMax");
108  //
109  nbineop=conf.getParameter<int>("NbinEop");
110  nbineop2D=conf.getParameter<int>("NbinEop2D");
111  eopmax=conf.getParameter<double>("EopMax");
112  eopmaxsht=conf.getParameter<double>("EopMaxSht");
113  //
114  nbindeta=conf.getParameter<int>("NbinDeta");
115  detamin=conf.getParameter<double>("DetaMin");
116  detamax=conf.getParameter<double>("DetaMax");
117  //
118  nbindphi=conf.getParameter<int>("NbinDphi");
119  dphimin=conf.getParameter<double>("DphiMin");
120  dphimax=conf.getParameter<double>("DphiMax");
121  //
122  nbindetamatch=conf.getParameter<int>("NbinDetaMatch");
123  nbindetamatch2D=conf.getParameter<int>("NbinDetaMatch2D");
124  detamatchmin=conf.getParameter<double>("DetaMatchMin");
125  detamatchmax=conf.getParameter<double>("DetaMatchMax");
126  //
127  nbindphimatch=conf.getParameter<int>("NbinDphiMatch");
128  nbindphimatch2D=conf.getParameter<int>("NbinDphiMatch2D");
129  dphimatchmin=conf.getParameter<double>("DphiMatchMin");
130  dphimatchmax=conf.getParameter<double>("DphiMatchMax");
131  //
132  nbinfhits=conf.getParameter<int>("NbinFhits");
133  fhitsmax=conf.getParameter<double>("FhitsMax");
134  //
135  nbinlhits=conf.getParameter<int>("NbinLhits");
136  lhitsmax=conf.getParameter<double>("LhitsMax");
137  //
138  nbinxyz=conf.getParameter<int>("NbinXyz");
139  nbinxyz2D=conf.getParameter<int>("NbinXyz2D");
140  //
141  nbinpoptrue= conf.getParameter<int>("NbinPopTrue");
142  poptruemin=conf.getParameter<double>("PopTrueMin");
143  poptruemax=conf.getParameter<double>("PopTrueMax");
144  //
145  nbinmee= conf.getParameter<int>("NbinMee");
146  meemin=conf.getParameter<double>("MeeMin");
147  meemax=conf.getParameter<double>("MeeMax");
148  //
149  nbinhoe= conf.getParameter<int>("NbinHoe");
150  hoemin=conf.getParameter<double>("HoeMin");
151  hoemax=conf.getParameter<double>("HoeMax");
152 
153 // set_EfficiencyFlag=histosSet.getParameter<bool>("EfficiencyFlag");
154 // set_StatOverflowFlag=histosSet.getParameter<bool>("StatOverflowFlag");
155  }
156 
158  {}
159 
161  {
163 
164  nEvents_ = 0 ;
165 
166  // basic quantities
167  h1_vertexPt_barrel = bookH1(iBooker, "vertexPt_barrel","ele transverse momentum in barrel",nbinpt,0.,ptmax,"p_{T vertex} (GeV/c)");
168  h1_vertexPt_endcaps = bookH1(iBooker, "vertexPt_endcaps","ele transverse momentum in endcaps",nbinpt,0.,ptmax,"p_{T vertex} (GeV/c)");
169  h1_vertexEta = bookH1(iBooker, "vertexEta","ele momentum #eta",nbineta,etamin,etamax,"#eta");
170  h2_vertexEtaVsPhi = bookH2(iBooker, "vertexEtaVsPhi","ele momentum #eta vs #phi",nbineta2D,etamin,etamax,nbinphi2D,phimin,phimax,"#eta","#phi (rad)");
171  h2_vertexXvsY = bookH2(iBooker, "vertexXvsY","ele vertex x vs y",nbinxyz2D,-0.1,0.1,nbinxyz2D,-0.1,0.1,"x (cm)","y (cm)");
172  h1_vertexZ = bookH1(iBooker, "vertexZ","ele vertex z",nbinxyz,-25, 25,"z (cm)");
173 
174  // super-clusters
175  h1_sclEt = bookH1(iBooker, "sclEt","ele supercluster transverse energy",nbinpt,0.,ptmax,"E_{T} (GeV)");
176 
177  // electron track
178  h1_chi2 = bookH1(iBooker, "chi2","ele track #chi^{2}",100,0.,15.,"#Chi^{2}");
179  py_chi2VsEta = bookP1(iBooker, "chi2VsEta","ele track #chi^{2} vs #eta",nbineta2D,etamin,etamax,0.,15.,"#eta","<#chi^{2}>");
180  py_chi2VsPhi = bookP1(iBooker, "chi2VsPhi","ele track #chi^{2} vs #phi",nbinphi2D,phimin,phimax,0.,15.,"#phi (rad)","<#chi^{2}>");
181  h1_foundHits = bookH1(iBooker, "foundHits","ele track # found hits",nbinfhits,0.,fhitsmax,"N_{hits}");
182  py_foundHitsVsEta = bookP1(iBooker, "foundHitsVsEta","ele track # found hits vs #eta",nbineta2D,etamin,etamax,0.,fhitsmax,"#eta","<# hits>");
183  py_foundHitsVsPhi = bookP1(iBooker, "foundHitsVsPhi","ele track # found hits vs #phi",nbinphi2D,phimin,phimax,0.,fhitsmax,"#phi (rad)","<# hits>");
184  h1_lostHits = bookH1(iBooker, "lostHits","ele track # lost hits",5,0.,5.,"N_{lost hits}");
185  py_lostHitsVsEta = bookP1(iBooker, "lostHitsVsEta","ele track # lost hits vs #eta",nbineta2D,etamin,etamax,0.,lhitsmax,"#eta","<# hits>");
186  py_lostHitsVsPhi = bookP1(iBooker, "lostHitsVsPhi","ele track # lost hits vs #eta",nbinphi2D,phimin,phimax,0.,lhitsmax,"#phi (rad)","<# hits>");
187 
188  // electron matching and ID
189  h1_Eop_barrel = bookH1(iBooker, "Eop_barrel","ele E/P_{vertex} in barrel",nbineop,0.,eopmax,"E/P_{vertex}");
190  h1_Eop_endcaps = bookH1(iBooker, "Eop_endcaps","ele E/P_{vertex} in endcaps",nbineop,0.,eopmax,"E/P_{vertex}");
191  py_EopVsPhi = bookP1(iBooker, "EopVsPhi","ele E/P_{vertex} vs #phi",nbinphi2D,phimin,phimax,0.,eopmax,"#phi (rad)","<E/P_{vertex}>");
192  h1_EeleOPout_barrel = bookH1(iBooker, "EeleOPout_barrel","ele E_{ele}/P_{out} in barrel",nbineop,0.,eopmax,"E_{ele}/P_{out}");
193  h1_EeleOPout_endcaps = bookH1(iBooker, "EeleOPout_endcaps","ele E_{ele}/P_{out} in endcaps",nbineop,0.,eopmax,"E_{ele}/P_{out}");
194  h1_dEtaSc_propVtx_barrel = bookH1(iBooker, "dEtaSc_propVtx_barrel","ele #eta_{sc} - #eta_{tr}, prop from vertex, in barrel",nbindetamatch,detamatchmin,detamatchmax,"#eta_{sc} - #eta_{tr}");
195  h1_dEtaSc_propVtx_endcapsPos = bookH1(iBooker, "dEtaSc_propVtx_endcapsPos","ele #eta_{sc} - #eta_{tr}, prop from vertex, in positive endcap",nbindetamatch,detamatchmin,detamatchmax,"#eta_{sc} - #eta_{tr}");
196  h1_dEtaSc_propVtx_endcapsNeg = bookH1(iBooker, "dEtaSc_propVtx_endcapsNeg","ele #eta_{sc} - #eta_{tr}, prop from vertex, in negative endcap",nbindetamatch,detamatchmin,detamatchmax,"#eta_{sc} - #eta_{tr}");
197  py_dEtaSc_propVtxVsPhi = bookP1(iBooker, "dEtaSc_propVtxVsPhi","ele #eta_{sc} - #eta_{tr}, prop from vertex vs #phi",nbinphi2D,phimin,phimax,detamatchmin,detamatchmax,"#phi (rad)","<#eta_{sc} - #eta_{tr}>");
198  h1_dEtaEleCl_propOut_barrel = bookH1(iBooker, "dEtaEleCl_propOut_barrel","ele #eta_{EleCl} - #eta_{tr}, prop from outermost, in barrel",nbindetamatch,detamatchmin,detamatchmax,"#eta_{elecl} - #eta_{tr}");
199  h1_dEtaEleCl_propOut_endcapsPos = bookH1(iBooker, "dEtaEleCl_propOut_endcapsPos","ele #eta_{EleCl} - #eta_{tr}, prop from outermost, in positive endcap",nbindetamatch,detamatchmin,detamatchmax,"#eta_{elecl} - #eta_{tr}");
200  h1_dEtaEleCl_propOut_endcapsNeg = bookH1(iBooker, "dEtaEleCl_propOut_endcapsNeg","ele #eta_{EleCl} - #eta_{tr}, prop from outermost, in negative endcap",nbindetamatch,detamatchmin,detamatchmax,"#eta_{elecl} - #eta_{tr}");
201  h1_dPhiSc_propVtx_barrel = bookH1(iBooker, "dPhiSc_propVtx_barrel","ele #phi_{sc} - #phi_{tr}, prop from vertex, in barrel",nbindphimatch,dphimatchmin,dphimatchmax,"#phi_{sc} - #phi_{tr} (rad)");
202  h1_dPhiSc_propVtx_endcapsPos = bookH1(iBooker, "dPhiSc_propVtx_endcapsPos","ele #phi_{sc} - #phi_{tr}, prop from vertex, in positive endcap",nbindphimatch,dphimatchmin,dphimatchmax,"#phi_{sc} - #phi_{tr} (rad)");
203  h1_dPhiSc_propVtx_endcapsNeg = bookH1(iBooker, "dPhiSc_propVtx_endcapsNeg","ele #phi_{sc} - #phi_{tr}, prop from vertex, in negative endcap",nbindphimatch,dphimatchmin,dphimatchmax,"#phi_{sc} - #phi_{tr} (rad)");
204  py_dPhiSc_propVtxVsPhi = bookP1(iBooker, "dPhiSc_propVtxVsPhi","ele #phi_{sc} - #phi_{tr}, prop from vertex vs #phi",nbinphi2D,phimin,phimax,dphimatchmin,dphimatchmax,"#phi (rad)","<#phi_{sc} - #phi_{tr}> (rad)");
205  h1_dPhiEleCl_propOut_barrel = bookH1(iBooker, "dPhiEleCl_propOut_barrel","ele #phi_{EleCl} - #phi_{tr}, prop from outermost, in barrel",nbindphimatch,dphimatchmin,dphimatchmax,"#phi_{elecl} - #phi_{tr} (rad)");
206  h1_dPhiEleCl_propOut_endcapsPos = bookH1(iBooker, "dPhiEleCl_propOut_endcapsPos","ele #phi_{EleCl} - #phi_{tr}, prop from outermost, in positive endcap",nbindphimatch,dphimatchmin,dphimatchmax,"#phi_{elecl} - #phi_{tr} (rad)");
207  h1_dPhiEleCl_propOut_endcapsNeg = bookH1(iBooker, "dPhiEleCl_propOut_endcapsNeg","ele #phi_{EleCl} - #phi_{tr}, prop from outermost, in negative endcap",nbindphimatch,dphimatchmin,dphimatchmax,"#phi_{elecl} - #phi_{tr} (rad)");
208  h1_Hoe_barrel = bookH1(iBooker, "Hoe_barrel","ele hadronic energy / em energy, in barrel", nbinhoe, hoemin, hoemax,"H/E","Events","ELE_LOGY E1 P") ;
209  h1_Hoe_endcaps = bookH1(iBooker, "Hoe_endcaps","ele hadronic energy / em energy, in endcaps", nbinhoe, hoemin, hoemax,"H/E","Events","ELE_LOGY E1 P") ;
210  py_HoeVsPhi = bookP1(iBooker, "HoeVsPhi","ele hadronic energy / em energy vs #phi",nbinphi2D,phimin,phimax,hoemin,hoemax,"#phi (rad)","<H/E>","E1 P") ;
211  h1_sclSigEtaEta_barrel = bookH1(iBooker, "sclSigEtaEta_barrel","ele sigma eta eta in barrel",100,0.,0.05,"sietaieta");
212  h1_sclSigEtaEta_endcaps = bookH1(iBooker, "sclSigEtaEta_endcaps","ele sigma eta eta in endcaps",100,0.,0.05,"sietaieta");
213  h1_sigIEtaIEta5x5_barrel = bookH1(iBooker, "sigIEtaIEta5x5_barrel","ele sigma ieta ieta 5x5 in barrel",100,0.,0.05,"sietaieta5x5");
214  h1_sigIEtaIEta5x5_endcaps = bookH1(iBooker, "sigIEtaIEta5x5_endcaps","ele sigma ieta ieta 5x5 in endcaps",100,0.,0.05,"sietaieta5x5");
215 
216  // fbrem
217  h1_fbrem = bookH1(iBooker, "fbrem","ele brem fraction",100,0.,1.,"P_{in} - P_{out} / P_{in}") ;
218  py_fbremVsEta = bookP1(iBooker, "fbremVsEta","ele brem fraction vs #eta",nbineta2D,etamin,etamax,0.,1.,"#eta","<P_{in} - P_{out} / P_{in}>") ;
219  py_fbremVsPhi = bookP1(iBooker, "fbremVsPhi","ele brem fraction vs #phi",nbinphi2D,phimin,phimax,0.,1.,"#phi (rad)","<P_{in} - P_{out} / P_{in}>") ;
220  h1_classes = bookH1(iBooker, "classes","ele electron classes",10,0.0,10.);
221 
222  // pflow
223  h1_mva = bookH1(iBooker, "mva","ele identification mva",100,-1.,1.,"mva");
224  h1_provenance = bookH1(iBooker, "provenance","ele provenance",5,-2.,3.,"provenance");
225 
226  // isolation
227  h1_tkSumPt_dr03 = bookH1(iBooker, "tkSumPt_dr03","tk isolation sum, dR=0.3",100,0.0,20.,"TkIsoSum (GeV/c)","Events","ELE_LOGY E1 P");
228  h1_ecalRecHitSumEt_dr03 = bookH1(iBooker, "ecalRecHitSumEt_dr03","ecal isolation sum, dR=0.3",100,0.0,20.,"EcalIsoSum (GeV)","Events","ELE_LOGY E1 P");
229  h1_hcalTowerSumEt_dr03 = bookH1(iBooker, "hcalTowerSumEt_dr03","hcal isolation sum, dR=0.3",100,0.0,20.,"HcalIsoSum (GeV)","Events","ELE_LOGY E1 P");
230 
231  // pf isolation
232  h1_PFch_dr03 = bookH1(iBooker, "PFch_dr03","Charged PF candidate sum, dR=0.3",100,0.0,20.,"PF charged (GeV/c)","Events","ELE_LOGY E1 P");
233  h1_PFem_dr03 = bookH1(iBooker, "PFem_dr03","Neutral EM PF candidate sum, dR=0.3",100,0.0,20.,"PF neutral EM (GeV)","Events","ELE_LOGY E1 P");
234  h1_PFnh_dr03 = bookH1(iBooker, "PFnh_dr03","Neutral Had PF candidate sum, dR=0.3",100,0.0,20.,"PF neutral Had (GeV)","Events","ELE_LOGY E1 P");
235 
236  // di-electron mass
237  setBookIndex(200) ;
238  h1_mee = bookH1(iBooker, "mee","ele pairs invariant mass", nbinmee, meemin, meemax,"m_{ee} (GeV/c^{2})");
239  h1_mee_os = bookH1(iBooker, "mee_os","ele pairs invariant mass, opposite sign", nbinmee, meemin, meemax,"m_{e^{+}e^{-}} (GeV/c^{2})");
240  h1_mee_os_bb = bookH1(iBooker, "mee_os_bb","ele pairs invariant mass, opposite sign, barrel-barrel", nbinmee, meemin, meemax,"m_{e^{+}e^{-}} (GeV/c^{2})");
241  h1_mee_os_ee = bookH1(iBooker, "mee_os_ee","ele pairs invariant mass, opposite sign, endcap-endcap", nbinmee, meemin, meemax,"m_{e^{+}e^{-}} (GeV/c^{2})");
242  h1_mee_os_eb = bookH1(iBooker, "mee_os_eb","ele pairs invariant mass, opposite sign, barrel-endcap", nbinmee, meemin, meemax,"m_{e^{+}e^{-}} (GeV/c^{2})");
243 
244  //===========================
245  // histos for matching and matched matched objects
246  //===========================
247 
248  // matching object
249  std::string matchingObjectType ;
250  Labels l;
252  if (std::string::npos != std::string(l.module).find("SuperCluster",0))
253  { matchingObjectType = "SC" ; }
254  if (matchingObjectType=="")
255  { edm::LogError("ElectronMcFakeValidator::beginJob")<<"Unknown matching object type !" ; }
256  else
257  { edm::LogInfo("ElectronMcFakeValidator::beginJob")<<"Matching object type: "<<matchingObjectType ; }
258 
259  // matching object distributions
260  h1_matchingObject_Eta = bookH1withSumw2(iBooker, "matchingObject_Eta",matchingObjectType+" #eta",nbineta,etamin,etamax,"#eta_{SC}");
261 
262 
263  h1_matchingObject_Pt = bookH1withSumw2(iBooker, "matchingObject_Pt",matchingObjectType+" pt",nbinpteff,5.,ptmax,"pt_{SC} (GeV/c)");
264  h1_matchingObject_Phi = bookH1withSumw2(iBooker, "matchingObject_Phi",matchingObjectType+" #phi",nbinphi,phimin,phimax,"#phi (rad)");
265 
266  h1_matchedObject_Eta = bookH1withSumw2(iBooker, "matchedObject_Eta","Efficiency vs matching SC #eta",nbineta,etamin,etamax,"#eta_{SC}");
267  h1_matchedObject_Pt = bookH1withSumw2(iBooker, "matchedObject_Pt","Efficiency vs matching SC E_{T}",nbinpteff,5.,ptmax,"pt_{SC} (GeV/c)");
268  h1_matchedObject_Phi = bookH1withSumw2(iBooker, "matchedObject_Phi","Efficiency vs matching SC #phi",nbinphi,phimin,phimax,"#phi (rad)");
269 
270 
271  }
272 
274 {
275  nEvents_++ ;
276 
278  iEvent.getByToken(electronCollection_,gsfElectrons) ;
280  iEvent.getByToken(matchingObjectCollection_,recoClusters) ;
282  iEvent.getByToken(trackCollection_,tracks);
284  iEvent.getByToken(gsftrackCollection_,gsfTracks);
286  iEvent.getByToken(vertexCollection_,vertices);
287  edm::Handle<reco::BeamSpot> recoBeamSpotHandle ;
288  iEvent.getByToken(beamSpotTag_,recoBeamSpotHandle) ;
289  const BeamSpot bs = *recoBeamSpotHandle ;
290 
291  edm::EventNumber_t ievt = iEvent.id().event();
292  edm::RunNumber_t irun = iEvent.id().run();
294 
295  edm::LogInfo("ElectronAnalyzer::analyze")
296  <<"Treating "<<gsfElectrons.product()->size()<<" electrons"
297  <<" from event "<<ievt<<" in run "<<irun<<" and lumiblock "<<ils ;
298  //h1_num_->Fill((*gsfElectrons).size()) ;
299 
300  // selected rec electrons
301  reco::GsfElectronCollection::const_iterator gsfIter ;
302  for
303  ( gsfIter=gsfElectrons->begin() ;
304  gsfIter!=gsfElectrons->end();
305  gsfIter++ )
306  {
307  // vertex TIP
308  double vertexTIP =
309  (gsfIter->vertex().x()-bs.position().x()) * (gsfIter->vertex().x()-bs.position().x()) +
310  (gsfIter->vertex().y()-bs.position().y()) * (gsfIter->vertex().y()-bs.position().y()) ;
311  vertexTIP = sqrt(vertexTIP) ;
312 
313  // select electrons
314  if (!selected(gsfIter,vertexTIP)) continue ;
315 
316  // invariant mass of 2 selected electrons
317  reco::GsfElectronCollection::const_iterator gsfIter2 ;
318  for
319  ( gsfIter2=gsfIter+1;
320  gsfIter2!=gsfElectrons->end() ;
321  gsfIter2++ )
322  {
323  if (!selected(gsfIter2,vertexTIP)) continue ;
324  float invMass = computeInvMass(*gsfIter,*gsfIter2) ;
325  h1_mee->Fill(invMass) ;
326  if ( ( (gsfIter->charge())*(gsfIter2->charge()) )<0. )
327  {
328  h1_mee_os->Fill(invMass) ;
329  if (gsfIter->isEB() && gsfIter2->isEB())
330  h1_mee_os_bb->Fill(invMass);
331  else if (gsfIter->isEE() && gsfIter2->isEE())
332  h1_mee_os_ee->Fill(invMass);
333  else
334  h1_mee_os_eb->Fill(invMass);
335  }
336  }
337 
338  // basic quantities
339  if (gsfIter->isEB()) h1_vertexPt_barrel->Fill( gsfIter->pt() );
340  if (gsfIter->isEE()) h1_vertexPt_endcaps->Fill( gsfIter->pt() );
341  h1_vertexEta->Fill( gsfIter->eta() );
342  h2_vertexEtaVsPhi->Fill( gsfIter->eta(), gsfIter->phi() );
343  h2_vertexXvsY->Fill( gsfIter->vertex().x(), gsfIter->vertex().y() );
344  h1_vertexZ->Fill( gsfIter->vertex().z() );
345 
346  // supercluster related distributions
347  reco::SuperClusterRef sclRef = gsfIter->superCluster() ;
348  // ALREADY DONE IN GSF ELECTRON CORE
349  double R=TMath::Sqrt(sclRef->x()*sclRef->x() + sclRef->y()*sclRef->y() +sclRef->z()*sclRef->z());
350  double Rt=TMath::Sqrt(sclRef->x()*sclRef->x() + sclRef->y()*sclRef->y());
351  h1_sclEt->Fill(sclRef->energy()*(Rt/R));
352 
353  // track related distributions
354  if (!readAOD_)
355  { // track extra does not exist in AOD
356  h1_foundHits->Fill( gsfIter->gsfTrack()->numberOfValidHits() );
357  py_foundHitsVsEta->Fill( gsfIter->eta(), gsfIter->gsfTrack()->numberOfValidHits() );
358  py_foundHitsVsPhi->Fill( gsfIter->phi(), gsfIter->gsfTrack()->numberOfValidHits() );
359  h1_lostHits->Fill( gsfIter->gsfTrack()->numberOfLostHits() );
360  py_lostHitsVsEta->Fill( gsfIter->eta(), gsfIter->gsfTrack()->numberOfLostHits() );
361  py_lostHitsVsPhi->Fill( gsfIter->phi(), gsfIter->gsfTrack()->numberOfLostHits() );
362  h1_chi2->Fill( gsfIter->gsfTrack()->normalizedChi2() );
363  py_chi2VsEta->Fill( gsfIter->eta(), gsfIter->gsfTrack()->normalizedChi2() );
364  py_chi2VsPhi->Fill( gsfIter->phi(), gsfIter->gsfTrack()->normalizedChi2() );
365  }
366 
367  // match distributions
368  if (gsfIter->isEB())
369  {
370  h1_Eop_barrel->Fill( gsfIter->eSuperClusterOverP() );
371  h1_EeleOPout_barrel->Fill( gsfIter->eEleClusterOverPout() );
372  h1_dEtaSc_propVtx_barrel->Fill(gsfIter->deltaEtaSuperClusterTrackAtVtx());
373  h1_dEtaEleCl_propOut_barrel->Fill(gsfIter->deltaEtaEleClusterTrackAtCalo());
374  h1_dPhiSc_propVtx_barrel->Fill(gsfIter->deltaPhiSuperClusterTrackAtVtx());
375  h1_dPhiEleCl_propOut_barrel->Fill(gsfIter->deltaPhiEleClusterTrackAtCalo());
376  h1_Hoe_barrel->Fill(gsfIter->hadronicOverEm());
377  h1_sclSigEtaEta_barrel->Fill( gsfIter->scSigmaEtaEta() );
378  h1_sigIEtaIEta5x5_barrel->Fill( gsfIter->full5x5_sigmaIetaIeta() );
379  }
380  if (gsfIter->isEE())
381  {
382  h1_Eop_endcaps->Fill( gsfIter->eSuperClusterOverP() );
383  h1_EeleOPout_endcaps->Fill( gsfIter->eEleClusterOverPout() );
384  if (gsfIter->eta() > 0) {
385  h1_dEtaSc_propVtx_endcapsPos->Fill(gsfIter->deltaEtaSuperClusterTrackAtVtx());
386  h1_dEtaEleCl_propOut_endcapsPos->Fill(gsfIter->deltaEtaEleClusterTrackAtCalo());
387  h1_dPhiSc_propVtx_endcapsPos->Fill(gsfIter->deltaPhiSuperClusterTrackAtVtx());
388  h1_dPhiEleCl_propOut_endcapsPos->Fill(gsfIter->deltaPhiEleClusterTrackAtCalo());
389  }
390  else {
391  h1_dEtaSc_propVtx_endcapsNeg->Fill(gsfIter->deltaEtaSuperClusterTrackAtVtx());
392  h1_dEtaEleCl_propOut_endcapsNeg->Fill(gsfIter->deltaEtaEleClusterTrackAtCalo());
393  h1_dPhiSc_propVtx_endcapsNeg->Fill(gsfIter->deltaPhiSuperClusterTrackAtVtx());
394  h1_dPhiEleCl_propOut_endcapsNeg->Fill(gsfIter->deltaPhiEleClusterTrackAtCalo());
395  }
396  h1_Hoe_endcaps->Fill(gsfIter->hadronicOverEm());
397  h1_sclSigEtaEta_endcaps->Fill( gsfIter->scSigmaEtaEta() );
398  h1_sigIEtaIEta5x5_endcaps->Fill( gsfIter->full5x5_sigmaIetaIeta() );
399  }
400  py_EopVsPhi->Fill( gsfIter->phi(), gsfIter->eSuperClusterOverP() );
401  py_dEtaSc_propVtxVsPhi->Fill(gsfIter->phi(), gsfIter->deltaEtaSuperClusterTrackAtVtx());
402  py_dPhiSc_propVtxVsPhi->Fill(gsfIter->phi(), gsfIter->deltaPhiSuperClusterTrackAtVtx());
403  py_HoeVsPhi->Fill(gsfIter->phi(), gsfIter->hadronicOverEm());
404 
405  // fbrem, classes
406  h1_fbrem->Fill(gsfIter->fbrem()) ;
407  py_fbremVsEta->Fill(gsfIter->eta(),gsfIter->fbrem()) ;
408  py_fbremVsPhi->Fill(gsfIter->phi(),gsfIter->fbrem()) ;
409  int eleClass = gsfIter->classification() ;
410  if (gsfIter->isEE()) eleClass+=5;
411  h1_classes->Fill(eleClass) ;
412 
413 
414  // pflow
415  h1_mva->Fill(gsfIter->mva_e_pi()) ;
416  if (gsfIter->ecalDrivenSeed()) h1_provenance->Fill(1.) ;
417  if (gsfIter->trackerDrivenSeed()) h1_provenance->Fill(-1.) ;
418  if (gsfIter->trackerDrivenSeed()||gsfIter->ecalDrivenSeed()) h1_provenance->Fill(0.);
419  if (gsfIter->trackerDrivenSeed()&&!gsfIter->ecalDrivenSeed()) h1_provenance->Fill(-2.);
420  if (!gsfIter->trackerDrivenSeed()&&gsfIter->ecalDrivenSeed()) h1_provenance->Fill(2.);
421 
422  // isolation
423  h1_tkSumPt_dr03->Fill(gsfIter->dr03TkSumPt());
424  h1_ecalRecHitSumEt_dr03->Fill(gsfIter->dr03EcalRecHitSumEt());
425  h1_hcalTowerSumEt_dr03->Fill(gsfIter->dr03HcalTowerSumEt());
426 
427  // PF isolation
428  GsfElectron::PflowIsolationVariables pfIso = gsfIter->pfIsolationVariables();
430  h1_PFem_dr03->Fill( pfIso.sumPhotonEt );
432 
433 
434  }
435 
436  // association matching object-reco electrons
437  int matchingObjectNum=0;
438  reco::SuperClusterCollection::const_iterator moIter ;
439  for
440  ( moIter=recoClusters->begin() ;
441  moIter!=recoClusters->end() ;
442  moIter++ )
443  {
444 // // number of matching objects
445  matchingObjectNum++;
446 
447  if
448  ( moIter->energy()/cosh(moIter->eta())>maxPtMatchingObject_ ||
449  std::abs(moIter->eta())> maxAbsEtaMatchingObject_ )
450  { continue ; }
451 
452 // // suppress the endcaps
453  h1_matchingObject_Eta->Fill( moIter->eta() );
454  h1_matchingObject_Pt->Fill( moIter->energy()/cosh(moIter->eta()) );
455  h1_matchingObject_Phi->Fill( moIter->phi() );
456 
457  bool okGsfFound = false ;
458  double gsfOkRatio = 999999999. ;
459  reco::GsfElectron bestGsfElectron ;
460  reco::GsfElectronCollection::const_iterator gsfIter ;
461  for
462  ( gsfIter=gsfElectrons->begin() ;
463  gsfIter!=gsfElectrons->end() ;
464  gsfIter++ )
465  {
466 
467  double vertexTIP =
468  (gsfIter->vertex().x()-bs.position().x()) * (gsfIter->vertex().x()-bs.position().x()) +
469  (gsfIter->vertex().y()-bs.position().y()) * (gsfIter->vertex().y()-bs.position().y()) ;
470  vertexTIP = sqrt(vertexTIP) ;
471 
472  // select electrons
473  if (!selected(gsfIter,vertexTIP)) continue ;
474 
475  // matching with a cone in eta phi
476  if ( matchingCondition_ == "Cone" )
477  {
478  double dphi = gsfIter->phi()-moIter->phi() ;
479  if (std::abs(dphi)>CLHEP::pi)
480  { dphi = dphi < 0? (CLHEP::twopi) + dphi : dphi - CLHEP::twopi ; }
481  double deltaR = sqrt(pow((moIter->eta()-gsfIter->eta()),2) + pow(dphi,2)) ;
482  if ( deltaR < deltaR_ )
483  {
484  double tmpGsfRatio = gsfIter->p()/moIter->energy() ;
485  if ( std::abs(tmpGsfRatio-1) < std::abs(gsfOkRatio-1) )
486  {
487  gsfOkRatio = tmpGsfRatio;
488  bestGsfElectron=*gsfIter;
489  okGsfFound = true;
490  }
491  }
492  }
493  } // loop over rec ele to look for the best one
494  if (okGsfFound)
495  {
496  // generated distributions for matched electrons
497  h1_matchedObject_Eta->Fill( moIter->eta() );
498  h1_matchedObject_Pt->Fill( moIter->energy()/cosh(moIter->eta()) );
499  h1_matchedObject_Phi->Fill( moIter->phi() );
500 
501  //classes
502  }
503 
504  } // loop overmatching object
505 
506 
507  }
508 
511  const reco::GsfElectron & e2 )
512  {
513  math::XYZTLorentzVector p12 = e1.p4()+e2.p4() ;
514  float mee2 = p12.Dot(p12) ;
515  float invMass = mee2 > 0. ? sqrt(mee2) : 0;
516  return invMass ;
517  }
518 
519 bool ElectronAnalyzer::selected( const reco::GsfElectronCollection::const_iterator & gsfIter , double vertexTIP )
520  {
521  if ((Selection_>0)&&generalCut(gsfIter)) return false ;
522  if ((Selection_>=1)&&etCut(gsfIter)) return false ;
523  if ((Selection_>=2)&&isolationCut(gsfIter,vertexTIP)) return false ;
524  if ((Selection_>=3)&&idCut(gsfIter)) return false ;
525  return true ;
526  }
527 
528 bool ElectronAnalyzer::generalCut( const reco::GsfElectronCollection::const_iterator & gsfIter)
529  {
530  if (std::abs(gsfIter->eta())>maxAbsEta_) return true ;
531  if (gsfIter->pt()<minPt_) return true ;
532 
533  if (gsfIter->isEB() && isEE_) return true ;
534  if (gsfIter->isEE() && isEB_) return true ;
535  if (gsfIter->isEBEEGap() && isNotEBEEGap_) return true ;
536 
537  if (gsfIter->ecalDrivenSeed() && isTrackerDriven_) return true ;
538  if (gsfIter->trackerDrivenSeed() && isEcalDriven_) return true ;
539 
540  return false ;
541  }
542 
543 bool ElectronAnalyzer::etCut( const reco::GsfElectronCollection::const_iterator & gsfIter )
544  {
545  if (gsfIter->superCluster()->energy()/cosh(gsfIter->superCluster()->eta())<minEt_) return true ;
546 
547  return false ;
548  }
549 
550 bool ElectronAnalyzer::isolationCut( const reco::GsfElectronCollection::const_iterator & gsfIter, double vertexTIP )
551  {
552  if (gsfIter->isEB() && vertexTIP > tipMaxBarrel_) return true ;
553  if (gsfIter->isEE() && vertexTIP > tipMaxEndcaps_) return true ;
554 
555  if (gsfIter->dr03TkSumPt() > tkIso03Max_) return true ;
556  if (gsfIter->isEB() && gsfIter->dr03HcalDepth1TowerSumEt() > hcalIso03Depth1MaxBarrel_) return true ;
557  if (gsfIter->isEE() && gsfIter->dr03HcalDepth1TowerSumEt() > hcalIso03Depth1MaxEndcaps_) return true ;
558  if (gsfIter->isEE() && gsfIter->dr03HcalDepth2TowerSumEt() > hcalIso03Depth2MaxEndcaps_) return true ;
559  if (gsfIter->isEB() && gsfIter->dr03EcalRecHitSumEt() > ecalIso03MaxBarrel_) return true ;
560  if (gsfIter->isEE() && gsfIter->dr03EcalRecHitSumEt() > ecalIso03MaxEndcaps_) return true ;
561 
562  return false ;
563  }
564 
565 bool ElectronAnalyzer::idCut( const reco::GsfElectronCollection::const_iterator & gsfIter )
566  {
567  if (gsfIter->isEB() && gsfIter->eSuperClusterOverP() < eOverPMinBarrel_) return true ;
568  if (gsfIter->isEB() && gsfIter->eSuperClusterOverP() > eOverPMaxBarrel_) return true ;
569  if (gsfIter->isEE() && gsfIter->eSuperClusterOverP() < eOverPMinEndcaps_) return true ;
570  if (gsfIter->isEE() && gsfIter->eSuperClusterOverP() > eOverPMaxEndcaps_) return true ;
571  if (gsfIter->isEB() && std::abs(gsfIter->deltaEtaSuperClusterTrackAtVtx()) < dEtaMinBarrel_) return true ;
572  if (gsfIter->isEB() && std::abs(gsfIter->deltaEtaSuperClusterTrackAtVtx()) > dEtaMaxBarrel_) return true ;
573  if (gsfIter->isEE() && std::abs(gsfIter->deltaEtaSuperClusterTrackAtVtx()) < dEtaMinEndcaps_) return true ;
574  if (gsfIter->isEE() && std::abs(gsfIter->deltaEtaSuperClusterTrackAtVtx()) > dEtaMaxEndcaps_) return true ;
575  if (gsfIter->isEB() && std::abs(gsfIter->deltaPhiSuperClusterTrackAtVtx()) < dPhiMinBarrel_) return true ;
576  if (gsfIter->isEB() && std::abs(gsfIter->deltaPhiSuperClusterTrackAtVtx()) > dPhiMaxBarrel_) return true ;
577  if (gsfIter->isEE() && std::abs(gsfIter->deltaPhiSuperClusterTrackAtVtx()) < dPhiMinEndcaps_) return true ;
578  if (gsfIter->isEE() && std::abs(gsfIter->deltaPhiSuperClusterTrackAtVtx()) > dPhiMaxEndcaps_) return true ;
579  if (gsfIter->isEB() && gsfIter->scSigmaIEtaIEta() < sigIetaIetaMinBarrel_) return true ;
580  if (gsfIter->isEB() && gsfIter->scSigmaIEtaIEta() > sigIetaIetaMaxBarrel_) return true ;
581  if (gsfIter->isEE() && gsfIter->scSigmaIEtaIEta() < sigIetaIetaMinEndcaps_) return true ;
582  if (gsfIter->isEE() && gsfIter->scSigmaIEtaIEta() > sigIetaIetaMaxEndcaps_) return true ;
583  if (gsfIter->isEB() && gsfIter->hadronicOverEm() > hadronicOverEmMaxBarrel_) return true ;
584  if (gsfIter->isEE() && gsfIter->hadronicOverEm() > hadronicOverEmMaxEndcaps_) return true ;
585 
586  return false ;
587  }
RunNumber_t run() const
Definition: EventID.h:39
MonitorElement * h1_foundHits
T getParameter(std::string const &) const
EventNumber_t event() const
Definition: EventID.h:41
MonitorElement * h1_dEtaSc_propVtx_endcapsPos
double hadronicOverEmMaxEndcaps_
MonitorElement * h1_mee_os
const LorentzVector & p4(P4Kind kind) const
Definition: GsfElectron.cc:225
bool selected(const reco::GsfElectronCollection::const_iterator &gsfIter, double vertexTIP)
MonitorElement * h1_dPhiSc_propVtx_barrel
unsigned int nEvents_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
MonitorElement * h1_vertexPt_barrel
MonitorElement * h1_PFch_dr03
MonitorElement * py_lostHitsVsEta
MonitorElement * h1_mee_os_bb
MonitorElement * h1_sclSigEtaEta_barrel
MonitorElement * py_chi2VsEta
edm::EDGetTokenT< reco::SuperClusterCollection > matchingObjectCollection_
MonitorElement * h1_vertexEta
MonitorElement * py_chi2VsPhi
MonitorElement * h1_Eop_endcaps
MonitorElement * bookH1withSumw2(DQMStore::IBooker &, const std::string &name, const std::string &title, int nchX, double lowX, double highX, const std::string &titleX="", const std::string &titleY="Events", Option_t *option="E1 P")
unsigned long long EventNumber_t
MonitorElement * h1_ecalRecHitSumEt_dr03
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:63
MonitorElement * h1_hcalTowerSumEt_dr03
MonitorElement * h1_dPhiEleCl_propOut_endcapsNeg
MonitorElement * h1_matchingObject_Eta
MonitorElement * h1_Hoe_barrel
MonitorElement * bookH2(DQMStore::IBooker &, const std::string &name, const std::string &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const std::string &titleX="", const std::string &titleY="", Option_t *option="COLZ")
edm::InputTag triggerResults_
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
MonitorElement * py_HoeVsPhi
MonitorElement * h1_matchedObject_Pt
double sigIetaIetaMinBarrel_
unsigned int LuminosityBlockNumber_t
MonitorElement * h1_matchedObject_Phi
MonitorElement * h1_PFem_dr03
MonitorElement * h1_mee_os_ee
void Fill(long long x)
const Double_t pi
MonitorElement * h1_tkSumPt_dr03
MonitorElement * h1_dEtaEleCl_propOut_endcapsPos
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
double sigIetaIetaMaxBarrel_
int iEvent
Definition: GenABIO.cc:230
MonitorElement * h2_vertexXvsY
MonitorElement * h1_dPhiSc_propVtx_endcapsPos
MonitorElement * py_fbremVsEta
MonitorElement * h1_provenance
MonitorElement * h1_dEtaEleCl_propOut_barrel
MonitorElement * py_EopVsPhi
MonitorElement * h1_PFnh_dr03
MonitorElement * h1_Eop_barrel
T sqrt(T t)
Definition: SSEVec.h:18
float sumPhotonEt
sum pt of PF photons // old float photonIso ;
Definition: GsfElectron.h:627
double sigIetaIetaMinEndcaps_
MonitorElement * py_dEtaSc_propVtxVsPhi
double sigIetaIetaMaxEndcaps_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::string matchingCondition_
float sumNeutralHadronEt
sum pt of neutral hadrons // old float neutralHadronIso ;
Definition: GsfElectron.h:626
MonitorElement * h1_dPhiEleCl_propOut_endcapsPos
char const * module
Definition: ProductLabels.h:5
double hcalIso03Depth1MaxBarrel_
MonitorElement * h1_Hoe_endcaps
MonitorElement * bookP1(DQMStore::IBooker &, const std::string &name, const std::string &title, int nchX, double lowX, double highX, double lowY, double highY, const std::string &titleX="", const std::string &titleY="", Option_t *option="E1 P")
MonitorElement * h1_dEtaEleCl_propOut_endcapsNeg
MonitorElement * h1_dPhiSc_propVtx_endcapsNeg
ElectronAnalyzer(const edm::ParameterSet &conf)
~ElectronAnalyzer() override
edm::EDGetTokenT< reco::GsfTrackCollection > gsftrackCollection_
MonitorElement * h1_vertexPt_endcaps
MonitorElement * py_lostHitsVsPhi
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
MonitorElement * h1_vertexZ
Float e1
Definition: deltaR.h:20
MonitorElement * py_dPhiSc_propVtxVsPhi
double hcalIso03Depth1MaxEndcaps_
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:279
MonitorElement * py_fbremVsPhi
T const * product() const
Definition: Handle.h:81
MonitorElement * h1_dEtaSc_propVtx_endcapsNeg
MonitorElement * py_foundHitsVsPhi
bool etCut(const reco::GsfElectronCollection::const_iterator &gsfIter)
MonitorElement * h1_fbrem
edm::EDGetTokenT< reco::TrackCollection > trackCollection_
MonitorElement * h1_chi2
double maxAbsEtaMatchingObject_
MonitorElement * h1_lostHits
MonitorElement * h2_vertexEtaVsPhi
MonitorElement * h1_EeleOPout_endcaps
MonitorElement * h1_mee
edm::EDGetTokenT< reco::GsfElectronCollection > electronCollection_
Float e2
Definition: deltaR.h:21
MonitorElement * h1_classes
MonitorElement * h1_sclEt
void labelsForToken(EDGetToken iToken, Labels &oLabels) const
MonitorElement * h1_sigIEtaIEta5x5_barrel
MonitorElement * h1_EeleOPout_barrel
edm::EventID id() const
Definition: EventBase.h:60
std::string outputInternalPath_
bool generalCut(const reco::GsfElectronCollection::const_iterator &gsfIter)
MonitorElement * h1_dEtaSc_propVtx_barrel
float computeInvMass(const reco::GsfElectron &e1, const reco::GsfElectron &e2)
fixed size matrix
MonitorElement * h1_matchingObject_Phi
MonitorElement * h1_mee_os_eb
edm::EDGetTokenT< reco::BeamSpot > beamSpotTag_
MonitorElement * h1_sigIEtaIEta5x5_endcaps
MonitorElement * h1_sclSigEtaEta_endcaps
const Point & position() const
position
Definition: BeamSpot.h:62
MonitorElement * bookH1(DQMStore::IBooker &, const std::string &name, const std::string &title, int nchX, double lowX, double highX, const std::string &titleX="", const std::string &titleY="Events", Option_t *option="E1 P")
unsigned int RunNumber_t
MonitorElement * py_foundHitsVsEta
edm::EDGetTokenT< reco::VertexCollection > vertexCollection_
bool idCut(const reco::GsfElectronCollection::const_iterator &gsfIter)
double hcalIso03Depth2MaxEndcaps_
float sumChargedHadronPt
sum-pt of charged Hadron // old float chargedHadronIso ;
Definition: GsfElectron.h:625
void analyze(const edm::Event &e, const edm::EventSetup &c) override
double hadronicOverEmMaxBarrel_
MonitorElement * h1_matchedObject_Eta
MonitorElement * h1_matchingObject_Pt
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
MonitorElement * h1_dPhiEleCl_propOut_barrel
MonitorElement * h1_mva
Definition: Run.h:43
bool isolationCut(const reco::GsfElectronCollection::const_iterator &gsfIter, double vertexTIP)