CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ElectronMcMiniAODSignalValidator.cc
Go to the documentation of this file.
1 // system include files
2 #include <memory>
3 
4 // user include files
9 
12 
14 
20 
23 
24 #include "CLHEP/Units/GlobalPhysicalConstants.h"
25 #include "TMath.h"
26 #include "TFile.h"
27 #include "TH1F.h"
28 #include "TH1I.h"
29 #include "TH2F.h"
30 #include "TProfile.h"
31 #include "TTree.h"
32 #include <vector>
33 #include <iostream>
34 #include <typeinfo>
35 
36 using namespace reco;
37 using namespace pat;
38 
40 {
41  mcTruthCollection_ = consumes<edm::View<reco::GenParticle> >(iConfig.getParameter<edm::InputTag>("mcTruthCollection"));
42  electronToken_ = consumes<pat::ElectronCollection>(iConfig.getParameter<edm::InputTag>("electrons"));
43 
44  maxPt_ = iConfig.getParameter<double>("MaxPt");
45  maxAbsEta_ = iConfig.getParameter<double>("MaxAbsEta");
46  deltaR_ = iConfig.getParameter<double>("DeltaR");
47  deltaR2_ = deltaR_ * deltaR_;
48  matchingIDs_ = iConfig.getParameter<std::vector<int> >("MatchingID");
49  matchingMotherIDs_ = iConfig.getParameter<std::vector<int> >("MatchingMotherID");
50  outputInternalPath_ = iConfig.getParameter<std::string>("OutputFolderName") ;
51 
52  // histos bining and limits
53 
54  edm::ParameterSet histosSet = iConfig.getParameter<edm::ParameterSet>("histosCfg") ;
55 
56  xyz_nbin=histosSet.getParameter<int>("Nbinxyz");
57 
58  pt_nbin=histosSet.getParameter<int>("Nbinpt");
59  pt2D_nbin=histosSet.getParameter<int>("Nbinpt2D");
60  pteff_nbin=histosSet.getParameter<int>("Nbinpteff");
61  pt_max=histosSet.getParameter<double>("Ptmax");
62 
63  fhits_nbin=histosSet.getParameter<int>("Nbinfhits");
64  fhits_max=histosSet.getParameter<double>("Fhitsmax");
65 
66  eta_nbin=histosSet.getParameter<int>("Nbineta");
67  eta2D_nbin=histosSet.getParameter<int>("Nbineta2D");
68  eta_min=histosSet.getParameter<double>("Etamin");
69  eta_max=histosSet.getParameter<double>("Etamax");
70 
71  detamatch_nbin=histosSet.getParameter<int>("Nbindetamatch");
72  detamatch2D_nbin=histosSet.getParameter<int>("Nbindetamatch2D");
73  detamatch_min=histosSet.getParameter<double>("Detamatchmin");
74  detamatch_max=histosSet.getParameter<double>("Detamatchmax");
75 
76  dphi_nbin=histosSet.getParameter<int>("Nbindphi");
77  dphi_min=histosSet.getParameter<double>("Dphimin");
78  dphi_max=histosSet.getParameter<double>("Dphimax");
79 
80  dphimatch_nbin=histosSet.getParameter<int>("Nbindphimatch");
81  dphimatch2D_nbin=histosSet.getParameter<int>("Nbindphimatch2D");
82  dphimatch_min=histosSet.getParameter<double>("Dphimatchmin");
83  dphimatch_max=histosSet.getParameter<double>("Dphimatchmax");
84 
85  hoe_nbin= histosSet.getParameter<int>("Nbinhoe");
86  hoe_min=histosSet.getParameter<double>("Hoemin");
87  hoe_max=histosSet.getParameter<double>("Hoemax");
88 
89  mee_nbin= histosSet.getParameter<int>("Nbinmee");
90  mee_min=histosSet.getParameter<double>("Meemin");
91  mee_max=histosSet.getParameter<double>("Meemax");
92 
93  poptrue_nbin= histosSet.getParameter<int>("Nbinpoptrue");
94  poptrue_min=histosSet.getParameter<double>("Poptruemin");
95  poptrue_max=histosSet.getParameter<double>("Poptruemax");
96 
97  set_EfficiencyFlag=histosSet.getParameter<bool>("EfficiencyFlag");
98  set_StatOverflowFlag=histosSet.getParameter<bool>("StatOverflowFlag");
99 
100  // so to please coverity...
101 
102  h1_recEleNum = 0 ;
103 
104  h1_ele_vertexPt = 0 ;
105  h1_ele_vertexEta = 0 ;
107 
111 
114 
115  h2_ele_PoPtrueVsEta = 0 ;
117 
118  h1_ele_HoE_mAOD = 0 ;
121  h1_ele_mee_all = 0 ;
122  h1_ele_mee_os = 0 ;
123 
124  h1_ele_fbrem_mAOD = 0 ;
127 
134 
144 
145 
146 }
147 
149 {
150 }
151 
153  {
155 
156  setBookIndex(-1) ;
157  setBookPrefix("h") ;
160 
161  // rec event collections sizes
162  h1_recEleNum = bookH1(iBooker, "recEleNum","# rec electrons",11, -0.5,10.5,"N_{ele}");
163  // matched electrons
164  setBookPrefix("h_mc") ;
165  setBookPrefix("h_ele") ;
166  h1_ele_vertexPt = bookH1withSumw2(iBooker, "vertexPt","ele transverse momentum",pt_nbin,0.,pt_max,"p_{T vertex} (GeV/c)");
167  h1_ele_vertexEta = bookH1withSumw2(iBooker, "vertexEta","ele momentum eta",eta_nbin,eta_min,eta_max,"#eta");
168  h1_ele_vertexPt_nocut = bookH1withSumw2(iBooker, "vertexPt_nocut","pT of prunned electrons",pt_nbin,0.,20.,"p_{T vertex} (GeV/c)");
169  h2_ele_PoPtrueVsEta = bookH2withSumw2(iBooker, "PoPtrueVsEta","ele momentum / gen momentum vs eta",eta2D_nbin,eta_min,eta_max,50,poptrue_min,poptrue_max);
170 // h2_ele_sigmaIetaIetaVsPt = bookH2(iBooker,"sigmaIetaIetaVsPt","SigmaIetaIeta vs pt",pt_nbin,0.,pt_max,100,0.,0.05);
171  h2_ele_sigmaIetaIetaVsPt = bookH2(iBooker,"sigmaIetaIetaVsPt","SigmaIetaIeta vs pt",100,0.,pt_max,100,0.,0.05);
172 
173  // all electrons
174  setBookPrefix("h_ele") ;
175  h1_ele_mee_all = bookH1withSumw2(iBooker, "mee_all","ele pairs invariant mass, all reco electrons",mee_nbin, mee_min, mee_max,"m_{ee} (GeV/c^{2})","Events","ELE_LOGY E1 P");
176  h1_ele_mee_os = bookH1withSumw2(iBooker, "mee_os","ele pairs invariant mass, opp. sign",mee_nbin, mee_min, mee_max,"m_{e^{+}e^{-}} (GeV/c^{2})","Events","ELE_LOGY E1 P");
177 
178  // matched electron, superclusters
179  setBookPrefix("h_scl") ;
180  h1_scl_SigIEtaIEta_mAOD = bookH1withSumw2(iBooker, "SigIEtaIEta_mAOD","ele supercluster sigma ieta ieta",100,0.,0.05,"#sigma_{i#eta i#eta}","Events","ELE_LOGY E1 P");
181  h1_scl_SigIEtaIEta_mAOD_barrel = bookH1withSumw2(iBooker, "SigIEtaIEta_mAOD_barrel","ele supercluster sigma ieta ieta, barrel",100,0.,0.05,"#sigma_{i#eta i#eta}","Events","ELE_LOGY E1 P");
182  h1_scl_SigIEtaIEta_mAOD_endcaps = bookH1withSumw2(iBooker, "SigIEtaIEta_mAOD_endcaps","ele supercluster sigma ieta ieta, endcaps",100,0.,0.05,"#sigma_{i#eta i#eta}","Events","ELE_LOGY E1 P");
183 
184  // matched electron, gsf tracks
185  setBookPrefix("h_ele") ;
186  h2_ele_foundHitsVsEta = bookH2(iBooker, "foundHitsVsEta","ele track # found hits vs eta",eta2D_nbin,eta_min,eta_max,fhits_nbin,0.,fhits_max);
187  h2_ele_foundHitsVsEta_mAOD = bookH2(iBooker, "foundHitsVsEta_mAOD","ele track # found hits vs eta",eta2D_nbin,eta_min,eta_max,fhits_nbin,0.,fhits_max);
188 
189  // matched electrons, matching
190  setBookPrefix("h_ele") ;
191  h1_ele_HoE_mAOD = bookH1withSumw2(iBooker, "HoE_mAOD","ele hadronic energy / em energy",hoe_nbin, hoe_min, hoe_max,"H/E","Events","ELE_LOGY E1 P") ;
192  h1_ele_HoE_mAOD_barrel = bookH1withSumw2(iBooker, "HoE_mAOD_barrel","ele hadronic energy / em energy, barrel",hoe_nbin, hoe_min, hoe_max,"H/E","Events","ELE_LOGY E1 P") ;
193  h1_ele_HoE_mAOD_endcaps = bookH1withSumw2(iBooker, "HoE_mAOD_endcaps","ele hadronic energy / em energy, endcaps",hoe_nbin, hoe_min, hoe_max,"H/E","Events","ELE_LOGY E1 P") ;
194  h1_ele_dEtaSc_propVtx_mAOD = bookH1withSumw2(iBooker, "dEtaSc_propVtx_mAOD","ele #eta_{sc} - #eta_{tr}, prop from vertex",detamatch_nbin,detamatch_min,detamatch_max,"#eta_{sc} - #eta_{tr}","Events","ELE_LOGY E1 P");
195  h1_ele_dEtaSc_propVtx_mAOD_barrel = bookH1withSumw2(iBooker, "dEtaSc_propVtx_mAOD_barrel","ele #eta_{sc} - #eta_{tr}, prop from vertex, barrel",detamatch_nbin,detamatch_min,detamatch_max,"#eta_{sc} - #eta_{tr}","Events","ELE_LOGY E1 P");
196  h1_ele_dEtaSc_propVtx_mAOD_endcaps = bookH1withSumw2(iBooker, "dEtaSc_propVtx_mAOD_endcaps","ele #eta_{sc} - #eta_{tr}, prop from vertex, endcaps",detamatch_nbin,detamatch_min,detamatch_max,"#eta_{sc} - #eta_{tr}","Events","ELE_LOGY E1 P");
197  h1_ele_dPhiCl_propOut_mAOD = bookH1withSumw2(iBooker, "dPhiCl_propOut_mAOD","ele #phi_{cl} - #phi_{tr}, prop from outermost",dphimatch_nbin,dphimatch_min,dphimatch_max,"#phi_{seedcl} - #phi_{tr} (rad)","Events","ELE_LOGY E1 P");
198  h1_ele_dPhiCl_propOut_mAOD_barrel = bookH1withSumw2(iBooker, "dPhiCl_propOut_mAOD_barrel","ele #phi_{cl} - #phi_{tr}, prop from outermost, barrel",dphimatch_nbin,dphimatch_min,dphimatch_max,"#phi_{seedcl} - #phi_{tr} (rad)","Events","ELE_LOGY E1 P");
199  h1_ele_dPhiCl_propOut_mAOD_endcaps = bookH1withSumw2(iBooker, "dPhiCl_propOut_mAOD_endcaps","ele #phi_{cl} - #phi_{tr}, prop from outermost, endcaps",dphimatch_nbin,dphimatch_min,dphimatch_max,"#phi_{seedcl} - #phi_{tr} (rad)","Events","ELE_LOGY E1 P");
200 
201  // fbrem
202  h1_ele_fbrem_mAOD = bookH1withSumw2(iBooker, "fbrem_mAOD","ele brem fraction, mode of GSF components",100,0.,1.,"P_{in} - P_{out} / P_{in}");
203  h1_ele_fbrem_mAOD_barrel = bookH1withSumw2(iBooker, "fbrem_mAOD_barrel","ele brem fraction for barrel, mode of GSF components", 100, 0.,1.,"P_{in} - P_{out} / P_{in}");
204  h1_ele_fbrem_mAOD_endcaps = bookH1withSumw2(iBooker, "fbrem_mAOD_endcaps", "ele brem franction for endcaps, mode of GSF components", 100, 0.,1.,"P_{in} - P_{out} / P_{in}");
205 
206  // -- pflow over pT
207  h1_ele_chargedHadronRelativeIso_mAOD = bookH1withSumw2(iBooker, "chargedHadronRelativeIso_mAOD","chargedHadronRelativeIso",100,0.0,2.,"chargedHadronRelativeIso","Events","ELE_LOGY E1 P");
208  h1_ele_chargedHadronRelativeIso_mAOD_barrel = bookH1withSumw2(iBooker, "chargedHadronRelativeIso_mAOD_barrel","chargedHadronRelativeIso for barrel",100,0.0,2.,"chargedHadronRelativeIso_barrel","Events","ELE_LOGY E1 P");
209  h1_ele_chargedHadronRelativeIso_mAOD_endcaps = bookH1withSumw2(iBooker, "chargedHadronRelativeIso_mAOD_endcaps","chargedHadronRelativeIso for endcaps",100,0.0,2.,"chargedHadronRelativeIso_endcaps","Events","ELE_LOGY E1 P");
210  h1_ele_neutralHadronRelativeIso_mAOD = bookH1withSumw2(iBooker, "neutralHadronRelativeIso_mAOD","neutralHadronRelativeIso",100,0.0,2.,"neutralHadronRelativeIso","Events","ELE_LOGY E1 P");
211  h1_ele_neutralHadronRelativeIso_mAOD_barrel = bookH1withSumw2(iBooker, "neutralHadronRelativeIso_mAOD_barrel","neutralHadronRelativeIso for barrel",100,0.0,2.,"neutralHadronRelativeIso_barrel","Events","ELE_LOGY E1 P");
212  h1_ele_neutralHadronRelativeIso_mAOD_endcaps = bookH1withSumw2(iBooker, "neutralHadronRelativeIso_mAOD_endcaps","neutralHadronRelativeIso for endcaps",100,0.0,2.,"neutralHadronRelativeIso_endcaps","Events","ELE_LOGY E1 P");
213  h1_ele_photonRelativeIso_mAOD = bookH1withSumw2(iBooker, "photonRelativeIso_mAOD","photonRelativeIso",100,0.0,2.,"photonRelativeIso","Events","ELE_LOGY E1 P");
214  h1_ele_photonRelativeIso_mAOD_barrel = bookH1withSumw2(iBooker, "photonRelativeIso_mAOD_barrel","photonRelativeIso for barrel",100,0.0,2.,"photonRelativeIso_barrel","Events","ELE_LOGY E1 P");
215  h1_ele_photonRelativeIso_mAOD_endcaps = bookH1withSumw2(iBooker, "photonRelativeIso_mAOD_endcaps","photonRelativeIso for endcaps",100,0.0,2.,"photonRelativeIso_endcaps","Events","ELE_LOGY E1 P");
216 
217  }
218 
220 {
221  // get collections
223  iEvent.getByToken(electronToken_, electrons);
224 
226  iEvent.getByToken(mcTruthCollection_, genParticles) ;
227 
228  edm::LogInfo("ElectronMcSignalValidatorMiniAOD::analyze")
229  <<"Treating event "<<iEvent.id()
230  <<" with "<<electrons.product()->size()<<" electrons" ;
231  h1_recEleNum->Fill((*electrons).size()) ;
232 
233  //===============================================
234  // all rec electrons
235  //===============================================
236 
237  pat::Electron gsfElectron ;
238 
239 // for(std::vector<pat::Electron>::const_iterator el1=electrons->begin(); el1!=electrons->end(); el1++) {
240  pat::ElectronCollection::const_iterator el1 ;
241  pat::ElectronCollection::const_iterator el2 ;
242  for(el1=electrons->begin(); el1!=electrons->end(); el1++) {
243 // for (std::vector<pat::Electron>::const_iterator el2=el1+1 ; el2!=electrons->end() ; el2++ )
244  for (el2=el1+1 ; el2!=electrons->end() ; el2++ )
245  {
246  math::XYZTLorentzVector p12 = el1->p4()+el2->p4();
247  float mee2 = p12.Dot(p12);
248  h1_ele_mee_all->Fill(sqrt(mee2));
249  if ( el1->charge() * el2->charge() < 0. )
250  {
251  h1_ele_mee_os->Fill(sqrt(mee2));
252  }
253  }
254  }
255 
256  //===============================================
257  // charge mis-ID
258  //===============================================
259 
260  int mcNum=0, gamNum=0, eleNum=0 ;
261 // bool matchingID;//, matchingMotherID ;
262  bool matchingMotherID ;
263 
264  //===============================================
265  // association mc-reco
266  //===============================================
267 
268  for(size_t i=0; i<genParticles->size(); i++) {
269  // number of mc particles
270  mcNum++ ;
271 
272  // counts photons
273  if ( (*genParticles)[i].pdgId() == 22 )
274  { gamNum++ ; }
275 
276  // select requested mother matching gen particle
277  // always include single particle with no mother
278  const Candidate * mother = (*genParticles)[i].mother(0) ;
279  matchingMotherID = false ;
280  for ( unsigned int ii=0 ; ii<matchingMotherIDs_.size() ; ii++ ) {
281  if ( (mother == 0) || ((mother != 0) && mother->pdgId() == matchingMotherIDs_[ii]) )
282  { matchingMotherID = true ;
283 // std::cout << "matchingMotherID :" << matchingMotherIDs_[ii] << std::endl ;
284  }
285  }
286  if (!matchingMotherID) continue ;
287 
288  // electron preselection
289  if ((*genParticles)[i].pt()> maxPt_ || std::abs((*genParticles)[i].eta())> maxAbsEta_)
290  { continue ; }
291  eleNum++;
292 
293  // find best matched electron
294  bool okGsfFound = false ;
295  bool passMiniAODSelection = true ;
296  double gsfOkRatio = 999999. ;
297  pat::Electron bestGsfElectron ;
298  for (const pat::Electron &el : *electrons ) {
299  double dphi = el.phi()-(*genParticles)[i].phi() ;
300  if (std::abs(dphi)>CLHEP::pi)
301  { dphi = dphi < 0? (CLHEP::twopi) + dphi : dphi - CLHEP::twopi ; }
302  double deltaR2 = (el.eta()-(*genParticles)[i].eta()) * (el.eta()-(*genParticles)[i].eta()) + dphi * dphi;
303  if ( deltaR2 < deltaR2_ )
304  {
305  if ( ( ((*genParticles)[i].pdgId() == 11) && (el.charge() < 0.) ) ||
306  ( ((*genParticles)[i].pdgId() == -11) && (el.charge() > 0.) ) )
307  {
308  double tmpGsfRatio = el.p()/(*genParticles)[i].p() ;
309  if ( std::abs(tmpGsfRatio-1) < std::abs(gsfOkRatio-1) )
310  {
311  gsfOkRatio = tmpGsfRatio;
312  bestGsfElectron=el;
313  okGsfFound = true;
314  }
315  }
316  }
317  }
318 
319  if (! okGsfFound) continue ;
320 
321  //------------------------------------
322  // analysis when the mc track is found
323  //------------------------------------
324  passMiniAODSelection = bestGsfElectron.pt() >= 5.;
325 
326  // electron related distributions
327  h1_ele_vertexPt->Fill( bestGsfElectron.pt() );
328  h1_ele_vertexEta->Fill( bestGsfElectron.eta() );
329  if ( (bestGsfElectron.scSigmaIEtaIEta()==0.) && (bestGsfElectron.fbrem()==0.) ) h1_ele_vertexPt_nocut->Fill( bestGsfElectron.pt() );
330 
331  // generated distributions for matched electrons
332  h2_ele_PoPtrueVsEta->Fill( bestGsfElectron.eta(), bestGsfElectron.p()/(*genParticles)[i].p());
333  if ( passMiniAODSelection ) { // Pt > 5.
334  h2_ele_sigmaIetaIetaVsPt->Fill( bestGsfElectron.pt(), bestGsfElectron.scSigmaIEtaIEta());
335  }
336 
337  // supercluster related distributions
338  if ( passMiniAODSelection ) { // Pt > 5.
339  h1_scl_SigIEtaIEta_mAOD->Fill(bestGsfElectron.scSigmaIEtaIEta());
340  if (bestGsfElectron.isEB()) h1_scl_SigIEtaIEta_mAOD_barrel->Fill(bestGsfElectron.scSigmaIEtaIEta());
341  if (bestGsfElectron.isEE()) h1_scl_SigIEtaIEta_mAOD_endcaps->Fill(bestGsfElectron.scSigmaIEtaIEta());
342 
344  if (bestGsfElectron.isEB()) h1_ele_dEtaSc_propVtx_mAOD_barrel->Fill(bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
345  if (bestGsfElectron.isEE())h1_ele_dEtaSc_propVtx_mAOD_endcaps->Fill(bestGsfElectron.deltaEtaSuperClusterTrackAtVtx());
346 
348  if (bestGsfElectron.isEB()) h1_ele_dPhiCl_propOut_mAOD_barrel->Fill(bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
349  if (bestGsfElectron.isEE()) h1_ele_dPhiCl_propOut_mAOD_endcaps->Fill(bestGsfElectron.deltaPhiSeedClusterTrackAtCalo());
350  }
351 
352  // track related distributions
353  h2_ele_foundHitsVsEta->Fill( bestGsfElectron.eta(), bestGsfElectron.gsfTrack()->numberOfValidHits() );
354  if (passMiniAODSelection) { // Pt > 5.
355  h2_ele_foundHitsVsEta_mAOD->Fill( bestGsfElectron.eta(), bestGsfElectron.gsfTrack()->numberOfValidHits() );
356  }
357 
358  // match distributions
359  if (passMiniAODSelection) { // Pt > 5.
360  h1_ele_HoE_mAOD->Fill(bestGsfElectron.hcalOverEcal());
361  if (bestGsfElectron.isEB()) h1_ele_HoE_mAOD_barrel->Fill(bestGsfElectron.hcalOverEcal());
362  if (bestGsfElectron.isEE()) h1_ele_HoE_mAOD_endcaps->Fill(bestGsfElectron.hcalOverEcal());
363  }
364 
365  // fbrem
366 
367  // double fbrem_mode = bestGsfElectron.fbrem();
368  if (passMiniAODSelection) { // Pt > 5.
369  h1_ele_fbrem_mAOD->Fill( bestGsfElectron.fbrem() );
370  if (bestGsfElectron.isEB()) h1_ele_fbrem_mAOD_barrel->Fill( bestGsfElectron.fbrem() );
371  if (bestGsfElectron.isEE()) h1_ele_fbrem_mAOD_endcaps->Fill( bestGsfElectron.fbrem() );
372 
373  // -- pflow over pT
374  double one_over_pt = 1. / bestGsfElectron.pt();
375 
378  h1_ele_photonRelativeIso_mAOD->Fill(bestGsfElectron.pfIsolationVariables().sumPhotonEt * one_over_pt );
379 
380  if (bestGsfElectron.isEB()) {
384  }
385 
386  if (bestGsfElectron.isEE()) {
390  }
391  }
392 
393  } // fin boucle size_t i
394 
395 // std::cout << ("fin analyze\n");
396 }
397 
const PflowIsolationVariables & pfIsolationVariables() const
Definition: GsfElectron.h:618
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
MonitorElement * bookH2withSumw2(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")
const LorentzVector & p4(P4Kind kind) const
Definition: GsfElectron.cc:223
virtual const Candidate * mother(size_type i=0) const =0
return pointer to mother
virtual void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:462
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")
virtual double phi() const final
momentum azimuthal angle
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")
float fbrem() const
Definition: GsfElectron.h:698
int ii
Definition: cuy.py:588
ElectronMcSignalValidatorMiniAOD(const edm::ParameterSet &)
bool isEE() const
Definition: GsfElectron.h:351
bool isEB() const
Definition: GsfElectron.h:350
void Fill(long long x)
const Double_t pi
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
edm::EDGetTokenT< edm::View< reco::GenParticle > > mcTruthCollection_
float deltaEtaSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:247
int iEvent
Definition: GenABIO.cc:230
reco::GsfTrackRef gsfTrack() const
override the reco::GsfElectron::gsfTrack method, to access the internal storage of the supercluster ...
float deltaPhiSeedClusterTrackAtCalo() const
Definition: GsfElectron.h:251
T sqrt(T t)
Definition: SSEVec.h:18
float sumPhotonEt
sum pt of PF photons // old float photonIso ;
Definition: GsfElectron.h:575
float hcalOverEcal() const
Definition: GsfElectron.h:424
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
void setBookPrefix(const std::string &)
float sumNeutralHadronEt
sum pt of neutral hadrons // old float neutralHadronIso ;
Definition: GsfElectron.h:574
float scSigmaIEtaIEta() const
Definition: GsfElectron.h:453
void setBookEfficiencyFlag(const bool &)
virtual int pdgId() const =0
PDG identifier.
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:276
T const * product() const
Definition: Handle.h:81
Analysis-level electron class.
Definition: Electron.h:52
virtual double p() const final
magnitude of momentum vector
T1 deltaR2(T1 eta1, T2 phi1, T3 eta2, T4 phi2)
Definition: deltaR.h:36
virtual void analyze(const edm::Event &, const edm::EventSetup &) override
edm::EventID id() const
Definition: EventBase.h:59
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")
virtual double eta() const final
momentum pseudorapidity
volatile std::atomic< bool > shutdown_flag false
edm::EDGetTokenT< pat::ElectronCollection > electronToken_
void setBookStatOverflowFlag(const bool &)
float sumChargedHadronPt
sum-pt of charged Hadron // old float chargedHadronIso ;
Definition: GsfElectron.h:573
Definition: Run.h:43
virtual double pt() const final
transverse momentum