3 namespace PFTauDiscriminants {
20 for(std::vector<const reco::Candidate*>::const_iterator iObject = theOutlierObjects.begin();
21 iObject != theOutlierObjects.end();
25 if (currentObject && currentObject->
charge() != 0 )
29 result.push_back(static_cast<int>(output));
36 size_t output = theOutlierObjects.size();
38 result.push_back(static_cast<int>(output));
58 result.push_back(theMainTrack->
pt());
71 result.push_back(myDRComputer(theMainTrack->
momentum(), signalObjectsAxis));
81 for(std::vector<const reco::Candidate*>::const_iterator iObject = theSignalObjects.begin();
82 iObject != theSignalObjects.end();
86 if (currentObject->
charge() && currentObject != theMainTrack)
87 result.push_back(currentObject->
pt());
96 for(std::vector<const reco::Candidate*>::const_iterator iObject = theSignalObjects.begin();
97 iObject != theSignalObjects.end();
101 if (!currentObject->
charge())
102 result.push_back(currentObject->
pt());
115 for(std::vector<const reco::Candidate*>::const_iterator iObject = theFilteredObjects.begin();
116 iObject != theFilteredObjects.end();
120 result.push_back(currentObject->
pt());
129 for(std::vector<const reco::Candidate*>::const_iterator iObject = theSignalObjects.begin();
130 iObject != theSignalObjects.end();
134 if (!currentObject->
charge())
144 for(std::vector<const reco::Candidate*>::const_iterator iObject = theSignalObjects.begin();
145 iObject != theSignalObjects.end();
149 if (!currentObject->
charge())
151 std::vector<const reco::Candidate*> daughters = input->
getLeafDaughters(currentObject);
152 for(std::vector<const reco::Candidate*>::const_iterator iDaughter = daughters.begin();
153 iDaughter != daughters.end();
156 result.push_back((*iDaughter)->pt());
174 for(std::vector<const reco::Candidate*>::const_iterator iObject = theSignalObjects.begin();
175 iObject != theSignalObjects.end();
179 if (currentObject->
charge() && currentObject != theMainTrack)
180 result.push_back(myDRComputer(currentObject->
momentum(), signalObjectsAxis));
193 for(std::vector<const reco::Candidate*>::const_iterator iObject = theSignalObjects.begin();
194 iObject != theSignalObjects.end();
198 if (!currentObject->
charge())
199 result.push_back(myDRComputer(currentObject->
momentum(), signalObjectsAxis));
212 for(std::vector<const reco::Candidate*>::const_iterator iObject = theSignalObjects.begin();
213 iObject != theSignalObjects.end();
217 if (currentObject != theMainTrack)
219 LorentzVector combinedFourVector = mainTrackFourVector + currentObject->
p4();
220 result.push_back(combinedFourVector.mass());
238 result.push_back(signalObjects.M());
253 for(std::vector<const reco::Candidate*>::const_iterator iObject = theSignalObjects.begin();
254 iObject != theSignalObjects.end();
258 if (currentObject != theMainTrack)
260 fourVectorSoFar += currentObject->
p4();
261 result.push_back(fourVectorSoFar.mass());
270 for(std::vector<const reco::Candidate*>::const_iterator iObject = theOutlierObjects.begin();
271 iObject != theOutlierObjects.end();
276 result.push_back(currentObject->
pt());
285 for(std::vector<const reco::Candidate*>::const_iterator iObject = theOutlierObjects.begin();
286 iObject != theOutlierObjects.end();
291 totalFourVector += currentObject->
p4();
293 result.push_back(totalFourVector.pt());
301 for(std::vector<const reco::Candidate*>::const_iterator iObject = theOutlierObjects.begin();
302 iObject != theOutlierObjects.end();
307 totalFourVector += currentObject->
p4();
309 result.push_back(totalFourVector.M());
318 for(std::vector<const reco::Candidate*>::const_iterator iObject = theoutlierObjects.begin();
319 iObject != theoutlierObjects.end();
324 result.push_back(myDRComputer(currentObject->
momentum(), signalObjectsAxis));
332 for(std::vector<const reco::Candidate*>::const_iterator iObject = theOutlierObjects.begin();
333 iObject != theOutlierObjects.end();
337 if (currentObject && currentObject->
charge())
338 result.push_back(currentObject->
pt());
347 for(std::vector<const reco::Candidate*>::const_iterator iObject = theOutlierObjects.begin();
348 iObject != theOutlierObjects.end();
352 if (currentObject && currentObject->
charge())
353 output += currentObject->
pt();
355 result.push_back(output);
364 for(std::vector<const reco::Candidate*>::const_iterator iObject = theoutlierObjects.begin();
365 iObject != theoutlierObjects.end();
369 if (currentObject && currentObject->
charge())
370 result.push_back(myDRComputer(currentObject->
momentum(), signalObjectsAxis));
378 for(std::vector<const reco::Candidate*>::const_iterator iObject = theOutlierObjects.begin();
379 iObject != theOutlierObjects.end();
383 if (currentObject && !currentObject->
charge())
384 result.push_back(currentObject->
pt());
393 for(std::vector<const reco::Candidate*>::const_iterator iObject = theOutlierObjects.begin();
394 iObject != theOutlierObjects.end();
398 if (currentObject && !currentObject->
charge())
399 output += currentObject->
pt();
401 result.push_back(output);
410 for(std::vector<const reco::Candidate*>::const_iterator iObject = theoutlierObjects.begin();
411 iObject != theoutlierObjects.end();
415 if (currentObject && !currentObject->
charge())
416 result.push_back(myDRComputer(currentObject->
momentum(), signalObjectsAxis));
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
const CompositeCandidate & filteredObjects() const
returns references to PF objects that were filtered
reco::Particle::LorentzVector LorentzVector
virtual double pt() const =0
transverse momentum
void doComputation(PFTauDiscriminantManager *input, std::vector< int > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
virtual Vector momentum() const
spatial momentum vector
static std::vector< const reco::Candidate * > getLeafDaughters(const reco::Candidate *input)
return the lowest level constituent candidates of a composite candidate
const std::vector< const reco::Candidate * > & outlierObjectsSortedByPt()
virtual double eta() const
momentum pseudorapidity
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
std::vector< const Candidate * > filteredObjectCandidates(int absCharge=-2) const
returns pointers to filtered objects (i.e. those not included in signal objects)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
virtual double mass() const
mass
virtual Vector momentum() const =0
spatial momentum vector
hadronicTauDecayModes getDecayMode() const
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< int > &result)
const std::vector< const reco::Candidate * > & signalObjectsSortedByPt()
accessed by Discriminant classes (caches to prevent multiple sorts)
virtual int charge() const =0
electric charge
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
const reco::Candidate * mainTrack()
get the 'main' track (track computed for relevancy to tau decay resonances) (ie pi- in pi+pi+pi-) ...
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
const reco::PFTauDecayMode * getDecayMode() const
returns associated PFTauDecayMode
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
XYZVectorD XYZVector
spatial vector with cartesian internal representation
virtual double pt() const
transverse momentum
void doComputation(PFTauDiscriminantManager *input, std::vector< int > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
virtual const LorentzVector & p4() const
four-momentum Lorentz vector
math::XYZTLorentzVector LorentzVector
Lorentz vector.
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
void doComputation(PFTauDiscriminantManager *input, std::vector< double > &result)
virtual const LorentzVector & p4() const =0
four-momentum Lorentz vector