CMS 3D CMS Logo

PFTau.cc
Go to the documentation of this file.
1 #include <memory>
2 
5 
6 //using namespace std;
7 namespace reco {
8 
14  emFraction_ = NAN;
15  hcalTotOverPLead_ = NAN;
16  hcalMaxOverPLead_ = NAN;
17  hcal3x3OverPLead_ = NAN;
22  caloComp_ = NAN;
23  segComp_ = NAN;
24  muonDecision_ = NAN;
25  decayMode_ = kNull;
26  bendCorrMass_ = 0.;
27  signalConeSize_ = 0.;
28  }
29 
30  PFTau::PFTau(Charge q, const LorentzVector& p4, const Point& vtx) : BaseTau(q, p4, vtx) {
35 
36  emFraction_ = NAN;
37  hcalTotOverPLead_ = NAN;
38  hcalMaxOverPLead_ = NAN;
39  hcal3x3OverPLead_ = NAN;
44 
45  caloComp_ = NAN;
46  segComp_ = NAN;
47  muonDecision_ = NAN;
48  decayMode_ = kNull;
49  bendCorrMass_ = 0.;
50  signalConeSize_ = 0.;
51  }
52 
53  PFTau* PFTau::clone() const { return new PFTau(*this); }
54 
55  // Constituent getters and setters
56  const JetBaseRef& PFTau::jetRef() const { return jetRef_; }
57  void PFTau::setjetRef(const JetBaseRef& x) { jetRef_ = x; }
58 
60 
62 
65  const CandidatePtr& PFTau::leadCand() const { return leadCand_; }
66 
68  void PFTau::setleadNeutralCand(const CandidatePtr& myLead) { leadNeutralCand_ = myLead; }
69  void PFTau::setleadCand(const CandidatePtr& myLead) { leadCand_ = myLead; }
70 
73 
74  const std::vector<CandidatePtr>& PFTau::signalCands() const { return selectedSignalCands_; }
75  void PFTau::setsignalCands(const std::vector<CandidatePtr>& myParts) { selectedSignalCands_ = myParts; }
76  const std::vector<CandidatePtr>& PFTau::signalChargedHadrCands() const { return selectedSignalChargedHadrCands_; }
77  void PFTau::setsignalChargedHadrCands(const std::vector<CandidatePtr>& myParts) {
79  }
80  const std::vector<CandidatePtr>& PFTau::signalNeutrHadrCands() const { return selectedSignalNeutrHadrCands_; }
81  void PFTau::setsignalNeutrHadrCands(const std::vector<CandidatePtr>& myParts) {
83  }
84  const std::vector<CandidatePtr>& PFTau::signalGammaCands() const { return selectedSignalGammaCands_; }
85  void PFTau::setsignalGammaCands(const std::vector<CandidatePtr>& myParts) { selectedSignalGammaCands_ = myParts; }
86 
87  const std::vector<CandidatePtr>& PFTau::isolationCands() const { return selectedIsolationCands_; }
88  void PFTau::setisolationCands(const std::vector<CandidatePtr>& myParts) { selectedIsolationCands_ = myParts; }
89  const std::vector<CandidatePtr>& PFTau::isolationChargedHadrCands() const {
91  }
92  void PFTau::setisolationChargedHadrCands(const std::vector<CandidatePtr>& myParts) {
94  }
95  const std::vector<CandidatePtr>& PFTau::isolationNeutrHadrCands() const { return selectedIsolationNeutrHadrCands_; }
96  void PFTau::setisolationNeutrHadrCands(const std::vector<CandidatePtr>& myParts) {
98  }
99  const std::vector<CandidatePtr>& PFTau::isolationGammaCands() const { return selectedIsolationGammaCands_; }
100  void PFTau::setisolationGammaCands(const std::vector<CandidatePtr>& myParts) {
102  }
103 
104  namespace {
105  template <typename T, typename U>
106  void setCache(const T& iFrom, const edm::AtomicPtrCache<U>& oCache) {
107  if (not oCache.isSet()) {
108  // Fill them from the refs
109  auto temp = std::make_unique<U>();
110  temp->reserve(iFrom.size());
111  for (auto const& ref : iFrom) {
112  temp->push_back(*ref);
113  }
114  oCache.set(std::move(temp));
115  }
116  }
117 
118  template <typename T>
119  T& makeCacheIfNeeded(edm::AtomicPtrCache<T>& oCache) {
120  if (not oCache.isSet()) {
121  oCache.set(std::move(std::make_unique<T>()));
122  }
123  return *oCache;
124  }
125 
126  template <typename T>
127  void copyToCache(T&& iFrom, edm::AtomicPtrCache<T>& oCache) {
128  oCache.reset();
129  oCache.set(std::make_unique<T>(std::move(iFrom)));
130  }
131 
132  std::unique_ptr<reco::PFCandidatePtr> convertToPFPtr(const reco::CandidatePtr& ptr) {
133  if (ptr.isNonnull()) {
134  const reco::PFCandidate* pf_cand = dynamic_cast<const reco::PFCandidate*>(&*ptr);
135  if (pf_cand != nullptr) {
136  return std::make_unique<reco::PFCandidatePtr>(ptr);
137  } else
138  throw cms::Exception("Type Mismatch")
139  << "This PFTau was not made from PFCandidates, but it is being tried to access a PFCandidate.\n";
140  }
141  return std::make_unique<reco::PFCandidatePtr>();
142  }
143 
144  std::unique_ptr<std::vector<reco::PFCandidatePtr> > convertToPFPtrs(const std::vector<reco::CandidatePtr>& cands) {
145  std::unique_ptr<std::vector<reco::PFCandidatePtr> > newSignalPFCands{new std::vector<reco::PFCandidatePtr>{}};
146  bool isPF = false;
147  for (auto& cand : cands) {
148  // Check for first Candidate if it is a PFCandidate; if yes, skip for the rest
149  if (!isPF) {
150  const reco::PFCandidate* pf_cand = dynamic_cast<const reco::PFCandidate*>(&*cand);
151  if (pf_cand != nullptr) {
152  isPF = true;
153  newSignalPFCands->reserve(cands.size());
154  } else
155  throw cms::Exception("Type Mismatch")
156  << "This PFTau was not made from PFCandidates, but it is being tried to access PFCandidates.\n";
157  }
158  const auto& newPtr = edm::Ptr<reco::PFCandidate>(cand);
159  newSignalPFCands->push_back(newPtr);
160  }
161  return newSignalPFCands;
162  }
163  } // namespace
164 
166  if (!leadPFChargedHadrCand_.isSet())
167  leadPFChargedHadrCand_.set(convertToPFPtr(leadChargedHadrCand_));
168  return *leadPFChargedHadrCand_;
169  }
170 
172  if (!leadPFNeutralCand_.isSet())
173  leadPFNeutralCand_.set(convertToPFPtr(leadNeutralCand_));
174  return *leadPFNeutralCand_;
175  }
176 
178  if (!leadPFCand_.isSet())
179  leadPFCand_.set(convertToPFPtr(leadCand_));
180  return *leadPFCand_;
181  }
182 
183  const std::vector<reco::PFCandidatePtr>& PFTau::signalPFCands() const {
184  if (!selectedTransientSignalPFCands_.isSet()) {
186  }
188  }
189 
190  const std::vector<reco::PFCandidatePtr>& PFTau::signalPFChargedHadrCands() const {
193  }
195  }
196 
197  const std::vector<reco::PFCandidatePtr>& PFTau::signalPFNeutrHadrCands() const {
200  }
202  }
203 
204  const std::vector<reco::PFCandidatePtr>& PFTau::signalPFGammaCands() const {
207  }
209  }
210 
211  const std::vector<reco::PFCandidatePtr>& PFTau::isolationPFCands() const {
212  if (!selectedTransientIsolationPFCands_.isSet()) {
214  }
216  }
217 
218  const std::vector<reco::PFCandidatePtr>& PFTau::isolationPFChargedHadrCands() const {
221  }
223  }
224 
225  const std::vector<reco::PFCandidatePtr>& PFTau::isolationPFNeutrHadrCands() const {
228  }
230  }
231 
232  const std::vector<reco::PFCandidatePtr>& PFTau::isolationPFGammaCands() const {
235  }
237  }
238 
239  // PiZero and decay mode information
240  const std::vector<RecoTauPiZero>& PFTau::signalPiZeroCandidates() const {
241  // Check if the signal pi zeros are already filled
243  return *signalPiZeroCandidates_;
244  }
245 
246  std::vector<RecoTauPiZero>& PFTau::signalPiZeroCandidatesRestricted() {
247  // Check if the signal pi zeros are already filled
248  return makeCacheIfNeeded(signalPiZeroCandidates_);
249  }
250 
251  void PFTau::setsignalPiZeroCandidates(std::vector<RecoTauPiZero> cands) {
252  copyToCache(std::move(cands), signalPiZeroCandidates_);
253  }
254 
257  }
258 
259  const std::vector<RecoTauPiZero>& PFTau::isolationPiZeroCandidates() const {
260  // Check if the signal pi zeros are already filled
263  }
264 
265  std::vector<RecoTauPiZero>& PFTau::isolationPiZeroCandidatesRestricted() {
266  // Check if the signal pi zeros are already filled
267  return makeCacheIfNeeded(isolationPiZeroCandidates_);
268  }
269 
272  }
273 
274  void PFTau::setisolationPiZeroCandidates(std::vector<RecoTauPiZero> cands) {
275  copyToCache(std::move(cands), signalPiZeroCandidates_);
276  }
277 
278  // Tau Charged Hadron information
282  } else {
283  return PFRecoTauChargedHadronRef();
284  }
285  }
286 
287  const std::vector<PFRecoTauChargedHadron>& PFTau::signalTauChargedHadronCandidates() const {
288  // Check if the signal tau charged hadrons are already filled
291  }
292 
293  std::vector<PFRecoTauChargedHadron>& PFTau::signalTauChargedHadronCandidatesRestricted() {
294  // Check if the signal tau charged hadrons are already filled
295  return makeCacheIfNeeded(signalTauChargedHadronCandidates_);
296  }
297 
298  void PFTau::setSignalTauChargedHadronCandidates(std::vector<PFRecoTauChargedHadron> cands) {
300  }
301 
304  }
305 
306  const std::vector<PFRecoTauChargedHadron>& PFTau::isolationTauChargedHadronCandidates() const {
307  // Check if the isolation tau charged hadrons are already filled
310  }
311 
312  std::vector<PFRecoTauChargedHadron>& PFTau::isolationTauChargedHadronCandidatesRestricted() {
313  // Check if the isolation tau charged hadrons are already filled
314  return makeCacheIfNeeded(isolationTauChargedHadronCandidates_);
315  }
316 
317  void PFTau::setIsolationTauChargedHadronCandidates(std::vector<PFRecoTauChargedHadron> cands) {
319  }
320 
323  }
324 
326 
328 
329  // Setting information about the isolation region
332 
335 
338 
339  // Electron variables
340  float PFTau::emFraction() const { return emFraction_; }
341  float PFTau::hcalTotOverPLead() const { return hcalTotOverPLead_; }
342  float PFTau::hcalMaxOverPLead() const { return hcalMaxOverPLead_; }
343  float PFTau::hcal3x3OverPLead() const { return hcal3x3OverPLead_; }
349 
350  void PFTau::setemFraction(const float& x) { emFraction_ = x; }
351  void PFTau::sethcalTotOverPLead(const float& x) { hcalTotOverPLead_ = x; }
352  void PFTau::sethcalMaxOverPLead(const float& x) { hcalMaxOverPLead_ = x; }
353  void PFTau::sethcal3x3OverPLead(const float& x) { hcal3x3OverPLead_ = x; }
359 
360  // Muon variables
361  bool PFTau::hasMuonReference() const { // check if muon ref exists
363  return false;
364  else if (leadChargedHadrCand_.isNonnull()) {
365  const reco::PFCandidate* pf_cand = dynamic_cast<const reco::PFCandidate*>(&*leadChargedHadrCand_);
366  if (pf_cand) {
367  reco::MuonRef muonRef = pf_cand->muonRef();
368  if (muonRef.isNull())
369  return false;
370  else if (muonRef.isNonnull())
371  return true;
372  }
373  }
374  return false;
375  }
376 
377  float PFTau::caloComp() const { return caloComp_; }
378  float PFTau::segComp() const { return segComp_; }
379  bool PFTau::muonDecision() const { return muonDecision_; }
380  void PFTau::setCaloComp(const float& x) { caloComp_ = x; }
381  void PFTau::setSegComp(const float& x) { segComp_ = x; }
382  void PFTau::setMuonDecision(const bool& x) { muonDecision_ = x; }
383 
385  if (i != 0)
386  return CandidatePtr();
387  return jetRef().castTo<CandidatePtr>();
388  }
389 
390  bool PFTau::overlap(const Candidate& theCand) const {
391  const RecoCandidate* theRecoCand = dynamic_cast<const RecoCandidate*>(&theCand);
392  return (theRecoCand != nullptr && (checkOverlap(track(), theRecoCand->track())));
393  }
394 
395  void PFTau::dump(std::ostream& out) const {
396  if (!out)
397  return;
398 
399  if (pfTauTagInfoRef().isNonnull()) {
400  out << "Its TauTagInfo constituents :" << std::endl;
401  out << "# Tracks " << pfTauTagInfoRef()->Tracks().size() << std::endl;
402  out << "# PF charged hadr. cand's " << pfTauTagInfoRef()->PFChargedHadrCands().size() << std::endl;
403  out << "# PF neutral hadr. cand's " << pfTauTagInfoRef()->PFNeutrHadrCands().size() << std::endl;
404  out << "# PF gamma cand's " << pfTauTagInfoRef()->PFGammaCands().size() << std::endl;
405  }
406  out << "in detail :" << std::endl;
407 
408  out << "Pt of the PFTau " << pt() << std::endl;
409  const CandidatePtr& theLeadCand = leadChargedHadrCand();
410  if (!theLeadCand) {
411  out << "No Lead Cand " << std::endl;
412  } else {
413  out << "Lead Cand PDG Id " << (*theLeadCand).pdgId() << std::endl;
414  out << "Lead Cand Pt " << (*theLeadCand).pt() << std::endl;
415  out << "Lead Cand Charge " << (*theLeadCand).charge() << std::endl;
416  out << "Inner point position (x,y,z) of the PFTau (" << vx() << "," << vy() << "," << vz() << ")" << std::endl;
417  out << "Charge of the PFTau " << charge() << std::endl;
418  out << "Et of the highest Et HCAL PFCluster " << maximumHCALPFClusterEt() << std::endl;
419  out << "Number of SignalChargedHadrCands = " << signalChargedHadrCands().size() << std::endl;
420  out << "Number of SignalGammaCands = " << signalGammaCands().size() << std::endl;
421  out << "Number of IsolationChargedHadrCands = " << isolationChargedHadrCands().size() << std::endl;
422  out << "Number of IsolationGammaCands = " << isolationGammaCands().size() << std::endl;
423  out << "Sum of Pt of charged hadr. PFCandidates in isolation annulus around Lead PF = "
424  << isolationPFChargedHadrCandsPtSum() << std::endl;
425  out << "Sum of Et of gamma PFCandidates in other isolation annulus around Lead PF = "
426  << isolationPFGammaCandsEtSum() << std::endl;
427  }
428  // return out;
429  }
430 
431  std::ostream& operator<<(std::ostream& out, const reco::PFTau& tau) {
432  if (!out)
433  return out;
434 
435  out << std::setprecision(3) << "PFTau "
436  << " charge: " << tau.charge() << " "
437  << " pt:" << tau.pt() << " "
438  << " eta:" << tau.eta() << " "
439  << " phi:" << tau.phi() << " "
440  << " mass:" << tau.mass() << " "
441  << " dm: " << tau.decayMode() << " " << tau.signalCands().size() << "," << tau.signalChargedHadrCands().size()
442  << "," << tau.signalGammaCands().size() << "," << tau.signalPiZeroCandidates().size() << ","
443  << tau.signalNeutrHadrCands().size() << " "
444 
445  << tau.isolationCands().size() << "," << tau.isolationChargedHadrCands().size() << ","
446  << tau.isolationGammaCands().size() << "," << tau.isolationPiZeroCandidates().size() << ","
447  << tau.isolationNeutrHadrCands().size();
448 
449  return out;
450  }
451 
452 } // namespace reco
float ecalStripSumEOverPLead_
Definition: PFTau.h:249
float segComp() const
Definition: PFTau.cc:378
void setisolationPiZeroCandidates(std::vector< RecoTauPiZero >)
Definition: PFTau.cc:274
int Charge
electric charge type
Definition: Candidate.h:34
void setsignalChargedHadrCands(const std::vector< reco::CandidatePtr > &)
Definition: PFTau.cc:77
float hcal3x3OverPLead() const
Definition: PFTau.cc:343
bool empty() const
Is the RefVector empty.
Definition: RefVector.h:99
const std::vector< reco::CandidatePtr > & signalNeutrHadrCands() const
Neutral hadrons in signal region.
Definition: PFTau.cc:80
void setSignalTauChargedHadronCandidatesRefs(PFRecoTauChargedHadronRefVector)
Definition: PFTau.cc:302
RecoTauPiZeroRefVector signalPiZeroCandidatesRefs_
Definition: PFTau.h:297
void setMuonDecision(const bool &)
Definition: PFTau.cc:382
void setsignalNeutrHadrCands(const std::vector< reco::CandidatePtr > &)
Definition: PFTau.cc:81
float hcalMaxOverPLead() const
Definition: PFTau.cc:342
const std::vector< reco::PFCandidatePtr > & signalPFNeutrHadrCands() const
Definition: PFTau.cc:197
void setelectronPreIDOutput(const float &)
Definition: PFTau.cc:357
float ecalStripSumEOverPLead() const
Definition: PFTau.cc:344
edm::AtomicPtrCache< std::vector< reco::PFCandidatePtr > > selectedTransientSignalPFCands_
Definition: PFTau.h:287
void setisolationNeutrHadrCands(const std::vector< reco::CandidatePtr > &)
Definition: PFTau.cc:96
const std::vector< reco::PFCandidatePtr > & isolationPFChargedHadrCands() const
Definition: PFTau.cc:218
double pt() const final
transverse momentum
const std::vector< reco::PFCandidatePtr > & isolationPFNeutrHadrCands() const
Definition: PFTau.cc:225
bool set(std::unique_ptr< T > iNewValue) const
void setelectronPreIDDecision(const bool &)
Definition: PFTau.cc:358
size_t size_type
Definition: Candidate.h:29
double vz() const override
z coordinate of vertex position
REF castTo() const
Definition: RefToBase.h:257
reco::CandidatePtr leadCand_
Definition: PFTau.h:267
const std::vector< RecoTauPiZero > & signalPiZeroCandidates() const
Retrieve the association of signal region gamma candidates into candidate PiZeros.
Definition: PFTau.cc:240
edm::AtomicPtrCache< std::vector< reco::RecoTauPiZero > > signalPiZeroCandidates_
Definition: PFTau.h:304
bool electronPreIDDecision_
Definition: PFTau.h:235
const std::vector< PFRecoTauChargedHadron > & isolationTauChargedHadronCandidates() const
Retrieve the association of isolation region PF candidates into candidate PFRecoTauChargedHadron.
Definition: PFTau.cc:306
const CandidatePtr & leadChargedHadrCand() const
Definition: PFTau.cc:63
float maximumHCALPFClusterEt_
Definition: PFTau.h:242
void setIsolationTauChargedHadronCandidates(std::vector< PFRecoTauChargedHadron >)
Definition: PFTau.cc:317
reco::CandidatePtr leadChargedHadrCand_
Definition: PFTau.h:265
reco::JetBaseRef jetRef_
Definition: PFTau.h:263
const CandidatePtr & leadNeutralCand() const
Definition: PFTau.cc:64
const std::vector< reco::CandidatePtr > & signalCands() const
Candidates in signal region.
Definition: PFTau.cc:74
double vy() const override
y coordinate of vertex position
float isolationPFChargedHadrCandsPtSum_
Definition: PFTau.h:240
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
bool electronPreIDDecision() const
Definition: PFTau.cc:348
float hcalTotOverPLead() const
Definition: PFTau.cc:341
float isolationPFGammaCandsEtSum() const
Definition: PFTau.cc:333
void setsignalPiZeroCandidates(std::vector< RecoTauPiZero >)
Definition: PFTau.cc:251
void sethcal3x3OverPLead(const float &)
Definition: PFTau.cc:353
void setleadCand(const CandidatePtr &)
Definition: PFTau.cc:69
edm::AtomicPtrCache< std::vector< reco::PFCandidatePtr > > selectedTransientIsolationPFNeutrHadrCands_
Definition: PFTau.h:294
void setisolationPFGammaCandsEtSum(const float &)
Definition: PFTau.cc:334
void reset()
unsets the value and deletes the memory
reco::CandidatePtr leadNeutralCand_
Definition: PFTau.h:266
edm::AtomicPtrCache< std::vector< reco::RecoTauPiZero > > isolationPiZeroCandidates_
Definition: PFTau.h:305
void setemFraction(const float &)
Definition: PFTau.cc:350
PFRecoTauChargedHadronRefVector isolationTauChargedHadronCandidatesRefs_
Definition: PFTau.h:301
void setisolationChargedHadrCands(const std::vector< reco::CandidatePtr > &)
Definition: PFTau.cc:92
edm::AtomicPtrCache< reco::PFCandidatePtr > leadPFCand_
Definition: PFTau.h:285
std::vector< RecoTauPiZero > & signalPiZeroCandidatesRestricted()
Definition: PFTau.cc:246
void setleadChargedHadrCand(const CandidatePtr &)
Definition: PFTau.cc:67
void setleadNeutralCand(const CandidatePtr &)
Definition: PFTau.cc:68
float segComp_
Definition: PFTau.h:255
float electronPreIDOutput() const
Definition: PFTau.cc:347
const std::vector< reco::PFCandidatePtr > & isolationPFGammaCands() const
Definition: PFTau.cc:232
const std::vector< reco::CandidatePtr > & isolationNeutrHadrCands() const
Definition: PFTau.cc:95
bool isNull() const
Checks for null.
Definition: Ptr.h:142
reco::TrackRef electronPreIDTrack() const
Definition: PFTau.cc:346
void setisolationCands(const std::vector< reco::CandidatePtr > &)
Definition: PFTau.cc:88
std::ostream & operator<<(std::ostream &, BeamSpot beam)
Definition: BeamSpot.cc:66
float leadPFChargedHadrCandsignedSipt_
Definition: PFTau.h:238
edm::AtomicPtrCache< std::vector< reco::PFCandidatePtr > > selectedTransientIsolationPFChargedHadrCands_
Definition: PFTau.h:293
const std::vector< reco::PFCandidatePtr > & signalPFGammaCands() const
Definition: PFTau.cc:204
std::vector< reco::CandidatePtr > selectedSignalGammaCands_
Definition: PFTau.h:274
CandidatePtr sourceCandidatePtr(size_type i) const override
Definition: PFTau.cc:384
RecoTauPiZeroRefVector isolationPiZeroCandidatesRefs_
Definition: PFTau.h:298
bool isNonnull() const
Checks for non-null.
Definition: Ptr.h:146
void setDecayMode(const hadronicDecayMode &)
Definition: PFTau.cc:327
std::vector< reco::CandidatePtr > selectedSignalNeutrHadrCands_
Definition: PFTau.h:273
float emFraction() const
Definition: PFTau.cc:340
void setCaloComp(const float &)
Definition: PFTau.cc:380
std::vector< reco::CandidatePtr > selectedIsolationGammaCands_
Definition: PFTau.h:280
void setisolationPFChargedHadrCandsPtSum(const float &)
Definition: PFTau.cc:331
PFTau * clone() const override
returns a clone of the Candidate object
Definition: PFTau.cc:53
void setleadPFChargedHadrCandsignedSipt(const float &)
Definition: PFTau.cc:72
float signalConeSize_
Definition: PFTau.h:261
edm::AtomicPtrCache< reco::PFCandidatePtr > leadPFNeutralCand_
Definition: PFTau.h:284
float caloComp() const
Definition: PFTau.cc:377
hadronicDecayMode decayMode_
Definition: PFTau.h:257
edm::AtomicPtrCache< std::vector< reco::PFCandidatePtr > > selectedTransientSignalPFNeutrHadrCands_
Definition: PFTau.h:289
bool overlap(const Candidate &) const override
check overlap with another candidate
Definition: PFTau.cc:390
std::vector< reco::CandidatePtr > selectedSignalCands_
Definition: PFTau.h:271
double vx() const override
x coordinate of vertex position
bool isNull() const
Checks for null.
Definition: Ref.h:235
bool checkOverlap(const R &r1, const R &r2) const
check if two components overlap
Definition: RecoCandidate.h:67
reco::MuonRef muonRef() const
Definition: PFCandidate.cc:448
const std::vector< reco::CandidatePtr > & signalGammaCands() const
Gamma candidates in signal region.
Definition: PFTau.cc:84
void setsignalCands(const std::vector< reco::CandidatePtr > &)
Definition: PFTau.cc:75
void setbremsRecoveryEOverPLead(const float &)
Definition: PFTau.cc:355
std::vector< reco::CandidatePtr > selectedIsolationCands_
Definition: PFTau.h:277
const std::vector< reco::PFCandidatePtr > & signalPFChargedHadrCands() const
Definition: PFTau.cc:190
bool muonDecision_
Definition: PFTau.h:234
PFRecoTauChargedHadronRef leadTauChargedHadronCandidate() const
Definition: PFTau.cc:279
std::vector< PFRecoTauChargedHadron > & isolationTauChargedHadronCandidatesRestricted()
Definition: PFTau.cc:312
std::vector< RecoTauPiZero > & isolationPiZeroCandidatesRestricted()
Definition: PFTau.cc:265
void sethcalMaxOverPLead(const float &)
Definition: PFTau.cc:352
const std::vector< reco::PFCandidatePtr > & isolationPFCands() const
Definition: PFTau.cc:211
void dump(std::ostream &out=std::cout) const
prints information on this PFTau
Definition: PFTau.cc:395
edm::Ptr< Candidate > CandidatePtr
persistent reference to an object in a collection of Candidate objects
Definition: CandidateFwd.h:25
float isolationPFChargedHadrCandsPtSum() const
Definition: PFTau.cc:330
std::vector< reco::CandidatePtr > selectedIsolationNeutrHadrCands_
Definition: PFTau.h:279
edm::AtomicPtrCache< reco::PFCandidatePtr > leadPFChargedHadrCand_
Definition: PFTau.h:283
edm::AtomicPtrCache< std::vector< reco::PFRecoTauChargedHadron > > signalTauChargedHadronCandidates_
Definition: PFTau.h:308
const std::vector< reco::CandidatePtr > & isolationChargedHadrCands() const
Charged candidates in isolation region.
Definition: PFTau.cc:89
void setSegComp(const float &)
Definition: PFTau.cc:381
float leadPFChargedHadrCandsignedSipt() const
Definition: PFTau.cc:71
float maximumHCALPFClusterEt() const
Et of the highest Et HCAL PFCluster.
Definition: PFTau.cc:336
hadronicDecayMode decayMode() const
Definition: PFTau.cc:325
edm::AtomicPtrCache< std::vector< reco::PFCandidatePtr > > selectedTransientSignalPFChargedHadrCands_
Definition: PFTau.h:288
float bremsRecoveryEOverPLead_
Definition: PFTau.h:250
edm::Ref< PFRecoTauChargedHadronCollection > PFRecoTauChargedHadronRef
presistent reference to a PFRecoTauChargedHadron
float hcal3x3OverPLead_
Definition: PFTau.h:248
const std::vector< reco::CandidatePtr > & isolationCands() const
Candidates in isolation region.
Definition: PFTau.cc:87
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:36
float hcalMaxOverPLead_
Definition: PFTau.h:247
const std::vector< reco::CandidatePtr > & signalChargedHadrCands() const
Charged hadrons in signal region.
Definition: PFTau.cc:76
std::vector< reco::CandidatePtr > selectedIsolationChargedHadrCands_
Definition: PFTau.h:278
PFTauTagInfoRef PFTauTagInfoRef_
Definition: PFTau.h:264
void setisolationGammaCands(const std::vector< reco::CandidatePtr > &)
Definition: PFTau.cc:100
const PFCandidatePtr leadPFCand() const
Definition: PFTau.cc:177
void setsignalGammaCands(const std::vector< reco::CandidatePtr > &)
Definition: PFTau.cc:85
float electronPreIDOutput_
Definition: PFTau.h:251
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:41
fixed size matrix
hadronicDecayMode
Definition: PFTau.h:38
const std::vector< reco::CandidatePtr > & isolationGammaCands() const
Gamma candidates in isolation region.
Definition: PFTau.cc:99
const std::vector< reco::PFCandidatePtr > & signalPFCands() const
Definition: PFTau.cc:183
const std::vector< PFRecoTauChargedHadron > & signalTauChargedHadronCandidates() const
Retrieve the association of signal region PF candidates into candidate PFRecoTauChargedHadrons.
Definition: PFTau.cc:287
void setjetRef(const JetBaseRef &)
Definition: PFTau.cc:57
Structure Point Contains parameters of Gaussian fits to DMRs.
void setmaximumHCALPFClusterEt(const float &)
Definition: PFTau.cc:337
virtual reco::TrackRef track() const
reference to a Track
void setSignalTauChargedHadronCandidates(std::vector< PFRecoTauChargedHadron >)
Definition: PFTau.cc:298
const CandidatePtr & leadCand() const
Definition: PFTau.cc:65
edm::AtomicPtrCache< std::vector< reco::PFCandidatePtr > > selectedTransientIsolationPFCands_
Definition: PFTau.h:292
float x
void setecalStripSumEOverPLead(const float &)
Definition: PFTau.cc:354
float bendCorrMass_
Definition: PFTau.h:259
edm::AtomicPtrCache< std::vector< reco::PFRecoTauChargedHadron > > isolationTauChargedHadronCandidates_
Definition: PFTau.h:309
const JetBaseRef & jetRef() const
Definition: PFTau.cc:56
PFRecoTauChargedHadronRefVector signalTauChargedHadronCandidatesRefs_
Definition: PFTau.h:300
edm::AtomicPtrCache< std::vector< reco::PFCandidatePtr > > selectedTransientIsolationPFGammaCands_
Definition: PFTau.h:295
const PFCandidatePtr leadPFNeutralCand() const
Definition: PFTau.cc:171
void setIsolationPiZeroCandidatesRefs(RecoTauPiZeroRefVector)
Definition: PFTau.cc:270
void sethcalTotOverPLead(const float &)
Definition: PFTau.cc:351
std::vector< PFRecoTauChargedHadron > & signalTauChargedHadronCandidatesRestricted()
Definition: PFTau.cc:293
std::vector< reco::CandidatePtr > selectedSignalChargedHadrCands_
Definition: PFTau.h:272
const PFCandidatePtr leadPFChargedHadrCand() const
Getters for different PFCandidates for PFTaus made from PFCandidates.
Definition: PFTau.cc:165
float bremsRecoveryEOverPLead() const
Definition: PFTau.cc:345
float emFraction_
Definition: PFTau.h:245
edm::AtomicPtrCache< std::vector< reco::PFCandidatePtr > > selectedTransientSignalPFGammaCands_
Definition: PFTau.h:290
const PFTauTagInfoRef & pfTauTagInfoRef() const
Definition: PFTau.cc:59
void setelectronPreIDTrack(const reco::TrackRef &)
Definition: PFTau.cc:356
long double T
void setIsolationTauChargedHadronCandidatesRefs(PFRecoTauChargedHadronRefVector)
Definition: PFTau.cc:321
reco::TrackRef electronPreIDTrack_
Definition: PFTau.h:268
PFTau()
Definition: PFTau.cc:9
const std::vector< RecoTauPiZero > & isolationPiZeroCandidates() const
Retrieve the association of isolation region gamma candidates into candidate PiZeros.
Definition: PFTau.cc:259
bool hasMuonReference() const
Definition: PFTau.cc:361
def move(src, dest)
Definition: eostools.py:511
float isolationPFGammaCandsEtSum_
Definition: PFTau.h:241
float caloComp_
Definition: PFTau.h:254
int charge() const final
electric charge
void setpfTauTagInfoRef(const PFTauTagInfoRef)
Definition: PFTau.cc:61
bool muonDecision() const
Definition: PFTau.cc:379
void setSignalPiZeroCandidatesRefs(RecoTauPiZeroRefVector)
Definition: PFTau.cc:255
float hcalTotOverPLead_
Definition: PFTau.h:246