CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Tau.cc
Go to the documentation of this file.
1 //
2 // $Id: Tau.cc,v 1.22 2011/10/27 16:37:04 wmtan Exp $
3 //
4 
7 
8 
9 using namespace pat;
10 
11 
14  Lepton<reco::BaseTau>()
15  ,embeddedIsolationTracks_(false)
16  ,isolationTracksTransientRefVectorFixed_(false)
17  ,embeddedLeadTrack_(false)
18  ,embeddedSignalTracks_(false)
19  ,signalTracksTransientRefVectorFixed_(false)
20  ,embeddedLeadPFCand_(false)
21  ,embeddedLeadPFChargedHadrCand_(false)
22  ,embeddedLeadPFNeutralCand_(false)
23  ,embeddedSignalPFCands_(false)
24  ,signalPFCandsRefVectorFixed_(false)
25  ,embeddedSignalPFChargedHadrCands_(false)
26  ,signalPFChargedHadrCandsRefVectorFixed_(false)
27  ,embeddedSignalPFNeutralHadrCands_(false)
28  ,signalPFNeutralHadrCandsRefVectorFixed_(false)
29  ,embeddedSignalPFGammaCands_(false)
30  ,signalPFGammaCandsRefVectorFixed_(false)
31  ,embeddedIsolationPFCands_(false)
32  ,isolationPFCandsRefVectorFixed_(false)
33  ,embeddedIsolationPFChargedHadrCands_(false)
34  ,isolationPFChargedHadrCandsRefVectorFixed_(false)
35  ,embeddedIsolationPFNeutralHadrCands_(false)
36  ,isolationPFNeutralHadrCandsRefVectorFixed_(false)
37  ,embeddedIsolationPFGammaCands_(false)
38  ,isolationPFGammaCandsRefVectorFixed_(false)
39 {
40 }
41 
43 Tau::Tau(const reco::BaseTau & aTau) :
44  Lepton<reco::BaseTau>(aTau)
45  ,embeddedIsolationTracks_(false)
46  ,isolationTracksTransientRefVectorFixed_(false)
47  ,embeddedLeadTrack_(false)
48  ,embeddedSignalTracks_(false)
49  ,signalTracksTransientRefVectorFixed_(false)
50  ,embeddedLeadPFCand_(false)
51  ,embeddedLeadPFChargedHadrCand_(false)
52  ,embeddedLeadPFNeutralCand_(false)
53  ,embeddedSignalPFCands_(false)
54  ,signalPFCandsRefVectorFixed_(false)
55  ,embeddedSignalPFChargedHadrCands_(false)
56  ,signalPFChargedHadrCandsRefVectorFixed_(false)
57  ,embeddedSignalPFNeutralHadrCands_(false)
58  ,signalPFNeutralHadrCandsRefVectorFixed_(false)
59  ,embeddedSignalPFGammaCands_(false)
60  ,signalPFGammaCandsRefVectorFixed_(false)
61  ,embeddedIsolationPFCands_(false)
62  ,isolationPFCandsRefVectorFixed_(false)
63  ,embeddedIsolationPFChargedHadrCands_(false)
64  ,isolationPFChargedHadrCandsRefVectorFixed_(false)
65  ,embeddedIsolationPFNeutralHadrCands_(false)
66  ,isolationPFNeutralHadrCandsRefVectorFixed_(false)
67  ,embeddedIsolationPFGammaCands_(false)
68  ,isolationPFGammaCandsRefVectorFixed_(false)
69 {
70  const reco::PFTau * pfTau = dynamic_cast<const reco::PFTau *>(&aTau);
71  if (pfTau != 0) pfSpecific_.push_back(pat::tau::TauPFSpecific(*pfTau));
72  const reco::CaloTau * caloTau = dynamic_cast<const reco::CaloTau *>(&aTau);
73  if (caloTau != 0) caloSpecific_.push_back(pat::tau::TauCaloSpecific(*caloTau));
74 }
75 
78  Lepton<reco::BaseTau>(aTauRef)
79  ,embeddedIsolationTracks_(false)
80  ,isolationTracksTransientRefVectorFixed_(false)
81  ,embeddedLeadTrack_(false)
82  ,embeddedSignalTracks_(false)
83  ,signalTracksTransientRefVectorFixed_(false)
84  ,embeddedLeadPFCand_(false)
85  ,embeddedLeadPFChargedHadrCand_(false)
86  ,embeddedLeadPFNeutralCand_(false)
87  ,embeddedSignalPFCands_(false)
88  ,signalPFCandsRefVectorFixed_(false)
89  ,embeddedSignalPFChargedHadrCands_(false)
90  ,signalPFChargedHadrCandsRefVectorFixed_(false)
91  ,embeddedSignalPFNeutralHadrCands_(false)
92  ,signalPFNeutralHadrCandsRefVectorFixed_(false)
93  ,embeddedSignalPFGammaCands_(false)
94  ,signalPFGammaCandsRefVectorFixed_(false)
95  ,embeddedIsolationPFCands_(false)
96  ,isolationPFCandsRefVectorFixed_(false)
97  ,embeddedIsolationPFChargedHadrCands_(false)
98  ,isolationPFChargedHadrCandsRefVectorFixed_(false)
99  ,embeddedIsolationPFNeutralHadrCands_(false)
100  ,isolationPFNeutralHadrCandsRefVectorFixed_(false)
101  ,embeddedIsolationPFGammaCands_(false)
102  ,isolationPFGammaCandsRefVectorFixed_(false)
103 {
104  const reco::PFTau * pfTau = dynamic_cast<const reco::PFTau *>(aTauRef.get());
105  if (pfTau != 0) pfSpecific_.push_back(pat::tau::TauPFSpecific(*pfTau));
106  const reco::CaloTau * caloTau = dynamic_cast<const reco::CaloTau *>(aTauRef.get());
107  if (caloTau != 0) caloSpecific_.push_back(pat::tau::TauCaloSpecific(*caloTau));
108 }
109 
112  Lepton<reco::BaseTau>(aTauRef)
113  ,embeddedIsolationTracks_(false)
114  ,isolationTracksTransientRefVectorFixed_(false)
115  ,embeddedLeadTrack_(false)
116  ,embeddedSignalTracks_(false)
117  ,signalTracksTransientRefVectorFixed_(false)
118  ,embeddedLeadPFCand_(false)
119  ,embeddedLeadPFChargedHadrCand_(false)
120  ,embeddedLeadPFNeutralCand_(false)
121  ,embeddedSignalPFCands_(false)
122  ,signalPFCandsRefVectorFixed_(false)
123  ,embeddedSignalPFChargedHadrCands_(false)
124  ,signalPFChargedHadrCandsRefVectorFixed_(false)
125  ,embeddedSignalPFNeutralHadrCands_(false)
126  ,signalPFNeutralHadrCandsRefVectorFixed_(false)
127  ,embeddedSignalPFGammaCands_(false)
128  ,signalPFGammaCandsRefVectorFixed_(false)
129  ,embeddedIsolationPFCands_(false)
130  ,isolationPFCandsRefVectorFixed_(false)
131  ,embeddedIsolationPFChargedHadrCands_(false)
132  ,isolationPFChargedHadrCandsRefVectorFixed_(false)
133  ,embeddedIsolationPFNeutralHadrCands_(false)
134  ,isolationPFNeutralHadrCandsRefVectorFixed_(false)
135  ,embeddedIsolationPFGammaCands_(false)
136  ,isolationPFGammaCandsRefVectorFixed_(false)
137 {
138  const reco::PFTau * pfTau = dynamic_cast<const reco::PFTau *>(aTauRef.get());
139  if (pfTau != 0) pfSpecific_.push_back(pat::tau::TauPFSpecific(*pfTau));
140  const reco::CaloTau * caloTau = dynamic_cast<const reco::CaloTau *>(aTauRef.get());
141  if (caloTau != 0) caloSpecific_.push_back(pat::tau::TauCaloSpecific(*caloTau));
142 }
143 
146 }
147 
148 std::ostream&
149 reco::operator<<(std::ostream& out, const pat::Tau& obj)
150 {
151  if(!out) return out;
152 
153  out << "\tpat::Tau: ";
154  out << std::setiosflags(std::ios::right);
155  out << std::setiosflags(std::ios::fixed);
156  out << std::setprecision(3);
157  out << " E/pT/eta/phi "
158  << obj.energy()<<"/"
159  << obj.pt()<<"/"
160  << obj.eta()<<"/"
161  << obj.phi();
162  return out;
163 }
164 
169  reco::TrackRefVector trackRefVec;
170  for (unsigned int i = 0; i < isolationTracks_.size(); i++) {
171  trackRefVec.push_back(reco::TrackRef(&isolationTracks_, i));
172  }
175  }
177  } else {
179  }
180 }
181 
182 
185  if (embeddedLeadTrack_) {
186  return reco::TrackRef(&leadTrack_, 0);
187  } else {
188  return reco::BaseTau::leadTrack();
189  }
190 }
191 
192 
195  if (embeddedSignalTracks_) {
196  reco::TrackRefVector trackRefVec;
198  for (unsigned int i = 0; i < signalTracks_.size(); i++) {
199  trackRefVec.push_back(reco::TrackRef(&signalTracks_, i));
200  }
203  }
205  } else {
207  }
208 }
209 
210 
213  isolationTracks_.clear();
215  for (unsigned int i = 0; i < trackRefVec.size(); i++) {
216  isolationTracks_.push_back(*trackRefVec.at(i));
217  }
219 }
220 
221 
224  leadTrack_.clear();
225  if (reco::BaseTau::leadTrack().isNonnull()) {
226  leadTrack_.push_back(*reco::BaseTau::leadTrack());
227  embeddedLeadTrack_ = true;
228  }
229 }
230 
231 
234  signalTracks_.clear();
236  for (unsigned int i = 0; i < trackRefVec.size(); i++) {
237  signalTracks_.push_back(*trackRefVec.at(i));
238  }
239  embeddedSignalTracks_ = true;
240 }
241 
242 
245  genJet_.clear();
246  genJet_.push_back(*gj);
247 }
248 
250 const reco::GenJet * Tau::genJet() const {
251  return (genJet_.size() > 0 ? &genJet_.front() : 0);
252 }
253 
254 
255 // method to retrieve a tau ID (or throw)
256 float Tau::tauID(const std::string & name) const {
257  for (std::vector<IdPair>::const_iterator it = tauIDs_.begin(), ed = tauIDs_.end(); it != ed; ++it) {
258  if (it->first == name) return it->second;
259  }
260  cms::Exception ex("Key not found");
261  ex << "pat::Tau: the ID " << name << " can't be found in this pat::Tau.\n";
262  ex << "The available IDs are: ";
263  for (std::vector<IdPair>::const_iterator it = tauIDs_.begin(), ed = tauIDs_.end(); it != ed; ++it) {
264  ex << "'" << it->first << "' ";
265  }
266  ex << ".\n";
267  throw ex;
268 }
269 // check if an ID is there
270 bool Tau::isTauIDAvailable(const std::string & name) const {
271  for (std::vector<IdPair>::const_iterator it = tauIDs_.begin(), ed = tauIDs_.end(); it != ed; ++it) {
272  if (it->first == name) return true;
273  }
274  return false;
275 }
276 
277 
279  if (!isPFTau()) throw cms::Exception("Type Error") << "Requesting a PFTau-specific information from a pat::Tau which wasn't made from a PFTau.\n";
280  return pfSpecific_[0];
281 }
282 
284  if (!isCaloTau()) throw cms::Exception("Type Error") << "Requesting a CaloTau-specific information from a pat::Tau which wasn't made from a CaloTau.\n";
285  return caloSpecific_[0];
286 }
287 
289 {
290  if ( isCaloTau() ) return caloSpecific().p4Jet_;
291  if ( isPFTau() ) return pfSpecific().p4Jet_;
292  throw cms::Exception("Type Error") << "Requesting a CaloTau/PFTau-specific information from a pat::Tau which wasn't made from either a CaloTau or a PFTau.\n";
293 }
294 
295 float Tau::etaetaMoment() const
296 {
297  if ( isCaloTau() ) return caloSpecific().etaetaMoment_;
298  if ( isPFTau() ) return pfSpecific().etaetaMoment_;
299  throw cms::Exception("Type Error") << "Requesting a CaloTau/PFTau-specific information from a pat::Tau which wasn't made from either a CaloTau or a PFTau.\n";
300 }
301 
302 float Tau::phiphiMoment() const
303 {
304  if ( isCaloTau() ) return caloSpecific().phiphiMoment_;
305  if ( isPFTau() ) return pfSpecific().phiphiMoment_;
306  throw cms::Exception("Type Error") << "Requesting a CaloTau/PFTau-specific information from a pat::Tau which wasn't made from either a CaloTau or a PFTau.\n";
307 }
308 
309 float Tau::etaphiMoment() const
310 {
311  if ( isCaloTau() ) return caloSpecific().etaphiMoment_;
312  if ( isPFTau() ) return pfSpecific().etaphiMoment_;
313  throw cms::Exception("Type Error") << "Requesting a CaloTau/PFTau-specific information from a pat::Tau which wasn't made from either a CaloTau or a PFTau.\n";
314 }
315 
316 void Tau::setDecayMode(int decayMode)
317 {
318  if (!isPFTau()) throw cms::Exception("Type Error") << "Requesting a PFTau-specific information from a pat::Tau which wasn't made from a PFTau.\n";
319  pfSpecific_[0].decayMode_ = decayMode;
320 }
321 
324  if (!isPFTau() ) {//additional check with warning in pat::tau producer
325  return;
326  }
327  leadPFCand_.clear();
328  if (pfSpecific_[0].leadPFCand_.isNonnull() ) {
329  leadPFCand_.push_back(*pfSpecific_[0].leadPFCand_); //already set in C-tor
330  embeddedLeadPFCand_ = true;
331  }
332 }
335  if (!isPFTau() ) {//additional check with warning in pat::tau producer
336  return;
337  }
338  leadPFChargedHadrCand_.clear();
339  if (pfSpecific_[0].leadPFChargedHadrCand_.isNonnull() ) {
340  leadPFChargedHadrCand_.push_back(*pfSpecific_[0].leadPFChargedHadrCand_); //already set in C-tor
342  }
343 }
346  if (!isPFTau() ) {//additional check with warning in pat::tau producer
347  return;
348  }
349  leadPFNeutralCand_.clear();
350  if (pfSpecific_[0].leadPFNeutralCand_.isNonnull() ) {
351  leadPFNeutralCand_.push_back(*pfSpecific_[0].leadPFNeutralCand_); //already set in C-tor
353  }
354 }
355 
357  if (!isPFTau() ) {//additional check with warning in pat::tau producer
358  return;
359  }
360  reco::PFCandidateRefVector candRefVec = pfSpecific_[0].selectedSignalPFCands_;
361  for (unsigned int i = 0; i < candRefVec.size(); i++) {
362  signalPFCands_.push_back(*candRefVec.at(i));
363  }
364  embeddedSignalPFCands_ = true;
365 }
367  if (!isPFTau() ) {//additional check with warning in pat::tau producer
368  return;
369  }
370  reco::PFCandidateRefVector candRefVec = pfSpecific_[0].selectedSignalPFChargedHadrCands_;
371  for (unsigned int i = 0; i < candRefVec.size(); i++) {
372  signalPFChargedHadrCands_.push_back(*candRefVec.at(i));
373  }
375 }
377  if (!isPFTau() ) {//additional check with warning in pat::tau producer
378  return;
379  }
380  reco::PFCandidateRefVector candRefVec = pfSpecific_[0].selectedSignalPFNeutrHadrCands_;
381  for (unsigned int i = 0; i < candRefVec.size(); i++) {
382  signalPFNeutralHadrCands_.push_back(*candRefVec.at(i));
383  }
385 }
387  if (!isPFTau() ) {//additional check with warning in pat::tau producer
388  return;
389  }
390  reco::PFCandidateRefVector candRefVec = pfSpecific_[0].selectedSignalPFGammaCands_;
391  for (unsigned int i = 0; i < candRefVec.size(); i++) {
392  signalPFGammaCands_.push_back(*candRefVec.at(i));
393  }
395 }
396 
398  if (!isPFTau() ) {//additional check with warning in pat::tau producer
399  return;
400  }
401  reco::PFCandidateRefVector candRefVec = pfSpecific_[0].selectedIsolationPFCands_;
402  for (unsigned int i = 0; i < candRefVec.size(); i++) {
403  isolationPFCands_.push_back(*candRefVec.at(i));
404  }
406 }
407 
409  if (!isPFTau() ) {//additional check with warning in pat::tau producer
410  return;
411  }
412  reco::PFCandidateRefVector candRefVec = pfSpecific_[0].selectedIsolationPFChargedHadrCands_;
413  for (unsigned int i = 0; i < candRefVec.size(); i++) {
414  isolationPFChargedHadrCands_.push_back(*candRefVec.at(i));
415  }
417 }
419  if (!isPFTau() ) {//additional check with warning in pat::tau producer
420  return;
421  }
422  reco::PFCandidateRefVector candRefVec = pfSpecific_[0].selectedIsolationPFNeutrHadrCands_;
423  for (unsigned int i = 0; i < candRefVec.size(); i++) {
424  isolationPFNeutralHadrCands_.push_back(*candRefVec.at(i));
425  }
427 }
429  if (!isPFTau() ) {//additional check with warning in pat::tau producer
430  return;
431  }
432  reco::PFCandidateRefVector candRefVec = pfSpecific_[0].selectedIsolationPFGammaCands_;
433  for (unsigned int i = 0; i < candRefVec.size(); i++) {
434  isolationPFGammaCands_.push_back(*candRefVec.at(i));
435  }
437 }
438 
442  else
444 }
445 
449  else
451 }
452 
455  return pfSpecific().leadPFCand_;
456  else
458 }
459 
464  for (unsigned int i = 0; i < signalPFCands_.size(); i++) {
466  }
469  }
471  } else
473 }
474 
479  for (unsigned int i = 0; i < signalPFChargedHadrCands_.size(); i++) {
481  }
484  }
486  } else
488 }
489 
494  for (unsigned int i = 0; i < signalPFNeutralHadrCands_.size(); i++) {
496  }
499  }
501  } else
503 }
504 
509  for (unsigned int i = 0; i < signalPFGammaCands_.size(); i++) {
511  }
514  }
516  } else
518 }
519 
520 const std::vector<reco::RecoTauPiZero> & Tau::signalPiZeroCandidates() const {
522 }
523 
528  for (unsigned int i = 0; i < isolationPFCands_.size(); i++) {
530  }
533  }
535  } else
537 }
538 
543  for (unsigned int i = 0; i < isolationPFChargedHadrCands_.size(); i++) {
545  }
548  }
550  } else
552 }
553 
558  for (unsigned int i = 0; i < isolationPFNeutralHadrCands_.size(); i++) {
560  }
563  }
565  } else
567 }
568 
573  for (unsigned int i = 0; i < isolationPFGammaCands_.size(); i++) {
575  }
578  }
580  } else
582 }
583 
584 const std::vector<reco::RecoTauPiZero> & Tau::isolationPiZeroCandidates() const {
586 }
587 
590 
591 // initialize the jet to a given JEC level during creation starting from Uncorrected
592 void Tau::initializeJEC(unsigned int level, unsigned int set)
593 {
594  currentJECSet(set);
595  currentJECLevel(level);
596  setP4(jec_[set].correction(level)*p4());
597 }
598 
600 int Tau::jecSet(const std::string& set) const
601 {
602  for ( std::vector<pat::TauJetCorrFactors>::const_iterator corrFactor = jec_.begin();
603  corrFactor != jec_.end(); ++corrFactor ) {
604  if ( corrFactor->jecSet() == set ) return corrFactor-jec_.begin();
605  }
606  return -1;
607 }
608 
610 const std::vector<std::string> Tau::availableJECSets() const
611 {
612  std::vector<std::string> sets;
613  for ( std::vector<pat::TauJetCorrFactors>::const_iterator corrFactor = jec_.begin();
614  corrFactor != jec_.end(); ++corrFactor ) {
615  sets.push_back(corrFactor->jecSet());
616  }
617  return sets;
618 }
619 
620 const std::vector<std::string> Tau::availableJECLevels(const int& set) const
621 {
622  return set>=0 ? jec_.at(set).correctionLabels() : std::vector<std::string>();
623 }
624 
627 float Tau::jecFactor(const std::string& level, const std::string& set) const
628 {
629  for ( unsigned int idx = 0; idx < jec_.size(); ++idx ) {
630  if ( set.empty() || jec_.at(idx).jecSet() == set ){
631  if ( jec_[idx].jecLevel(level) >= 0 )
632  return jecFactor(jec_[idx].jecLevel(level), idx);
633  else
634  throw cms::Exception("InvalidRequest")
635  << "This JEC level " << level << " does not exist. \n";
636  }
637  }
638  throw cms::Exception("InvalidRequest")
639  << "This jet does not carry any jet energy correction factor information \n"
640  << "for a jet energy correction set with label " << set << "\n";
641 }
642 
645 float Tau::jecFactor(const unsigned int& level, const unsigned int& set) const
646 {
647  if ( !jecSetsAvailable() )
648  throw cms::Exception("InvalidRequest")
649  << "This jet does not carry any jet energy correction factor information \n";
650  if ( !jecSetAvailable(set) )
651  throw cms::Exception("InvalidRequest")
652  << "This jet does not carry any jet energy correction factor information \n"
653  << "for a jet energy correction set with index " << set << "\n";
654  return jec_.at(set).correction(level)/jec_.at(currentJECSet_).correction(currentJECLevel_);
655 }
656 
659 Tau Tau::correctedTauJet(const std::string& level, const std::string& set) const
660 {
661  // rescale p4 of the jet; the update of current values is
662  // done within the called jecFactor function
663  for ( unsigned int idx = 0; idx < jec_.size(); ++idx ) {
664  if ( set.empty() || jec_.at(idx).jecSet() == set ) {
665  if ( jec_[idx].jecLevel(level) >= 0 )
666  return correctedTauJet(jec_[idx].jecLevel(level), idx);
667  else
668  throw cms::Exception("InvalidRequest")
669  << "This JEC level " << level << " does not exist. \n";
670  }
671  }
672  throw cms::Exception("InvalidRequest")
673  << "This JEC set " << set << " does not exist. \n";
674 }
675 
678 Tau Tau::correctedTauJet(const unsigned int& level, const unsigned int& set) const
679 {
680  Tau correctedTauJet(*this);
681  //rescale p4 of the jet
682  correctedTauJet.setP4(jecFactor(level, set)*p4());
683  // update current level and set
684  correctedTauJet.currentJECSet(set);
685  correctedTauJet.currentJECLevel(level);
686  return correctedTauJet;
687 }
688 
const std::vector< reco::RecoTauPiZero > & signalPiZeroCandidates() const
Definition: Tau.cc:520
bool embeddedLeadPFNeutralCand_
Definition: Tau.h:356
virtual reco::TrackRef leadTrack() const
Definition: BaseTau.cc:26
const reco::PFCandidateRef leadPFChargedHadrCand() const
Definition: Tau.cc:439
int i
Definition: DBlmapReader.cc:9
reco::Candidate::LorentzVector p4Jet_
Definition: TauPFSpecific.h:60
reco::PFCandidateRefVector signalPFCandsTransientRefVector_
Definition: Tau.h:360
reco::PFCandidateRefVector selectedIsolationPFChargedHadrCands_
Definition: TauPFSpecific.h:38
bool embeddedSignalPFChargedHadrCands_
Definition: Tau.h:363
std::vector< reco::PFCandidate > leadPFNeutralCand_
Definition: Tau.h:355
reco::PFCandidateRefVector selectedIsolationPFGammaCands_
Definition: TauPFSpecific.h:40
const reco::PFCandidateRefVector & isolationPFCands() const
Definition: Tau.cc:524
reco::PFCandidateRefVector signalPFGammaCandsTransientRefVector_
Definition: Tau.h:372
virtual const reco::TrackRefVector & isolationTracks() const
Definition: BaseTau.cc:30
std::vector< reco::PFCandidate > signalPFNeutralHadrCands_
Definition: Tau.h:366
const pat::tau::TauCaloSpecific & caloSpecific() const
return CaloTau info or throw exception &#39;not CaloTau&#39;
Definition: Tau.cc:283
std::vector< reco::PFCandidate > signalPFCands_
Definition: Tau.h:358
bool embeddedIsolationPFChargedHadrCands_
Definition: Tau.h:379
bool jecSetAvailable(const std::string &set) const
Definition: Tau.h:290
reco::TrackRefVector signalTracksTransientRefVector_
Definition: Tau.h:348
bool embeddedIsolationPFCands_
Definition: Tau.h:375
reco::PFCandidateRefVector selectedSignalPFCands_
Definition: TauPFSpecific.h:32
reco::PFCandidateRefVector signalPFChargedHadrCandsTransientRefVector_
Definition: Tau.h:364
reco::PFCandidateRefVector isolationPFCandsTransientRefVector_
Definition: Tau.h:376
const reco::PFCandidateRefVector & signalPFChargedHadrCands() const
Definition: Tau.cc:475
void embedLeadPFChargedHadrCand()
method to store the leading charged hadron candidate internally
Definition: Tau.cc:334
bool signalPFCandsRefVectorFixed_
Definition: Tau.h:361
const reco::PFCandidateRefVector & signalPFNeutrHadrCands() const
Definition: Tau.cc:490
bool signalPFNeutralHadrCandsRefVectorFixed_
Definition: Tau.h:369
std::vector< reco::PFCandidate > isolationPFGammaCands_
Definition: Tau.h:386
reco::PFCandidateRef leadPFChargedHadrCand_
Definition: TauPFSpecific.h:28
std::vector< reco::PFCandidate > isolationPFNeutralHadrCands_
Definition: Tau.h:382
virtual void setP4(const LorentzVector &p4)
set 4-momentum
void embedSignalPFGammaCands()
method to store the signal gamma candidates internally
Definition: Tau.cc:386
std::vector< reco::GenJet > genJet_
Definition: Tau.h:392
void embedIsolationPFCands()
method to store the isolation candidates internally
Definition: Tau.cc:397
void embedIsolationPFGammaCands()
method to store the isolation gamma candidates internally
Definition: Tau.cc:428
const reco::GenJet * genJet() const
return matched GenJet, built from the visible particles of a generated tau
Definition: Tau.cc:250
const reco::Candidate::LorentzVector & p4Jet() const
Definition: Tau.cc:288
const std::vector< std::string > availableJECSets() const
all available label-names of all sets of jet energy corrections
Definition: Tau.cc:610
reco::TrackRef leadTrack() const
override the reco::BaseTau::leadTrack method, to access the internal storage of the leading track ...
Definition: Tau.cc:184
bool embeddedIsolationPFNeutralHadrCands_
Definition: Tau.h:383
void embedSignalTracks()
method to store the signal tracks internally
Definition: Tau.cc:233
bool embeddedLeadTrack_
Definition: Tau.h:344
const pat::tau::TauPFSpecific & pfSpecific() const
return PFTau info or throw exception &#39;not PFTau&#39;
Definition: Tau.cc:278
float phiphiMoment() const
Definition: Tau.cc:302
std::vector< reco::PFCandidate > leadPFCand_
Definition: Tau.h:351
virtual double eta() const
momentum pseudorapidity
bool embeddedSignalPFGammaCands_
Definition: Tau.h:371
float etaetaMoment() const
Definition: Tau.cc:295
int jecSet(const std::string &label) const
return true if this jet carries the jet correction factors of a different set, for systematic studies...
Definition: Tau.cc:600
void initializeJEC(unsigned int level, const unsigned int set=0)
initialize the jet to a given JEC level during creation starting from Uncorrected ...
Definition: Tau.cc:592
const reco::PFCandidateRefVector & signalPFCands() const
Definition: Tau.cc:460
Tau correctedTauJet(const std::string &level, const std::string &set="") const
Definition: Tau.cc:659
reco::PFCandidateRefVector isolationPFNeutralHadrCandsTransientRefVector_
Definition: Tau.h:384
unsigned int currentJECLevel_
Definition: Tau.h:414
void embedSignalPFChargedHadrCands()
method to store the signal charged hadrons candidates internally
Definition: Tau.cc:366
reco::PFCandidateRefVector selectedSignalPFNeutrHadrCands_
Definition: TauPFSpecific.h:34
virtual double energy() const
energy
void embedSignalPFCands()
method to store the signal candidates internally
Definition: Tau.cc:356
std::vector< reco::RecoTauPiZero > isolationPiZeroCandidates_
Definition: TauPFSpecific.h:41
std::ostream & operator<<(std::ostream &, BeamSpot beam)
Definition: BeamSpot.cc:72
std::vector< reco::Track > signalTracks_
Definition: Tau.h:347
std::vector< IdPair > tauIDs_
Definition: Tau.h:395
void swap(RefVector< C, T, F > &other) noexcept
Swap two vectors.
Definition: RefVector.h:162
reco::PFCandidateRefVector selectedIsolationPFNeutrHadrCands_
Definition: TauPFSpecific.h:39
T const * get() const
Returns C++ pointer to the item.
Definition: Ptr.h:143
std::vector< reco::RecoTauPiZero > signalPiZeroCandidates_
Definition: TauPFSpecific.h:36
reco::PFCandidateRefVector isolationPFGammaCandsTransientRefVector_
Definition: Tau.h:388
bool embeddedIsolationPFGammaCands_
Definition: Tau.h:387
std::vector< reco::PFCandidate > signalPFChargedHadrCands_
Definition: Tau.h:362
Tau()
default constructor
Definition: Tau.cc:13
const reco::PFCandidateRefVector & isolationPFNeutrHadrCands() const
Definition: Tau.cc:554
bool signalPFChargedHadrCandsRefVectorFixed_
Definition: Tau.h:365
void embedLeadTrack()
method to store the leading track internally
Definition: Tau.cc:223
Analysis-level lepton class.
Definition: Lepton.h:32
const std::vector< reco::RecoTauPiZero > & isolationPiZeroCandidates() const
Definition: Tau.cc:584
bool isolationTracksTransientRefVectorFixed_
Definition: Tau.h:343
Jets made from MC generator particles.
Definition: GenJet.h:25
bool embeddedSignalTracks_
Definition: Tau.h:346
reco::PFCandidateRefVector isolationPFChargedHadrCandsTransientRefVector_
Definition: Tau.h:380
const reco::PFCandidateRefVector & isolationPFChargedHadrCands() const
Definition: Tau.cc:539
bool embeddedLeadPFCand_
Definition: Tau.h:352
bool isolationPFGammaCandsRefVectorFixed_
Definition: Tau.h:389
virtual const reco::TrackRefVector & signalTracks() const
Definition: BaseTau.cc:28
edm::Ref< PFCandidateCollection > PFCandidateRef
persistent reference to a PFCandidate
std::string currentJECLevel() const
return the name of the current step of jet energy corrections
Definition: Tau.h:299
Analysis-level tau class.
Definition: Tau.h:50
bool embeddedLeadPFChargedHadrCand_
Definition: Tau.h:354
void embedIsolationPFNeutralHadrCands()
method to store the isolation neutral hadrons candidates internally
Definition: Tau.cc:418
bool embeddedSignalPFNeutralHadrCands_
Definition: Tau.h:367
std::vector< reco::PFCandidate > isolationPFCands_
Definition: Tau.h:374
std::vector< reco::Track > isolationTracks_
Definition: Tau.h:341
bool isTauIDAvailable(const std::string &name) const
Returns true if a specific ID is available in this pat::Tau.
Definition: Tau.cc:270
tuple out
Definition: dbtoconf.py:99
void embedLeadPFNeutralCand()
method to store the leading neutral candidate internally
Definition: Tau.cc:345
std::vector< pat::tau::TauCaloSpecific > caloSpecific_
holder for CaloTau info, or empty vector if PFTau
Definition: Tau.h:399
reco::PFCandidateRefVector signalPFNeutralHadrCandsTransientRefVector_
Definition: Tau.h:368
bool isCaloTau() const
Returns true if this pat::Tau was made from a reco::CaloTau.
Definition: Tau.h:119
int decayMode() const
reconstructed tau decay mode (specific to PFTau)
Definition: Tau.h:254
virtual double pt() const
transverse momentum
std::vector< pat::TauJetCorrFactors > jec_
Definition: Tau.h:409
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
Definition: TrackFwd.h:14
std::vector< reco::PFCandidate > signalPFGammaCands_
Definition: Tau.h:370
const reco::PFCandidateRefVector & signalPFGammaCands() const
Definition: Tau.cc:505
void embedSignalPFNeutralHadrCands()
method to store the signal neutral hadrons candidates internally
Definition: Tau.cc:376
std::vector< reco::Track > leadTrack_
Definition: Tau.h:345
std::vector< reco::PFCandidate > isolationPFChargedHadrCands_
Definition: Tau.h:378
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:38
const reco::PFCandidateRef leadPFNeutralCand() const
Definition: Tau.cc:446
float jecFactor(const std::string &level, const std::string &set="") const
Definition: Tau.cc:627
bool isolationPFChargedHadrCandsRefVectorFixed_
Definition: Tau.h:381
bool jecSetsAvailable() const
Definition: Tau.h:287
void setDecayMode(int)
set decay mode
Definition: Tau.cc:316
float etaphiMoment() const
Definition: Tau.cc:309
bool isolationPFCandsRefVectorFixed_
Definition: Tau.h:377
const reco::PFCandidateRef leadPFCand() const
Definition: Tau.cc:453
reco::PFCandidateRefVector selectedSignalPFChargedHadrCands_
Definition: TauPFSpecific.h:33
void embedIsolationPFChargedHadrCands()
method to store the isolation charged hadrons candidates internally
Definition: Tau.cc:408
value_type const at(size_type idx) const
Retrieve an element of the RefVector.
Definition: RefVector.h:76
bool embeddedSignalPFCands_
Definition: Tau.h:359
bool isolationPFNeutralHadrCandsRefVectorFixed_
Definition: Tau.h:385
const std::vector< std::string > availableJECLevels(const int &set=0) const
Definition: Tau.cc:620
const reco::PFCandidateRefVector & isolationPFGammaCands() const
Definition: Tau.cc:569
void push_back(value_type const &ref)
Add a Ref&lt;C, T&gt; to the RefVector.
Definition: RefVector.h:64
size_type size() const
Size of the RefVector.
Definition: RefVector.h:89
bool isPFTau() const
Returns true if this pat::Tau was made from a reco::PFTau.
Definition: Tau.h:152
float tauID(const std::string &name) const
Definition: Tau.cc:256
void setGenJet(const reco::GenJetRef &ref)
set the matched GenJet
Definition: Tau.cc:244
bool embeddedIsolationTracks_
Definition: Tau.h:340
tuple level
Definition: testEve_cfg.py:34
void embedIsolationTracks()
method to store the isolation tracks internally
Definition: Tau.cc:212
reco::PFCandidateRef leadPFNeutralCand_
Definition: TauPFSpecific.h:30
reco::TrackRefVector isolationTracksTransientRefVector_
Definition: Tau.h:342
const reco::TrackRefVector & signalTracks() const
override the reco::BaseTau::signalTracks method, to access the internal storage of the signal tracks ...
Definition: Tau.cc:194
std::vector< reco::PFCandidate > leadPFChargedHadrCand_
Definition: Tau.h:353
std::string currentJECSet() const
returns the label of the current set of jet energy corrections
Definition: Tau.h:295
reco::PFCandidateRefVector selectedSignalPFGammaCands_
Definition: TauPFSpecific.h:35
bool signalPFGammaCandsRefVectorFixed_
Definition: Tau.h:373
virtual ~Tau()
destructor
Definition: Tau.cc:145
virtual double phi() const
momentum azimuthal angle
virtual const LorentzVector & p4() const
four-momentum Lorentz vector
void embedLeadPFCand()
method to store the leading candidate internally
Definition: Tau.cc:323
value_type const * get() const
Definition: RefToBase.h:212
reco::PFCandidateRefVector selectedIsolationPFCands_
Definition: TauPFSpecific.h:37
std::vector< pat::tau::TauPFSpecific > pfSpecific_
holder for PFTau info, or empty vector if CaloTau
Definition: Tau.h:403
bool signalTracksTransientRefVectorFixed_
Definition: Tau.h:349
const reco::TrackRefVector & isolationTracks() const
override the reco::BaseTau::isolationTracks method, to access the internal storage of the isolation t...
Definition: Tau.cc:166
reco::Candidate::LorentzVector p4Jet_
reco::PFCandidateRef leadPFCand_
Definition: TauPFSpecific.h:31
unsigned int currentJECSet_
Definition: Tau.h:412
void set(const std::string &name, int value)
set the flag, with a run-time name