CMS 3D CMS Logo

L1HPSPFTauBuilder.cc
Go to the documentation of this file.
2 #include "FWCore/Utilities/interface/Exception.h" // cms::Exception
3 #include "DataFormats/Math/interface/deltaR.h" // reco::deltaR
4 #include <regex> // sd::regex_replace
5 #include <TMath.h> // TMath::Pi()
6 #include <string> // std::string
7 #include <algorithm> // std::max(), std::sort()
8 #include <cmath> // std::fabs
9 
10 namespace {
11  std::string getSignalConeSizeFormula(const edm::ParameterSet& cfg) {
12  return std::regex_replace(cfg.getParameter<std::string>("signalConeSize"), std::regex("pt"), "x");
13  }
14 } // namespace
15 
17  : signalConeSizeFormula_(getSignalConeSizeFormula(cfg)),
18  minSignalConeSize_(cfg.getParameter<double>("minSignalConeSize")),
19  maxSignalConeSize_(cfg.getParameter<double>("maxSignalConeSize")),
20  useStrips_(cfg.getParameter<bool>("useStrips")),
21  stripSizeEta_(cfg.getParameter<double>("stripSizeEta")),
22  stripSizePhi_(cfg.getParameter<double>("stripSizePhi")),
23  isolationConeSize_(cfg.getParameter<double>("isolationConeSize")),
24  debug_(cfg.getUntrackedParameter<bool>("debug", false)) {
26 
28 
29  if (debug_) {
30  std::cout << "setting Quality cuts for signal PFCands:" << std::endl;
31  }
32  edm::ParameterSet cfg_signalQualityCuts = cfg.getParameter<edm::ParameterSet>("signalQualityCuts");
33  signalQualityCutsDzCutDisabled_ = readL1PFTauQualityCuts(cfg_signalQualityCuts, "disabled", debug_);
34  signalQualityCutsDzCutEnabledPrimary_ = readL1PFTauQualityCuts(cfg_signalQualityCuts, "enabled_primary", debug_);
35  if (debug_) {
36  std::cout << "setting Quality cuts for isolation PFCands:" << std::endl;
37  }
38  edm::ParameterSet cfg_isolationQualityCuts = cfg.getParameter<edm::ParameterSet>("isolationQualityCuts");
39  isolationQualityCutsDzCutDisabled_ = readL1PFTauQualityCuts(cfg_isolationQualityCuts, "disabled", debug_);
41  readL1PFTauQualityCuts(cfg_isolationQualityCuts, "enabled_primary", debug_);
42  isolationQualityCutsDzCutEnabledPileup_ = readL1PFTauQualityCuts(cfg_isolationQualityCuts, "enabled_pileup", debug_);
43 }
44 
46  signalConeSize_ = 0.;
47  signalConeSize2_ = 0.;
48 
50  isPFCandSeeded_ = false;
52  isJetSeeded_ = false;
54  l1PFTauSeedEta_ = 0.;
55  l1PFTauSeedPhi_ = 0.;
56  l1PFTauSeedZVtx_ = 0.;
60 
61  stripP4_ = reco::Particle::LorentzVector(0., 0., 0., 0.);
62 
64  signalChargedHadrons_.clear();
65  signalElectrons_.clear();
66  signalNeutralHadrons_.clear();
67  signalPhotons_.clear();
68  signalMuons_.clear();
69 
71  stripElectrons_.clear();
72  stripPhotons_.clear();
73 
74  isoAllL1PFCandidates_.clear();
75  isoChargedHadrons_.clear();
76  isoElectrons_.clear();
77  isoNeutralHadrons_.clear();
78  isoPhotons_.clear();
79  isoMuons_.clear();
80 
81  sumAllL1PFCandidates_.clear();
82  sumChargedHadrons_.clear();
83  sumElectrons_.clear();
84  sumNeutralHadrons_.clear();
85  sumPhotons_.clear();
86  sumMuons_.clear();
87 
89 }
90 
92  l1PFCandProductID_ = l1PFCandProductID;
93 }
94 
96 
98  if (debug_) {
99  std::cout << "<L1HPSPFTauBuilder::setL1PFTauSeed>:" << std::endl;
100  std::cout << "seeding HPSPFTau with ChargedPFCand:";
101  printPFCand(std::cout, *l1PFCandSeed, primaryVertex_);
102  }
103 
104  l1PFCandSeed_ = l1PFCandSeed;
105  l1PFTauSeedEta_ = l1PFCandSeed->eta();
106  l1PFTauSeedPhi_ = l1PFCandSeed->phi();
107  if (l1PFCandSeed->charge() != 0 && l1PFCandSeed->pfTrack().isNonnull()) {
108  l1PFTauSeedZVtx_ = l1PFCandSeed->pfTrack()->vertex().z();
109  isPFCandSeeded_ = true;
110  }
111 }
112 // This is commented as l1JetSeed->numberOfDaughters() = 0
113 // Alternative way is used below for the moment
114 /*
115 void L1HPSPFTauBuilder::setL1PFTauSeed(const reco::CaloJetRef& l1JetSeed) {
116  if (debug_) {
117  std::cout << "<L1HPSPFTauBuilder::setL1PFTauSeed>:" << std::endl;
118  std::cout << "seeding HPSPFTau with Jet:";
119  std::cout << " pT = " << l1JetSeed->pt() << ", eta = " << l1JetSeed->eta() << ", phi = " << l1JetSeed->phi()
120  << std::endl;
121  }
122 
123  l1JetSeed_ = l1JetSeed;
124  reco::Candidate::LorentzVector l1PFTauSeed_p4;
125  float l1PFTauSeedZVtx = 0.;
126  bool l1PFTauSeed_hasVtx = false;
127  float max_chargedPFCand_pt = -1.;
128  size_t numConstituents = l1JetSeed->numberOfDaughters();
129  for (size_t idxConstituent = 0; idxConstituent < numConstituents; ++idxConstituent) {
130  const l1t::PFCandidate* l1PFCand = dynamic_cast<const l1t::PFCandidate*>(l1JetSeed->daughter(idxConstituent));
131  if (!l1PFCand) {
132  throw cms::Exception("L1HPSPFTauBuilder") << "Jet was not built from l1t::PFCandidates !!\n";
133  }
134  if (l1PFCand->id() == l1t::PFCandidate::ChargedHadron || l1PFCand->id() == l1t::PFCandidate::Electron ||
135  l1PFCand->id() == l1t::PFCandidate::Photon || l1PFCand->id() == l1t::PFCandidate::Muon) {
136  l1PFTauSeed_p4 += l1PFCand->p4();
137  if (l1PFCand->charge() != 0 && l1PFCand->pfTrack().isNonnull() && l1PFCand->pt() > max_chargedPFCand_pt) {
138  l1PFTauSeedZVtx = l1PFCand->pfTrack()->vertex().z();
139  l1PFTauSeed_hasVtx = true;
140  max_chargedPFCand_pt = l1PFCand->pt();
141  }
142  }
143  }
144  if (l1PFTauSeed_p4.pt() > 1. && l1PFTauSeed_hasVtx) {
145  l1PFTauSeedEta_ = l1PFTauSeed_p4.eta();
146  l1PFTauSeedPhi_ = l1PFTauSeed_p4.phi();
147  l1PFTauSeedZVtx_ = l1PFTauSeedZVtx;
148  isJetSeeded_ = true;
149  }
150 }
151 */
153  const std::vector<l1t::PFCandidateRef>& l1PFCands) {
154  if (debug_) {
155  std::cout << "<L1HPSPFTauBuilder::setL1PFTauSeed>:" << std::endl;
156  std::cout << "seeding HPSPFTau with Jet:";
157  std::cout << " pT = " << l1JetSeed->pt() << ", eta = " << l1JetSeed->eta() << ", phi = " << l1JetSeed->phi()
158  << std::endl;
159  }
160 
161  l1JetSeed_ = l1JetSeed;
162  reco::Candidate::LorentzVector l1PFTauSeed_p4;
163  float l1PFTauSeedZVtx = 0.;
164  bool l1PFTauSeed_hasVtx = false;
165  float max_chargedPFCand_pt = -1.;
166  for (const auto& l1PFCand : l1PFCands) {
167  double dR = reco::deltaR(l1PFCand->eta(), l1PFCand->phi(), l1JetSeed->eta(), l1JetSeed->phi());
168  if (dR > 0.4)
169  continue;
170  if (l1PFCand->id() == l1t::PFCandidate::ChargedHadron || l1PFCand->id() == l1t::PFCandidate::Electron ||
171  l1PFCand->id() == l1t::PFCandidate::Photon || l1PFCand->id() == l1t::PFCandidate::Muon) {
172  l1PFTauSeed_p4 += l1PFCand->p4();
173  if (l1PFCand->charge() != 0 && l1PFCand->pfTrack().isNonnull() && l1PFCand->pt() > max_chargedPFCand_pt) {
174  l1PFTauSeedZVtx = l1PFCand->pfTrack()->vertex().z();
175  l1PFTauSeed_hasVtx = true;
176  max_chargedPFCand_pt = l1PFCand->pt();
177  }
178  }
179  }
180  if (l1PFTauSeed_p4.pt() > 1. && l1PFTauSeed_hasVtx) {
181  l1PFTauSeedEta_ = l1PFTauSeed_p4.eta();
182  l1PFTauSeedPhi_ = l1PFTauSeed_p4.phi();
183  l1PFTauSeedZVtx_ = l1PFTauSeedZVtx;
184  isJetSeeded_ = true;
185  }
186 }
187 
188 void L1HPSPFTauBuilder::addL1PFCandidates(const std::vector<l1t::PFCandidateRef>& l1PFCands) {
189  if (debug_) {
190  std::cout << "<L1HPSPFTauBuilder::addL1PFCandidates>:" << std::endl;
191  }
192 
193  // do not build tau candidates for which no reference z-position exists,
194  // as in this case charged PFCands originating from the primary (hard-scatter) interaction
195  // cannot be distinguished from charged PFCands originating from pileup
196  if (!(isPFCandSeeded_ || isJetSeeded_))
197  return;
198 
199  for (const auto& l1PFCand : l1PFCands) {
200  if (!isWithinIsolationCone(*l1PFCand))
201  continue;
202  sumAllL1PFCandidates_.push_back(l1PFCand);
203  if (l1PFCand->id() == l1t::PFCandidate::ChargedHadron) {
204  sumChargedHadrons_.push_back(l1PFCand);
205  } else if (l1PFCand->id() == l1t::PFCandidate::Electron) {
206  sumElectrons_.push_back(l1PFCand);
207  } else if (l1PFCand->id() == l1t::PFCandidate::NeutralHadron) {
208  sumNeutralHadrons_.push_back(l1PFCand);
209  } else if (l1PFCand->id() == l1t::PFCandidate::Photon) {
210  sumPhotons_.push_back(l1PFCand);
211  } else if (l1PFCand->id() == l1t::PFCandidate::Muon) {
212  sumMuons_.push_back(l1PFCand);
213  }
214  }
215 
216  for (const auto& l1PFCand : sumAllL1PFCandidates_) {
217  sumAllL1PFCandidatesPt_ += l1PFCand->pt();
218  }
219  std::vector<double> emptyV;
220  std::vector<double> sumAllL1PFCandidatesPt(1);
221  sumAllL1PFCandidatesPt[0] = sumAllL1PFCandidatesPt_;
222 
223  signalConeSize_ = signalConeSizeFormula_.evaluate(sumAllL1PFCandidatesPt, emptyV);
224 
230 
231  for (const auto& l1PFCand : sumAllL1PFCandidates_) {
232  if (debug_) {
233  printPFCand(std::cout, *l1PFCand, primaryVertex_);
234  }
235 
236  bool isSignalPFCand = false;
237  bool isStripPFCand = false;
238  bool isElectron_or_Photon =
239  l1PFCand->id() == l1t::PFCandidate::Electron || l1PFCand->id() == l1t::PFCandidate::Photon;
240  bool isChargedHadron = l1PFCand->id() == l1t::PFCandidate::ChargedHadron;
241  if (isWithinSignalCone(*l1PFCand) && !(isChargedHadron && signalChargedHadrons_.size() > 3)) {
242  isSignalPFCand = true;
243  }
244  if (isElectron_or_Photon && isWithinStrip(*l1PFCand)) {
245  if (useStrips_) {
246  isSignalPFCand = true;
247  }
248  isStripPFCand = true;
249  }
250  bool passesSignalQualityCuts = isSelected(signalQualityCutsDzCutEnabledPrimary_, *l1PFCand, l1PFTauSeedZVtx_);
251  if (isSignalPFCand && passesSignalQualityCuts) {
252  signalAllL1PFCandidates_.push_back(l1PFCand);
253  if (l1PFCand->id() == l1t::PFCandidate::ChargedHadron) {
254  signalChargedHadrons_.push_back(l1PFCand);
255  } else if (l1PFCand->id() == l1t::PFCandidate::Electron) {
256  signalElectrons_.push_back(l1PFCand);
257  } else if (l1PFCand->id() == l1t::PFCandidate::NeutralHadron) {
258  signalNeutralHadrons_.push_back(l1PFCand);
259  } else if (l1PFCand->id() == l1t::PFCandidate::Photon) {
260  signalPhotons_.push_back(l1PFCand);
261  } else if (l1PFCand->id() == l1t::PFCandidate::Muon) {
262  signalMuons_.push_back(l1PFCand);
263  }
264  }
265  if (isStripPFCand && passesSignalQualityCuts) {
266  stripAllL1PFCandidates_.push_back(l1PFCand);
267  if (l1PFCand->id() == l1t::PFCandidate::Electron) {
268  stripElectrons_.push_back(l1PFCand);
269  stripP4_ += l1PFCand->p4();
270  } else if (l1PFCand->id() == l1t::PFCandidate::Photon) {
271  stripPhotons_.push_back(l1PFCand);
272  stripP4_ += l1PFCand->p4();
273  } else
274  assert(0);
275  }
276 
277  bool isIsolationPFCand = isWithinIsolationCone(*l1PFCand) && !isSignalPFCand;
278  bool passesIsolationQualityCuts = isSelected(isolationQualityCutsDzCutEnabledPrimary_, *l1PFCand, l1PFTauSeedZVtx_);
279  if (isIsolationPFCand && passesIsolationQualityCuts) {
280  isoAllL1PFCandidates_.push_back(l1PFCand);
281  if (l1PFCand->id() == l1t::PFCandidate::ChargedHadron) {
282  isoChargedHadrons_.push_back(l1PFCand);
283  } else if (l1PFCand->id() == l1t::PFCandidate::Electron) {
284  isoElectrons_.push_back(l1PFCand);
285  } else if (l1PFCand->id() == l1t::PFCandidate::NeutralHadron) {
286  isoNeutralHadrons_.push_back(l1PFCand);
287  } else if (l1PFCand->id() == l1t::PFCandidate::Photon) {
288  isoPhotons_.push_back(l1PFCand);
289  } else if (l1PFCand->id() == l1t::PFCandidate::Muon) {
290  isoMuons_.push_back(l1PFCand);
291  }
292  }
293 
294  if (debug_) {
295  std::cout << "dR = " << reco::deltaR(l1PFCand->eta(), l1PFCand->phi(), l1PFTauSeedEta_, l1PFTauSeedPhi_) << ":"
296  << " isSignalPFCand = " << isSignalPFCand << ", isStripPFCand = " << isStripPFCand
297  << " (passesSignalQualityCuts = " << passesSignalQualityCuts << "),"
298  << " isIsolationPFCand = " << isIsolationPFCand
299  << " (passesIsolationQualityCuts = " << passesIsolationQualityCuts << ")" << std::endl;
300  }
301  }
302 
303  for (const auto& l1PFCand : l1PFCands) {
304  if (!isWithinIsolationCone(*l1PFCand))
305  continue;
306 
307  if (l1PFCand->charge() != 0 && isSelected(isolationQualityCutsDzCutEnabledPileup_, *l1PFCand, l1PFTauSeedZVtx_)) {
308  sumChargedIsoPileup_ += l1PFCand->pt();
309  }
310  }
311 }
312 
313 //void L1HPSPFTauBuilder::setRho(double rho) { rho_ = rho; }
314 
316  if (isPFCandSeeded_ || isJetSeeded_) {
317  double deltaEta = l1PFCand.eta() - l1PFTauSeedEta_;
318  double deltaPhi = l1PFCand.phi() - l1PFTauSeedPhi_;
320  return true;
321  }
322  return false;
323 }
324 
326  if (isPFCandSeeded_ || isJetSeeded_) {
327  double deltaEta = l1PFCand.eta() - l1PFTauSeedEta_;
328  double deltaPhi = l1PFCand.phi() - l1PFTauSeedPhi_;
329  if (std::fabs(deltaEta) < stripSizeEta_ && std::fabs(deltaPhi) < stripSizePhi_)
330  return true;
331  }
332  return false;
333 }
334 
336  double deltaEta = l1PFCand.eta() - l1PFTauSeedEta_;
337  double deltaPhi = l1PFCand.phi() - l1PFTauSeedPhi_;
339  return true;
340  else
341  return false;
342 }
343 
346  for (const auto& l1PFCand : signalAllL1PFCandidates_) {
347  if (l1PFCand->id() == l1t::PFCandidate::ChargedHadron || l1PFCand->id() == l1t::PFCandidate::Electron ||
348  l1PFCand->id() == l1t::PFCandidate::Photon) {
349  l1PFTau_p4 += l1PFCand->p4();
350  if (l1PFCand->charge() != 0 &&
351  (l1PFTau_.leadChargedPFCand().isNull() || l1PFCand->pt() > l1PFTau_.leadChargedPFCand()->pt())) {
352  l1PFTau_.setLeadChargedPFCand(l1PFCand);
353  }
354  }
355  }
357  l1PFTau_.setZ(l1PFTau_.leadChargedPFCand()->pfTrack()->vertex().z());
358 
359  l1PFTau_.setP4(l1PFTau_p4);
360 
363 
370 
374 
381 
388 
390 
391  if (l1PFTau_.signalChargedHadrons().size() > 1) {
392  if (stripP4_.pt() < 5.)
394  else
396  } else {
397  if (stripP4_.pt() < 5.)
399  else
401  }
402 
404 
408 
409  double sumChargedIso = 0.;
410  double sumNeutralIso = 0.;
411  for (const auto& l1PFCand : isoAllL1PFCandidates_) {
412  if (l1PFCand->charge() != 0) {
413  sumChargedIso += l1PFCand->pt();
414  } else if (l1PFCand->id() == l1t::PFCandidate::Photon) {
415  sumNeutralIso += l1PFCand->pt();
416  }
417  }
418  l1PFTau_.setSumChargedIso(sumChargedIso);
419  l1PFTau_.setSumNeutralIso(sumNeutralIso);
420  const double weightNeutralIso = 1.;
421  const double offsetNeutralIso = 0.;
422  l1PFTau_.setSumCombinedIso(sumChargedIso + weightNeutralIso * (sumNeutralIso - offsetNeutralIso));
424 
425  if (l1PFTau_.sumChargedIso() < 20.0) {
427  }
428  if (l1PFTau_.sumChargedIso() < 10.0) {
430  }
431  if (l1PFTau_.sumChargedIso() < 5.0) {
433  }
434  if (l1PFTau_.sumChargedIso() < 2.5) {
436  }
437 
438  if (l1PFTau_p4.pt() != 0) {
439  if (l1PFTau_.sumChargedIso() / l1PFTau_p4.pt() < 0.40) {
441  }
442  if (l1PFTau_.sumChargedIso() / l1PFTau_p4.pt() < 0.20) {
444  }
445  if (l1PFTau_.sumChargedIso() / l1PFTau_p4.pt() < 0.10) {
447  }
448  if (l1PFTau_.sumChargedIso() / l1PFTau_p4.pt() < 0.05) {
450  }
451  }
452  }
453 }
454 
455 l1t::PFCandidateRefVector L1HPSPFTauBuilder::convertToRefVector(const std::vector<l1t::PFCandidateRef>& l1PFCands) {
456  l1t::PFCandidateRefVector l1PFCandsRefVector(l1PFCandProductID_);
457  for (const auto& l1PFCand : l1PFCands) {
458  l1PFCandsRefVector.push_back(l1PFCand);
459  }
460  return l1PFCandsRefVector;
461 }
void setPassMediumRelIso(bool passMediumRelIso)
Definition: HPSPFTau.h:145
std::vector< l1t::PFCandidateRef > signalAllL1PFCandidates_
std::vector< L1HPSPFTauQualityCut > isolationQualityCutsDzCutDisabled_
double evaluate(V const &iVariables, P const &iParameters) const
bool isWithinSignalCone(const l1t::PFCandidate &l1PFCand)
void setSumChargedHadrons(l1t::PFCandidateRefVector sumChargedHadrons)
Definition: HPSPFTau.h:117
edm::ProductID l1PFCandProductID_
void setIsoElectrons(l1t::PFCandidateRefVector isoElectrons)
Definition: HPSPFTau.h:109
std::vector< l1t::PFCandidateRef > isoMuons_
void setLeadChargedPFCand(l1t::PFCandidateRef leadChargedPFCand)
Definition: HPSPFTau.h:84
void setPassVLooseRelIso(bool passVLooseRelIso)
Definition: HPSPFTau.h:147
void setL1PFCandProductID(const edm::ProductID &l1PFCandProductID)
std::vector< L1HPSPFTauQualityCut > isolationQualityCutsDzCutEnabledPrimary_
reco::Particle::LorentzVector stripP4_
std::vector< l1t::PFCandidateRef > sumChargedHadrons_
std::vector< L1HPSPFTauQualityCut > signalQualityCutsDzCutEnabledPrimary_
void setSignalNeutralHadrons(l1t::PFCandidateRefVector signalNeutralHadrons)
Definition: HPSPFTau.h:93
void addL1PFCandidates(const std::vector< l1t::PFCandidateRef > &l1PFCands)
void setPrimaryVertex(l1t::VertexWordRef primaryVertex)
Definition: HPSPFTau.h:123
void setZ(float Z)
Definition: HPSPFTau.h:137
void setIsoPhotons(l1t::PFCandidateRefVector isoPhotons)
Definition: HPSPFTau.h:111
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
std::vector< l1t::PFCandidateRef > stripAllL1PFCandidates_
std::vector< l1t::PFCandidateRef > signalChargedHadrons_
void setIsoNeutralHadrons(l1t::PFCandidateRefVector isoNeutralHadrons)
Definition: HPSPFTau.h:110
void setStripAllL1PFCandidates(l1t::PFCandidateRefVector stripAllL1PFCandidates)
Definition: HPSPFTau.h:99
std::vector< l1t::PFCandidateRef > signalNeutralHadrons_
assert(be >=bs)
reco::FormulaEvaluator signalConeSizeFormula_
void setSignalElectrons(l1t::PFCandidateRefVector signalElectrons)
Definition: HPSPFTau.h:92
std::vector< l1t::PFCandidateRef > isoNeutralHadrons_
L1HPSPFTauBuilder(const edm::ParameterSet &cfg)
static const double deltaEta
Definition: CaloConstants.h:8
std::vector< l1t::PFCandidateRef > sumAllL1PFCandidates_
float sumChargedIso() const
Definition: HPSPFTau.h:66
void setSumChargedIso(float sumChargedIso)
Definition: HPSPFTau.h:133
void setStripElectrons(l1t::PFCandidateRefVector stripElectrons)
Definition: HPSPFTau.h:102
std::vector< l1t::PFCandidateRef > stripPhotons_
void setSumElectrons(l1t::PFCandidateRefVector sumElectrons)
Definition: HPSPFTau.h:118
std::vector< l1t::PFCandidateRef > isoAllL1PFCandidates_
void setSumNeutralHadrons(l1t::PFCandidateRefVector sumNeutralHadrons)
Definition: HPSPFTau.h:119
void setIsoMuons(l1t::PFCandidateRefVector isoMuons)
Definition: HPSPFTau.h:112
std::vector< L1HPSPFTauQualityCut > isolationQualityCutsDzCutEnabledPileup_
void setL1PFTauSeed(const l1t::PFCandidateRef &l1PFCandSeed)
edm::Ref< VertexWordCollection > VertexWordRef
Definition: VertexWord.h:198
void setIsoChargedHadrons(l1t::PFCandidateRefVector isoChargedHadrons)
Definition: HPSPFTau.h:108
bool isWithinIsolationCone(const l1t::PFCandidate &l1PFCand)
std::vector< l1t::PFCandidateRef > stripElectrons_
l1t::HPSPFTau l1PFTau_
void setTauType(Kind tauType)
Definition: HPSPFTau.h:125
std::vector< L1HPSPFTauQualityCut > readL1PFTauQualityCuts(const edm::ParameterSet &cfg, const std::string &dzCut, bool debug=false)
bool isWithinStrip(const l1t::PFCandidate &l1PFCand)
std::vector< l1t::PFCandidateRef > signalElectrons_
void setPassTightIso(bool passTightIso)
Definition: HPSPFTau.h:139
bool isNull() const
Checks for null.
Definition: Ref.h:235
std::vector< l1t::PFCandidateRef > isoElectrons_
void setSumChargedIsoPileup(float sumChargedIsoPileup)
Definition: HPSPFTau.h:136
void setSumCombinedIso(float sumCombinedIso)
Definition: HPSPFTau.h:135
std::vector< l1t::PFCandidateRef > sumPhotons_
l1t::PFCandidateRefVector convertToRefVector(const std::vector< l1t::PFCandidateRef > &l1PFCands)
edm::Ref< CaloJetCollection > CaloJetRef
edm references
void setVertex(const l1t::VertexWordRef &primaryVertex)
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
l1t::VertexWordRef primaryVertex_
void setSumMuons(l1t::PFCandidateRefVector sumMuons)
Definition: HPSPFTau.h:121
void setIsoAllL1PFCandidates(l1t::PFCandidateRefVector isoAllL1PFCandidates)
Definition: HPSPFTau.h:105
void setPassVLooseIso(bool passVLooseIso)
Definition: HPSPFTau.h:142
std::vector< l1t::PFCandidateRef > isoChargedHadrons_
void setSignalChargedHadrons(l1t::PFCandidateRefVector signalChargedHadrons)
Definition: HPSPFTau.h:89
void setStripP4(reco::Particle::LorentzVector &stripP4)
Definition: HPSPFTau.h:127
void setSumPhotons(l1t::PFCandidateRefVector sumPhotons)
Definition: HPSPFTau.h:120
size_type size() const
Size of the RefVector.
Definition: RefVector.h:102
void setPassTightRelIso(bool passTightRelIso)
Definition: HPSPFTau.h:144
void setSeedChargedPFCand(l1t::PFCandidateRef seedChargedPFCand)
Definition: HPSPFTau.h:82
std::vector< L1HPSPFTauQualityCut > signalQualityCutsDzCutDisabled_
reco::CaloJetRef l1JetSeed_
std::vector< l1t::PFCandidateRef > isoPhotons_
std::vector< l1t::PFCandidateRef > sumElectrons_
void printPFCand(ostream &os, const l1t::PFCandidate &l1PFCand, const l1t::VertexWordRef &primaryVertex)
Definition: HPSPFTau.cc:63
void setPassMediumIso(bool passMediumIso)
Definition: HPSPFTau.h:140
bool isSelected(const std::vector< L1HPSPFTauQualityCut > &qualityCuts, const l1t::PFCandidate &pfCand, float_t primaryVertexZ)
void setSignalPhotons(l1t::PFCandidateRefVector signalPhotons)
Definition: HPSPFTau.h:96
void setSignalAllL1PFCandidates(l1t::PFCandidateRefVector signalAllL1PFCandidates)
Definition: HPSPFTau.h:86
void setSumAllL1PFCandidatesPt(float sumAllL1PFCandidatesPt)
Definition: HPSPFTau.h:129
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:36
const l1t::PFCandidateRefVector & signalChargedHadrons() const
Definition: HPSPFTau.h:31
void setPassLooseIso(bool passLooseIso)
Definition: HPSPFTau.h:141
void setStripPhotons(l1t::PFCandidateRefVector stripPhotons)
Definition: HPSPFTau.h:103
void setSeedJet(reco::CaloJetRef seedJet)
Definition: HPSPFTau.h:83
void setSignalMuons(l1t::PFCandidateRefVector signalMuons)
Definition: HPSPFTau.h:97
void push_back(value_type const &ref)
Add a Ref<C, T> to the RefVector.
Definition: RefVector.h:67
std::vector< l1t::PFCandidateRef > signalPhotons_
const l1t::PFCandidateRef & leadChargedPFCand() const
Definition: HPSPFTau.h:28
std::vector< l1t::PFCandidateRef > sumMuons_
edm::Ref< l1t::PFCandidateCollection > PFCandidateRef
Definition: PFCandidate.h:87
std::vector< l1t::PFCandidateRef > signalMuons_
double phi() const final
momentum azimuthal angle
void setSignalConeSize(float signalConeSize)
Definition: HPSPFTau.h:130
primaryVertex
hltOfflineBeamSpot for HLTMON
l1t::PFCandidateRef l1PFCandSeed_
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:21
void setP4(const LorentzVector &p4) final
set 4-momentum
void setSumNeutralIso(float sumNeutralIso)
Definition: HPSPFTau.h:134
void setPassLooseRelIso(bool passLooseRelIso)
Definition: HPSPFTau.h:146
std::vector< l1t::PFCandidateRef > sumNeutralHadrons_
void setSumAllL1PFCandidates(l1t::PFCandidateRefVector sumAllL1PFCandidates)
Definition: HPSPFTau.h:114
void setisolationConeSize(float isolationConeSize)
Definition: HPSPFTau.h:131
double eta() const final
momentum pseudorapidity