ATLAS Offline Software
Loading...
Searching...
No Matches
TauJet_v3.h
Go to the documentation of this file.
1// Dear emacs, this is -*- c++ -*-
2
3/*
4 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5*/
6
7// $Id: TauJet_v3.h 725228 2016-02-19 22:59:42Z griffith $
8#ifndef XAODTAU_VERSIONS_TAUJET_V3_H
9#define XAODTAU_VERSIONS_TAUJET_V3_H
10
11
12// Core include(s):
13#include "AthLinks/ElementLink.h"
14
15
16// xAOD include(s):
17#include "xAODBase/IParticle.h"
19#include "xAODTau/TauDefs.h"
21#include "xAODTau/TauTrack.h"
27
28// ROOT include(s):
29#include "Math/Vector4D.h"
30
31namespace xAOD {
32
33
34
41 class TauJet_v3 : public IParticle {
42
43 public:
45 TauJet_v3();
46
49
51 virtual double pt() const;
53 virtual double eta() const;
55 virtual double phi() const;
57 virtual double e() const;
58
60 virtual double m() const;
62 virtual double rapidity() const;
63
65 virtual FourMom_t p4() const;
66 virtual FourMom_t p4(const TauJetParameters::TauCalibType calib) const;
67
69 typedef ROOT::Math::LorentzVector<ROOT::Math::PtEtaPhiM4D<double> > GenVecFourMom_t;
70
74
76 void setP4(double pt, double eta, double phi, double m);
77 bool setP4(const TauJetParameters::TauCalibType calib, double pt, double eta, double phi, double m);
78
79 //setters and getters for the individual 4-vector components at different calibration levels
80 double ptJetSeed() const;
81 double etaJetSeed() const;
82 double phiJetSeed() const;
83 double mJetSeed() const;
84
85 double ptDetectorAxis() const;
86 double etaDetectorAxis() const;
87 double phiDetectorAxis() const;
88 double mDetectorAxis() const;
89
90 double ptIntermediateAxis() const;
91 double etaIntermediateAxis() const;
92 double phiIntermediateAxis() const;
93 double mIntermediateAxis() const;
94
95 double ptTauEnergyScale() const;
96 double etaTauEnergyScale() const;
97 double phiTauEnergyScale() const;
98 double mTauEnergyScale() const;
99
100 double ptTauEtaCalib() const;
101 double etaTauEtaCalib() const;
102 double phiTauEtaCalib() const;
103 double mTauEtaCalib() const;
104
108 double mPanTauCellBasedProto() const;
109
110 double ptPanTauCellBased() const;
111 double etaPanTauCellBased() const;
112 double phiPanTauCellBased() const;
113 double mPanTauCellBased() const;
114
115 double ptTrigCaloOnly() const;
116 double etaTrigCaloOnly() const;
117 double phiTrigCaloOnly() const;
118 double mTrigCaloOnly() const;
119
120 double ptFinalCalib() const;
121 double etaFinalCalib() const;
122 double phiFinalCalib() const;
123 double mFinalCalib() const;
124
126 virtual Type::ObjectType type() const;
127
129
130 // the summed up charge of all tau tracks
131 float charge() const;
132
133 // set the charge
134 void setCharge(float);
135
137 unsigned int ROIWord() const;
138
139 // set the ROIWord, needed by TauTrigger
140 void setROIWord(unsigned int);
141
144 bool hasDiscriminant( TauJetParameters::TauID discID ) const;
145
148 double discriminant( TauJetParameters::TauID discID ) const;
149
153 void setDiscriminant( TauJetParameters::TauID discID, double disc );
154
157 bool isTau( TauJetParameters::IsTauFlag flag ) const;
158
162 void setIsTau( TauJetParameters::IsTauFlag flag, bool value );
163
165 bool detail( TauJetParameters::Detail detail, int& value ) const;
166 bool detail( TauJetParameters::Detail detail, float& value ) const;
167 bool detail( TauJetParameters::Detail detail, const IParticle* &value ) const;
168 void setDetail( TauJetParameters::Detail detail, int value );
169 void setDetail( TauJetParameters::Detail detail, float value );
170 void setDetail( TauJetParameters::Detail detail, const IParticle* value, const IParticleContainer* cont=0 );
171
172 // getter for specialized types. Compilation error if used with other types.
173 template <class T>
175 {
176 T temp;
177 if (this->detail(detail,temp)) return temp;
178 else return 0;
179 }
180
186
187 // getter for specialized types. Compilation error if used with other types.
188 template <class T>
190 {
191 T temp;
192 if (this->panTauDetail(panTauDetail,temp)) return temp;
193 else return 0;
194 }
195
196 //seed jet
198
199 const JetLink_t& jetLink() const;
200
201 void setJetLink( const JetLink_t& jetLink );
202
203 void setJet( const xAOD::JetContainer *cont, const xAOD::Jet *jet );
204
205 const Jet* jet() const;
206
207
208 //vertex that the tau comes from
210
211 const VertexLink_t& vertexLink() const;
212
214
215 void setVertex( const xAOD::VertexContainer *cont, const xAOD::Vertex *vertex );
216
217 const Vertex* vertex() const;
218
219
220 //secondary vertex that the tau decays in
221
223
225
226 void setSecondaryVertex( const xAOD::VertexContainer *cont, const xAOD::Vertex *vertex );
227
228 const Vertex* secondaryVertex() const;
229
230
231 //tauTracks
232 typedef std::vector< ElementLink< xAOD::TauTrackContainer > > TauTrackLinks_t;
233
235 const TauTrackLinks_t tauTrackLinksWithMask(unsigned int) const;
238
239
240 //retrieve all TauJetAuxContainer::tauTrackLinks, regardless of flags
241 const TauTrackLinks_t& allTauTrackLinks() const;
242 //set all TauJetAuxContainer::tauTrackLinks
243 void setAllTauTrackLinks( const TauTrackLinks_t& tauTracks );
245 const TauTrack* track( size_t i, TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged, int* container_index=0 ) const;
246 const TauTrack* trackWithMask( size_t i, unsigned int mask, int* container_index=0 ) const;
247#ifndef XAOD_STANDALONE
248 //see TauxAODHelpers for a solution in XAOD_STANDALONE
250#endif
254 std::vector<const TauTrack*> tracksWithMask(unsigned int mask ) const;
256 std::vector<const TauTrack*> allTracks() const;
257 //number of tracks with a given classification
259 //number of tracks classified as classifiedCharged
260 size_t nTracksCharged() const;
261 //number of tracks classified as classifiedIsolation
262 size_t nTracksIsolation() const;
263 //number of tracks with a given classification
264 size_t nTracksWithMask(unsigned int classification) const;
265 //all tracks regardless of classification or lack thereof
266 size_t nAllTracks() const;
270 void clearTauTrackLinks();
271
272 //clusters
273 typedef std::vector< ElementLink< xAOD::IParticleContainer > > IParticleLinks_t;
274
276
279 const IParticle* cluster( size_t i) const;
280
281 //* @brief Get the clusters */
282 std::vector<const IParticle*> clusters() const;
283
286 //number of cluster with associated to tau
287 size_t nClusters() const;
291 void clearClusterLinks();
292
293 //* @brief Get the clusters corrected to poinst at tau vertex*/
294 std::vector<xAOD::CaloVertexedTopoCluster> vertexedClusters() const;
295
297
298 void setPi0Links( const IParticleLinks_t& pi0s );
300 const IParticle* pi0( size_t i) const;
301 //number of pi0 with associated to tau
302 size_t nPi0s() const;
306 void clearPi0Links();
307
308
309 //name accessors for trackFilterProngs
310 int trackFilterProngs() const;
311 //name accessors for trackFilterProngs
313
314 //name accessors for trackFilterQuality
316 //name accessors for trackFilterQuality
318
319 //name accessors for pi0ConeDR
320 float pi0ConeDR() const;
321 //name accessors for pi0ConeDR
322 void setPi0ConeDR(float);
323
324
325 typedef std::vector< ElementLink< xAOD::PFOContainer > > PFOLinks_t;
326
327
328 //photon shot PFOs
330
331 void setHadronicPFOLinks( const PFOLinks_t& hadronicPFOs );
333 const PFO* hadronicPFO( size_t i ) const;
335 size_t nHadronicPFOs() const;
340
341
342 //photon shot PFOs
343 const PFOLinks_t& shotPFOLinks() const;
344
345 void setShotPFOLinks( const PFOLinks_t& shotPFOs );
347 const PFO* shotPFO( size_t i ) const;
349 size_t nShotPFOs() const;
353 void clearShotPFOLinks();
354
355
357 //
358 //charged PFOs
360
361 void setChargedPFOLinks( const PFOLinks_t& chargedPFOs );
363 const PFO* chargedPFO( size_t i ) const;
365 size_t nChargedPFOs() const;
370
371
372 //neutral PFOs
374
375 void setNeutralPFOLinks( const PFOLinks_t& neutralPFOs );
377 const PFO* neutralPFO( size_t i ) const;
379 size_t nNeutralPFOs() const;
384
385
386 //pi0 PFOs
387 const PFOLinks_t& pi0PFOLinks() const;
388
389 void setPi0PFOLinks( const PFOLinks_t& pi0PFOs );
391 const PFO* pi0PFO( size_t i ) const;
393 size_t nPi0PFOs() const;
397 void clearPi0PFOLinks();
398
399
400
401
403 //
404 //cellbased_charged PFOs
406
407 void setProtoChargedPFOLinks( const PFOLinks_t& protoChargedPFOs );
409 const PFO* protoChargedPFO( size_t i ) const;
411 size_t nProtoChargedPFOs() const;
416
417
418 //cellbased_neutral PFOs
420
421 void setProtoNeutralPFOLinks( const PFOLinks_t& protoNeutralPFOs );
423 const PFO* protoNeutralPFO( size_t i ) const;
425 size_t nProtoNeutralPFOs() const;
430
431
432 //pi0 PFOs
434
435 void setProtoPi0PFOLinks( const PFOLinks_t& protoPi0PFOs );
437 const PFO* protoPi0PFO( size_t i ) const;
439 size_t nProtoPi0PFOs() const;
444
445
446
448
449
450 void dump() const;
451
452
453 }; // class TauJet
454
455} // namespace xAOD
456
457
458// Declare IParticle as a base class of TauJet_v3:
461
462#endif // XAODTAU_VERSIONS_TAUJET_V3_H
463
464// LocalWords: newROIWord
An STL vector of pointers that by default owns its pointed-to elements.
#define DATAVECTOR_BASE(T, BASE)
Declare base class info to DataVector.
Definition DataVector.h:649
Evaluate cluster kinematics with a different vertex / signal state.
State
enum of possible signal states.
Class providing the definition of the 4-vector interface.
IParticle()=default
TLorentzVector FourMom_t
Definition of the 4-momentum type.
Class describing a tau jet.
Definition TauJet_v3.h:41
void clearHadronicPFOLinks()
Remove all hadronic PFOs from the tau.
xAODTAU_return_type< T >::type detail(TauJetParameters::Detail detail) const
Definition TauJet_v3.h:174
const IParticleLinks_t & clusterLinks() const
virtual double phi() const
The azimuthal angle ( ) of the particle.
size_t nPi0s() const
double etaTauEtaCalib() const
void setShotPFOLinks(const PFOLinks_t &shotPFOs)
void setProtoPi0PFOLinks(const PFOLinks_t &protoPi0PFOs)
const PFOLinks_t & hadronicPFOLinks() const
void setJetLink(const JetLink_t &jetLink)
size_t nNeutralPFOs() const
Get the number of neutral PFO particles associated with this tau.
double phiPanTauCellBasedProto() const
double etaFinalCalib() const
double phiJetSeed() const
size_t nProtoPi0PFOs() const
Get the number of cellbased_pi0 PFO particles associated with this tau.
double ptTauEnergyScale() const
void setPi0PFOLinks(const PFOLinks_t &pi0PFOs)
const PFO * hadronicPFO(size_t i) const
Get the pointer to a given hadronic PFO associated with this tau.
void setROIWord(unsigned int)
double mJetSeed() const
void setPanTauDetail(TauJetParameters::PanTauDetails panTauDetail, int value)
double ptPanTauCellBased() const
std::vector< xAOD::CaloVertexedTopoCluster > vertexedClusters() const
void setPi0Links(const IParticleLinks_t &pi0s)
const PFO * pi0PFO(size_t i) const
Get the pointer to a given pi0 PFO associated with this tau.
double etaTauEnergyScale() const
double ptPanTauCellBasedProto() const
void clearPi0PFOLinks()
Remove all pi0 PFOs from the tau.
const PFOLinks_t & pi0PFOLinks() const
void clearTauTrackLinks()
Remove all tracks from the tau.
bool hasDiscriminant(TauJetParameters::TauID discID) const
Check if class contains requested discriminant.
const PFO * protoChargedPFO(size_t i) const
Get the pointer to a given cellbased_charged PFO associated with this tau.
const IParticle * pi0(size_t i) const
Get the pointer to a given pi0 associated with this tau.
float charge() const
unsigned int ROIWord() const
the ROIWord, in case TauJet is used in EF trigger
double mTauEnergyScale() const
double ptDetectorAxis() const
TauTrackLinks_t & allTauTrackLinksNonConst()
In order to sort track links.
void setHadronicPFOLinks(const PFOLinks_t &hadronicPFOs)
void addProtoPi0PFOLink(const ElementLink< PFOContainer > &pfo)
add a cellbased_pi0 PFO to the tau
size_t nShotPFOs() const
Get the number of shot PFO particles associated with this tau.
const PFO * protoPi0PFO(size_t i) const
Get the pointer to a given cellbased_pi0 PFO associated with this tau.
double mFinalCalib() const
virtual FourMom_t p4() const
The full 4-momentum of the particle.
Definition TauJet_v3.cxx:96
virtual double pt() const
The transverse momentum ( ) of the particle.
double phiFinalCalib() const
void clearPi0Links()
Remove all pi0s from the tau.
virtual double e() const
The total energy of the particle.
Definition TauJet_v3.cxx:87
double phiDetectorAxis() const
size_t nProtoChargedPFOs() const
Get the number of cellbased_charged PFO particles associated with this tau.
double etaDetectorAxis() const
const VertexLink_t & vertexLink() const
void setCharge(float)
std::vector< const TauTrack * > tracksWithMask(unsigned int mask) const
Get the v<const pointer> to a given tauTrack collection associated with this tau.
void dump() const
void addNeutralPFOLink(const ElementLink< PFOContainer > &pfo)
add a neutral PFO to the tau
const PFO * shotPFO(size_t i) const
Get the pointer to a given shot PFO associated with this tau.
double ptTauEtaCalib() const
void setAllTauTrackLinks(const TauTrackLinks_t &tauTracks)
double ptIntermediateAxis() const
virtual double rapidity() const
The true rapidity (y) of the particle.
Definition TauJet_v3.cxx:92
ElementLink< xAOD::JetContainer > JetLink_t
Definition TauJet_v3.h:197
const PFOLinks_t & protoChargedPFOLinks() const
cellbased pfos
int trackFilterQuality() const
std::vector< ElementLink< xAOD::PFOContainer > > PFOLinks_t
Definition TauJet_v3.h:325
size_t nPi0PFOs() const
Get the number of pi0 PFO particles associated with this tau.
const VertexLink_t & secondaryVertexLink() const
const JetLink_t & jetLink() const
GenVecFourMom_t genvecP4() const
The full 4-momentum of the particle : internal taus type.
void addProtoChargedPFOLink(const ElementLink< PFOContainer > &pfo)
add a cellbased_charged PFO to the tau
void clearClusterLinks()
Remove all clusters from the tau.
void setVertexLink(const VertexLink_t &vertexLink)
void setJet(const xAOD::JetContainer *cont, const xAOD::Jet *jet)
const TauTrackLinks_t tauTrackLinksWithMask(unsigned int) const
void clearChargedPFOLinks()
Remove all charged PFOs from the tau.
size_t nClusters() const
const PFO * chargedPFO(size_t i) const
Get the pointer to a given charged PFO associated with this tau.
void setPi0ConeDR(float)
const TauTrack * trackWithMask(size_t i, unsigned int mask, int *container_index=0) const
void setProtoChargedPFOLinks(const PFOLinks_t &protoChargedPFOs)
ElementLink< xAOD::VertexContainer > VertexLink_t
Definition TauJet_v3.h:209
std::vector< ElementLink< xAOD::IParticleContainer > > IParticleLinks_t
Definition TauJet_v3.h:273
void setSecondaryVertexLink(const VertexLink_t &vertexLink)
const PFOLinks_t & shotPFOLinks() const
size_t nHadronicPFOs() const
Get the number of hadronic PFO particles associated with this tau.
double phiTrigCaloOnly() const
TauJet_v3()
Default constructor.
Definition TauJet_v3.cxx:21
size_t nChargedPFOs() const
Get the number of charged PFO particles associated with this tau.
void clearShotPFOLinks()
Remove all shot PFOs from the tau.
double etaTrigCaloOnly() const
float pi0ConeDR() const
double phiTauEtaCalib() const
std::vector< ElementLink< xAOD::TauTrackContainer > > TauTrackLinks_t
Definition TauJet_v3.h:232
void addPi0Link(const ElementLink< IParticleContainer > &tr)
add a pi0 link to the tau
void setDiscriminant(TauJetParameters::TauID discID, double disc)
Set value of discriminant.
void addChargedPFOLink(const ElementLink< PFOContainer > &pfo)
add a charged PFO to the tau
void setDetail(TauJetParameters::Detail detail, int value)
void setTrackFilterQuality(int)
void clearProtoChargedPFOLinks()
Remove all cellbased_charged PFOs from the tau.
FourMom_t calibratedCluster(size_t i, xAOD::CaloCluster::State state=xAOD::CaloCluster::State::CALIBRATED) const
Get TLV to a given cluster in calibrated state.
double etaPanTauCellBasedProto() const
void setVertex(const xAOD::VertexContainer *cont, const xAOD::Vertex *vertex)
const Vertex * vertex() const
TauTrack * trackNonConst(size_t i, TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged)
void setP4(double pt, double eta, double phi, double m)
Set methods for IParticle values.
const IParticle * cluster(size_t i) const
Get the pointer to a given cluster associated with this tau.
std::vector< const IParticle * > clusters() const
double mDetectorAxis() const
void addPi0PFOLink(const ElementLink< PFOContainer > &pfo)
add a pi0 PFO to the tau
void clearProtoPi0PFOLinks()
Remove all cellbased_pi0 PFOs from the tau.
double ptJetSeed() const
double ptTrigCaloOnly() const
double ptFinalCalib() const
void setTrackFilterProngs(int)
void clearNeutralPFOLinks()
Remove all neutral PFOs from the tau.
void setIsTau(TauJetParameters::IsTauFlag flag, bool value)
Set Flag for tau acceptance based on predefined arbitrary criteria.
size_t nTracksIsolation() const
int trackFilterProngs() const
double discriminant(TauJetParameters::TauID discID) const
Get value of discriminant.
virtual double m() const
The invariant mass of the particle.
xAODTAU_return_type< T >::type panTauDetail(TauJetParameters::PanTauDetails panTauDetail) const
Definition TauJet_v3.h:189
size_t nTracksWithMask(unsigned int classification) const
void setProtoNeutralPFOLinks(const PFOLinks_t &protoNeutralPFOs)
void setSecondaryVertex(const xAOD::VertexContainer *cont, const xAOD::Vertex *vertex)
size_t nAllTracks() const
double mIntermediateAxis() const
double mPanTauCellBased() const
size_t nTracksCharged() const
bool panTauDetail(TauJetParameters::PanTauDetails panTauDetail, int &value) const
Get and set values of pantau details variables via enum.
void setClusterLinks(const IParticleLinks_t &clusters)
virtual Type::ObjectType type() const
The type of the object as a simple enumeration.
double etaJetSeed() const
bool isTau(TauJetParameters::IsTauFlag flag) const
Get Flag for tau acceptance based on predefined arbitrary criteria.
void clearProtoNeutralPFOLinks()
Remove all cellbased_neutral PFOs from the tau.
const Jet * jet() const
double phiTauEnergyScale() const
void addShotPFOLink(const ElementLink< PFOContainer > &pfo)
add a shot PFO to the tau
double etaPanTauCellBased() const
const TauTrackLinks_t tauTrackLinks(TauJetParameters::TauTrackFlag=TauJetParameters::TauTrackFlag::classifiedCharged) const
void setNeutralPFOLinks(const PFOLinks_t &neutralPFOs)
const PFO * protoNeutralPFO(size_t i) const
Get the pointer to a given cellbased_neutral PFO associated with this tau.
void addHadronicPFOLink(const ElementLink< PFOContainer > &pfo)
add a hadronic PFO to the tau
size_t nProtoNeutralPFOs() const
Get the number of cellbased_neutral PFO particles associated with this tau.
std::vector< const TauTrack * > allTracks() const
Get the v<const pointer> to all tracks associated with this tau, regardless of classification.
const TauTrackLinks_t & allTauTrackLinks() const
double etaIntermediateAxis() const
void addClusterLink(const ElementLink< IParticleContainer > &tr)
add a cluster link to the tau
const IParticleLinks_t & pi0Links() const
const Vertex * secondaryVertex() const
const PFOLinks_t & neutralPFOLinks() const
void addProtoNeutralPFOLink(const ElementLink< PFOContainer > &pfo)
add a cellbased_neutral PFO to the tau
const PFOLinks_t & chargedPFOLinks() const
default pfos
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > GenVecFourMom_t
Base 4 Momentum type for taus.
Definition TauJet_v3.h:69
double mTauEtaCalib() const
const PFOLinks_t & protoPi0PFOLinks() const
void addTauTrackLink(const ElementLink< TauTrackContainer > &tr)
add a TauTrack to the tau
void setChargedPFOLinks(const PFOLinks_t &chargedPFOs)
const PFO * neutralPFO(size_t i) const
Get the pointer to a given neutral PFO associated with this tau.
virtual double eta() const
The pseudorapidity ( ) of the particle.
double phiIntermediateAxis() const
size_t nTracks(TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged) const
double phiPanTauCellBased() const
double mPanTauCellBasedProto() const
std::vector< const TauTrack * > tracks(TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged) const
Get the v<const pointer> to a given tauTrack collection associated with this tau.
double mTrigCaloOnly() const
const PFOLinks_t & protoNeutralPFOLinks() const
TauTrackFlag
Enum for tau track flags.
Definition TauDefs.h:400
TauCalibType
Enum for tau calib type.
Definition TauDefs.h:335
Detail
Enum for tau parameters - used mainly for backward compatibility with the analysis code.
Definition TauDefs.h:156
PanTauDetails
Enum for tau details (scalar) calculated by pantau.
Definition TauDefs.h:355
TauID
Enum for discriminants.
Definition TauDefs.h:46
IsTauFlag
Enum for IsTau flags.
Definition TauDefs.h:116
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Jet_v1 Jet
Definition of the current "jet version".
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
Vertex_v1 Vertex
Define the latest version of the vertex class.
TauTrack_v1 TauTrack
Definition of the current version.
Definition TauTrack.h:16
JetContainer_v1 JetContainer
Definition of the current "jet container version".
DataVector< IParticle > IParticleContainer
Simple convenience declaration of IParticleContainer.