ATLAS Offline Software
TauTrack_v1.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // EDM include(s):
7 
8 // Local include(s):
10 #define TAUTRACK_V1_ACCESSORS
12 
14 #include "xAODTau/TauJet.h"
15 
17 
18 #include <cmath>
19 
20 namespace xAOD {
21 
23  : IParticle() {
24  }
25 
29 
30  // Pion mass, as assumed for the track:
31  static const double PION_MASS = ParticleConstants::chargedPionMassInMeV;
32 
34  FourMom_t p4;
35  p4.SetPtEtaPhiM( pt(), eta(), phi(), m());
36  return p4;
37  }
38 
40  return GenVecFourMom_t(pt(), eta(), phi(), m());
41  }
42 
43  void TauTrack_v1::setP4(double pt, double eta, double phi, double /*m*/) {
44 
45  // Set the raw variables:
46  static const Accessor< float > acc1( "pt" );
47  static const Accessor< float > acc2( "eta" );
48  static const Accessor< float > acc3( "phi" );
49  acc1( *this ) = pt;
50  acc2( *this ) = eta;
51  acc3( *this ) = phi;
52 
53  return;
54  }
55 
56 
59  }
60 
61 
62  double TauTrack_v1::rapidity() const {
63  return genvecP4().Rapidity();
64  }
65 
66  double TauTrack_v1::m() const {
67  return PION_MASS;
68  }
69 
70  double TauTrack_v1::e() const {
71  return genvecP4().E();
72  }
73 
75 
77  static const Accessor< TauTrack_v1::TrackFlagType > trackFlags("flagSet");
78  TrackFlagType f(trackFlags(*this));
79  std::bitset<8*sizeof(TrackFlagType)> thisTracksFlags(f);
80  return thisTracksFlags[flag];
81  }
82 
83  bool TauTrack_v1::flagWithMask(unsigned int flags) const{
84  static const Accessor< TauTrack_v1::TrackFlagType > trackFlags("flagSet");
85  TrackFlagType f(trackFlags(*this));
86  return ((f&flags)==flags);
87  }
88 
90  static const Accessor< TauTrack_v1::TrackFlagType > trackFlags("flagSet");
91  TrackFlagType& f(trackFlags(*this));
92  std::bitset<8*sizeof(TrackFlagType)> thisTracksFlags(f);
93  thisTracksFlags[flag] = value;
94  f = thisTracksFlags.to_ulong();
95  }
96 
97  // superseded by z0sinthetaTJVA()
99  const xAOD::TrackParticle* xTrackParticle = this->track();
100  const xAOD::TauJet* tau = dynamic_cast<const xAOD::TauJet*> (&part);
101  if( tau ) {
102  float zv = 0.0;
103  if( tau->vertexLink().isValid() ) {
104  zv = tau->vertex()->z();
105  }
106  return ( ( xTrackParticle->z0() + xTrackParticle->vz() - zv ) *
107  std::sin( xTrackParticle->theta() ) );
108  } else {
109  std::cerr << "ERROR xAOD::TauTrack::z0sinThetaTJVA cannot get TauJet" << std::endl;
110  return 0;
111  }
112  }
113 
114  static const SG::Accessor< float > d0TJVAAcc( "d0TJVA" );
115  float TauTrack_v1::d0TJVA() const {
116  return d0TJVAAcc(*this);
117  }
118 
119  static const SG::Accessor< float > d0SigTJVAAcc( "d0SigTJVA" );
120  float TauTrack_v1::d0SigTJVA() const {
121  return d0SigTJVAAcc(*this);
122  }
123 
124  static const SG::Accessor< float > z0sinthetaTJVAAcc( "z0sinthetaTJVA" );
126  return z0sinthetaTJVAAcc(*this);
127  }
128 
129  static const SG::Accessor< float > z0sinthetaSigTJVAAcc( "z0sinthetaSigTJVA" );
131  return z0sinthetaSigTJVAAcc(*this);
132  }
133 
134  float TauTrack_v1::rConv() const{
135  return std::sqrt(std::fabs(this->d0TJVA())*this->pt()/(0.3 /*0.15*2.*/));
136  }
137 
138  float TauTrack_v1::rConvII() const{
139  return std::sqrt( std::fabs( this->d0TJVA() * this->pt() ) / (0.3) )*(this->d0TJVA()/fabs(this->d0TJVA()))*this->track()->charge();
140  }
141 
143  const xAOD::TauJet* tau = dynamic_cast<const xAOD::TauJet*> (&part);
144  if(tau)
145  return tau->jet()->p4().DeltaR(this->p4());//this function should take jet seed as input
146  else {
147  std::cerr << "ERROR xAOD::TauTrack::z0sinThetaTJVA cannot get TauJet" << std::endl;
148  }
149  return 0.;
150  }
151 
153  // Get the detail accessor:
154  const Accessor< float >* acc = xAODTau::trackDetailsAccessorV3<float>( detail );
155  if( ! acc ) return false;
156  if( ! acc->isAvailable( *this ) ) return false;
157 
158  // Retrieve the detail value:
159  value = ( *acc )( *this );
160  return true;
161 
162  }
163 
165  ( *( xAODTau::trackDetailsAccessorV3<float>( detail ) ) )( *this ) = value;
166  }
167 
168  // setters and getters for bdt values
170  std::vector<float>,
171  bdtScores,
172  setBdtScores )
173 
174  static const SG::Accessor< std::vector<float> > bdtScoreAcc( "bdtScores" );
175 
176  float TauTrack_v1::bdtScore( size_t i) const {
177  return bdtScoreAcc(*this).at(i);
178  }
179 
180  //number of clusters
181  size_t TauTrack_v1::nBdtScores() const{
182  return bdtScoreAcc( *this ).size();
183  }
184 
186  void TauTrack_v1::addBdtScore( const float score){
187  bdtScoreAcc( *this ).push_back(score);
188  }
189 
192  bdtScoreAcc( *this ).clear();
193  }
194 
195  // ----------------------------------------------------------------------------
196  // setters and getters for the track link
197  // ----------------------------------------------------------------------------
200  trackLinks,
201  setTrackLinks )
202 
203  static const SG::Accessor< TauTrack_v1::TrackParticleLinks_t > trackAcc( "trackLinks" );
204 
205  const TrackParticle* TauTrack_v1::track() const {
206  return ( *trackAcc( *this )[0] );
207  }
208 
210  //clearTrackLinks();
211  trackAcc( *this ).push_back( tr );
212  return;
213  }
214 
216  trackAcc( *this ).clear();
217  return;
218  }
219 
220 
221 
222 } // namespace xAOD
xAOD::TauTrack_v1::type
virtual Type::ObjectType type() const
The type of the object as a simple enumeration.
Definition: TauTrack_v1.cxx:57
xAOD::TauJetParameters::TauTrackFlag
TauTrackFlag
Enum for tau track flags.
Definition: TauDefs.h:400
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
python.CaloBCIDAvgAlgConfig.acc3
def acc3
Definition: CaloBCIDAvgAlgConfig.py:69
xAOD::AUXSTORE_PRIMITIVE_SETTER_AND_GETTER
AUXSTORE_PRIMITIVE_SETTER_AND_GETTER(BTagging_v1, float, IP2D_pb, setIP2D_pb) AUXSTORE_PRIMITIVE_SETTER_AND_GETTER(BTagging_v1
xAOD::TauTrack_v1::setFlag
void setFlag(TauJetParameters::TauTrackFlag flag, bool value)
Definition: TauTrack_v1.cxx:89
xAOD::TauJet_v3::jet
const Jet * jet() const
xAOD::TauTrack_v1::p4
virtual FourMom_t p4() const
The full 4-momentum of the particle.
Definition: TauTrack_v1.cxx:33
xAOD::TauTrack_v1::dRJetSeedAxis
float dRJetSeedAxis(const xAOD::IParticle &) const
Definition: TauTrack_v1.cxx:142
xAOD::TauTrack_v1::d0SigTJVA
float d0SigTJVA() const
Definition: TauTrack_v1.cxx:120
SG::Accessor< float >
AuxStoreAccessorMacros.h
xAOD::TauTrack_v1::clearTrackLinks
void clearTrackLinks()
Remove all tracks from the collection.
Definition: TauTrack_v1.cxx:215
xAOD::TrackParticle_v1::charge
float charge() const
Returns the charge.
Definition: TrackParticle_v1.cxx:151
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
AthenaPoolTestRead.flags
flags
Definition: AthenaPoolTestRead.py:8
xAOD::TauTrack_v1::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
xAOD::TrackParticle_v1::vz
float vz() const
The z origin for the parameters.
TauJetParameters
Definition: TauJetParameters.h:23
xAOD::TrackParticle_v1::z0
float z0() const
Returns the parameter.
xAOD::TauTrack_v1::z0sinthetaSigTJVA
float z0sinthetaSigTJVA() const
Definition: TauTrack_v1.cxx:130
xAOD::TauTrack_v1::TauTrack_v1
TauTrack_v1()
Default constructor.
Definition: TauTrack_v1.cxx:22
athena.value
value
Definition: athena.py:124
xAOD::TauTrack_v1::flag
bool flag(TauJetParameters::TauTrackFlag flag) const
Definition: TauTrack_v1.cxx:76
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
detail
Definition: extract_histogram_tag.cxx:14
xAOD::TauTrack_v1::TrackParticleLinks_t
std::vector< ElementLink< xAOD::TrackParticleContainer > > TrackParticleLinks_t
Definition: TauTrack_v1.h:91
xAOD::pt
setRcore setEtHad setFside pt
Definition: TrigPhoton_v1.cxx:106
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:41
xAOD::TauTrack_v1::detail
bool detail(TauJetParameters::TrackDetail detail, float &value) const
Definition: TauTrack_v1.cxx:152
xAOD::IParticle::FourMom_t
TLorentzVector FourMom_t
Definition of the 4-momentum type.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:69
xAOD::phi
setEt phi
Definition: TrigEMCluster_v1.cxx:29
xAOD::CompositeParticle
CompositeParticle_v1 CompositeParticle
Define the latest version of the composite particle class.
Definition: Event/xAOD/xAODParticleEvent/xAODParticleEvent/CompositeParticle.h:17
ParticleConstants::PDG2011::chargedPionMassInMeV
constexpr double chargedPionMassInMeV
the mass of the charged pion (in MeV)
Definition: ParticleConstants.h:41
xAOD::TauTrack_v1::GenVecFourMom_t
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > GenVecFourMom_t
Base 4 Momentum type for taus.
Definition: TauTrack_v1.h:46
xAOD::TauTrack_v1::rConvII
float rConvII() const
Definition: TauTrack_v1.cxx:138
xAOD::TauTrack_v1::d0TJVA
float d0TJVA() const
Definition: TauTrack_v1.cxx:115
ParticleConstants.h
lumiFormat.i
int i
Definition: lumiFormat.py:85
python.CaloBCIDAvgAlgConfig.acc1
def acc1
Definition: CaloBCIDAvgAlgConfig.py:49
xAOD::AUXSTORE_PRIMITIVE_GETTER_WITH_CAST
AUXSTORE_PRIMITIVE_GETTER_WITH_CAST(Muon_v1, uint8_t, Muon_v1::EnergyLossType, energyLossType) AUXSTORE_PRIMITIVE_SETTER_WITH_CAST(Muon_v1
xAOD::TauTrack_v1::addBdtScore
void addBdtScore(const float score)
add a cluster to the tau
Definition: TauTrack_v1.cxx:186
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
master.flag
bool flag
Definition: master.py:29
xAOD::TauTrack_v1::z0sinthetaTJVA
float z0sinthetaTJVA() const
Definition: TauTrack_v1.cxx:125
xAOD::TauJetParameters::TrackDetail
TrackDetail
Definition: TauDefs.h:419
python.CaloBCIDAvgAlgConfig.acc2
def acc2
Definition: CaloBCIDAvgAlgConfig.py:59
hist_file_dump.f
f
Definition: hist_file_dump.py:140
xAOD::Vertex_v1::z
float z() const
Returns the z position.
xAOD::TauTrack_v1::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
xAOD::TauTrack_v1::nBdtScores
size_t nBdtScores() const
Definition: TauTrack_v1.cxx:181
xAOD::TauTrack_v1::flagWithMask
bool flagWithMask(unsigned int) const
Definition: TauTrack_v1.cxx:83
xAOD::TauTrack_v1::setP4
void setP4(double pt, double eta, double phi, double m)
Set methods for IParticle values.
Definition: TauTrack_v1.cxx:43
xAOD::TauTrack_v1::setDetail
void setDetail(TauJetParameters::TrackDetail detail, float value)
Definition: TauTrack_v1.cxx:164
xAOD::TauTrack_v1::pt
virtual double pt() const
The transverse momentum ( ) of the particle.
xAOD::TauTrack_v1::TrackFlagType
uint16_t TrackFlagType
Definition: TauTrack_v1.h:61
xAOD::TauTrack_v1::m
virtual double m() const
The invariant mass of the particle.
Definition: TauTrack_v1.cxx:66
xAOD::TauTrack_v1::addTrackLink
void addTrackLink(const ElementLink< TrackParticleContainer > &tr)
add a track to the collection
Definition: TauTrack_v1.cxx:209
xAOD::TauTrack_v1::rapidity
virtual double rapidity() const
The true rapidity (y) of the particle.
Definition: TauTrack_v1.cxx:62
xAOD::score
@ score
Definition: TrackingPrimitives.h:514
xAOD::TauTrack_v1::rConv
float rConv() const
Definition: TauTrack_v1.cxx:134
TrackParticle.h
xAOD::TauTrack_v1::e
virtual double e() const
The total energy of the particle.
Definition: TauTrack_v1.cxx:70
xAOD::TauTrack_v1::bdtScore
float bdtScore(size_t i) const
xAOD::Jet_v1::p4
virtual FourMom_t p4() const
The full 4-momentum of the particle.
Definition: Jet_v1.cxx:71
xAOD::TauTrack_v1::genvecP4
GenVecFourMom_t genvecP4() const
The full 4-momentum of the particle : internal taus type.
Definition: TauTrack_v1.cxx:39
xAOD::TauJet_v3::vertex
const Vertex * vertex() const
xAOD::TauTrack_v1
Definition: TauTrack_v1.h:27
TauJetAccessors_v3.h
TauJet.h
xAOD::TauTrack_v1::clearBdtScores
void clearBdtScores()
Remove all clusters from the tau.
Definition: TauTrack_v1.cxx:191
xAOD::TauTrack_v1::track
const TrackParticle * track() const
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
xAODType::ObjectType
ObjectType
Type of objects that have a representation in the xAOD EDM.
Definition: ObjectType.h:32
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
xAOD::TrackParticle_v1::theta
float theta() const
Returns the parameter, which has range 0 to .
TauTrack_v1.h
xAOD::TauJet_v3::vertexLink
const VertexLink_t & vertexLink() const
xAOD::TauTrack_v1::z0sinThetaTJVA
float z0sinThetaTJVA(const xAOD::IParticle &) const
Definition: TauTrack_v1.cxx:98
xAOD::AUXSTORE_OBJECT_SETTER_AND_GETTER
AUXSTORE_OBJECT_SETTER_AND_GETTER(CaloRings_v1, RingSetLinks, ringSetLinks, setRingSetLinks) unsigned CaloRings_v1
Definition: CaloRings_v1.cxx:27