CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PFTau.cc
Go to the documentation of this file.
4 
5 //using namespace std;
6 namespace reco {
7 
13  emFraction_ = NAN;
14  hcalTotOverPLead_ = NAN;
15  hcalMaxOverPLead_ = NAN;
16  hcal3x3OverPLead_ = NAN;
21  caloComp_ = NAN;
22  segComp_ = NAN;
23  muonDecision_ = NAN;
24 }
25 
26 PFTau::PFTau(Charge q,const LorentzVector& p4,const Point& vtx) : BaseTau(q,p4,vtx)
27 {
32 
33  emFraction_ = NAN;
34  hcalTotOverPLead_ = NAN;
35  hcalMaxOverPLead_ = NAN;
36  hcal3x3OverPLead_ = NAN;
41 
42  caloComp_ = NAN;
43  segComp_ = NAN;
44  muonDecision_ = NAN;
45 }
46 
47 PFTau* PFTau::clone() const { return new PFTau(*this); }
48 
49 // Constituent getters and setters
50 const PFJetRef& PFTau::jetRef() const {return jetRef_;}
52 
54 // edm::LogWarning("DeprecatedPFTauMember")
55 // << "The PFTauTagInfoRef member is deprecated in the PFTau."
56 // << " For access to the underlying PFJet, please use the jetRef() method";
57  return PFTauTagInfoRef_;
58 }
59 
61 
65 
68 void PFTau::setleadPFCand(const PFCandidateRef& myLead) { leadPFCand_=myLead;}
69 
72 
81 
90 
91 // PiZero and decay mode information
92 const std::vector<RecoTauPiZero>& PFTau::signalPiZeroCandidates() const {
93  // Check if the signal pi zeros are already filled
95  // Fill them from the refs
96  for (size_t i = 0; i < signalPiZeroCandidatesRefs_.size(); ++i) {
98  }
99  }
101 }
102 
103 void PFTau::setsignalPiZeroCandidates(const std::vector<RecoTauPiZero>& cands) {
104  signalPiZeroCandidates_ = cands;
105 }
106 
109 }
110 
113 }
114 
115 const std::vector<RecoTauPiZero>& PFTau::isolationPiZeroCandidates() const {
116  // Check if the signal pi zeros are already filled
118  // Fill them from the refs
119  for (size_t i = 0; i < isolationPiZeroCandidatesRefs_.size(); ++i) {
121  }
122  }
124 }
125 
126 void PFTau::setisolationPiZeroCandidates(const std::vector<RecoTauPiZero>& cands){
127  signalPiZeroCandidates_ = cands;
128 }
129 
131  unsigned int nCharged = signalPFChargedHadrCands().size();
132  unsigned int nPiZeros = signalPiZeroCandidates().size();
133  // If no tracks exist, this is definitely not a tau!
134  if(!nCharged) return kNull;
135  // Find the maximum number of PiZeros our parameterization can hold
136  const unsigned int maxPiZeros = kOneProngNPiZero;
137  // Determine our track index
138  unsigned int trackIndex = (nCharged-1)*(maxPiZeros+1);
139  // Check if we handle the given number of tracks
140  if(trackIndex >= kRareDecayMode) return kRareDecayMode;
141 
142  nPiZeros = (nPiZeros <= maxPiZeros) ? nPiZeros : maxPiZeros;
143  return static_cast<PFTau::hadronicDecayMode>(trackIndex + nPiZeros);
144 }
145 
146 
147 // Setting information about the isolation region
150 
153 
156 
157 // Electron variables
158 float PFTau::emFraction() const {return emFraction_;}
167 
168 void PFTau::setemFraction(const float& x) {emFraction_ = x;}
177 
178 // Muon variables
179 bool PFTau::hasMuonReference() const { // check if muon ref exists
180  if( leadPFChargedHadrCand_.isNull() ) return false;
181  else if( leadPFChargedHadrCand_.isNonnull() ){
182  reco::MuonRef muonRef = leadPFChargedHadrCand_->muonRef();
183  if( muonRef.isNull() ) return false;
184  else if( muonRef.isNonnull() ) return true;
185  }
186  return false;
187 }
188 
189 float PFTau::caloComp() const {return caloComp_;}
190 float PFTau::segComp() const {return segComp_;}
191 bool PFTau::muonDecision() const {return muonDecision_;}
192 void PFTau::setCaloComp(const float& x) {caloComp_ = x;}
193 void PFTau::setSegComp (const float& x) {segComp_ = x;}
194 void PFTau::setMuonDecision(const bool& x) {muonDecision_ = x;}
195 //
196 
197 
199  if( i!=0 ) return CandidatePtr();
200  return refToPtr( jetRef() );
201 }
202 
203 
204 bool PFTau::overlap(const Candidate& theCand) const {
205  const RecoCandidate* theRecoCand=dynamic_cast<const RecoCandidate *>(&theCand);
206  return (theRecoCand!=0 && (checkOverlap(track(),theRecoCand->track())));
207 }
208 
209 void PFTau::dump(std::ostream& out) const {
210 
211  if(!out) return;
212 
213  if (pfTauTagInfoRef().isNonnull()) {
214  out << "Its TauTagInfo constituents :"<<std::endl;
215  out<<"# Tracks "<<pfTauTagInfoRef()->Tracks().size()<<std::endl;
216  out<<"# PF charged hadr. cand's "<<pfTauTagInfoRef()->PFChargedHadrCands().size()<<std::endl;
217  out<<"# PF neutral hadr. cand's "<<pfTauTagInfoRef()->PFNeutrHadrCands().size()<<std::endl;
218  out<<"# PF gamma cand's "<<pfTauTagInfoRef()->PFGammaCands().size()<<std::endl;
219  }
220  if (jetRef().isNonnull()) {
221  out << "Its constituents :"<< std::endl;
222  out<<"# PF charged hadr. cand's "<< jetRef()->chargedHadronMultiplicity()<<std::endl;
223  out<<"# PF neutral hadr. cand's "<< jetRef()->neutralHadronMultiplicity()<<std::endl;
224  out<<"# PF gamma cand's "<< jetRef()->photonMultiplicity()<<std::endl;
225  out<<"# Electron cand's "<< jetRef()->electronMultiplicity()<<std::endl;
226  }
227  out<<"in detail :"<<std::endl;
228 
229  out<<"Pt of the PFTau "<<pt()<<std::endl;
230  PFCandidateRef theLeadPFCand = leadPFChargedHadrCand();
231  if(!theLeadPFCand){
232  out<<"No Lead PFCand "<<std::endl;
233  }else{
234  out<<"Lead PFCand Particle Id " << (*theLeadPFCand).particleId() << std::endl;
235  out<<"Lead PFCand Pt "<<(*theLeadPFCand).pt()<<std::endl;
236  out<<"Lead PFCand Charge "<<(*theLeadPFCand).charge()<<std::endl;
237  out<<"Lead PFCand TrkRef "<<(*theLeadPFCand).trackRef().isNonnull()<<std::endl;
238  out<<"Inner point position (x,y,z) of the PFTau ("<<vx()<<","<<vy()<<","<<vz()<<")"<<std::endl;
239  out<<"Charge of the PFTau "<<charge()<<std::endl;
240  out<<"Et of the highest Et HCAL PFCluster "<<maximumHCALPFClusterEt()<<std::endl;
241  out<<"Number of SignalPFChargedHadrCands = "<<signalPFChargedHadrCands().size()<<std::endl;
242  out<<"Number of SignalPFGammaCands = "<<signalPFGammaCands().size()<<std::endl;
243  out<<"Number of IsolationPFChargedHadrCands = "<<isolationPFChargedHadrCands().size()<<std::endl;
244  out<<"Number of IsolationPFGammaCands = "<<isolationPFGammaCands().size()<<std::endl;
245  out<<"Sum of Pt of charged hadr. PFCandidates in isolation annulus around Lead PF = "<<isolationPFChargedHadrCandsPtSum()<<std::endl;
246  out<<"Sum of Et of gamma PFCandidates in other isolation annulus around Lead PF = "<<isolationPFGammaCandsEtSum()<<std::endl;
247 
248  }
249  // return out;
250 }
251 
252 std::ostream& operator<<(std::ostream& out, const reco::PFTau& tau) {
253 
254  if(!out) return out;
255 
256  out << std::setprecision(3)
257  <<"PFTau "
258  << " charge: " << tau.charge() << " "
259  << " pt:" <<tau.pt()<<" "
260  << " eta:" <<tau.eta()<<" "
261  << " phi:" <<tau.phi()<<" "
262  << " mass:" << tau.mass() << " "
263  << " dm: " << tau.decayMode() << " "
264  <<tau.signalPFCands().size()<<","
265  <<tau.signalPFChargedHadrCands().size()<<","
266  <<tau.signalPFGammaCands().size()<<","
267  <<tau.signalPiZeroCandidates().size()<<","
268  <<tau.signalPFNeutrHadrCands().size()<<" "
269 
270  <<tau.isolationPFCands().size()<<","
271  <<tau.isolationPFChargedHadrCands().size()<<","
272  <<tau.isolationPFGammaCands().size()<<","
273  <<tau.isolationPiZeroCandidates().size()<<","
275 
276  return out;
277 }
278 
279 }
float ecalStripSumEOverPLead_
Definition: PFTau.h:202
void setisolationPFGammaCands(const PFCandidateRefVector &)
Definition: PFTau.cc:89
bool hasMuonReference() const
Definition: PFTau.cc:179
float maximumHCALPFClusterEt() const
Et of the highest Et HCAL PFCluster.
Definition: PFTau.cc:154
PFCandidateRefVector selectedIsolationPFChargedHadrCands_
Definition: PFTau.h:223
int Charge
electric charge type
Definition: Candidate.h:39
bool checkOverlap(const R &r1, const R &r2) const
check if two components overlap
Definition: RecoCandidate.h:64
int i
Definition: DBlmapReader.cc:9
RecoTauPiZeroRefVector signalPiZeroCandidatesRefs_
Definition: PFTau.h:228
void setMuonDecision(const bool &)
Definition: PFTau.cc:194
std::vector< reco::RecoTauPiZero > isolationPiZeroCandidates_
Definition: PFTau.h:233
void setisolationPFChargedHadrCands(const PFCandidateRefVector &)
Definition: PFTau.cc:85
void setelectronPreIDOutput(const float &)
Definition: PFTau.cc:175
float isolationPFGammaCandsEtSum() const
Definition: PFTau.cc:151
void setisolationPFNeutrHadrCands(const PFCandidateRefVector &)
Definition: PFTau.cc:87
const PFCandidateRefVector & isolationPFCands() const
PFCandidates in isolation region.
Definition: PFTau.cc:82
const PFJetRef & jetRef() const
Definition: PFTau.cc:50
Ptr< typename C::value_type > refToPtr(Ref< C, typename C::value_type, refhelper::FindUsingAdvance< C, typename C::value_type > > const &ref)
Definition: RefToPtr.h:18
float isolationPFChargedHadrCandsPtSum() const
Definition: PFTau.cc:148
void setelectronPreIDDecision(const bool &)
Definition: PFTau.cc:176
void setsignalPFNeutrHadrCands(const PFCandidateRefVector &)
Definition: PFTau.cc:78
size_t size_type
Definition: Candidate.h:34
float segComp() const
Definition: PFTau.cc:190
float hcalTotOverPLead() const
Definition: PFTau.cc:159
bool electronPreIDDecision_
Definition: PFTau.h:189
float maximumHCALPFClusterEt_
Definition: PFTau.h:195
const PFCandidateRefVector & signalPFNeutrHadrCands() const
Neutral hadrons in signal region.
Definition: PFTau.cc:77
const PFCandidateRef & leadPFNeutralCand() const
Definition: PFTau.cc:63
bool electronPreIDDecision() const
Definition: PFTau.cc:166
float isolationPFChargedHadrCandsPtSum_
Definition: PFTau.h:193
float hcal3x3OverPLead() const
Definition: PFTau.cc:161
std::vector< reco::RecoTauPiZero > signalPiZeroCandidates_
Definition: PFTau.h:232
float emFraction() const
Definition: PFTau.cc:158
const PFCandidateRefVector & signalPFChargedHadrCands() const
Charged hadrons in signal region.
Definition: PFTau.cc:75
void sethcal3x3OverPLead(const float &)
Definition: PFTau.cc:171
void setisolationPFGammaCandsEtSum(const float &)
Definition: PFTau.cc:152
void setisolationPFCands(const PFCandidateRefVector &)
Definition: PFTau.cc:83
virtual double vy() const
y coordinate of vertex position
void setemFraction(const float &)
Definition: PFTau.cc:168
void setleadPFNeutralCand(const PFCandidateRef &)
Definition: PFTau.cc:67
const PFCandidateRefVector & signalPFCands() const
PFCandidates in signal region.
Definition: PFTau.cc:73
virtual reco::TrackRef track() const
reference to a Track
bool muonDecision() const
Definition: PFTau.cc:191
reco::PFJetRef jetRef_
Definition: PFTau.h:210
hadronicDecayMode decayMode() const
Definition: PFTau.cc:130
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:250
float segComp_
Definition: PFTau.h:208
virtual float phi() const GCC11_FINAL
momentum azimuthal angle
void dump(std::ostream &out=std::cout) const
prints information on this PFTau
Definition: PFTau.cc:209
void setjetRef(const PFJetRef &)
Definition: PFTau.cc:51
CandidatePtr sourceCandidatePtr(size_type i) const
Definition: PFTau.cc:198
bool isNull() const
Checks for null.
Definition: Ref.h:247
void setsignalPiZeroCandidates(const std::vector< RecoTauPiZero > &)
Definition: PFTau.cc:103
std::ostream & operator<<(std::ostream &, BeamSpot beam)
Definition: BeamSpot.cc:72
float leadPFChargedHadrCandsignedSipt_
Definition: PFTau.h:191
PFCandidateRefVector selectedIsolationPFNeutrHadrCands_
Definition: PFTau.h:223
PFCandidateRefVector selectedIsolationPFGammaCands_
Definition: PFTau.h:223
float caloComp() const
Definition: PFTau.cc:189
const std::vector< RecoTauPiZero > & signalPiZeroCandidates() const
Retrieve the association of signal region gamma candidates into candidate PiZeros.
Definition: PFTau.cc:92
RecoTauPiZeroRefVector isolationPiZeroCandidatesRefs_
Definition: PFTau.h:229
double p4[4]
Definition: TauolaWrapper.h:92
void setIsolationPiZeroCandidatesRefs(const RecoTauPiZeroRefVector &)
Definition: PFTau.cc:111
const PFCandidateRefVector & isolationPFGammaCands() const
Gamma candidates in isolation region.
Definition: PFTau.cc:88
void setsignalPFGammaCands(const PFCandidateRefVector &)
Definition: PFTau.cc:80
void setCaloComp(const float &)
Definition: PFTau.cc:192
PFCandidateRef leadPFCand_
Definition: PFTau.h:213
void setsignalPFChargedHadrCands(const PFCandidateRefVector &)
Definition: PFTau.cc:76
void setisolationPFChargedHadrCandsPtSum(const float &)
Definition: PFTau.cc:149
void setleadPFChargedHadrCandsignedSipt(const float &)
Definition: PFTau.cc:71
const PFCandidateRef & leadPFCand() const
Definition: PFTau.cc:64
virtual double vz() const
z coordinate of vertex position
void setisolationPiZeroCandidates(const std::vector< RecoTauPiZero > &)
Definition: PFTau.cc:126
float leadPFChargedHadrCandsignedSipt() const
Definition: PFTau.cc:70
void setbremsRecoveryEOverPLead(const float &)
Definition: PFTau.cc:173
virtual float eta() const GCC11_FINAL
momentum pseudorapidity
tuple out
Definition: dbtoconf.py:99
bool muonDecision_
Definition: PFTau.h:188
const std::vector< RecoTauPiZero > & isolationPiZeroCandidates() const
Retrieve the association of isolation region gamma candidates into candidate PiZeros.
Definition: PFTau.cc:115
const PFTauTagInfoRef & pfTauTagInfoRef() const
Definition: PFTau.cc:53
virtual float mass() const GCC11_FINAL
mass
void sethcalMaxOverPLead(const float &)
Definition: PFTau.cc:170
edm::Ptr< Candidate > CandidatePtr
persistent reference to an object in a collection of Candidate objects
Definition: CandidateFwd.h:25
void setleadPFChargedHadrCand(const PFCandidateRef &)
Definition: PFTau.cc:66
const PFCandidateRef & leadPFChargedHadrCand() const
Definition: PFTau.cc:62
PFCandidateRef leadPFChargedHadrCand_
Definition: PFTau.h:212
const PFCandidateRefVector & signalPFGammaCands() const
Gamma candidates in signal region.
Definition: PFTau.cc:79
unsigned int nCharged(const GenJet &jet)
void setSegComp(const float &)
Definition: PFTau.cc:193
virtual int charge() const GCC11_FINAL
electric charge
PFTau * clone() const
returns a clone of the Candidate object
Definition: PFTau.cc:47
PFCandidateRef leadPFNeutralCand_
Definition: PFTau.h:213
float bremsRecoveryEOverPLead() const
Definition: PFTau.cc:163
float bremsRecoveryEOverPLead_
Definition: PFTau.h:203
float hcal3x3OverPLead_
Definition: PFTau.h:201
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:41
float hcalMaxOverPLead_
Definition: PFTau.h:200
PFTauTagInfoRef PFTauTagInfoRef_
Definition: PFTau.h:211
float electronPreIDOutput_
Definition: PFTau.h:204
hadronicDecayMode
Definition: PFTau.h:34
void setsignalPFCands(const PFCandidateRefVector &)
Definition: PFTau.cc:74
PFCandidateRefVector selectedIsolationPFCands_
Definition: PFTau.h:223
virtual bool overlap(const Candidate &) const
check overlap with another candidate
Definition: PFTau.cc:204
void setSignalPiZeroCandidatesRefs(const RecoTauPiZeroRefVector &)
Definition: PFTau.cc:107
void setmaximumHCALPFClusterEt(const float &)
Definition: PFTau.cc:155
void setecalStripSumEOverPLead(const float &)
Definition: PFTau.cc:172
virtual double vx() const
x coordinate of vertex position
size_type size() const
Size of the RefVector.
Definition: RefVector.h:89
math::XYZPoint Point
point in the space
Definition: Candidate.h:45
void sethcalTotOverPLead(const float &)
Definition: PFTau.cc:169
Definition: DDAxes.h:10
PFCandidateRefVector selectedSignalPFChargedHadrCands_
Definition: PFTau.h:217
float emFraction_
Definition: PFTau.h:198
virtual float pt() const GCC11_FINAL
transverse momentum
PFCandidateRefVector selectedSignalPFCands_
Definition: PFTau.h:217
void setelectronPreIDTrack(const reco::TrackRef &)
Definition: PFTau.cc:174
float hcalMaxOverPLead() const
Definition: PFTau.cc:160
float electronPreIDOutput() const
Definition: PFTau.cc:165
reco::TrackRef electronPreIDTrack() const
Definition: PFTau.cc:164
PFCandidateRefVector selectedSignalPFNeutrHadrCands_
Definition: PFTau.h:217
void setleadPFCand(const PFCandidateRef &)
Definition: PFTau.cc:68
reco::TrackRef electronPreIDTrack_
Definition: PFTau.h:214
PFTau()
Definition: PFTau.cc:8
float isolationPFGammaCandsEtSum_
Definition: PFTau.h:194
float caloComp_
Definition: PFTau.h:207
float ecalStripSumEOverPLead() const
Definition: PFTau.cc:162
const PFCandidateRefVector & isolationPFNeutrHadrCands() const
Definition: PFTau.cc:86
PFCandidateRefVector selectedSignalPFGammaCands_
Definition: PFTau.h:217
const PFCandidateRefVector & isolationPFChargedHadrCands() const
Charged candidates in isolation region.
Definition: PFTau.cc:84
void setpfTauTagInfoRef(const PFTauTagInfoRef)
Definition: PFTau.cc:60
float hcalTotOverPLead_
Definition: PFTau.h:199