CMS 3D CMS Logo

ttbarEventSelector.cc
Go to the documentation of this file.
1 // user includes
27 
28 // ROOT includes
29 #include "TLorentzVector.h"
30 
32 public:
33  explicit ttbarEventSelector(const edm::ParameterSet&);
34 
35  bool filter(edm::Event&, edm::EventSetup const&) override;
36  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
37 
38 private:
39  // module config parameters
52 
53  const double maxEtaEle_;
54  const double maxEtaMu_;
55  const double minPt_;
56  const double maxDeltaPhiInEB_;
57  const double maxDeltaEtaInEB_;
58  const double maxHOEEB_;
59  const double maxSigmaiEiEEB_;
60  const double maxDeltaPhiInEE_;
61  const double maxDeltaEtaInEE_;
62  const double maxHOEEE_;
63  const double maxSigmaiEiEEE_;
64 
65  const double minChambers_;
66  const double minMatches_;
67  const double minMatchedStations_;
68 
69  const double maxEtaHighest_Jets_;
70  const double maxEta_Jets_;
71 
72  const double btagFactor_;
73 
74  const double maxNormChi2_;
75  const double maxD0_;
76  const double maxDz_;
77  const int minPixelHits_;
78  const int minStripHits_;
79  const double maxIsoEle_;
80  const double maxIsoMu_;
81  const double minPtHighestMu_;
82  const double minPtHighestEle_;
83  const double minPtHighest_Jets_;
84  const double minPt_Jets_;
85  const double minInvMass_;
86  const double maxInvMass_;
87  const double minMet_;
88  const double maxMet_;
89  const double minWmass_;
90  const double maxWmass_;
91  double getMt(const TLorentzVector& vlep, const reco::PFMET& obj);
92  int EventCategory(int& nEle, int& nMu, int& nJets, int& nbJets);
93 };
94 
95 using namespace std;
96 using namespace edm;
97 
100  desc.addUntracked<edm::InputTag>("electronInputTag", edm::InputTag("gedGsfElectrons"));
101  desc.addUntracked<edm::InputTag>("jetsInputTag", edm::InputTag("ak4PFJetsCHS"));
102  desc.addUntracked<edm::InputTag>("bjetsInputTag", edm::InputTag("pfDeepCSVJetTags", "probb"));
103  desc.addUntracked<edm::InputTag>("pfmetTag", edm::InputTag("pfMet"));
104  desc.addUntracked<edm::InputTag>("muonInputTag", edm::InputTag("muons"));
105  desc.addUntracked<edm::InputTag>("offlineBeamSpot", edm::InputTag("offlineBeamSpot"));
106  desc.addUntracked<double>("maxEtaEle", 2.4);
107  desc.addUntracked<double>("maxEtaMu", 2.4);
108  desc.addUntracked<double>("minPt", 5);
109  desc.addUntracked<double>("maxDeltaPhiInEB", .15);
110  desc.addUntracked<double>("maxDeltaEtaInEB", .007);
111  desc.addUntracked<double>("maxHOEEB", .12);
112  desc.addUntracked<double>("maxSigmaiEiEEB", .01);
113  desc.addUntracked<double>("maxDeltaPhiInEE", .1);
114  desc.addUntracked<double>("maxDeltaEtaInEE", .009);
115  desc.addUntracked<double>("maxHOEEB_", .10);
116  desc.addUntracked<double>("maxSigmaiEiEEE", .03);
117  desc.addUntracked<uint32_t>("minChambers", 2);
118  desc.addUntracked<uint32_t>("minMatches", 2);
119  desc.addUntracked<double>("minMatchedStations", 2);
120  desc.addUntracked<double>("maxEtaHighest_Jets", 2.4);
121  desc.addUntracked<double>("maxEta_Jets", 3.0);
122  desc.addUntracked<double>("btagFactor", 0.6);
123  desc.addUntracked<double>("maxNormChi2", 10);
124  desc.addUntracked<double>("maxD0", 0.02);
125  desc.addUntracked<double>("maxDz", 20.);
126  desc.addUntracked<uint32_t>("minPixelHits", 1);
127  desc.addUntracked<uint32_t>("minStripHits", 8);
128  desc.addUntracked<double>("maxIsoEle", 0.5);
129  desc.addUntracked<double>("maxIsoMu", 0.3);
130  desc.addUntracked<double>("minPtHighestMu", 24);
131  desc.addUntracked<double>("minPtHighestEle", 32);
132  desc.addUntracked<double>("minPtHighest_Jets", 30);
133  desc.addUntracked<double>("minPt_Jets", 20);
134  desc.addUntracked<double>("minInvMass", 140);
135  desc.addUntracked<double>("maxInvMass", 200);
136  desc.addUntracked<double>("minMet", 50);
137  desc.addUntracked<double>("maxMet", 80);
138  desc.addUntracked<double>("minWmass", 50);
139  desc.addUntracked<double>("maxWmass", 130);
140  descriptions.addWithDefaultLabel(desc);
141 }
142 
144  : electronTag_(ps.getUntrackedParameter<edm::InputTag>("electronInputTag", edm::InputTag("gedGsfElectrons"))),
145  jetsTag_(ps.getUntrackedParameter<edm::InputTag>("jetsInputTag", edm::InputTag("ak4PFJetsCHS"))),
146  bjetsTag_(ps.getUntrackedParameter<edm::InputTag>("bjetsInputTag", edm::InputTag("pfDeepCSVJetTags", "probb"))),
147  pfmetTag_(ps.getUntrackedParameter<edm::InputTag>("pfmetTag", edm::InputTag("pfMet"))),
148  muonTag_(ps.getUntrackedParameter<edm::InputTag>("muonInputTag", edm::InputTag("muons"))),
149  bsTag_(ps.getUntrackedParameter<edm::InputTag>("offlineBeamSpot", edm::InputTag("offlineBeamSpot"))),
150  electronToken_(consumes<reco::GsfElectronCollection>(electronTag_)),
151  jetsToken_(consumes<reco::PFJetCollection>(jetsTag_)),
152  bjetsToken_(consumes<reco::JetTagCollection>(bjetsTag_)),
153  pfmetToken_(consumes<reco::PFMETCollection>(pfmetTag_)),
154  muonToken_(consumes<reco::MuonCollection>(muonTag_)),
155  bsToken_(consumes<reco::BeamSpot>(bsTag_)),
156  maxEtaEle_(ps.getUntrackedParameter<double>("maxEtaEle", 2.4)),
157  maxEtaMu_(ps.getUntrackedParameter<double>("maxEtaMu", 2.4)),
158  minPt_(ps.getUntrackedParameter<double>("minPt", 5)),
159 
160  // for Electron only
161  maxDeltaPhiInEB_(ps.getUntrackedParameter<double>("maxDeltaPhiInEB", .15)),
162  maxDeltaEtaInEB_(ps.getUntrackedParameter<double>("maxDeltaEtaInEB", .007)),
163  maxHOEEB_(ps.getUntrackedParameter<double>("maxHOEEB", .12)),
164  maxSigmaiEiEEB_(ps.getUntrackedParameter<double>("maxSigmaiEiEEB", .01)),
165  maxDeltaPhiInEE_(ps.getUntrackedParameter<double>("maxDeltaPhiInEE", .1)),
166  maxDeltaEtaInEE_(ps.getUntrackedParameter<double>("maxDeltaEtaInEE", .009)),
167  maxHOEEE_(ps.getUntrackedParameter<double>("maxHOEEB_", .10)),
168  maxSigmaiEiEEE_(ps.getUntrackedParameter<double>("maxSigmaiEiEEE", .03)),
169 
170  // for Muon only
171  minChambers_(ps.getUntrackedParameter<uint32_t>("minChambers", 2)),
172  minMatches_(ps.getUntrackedParameter<uint32_t>("minMatches", 2)),
173  minMatchedStations_(ps.getUntrackedParameter<double>("minMatchedStations", 2)),
174 
175  // for Jets only
176  maxEtaHighest_Jets_(ps.getUntrackedParameter<double>("maxEtaHighest_Jets", 2.4)),
177  maxEta_Jets_(ps.getUntrackedParameter<double>("maxEta_Jets", 3.0)),
178 
179  // for b-tag only
180  btagFactor_(ps.getUntrackedParameter<double>("btagFactor", 0.6)),
181 
182  maxNormChi2_(ps.getUntrackedParameter<double>("maxNormChi2", 10)),
183  maxD0_(ps.getUntrackedParameter<double>("maxD0", 0.02)),
184  maxDz_(ps.getUntrackedParameter<double>("maxDz", 20.)),
185  minPixelHits_(ps.getUntrackedParameter<uint32_t>("minPixelHits", 1)),
186  minStripHits_(ps.getUntrackedParameter<uint32_t>("minStripHits", 8)),
187  maxIsoEle_(ps.getUntrackedParameter<double>("maxIsoEle", 0.5)),
188  maxIsoMu_(ps.getUntrackedParameter<double>("maxIsoMu", 0.3)),
189  minPtHighestMu_(ps.getUntrackedParameter<double>("minPtHighestMu", 24)),
190  minPtHighestEle_(ps.getUntrackedParameter<double>("minPtHighestEle", 32)),
191  minPtHighest_Jets_(ps.getUntrackedParameter<double>("minPtHighest_Jets", 30)),
192  minPt_Jets_(ps.getUntrackedParameter<double>("minPt_Jets", 20)),
193  minInvMass_(ps.getUntrackedParameter<double>("minInvMass", 140)),
194  maxInvMass_(ps.getUntrackedParameter<double>("maxInvMass", 200)),
195  minMet_(ps.getUntrackedParameter<double>("minMet", 50)),
196  maxMet_(ps.getUntrackedParameter<double>("maxMet", 80)),
197  minWmass_(ps.getUntrackedParameter<double>("minWmass", 50)),
198  maxWmass_(ps.getUntrackedParameter<double>("maxWmass", 130)) {}
199 
201  // beamspot
203  iEvent.getByToken(bsToken_, beamSpot);
204 
205  int le = 0, lm = 0, lj = 0, lbj = 0;
206 
207  // Read Electron Collection
209  iEvent.getByToken(electronToken_, electronColl);
210  std::vector<TLorentzVector> list_ele;
211  std::vector<int> chrgeList_ele;
212 
213  if (electronColl.isValid()) {
214  for (auto const& ele : *electronColl) {
215  if (!ele.ecalDriven())
216  continue;
217  if (ele.pt() < minPt_)
218  continue;
219  // set a max Eta cut
220  if (!(ele.isEB() || ele.isEE()))
221  continue;
222 
223  double hOverE = ele.hadronicOverEm();
224  double sigmaee = ele.sigmaIetaIeta();
225  double deltaPhiIn = ele.deltaPhiSuperClusterTrackAtVtx();
226  double deltaEtaIn = ele.deltaEtaSuperClusterTrackAtVtx();
227 
228  // separate cut for barrel and endcap
229  if (ele.isEB()) {
230  if (fabs(deltaPhiIn) >= maxDeltaPhiInEB_ && fabs(deltaEtaIn) >= maxDeltaEtaInEB_ && hOverE >= maxHOEEB_ &&
231  sigmaee >= maxSigmaiEiEEB_)
232  continue;
233  } else if (ele.isEE()) {
234  if (fabs(deltaPhiIn) >= maxDeltaPhiInEE_ && fabs(deltaEtaIn) >= maxDeltaEtaInEE_ && hOverE >= maxHOEEE_ &&
235  sigmaee >= maxSigmaiEiEEE_)
236  continue;
237  }
238 
239  reco::GsfTrackRef trk = ele.gsfTrack();
240  if (!trk.isNonnull())
241  continue; // only electrons with tracks
242  double chi2 = trk->chi2();
243  double ndof = trk->ndof();
244  double chbyndof = (ndof > 0) ? chi2 / ndof : 0;
245  if (chbyndof >= maxNormChi2_)
246  continue;
247 
248  double trkd0 = trk->d0();
249  if (beamSpot.isValid()) {
250  trkd0 = -(trk->dxy(beamSpot->position()));
251  } else {
252  edm::LogError("ElectronSelector") << "Error >> Failed to get BeamSpot for label: " << bsTag_;
253  }
254  if (std::fabs(trkd0) >= maxD0_)
255  continue;
256 
257  const reco::HitPattern& hitp = trk->hitPattern();
258  int nPixelHits = hitp.numberOfValidPixelHits();
259  if (nPixelHits < minPixelHits_)
260  continue;
261 
262  int nStripHits = hitp.numberOfValidStripHits();
263  if (nStripHits < minStripHits_)
264  continue;
265 
266  // PF Isolation
267  reco::GsfElectron::PflowIsolationVariables pfIso = ele.pfIsolationVariables();
268  const float eiso =
269  pfIso.sumChargedHadronPt + std::max(0.0, pfIso.sumNeutralHadronEt + pfIso.sumPhotonEt - 0.5 * pfIso.sumPUPt);
270  if (eiso > maxIsoEle_ * ele.pt())
271  continue;
272 
273  TLorentzVector lv_ele;
274  lv_ele.SetPtEtaPhiE(ele.pt(), ele.eta(), ele.phi(), ele.energy());
275  list_ele.push_back(lv_ele);
276  chrgeList_ele.push_back(ele.charge());
277  }
278  le = list_ele.size();
279  } else {
280  edm::LogError("ElectronSelector") << "Error >> Failed to get ElectronCollection for label: " << electronTag_;
281  }
282 
283  // Read Muon Collection
285  iEvent.getByToken(muonToken_, muonColl);
286 
287  std::vector<TLorentzVector> list_mu;
288  std::vector<int> chrgeList_mu;
289  if (muonColl.isValid()) {
290  for (auto const& mu : *muonColl) {
291  if (!mu.isGlobalMuon())
292  continue;
293  if (!mu.isPFMuon())
294  continue;
295  if (std::fabs(mu.eta()) >= maxEtaMu_)
296  continue;
297  if (mu.pt() < minPt_)
298  continue;
299 
300  reco::TrackRef gtk = mu.globalTrack();
301  double chi2 = gtk->chi2();
302  double ndof = gtk->ndof();
303  double chbyndof = (ndof > 0) ? chi2 / ndof : 0;
304  if (chbyndof >= maxNormChi2_)
305  continue;
306 
307  reco::TrackRef tk = mu.innerTrack();
308  if (beamSpot.isValid()) {
309  double trkd0 = -(tk->dxy(beamSpot->position()));
310  if (std::fabs(trkd0) >= maxD0_)
311  continue;
312  double trkdz = tk->dz(beamSpot->position());
313  if (std::fabs(trkdz) >= maxDz_)
314  continue;
315  } else {
316  edm::LogError("MuonSelector") << "Error >> Failed to get BeamSpot for label: " << bsTag_;
317  }
318 
319  const reco::HitPattern& hitp = gtk->hitPattern();
321  continue;
323  continue;
324 
325  // Hits/section in the muon chamber
326  if (mu.numberOfChambers() < minChambers_)
327  continue;
328  if (mu.numberOfMatches() < minMatches_)
329  continue;
330  if (mu.numberOfMatchedStations() < minMatchedStations_)
331  continue;
333  continue;
334 
335  // PF Isolation
336  const reco::MuonPFIsolation& pfIso04 = mu.pfIsolationR04();
337  double absiso = pfIso04.sumChargedHadronPt +
338  std::max(0.0, pfIso04.sumNeutralHadronEt + pfIso04.sumPhotonEt - 0.5 * pfIso04.sumPUPt);
339  if (absiso > maxIsoMu_ * mu.pt())
340  continue;
341 
342  TLorentzVector lv_mu;
343  lv_mu.SetPtEtaPhiE(mu.pt(), mu.eta(), mu.phi(), mu.energy());
344  list_mu.push_back(lv_mu);
345  chrgeList_mu.push_back(mu.charge());
346  }
347  lm = list_mu.size();
348  } else {
349  edm::LogError("MuonSelector") << "Error >> Failed to get MuonCollection for label: " << muonTag_;
350  return false;
351  }
352 
353  // for Track jet collections
355  iEvent.getByToken(jetsToken_, jetColl);
356  std::vector<TLorentzVector> list_jets;
357 
358  if (jetColl.isValid()) {
359  for (const auto& jets : *jetColl) {
360  if (jets.pt() < minPt_Jets_)
361  continue;
362  if (std::fabs(jets.eta()) > maxEta_Jets_)
363  continue;
364  TLorentzVector lv_jets; // lv_bJets;
365  lv_jets.SetPtEtaPhiE(jets.pt(), jets.eta(), jets.phi(), jets.energy());
366  list_jets.push_back(lv_jets);
367  }
368  lj = list_jets.size();
369  }
370 
372  iEvent.getByToken(bjetsToken_, bTagHandle);
373  const reco::JetTagCollection& bTags = *(bTagHandle.product());
374  std::vector<TLorentzVector> list_bjets;
375 
376  if (!bTags.empty()) {
377  for (unsigned bj = 0; bj != bTags.size(); ++bj) {
378  TLorentzVector lv_bjets;
379  lv_bjets.SetPtEtaPhiE(
380  bTags[bj].first->pt(), bTags[bj].first->eta(), bTags[bj].first->phi(), bTags[bj].first->energy());
381  if ((bTags[bj].second > btagFactor_) && (lv_bjets.Pt() > minPt_Jets_))
382  list_bjets.push_back(lv_bjets);
383  }
384  lbj = list_bjets.size();
385  }
386 
387  // for MET collection
389  iEvent.getByToken(pfmetToken_, pfColl);
390  if (EventCategory(le, lm, lj, lbj) == 11) { // dilepton- ele ele
391  if (list_ele[0].Pt() < minPtHighestEle_)
392  return false;
393  if ((list_ele[0].Pt() < list_mu[0].Pt()) || (list_ele[1].Pt() < list_mu[0].Pt()))
394  return false;
395  if (chrgeList_ele[0] + chrgeList_ele[1] != 0)
396  return false;
397  if (pfColl.isValid()) {
398  double mt1 = getMt(list_ele[0], pfColl->front());
399  double mt2 = getMt(list_ele[1], pfColl->front());
400  double mt = mt1 + mt2;
401  if (mt < 2 * minMet_ || mt > 2 * maxMet_)
402  return false;
403  } else {
404  edm::LogError("ttbarEventSelector")
405  << "Error >> Failed to get PFMETCollection in dilepton ele-ele channel for label: " << pfmetTag_;
406  return false;
407  }
408  } else if (EventCategory(le, lm, lj, lbj) == 12) { // dilepton - mu mu
409  if (list_mu[0].Pt() < minPtHighestMu_)
410  return false;
411  if ((list_mu[0].Pt() < list_ele[0].Pt()) || (list_mu[1].Pt() < list_ele[0].Pt()))
412  return false;
413  if (chrgeList_mu[0] + chrgeList_mu[1] != 0)
414  return false;
415  if (pfColl.isValid()) {
416  double mt1 = getMt(list_mu[0], pfColl->front());
417  double mt2 = getMt(list_mu[1], pfColl->front());
418  double mt = mt1 + mt2;
419  if (mt < 2 * minMet_ || mt > 2 * maxMet_)
420  return false;
421  } else {
422  edm::LogError("ttbarEventSelector")
423  << "Error >> Failed to get PFMETCollection in dilepton mu-mu channel for label: " << pfmetTag_;
424  return false;
425  }
426  } else if (EventCategory(le, lm, lj, lbj) == 13) { // dilepton - ele mu
427  if ((list_mu[0].Pt() < list_ele[1].Pt()) || (list_ele[0].Pt() < list_mu[1].Pt()))
428  return false;
429  if ((list_mu[0].Pt() < minPtHighestMu_) || (list_ele[0].Pt() < minPtHighestEle_))
430  return false;
431  if (chrgeList_mu[0] + chrgeList_ele[0] != 0)
432  return false;
433  if (pfColl.isValid()) {
434  double mt1 = getMt(list_mu[0], pfColl->front());
435  double mt2 = getMt(list_ele[0], pfColl->front());
436  double mt = mt1 + mt2;
437  if (mt < 2 * minMet_ || mt > 2 * maxMet_)
438  return false;
439  } else {
440  edm::LogError("ttbarEventSelector")
441  << "Error >> Failed to get PFMETCollection in dilepton ele-mu channel for label: " << pfmetTag_;
442  return false;
443  }
444  }
445  if (EventCategory(le, lm, lj, lbj) == 21) { // semilepton - ele or mu
446  if (list_jets[0].Pt() < minPtHighest_Jets_)
447  return false;
448 
449  if (list_ele[0].Pt() < minPtHighestEle_)
450  return false;
451  // Both should not be present at the same time
452  if ((!list_ele.empty() && list_ele[0].Pt() > minPtHighestEle_) &&
453  (!list_mu.empty() && list_mu[0].Pt() > minPtHighestMu_))
454  return false;
455 
456  return true;
457  }
458  if (EventCategory(le, lm, lj, lbj) == 22) { // semilepton - ele or mu
459  if (list_jets[0].Pt() < minPtHighest_Jets_)
460  return false;
461 
462  if (list_mu[0].Pt() < minPtHighestMu_)
463  return false;
464  // Both should not be present at the same time
465  if ((!list_ele.empty() && list_ele[0].Pt() > minPtHighestEle_) &&
466  (!list_mu.empty() && list_mu[0].Pt() > minPtHighestMu_))
467  return false;
468 
469  return true;
470  } else if (EventCategory(le, lm, lj, lbj) == 30) {
471  if (list_jets[0].Pt() < minPtHighest_Jets_)
472  return false;
473  for (int i = 0; i < 4; i++) {
474  TLorentzVector vjet1;
475  for (int j = i + 1; j < 4; j++) {
476  TLorentzVector vjet2;
477  vjet1 = list_jets[i];
478  vjet2 = list_jets[j];
479  TLorentzVector vjet = vjet1 + vjet2;
480  if (vjet.M() < minWmass_ || vjet.M() > maxWmass_)
481  return false;
482  }
483  }
484  } else if (EventCategory(le, lm, lj, lbj) == 50)
485  return false;
486 
487  return false;
488 }
489 
490 int ttbarEventSelector::EventCategory(int& nEle, int& nMu, int& nJets, int& nbJets) {
491  int cat = 0;
492  if ((nEle >= 2 || nMu >= 2) && nJets > 1 && nbJets > 1) { // di-lepton
493  if (nEle >= 2 && nJets < 2)
494  cat = 11;
495  else if (nMu >= 2 && nJets < 2)
496  cat = 12;
497  else if (nEle >= 1 && nMu >= 1 && nJets < 2)
498  cat = 13;
499  } else if ((nEle >= 1 || nMu >= 1) && nJets > 3 && nbJets > 2) { //semi-lepton
500  if (nEle >= 1 && nJets > 1)
501  cat = 21;
502  else if (nMu >= 1 && nJets > 1)
503  cat = 22;
504  } else if ((nEle < 1 && nMu < 1) && nJets > 5 && nbJets > 1)
505  cat = 30;
506  else
507  cat = 50;
508  return cat;
509 }
510 
511 double ttbarEventSelector::getMt(const TLorentzVector& vlep, const reco::PFMET& obj) {
512  double met = obj.et();
513  double phi = obj.phi();
514 
515  TLorentzVector vmet;
516  double metx = met * std::cos(phi);
517  double mety = met * std::sin(phi);
518  vmet.SetPxPyPzE(metx, mety, 0.0, met);
519 
520  // transverse mass
521  TLorentzVector vw = vlep + vmet;
522 
523  return std::sqrt(2 * vlep.Et() * met * (1 - std::cos(deltaPhi(vlep.Phi(), phi))));
524 }
525 
526 // Define this as a plug-in
const edm::InputTag pfmetTag_
int numberOfValidPixelHits() const
Definition: HitPattern.h:831
const edm::EDGetTokenT< reco::MuonCollection > muonToken_
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
const edm::EDGetTokenT< reco::JetTagCollection > bjetsToken_
bool filter(edm::Event &, edm::EventSetup const &) override
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
const edm::EDGetTokenT< reco::PFJetCollection > jetsToken_
T const * product() const
Definition: Handle.h:70
const edm::EDGetTokenT< reco::PFMETCollection > pfmetToken_
float sumPUPt
sum pt of charged Particles not from PV (for Pu corrections)
Definition: GsfElectron.h:670
const float maxD0_
Definition: Constants.h:82
const double minPtHighestMu_
const edm::InputTag electronTag_
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
const edm::InputTag bjetsTag_
JetFloatAssociation::Container JetTagCollection
Definition: JetTag.h:17
Log< level::Error, false > LogError
static constexpr int nJets
int EventCategory(int &nEle, int &nMu, int &nJets, int &nbJets)
const edm::InputTag jetsTag_
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
const double maxSigmaiEiEEE_
int numberOfValidStripHits() const
Definition: HitPattern.h:843
const double maxDeltaPhiInEB_
const edm::InputTag bsTag_
U second(std::pair< T, U > const &p)
const edm::EDGetTokenT< reco::GsfElectronCollection > electronToken_
const double minMatchedStations_
int iEvent
Definition: GenABIO.cc:224
def cat(path)
Definition: eostools.py:401
const edm::InputTag muonTag_
const double maxDeltaEtaInEB_
T sqrt(T t)
Definition: SSEVec.h:19
const double maxSigmaiEiEEB_
float sumPhotonEt
sum pt of PF photons // old float photonIso ;
Definition: GsfElectron.h:665
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
float sumNeutralHadronEt
sum pt of neutral hadrons // old float neutralHadronIso ;
Definition: GsfElectron.h:664
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
const edm::EDGetTokenT< reco::BeamSpot > bsToken_
const double maxEtaHighest_Jets_
double getMt(const TLorentzVector &vlep, const reco::PFMET &obj)
const double minPtHighest_Jets_
bool isValid() const
Definition: HandleBase.h:70
std::vector< PFJet > PFJetCollection
collection of PFJet objects
fixed size matrix
HLT enums.
float sumChargedHadronPt
sum-pt of charged Hadron // old float chargedHadronIso ;
Definition: GsfElectron.h:663
ttbarEventSelector(const edm::ParameterSet &)
const double minPtHighestEle_
const double maxDeltaPhiInEE_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
const double maxDeltaEtaInEE_
Collection of PF MET.