ATLAS Offline Software
TauTrack_v1.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 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 
16 #include <cmath>
17 
18 namespace xAOD {
19 
21  : IParticle() {
22  }
23 
27 
28  // Pion mass, as assumed for the track:
29  static const double PION_MASS = 139.570;
30 
32  FourMom_t p4;
33  p4.SetPtEtaPhiM( pt(), eta(), phi(), m());
34  return p4;
35  }
36 
38  return GenVecFourMom_t(pt(), eta(), phi(), m());
39  }
40 
41  void TauTrack_v1::setP4(double pt, double eta, double phi, double /*m*/) {
42 
43  // Set the raw variables:
44  static const Accessor< float > acc1( "pt" );
45  static const Accessor< float > acc2( "eta" );
46  static const Accessor< float > acc3( "phi" );
47  acc1( *this ) = pt;
48  acc2( *this ) = eta;
49  acc3( *this ) = phi;
50 
51  return;
52  }
53 
54 
57  }
58 
59 
60  double TauTrack_v1::rapidity() const {
61  return genvecP4().Rapidity();
62  }
63 
64  double TauTrack_v1::m() const {
65  return PION_MASS;
66  }
67 
68  double TauTrack_v1::e() const {
69  return genvecP4().E();
70  }
71 
73 
75  static const Accessor< TauTrack_v1::TrackFlagType > trackFlags("flagSet");
76  TrackFlagType f(trackFlags(*this));
77  std::bitset<8*sizeof(TrackFlagType)> thisTracksFlags(f);
78  return thisTracksFlags[flag];
79  }
80 
81  bool TauTrack_v1::flagWithMask(unsigned int flags) const{
82  static const Accessor< TauTrack_v1::TrackFlagType > trackFlags("flagSet");
83  TrackFlagType f(trackFlags(*this));
84  // std::bitset<8*sizeof(TrackFlagType)> thisTracksFlags(f);
85  // std::bitset<8*sizeof(TrackFlagType)> tracksFlags(flags);
86  // for(int i = 0; i != 8*sizeof(TrackFlagType); ++i){
87  // if(tracksFlags[i]==1 && thisTracksFlags[i]==0) return false;
88  // }
89  // return true;
90  return ((f&flags)==flags);
91  }
92 
94  static const Accessor< TauTrack_v1::TrackFlagType > trackFlags("flagSet");
95  TrackFlagType& f(trackFlags(*this));
96  std::bitset<8*sizeof(TrackFlagType)> thisTracksFlags(f);
97  thisTracksFlags[flag] = value;
98  f = thisTracksFlags.to_ulong();
99  }
100 
101  // AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( TauTrack_v1, float, z0sinThetaTJVA, setZ0sinThetaTJVA)
102  // AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( TauTrack_v1, float, rConv, setRConv)
103  // AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( TauTrack_v1, float, rConvII, setRConvII)
104  // AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( TauTrack_v1, float, dRJetSeedAxis, setDRJetSeedAxis)
105 
106  // superseded by z0sinthetaTJVA()
108  const xAOD::TrackParticle* xTrackParticle = this->track();
109  const xAOD::TauJet* tau = dynamic_cast<const xAOD::TauJet*> (&part);
110  if( tau ) {
111  float zv = 0.0;
112  if( tau->vertexLink().isValid() ) {
113  zv = tau->vertex()->z();
114  }
115  return ( ( xTrackParticle->z0() + xTrackParticle->vz() - zv ) *
116  std::sin( xTrackParticle->theta() ) );
117  } else {
118  std::cerr << "ERROR xAOD::TauTrack::z0sinThetaTJVA cannot get TauJet" << std::endl;
119  return 0;
120  }
121  }
122 
123  static const SG::AuxElement::Accessor< float > d0TJVAAcc( "d0TJVA" );
124  float TauTrack_v1::d0TJVA() const {
125  return d0TJVAAcc(*this);
126  }
127 
128  static const SG::AuxElement::Accessor< float > d0SigTJVAAcc( "d0SigTJVA" );
129  float TauTrack_v1::d0SigTJVA() const {
130  return d0SigTJVAAcc(*this);
131  }
132 
133  static const SG::AuxElement::Accessor< float > z0sinthetaTJVAAcc( "z0sinthetaTJVA" );
135  return z0sinthetaTJVAAcc(*this);
136  }
137 
138  static const SG::AuxElement::Accessor< float > z0sinthetaSigTJVAAcc( "z0sinthetaSigTJVA" );
140  return z0sinthetaSigTJVAAcc(*this);
141  }
142 
143  float TauTrack_v1::rConv() const{
144  return std::sqrt(std::fabs(this->d0TJVA())*this->pt()/(0.3 /*0.15*2.*/));
145  }
146 
147  float TauTrack_v1::rConvII() const{
148  return std::sqrt( std::fabs( this->d0TJVA() * this->pt() ) / (0.3) )*(this->d0TJVA()/fabs(this->d0TJVA()))*this->track()->charge();
149  }
150 
152  const xAOD::TauJet* tau = dynamic_cast<const xAOD::TauJet*> (&part);
153  if(tau)
154  return tau->jet()->p4().DeltaR(this->p4());//this function should take jet seed as input
155  else {
156  std::cerr << "ERROR xAOD::TauTrack::z0sinThetaTJVA cannot get TauJet" << std::endl;
157  }
158  return 0.;
159  }
160 
161 
162 
163  // AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( TauTrack_v1, float, etaStrip, setEtaStrip)
164  // AUXSTORE_PRIMITIVE_SETTER_AND_GETTER( TauTrack_v1, float, phiStrip, setPhiStrip)
165 
167  // Get the detail accessor:
168  const Accessor< float >* acc = xAODTau::trackDetailsAccessorV3<float>( detail );
169  if( ! acc ) return false;
170  if( ! acc->isAvailable( *this ) ) return false;
171 
172  // Retrieve the detail value:
173  value = ( *acc )( *this );
174  return true;
175 
176  }
177 
179  ( *( xAODTau::trackDetailsAccessorV3<float>( detail ) ) )( *this ) = value;
180  }
181 
182  // setters and getters for bdt values
184  std::vector<float>,
185  bdtScores,
186  setBdtScores )
187 
188  static const SG::AuxElement::Accessor< std::vector<float> > bdtScoreAcc( "bdtScores" );
189 
190  float TauTrack_v1::bdtScore( size_t i) const {
191  return bdtScoreAcc(*this).at(i);
192  }
193 
194  //number of clusters
195  size_t TauTrack_v1::nBdtScores() const{
196  return bdtScoreAcc( *this ).size();
197  }
198 
200  void TauTrack_v1::addBdtScore( const float score){
201  bdtScoreAcc( *this ).push_back(score);
202  }
203 
206  bdtScoreAcc( *this ).clear();
207  }
208 
209  // ----------------------------------------------------------------------------
210  // setters and getters for the track link
211  // ----------------------------------------------------------------------------
214  trackLinks,
215  setTrackLinks )
216 
217  static const SG::AuxElement::Accessor< TauTrack_v1::TrackParticleLinks_t > trackAcc( "trackLinks" );
218 
219  const TrackParticle* TauTrack_v1::track() const {
220  return ( *trackAcc( *this )[0] );
221  }
222 
224  //clearTrackLinks();
225  trackAcc( *this ).push_back( tr );
226  return;
227  }
228 
230  trackAcc( *this ).clear();
231  return;
232  }
233 
234 
235 
236 } // namespace xAOD
xAOD::TauTrack_v1::type
virtual Type::ObjectType type() const
The type of the object as a simple enumeration.
Definition: TauTrack_v1.cxx:55
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:93
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
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:31
xAOD::TauTrack_v1::dRJetSeedAxis
float dRJetSeedAxis(const xAOD::IParticle &) const
Definition: TauTrack_v1.cxx:151
xAOD::TauTrack_v1::d0SigTJVA
float d0SigTJVA() const
Definition: TauTrack_v1.cxx:129
SG::Accessor< float >
AuxStoreAccessorMacros.h
xAOD::TauTrack_v1::clearTrackLinks
void clearTrackLinks()
Remove all tracks from the collection.
Definition: TauTrack_v1.cxx:229
xAOD::TrackParticle_v1::charge
float charge() const
Returns the charge.
Definition: TrackParticle_v1.cxx:150
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
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:139
xAOD::TauTrack_v1::TauTrack_v1
TauTrack_v1()
Default constructor.
Definition: TauTrack_v1.cxx:20
athena.value
value
Definition: athena.py:122
xAOD::TauTrack_v1::flag
bool flag(TauJetParameters::TauTrackFlag flag) const
Definition: TauTrack_v1.cxx:74
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:104
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:40
xAOD::TauTrack_v1::detail
bool detail(TauJetParameters::TrackDetail detail, float &value) const
Definition: TauTrack_v1.cxx:166
xAOD::IParticle::FourMom_t
TLorentzVector FourMom_t
Definition of the 4-momentum type.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:68
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
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:147
xAOD::TauTrack_v1::d0TJVA
float d0TJVA() const
Definition: TauTrack_v1.cxx:124
lumiFormat.i
int i
Definition: lumiFormat.py:92
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:200
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:134
xAOD::TauJetParameters::TrackDetail
TrackDetail
Definition: TauDefs.h:419
python.CaloBCIDAvgAlgConfig.acc2
def acc2
Definition: CaloBCIDAvgAlgConfig.py:59
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:195
xAOD::TauTrack_v1::flagWithMask
bool flagWithMask(unsigned int) const
Definition: TauTrack_v1.cxx:81
xAOD::TauTrack_v1::setP4
void setP4(double pt, double eta, double phi, double m)
Set methods for IParticle values.
Definition: TauTrack_v1.cxx:41
xAOD::TauTrack_v1::setDetail
void setDetail(TauJetParameters::TrackDetail detail, float value)
Definition: TauTrack_v1.cxx:178
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:64
xAOD::TauTrack_v1::addTrackLink
void addTrackLink(const ElementLink< TrackParticleContainer > &tr)
add a track to the collection
Definition: TauTrack_v1.cxx:223
xAOD::TauTrack_v1::rapidity
virtual double rapidity() const
The true rapidity (y) of the particle.
Definition: TauTrack_v1.cxx:60
xAOD::score
@ score
Definition: TrackingPrimitives.h:513
xAOD::TauTrack_v1::rConv
float rConv() const
Definition: TauTrack_v1.cxx:143
TrackParticle.h
xAOD::TauTrack_v1::e
virtual double e() const
The total energy of the particle.
Definition: TauTrack_v1.cxx:68
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:37
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:205
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:107
xAOD::AUXSTORE_OBJECT_SETTER_AND_GETTER
AUXSTORE_OBJECT_SETTER_AND_GETTER(CaloRings_v1, RingSetLinks, ringSetLinks, setRingSetLinks) unsigned CaloRings_v1
Definition: CaloRings_v1.cxx:27