CMS 3D CMS Logo

WenuPlots.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: WenuPlots
4 // Class: WenuPlots
5 //
6 /*
7 
8  Description:
9  this is an analyzer that reads pat::CompositeCandidate WenuCandidates
10  and creates some plots
11  Implementation:
12  The code takes the output of the WenuCandidateFilter and
13  * implements on them a user defined selection
14  * implements the selection with one cut (configurable which cut) inverted
15  * creates a set of basic plots with the Wenu Candidate distribution
16  vs MET, MT etc. These plots are stored in a root file
17  If you have several root files from different runs you have to run a macro
18  to combine the output and have the final plots
19 
20  This analyser is PAT based in the sense that it reads CompositeCandidates,
21  which are composed of a pat::MET plus a pat::Electron. You normally
22  don't have to change this file when the CMSSW version changes because it
23  contains only methods from the stable core of pat Objects. Most
24  version dependent changes should be in WenuCandidateFilter.cc
25  TO DO LIST:
26  * more plots to be added
27  * there should be an base Plots class from which WenuPlots and ZeePlots
28  inherit. this makes sense since they have so many common methods
29 
30  Changes Log:
31  12Feb09 First Release of the code for CMSSW_2_2_X
32  16Sep09 tested that it works with 3_1_2 as well
33  09Sep09 added one extra iso with the name userIso_XX_
34  23Feb09 added option to include extra IDs that are in CMSSW, such as
35  categorized, likehood etc
36  added extra variables TIP and E/P
37  27May10 changes to apply the Spring10 selections, relative isolations
38  the 3 default ones, pat user isolations added in the end
39  change to framework independent variable definitions
40  double->Double_t etc and math.h functions from TMath
41  01Jul10 second electron information added
42  Contact:
43  Nikolaos Rompotis - Nikolaos.Rompotis@Cern.ch
44  Imperial College London
45 
46 
47 */
48 //
49 // Original Author: Nikolaos Rompotis
50 
53 //#include "RecoEcal/EgammaCoreTools/plugins/EcalClusterCrackCorrectionFunctor.h"
54 
56 
57 {
59  // I N P U T P A R A M E T E R S
61  //
63  // WENU COLLECTION //////////////////////////////////////////////////////
64  //
65 
67  consumes<pat::CompositeCandidateCollection>(iConfig.getUntrackedParameter<edm::InputTag>("wenuCollectionTag"));
68  //
69  // code parameters
70  //
71  std::string outputFile_D = "histos.root";
72  outputFile_ = iConfig.getUntrackedParameter<std::string>("outputFile", outputFile_D);
73  WENU_VBTFselectionFileName_ = iConfig.getUntrackedParameter<std::string>("WENU_VBTFselectionFileName");
74  WENU_VBTFpreseleFileName_ = iConfig.getUntrackedParameter<std::string>("WENU_VBTFpreseleFileName");
75  DatasetTag_ = iConfig.getUntrackedParameter<Int_t>("DatasetTag");
76  //
77  // use of precalculatedID
78  // if you use it, then no other cuts are applied
79  usePrecalcID_ = iConfig.getUntrackedParameter<Bool_t>("usePrecalcID", false);
80  if (usePrecalcID_) {
81  usePrecalcIDType_ = iConfig.getUntrackedParameter<std::string>("usePrecalcIDType");
82  usePrecalcIDSign_ = iConfig.getUntrackedParameter<std::string>("usePrecalcIDSign", "=");
83  usePrecalcIDValue_ = iConfig.getUntrackedParameter<Double_t>("usePrecalcIDValue");
84  }
85  useValidFirstPXBHit_ = iConfig.getUntrackedParameter<Bool_t>("useValidFirstPXBHit", false);
86  useConversionRejection_ = iConfig.getUntrackedParameter<Bool_t>("useConversionRejection", false);
87  useExpectedMissingHits_ = iConfig.getUntrackedParameter<Bool_t>("useExpectedMissingHits", false);
88 
89  maxNumberOfExpectedMissingHits_ = iConfig.getUntrackedParameter<Int_t>("maxNumberOfExpectedMissingHits", 1);
90  if (not usePrecalcID_) {
92  std::cout << "WenuPlots: Warning: you have demanded a valid 1st layer PXB hit" << std::endl;
94  std::cout << "WenuPlots: Warning: you have demanded egamma conversion rejection criteria to be applied"
95  << std::endl;
97  std::cout << "WenuPlots: Warning: you have demanded at most " << maxNumberOfExpectedMissingHits_
98  << " missing inner hits " << std::endl;
99  } else {
100  std::cout << "WenuPlots: Using Precalculated ID with type " << usePrecalcIDType_ << usePrecalcIDSign_
101  << usePrecalcIDValue_ << std::endl;
102  }
104  usePreselection_ = true;
105  } else {
106  usePreselection_ = false;
107  }
108  includeJetInformationInNtuples_ = iConfig.getUntrackedParameter<Bool_t>("includeJetInformationInNtuples", false);
110  caloJetCollectionTag_ = iConfig.getUntrackedParameter<edm::InputTag>("caloJetCollectionTag");
111  caloJetCollectionToken_ = consumes<reco::CaloJetCollection>(caloJetCollectionTag_);
112  pfJetCollectionTag_ = iConfig.getUntrackedParameter<edm::InputTag>("pfJetCollectionTag");
113  pfJetCollectionToken_ = consumes<reco::PFJetCollection>(pfJetCollectionTag_);
114  DRJetFromElectron_ = iConfig.getUntrackedParameter<Double_t>("DRJetFromElectron");
115  }
116  storeExtraInformation_ = iConfig.getUntrackedParameter<Bool_t>("storeExtraInformation");
117  storeAllSecondElectronVariables_ = iConfig.getUntrackedParameter<Bool_t>("storeAllSecondElectronVariables", false);
118  // primary vtx collections
119  PrimaryVerticesCollectionToken_ = consumes<std::vector<reco::Vertex> >(iConfig.getUntrackedParameter<edm::InputTag>(
120  "PrimaryVerticesCollection", edm::InputTag("offlinePrimaryVertices")));
121  PrimaryVerticesCollectionBSToken_ = consumes<std::vector<reco::Vertex> >(iConfig.getUntrackedParameter<edm::InputTag>(
122  "PrimaryVerticesCollectionBS", edm::InputTag("offlinePrimaryVerticesWithBS")));
123  //
124  // the selection cuts:
125  trackIso_EB_ = iConfig.getUntrackedParameter<Double_t>("trackIso_EB", 1000.);
126  ecalIso_EB_ = iConfig.getUntrackedParameter<Double_t>("ecalIso_EB", 1000.);
127  hcalIso_EB_ = iConfig.getUntrackedParameter<Double_t>("hcalIso_EB", 1000.);
128  //
129  trackIso_EE_ = iConfig.getUntrackedParameter<Double_t>("trackIso_EE", 1000.);
130  ecalIso_EE_ = iConfig.getUntrackedParameter<Double_t>("ecalIso_EE", 1000.);
131  hcalIso_EE_ = iConfig.getUntrackedParameter<Double_t>("hcalIso_EE", 1000.);
132  //
133  sihih_EB_ = iConfig.getUntrackedParameter<Double_t>("sihih_EB");
134  dphi_EB_ = iConfig.getUntrackedParameter<Double_t>("dphi_EB");
135  deta_EB_ = iConfig.getUntrackedParameter<Double_t>("deta_EB");
136  hoe_EB_ = iConfig.getUntrackedParameter<Double_t>("hoe_EB");
137  cIso_EB_ = iConfig.getUntrackedParameter<Double_t>("cIso_EB", 1000.);
138  tip_bspot_EB_ = iConfig.getUntrackedParameter<Double_t>("tip_bspot_EB", 1000.);
139  eop_EB_ = iConfig.getUntrackedParameter<Double_t>("eop_EB", 1000.);
140  //
141  sihih_EE_ = iConfig.getUntrackedParameter<Double_t>("sihih_EE");
142  dphi_EE_ = iConfig.getUntrackedParameter<Double_t>("dphi_EE");
143  deta_EE_ = iConfig.getUntrackedParameter<Double_t>("deta_EE");
144  hoe_EE_ = iConfig.getUntrackedParameter<Double_t>("hoe_EE");
145  cIso_EE_ = iConfig.getUntrackedParameter<Double_t>("cIso_EE", 1000.);
146  tip_bspot_EE_ = iConfig.getUntrackedParameter<Double_t>("tip_bspot_EE", 1000.);
147  eop_EE_ = iConfig.getUntrackedParameter<Double_t>("eop_EE", 1000.);
148  //
149  trackIsoUser_EB_ = iConfig.getUntrackedParameter<Double_t>("trackIsoUser_EB", 1000.);
150  ecalIsoUser_EB_ = iConfig.getUntrackedParameter<Double_t>("ecalIsoUser_EB", 1000.);
151  hcalIsoUser_EB_ = iConfig.getUntrackedParameter<Double_t>("hcalIsoUser_EB", 1000.);
152  trackIsoUser_EE_ = iConfig.getUntrackedParameter<Double_t>("trackIsoUser_EE", 1000.);
153  ecalIsoUser_EE_ = iConfig.getUntrackedParameter<Double_t>("ecalIsoUser_EE", 1000.);
154  hcalIsoUser_EE_ = iConfig.getUntrackedParameter<Double_t>("hcalIsoUser_EE", 1000.);
155  //
156  trackIso_EB_inv = iConfig.getUntrackedParameter<Bool_t>("trackIso_EB_inv", false);
157  ecalIso_EB_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIso_EB_inv", false);
158  hcalIso_EB_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIso_EB_inv", false);
159  //
160  trackIso_EE_inv = iConfig.getUntrackedParameter<Bool_t>("trackIso_EE_inv", false);
161  ecalIso_EE_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIso_EE_inv", false);
162  hcalIso_EE_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIso_EE_inv", false);
163  //
164  sihih_EB_inv = iConfig.getUntrackedParameter<Bool_t>("sihih_EB_inv", false);
165  dphi_EB_inv = iConfig.getUntrackedParameter<Bool_t>("dphi_EB_inv", false);
166  deta_EB_inv = iConfig.getUntrackedParameter<Bool_t>("deta_EB_inv", false);
167  hoe_EB_inv = iConfig.getUntrackedParameter<Bool_t>("hoe_EB_inv", false);
168  cIso_EB_inv = iConfig.getUntrackedParameter<Bool_t>("cIso_EB_inv", false);
169  tip_bspot_EB_inv = iConfig.getUntrackedParameter<Bool_t>("tip_bspot_EB_inv", false);
170  eop_EB_inv = iConfig.getUntrackedParameter<Bool_t>("eop_EB_inv", false);
171  //
172  sihih_EE_inv = iConfig.getUntrackedParameter<Bool_t>("sihih_EE_inv", false);
173  dphi_EE_inv = iConfig.getUntrackedParameter<Bool_t>("dphi_EE_inv", false);
174  deta_EE_inv = iConfig.getUntrackedParameter<Bool_t>("deta_EE_inv", false);
175  hoe_EE_inv = iConfig.getUntrackedParameter<Bool_t>("hoe_EE_inv", false);
176  cIso_EE_inv = iConfig.getUntrackedParameter<Bool_t>("cIso_EE_inv", false);
177  tip_bspot_EE_inv = iConfig.getUntrackedParameter<Bool_t>("tip_bspot_EE_inv", false);
178  eop_EE_inv = iConfig.getUntrackedParameter<Bool_t>("eop_EE_inv", false);
179  //
180  trackIsoUser_EB_inv = iConfig.getUntrackedParameter<Bool_t>("trackIsoUser_EB_inv", false);
181  ecalIsoUser_EB_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIsoUser_EB_inv", false);
182  hcalIsoUser_EB_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIsoUser_EB_inv", false);
183  trackIsoUser_EE_inv = iConfig.getUntrackedParameter<Bool_t>("trackIsoUser_EE_inv", false);
184  ecalIsoUser_EE_inv = iConfig.getUntrackedParameter<Bool_t>("ecalIsoUser_EE_inv", false);
185  hcalIsoUser_EE_inv = iConfig.getUntrackedParameter<Bool_t>("hcalIsoUser_EE_inv", false);
186 }
187 
189  // do anything here that needs to be done at desctruction time
190  // (e.g. close files, deallocate resources etc.)
191 }
192 
193 //
194 // member functions
195 //
196 
197 // ------------ method called to for each event ------------
199  using namespace std;
200  //
201  // Get the collections here
202  //
204  iEvent.getByToken(wenuCollectionToken_, WenuCands);
205 
206  if (not WenuCands.isValid()) {
207  cout << "Warning: no wenu candidates in this event..." << endl;
208  return;
209  }
210  const pat::CompositeCandidateCollection *wcands = WenuCands.product();
211  const pat::CompositeCandidateCollection::const_iterator wenuIter = wcands->begin();
212  const pat::CompositeCandidate wenu = *wenuIter;
213  //
214  // get the parts of the composite candidate:
215  const pat::Electron *myElec = dynamic_cast<const pat::Electron *>(wenu.daughter("electron"));
216  const pat::MET *myMet = dynamic_cast<const pat::MET *>(wenu.daughter("met"));
217  const pat::MET *myPfMet = dynamic_cast<const pat::MET *>(wenu.daughter("pfmet"));
218  const pat::MET *myTcMet = dynamic_cast<const pat::MET *>(wenu.daughter("tcmet"));
219  // _______________________________________________________________________
220  //
221  // VBTF Root tuple production --------------------------------------------
222  // _______________________________________________________________________
223  //
224  // .......................................................................
225  // vbtf produces 2 root tuples: one that contains the highest pT electron
226  // that passes a user defined selection and one other with only the
227  // preselection criteria applied
228  // .......................................................................
229  //
230  // fill the tree variables
231  runNumber = iEvent.run();
232  eventNumber = Long64_t(iEvent.eventAuxiliary().event());
233  lumiSection = (Int_t)iEvent.luminosityBlock();
234  //
235  ele_sc_eta = (Float_t)myElec->superCluster()->eta();
236  ele_sc_phi = (Float_t)myElec->superCluster()->phi();
237  double scx = myElec->superCluster()->x();
238  double scy = myElec->superCluster()->y();
239  double scz = myElec->superCluster()->z();
240  ele_sc_rho = (Float_t)sqrt(scx * scx + scy * scy + scz * scz);
241  ele_sc_energy = (Float_t)myElec->superCluster()->energy();
242  ele_sc_gsf_et = (Float_t)myElec->superCluster()->energy() / TMath::CosH(myElec->gsfTrack()->eta());
243  ele_cand_eta = (Float_t)myElec->eta();
244  ele_cand_phi = (Float_t)myElec->phi();
245  ele_cand_et = (Float_t)myElec->et();
246  //
251  ele_cand_et;
252  //
253  ele_id_sihih = (Float_t)myElec->sigmaIetaIeta();
254  ele_id_deta = (Float_t)myElec->deltaEtaSuperClusterTrackAtVtx();
255  ele_id_dphi = (Float_t)myElec->deltaPhiSuperClusterTrackAtVtx();
256  ele_id_hoe = (Float_t)myElec->hadronicOverEm();
257  //
258  ele_cr_mhitsinner = myElec->gsfTrack()->hitPattern().numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS);
259  ele_cr_dcot = myElec->convDcot();
260  ele_cr_dist = myElec->convDist();
261  //
262  ele_vx = (Float_t)myElec->vx();
263  ele_vy = (Float_t)myElec->vy();
264  ele_vz = (Float_t)myElec->vz();
265  // get the primary vtx information
266  // no BS
268  iEvent.getByToken(PrimaryVerticesCollectionToken_, pVtx);
269  const std::vector<reco::Vertex> Vtx = *(pVtx.product());
270  // with BS
272  iEvent.getByToken(PrimaryVerticesCollectionBSToken_, pVtxBS);
273  const std::vector<reco::Vertex> VtxBS = *(pVtxBS.product());
274  if (!Vtx.empty()) {
275  pv_x = Float_t(Vtx[0].position().x());
276  pv_y = Float_t(Vtx[0].position().y());
277  pv_z = Float_t(Vtx[0].position().z());
278  ele_tip_pv = myElec->gsfTrack()->dxy(Vtx[0].position());
279  } else {
280  pv_x = -999999.;
281  pv_y = -999999.;
282  pv_z = -999999.;
283  ele_tip_pv = -999999.;
284  }
285  if (!VtxBS.empty()) {
286  pvbs_x = Float_t(VtxBS[0].position().x());
287  pvbs_y = Float_t(VtxBS[0].position().y());
288  pvbs_z = Float_t(VtxBS[0].position().z());
289  ele_tip_pvbs = myElec->gsfTrack()->dxy(VtxBS[0].position());
290  } else {
291  pvbs_x = -999999.;
292  pvbs_y = -999999.;
293  pvbs_z = -999999.;
294  ele_tip_pvbs = -999999.;
295  }
296 
297  //
298  ele_gsfCharge = (Int_t)myElec->gsfTrack()->charge();
299  // must keep the ctf track collection, i.e. general track collection
300  ele_ctfCharge = (Int_t)myElec->closestCtfTrackRef().isNonnull() ? myElec->closestCtfTrackRef()->charge() : -9999;
301  ele_scPixCharge = (Int_t)myElec->chargeInfo().scPixCharge;
302  ele_eop = (Float_t)myElec->eSuperClusterOverP();
303  ele_tip_bs = (Float_t)-myElec->dB();
304  //ele_tip_pv = myElec->userFloat("ele_tip_pv");
305  ele_pin = (Float_t)myElec->trackMomentumAtVtx().R();
306  ele_pout = (Float_t)myElec->trackMomentumOut().R();
307  //
308  event_caloMET = (Float_t)myMet->et();
309  event_pfMET = (Float_t)myPfMet->et();
310  event_tcMET = (Float_t)myTcMet->et();
311  event_caloMET_phi = (Float_t)myMet->phi();
312  event_pfMET_phi = (Float_t)myPfMet->phi();
313  event_tcMET_phi = (Float_t)myTcMet->phi();
314  event_caloSumEt = (Float_t)myMet->sumEt();
315  event_pfSumEt = (Float_t)myPfMet->sumEt();
316  event_tcSumEt = (Float_t)myTcMet->sumEt();
317  // transverse mass for the user's convenience
318  event_caloMT = (Float_t)TMath::Sqrt(
319  2. * (ele_sc_gsf_et * event_caloMET -
320  (ele_sc_gsf_et * TMath::Cos(ele_sc_phi) * event_caloMET * TMath::Cos(event_caloMET_phi) +
321  ele_sc_gsf_et * TMath::Sin(ele_sc_phi) * event_caloMET * TMath::Sin(event_caloMET_phi))));
322  event_pfMT =
323  (Float_t)TMath::Sqrt(2. * (ele_sc_gsf_et * event_pfMET -
324  (ele_sc_gsf_et * TMath::Cos(ele_sc_phi) * event_pfMET * TMath::Cos(event_pfMET_phi) +
325  ele_sc_gsf_et * TMath::Sin(ele_sc_phi) * event_pfMET * TMath::Sin(event_pfMET_phi))));
326  event_tcMT =
327  (Float_t)TMath::Sqrt(2. * (ele_sc_gsf_et * event_tcMET -
328  (ele_sc_gsf_et * TMath::Cos(ele_sc_phi) * event_tcMET * TMath::Cos(event_tcMET_phi) +
329  ele_sc_gsf_et * TMath::Sin(ele_sc_phi) * event_tcMET * TMath::Sin(event_tcMET_phi))));
331  // jet information - only if the user asks for it
332  // keep the 5 highest et jets of the event that are further than DR> DRJetFromElectron_
334  // initialize the array of the jet information
335  for (int i = 0; i < 5; ++i) {
336  calojet_et[i] = -999999;
337  calojet_eta[i] = -999999;
338  calojet_phi[i] = -999999;
339  pfjet_et[i] = -999999;
340  pfjet_eta[i] = -999999;
341  pfjet_phi[i] = -999999;
342  }
343  // get hold of the jet collections
346  iEvent.getByToken(caloJetCollectionToken_, pCaloJets);
347  iEvent.getByToken(pfJetCollectionToken_, pPfJets);
348  //
349  // calo jets now:
350  if (pCaloJets.isValid()) {
351  const reco::CaloJetCollection *caloJets = pCaloJets.product();
352  int nCaloJets = (int)caloJets->size();
353  if (nCaloJets > 0) {
354  float *nCaloET = new float[nCaloJets];
355  float *nCaloEta = new float[nCaloJets];
356  float *nCaloPhi = new float[nCaloJets];
357  reco::CaloJetCollection::const_iterator cjet = caloJets->begin();
358  int counter = 0;
359  for (; cjet != caloJets->end(); ++cjet) {
360  // store them only if they are far enough from the electron
361  Double_t DR = reco::deltaR(cjet->eta(), cjet->phi(), myElec->gsfTrack()->eta(), ele_sc_phi);
362  if (DR > DRJetFromElectron_) {
363  nCaloET[counter] = cjet->et();
364  nCaloEta[counter] = cjet->eta();
365  nCaloPhi[counter] = cjet->phi();
366  ++counter;
367  }
368  }
369  int *caloJetSorted = new int[nCaloJets];
370  TMath::Sort(nCaloJets, nCaloET, caloJetSorted, true);
371  for (int i = 0; i < nCaloJets; ++i) {
372  if (i >= 5)
373  break;
374  calojet_et[i] = nCaloET[caloJetSorted[i]];
375  calojet_eta[i] = nCaloEta[caloJetSorted[i]];
376  calojet_phi[i] = nCaloPhi[caloJetSorted[i]];
377  }
378  delete[] caloJetSorted;
379  delete[] nCaloET;
380  delete[] nCaloEta;
381  delete[] nCaloPhi;
382  }
383  } else {
384  std::cout << "WenuPlots: Could not get caloJet collection with name " << caloJetCollectionTag_ << std::endl;
385  }
386  //
387  // pf jets now:
388  if (pPfJets.isValid()) {
389  const reco::PFJetCollection *pfJets = pPfJets.product();
390  int nPfJets = (int)pfJets->size();
391  if (nPfJets > 0) {
392  float *nPfET = new float[nPfJets];
393  float *nPfEta = new float[nPfJets];
394  float *nPfPhi = new float[nPfJets];
395  reco::PFJetCollection::const_iterator pjet = pfJets->begin();
396  int counter = 0;
397  for (; pjet != pfJets->end(); ++pjet) {
398  // store them only if they are far enough from the electron
399  Double_t DR = reco::deltaR(pjet->eta(), pjet->phi(), myElec->gsfTrack()->eta(), ele_sc_phi);
400  if (DR > DRJetFromElectron_) {
401  nPfET[counter] = pjet->et();
402  nPfEta[counter] = pjet->eta();
403  nPfPhi[counter] = pjet->phi();
404  ++counter;
405  }
406  }
407  int *pfJetSorted = new int[nPfJets];
408  TMath::Sort(nPfJets, nPfET, pfJetSorted, true);
409  for (int i = 0; i < nPfJets; ++i) {
410  if (i >= 5)
411  break;
412  pfjet_et[i] = nPfET[pfJetSorted[i]];
413  pfjet_eta[i] = nPfEta[pfJetSorted[i]];
414  pfjet_phi[i] = nPfPhi[pfJetSorted[i]];
415  }
416  delete[] pfJetSorted;
417  delete[] nPfET;
418  delete[] nPfEta;
419  delete[] nPfPhi;
420  }
421  } else {
422  std::cout << "WenuPlots: Could not get pfJet collection with name " << pfJetCollectionTag_ << std::endl;
423  }
424  }
425  // second electron information - in preselected ntuple only
426  ele2nd_sc_gsf_et = -1; // also in sele tree
427  ele2nd_sc_eta = -1;
428  ele2nd_sc_phi = -1;
429  ele2nd_sc_rho = 0;
430  ele2nd_cand_eta = 0;
431  ele2nd_cand_phi = 0;
432  ele2nd_cand_et = 0;
433  ele2nd_pin = 0;
434  ele2nd_pout = 0;
435  ele2nd_passes_selection = -1; // also in sele tree
436  ele2nd_ecalDriven = 0;
437  //
438  // second electron selection variables: only if requested by the user
439  //
440  ele2nd_iso_track = 0;
441  ele2nd_iso_ecal = 0;
442  ele2nd_iso_hcal = 0;
443  //
444  ele2nd_id_sihih = 0;
445  ele2nd_id_deta = 0;
446  ele2nd_id_dphi = 0;
447  ele2nd_id_hoe = 0;
448  //
450  ele2nd_cr_dcot = 0;
451  ele2nd_cr_dist = 0;
452  //
453  ele2nd_vx = 0;
454  ele2nd_vy = 0;
455  ele2nd_vz = 0;
456  //
457  ele2nd_gsfCharge = 0;
458  // must keep the ctf track collection, i.e. general track collection
459  ele2nd_ctfCharge = 0;
460  ele2nd_scPixCharge = 0;
461  ele2nd_eop = 0;
462  ele2nd_tip_bs = 0;
463  ele2nd_tip_pv = 0;
465  //
466  // convention for ele2nd_passes_selection
467  // 0 passes no selection
468  // 1 passes WP95
469  // 2 passes WP90
470  // 3 passes WP85
471  // 4 passes WP80
472  // 5 passes WP70
473  // 6 passes WP60
474  if (myElec->userInt("hasSecondElectron") == 1 && storeExtraInformation_) {
475  const pat::Electron *mySecondElec = dynamic_cast<const pat::Electron *>(wenu.daughter("secondElec"));
476  ele2nd_sc_gsf_et = (Float_t)mySecondElec->superCluster()->energy() / TMath::CosH(mySecondElec->gsfTrack()->eta());
477 
478  ele2nd_sc_eta = (Float_t)mySecondElec->superCluster()->eta();
479  ele2nd_sc_phi = (Float_t)mySecondElec->superCluster()->phi();
480  double sc2x = mySecondElec->superCluster()->x();
481  double sc2y = mySecondElec->superCluster()->y();
482  double sc2z = mySecondElec->superCluster()->z();
483  ele2nd_sc_rho = (Float_t)sqrt(sc2x * sc2x + sc2y * sc2y + sc2z * sc2z);
484  ele2nd_cand_eta = (Float_t)mySecondElec->eta();
485  ele2nd_cand_phi = (Float_t)mySecondElec->phi();
486  ele2nd_cand_et = (Float_t)mySecondElec->et();
487  ele2nd_pin = (Float_t)mySecondElec->trackMomentumAtVtx().R();
488  ;
489  ele2nd_pout = (Float_t)mySecondElec->trackMomentumOut().R();
490  ele2nd_ecalDriven = (Int_t)mySecondElec->ecalDrivenSeed();
491  // check the selections
492  bool isIDCalc = mySecondElec->isElectronIDAvailable("simpleEleId95relIso") &&
493  mySecondElec->isElectronIDAvailable("simpleEleId90relIso") &&
494  mySecondElec->isElectronIDAvailable("simpleEleId85relIso") &&
495  mySecondElec->isElectronIDAvailable("simpleEleId80relIso") &&
496  mySecondElec->isElectronIDAvailable("simpleEleId70relIso") &&
497  mySecondElec->isElectronIDAvailable("simpleEleId60relIso");
498  if (isIDCalc) {
500  if (fabs(mySecondElec->electronID("simpleEleId60relIso") - 7) < 0.1)
502  else if (fabs(mySecondElec->electronID("simpleEleId70relIso") - 7) < 0.1)
504  else if (fabs(mySecondElec->electronID("simpleEleId80relIso") - 7) < 0.1)
506  else if (fabs(mySecondElec->electronID("simpleEleId85relIso") - 7) < 0.1)
508  else if (fabs(mySecondElec->electronID("simpleEleId90relIso") - 7) < 0.1)
510  else if (fabs(mySecondElec->electronID("simpleEleId95relIso") - 7) < 0.1)
512  }
514  ele2nd_iso_track = (Float_t)mySecondElec->dr03IsolationVariables().tkSumPt / ele2nd_cand_et;
516  ele2nd_iso_hcal = (Float_t)(mySecondElec->dr03IsolationVariables().hcalDepth1TowerSumEt +
519  ele2nd_id_sihih = (Float_t)mySecondElec->sigmaIetaIeta();
520  ele2nd_id_deta = (Float_t)mySecondElec->deltaEtaSuperClusterTrackAtVtx();
521  ele2nd_id_dphi = (Float_t)mySecondElec->deltaPhiSuperClusterTrackAtVtx();
522  ele2nd_id_hoe = (Float_t)mySecondElec->hadronicOverEm();
523 
525  mySecondElec->gsfTrack()->hitPattern().numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS);
526  ele2nd_cr_dcot = mySecondElec->convDcot();
527  ele2nd_cr_dist = mySecondElec->convDist();
528 
529  ele2nd_vx = (Float_t)mySecondElec->vx();
530  ele2nd_vy = (Float_t)mySecondElec->vy();
531  ele2nd_vz = (Float_t)mySecondElec->vz();
532  ele2nd_gsfCharge = (Int_t)mySecondElec->gsfTrack()->charge();
533  // must keep the ctf track collection, i.e. general track collection
535  (Int_t)mySecondElec->closestCtfTrackRef().isNonnull() ? mySecondElec->closestCtfTrackRef()->charge() : -9999;
536  ele2nd_scPixCharge = (Int_t)mySecondElec->chargeInfo().scPixCharge;
537  ele2nd_eop = (Float_t)mySecondElec->eSuperClusterOverP();
538  ele2nd_tip_bs = (Float_t)-mySecondElec->dB();
539  if (!Vtx.empty()) {
540  ele2nd_tip_pv = mySecondElec->gsfTrack()->dxy(Vtx[0].position());
541  }
542  if (!VtxBS.empty()) {
543  ele2nd_tip_pvbs = mySecondElec->gsfTrack()->dxy(VtxBS[0].position());
544  }
545  ele2nd_hltmatched_dr = mySecondElec->userFloat("HLTMatchingDR");
546  }
547  }
548  // some extra information
550  ele_hltmatched_dr = -999.;
551  VtxTracksSize.clear();
552  VtxNormalizedChi2.clear();
553  VtxTracksSizeBS.clear();
554  VtxNormalizedChi2BS.clear();
556  if (myElec->hasUserFloat("HLTMatchingDR")) {
557  ele_hltmatched_dr = myElec->userFloat("HLTMatchingDR");
558  }
559  if (myElec->hasUserInt("triggerDecision")) {
560  event_triggerDecision = myElec->userInt("triggerDecision");
561  }
562  // extra information related to the primary vtx collection
563  for (Int_t i = 0; i < (Int_t)Vtx.size(); ++i) {
564  VtxTracksSize.push_back(Vtx[i].tracksSize());
565  VtxNormalizedChi2.push_back(Vtx[i].normalizedChi2());
566  }
567  for (Int_t i = 0; i < (Int_t)VtxBS.size(); ++i) {
568  VtxTracksSizeBS.push_back(VtxBS[i].tracksSize());
569  VtxNormalizedChi2BS.push_back(VtxBS[i].normalizedChi2());
570  }
571  }
572  // if the electron passes the selection
573  // it is meant to be a precalculated selection here, in order to include
574  // conversion rejection too
575  if (CheckCuts(myElec) && myElec->userInt("failsSecondElectronCut") == 0) {
576  vbtfSele_tree->Fill();
577  }
578  vbtfPresele_tree->Fill();
579 
580  //
581  // _______________________________________________________________________
582  //
583  // histogram production --------------------------------------------------
584  // _______________________________________________________________________
585  //
586  // if you want some preselection: Conv rejection, hit pattern
587  if (usePreselection_) {
588  if (not PassPreselectionCriteria(myElec))
589  return;
590  }
591  //
592  // some variables here
593  Double_t scEta = myElec->superCluster()->eta();
594  Double_t scPhi = myElec->superCluster()->phi();
595  Double_t scEt = myElec->superCluster()->energy() / TMath::CosH(scEta);
596  Double_t met = myMet->et();
597  Double_t metPhi = myMet->phi();
598  Double_t mt = TMath::Sqrt(2.0 * scEt * met *
599  (1.0 - (TMath::Cos(scPhi) * TMath::Cos(metPhi) + TMath::Sin(scPhi) * TMath::Sin(metPhi))));
600 
601  Double_t trackIso = myElec->userIsolation(pat::TrackIso);
602  Double_t ecalIso = myElec->userIsolation(pat::EcalIso);
603  Double_t hcalIso = myElec->userIsolation(pat::HcalIso);
604  Double_t sihih = myElec->scSigmaIEtaIEta();
605  Double_t dphi = myElec->deltaPhiSuperClusterTrackAtVtx();
606  Double_t deta = myElec->deltaEtaSuperClusterTrackAtVtx();
607  Double_t HoE = myElec->hadronicOverEm();
608  //
609  //
610  //
611  // the inverted selection plots:
612  // only if not using precalcID
613  if (not usePrecalcID_) {
614  if (CheckCutsInverse(myElec)) {
615  //std::cout << "-----------------INVERSION-----------passed" << std::endl;
616  h_met_inverse->Fill(met);
617  h_mt_inverse->Fill(mt);
618  if (TMath::Abs(scEta) < 1.479) {
619  h_met_inverse_EB->Fill(met);
620  h_mt_inverse_EB->Fill(mt);
621  }
622  if (TMath::Abs(scEta) > 1.479) {
623  h_met_inverse_EE->Fill(met);
624  h_mt_inverse_EE->Fill(mt);
625  }
626  }
627  }
628  //
630  //
631  // N-1 plots: plot some variable so that all the other cuts are satisfied
632  //
633  // make these plots only if you have the normal selection, not pre-calced
634  if (not usePrecalcID_) {
635  if (TMath::Abs(scEta) < 1.479) { // reminder: the precise fiducial cuts are in
636  // in the filter
637  if (CheckCutsNminusOne(myElec, 0))
638  h_trackIso_eb_NmOne->Fill(trackIso);
639  } else {
640  if (CheckCutsNminusOne(myElec, 0))
641  h_trackIso_ee_NmOne->Fill(trackIso);
642  }
643  }
644  //
645  // SELECTION APPLICATION
646  //
647  // from here on you have only events that pass the full selection
648  if (not CheckCuts(myElec))
649  return;
651 
652  h_met->Fill(met);
653  h_mt->Fill(mt);
654  if (TMath::Abs(scEta) < 1.479) {
655  h_met_EB->Fill(met);
656  h_mt_EB->Fill(mt);
657 
658  h_EB_trkiso->Fill(trackIso);
659  h_EB_ecaliso->Fill(ecalIso);
660  h_EB_hcaliso->Fill(hcalIso);
661  h_EB_sIetaIeta->Fill(sihih);
662  h_EB_dphi->Fill(dphi);
663  h_EB_deta->Fill(deta);
664  h_EB_HoE->Fill(HoE);
665  }
666  if (TMath::Abs(scEta) > 1.479) {
667  h_met_EE->Fill(met);
668  h_mt_EE->Fill(mt);
669 
670  h_EE_trkiso->Fill(trackIso);
671  h_EE_ecaliso->Fill(ecalIso);
672  h_EE_hcaliso->Fill(hcalIso);
673  h_EE_sIetaIeta->Fill(sihih);
674  h_EE_dphi->Fill(dphi);
675  h_EE_deta->Fill(deta);
676  h_EE_HoE->Fill(HoE);
677  }
678  // uncomment for debugging purposes
679  /*
680  std::cout << "tracIso: " << trackIso << ", " << myElec->trackIso() << ", ecaliso: " << ecalIso
681  << ", " << myElec->ecalIso() << ", hcaliso: " << hcalIso << ", " << myElec->hcalIso()
682  << ", mishits: "
683  << myElec->gsfTrack()->hitPattern().numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS)
684  << std::endl;
685  std::cout << "Electron ID: 95relIso=" << myElec->electronID("simpleEleId95relIso")
686  << " 90relIso=" << myElec->electronID("simpleEleId90relIso")
687  << " 85relIso=" << myElec->electronID("simpleEleId85relIso")
688  << " 80relIso=" << myElec->electronID("simpleEleId80relIso")
689  << " 70relIso=" << myElec->electronID("simpleEleId70relIso")
690  << " 60relIso=" << myElec->electronID("simpleEleId60relIso")
691  << " 95cIso=" << myElec->electronID("simpleEleId95cIso")
692  << " 90cIso=" << myElec->electronID("simpleEleId90cIso")
693  << " 85cIso=" << myElec->electronID("simpleEleId85cIso")
694  << " 80cIso=" << myElec->electronID("simpleEleId80cIso")
695  << " 70cIso=" << myElec->electronID("simpleEleId70cIso")
696  << " 60cIso=" << myElec->electronID("simpleEleId60cIso")
697  << std::endl;
698  std::cout << "mySelection: " << (CheckCuts(myElec) && PassPreselectionCriteria(myElec)) << endl;
699  */
700  h_scEt->Fill(scEt);
701  h_scEta->Fill(scEta);
702  h_scPhi->Fill(scPhi);
703 }
704 
705 /***********************************************************************
706  *
707  * Checking Cuts and making selections:
708  * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
709  * all the available methods take input a pointer to a pat::Electron
710  *
711  * Bool_t CheckCuts(const pat::Electron *):
712  * true if the input selection is satisfied
713  * Bool_t CheckCutsInverse(const pat::Electron *ele):
714  * true if the cuts with inverted the ones specified in the
715  * cfg are satisfied
716  * Bool_t CheckCutsNminusOne(const pat::Electron *ele, int jj):
717  * true if all the cuts with cut #jj ignored are satisfied
718  *
719  ***********************************************************************/
720 Bool_t WenuPlots::CheckCuts(const pat::Electron *ele) {
721  if (usePrecalcID_) {
723  std::cout << "Error! not existing ID with name: " << usePrecalcIDType_ << " function will return true!"
724  << std::endl;
725  return true;
726  }
727  Double_t val = ele->electronID(usePrecalcIDType_);
728  if (usePrecalcIDSign_ == "<") {
729  return val < usePrecalcIDValue_;
730  } else if (usePrecalcIDSign_ == ">") {
731  return val > usePrecalcIDValue_;
732  } else { // equality: it returns 0,1,2,3 but as float
733  return TMath::Abs(val - usePrecalcIDValue_) < 0.1;
734  }
735  } else {
736  for (int i = 0; i < nBarrelVars_; ++i) {
737  if (not CheckCut(ele, i))
738  return false;
739  }
740  return true;
741  }
742 }
744 
745 Bool_t WenuPlots::CheckCutsInverse(const pat::Electron *ele) {
746  for (int i = 0; i < nBarrelVars_; ++i) {
747  if (CheckCutInv(ele, i) == false)
748  return false;
749  }
750  return true;
751 }
753 Bool_t WenuPlots::CheckCutsNminusOne(const pat::Electron *ele, int jj) {
754  for (int i = 0; i < nBarrelVars_; ++i) {
755  if (i == jj)
756  continue;
757  if (CheckCut(ele, i) == false)
758  return false;
759  }
760  return true;
761 }
763 Bool_t WenuPlots::CheckCut(const pat::Electron *ele, int i) {
764  Double_t fabseta = TMath::Abs(ele->superCluster()->eta());
765  if (fabseta < 1.479) {
766  return TMath::Abs(ReturnCandVar(ele, i)) < CutVars_[i];
767  }
768  return TMath::Abs(ReturnCandVar(ele, i)) < CutVars_[i + nBarrelVars_];
769 }
771 Bool_t WenuPlots::CheckCutInv(const pat::Electron *ele, int i) {
772  Double_t fabseta = TMath::Abs(ele->superCluster()->eta());
773  if (fabseta < 1.479) {
774  if (InvVars_[i])
775  return TMath::Abs(ReturnCandVar(ele, i)) > CutVars_[i];
776  return TMath::Abs(ReturnCandVar(ele, i)) < CutVars_[i];
777  }
778  if (InvVars_[i + nBarrelVars_]) {
779  if (InvVars_[i])
780  return TMath::Abs(ReturnCandVar(ele, i)) > CutVars_[i + nBarrelVars_];
781  }
782  return TMath::Abs(ReturnCandVar(ele, i)) < CutVars_[i + nBarrelVars_];
783 }
785 Double_t WenuPlots::ReturnCandVar(const pat::Electron *ele, int i) {
786  if (i == 0)
787  return ele->dr03TkSumPt() / ele->p4().Pt();
788  else if (i == 1)
789  return ele->dr03EcalRecHitSumEt() / ele->p4().Pt();
790  else if (i == 2)
791  return ele->dr03HcalTowerSumEt() / ele->p4().Pt();
792  else if (i == 3)
793  return ele->scSigmaIEtaIEta();
794  else if (i == 4)
795  return ele->deltaPhiSuperClusterTrackAtVtx();
796  else if (i == 5)
797  return ele->deltaEtaSuperClusterTrackAtVtx();
798  else if (i == 6)
799  return ele->hadronicOverEm();
800  else if (i == 7) {
801  if (ele->isEB()) {
802  return (ele->dr03TkSumPt() + std::max(float(0.), ele->dr03EcalRecHitSumEt() - 1) + ele->dr03HcalTowerSumEt()) /
803  ele->p4().Pt();
804  } else { // pedestal subtraction is only in barrel
805  return (ele->dr03TkSumPt() + ele->dr03EcalRecHitSumEt() + ele->dr03HcalTowerSumEt()) / ele->p4().Pt();
806  }
807  }
808  // else if (i==8) return ele->gsfTrack()->dxy(bspotPosition_);
809  else if (i == 8)
810  return fabs(ele->dB());
811  else if (i == 9)
812  return ele->eSuperClusterOverP();
813  else if (i == 10)
814  return ele->userIsolation(pat::TrackIso);
815  else if (i == 11)
816  return ele->userIsolation(pat::EcalIso);
817  else if (i == 12)
818  return ele->userIsolation(pat::HcalIso);
819  std::cout << "Error in WenuPlots::ReturnCandVar" << std::endl;
820  return -1.;
821 }
824  Bool_t passConvRej = true;
825  Bool_t passPXB = true;
826  Bool_t passEMH = true;
828  if (ele->hasUserInt("PassConversionRejection")) {
829  //std::cout << "con rej: " << ele->userInt("PassConversionRejection") << std::endl;
830  if (not(ele->userInt("PassConversionRejection") == 1))
831  passConvRej = false;
832  } else {
833  std::cout << "WenuPlots: WARNING: Conversion Rejection Request Disregarded: "
834  << "you must calculate it before " << std::endl;
835  // return true;
836  }
837  }
838  if (useValidFirstPXBHit_) {
839  if (ele->hasUserInt("PassValidFirstPXBHit")) {
840  //std::cout << "valid1stPXB: " << ele->userInt("PassValidFirstPXBHit") << std::endl;
841  if (not(ele->userInt("PassValidFirstPXBHit") == 1))
842  passPXB = false;
843  } else {
844  std::cout << "WenuPlots: WARNING: Valid First PXB Hit Request Disregarded: "
845  << "you must calculate it before " << std::endl;
846  // return true;
847  }
848  }
850  if (ele->hasUserInt("NumberOfExpectedMissingHits")) {
851  //std::cout << "missing hits: " << ele->userInt("NumberOfExpectedMissingHits") << std::endl;
852  if (ele->userInt("NumberOfExpectedMissingHits") > maxNumberOfExpectedMissingHits_)
853  passEMH = false;
854  } else {
855  std::cout << "WenuPlots: WARNING: Number of Expected Missing Hits Request Disregarded: "
856  << "you must calculate it before " << std::endl;
857  // return true;
858  }
859  }
860  return passConvRej && passPXB && passEMH;
861 }
862 // ------------ method called once each job just before starting event loop --
863 void WenuPlots::beginJob() {
864  //std::cout << "In beginJob()" << std::endl;
865  // Double_t Pi = TMath::Pi();
866  // TString histo_file = outputFile_;
867  // histofile = new TFile( histo_file,"RECREATE");
868 
869  h_met = new TH1F("h_met", "h_met", 200, 0, 200);
870  h_met_inverse = new TH1F("h_met_inverse", "h_met_inverse", 200, 0, 200);
871 
872  h_mt = new TH1F("h_mt", "h_mt", 200, 0, 200);
873  h_mt_inverse = new TH1F("h_mt_inverse", "h_mt_inverse", 200, 0, 200);
874 
875  h_met_EB = new TH1F("h_met_EB", "h_met_EB", 200, 0, 200);
876  h_met_inverse_EB = new TH1F("h_met_inverse_EB", "h_met_inverse_EB", 200, 0, 200);
877 
878  h_mt_EB = new TH1F("h_mt_EB", "h_mt_EB", 200, 0, 200);
879  h_mt_inverse_EB = new TH1F("h_mt_inverse_EB", "h_mt_inverse_EB", 200, 0, 200);
880 
881  h_met_EE = new TH1F("h_met_EE", "h_met_EE", 200, 0, 200);
882  h_met_inverse_EE = new TH1F("h_met_inverse_EE", "h_met_inverse_EE", 200, 0, 200);
883 
884  h_mt_EE = new TH1F("h_mt_EE", "h_mt_EE", 200, 0, 200);
885  h_mt_inverse_EE = new TH1F("h_mt_inverse_EE", "h_mt_inverse_EE", 200, 0, 200);
886 
887  h_scEt = new TH1F("h_scEt", "h_scEt", 200, 0, 100);
888  h_scEta = new TH1F("h_scEta", "h_scEta", 200, -3, 3);
889  h_scPhi = new TH1F("h_scPhi", "h_scPhi", 200, -4, 4);
890 
891  //VALIDATION PLOTS
892  //EB
893  h_EB_trkiso = new TH1F("h_EB_trkiso", "h_EB_trkiso", 200, 0.0, 9.0);
894  h_EB_ecaliso = new TH1F("h_EB_ecaliso", "h_EB_ecaliso", 200, 0.0, 9.0);
895  h_EB_hcaliso = new TH1F("h_EB_hcaliso", "h_EB_hcaliso", 200, 0.0, 9.0);
896  h_EB_sIetaIeta = new TH1F("h_EB_sIetaIeta", "h_EB_sIetaIeta", 200, 0.0, 0.02);
897  h_EB_dphi = new TH1F("h_EB_dphi", "h_EB_dphi", 200, -0.03, 0.03);
898  h_EB_deta = new TH1F("h_EB_deta", "h_EB_deta", 200, -0.01, 0.01);
899  h_EB_HoE = new TH1F("h_EB_HoE", "h_EB_HoE", 200, 0.0, 0.2);
900  //EE
901  h_EE_trkiso = new TH1F("h_EE_trkiso", "h_EE_trkiso", 200, 0.0, 9.0);
902  h_EE_ecaliso = new TH1F("h_EE_ecaliso", "h_EE_ecaliso", 200, 0.0, 9.0);
903  h_EE_hcaliso = new TH1F("h_EE_hcaliso", "h_EE_hcaliso", 200, 0.0, 9.0);
904  h_EE_sIetaIeta = new TH1F("h_EE_sIetaIeta", "h_EE_sIetaIeta", 200, 0.0, 0.1);
905  h_EE_dphi = new TH1F("h_EE_dphi", "h_EE_dphi", 200, -0.03, 0.03);
906  h_EE_deta = new TH1F("h_EE_deta", "h_EE_deta", 200, -0.01, 0.01);
907  h_EE_HoE = new TH1F("h_EE_HoE", "h_EE_HoE", 200, 0.0, 0.2);
908 
909  //
910  //
911  h_trackIso_eb_NmOne = new TH1F("h_trackIso_eb_NmOne", "trackIso EB N-1 plot", 80, 0, 8);
912  h_trackIso_ee_NmOne = new TH1F("h_trackIso_ee_NmOne", "trackIso EE N-1 plot", 80, 0, 8);
913 
914  // if you add some new variable change the nBarrelVars_ accordingly
915  // reminder: in the current implementation you must have the same number
916  // of vars in both barrel and endcaps
917  nBarrelVars_ = 13;
918  //
919  // Put EB variables together and EE variables together
920  // number of barrel variables = number of endcap variable
921  // if you don't want to use some variable put a very high cut
922  CutVars_.push_back(trackIso_EB_); //0
923  CutVars_.push_back(ecalIso_EB_); //1
924  CutVars_.push_back(hcalIso_EB_); //2
925  CutVars_.push_back(sihih_EB_); //3
926  CutVars_.push_back(dphi_EB_); //4
927  CutVars_.push_back(deta_EB_); //5
928  CutVars_.push_back(hoe_EB_); //6
929  CutVars_.push_back(cIso_EB_); //7
930  CutVars_.push_back(tip_bspot_EB_); //8
931  CutVars_.push_back(eop_EB_); //9
932  CutVars_.push_back(trackIsoUser_EB_); //10
933  CutVars_.push_back(ecalIsoUser_EB_); //11
934  CutVars_.push_back(hcalIsoUser_EB_); //12
935  //
936  CutVars_.push_back(trackIso_EE_); //0
937  CutVars_.push_back(ecalIso_EE_); //1
938  CutVars_.push_back(hcalIso_EE_); //2
939  CutVars_.push_back(sihih_EE_); //3
940  CutVars_.push_back(dphi_EE_); //4
941  CutVars_.push_back(deta_EE_); //5
942  CutVars_.push_back(hoe_EE_); //6
943  CutVars_.push_back(cIso_EE_); //7
944  CutVars_.push_back(tip_bspot_EE_); //8
945  CutVars_.push_back(eop_EE_); //9
946  CutVars_.push_back(trackIsoUser_EE_); //10
947  CutVars_.push_back(ecalIsoUser_EE_); //11
948  CutVars_.push_back(hcalIsoUser_EE_); //12
949  //
950  InvVars_.push_back(trackIso_EB_inv); //0
951  InvVars_.push_back(ecalIso_EB_inv); //1
952  InvVars_.push_back(hcalIso_EB_inv); //2
953  InvVars_.push_back(sihih_EB_inv); //3
954  InvVars_.push_back(dphi_EB_inv); //4
955  InvVars_.push_back(deta_EB_inv); //5
956  InvVars_.push_back(hoe_EB_inv); //6
957  InvVars_.push_back(cIso_EB_inv); //7
958  InvVars_.push_back(tip_bspot_EB_inv); //8
959  InvVars_.push_back(eop_EB_inv); //9
960  InvVars_.push_back(trackIsoUser_EB_inv); //10
961  InvVars_.push_back(ecalIsoUser_EB_inv); //11
962  InvVars_.push_back(hcalIsoUser_EB_inv); //12
963  //
964  InvVars_.push_back(trackIso_EE_inv); //0
965  InvVars_.push_back(ecalIso_EE_inv); //1
966  InvVars_.push_back(hcalIso_EE_inv); //2
967  InvVars_.push_back(sihih_EE_inv); //3
968  InvVars_.push_back(dphi_EE_inv); //4
969  InvVars_.push_back(deta_EE_inv); //5
970  InvVars_.push_back(hoe_EE_inv); //6
971  InvVars_.push_back(cIso_EE_inv); //7
972  InvVars_.push_back(tip_bspot_EE_inv); //8
973  InvVars_.push_back(eop_EE_inv); //9
974  InvVars_.push_back(trackIsoUser_EE_inv); //10
975  InvVars_.push_back(ecalIsoUser_EE_inv); //11
976  InvVars_.push_back(hcalIsoUser_EE_inv); //12
977  //
978  //
979  // ________________________________________________________________________
980  //
981  // The VBTF Root Tuples ---------------------------------------------------
982  // ________________________________________________________________________
983  //
984  WENU_VBTFselectionFile_ = new TFile(TString(WENU_VBTFselectionFileName_), "RECREATE");
985 
986  vbtfSele_tree = new TTree("vbtfSele_tree", "Tree to store the W Candidates that pass the VBTF selection");
987  vbtfSele_tree->Branch("runNumber", &runNumber, "runNumber/I");
988  vbtfSele_tree->Branch("eventNumber", &eventNumber, "eventNumber/L");
989  vbtfSele_tree->Branch("lumiSection", &lumiSection, "lumiSection/I");
990  //
991  vbtfSele_tree->Branch("ele_sc_gsf_et", &ele_sc_gsf_et, "ele_sc_gsf_et/F");
992  vbtfSele_tree->Branch("ele_sc_energy", &ele_sc_energy, "ele_sc_energy/F");
993  vbtfSele_tree->Branch("ele_sc_eta", &ele_sc_eta, "ele_sc_eta/F");
994  vbtfSele_tree->Branch("ele_sc_phi", &ele_sc_phi, "ele_sc_phi/F");
995  vbtfSele_tree->Branch("ele_sc_rho", &ele_sc_rho, "ele_sc_rho/F");
996  vbtfSele_tree->Branch("ele_cand_et", &ele_cand_et, "ele_cand_et/F");
997  vbtfSele_tree->Branch("ele_cand_eta", &ele_cand_eta, "ele_cand_eta/F");
998  vbtfSele_tree->Branch("ele_cand_phi", &ele_cand_phi, "ele_cand_phi/F");
999  vbtfSele_tree->Branch("ele_iso_track", &ele_iso_track, "ele_iso_track/F");
1000  vbtfSele_tree->Branch("ele_iso_ecal", &ele_iso_ecal, "ele_iso_ecal/F");
1001  vbtfSele_tree->Branch("ele_iso_hcal", &ele_iso_hcal, "ele_iso_hcal/F");
1002  vbtfSele_tree->Branch("ele_id_sihih", &ele_id_sihih, "ele_id_sihih/F");
1003  vbtfSele_tree->Branch("ele_id_deta", &ele_id_deta, "ele_id_deta/F");
1004  vbtfSele_tree->Branch("ele_id_dphi", &ele_id_dphi, "ele_id_dphi/F");
1005  vbtfSele_tree->Branch("ele_id_hoe", &ele_id_hoe, "ele_id_hoe/F");
1006  vbtfSele_tree->Branch("ele_cr_mhitsinner", &ele_cr_mhitsinner, "ele_cr_mhitsinner/I");
1007  vbtfSele_tree->Branch("ele_cr_dcot", &ele_cr_dcot, "ele_cr_dcot/F");
1008  vbtfSele_tree->Branch("ele_cr_dist", &ele_cr_dist, "ele_cr_dist/F");
1009  vbtfSele_tree->Branch("ele_vx", &ele_vx, "ele_vx/F");
1010  vbtfSele_tree->Branch("ele_vy", &ele_vy, "ele_vy/F");
1011  vbtfSele_tree->Branch("ele_vz", &ele_vz, "ele_vz/F");
1012  vbtfSele_tree->Branch("pv_x", &pv_x, "pv_x/F");
1013  vbtfSele_tree->Branch("pv_y", &pv_y, "pv_y/F");
1014  vbtfSele_tree->Branch("pv_z", &pv_z, "pv_z/F");
1015  vbtfSele_tree->Branch("ele_gsfCharge", &ele_gsfCharge, "ele_gsfCharge/I");
1016  vbtfSele_tree->Branch("ele_ctfCharge", &ele_ctfCharge, "ele_ctfCharge/I");
1017  vbtfSele_tree->Branch("ele_scPixCharge", &ele_scPixCharge, "ele_scPixCharge/I");
1018  vbtfSele_tree->Branch("ele_eop", &ele_eop, "ele_eop/F");
1019  vbtfSele_tree->Branch("ele_tip_bs", &ele_tip_bs, "ele_tip_bs/F");
1020  vbtfSele_tree->Branch("ele_tip_pv", &ele_tip_pv, "ele_tip_pv/F");
1021  vbtfSele_tree->Branch("ele_pin", &ele_pin, "ele_pin/F");
1022  vbtfSele_tree->Branch("ele_pout", &ele_pout, "ele_pout/F");
1023  vbtfSele_tree->Branch("event_caloMET", &event_caloMET, "event_caloMET/F");
1024  vbtfSele_tree->Branch("event_pfMET", &event_pfMET, "event_pfMET/F");
1025  vbtfSele_tree->Branch("event_tcMET", &event_tcMET, "event_tcMET/F");
1026  vbtfSele_tree->Branch("event_caloMT", &event_caloMT, "event_caloMT/F");
1027  vbtfSele_tree->Branch("event_pfMT", &event_pfMT, "event_pfMT/F");
1028  vbtfSele_tree->Branch("event_tcMT", &event_tcMT, "event_tcMT/F");
1029  vbtfSele_tree->Branch("event_caloMET_phi", &event_caloMET_phi, "event_caloMET_phi/F");
1030  vbtfSele_tree->Branch("event_pfMET_phi", &event_pfMET_phi, "event_pfMET_phi/F");
1031  vbtfSele_tree->Branch("event_tcMET_phi", &event_tcMET_phi, "event_tcMET_phi/F");
1032  //
1033  // the extra jet variables:
1035  vbtfSele_tree->Branch("calojet_et", calojet_et, "calojet_et[5]/F");
1036  vbtfSele_tree->Branch("calojet_eta", calojet_eta, "calojet_eta[5]/F");
1037  vbtfSele_tree->Branch("calojet_phi", calojet_phi, "calojet_phi[5]/F");
1038  vbtfSele_tree->Branch("pfjet_et", pfjet_et, "pfjet_et[5]/F");
1039  vbtfSele_tree->Branch("pfjet_eta", pfjet_eta, "pfjet_eta[5]/F");
1040  vbtfSele_tree->Branch("pfjet_phi", pfjet_phi, "pfjet_phi[5]/F");
1041  }
1042  if (storeExtraInformation_) {
1043  vbtfSele_tree->Branch("ele2nd_sc_gsf_et", &ele2nd_sc_gsf_et, "ele2nd_sc_gsf_et/F");
1044  vbtfSele_tree->Branch("ele2nd_passes_selection", &ele2nd_passes_selection, "ele2nd_passes_selection/I");
1045  vbtfSele_tree->Branch("ele2nd_ecalDriven", &ele2nd_ecalDriven, "ele2nd_ecalDriven/I");
1046  vbtfSele_tree->Branch("event_caloSumEt", &event_caloSumEt, "event_caloSumEt/F");
1047  vbtfSele_tree->Branch("event_pfSumEt", &event_pfSumEt, "event_pfSumEt/F");
1048  vbtfSele_tree->Branch("event_tcSumEt", &event_tcSumEt, "event_tcSumEt/F");
1049  }
1050  vbtfSele_tree->Branch("event_datasetTag", &event_datasetTag, "event_dataSetTag/I");
1051  //
1052  //
1053  // everything after preselection
1054  //
1055  WENU_VBTFpreseleFile_ = new TFile(TString(WENU_VBTFpreseleFileName_), "RECREATE");
1056 
1057  vbtfPresele_tree = new TTree("vbtfPresele_tree", "Tree to store the W Candidates that pass the VBTF preselection");
1058  vbtfPresele_tree->Branch("runNumber", &runNumber, "runNumber/I");
1059  vbtfPresele_tree->Branch("eventNumber", &eventNumber, "eventNumber/L");
1060  vbtfPresele_tree->Branch("lumiSection", &lumiSection, "lumiSection/I");
1061  //
1062  vbtfPresele_tree->Branch("ele_sc_gsf_et", &ele_sc_gsf_et, "ele_sc_gsf_et/F");
1063  vbtfPresele_tree->Branch("ele_sc_energy", &ele_sc_energy, "ele_sc_energy/F");
1064  vbtfPresele_tree->Branch("ele_sc_eta", &ele_sc_eta, "ele_sc_eta/F");
1065  vbtfPresele_tree->Branch("ele_sc_phi", &ele_sc_phi, "ele_sc_phi/F");
1066  vbtfPresele_tree->Branch("ele_sc_rho", &ele_sc_rho, "ele_sc_rho/F");
1067  vbtfPresele_tree->Branch("ele_cand_et", &ele_cand_et, "ele_cand_et/F");
1068  vbtfPresele_tree->Branch("ele_cand_eta", &ele_cand_eta, "ele_cand_eta/F");
1069  vbtfPresele_tree->Branch("ele_cand_phi", &ele_cand_phi, "ele_cand_phi/F");
1070  vbtfPresele_tree->Branch("ele_iso_track", &ele_iso_track, "ele_iso_track/F");
1071  vbtfPresele_tree->Branch("ele_iso_ecal", &ele_iso_ecal, "ele_iso_ecal/F");
1072  vbtfPresele_tree->Branch("ele_iso_hcal", &ele_iso_hcal, "ele_iso_hcal/F");
1073  vbtfPresele_tree->Branch("ele_id_sihih", &ele_id_sihih, "ele_id_sihih/F");
1074  vbtfPresele_tree->Branch("ele_id_deta", &ele_id_deta, "ele_id_deta/F");
1075  vbtfPresele_tree->Branch("ele_id_dphi", &ele_id_dphi, "ele_id_dphi/F");
1076  vbtfPresele_tree->Branch("ele_id_hoe", &ele_id_hoe, "ele_id_hoe/F");
1077  vbtfPresele_tree->Branch("ele_cr_mhitsinner", &ele_cr_mhitsinner, "ele_cr_mhitsinner/I");
1078  vbtfPresele_tree->Branch("ele_cr_dcot", &ele_cr_dcot, "ele_cr_dcot/F");
1079  vbtfPresele_tree->Branch("ele_cr_dist", &ele_cr_dist, "ele_cr_dist/F");
1080  vbtfPresele_tree->Branch("ele_vx", &ele_vx, "ele_vx/F");
1081  vbtfPresele_tree->Branch("ele_vy", &ele_vy, "ele_vy/F");
1082  vbtfPresele_tree->Branch("ele_vz", &ele_vz, "ele_vz/F");
1083  vbtfPresele_tree->Branch("pv_x", &pv_x, "pv_x/F");
1084  vbtfPresele_tree->Branch("pv_y", &pv_y, "pv_y/F");
1085  vbtfPresele_tree->Branch("pv_z", &pv_z, "pv_z/F");
1086  vbtfPresele_tree->Branch("ele_gsfCharge", &ele_gsfCharge, "ele_gsfCharge/I");
1087  vbtfPresele_tree->Branch("ele_ctfCharge", &ele_ctfCharge, "ele_ctfCharge/I");
1088  vbtfPresele_tree->Branch("ele_scPixCharge", &ele_scPixCharge, "ele_scPixCharge/I");
1089  vbtfPresele_tree->Branch("ele_eop", &ele_eop, "ele_eop/F");
1090  vbtfPresele_tree->Branch("ele_tip_bs", &ele_tip_bs, "ele_tip_bs/F");
1091  vbtfPresele_tree->Branch("ele_tip_pv", &ele_tip_pv, "ele_tip_pv/F");
1092  vbtfPresele_tree->Branch("ele_pin", &ele_pin, "ele_pin/F");
1093  vbtfPresele_tree->Branch("ele_pout", &ele_pout, "ele_pout/F");
1094  vbtfPresele_tree->Branch("event_caloMET", &event_caloMET, "event_caloMET/F");
1095  vbtfPresele_tree->Branch("event_pfMET", &event_pfMET, "event_pfMET/F");
1096  vbtfPresele_tree->Branch("event_tcMET", &event_tcMET, "event_tcMET/F");
1097  vbtfPresele_tree->Branch("event_caloMT", &event_caloMT, "event_caloMT/F");
1098  vbtfPresele_tree->Branch("event_pfMT", &event_pfMT, "event_pfMT/F");
1099  vbtfPresele_tree->Branch("event_tcMT", &event_tcMT, "event_tcMT/F");
1100  vbtfPresele_tree->Branch("event_caloMET_phi", &event_caloMET_phi, "event_caloMET_phi/F");
1101  vbtfPresele_tree->Branch("event_pfMET_phi", &event_pfMET_phi, "event_pfMET_phi/F");
1102  vbtfPresele_tree->Branch("event_tcMET_phi", &event_tcMET_phi, "event_tcMET_phi/F");
1103  vbtfPresele_tree->Branch("event_caloSumEt", &event_caloSumEt, "event_caloSumEt/F");
1104  vbtfPresele_tree->Branch("event_pfSumEt", &event_pfSumEt, "event_pfSumEt/F");
1105  vbtfPresele_tree->Branch("event_tcSumEt", &event_tcSumEt, "event_tcSumEt/F");
1106  // the extra jet variables:
1108  vbtfPresele_tree->Branch("calojet_et", calojet_et, "calojet_et[5]/F");
1109  vbtfPresele_tree->Branch("calojet_eta", calojet_eta, "calojet_eta[5]/F");
1110  vbtfPresele_tree->Branch("calojet_phi", calojet_phi, "calojet_phi[5]/F");
1111  vbtfPresele_tree->Branch("pfjet_et", pfjet_et, "pfjet_et[5]/F");
1112  vbtfPresele_tree->Branch("pfjet_eta", pfjet_eta, "pfjet_eta[5]/F");
1113  vbtfPresele_tree->Branch("pfjet_phi", pfjet_phi, "pfjet_phi[5]/F");
1114  }
1115  if (storeExtraInformation_) {
1116  vbtfPresele_tree->Branch("ele2nd_sc_gsf_et", &ele2nd_sc_gsf_et, "ele2nd_sc_gsf_et/F");
1117  vbtfPresele_tree->Branch("ele2nd_sc_eta", &ele2nd_sc_eta, "ele2nd_sc_eta/F");
1118  vbtfPresele_tree->Branch("ele2nd_sc_phi", &ele2nd_sc_phi, "ele2nd_sc_phi/F");
1119  vbtfPresele_tree->Branch("ele2nd_sc_rho", &ele2nd_sc_rho, "ele2nd_sc_rho/F");
1120  vbtfPresele_tree->Branch("ele2nd_cand_eta", &ele2nd_cand_eta, "ele2nd_cand_eta/F");
1121  vbtfPresele_tree->Branch("ele2nd_cand_phi", &ele2nd_cand_phi, "ele2nd_cand_phi/F");
1122  vbtfPresele_tree->Branch("ele2nd_pin", &ele2nd_pin, "ele2nd_pin/F");
1123  vbtfPresele_tree->Branch("ele2nd_pout", &ele2nd_pout, "ele2nd_pout/F");
1124  vbtfPresele_tree->Branch("ele2nd_ecalDriven", &ele2nd_ecalDriven, "ele2nd_ecalDriven/I");
1125  vbtfPresele_tree->Branch("ele2nd_passes_selection", &ele2nd_passes_selection, "ele2nd_passes_selection/I");
1126  vbtfPresele_tree->Branch("ele_hltmatched_dr", &ele_hltmatched_dr, "ele_hltmatched_dr/F");
1127  vbtfPresele_tree->Branch("event_triggerDecision", &event_triggerDecision, "event_triggerDecision/I");
1128  vbtfPresele_tree->Branch("VtxTracksSize", &VtxTracksSize);
1129  vbtfPresele_tree->Branch("VtxNormalizedChi2", &VtxNormalizedChi2);
1130  vbtfPresele_tree->Branch("VtxTracksSizeBS", &VtxTracksSizeBS);
1131  vbtfPresele_tree->Branch("VtxNormalizedChi2BS", &VtxNormalizedChi2BS);
1132  }
1134  vbtfPresele_tree->Branch("ele2nd_cand_et", &ele2nd_cand_et, "ele2nd_cand_et/F");
1135  vbtfPresele_tree->Branch("ele2nd_iso_track", &ele2nd_iso_track, "ele2nd_iso_track /F");
1136  vbtfPresele_tree->Branch("ele2nd_iso_ecal", &ele2nd_iso_ecal, "ele2nd_iso_ecal/F");
1137  vbtfPresele_tree->Branch("ele2nd_iso_hcal", &ele2nd_iso_hcal, "ele2nd_iso_hcal/F");
1138  vbtfPresele_tree->Branch("ele2nd_id_sihih", &ele2nd_id_sihih, "ele2nd_id_sihih/F");
1139  vbtfPresele_tree->Branch("ele2nd_id_deta", &ele2nd_id_deta, "ele2nd_id_deta/F");
1140  vbtfPresele_tree->Branch("ele2nd_id_dphi", &ele2nd_id_dphi, "ele2nd_id_dphi/F");
1141  vbtfPresele_tree->Branch("ele2nd_id_hoe", &ele2nd_id_hoe, "ele2nd_id_hoe/F");
1142  vbtfPresele_tree->Branch("ele2nd_cr_mhitsinner", &ele2nd_cr_mhitsinner, "ele2nd_cr_mhitsinner/I");
1143  vbtfPresele_tree->Branch("ele2nd_cr_dcot", &ele2nd_cr_dcot, "ele2nd_cr_dcot/F");
1144  vbtfPresele_tree->Branch("ele2nd_cr_dist", &ele2nd_cr_dist, "ele2nd_cr_dist/F");
1145  vbtfPresele_tree->Branch("ele2nd_vx", &ele2nd_vx, "ele2nd_vx/F");
1146  vbtfPresele_tree->Branch("ele2nd_vy", &ele2nd_vy, "ele2nd_vy/F");
1147  vbtfPresele_tree->Branch("ele2nd_vz", &ele2nd_vz, "ele2nd_vz/F");
1148 
1149  vbtfPresele_tree->Branch("ele2nd_gsfCharge", &ele2nd_gsfCharge, "ele2nd_gsfCharge/I");
1150  vbtfPresele_tree->Branch("ele2nd_ctfCharge", &ele2nd_ctfCharge, "ele2nd_ctfCharge/I");
1151  vbtfPresele_tree->Branch("ele2nd_scPixCharge", &ele2nd_scPixCharge, "ele2nd_scPixCharge/I");
1152  vbtfPresele_tree->Branch("ele2nd_eop", &ele2nd_eop, "ele2nd_eop/F");
1153  vbtfPresele_tree->Branch("ele2nd_tip_bs", &ele2nd_tip_bs, "ele2nd_tip_bs/F");
1154  vbtfPresele_tree->Branch("ele2nd_tip_pv", &ele2nd_tip_pv, "ele2nd_tip_pv/F");
1155  vbtfPresele_tree->Branch("ele2nd_hltmatched_dr", &ele2nd_hltmatched_dr, "ele2nd_hltmatched_dr/F");
1156  }
1157  vbtfPresele_tree->Branch("event_datasetTag", &event_datasetTag, "event_dataSetTag/I");
1158 
1159  //
1160  // _________________________________________________________________________
1161  //
1162  //
1163  //
1164 }
1165 
1166 // ------------ method called once each job just after ending the event loop -
1167 void WenuPlots::endJob() {
1168  TFile *newfile = new TFile(TString(outputFile_), "RECREATE");
1169  //
1170  // for consistency all the plots are in the root file
1171  // even though they may be empty (in the case when
1172  // usePrecalcID_== true inverted and N-1 are empty)
1173  h_met->Write();
1174  h_met_inverse->Write();
1175  h_mt->Write();
1176  h_mt_inverse->Write();
1177 
1178  h_met_EB->Write();
1179  h_met_inverse_EB->Write();
1180  h_mt_EB->Write();
1181  h_mt_inverse_EB->Write();
1182 
1183  h_met_EE->Write();
1184  h_met_inverse_EE->Write();
1185  h_mt_EE->Write();
1186  h_mt_inverse_EE->Write();
1187 
1188  h_scEt->Write();
1189  h_scEta->Write();
1190  h_scPhi->Write();
1191 
1192  h_EB_trkiso->Write();
1193  h_EB_ecaliso->Write();
1194  h_EB_hcaliso->Write();
1195  h_EB_sIetaIeta->Write();
1196  h_EB_dphi->Write();
1197  h_EB_deta->Write();
1198  h_EB_HoE->Write();
1199 
1200  h_EE_trkiso->Write();
1201  h_EE_ecaliso->Write();
1202  h_EE_hcaliso->Write();
1203  h_EE_sIetaIeta->Write();
1204  h_EE_dphi->Write();
1205  h_EE_deta->Write();
1206  h_EE_HoE->Write();
1207 
1208  //
1209  h_trackIso_eb_NmOne->Write();
1210  h_trackIso_ee_NmOne->Write();
1211  //
1212  newfile->Close();
1213  //
1214  // write the VBTF trees
1215  //
1216  WENU_VBTFpreseleFile_->Write();
1217  WENU_VBTFpreseleFile_->Close();
1218  WENU_VBTFselectionFile_->Write();
1219  WENU_VBTFselectionFile_->Close();
1220 }
1221 
1222 //define this as a plug-in
WenuPlots::CheckCutsInverse
Bool_t CheckCutsInverse(const pat::Electron *ele)
Definition: WenuPlots.cc:744
WenuPlots::usePrecalcIDType_
std::string usePrecalcIDType_
Definition: WenuPlots.h:59
reco::GsfElectron::convDcot
float convDcot() const
Definition: GsfElectron.h:591
WenuPlots::event_pfMT
Float_t event_pfMT
Definition: WenuPlots.h:209
WenuPlots::ecalIso_EB_
Double_t ecalIso_EB_
Definition: WenuPlots.h:123
WenuPlots::sihih_EE_
Double_t sihih_EE_
Definition: WenuPlots.h:138
WenuPlots::ele_tip_pvbs
Float_t ele_tip_pvbs
Definition: WenuPlots.h:255
counter
Definition: counter.py:1
WenuPlots::h_mt_EE
TH1F * h_mt_EE
Definition: WenuPlots.h:93
DDAxes::y
WenuPlots::ecalIso_EE_
Double_t ecalIso_EE_
Definition: WenuPlots.h:127
WenuPlots::pv_y
Float_t pv_y
Definition: WenuPlots.h:203
mps_fire.i
i
Definition: mps_fire.py:355
WenuPlots::ele2nd_scPixCharge
Int_t ele2nd_scPixCharge
Definition: WenuPlots.h:247
reco::GsfElectron::dr03TkSumPt
float dr03TkSumPt() const
Definition: GsfElectron.h:529
pat::EcalIso
Definition: Isolation.h:11
reco::GsfElectron::isEB
bool isEB() const
Definition: GsfElectron.h:336
reco::GsfElectron::trackMomentumOut
math::XYZVectorF trackMomentumOut() const
Definition: GsfElectron.h:278
WenuPlots::hcalIso_EE_inv
Bool_t hcalIso_EE_inv
Definition: WenuPlots.h:159
WenuPlots::ele2nd_cr_mhitsinner
Int_t ele2nd_cr_mhitsinner
Definition: WenuPlots.h:247
WenuPlots::hcalIsoUser_EB_
Double_t hcalIsoUser_EB_
Definition: WenuPlots.h:148
WenuPlots::ele_vy
Float_t ele_vy
Definition: WenuPlots.h:201
edm::Handle::product
T const * product() const
Definition: Handle.h:70
WenuPlots::CheckCuts
Bool_t CheckCuts(const pat::Electron *ele)
Definition: WenuPlots.cc:719
WenuPlots::event_pfSumEt
Float_t event_pfSumEt
Definition: WenuPlots.h:207
reco::GsfElectron::deltaPhiSuperClusterTrackAtVtx
float deltaPhiSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:236
WenuPlots::sihih_EB_
Double_t sihih_EB_
Definition: WenuPlots.h:130
WenuPlots::pv_x
Float_t pv_x
Definition: WenuPlots.h:203
WenuPlots::dphi_EE_
Double_t dphi_EE_
Definition: WenuPlots.h:140
WenuPlots::cIso_EB_inv
Bool_t cIso_EB_inv
Definition: WenuPlots.h:165
pat::CompositeCandidate
Analysis-level particle class.
Definition: CompositeCandidate.h:31
WenuPlots::CheckCutsNminusOne
Bool_t CheckCutsNminusOne(const pat::Electron *ele, Int_t jj)
Definition: WenuPlots.cc:752
WenuPlots::hoe_EE_inv
Bool_t hoe_EE_inv
Definition: WenuPlots.h:172
WenuPlots::eventNumber
Long64_t eventNumber
Definition: WenuPlots.h:193
WenuPlots::ele_sc_gsf_et
Float_t ele_sc_gsf_et
Definition: WenuPlots.h:195
WenuPlots::pfjet_phi
Float_t pfjet_phi[5]
Definition: WenuPlots.h:215
WenuPlots::ele_iso_hcal
Float_t ele_iso_hcal
Definition: WenuPlots.h:197
WenuPlots::storeExtraInformation_
Bool_t storeExtraInformation_
Definition: WenuPlots.h:237
gather_cfg.cout
cout
Definition: gather_cfg.py:144
WenuPlots::h_EE_ecaliso
TH1F * h_EE_ecaliso
Definition: WenuPlots.h:109
WenuPlots::ele_sc_eta
Float_t ele_sc_eta
Definition: WenuPlots.h:194
WenuPlots::ele2nd_iso_hcal
Float_t ele2nd_iso_hcal
Definition: WenuPlots.h:243
pat::Electron::gsfTrack
reco::GsfTrackRef gsfTrack() const override
override the reco::GsfElectron::gsfTrack method, to access the internal storage of the supercluster
reco::LeafCandidate::vz
double vz() const override
z coordinate of vertex position
Definition: LeafCandidate.h:171
WenuPlots::wenuCollectionToken_
edm::EDGetTokenT< pat::CompositeCandidateCollection > wenuCollectionToken_
Definition: WenuPlots.h:68
WenuPlots::WENU_VBTFpreseleFileName_
std::string WENU_VBTFpreseleFileName_
Definition: WenuPlots.h:235
WenuPlots::h_scEta
TH1F * h_scEta
Definition: WenuPlots.h:97
WenuPlots::ele2nd_cand_eta
Float_t ele2nd_cand_eta
Definition: WenuPlots.h:220
pat::CompositeCandidateCollection
std::vector< CompositeCandidate > CompositeCandidateCollection
Definition: CompositeCandidate.h:22
WenuPlots::ele_tip_bs
Float_t ele_tip_bs
Definition: WenuPlots.h:205
reco::GsfElectron::dr03IsolationVariables
const IsolationVariables & dr03IsolationVariables() const
Definition: GsfElectron.h:538
WenuPlots::ele2nd_tip_bs
Float_t ele2nd_tip_bs
Definition: WenuPlots.h:248
WenuPlots::VtxTracksSize
std::vector< Int_t > VtxTracksSize
Definition: WenuPlots.h:250
WenuPlots::h_met
TH1F * h_met
Definition: WenuPlots.h:81
reco::LeafCandidate::vx
double vx() const override
x coordinate of vertex position
Definition: LeafCandidate.h:167
WenuPlots::ele2nd_cr_dcot
Float_t ele2nd_cr_dcot
Definition: WenuPlots.h:245
WenuPlots::sihih_EB_inv
Bool_t sihih_EB_inv
Definition: WenuPlots.h:161
WenuPlots::pvbs_y
Float_t pvbs_y
Definition: WenuPlots.h:254
WenuPlots::h_EB_dphi
TH1F * h_EB_dphi
Definition: WenuPlots.h:104
runonSM.newfile
newfile
Definition: runonSM.py:49
pat::Lepton::userIsolation
float userIsolation(IsolationKeys key) const
Definition: Lepton.h:48
WenuPlots::tip_bspot_EB_inv
Bool_t tip_bspot_EB_inv
Definition: WenuPlots.h:166
WenuPlots::h_EB_hcaliso
TH1F * h_EB_hcaliso
Definition: WenuPlots.h:102
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
WenuPlots::h_EB_HoE
TH1F * h_EB_HoE
Definition: WenuPlots.h:106
WenuPlots::WENU_VBTFselectionFileName_
std::string WENU_VBTFselectionFileName_
Definition: WenuPlots.h:234
WenuPlots::CheckCutInv
Bool_t CheckCutInv(const pat::Electron *wenu, Int_t i)
Definition: WenuPlots.cc:770
DDAxes::x
WenuPlots::cIso_EE_
Double_t cIso_EE_
Definition: WenuPlots.h:142
WenuPlots::ele_vx
Float_t ele_vx
Definition: WenuPlots.h:201
pat::Electron::closestCtfTrackRef
reco::TrackRef closestCtfTrackRef() const override
override the reco::GsfElectron::closestCtfTrackRef method, to access the internal storage of the trac...
WenuPlots::calojet_eta
Float_t calojet_eta[5]
Definition: WenuPlots.h:211
WenuPlots::DatasetTag_
Int_t DatasetTag_
Definition: WenuPlots.h:239
WenuPlots::ele_id_sihih
Float_t ele_id_sihih
Definition: WenuPlots.h:198
pat::PATObject::userFloat
float userFloat(const std::string &key) const
Definition: PATObject.h:876
reco::GsfElectron::hadronicOverEm
float hadronicOverEm() const
Definition: GsfElectron.h:476
edm::Handle
Definition: AssociativeIterator.h:50
WenuPlots::h_scPhi
TH1F * h_scPhi
Definition: WenuPlots.h:98
WenuPlots::ele2nd_id_deta
Float_t ele2nd_id_deta
Definition: WenuPlots.h:244
WenuPlots::analyze
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: WenuPlots.cc:198
WenuPlots::PrimaryVerticesCollectionToken_
edm::EDGetTokenT< std::vector< reco::Vertex > > PrimaryVerticesCollectionToken_
Definition: WenuPlots.h:73
WenuPlots::WENU_VBTFselectionFile_
TFile * WENU_VBTFselectionFile_
Definition: WenuPlots.h:231
WenuPlots::ele2nd_pout
Float_t ele2nd_pout
Definition: WenuPlots.h:223
WenuPlots::ele_id_deta
Float_t ele_id_deta
Definition: WenuPlots.h:198
WenuPlots::VtxTracksSizeBS
std::vector< Int_t > VtxTracksSizeBS
Definition: WenuPlots.h:252
WenuPlots::pfJetCollectionTag_
edm::InputTag pfJetCollectionTag_
Definition: WenuPlots.h:71
WenuPlots::h_mt_inverse
TH1F * h_mt_inverse
Definition: WenuPlots.h:84
WenuPlots::ele_cand_phi
Float_t ele_cand_phi
Definition: WenuPlots.h:196
WenuPlots::ele2nd_tip_pv
Float_t ele2nd_tip_pv
Definition: WenuPlots.h:248
WenuPlots::dphi_EB_inv
Bool_t dphi_EB_inv
Definition: WenuPlots.h:163
BTaggingMonitor_cfi.met
met
Definition: BTaggingMonitor_cfi.py:84
WenuPlots::InvVars_
std::vector< Bool_t > InvVars_
Definition: WenuPlots.h:188
WenuPlots::vbtfPresele_tree
TTree * vbtfPresele_tree
Definition: WenuPlots.h:233
deltaR.h
WenuPlots::ele2nd_passes_selection
Int_t ele2nd_passes_selection
Definition: WenuPlots.h:224
WenuPlots::event_pfMET_phi
Float_t event_pfMET_phi
Definition: WenuPlots.h:208
reco::GsfElectron::IsolationVariables::tkSumPt
float tkSumPt
Definition: GsfElectron.h:511
WenuPlots::pfjet_et
Float_t pfjet_et[5]
Definition: WenuPlots.h:213
WenuPlots::eop_EE_
Double_t eop_EE_
Definition: WenuPlots.h:144
pat::Electron::electronID
float electronID(const std::string &name) const
Returns a specific electron ID associated to the pat::Electron given its name.
WenuPlots::hcalIsoUser_EE_
Double_t hcalIsoUser_EE_
Definition: WenuPlots.h:151
WenuPlots::ReturnCandVar
Double_t ReturnCandVar(const pat::Electron *ele, Int_t i)
Definition: WenuPlots.cc:784
WenuPlots
Definition: WenuPlots.h:38
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
WenuPlots::ele2nd_vy
Float_t ele2nd_vy
Definition: WenuPlots.h:246
WenuPlots::ele2nd_sc_eta
Float_t ele2nd_sc_eta
Definition: WenuPlots.h:217
WenuPlots::ele2nd_eop
Float_t ele2nd_eop
Definition: WenuPlots.h:248
WenuPlots::PrimaryVerticesCollectionBSToken_
edm::EDGetTokenT< std::vector< reco::Vertex > > PrimaryVerticesCollectionBSToken_
Definition: WenuPlots.h:74
WenuPlots::ecalIso_EE_inv
Bool_t ecalIso_EE_inv
Definition: WenuPlots.h:158
Abs
T Abs(T a)
Definition: MathUtil.h:49
WenuPlots::eop_EB_
Double_t eop_EB_
Definition: WenuPlots.h:136
WenuPlots::runNumber
Int_t runNumber
Definition: WenuPlots.h:192
WenuPlots::outputFile_
std::string outputFile_
Definition: WenuPlots.h:67
WenuPlots.h
WenuPlots::hoe_EE_
Double_t hoe_EE_
Definition: WenuPlots.h:141
pat::PATObject::hasUserFloat
bool hasUserFloat(const std::string &key) const
Return true if there is a user-defined float with a given name.
Definition: PATObject.h:378
WenuPlots::ele_vz
Float_t ele_vz
Definition: WenuPlots.h:201
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
reco::GsfElectron::chargeInfo
const ChargeInfo & chargeInfo() const
Definition: GsfElectron.h:139
reco::GsfElectron::trackMomentumAtVtx
math::XYZVectorF trackMomentumAtVtx() const
Definition: GsfElectron.h:276
DDAxes::z
reco::GsfElectron::ecalDrivenSeed
bool ecalDrivenSeed() const
Definition: GsfElectron.h:166
WenuPlots::h_met_inverse
TH1F * h_met_inverse
Definition: WenuPlots.h:82
WenuPlots::deta_EB_
Double_t deta_EB_
Definition: WenuPlots.h:131
reco::GsfElectron::IsolationVariables::hcalDepth1TowerSumEt
float hcalDepth1TowerSumEt
Definition: GsfElectron.h:514
WenuPlots::useExpectedMissingHits_
Bool_t useExpectedMissingHits_
Definition: WenuPlots.h:64
WenuPlots::eop_EE_inv
Bool_t eop_EE_inv
Definition: WenuPlots.h:175
WenuPlots::h_mt_inverse_EB
TH1F * h_mt_inverse_EB
Definition: WenuPlots.h:89
WenuPlots::ele_iso_ecal
Float_t ele_iso_ecal
Definition: WenuPlots.h:197
reco::GsfElectron::convDist
float convDist() const
Definition: GsfElectron.h:590
WenuPlots::ele2nd_iso_ecal
Float_t ele2nd_iso_ecal
Definition: WenuPlots.h:243
WenuPlots::ecalIso_EB_inv
Bool_t ecalIso_EB_inv
Definition: WenuPlots.h:154
WenuPlots::ele2nd_pin
Float_t ele2nd_pin
Definition: WenuPlots.h:222
isolatedTracks_cfi.caloJets
caloJets
Definition: isolatedTracks_cfi.py:33
WenuPlots::ele_cand_et
Float_t ele_cand_et
Definition: WenuPlots.h:196
WenuPlots::useConversionRejection_
Bool_t useConversionRejection_
Definition: WenuPlots.h:63
WenuPlots::h_EB_sIetaIeta
TH1F * h_EB_sIetaIeta
Definition: WenuPlots.h:103
WenuPlots::trackIso_EE_inv
Bool_t trackIso_EE_inv
Definition: WenuPlots.h:157
WenuPlots::deta_EE_
Double_t deta_EE_
Definition: WenuPlots.h:139
pat::Electron::dB
double dB(IPTYPE type) const
Impact parameter wrt primary vertex or beamspot.
WenuPlots::h_EE_HoE
TH1F * h_EE_HoE
Definition: WenuPlots.h:114
WenuPlots::trackIso_EB_inv
Bool_t trackIso_EB_inv
Definition: WenuPlots.h:153
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
WenuPlots::vbtfSele_tree
TTree * vbtfSele_tree
Definition: WenuPlots.h:232
WenuPlots::hcalIso_EE_
Double_t hcalIso_EE_
Definition: WenuPlots.h:128
WenuPlots::DRJetFromElectron_
Double_t DRJetFromElectron_
Definition: WenuPlots.h:238
WenuPlots::h_mt_EB
TH1F * h_mt_EB
Definition: WenuPlots.h:88
WenuPlots::ele_sc_phi
Float_t ele_sc_phi
Definition: WenuPlots.h:194
WenuPlots::ele_cr_dist
Float_t ele_cr_dist
Definition: WenuPlots.h:199
WenuPlots::usePrecalcIDValue_
Double_t usePrecalcIDValue_
Definition: WenuPlots.h:60
pat::PATObject::hasUserInt
bool hasUserInt(const std::string &key) const
Return true if there is a user-defined int with a given name.
Definition: PATObject.h:395
WenuPlots::ele_cr_dcot
Float_t ele_cr_dcot
Definition: WenuPlots.h:199
WenuPlots::event_caloSumEt
Float_t event_caloSumEt
Definition: WenuPlots.h:207
WenuPlots::WENU_VBTFpreseleFile_
TFile * WENU_VBTFpreseleFile_
Definition: WenuPlots.h:230
WenuPlots::ele_pout
Float_t ele_pout
Definition: WenuPlots.h:202
WenuPlots::ele_pin
Float_t ele_pin
Definition: WenuPlots.h:202
WenuPlots::tip_bspot_EB_
Double_t tip_bspot_EB_
Definition: WenuPlots.h:135
WenuPlots::event_triggerDecision
Int_t event_triggerDecision
Definition: WenuPlots.h:227
WenuPlots::ele_tip_pv
Float_t ele_tip_pv
Definition: WenuPlots.h:205
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
WenuPlots::h_EE_hcaliso
TH1F * h_EE_hcaliso
Definition: WenuPlots.h:110
edm::ParameterSet
Definition: ParameterSet.h:36
WenuPlots::dphi_EB_
Double_t dphi_EB_
Definition: WenuPlots.h:132
WenuPlots::hcalIso_EB_
Double_t hcalIso_EB_
Definition: WenuPlots.h:124
WenuPlots::trackIsoUser_EE_inv
Bool_t trackIsoUser_EE_inv
Definition: WenuPlots.h:180
reco::GsfElectron::deltaEtaSuperClusterTrackAtVtx
float deltaEtaSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:233
WenuPlots::ele_gsfCharge
Int_t ele_gsfCharge
Definition: WenuPlots.h:204
WenuPlots::VtxNormalizedChi2BS
std::vector< Float_t > VtxNormalizedChi2BS
Definition: WenuPlots.h:253
WenuPlots::ele_ctfCharge
Int_t ele_ctfCharge
Definition: WenuPlots.h:204
reco::LeafCandidate::eta
double eta() const final
momentum pseudorapidity
Definition: LeafCandidate.h:152
WenuPlots::deta_EB_inv
Bool_t deta_EB_inv
Definition: WenuPlots.h:162
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
WenuPlots::ele_id_hoe
Float_t ele_id_hoe
Definition: WenuPlots.h:198
WenuPlots::hcalIsoUser_EB_inv
Bool_t hcalIsoUser_EB_inv
Definition: WenuPlots.h:179
edm::Ref::isNonnull
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
WenuPlots::caloJetCollectionToken_
edm::EDGetTokenT< reco::CaloJetCollection > caloJetCollectionToken_
Definition: WenuPlots.h:70
WenuPlots::h_trackIso_eb_NmOne
TH1F * h_trackIso_eb_NmOne
Definition: WenuPlots.h:117
WenuPlots::ele2nd_vz
Float_t ele2nd_vz
Definition: WenuPlots.h:246
WenuPlots::tip_bspot_EE_inv
Bool_t tip_bspot_EE_inv
Definition: WenuPlots.h:174
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
pat::TrackIso
Definition: Isolation.h:10
WenuPlots::eop_EB_inv
Bool_t eop_EB_inv
Definition: WenuPlots.h:167
WenuPlots::ele_eop
Float_t ele_eop
Definition: WenuPlots.h:205
createfilelist.int
int
Definition: createfilelist.py:10
WenuPlots::nBarrelVars_
Int_t nBarrelVars_
Definition: WenuPlots.h:185
iEvent
int iEvent
Definition: GenABIO.cc:224
WenuPlots::caloJetCollectionTag_
edm::InputTag caloJetCollectionTag_
Definition: WenuPlots.h:69
WenuPlots::ele2nd_ecalDriven
Int_t ele2nd_ecalDriven
Definition: WenuPlots.h:225
reco::CaloJetCollection
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects
Definition: CaloJetCollection.h:15
pat::HcalIso
Definition: Isolation.h:12
WenuPlots::h_scEt
TH1F * h_scEt
Definition: WenuPlots.h:96
WenuPlots::trackIsoUser_EB_inv
Bool_t trackIsoUser_EB_inv
Definition: WenuPlots.h:177
WenuPlots::usePrecalcID_
Bool_t usePrecalcID_
Definition: WenuPlots.h:57
WenuPlots::beginJob
void beginJob() override
Definition: WenuPlots.cc:862
WenuPlots::event_caloMT
Float_t event_caloMT
Definition: WenuPlots.h:209
pat::MET
Analysis-level MET class.
Definition: MET.h:40
WenuPlots::ele2nd_iso_track
Float_t ele2nd_iso_track
Definition: WenuPlots.h:243
WenuPlots::ele_scPixCharge
Int_t ele_scPixCharge
Definition: WenuPlots.h:204
WenuPlots::hoe_EB_inv
Bool_t hoe_EB_inv
Definition: WenuPlots.h:164
WenuPlots::ele2nd_id_hoe
Float_t ele2nd_id_hoe
Definition: WenuPlots.h:244
WenuPlots::ele2nd_id_sihih
Float_t ele2nd_id_sihih
Definition: WenuPlots.h:244
counter
static std::atomic< unsigned int > counter
Definition: SharedResourceNames.cc:15
WenuPlots::h_met_inverse_EE
TH1F * h_met_inverse_EE
Definition: WenuPlots.h:92
WenuPlots::cIso_EE_inv
Bool_t cIso_EE_inv
Definition: WenuPlots.h:173
edm::EventSetup
Definition: EventSetup.h:57
WenuPlots::ele2nd_id_dphi
Float_t ele2nd_id_dphi
Definition: WenuPlots.h:244
WenuPlots::pfjet_eta
Float_t pfjet_eta[5]
Definition: WenuPlots.h:214
WenuPlots::storeAllSecondElectronVariables_
Bool_t storeAllSecondElectronVariables_
Definition: WenuPlots.h:241
WenuPlots::useValidFirstPXBHit_
Bool_t useValidFirstPXBHit_
Definition: WenuPlots.h:62
WenuPlots::h_EE_sIetaIeta
TH1F * h_EE_sIetaIeta
Definition: WenuPlots.h:111
WenuPlots::ele_hltmatched_dr
Float_t ele_hltmatched_dr
Definition: WenuPlots.h:226
WenuPlots::CutVars_
std::vector< Double_t > CutVars_
Definition: WenuPlots.h:187
WenuPlots::PassPreselectionCriteria
Bool_t PassPreselectionCriteria(const pat::Electron *ele)
Definition: WenuPlots.cc:822
WenuPlots::ecalIsoUser_EB_inv
Bool_t ecalIsoUser_EB_inv
Definition: WenuPlots.h:178
WenuPlots::h_met_EE
TH1F * h_met_EE
Definition: WenuPlots.h:91
WenuPlots::event_tcMET_phi
Float_t event_tcMET_phi
Definition: WenuPlots.h:208
TrackCollections2monitor_cff.normalizedChi2
normalizedChi2
Definition: TrackCollections2monitor_cff.py:247
WenuPlots::cIso_EB_
Double_t cIso_EB_
Definition: WenuPlots.h:134
reco::GsfElectron::p4
const LorentzVector & p4(P4Kind kind) const
Definition: GsfElectron.cc:211
WenuPlots::ele_sc_energy
Float_t ele_sc_energy
Definition: WenuPlots.h:194
WenuPlots::calojet_et
Float_t calojet_et[5]
Definition: WenuPlots.h:210
WenuPlots::calojet_phi
Float_t calojet_phi[5]
Definition: WenuPlots.h:212
WenuPlots::event_caloMET_phi
Float_t event_caloMET_phi
Definition: WenuPlots.h:208
WenuPlots::maxNumberOfExpectedMissingHits_
Int_t maxNumberOfExpectedMissingHits_
Definition: WenuPlots.h:65
WenuPlots::ele2nd_vx
Float_t ele2nd_vx
Definition: WenuPlots.h:246
reco::GsfElectron::ChargeInfo::scPixCharge
int scPixCharge
Definition: GsfElectron.h:124
WenuPlots::ele_id_dphi
Float_t ele_id_dphi
Definition: WenuPlots.h:198
reco::GsfElectron::sigmaIetaIeta
float sigmaIetaIeta() const
Definition: GsfElectron.h:419
WenuPlots::ele2nd_gsfCharge
Int_t ele2nd_gsfCharge
Definition: WenuPlots.h:247
WenuPlots::event_tcMT
Float_t event_tcMT
Definition: WenuPlots.h:209
WenuPlots::event_tcMET
Float_t event_tcMET
Definition: WenuPlots.h:206
reco::LeafCandidate::et
double et() const final
transverse energy
Definition: LeafCandidate.h:127
WenuPlots::ecalIsoUser_EB_
Double_t ecalIsoUser_EB_
Definition: WenuPlots.h:147
WenuPlots::CheckCut
Bool_t CheckCut(const pat::Electron *wenu, Int_t i)
Definition: WenuPlots.cc:762
heppy_batch.val
val
Definition: heppy_batch.py:351
std
Definition: JetResolutionObject.h:76
WenuPlots::ele2nd_sc_phi
Float_t ele2nd_sc_phi
Definition: WenuPlots.h:218
WenuPlots::ele2nd_cand_et
Float_t ele2nd_cand_et
Definition: WenuPlots.h:242
WenuPlots::dphi_EE_inv
Bool_t dphi_EE_inv
Definition: WenuPlots.h:171
pat::Electron::superCluster
reco::SuperClusterRef superCluster() const override
override the reco::GsfElectron::superCluster method, to access the internal storage of the superclust...
reco::LeafCandidate::phi
double phi() const final
momentum azimuthal angle
Definition: LeafCandidate.h:148
reco::PFJetCollection
std::vector< PFJet > PFJetCollection
collection of PFJet objects
Definition: PFJetCollection.h:14
WenuPlots::ecalIsoUser_EE_inv
Bool_t ecalIsoUser_EE_inv
Definition: WenuPlots.h:181
WenuPlots::h_EB_ecaliso
TH1F * h_EB_ecaliso
Definition: WenuPlots.h:101
WenuPlots::tip_bspot_EE_
Double_t tip_bspot_EE_
Definition: WenuPlots.h:143
WenuPlots::ele2nd_ctfCharge
Int_t ele2nd_ctfCharge
Definition: WenuPlots.h:247
WenuPlots::event_datasetTag
Int_t event_datasetTag
Definition: WenuPlots.h:228
WenuPlots::includeJetInformationInNtuples_
Bool_t includeJetInformationInNtuples_
Definition: WenuPlots.h:236
reco::HitPattern::MISSING_INNER_HITS
Definition: HitPattern.h:155
pat::Electron::isElectronIDAvailable
bool isElectronIDAvailable(const std::string &name) const
Returns true if a specific ID is available in this pat::Electron.
WenuPlots::event_tcSumEt
Float_t event_tcSumEt
Definition: WenuPlots.h:207
findQualityFiles.jj
string jj
Definition: findQualityFiles.py:188
WenuPlots::usePrecalcIDSign_
std::string usePrecalcIDSign_
Definition: WenuPlots.h:58
WenuPlots::ele_cr_mhitsinner
Int_t ele_cr_mhitsinner
Definition: WenuPlots.h:200
reco::GsfElectron::eSuperClusterOverP
float eSuperClusterOverP() const
Definition: GsfElectron.h:229
WenuPlots::ele2nd_tip_pvbs
Float_t ele2nd_tip_pvbs
Definition: WenuPlots.h:255
TtSemiLepEvtBuilder_cfi.mt
mt
Definition: TtSemiLepEvtBuilder_cfi.py:47
WenuPlots::hoe_EB_
Double_t hoe_EB_
Definition: WenuPlots.h:133
reco::GsfElectron::IsolationVariables::hcalDepth2TowerSumEt
float hcalDepth2TowerSumEt
Definition: GsfElectron.h:515
reco::deltaR
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
WenuPlots::usePreselection_
Bool_t usePreselection_
Definition: WenuPlots.h:66
WenuPlots::ele_cand_eta
Float_t ele_cand_eta
Definition: WenuPlots.h:196
WenuPlots::h_mt
TH1F * h_mt
Definition: WenuPlots.h:83
WenuPlots::ele_sc_rho
Float_t ele_sc_rho
Definition: WenuPlots.h:194
WenuPlots::event_pfMET
Float_t event_pfMET
Definition: WenuPlots.h:206
WenuPlots::h_met_inverse_EB
TH1F * h_met_inverse_EB
Definition: WenuPlots.h:87
WenuPlots::trackIso_EB_
Double_t trackIso_EB_
Definition: WenuPlots.h:122
WenuPlots::ele2nd_cand_phi
Float_t ele2nd_cand_phi
Definition: WenuPlots.h:221
WenuPlots::ele2nd_hltmatched_dr
Float_t ele2nd_hltmatched_dr
Definition: WenuPlots.h:249
WenuPlots::h_met_EB
TH1F * h_met_EB
Definition: WenuPlots.h:86
reco::GsfElectron::IsolationVariables::ecalRecHitSumEt
float ecalRecHitSumEt
Definition: GsfElectron.h:513
WenuPlots::h_EE_deta
TH1F * h_EE_deta
Definition: WenuPlots.h:113
WenuPlots::hcalIso_EB_inv
Bool_t hcalIso_EB_inv
Definition: WenuPlots.h:155
WenuPlots::endJob
void endJob() override
Definition: WenuPlots.cc:1166
pat::Electron
Analysis-level electron class.
Definition: Electron.h:51
WenuPlots::hcalIsoUser_EE_inv
Bool_t hcalIsoUser_EE_inv
Definition: WenuPlots.h:182
WenuPlots::WenuPlots
WenuPlots(const edm::ParameterSet &)
Definition: WenuPlots.cc:55
WenuPlots::lumiSection
Int_t lumiSection
Definition: WenuPlots.h:192
WenuPlots::h_trackIso_ee_NmOne
TH1F * h_trackIso_ee_NmOne
Definition: WenuPlots.h:118
WenuPlots::~WenuPlots
~WenuPlots() override
Definition: WenuPlots.cc:188
WenuPlots::ele2nd_sc_gsf_et
Float_t ele2nd_sc_gsf_et
Definition: WenuPlots.h:216
WenuPlots::ecalIsoUser_EE_
Double_t ecalIsoUser_EE_
Definition: WenuPlots.h:150
WenuPlots::h_EE_trkiso
TH1F * h_EE_trkiso
Definition: WenuPlots.h:108
pat::PATObject::userInt
int32_t userInt(const std::string &key) const
Definition: PATObject.h:913
objects.IsoTrackAnalyzer.myMet
myMet
store a preIso track event.preIsoTrack.append(track)
Definition: IsoTrackAnalyzer.py:133
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
WenuPlots::trackIsoUser_EB_
Double_t trackIsoUser_EB_
Definition: WenuPlots.h:146
reco::GsfElectron::dr03HcalTowerSumEt
float dr03HcalTowerSumEt() const
Definition: GsfElectron.h:534
WenuPlots::h_EB_trkiso
TH1F * h_EB_trkiso
Definition: WenuPlots.h:100
edm::Event
Definition: Event.h:73
WenuPlots::pvbs_z
Float_t pvbs_z
Definition: WenuPlots.h:254
WenuPlots::pv_z
Float_t pv_z
Definition: WenuPlots.h:203
reco::GsfElectron::scSigmaIEtaIEta
float scSigmaIEtaIEta() const
Definition: GsfElectron.h:472
reco::CompositeCandidate::daughter
const Candidate * daughter(size_type) const override
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode)
Definition: CompositeCandidate.cc:30
WenuPlots::pvbs_x
Float_t pvbs_x
Definition: WenuPlots.h:254
WenuPlots::trackIso_EE_
Double_t trackIso_EE_
Definition: WenuPlots.h:126
WenuPlots::h_EE_dphi
TH1F * h_EE_dphi
Definition: WenuPlots.h:112
WenuPlots::VtxNormalizedChi2
std::vector< Float_t > VtxNormalizedChi2
Definition: WenuPlots.h:251
WenuPlots::event_caloMET
Float_t event_caloMET
Definition: WenuPlots.h:206
edm::InputTag
Definition: InputTag.h:15
WenuPlots::sihih_EE_inv
Bool_t sihih_EE_inv
Definition: WenuPlots.h:169
reco::GsfElectron::dr03EcalRecHitSumEt
float dr03EcalRecHitSumEt() const
Definition: GsfElectron.h:531
WenuPlots::deta_EE_inv
Bool_t deta_EE_inv
Definition: WenuPlots.h:170
WenuPlots::h_mt_inverse_EE
TH1F * h_mt_inverse_EE
Definition: WenuPlots.h:94
reco::LeafCandidate::vy
double vy() const override
y coordinate of vertex position
Definition: LeafCandidate.h:169
pfJetBenchmark_cfi.pfJets
pfJets
Definition: pfJetBenchmark_cfi.py:4
WenuPlots::h_EB_deta
TH1F * h_EB_deta
Definition: WenuPlots.h:105
WenuPlots::trackIsoUser_EE_
Double_t trackIsoUser_EE_
Definition: WenuPlots.h:149
WenuPlots::ele2nd_cr_dist
Float_t ele2nd_cr_dist
Definition: WenuPlots.h:245
WenuPlots::pfJetCollectionToken_
edm::EDGetTokenT< reco::PFJetCollection > pfJetCollectionToken_
Definition: WenuPlots.h:72
WenuPlots::ele_iso_track
Float_t ele_iso_track
Definition: WenuPlots.h:197
WenuPlots::ele2nd_sc_rho
Float_t ele2nd_sc_rho
Definition: WenuPlots.h:219