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 {
94 }
95 void PFTau::setsignalPiZeroCandidates(const std::vector<RecoTauPiZero>& cands) {
97 }
98 
99 const std::vector<RecoTauPiZero>& PFTau::isolationPiZeroCandidates() const {
101 }
102 void PFTau::setisolationPiZeroCandidates(const std::vector<RecoTauPiZero>& cands){
103  signalPiZeroCandidates_ = cands;
104 }
105 
107  unsigned int nCharged = signalPFChargedHadrCands().size();
108  unsigned int nPiZeros = signalPiZeroCandidates().size();
109  // If no tracks exist, this is definitely not a tau!
110  if(!nCharged) return kNull;
111  // Find the maximum number of PiZeros our parameterization can hold
112  const unsigned int maxPiZeros = kOneProngNPiZero;
113  // Determine our track index
114  unsigned int trackIndex = (nCharged-1)*(maxPiZeros+1);
115  // Check if we handle the given number of tracks
116  if(trackIndex >= kRareDecayMode) return kRareDecayMode;
117 
118  nPiZeros = (nPiZeros <= maxPiZeros) ? nPiZeros : maxPiZeros;
119  return static_cast<PFTau::hadronicDecayMode>(trackIndex + nPiZeros);
120 }
121 
122 
123 // Setting information about the isolation region
126 
129 
132 
133 // Electron variables
134 float PFTau::emFraction() const {return emFraction_;}
143 
144 void PFTau::setemFraction(const float& x) {emFraction_ = x;}
153 
154 // Muon variables
155 bool PFTau::hasMuonReference() const { // check if muon ref exists
156  if( leadPFChargedHadrCand_.isNull() ) return false;
157  else if( leadPFChargedHadrCand_.isNonnull() ){
158  reco::MuonRef muonRef = leadPFChargedHadrCand_->muonRef();
159  if( muonRef.isNull() ) return false;
160  else if( muonRef.isNonnull() ) return true;
161  }
162  return false;
163 }
164 
165 float PFTau::caloComp() const {return caloComp_;}
166 float PFTau::segComp() const {return segComp_;}
167 bool PFTau::muonDecision() const {return muonDecision_;}
168 void PFTau::setCaloComp(const float& x) {caloComp_ = x;}
169 void PFTau::setSegComp (const float& x) {segComp_ = x;}
170 void PFTau::setMuonDecision(const bool& x) {muonDecision_ = x;}
171 //
172 
173 
175  if( i!=0 ) return CandidatePtr();
176  return refToPtr( jetRef() );
177 }
178 
179 
180 bool PFTau::overlap(const Candidate& theCand) const {
181  const RecoCandidate* theRecoCand=dynamic_cast<const RecoCandidate *>(&theCand);
182  return (theRecoCand!=0 && (checkOverlap(track(),theRecoCand->track())));
183 }
184 
185 void PFTau::dump(std::ostream& out) const {
186 
187  if(!out) return;
188 
189  if (pfTauTagInfoRef().isNonnull()) {
190  out << "Its TauTagInfo constituents :"<<std::endl;
191  out<<"# Tracks "<<pfTauTagInfoRef()->Tracks().size()<<std::endl;
192  out<<"# PF charged hadr. cand's "<<pfTauTagInfoRef()->PFChargedHadrCands().size()<<std::endl;
193  out<<"# PF neutral hadr. cand's "<<pfTauTagInfoRef()->PFNeutrHadrCands().size()<<std::endl;
194  out<<"# PF gamma cand's "<<pfTauTagInfoRef()->PFGammaCands().size()<<std::endl;
195  }
196  if (jetRef().isNonnull()) {
197  out << "Its constituents :"<< std::endl;
198  out<<"# PF charged hadr. cand's "<< jetRef()->chargedHadronMultiplicity()<<std::endl;
199  out<<"# PF neutral hadr. cand's "<< jetRef()->neutralHadronMultiplicity()<<std::endl;
200  out<<"# PF gamma cand's "<< jetRef()->photonMultiplicity()<<std::endl;
201  out<<"# Electron cand's "<< jetRef()->electronMultiplicity()<<std::endl;
202  }
203  out<<"in detail :"<<std::endl;
204 
205  out<<"Pt of the PFTau "<<pt()<<std::endl;
206  PFCandidateRef theLeadPFCand = leadPFChargedHadrCand();
207  if(!theLeadPFCand){
208  out<<"No Lead PFCand "<<std::endl;
209  }else{
210  out<<"Lead PFCand Particle Id " << (*theLeadPFCand).particleId() << std::endl;
211  out<<"Lead PFCand Pt "<<(*theLeadPFCand).pt()<<std::endl;
212  out<<"Lead PFCand Charge "<<(*theLeadPFCand).charge()<<std::endl;
213  out<<"Lead PFCand TrkRef "<<(*theLeadPFCand).trackRef().isNonnull()<<std::endl;
214  out<<"Inner point position (x,y,z) of the PFTau ("<<vx()<<","<<vy()<<","<<vz()<<")"<<std::endl;
215  out<<"Charge of the PFTau "<<charge()<<std::endl;
216  out<<"Et of the highest Et HCAL PFCluster "<<maximumHCALPFClusterEt()<<std::endl;
217  out<<"Number of SignalPFChargedHadrCands = "<<signalPFChargedHadrCands().size()<<std::endl;
218  out<<"Number of SignalPFGammaCands = "<<signalPFGammaCands().size()<<std::endl;
219  out<<"Number of IsolationPFChargedHadrCands = "<<isolationPFChargedHadrCands().size()<<std::endl;
220  out<<"Number of IsolationPFGammaCands = "<<isolationPFGammaCands().size()<<std::endl;
221  out<<"Sum of Pt of charged hadr. PFCandidates in isolation annulus around Lead PF = "<<isolationPFChargedHadrCandsPtSum()<<std::endl;
222  out<<"Sum of Et of gamma PFCandidates in other isolation annulus around Lead PF = "<<isolationPFGammaCandsEtSum()<<std::endl;
223 
224  }
225  // return out;
226 }
227 
228 std::ostream& operator<<(std::ostream& out, const reco::PFTau& tau) {
229 
230  if(!out) return out;
231 
232  out << std::setprecision(3)
233  <<"PFTau "
234  << " charge: " << tau.charge() << " "
235  << " pt:" <<tau.pt()<<" "
236  << " eta:" <<tau.eta()<<" "
237  << " phi:" <<tau.phi()<<" "
238  << " mass:" << tau.mass() << " "
239  << " dm: " << tau.decayMode() << " "
240  <<tau.signalPFCands().size()<<","
241  <<tau.signalPFChargedHadrCands().size()<<","
242  <<tau.signalPFGammaCands().size()<<","
243  <<tau.signalPiZeroCandidates().size()<<","
244  <<tau.signalPFNeutrHadrCands().size()<<" "
245 
246  <<tau.isolationPFCands().size()<<","
247  <<tau.isolationPFChargedHadrCands().size()<<","
248  <<tau.isolationPFGammaCands().size()<<","
249  <<tau.isolationPiZeroCandidates().size()<<","
251 
252  return out;
253 }
254 
255 }
float ecalStripSumEOverPLead_
Definition: PFTau.h:216
void setisolationPFGammaCands(const PFCandidateRefVector &)
Definition: PFTau.cc:89
bool hasMuonReference() const
Definition: PFTau.cc:155
float maximumHCALPFClusterEt() const
Et of the highest Et HCAL PFCluster.
Definition: PFTau.cc:130
PFCandidateRefVector selectedIsolationPFChargedHadrCands_
Definition: PFTau.h:201
int Charge
electric charge type
Definition: Candidate.h:37
bool checkOverlap(const R &r1, const R &r2) const
check if two components overlap
Definition: RecoCandidate.h:67
int i
Definition: DBlmapReader.cc:9
void setMuonDecision(const bool &)
Definition: PFTau.cc:170
std::vector< reco::RecoTauPiZero > isolationPiZeroCandidates_
Definition: PFTau.h:229
void setisolationPFChargedHadrCands(const PFCandidateRefVector &)
Definition: PFTau.cc:85
void setelectronPreIDOutput(const float &)
Definition: PFTau.cc:151
float isolationPFGammaCandsEtSum() const
Definition: PFTau.cc:127
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:124
void setelectronPreIDDecision(const bool &)
Definition: PFTau.cc:152
void setsignalPFNeutrHadrCands(const PFCandidateRefVector &)
Definition: PFTau.cc:78
size_t size_type
Definition: Candidate.h:32
float segComp() const
Definition: PFTau.cc:166
float hcalTotOverPLead() const
Definition: PFTau.cc:135
bool electronPreIDDecision_
Definition: PFTau.h:220
float maximumHCALPFClusterEt_
Definition: PFTau.h:209
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:142
float isolationPFChargedHadrCandsPtSum_
Definition: PFTau.h:207
float hcal3x3OverPLead() const
Definition: PFTau.cc:137
std::vector< reco::RecoTauPiZero > signalPiZeroCandidates_
Definition: PFTau.h:228
float emFraction() const
Definition: PFTau.cc:134
const PFCandidateRefVector & signalPFChargedHadrCands() const
Charged hadrons in signal region.
Definition: PFTau.cc:75
void sethcal3x3OverPLead(const float &)
Definition: PFTau.cc:147
void setisolationPFGammaCandsEtSum(const float &)
Definition: PFTau.cc:128
void setisolationPFCands(const PFCandidateRefVector &)
Definition: PFTau.cc:83
virtual double vy() const
y coordinate of vertex position
void setemFraction(const float &)
Definition: PFTau.cc:144
void setleadPFNeutralCand(const PFCandidateRef &)
Definition: PFTau.cc:67
virtual double eta() const
momentum pseudorapidity
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:167
reco::PFJetRef jetRef_
Definition: PFTau.h:185
hadronicDecayMode decayMode() const
Definition: PFTau.cc:106
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:249
float segComp_
Definition: PFTau.h:224
virtual double mass() const
mass
void dump(std::ostream &out=std::cout) const
prints information on this PFTau
Definition: PFTau.cc:185
void setjetRef(const PFJetRef &)
Definition: PFTau.cc:51
CandidatePtr sourceCandidatePtr(size_type i) const
Definition: PFTau.cc:174
bool isNull() const
Checks for null.
Definition: Ref.h:246
void setsignalPiZeroCandidates(const std::vector< RecoTauPiZero > &)
Definition: PFTau.cc:95
std::ostream & operator<<(std::ostream &, BeamSpot beam)
Definition: BeamSpot.cc:72
float leadPFChargedHadrCandsignedSipt_
Definition: PFTau.h:192
PFCandidateRefVector selectedIsolationPFNeutrHadrCands_
Definition: PFTau.h:201
PFCandidateRefVector selectedIsolationPFGammaCands_
Definition: PFTau.h:201
float caloComp() const
Definition: PFTau.cc:165
const std::vector< RecoTauPiZero > & signalPiZeroCandidates() const
Retrieve the association of signal region gamma candidates into candidate PiZeros.
Definition: PFTau.cc:92
double p4[4]
Definition: TauolaWrapper.h:92
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:168
virtual int charge() const
electric charge
PFCandidateRef leadPFCand_
Definition: PFTau.h:189
void setsignalPFChargedHadrCands(const PFCandidateRefVector &)
Definition: PFTau.cc:76
void setisolationPFChargedHadrCandsPtSum(const float &)
Definition: PFTau.cc:125
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:102
float leadPFChargedHadrCandsignedSipt() const
Definition: PFTau.cc:70
void setbremsRecoveryEOverPLead(const float &)
Definition: PFTau.cc:149
tuple out
Definition: dbtoconf.py:99
bool muonDecision_
Definition: PFTau.h:225
const std::vector< RecoTauPiZero > & isolationPiZeroCandidates() const
Retrieve the association of isolation region gamma candidates into candidate PiZeros.
Definition: PFTau.cc:99
const PFTauTagInfoRef & pfTauTagInfoRef() const
Definition: PFTau.cc:53
void sethcalMaxOverPLead(const float &)
Definition: PFTau.cc:146
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:188
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:169
virtual double pt() const
transverse momentum
PFTau * clone() const
returns a clone of the Candidate object
Definition: PFTau.cc:47
PFCandidateRef leadPFNeutralCand_
Definition: PFTau.h:189
float bremsRecoveryEOverPLead() const
Definition: PFTau.cc:139
float bremsRecoveryEOverPLead_
Definition: PFTau.h:217
float hcal3x3OverPLead_
Definition: PFTau.h:215
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:39
float hcalMaxOverPLead_
Definition: PFTau.h:214
PFTauTagInfoRef PFTauTagInfoRef_
Definition: PFTau.h:187
float electronPreIDOutput_
Definition: PFTau.h:219
hadronicDecayMode
Definition: PFTau.h:33
void setsignalPFCands(const PFCandidateRefVector &)
Definition: PFTau.cc:74
PFCandidateRefVector selectedIsolationPFCands_
Definition: PFTau.h:201
virtual bool overlap(const Candidate &) const
check overlap with another candidate
Definition: PFTau.cc:180
void setmaximumHCALPFClusterEt(const float &)
Definition: PFTau.cc:131
void setecalStripSumEOverPLead(const float &)
Definition: PFTau.cc:148
virtual double vx() const
x coordinate of vertex position
size_type size() const
Size of the RefVector.
Definition: RefVector.h:84
math::XYZPoint Point
point in the space
Definition: Candidate.h:43
void sethcalTotOverPLead(const float &)
Definition: PFTau.cc:145
Definition: DDAxes.h:10
PFCandidateRefVector selectedSignalPFChargedHadrCands_
Definition: PFTau.h:195
float emFraction_
Definition: PFTau.h:212
PFCandidateRefVector selectedSignalPFCands_
Definition: PFTau.h:195
void setelectronPreIDTrack(const reco::TrackRef &)
Definition: PFTau.cc:150
float hcalMaxOverPLead() const
Definition: PFTau.cc:136
float electronPreIDOutput() const
Definition: PFTau.cc:141
reco::TrackRef electronPreIDTrack() const
Definition: PFTau.cc:140
PFCandidateRefVector selectedSignalPFNeutrHadrCands_
Definition: PFTau.h:195
void setleadPFCand(const PFCandidateRef &)
Definition: PFTau.cc:68
virtual double phi() const
momentum azimuthal angle
reco::TrackRef electronPreIDTrack_
Definition: PFTau.h:218
PFTau()
Definition: PFTau.cc:8
float isolationPFGammaCandsEtSum_
Definition: PFTau.h:208
float caloComp_
Definition: PFTau.h:223
float ecalStripSumEOverPLead() const
Definition: PFTau.cc:138
const PFCandidateRefVector & isolationPFNeutrHadrCands() const
Definition: PFTau.cc:86
PFCandidateRefVector selectedSignalPFGammaCands_
Definition: PFTau.h:195
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:213