ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
Trk::TrackToVertexIPEstimator Class Reference

A class estimating the transverse impact parameter d0 and its error of a given track wrt to the reconstructed vertex. More...

#include <TrackToVertexIPEstimator.h>

Inheritance diagram for Trk::TrackToVertexIPEstimator:
Collaboration diagram for Trk::TrackToVertexIPEstimator:

Public Member Functions

virtual StatusCode initialize () override
 Default Athena interface methods. More...
 
 TrackToVertexIPEstimator (const std::string &t, const std::string &n, const IInterface *p)
 Default Athena interface constructor and destructor. More...
 
 ~TrackToVertexIPEstimator ()
 
virtual std::unique_ptr< ImpactParametersAndSigmaestimate (const xAOD::TrackParticle *track, const xAOD::Vertex *vtx, bool doRemoval) const override
 Estimate methods returning a d0 and its calculated sigma. More...
 
virtual std::unique_ptr< ImpactParametersAndSigmaestimate (const TrackParameters *track, const xAOD::Vertex *vtx, bool doRemoval) const override
 
virtual std::unique_ptr< ImpactParametersAndSigmaestimate (const xAOD::TrackParticle *track, const xAOD::TrackParticle *newtrack, const xAOD::Vertex *vtx, bool doRemoval) const override
 
virtual std::unique_ptr< ImpactParametersAndSigmaestimate (const TrackParameters *track, const TrackParameters *newtrack, const xAOD::Vertex *vtx, bool doRemoval) const override
 
virtual xAOD::VertexgetUnbiasedVertex (const xAOD::TrackParticle *track, const xAOD::Vertex *vtx) const override
 
virtual xAOD::VertexgetUnbiasedVertex (const TrackParameters *track, const xAOD::Vertex *vtx) const override
 
virtual std::unique_ptr< ImpactParametersAndSigmaestimate (const xAOD::TrackParticle *track, const xAOD::Vertex *vtx) const override
 
virtual std::unique_ptr< ImpactParametersAndSigmaestimate (const TrackParameters *track, const xAOD::Vertex *vtx) const override
 
virtual double get3DLifetimeSignOfTrack (const TrackParameters &track, const Amg::Vector3D &jetDirection, const xAOD::Vertex &primaryVertex) const override
 
virtual double get3DLifetimeSignOfTrack (const TrackParameters &track, const CLHEP::Hep3Vector &jetDirection, const xAOD::Vertex &primaryVertex) const override
 
virtual double get2DLifetimeSignOfTrack (const TrackParameters &track, const Amg::Vector3D &jetDirection, const xAOD::Vertex &primaryVertex) const override
 
virtual double get2DLifetimeSignOfTrack (const TrackParameters &track, const CLHEP::Hep3Vector &jetDirection, const xAOD::Vertex &primaryVertex) const override
 
virtual double getZLifetimeSignOfTrack (const TrackParameters &track, const Amg::Vector3D &jetDirection, const xAOD::Vertex &primaryVertex) const override
 
virtual double getZLifetimeSignOfTrack (const TrackParameters &track, const CLHEP::Hep3Vector &jetDirection, const xAOD::Vertex &primaryVertex) const override
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

std::unique_ptr< ImpactParametersAndSigmacalculate (const TrackParameters *track, const xAOD::Vertex &vtx) const
 A method calculating the do and its error. More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

ToolHandle< Trk::IExtrapolatorm_extrapolator
 
ToolHandle< Trk::IVertexUpdatorm_Updator
 
ToolHandle< Trk::IVertexLinearizedTrackFactorym_linFactory
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

A class estimating the transverse impact parameter d0 and its error of a given track wrt to the reconstructed vertex.

Algorithm:

(a) Provided track or track particle are checked, whether they do already belong to the vertex. (b) In the positive case, the vertex is reduced by removing the track or track particle in question. (c) The trajectory state is extrapolated to the perigee with the vertex in question, the d0 and its error is estimated. The error on the vertex position is included in this calculation.

Kiril.nosp@m.l.Pr.nosp@m.okofi.nosp@m.ev@c.nosp@m.ern.c.nosp@m.h February 2008


Changes:

Giaci.nosp@m.nto..nosp@m.Piacq.nosp@m.uadi.nosp@m.o@phy.nosp@m.sik..nosp@m.uni-f.nosp@m.reib.nosp@m.urg.d.nosp@m.e (update of 11.September 2008)

In addition the tool is now able to provide the impact parameter z0 and its error.

At the same time an option can be passed not to remove the track from the vertex (non-default)

In addition, the lifetime sign of the Impact Parameter given a lifetime direction of flight is also provided with 3 methods: 2D, Z and full 3D.


Johanna Fleckner (03.12.2009) allow for estimation of IP parameter even if vertex doesn't contain any tracks as can happen in BeamSpot or early running when PV is not reconstructed degrade some INFO/WARNINGS to DEBUG


David Shope david.nosp@m..ric.nosp@m.hard..nosp@m.shop.nosp@m.e@cer.nosp@m.n.ch (2016-04-19) EDM Migration to xAOD - Remove methods involving Trk::VxCandidate and Trk::RecVertex

Definition at line 71 of file TrackToVertexIPEstimator.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TrackToVertexIPEstimator()

Trk::TrackToVertexIPEstimator::TrackToVertexIPEstimator ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Default Athena interface constructor and destructor.

Definition at line 19 of file TrackToVertexIPEstimator.cxx.

19  :
20  AthAlgTool(t,n,p)
21  {
22  declareInterface<ITrackToVertexIPEstimator>(this);
23  }

◆ ~TrackToVertexIPEstimator()

Trk::TrackToVertexIPEstimator::~TrackToVertexIPEstimator ( )
default

Member Function Documentation

◆ calculate()

std::unique_ptr< ImpactParametersAndSigma > Trk::TrackToVertexIPEstimator::calculate ( const TrackParameters track,
const xAOD::Vertex vtx 
) const
private

A method calculating the do and its error.

At this stage the trajectory is removed from the vertex.

Definition at line 122 of file TrackToVertexIPEstimator.cxx.

123  {
124  //estimating the d0 and its significance by propagating the trajectory state towards
125  //the vertex position. By this time the vertex should NOT contain this trajectory anymore
126 
127  //estrapolating to the perigee of the reconstructed vertex
128  const Amg::Vector3D & lp = vtx.position();
129  PerigeeSurface perigeeSurface(lp);
130  const Trk::Perigee* extrapolatedParameters =
131  dynamic_cast<const Trk::Perigee*>(
133  ->extrapolate(Gaudi::Hive::currentContext(), *track, perigeeSurface)
134  .release());
135  if (extrapolatedParameters && extrapolatedParameters->covariance()) {
136 
137  //actual calculation of d0 and sigma.
138  const AmgVector(5) & par = extrapolatedParameters->parameters();
139  const double d0 = par[Trk::d0];
140  const double z0 = par[Trk::z0];
141  const double phi = par[Trk::phi];
142  const double theta = par[Trk::theta];
143 
144  AmgSymMatrix(2) vrtXYCov = vtx.covariancePosition().block<2,2>(0,0);
145 
146  const AmgSymMatrix(5) & perigeeCov = *(extrapolatedParameters->covariance());
147  // std::cout<<"Perigee covariance: "<<perigeeCov<<std::endl;
148 
149  //d0phi->cartesian Jacobian
150  Amg::Vector2D d0JacXY(-sin(phi), cos(phi));
151 
152 
153  auto newIPandSigma=std::make_unique<ImpactParametersAndSigma>();
154  newIPandSigma->IPd0=d0;
155  double d0_PVcontrib=d0JacXY.transpose()*(vrtXYCov*d0JacXY);
156  if (d0_PVcontrib>=0)
157  {
158  newIPandSigma->sigmad0=sqrt(d0_PVcontrib+perigeeCov(Trk::d0,Trk::d0));
159  newIPandSigma->PVsigmad0=sqrt(d0_PVcontrib);
160  }
161  else
162  {
163  msg(MSG::WARNING) << " The contribution to d0_err: " << d0_PVcontrib << " from PV is negative: critical error in PV error matrix! Removing contribution from PV ... " << endmsg;
164  newIPandSigma->sigmad0=sqrt(perigeeCov(Trk::d0,Trk::d0));
165  newIPandSigma->PVsigmad0=0;
166  }
167 
168  AmgSymMatrix(2) covPerigeeZ0Theta;
169  covPerigeeZ0Theta(0,0)=perigeeCov(Trk::z0,Trk::z0);
170  covPerigeeZ0Theta(0,1)=perigeeCov(Trk::z0,Trk::theta);
171  covPerigeeZ0Theta(1,0)=perigeeCov(Trk::theta,Trk::z0);
172  covPerigeeZ0Theta(1,1)=perigeeCov(Trk::theta,Trk::theta);
173 
174  double vrtZZCov = vtx.covariancePosition()(Trk::z,Trk::z);
175 
176  Amg::Vector2D IPz0JacZ0Theta (sin(theta), z0*cos(theta));
177  if (vrtZZCov>=0)
178  {
179  newIPandSigma->IPz0SinTheta=z0*sin(theta);
180  newIPandSigma->sigmaz0SinTheta=
181  sqrt(IPz0JacZ0Theta.transpose()*(covPerigeeZ0Theta*IPz0JacZ0Theta)+sin(theta)*vrtZZCov*sin(theta));
182  newIPandSigma->PVsigmaz0SinTheta=sqrt(sin(theta)*vrtZZCov*sin(theta));
183  newIPandSigma->IPz0 = z0;
184  newIPandSigma->sigmaz0 = std::sqrt( vrtZZCov + perigeeCov(Trk::z0,Trk::z0) );
185  newIPandSigma->PVsigmaz0 = std::sqrt( vrtZZCov );
186  }
187  else
188  {
189  ATH_MSG_WARNING(" The contribution to z0_err: " << vrtZZCov << " from PV is negative: critical error in PV error matrix! Removing contribution from PV ... ");
190  newIPandSigma->IPz0SinTheta=z0*sin(theta);
191  double temp = (IPz0JacZ0Theta.transpose()*(covPerigeeZ0Theta*IPz0JacZ0Theta));
192  newIPandSigma->sigmaz0SinTheta=sqrt(temp);
193  newIPandSigma->PVsigmaz0SinTheta=0;
194 
195  newIPandSigma->IPz0 = z0;
196  newIPandSigma->sigmaz0 = std::sqrt( perigeeCov(Trk::z0,Trk::z0) );
197  newIPandSigma->PVsigmaz0 = 0;
198  }
199 
200 
201  delete extrapolatedParameters;
202  return newIPandSigma;
203  }
204  ATH_MSG_DEBUG ("Cannot extrapolate the trajectory state. Returning null. ");
205  return nullptr;
206  //end of successfull extrapolation check
207  }//end of actual calculation method

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ estimate() [1/6]

std::unique_ptr< ImpactParametersAndSigma > Trk::TrackToVertexIPEstimator::estimate ( const TrackParameters track,
const TrackParameters newtrack,
const xAOD::Vertex vtx,
bool  doRemoval 
) const
overridevirtual

Implements Trk::ITrackToVertexIPEstimator.

Definition at line 90 of file TrackToVertexIPEstimator.cxx.

91  {
92 
93  if (vtx==nullptr)
94  {
95  ATH_MSG_WARNING("Vertex is zero pointer. Will not estimate IP of track.");
96  return nullptr;
97  }
98 
99  const xAOD::Vertex *newVertex = vtx;
100  if (doRemoval)
101  {
102  newVertex = getUnbiasedVertex(track,vtx);
103  if (newVertex == nullptr) {
104  ATH_MSG_WARNING("Unbiasing of vertex failed. Will not estimate IP of track.");
105  return nullptr;
106  }
107  }
108 
109  std::unique_ptr<ImpactParametersAndSigma> IPandSigma=calculate(newtrack,*newVertex);
110 
111  if (doRemoval)
112  {
113  delete newVertex;
114  newVertex=nullptr;
115  }
116 
117  return IPandSigma;
118 
119  }//end of parameterBase estimate method

◆ estimate() [2/6]

std::unique_ptr< ImpactParametersAndSigma > Trk::TrackToVertexIPEstimator::estimate ( const TrackParameters track,
const xAOD::Vertex vtx 
) const
overridevirtual

Implements Trk::ITrackToVertexIPEstimator.

Definition at line 441 of file TrackToVertexIPEstimator.cxx.

443  {
444 
445  if(track && vtx ){
446  return calculate( track , *vtx);
447  }
448  return nullptr;
449 
450  }

◆ estimate() [3/6]

std::unique_ptr< ImpactParametersAndSigma > Trk::TrackToVertexIPEstimator::estimate ( const TrackParameters track,
const xAOD::Vertex vtx,
bool  doRemoval 
) const
overridevirtual

Implements Trk::ITrackToVertexIPEstimator.

Definition at line 79 of file TrackToVertexIPEstimator.cxx.

80  {
81  if(track && vtx){
82  return estimate(track,track,vtx,doRemoval);
83  }
84  ATH_MSG_INFO( "Empty TrackParticle or Vertex pointer passed. Returning zero " );
85  return nullptr;
86  //end of track particle validity check
87 
88  }//end of parameterBase estimate method

◆ estimate() [4/6]

std::unique_ptr< ImpactParametersAndSigma > Trk::TrackToVertexIPEstimator::estimate ( const xAOD::TrackParticle track,
const xAOD::TrackParticle newtrack,
const xAOD::Vertex vtx,
bool  doRemoval 
) const
overridevirtual

Implements Trk::ITrackToVertexIPEstimator.

Definition at line 65 of file TrackToVertexIPEstimator.cxx.

66  {
67  if(track && vtx)
68  {
69  return estimate(&(track->perigeeParameters()),&(newtrack->perigeeParameters()),vtx,doRemoval);
70  }
71  ATH_MSG_INFO( "Empty TrackParticle or Vertex pointer passed. Returning zero " );
72  return nullptr;
73  //end of track particle validity check
74  }//end of method using track particles

◆ estimate() [5/6]

std::unique_ptr< ImpactParametersAndSigma > Trk::TrackToVertexIPEstimator::estimate ( const xAOD::TrackParticle track,
const xAOD::Vertex vtx 
) const
overridevirtual

Implements Trk::ITrackToVertexIPEstimator.

Definition at line 430 of file TrackToVertexIPEstimator.cxx.

432  {
433 
434  if(track && vtx ){
435  return estimate( &(track->perigeeParameters()), vtx);
436  }
437  return nullptr;
438 
439  }

◆ estimate() [6/6]

std::unique_ptr< ImpactParametersAndSigma > Trk::TrackToVertexIPEstimator::estimate ( const xAOD::TrackParticle track,
const xAOD::Vertex vtx,
bool  doRemoval 
) const
overridevirtual

Estimate methods returning a d0 and its calculated sigma.

All methods do check whether a track is actually fitted to a vertex

Implements Trk::ITrackToVertexIPEstimator.

Definition at line 54 of file TrackToVertexIPEstimator.cxx.

55  {
56  if(track && vtx)
57  {
58  return estimate(&(track->perigeeParameters()),&(track->perigeeParameters()),vtx,doRemoval);
59  }
60  ATH_MSG_INFO( "Empty TrackParticle or Vertex pointer passed. Returning zero " );
61  return nullptr;
62  //end of track particle validity check
63  }//end of method using track particles

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ get2DLifetimeSignOfTrack() [1/2]

double Trk::TrackToVertexIPEstimator::get2DLifetimeSignOfTrack ( const TrackParameters track,
const Amg::Vector3D jetDirection,
const xAOD::Vertex primaryVertex 
) const
overridevirtual

Implements Trk::ITrackToVertexIPEstimator.

Definition at line 254 of file TrackToVertexIPEstimator.cxx.

257  {
258  const Amg::Vector3D & lp = primaryVertex.position();
259  PerigeeSurface perigeeSurface(lp);
260 
261  std::unique_ptr<const Trk::TrackParameters> extrapolatedParameters =
262  m_extrapolator->extrapolate(
263  Gaudi::Hive::currentContext(), track, perigeeSurface);
264 
265  if (!extrapolatedParameters) return 0.;
266 
267  double trackD0 = extrapolatedParameters->parameters()[Trk::d0];
268  double trackPhi = extrapolatedParameters->parameters()[Trk::phi];
269  double vs = sinf( atan2(jetMomentum.y(),jetMomentum.x()) - trackPhi )*trackD0;
270 
271  return (vs>=0. ? 1. : -1.);
272  }

◆ get2DLifetimeSignOfTrack() [2/2]

double Trk::TrackToVertexIPEstimator::get2DLifetimeSignOfTrack ( const TrackParameters track,
const CLHEP::Hep3Vector &  jetDirection,
const xAOD::Vertex primaryVertex 
) const
overridevirtual

Implements Trk::ITrackToVertexIPEstimator.

Definition at line 246 of file TrackToVertexIPEstimator.cxx.

249  {
250  Amg::Vector3D eigenJetMomentum(jetMomentum.x(), jetMomentum.y(), jetMomentum.z());
251  return get2DLifetimeSignOfTrack(track, eigenJetMomentum, primaryVertex);
252  }

◆ get3DLifetimeSignOfTrack() [1/2]

double Trk::TrackToVertexIPEstimator::get3DLifetimeSignOfTrack ( const TrackParameters track,
const Amg::Vector3D jetDirection,
const xAOD::Vertex primaryVertex 
) const
overridevirtual

Implements Trk::ITrackToVertexIPEstimator.

Definition at line 222 of file TrackToVertexIPEstimator.cxx.

225  {
226  const Amg::Vector3D & lp = primaryVertex.position();
227  PerigeeSurface perigeeSurface(lp);
228 
229  std::unique_ptr<const Trk::TrackParameters> extrapolatedParameters =
230  m_extrapolator->extrapolate(
231  Gaudi::Hive::currentContext(), track, perigeeSurface);
232 
233  if (!extrapolatedParameters) return 0.;
234 
235  const Amg::Vector3D & primaryPos=primaryVertex.position();
236  const Amg::Vector3D & trackPos=extrapolatedParameters->position();
237  const Amg::Vector3D & trackMom=extrapolatedParameters->momentum();
238 
239  double sign=(jetMomentum.cross(trackMom)).dot(trackMom.cross(primaryPos-trackPos));
240 
241  return sign>=0.?1.:-1;
242  }

◆ get3DLifetimeSignOfTrack() [2/2]

double Trk::TrackToVertexIPEstimator::get3DLifetimeSignOfTrack ( const TrackParameters track,
const CLHEP::Hep3Vector &  jetDirection,
const xAOD::Vertex primaryVertex 
) const
overridevirtual

Implements Trk::ITrackToVertexIPEstimator.

Definition at line 214 of file TrackToVertexIPEstimator.cxx.

217  {
218  Amg::Vector3D eigenJetMomentum(jetMomentum.x(), jetMomentum.y(), jetMomentum.z());
219  return get3DLifetimeSignOfTrack(track, eigenJetMomentum, primaryVertex);
220  }

◆ getUnbiasedVertex() [1/2]

xAOD::Vertex * Trk::TrackToVertexIPEstimator::getUnbiasedVertex ( const TrackParameters track,
const xAOD::Vertex vtx 
) const
overridevirtual

Implements Trk::ITrackToVertexIPEstimator.

Definition at line 342 of file TrackToVertexIPEstimator.cxx.

343  {
344  if (!track) {
345  msg(MSG::INFO) << "Empty Trk::TrackParameter pointer passed. Returning zero " << endmsg;
346  return nullptr;
347  }
348  if (!vtx) {
349  msg(MSG::INFO) << "Empty xAOD::Vertex pointer passed. Returning zero " << endmsg;
350  return nullptr;
351  }
352 
353  if (vtx->nTrackParticles() == 0)
354  {
355  ATH_MSG_DEBUG("This vertex has no associated tracks. Normal if beam spot is used. Vertex already unbiased");
356  return new xAOD::Vertex(*vtx);
357  }
358 
359  //create new vertex for output
360  xAOD::Vertex *outputVertex = new xAOD::Vertex(*vtx);
361  outputVertex->clearTracks(); //remove all tracks -> will add them back one by one
362  if (outputVertex->vxTrackAtVertexAvailable()) outputVertex->vxTrackAtVertex().clear(); //remove all VxTrackAtVertex
363 
364  bool tmpLinTrack = false; //do we created a new linearised track?
365 
366  //loop over tracks
367  const Amg::Vector3D & pos = track->position();
368  const Amg::Vector3D & mom = track->momentum();
369  for (unsigned int itrk=0; itrk < vtx->nTrackParticles(); ++itrk) {
370  const Perigee& testTP = vtx->trackParticle(itrk)->perigeeParameters();
371  if ((testTP.position() == pos) and (testTP.momentum() == mom)) {
372  //track found, now unbias the vertex using linearized track
373  const LinearizedTrack *linTrack = nullptr;
374  double trackWeight(0.0);
375  //first check if a VxTrackAtVertex is already available with linearized track
376  if (vtx->vxTrackAtVertexAvailable()) {
377  if (vtx->vxTrackAtVertex().size() > itrk) {
378  linTrack = vtx->vxTrackAtVertex()[itrk].linState();
379  trackWeight = vtx->vxTrackAtVertex()[itrk].weight();
380  }
381  }
382  //if linearized track is not available, create it
383  if (!linTrack) {
384  linTrack = m_linFactory->linearizedTrack(track, vtx->position());
385  trackWeight = vtx->trackWeight(itrk);
386  if (!linTrack) {
387  ATH_MSG_INFO("Failing to linearized track. Returning biased vertex.");
388  outputVertex->addTrackAtVertex(vtx->trackParticleLinks()[itrk], vtx->trackWeight(itrk));
389  if (vtx->vxTrackAtVertexAvailable()) {
390  outputVertex->vxTrackAtVertex().push_back(vtx->vxTrackAtVertex()[itrk]);//will clone everything inside -> output vertex owns all the memory
391  }
392  continue;
393  }
394  tmpLinTrack = true;
395  }
396  //now update vertex position removing the linearized track, and do not add the track back to the output vertex
397  const IVertexUpdator::positionUpdateOutcome & reducedVertex = m_Updator->positionUpdate(*vtx, linTrack, trackWeight,IVertexUpdator::removeTrack);
398 
399  //calculate updated chi2
400  double chi2 = vtx->chiSquared();
401  double trk_chi = m_Updator->trackParametersChi2( reducedVertex, linTrack );
402  chi2 += -1 * (m_Updator->vertexPositionChi2(*vtx, reducedVertex) + trackWeight * trk_chi);
403 
404  //calculate updated ndf
405  double ndf = vtx->numberDoF();
406  ndf += -1 * trackWeight * (2.0);
407 
408  //reducedVertex has the updated position and covariance
409  outputVertex->setPosition(reducedVertex.position);
410  outputVertex->setCovariancePosition(reducedVertex.covariancePosition);
411 
412  //chi2 and ndf now store the updated FitQuality
413  outputVertex->setFitQuality( chi2, ndf );
414 
415  if (tmpLinTrack) delete linTrack; //only delete if it was created new, and doesn't belong to a vertex
416  } else {
417  //track not to be removed. Add back the track to the vertex collection
418  outputVertex->addTrackAtVertex(vtx->trackParticleLinks()[itrk], vtx->trackWeight(itrk));
419  if (vtx->vxTrackAtVertexAvailable()) {
420  outputVertex->vxTrackAtVertex().push_back(vtx->vxTrackAtVertex()[itrk]);//will clone everything inside -> output vertex owns all the memory
421  }
422  }
423  }
424  return outputVertex;
425 
426  }

◆ getUnbiasedVertex() [2/2]

xAOD::Vertex * Trk::TrackToVertexIPEstimator::getUnbiasedVertex ( const xAOD::TrackParticle track,
const xAOD::Vertex vtx 
) const
overridevirtual

Implements Trk::ITrackToVertexIPEstimator.

Definition at line 331 of file TrackToVertexIPEstimator.cxx.

332  {
333  if(track)
334  {
335  return getUnbiasedVertex(&(track->perigeeParameters()),vtx);
336  }
337  msg(MSG::INFO) << "Empty xAOD::TrackParticle pointer passed. Returning zero " << endmsg;
338  return nullptr;
339  //end of track particle validity check
340  }

◆ getZLifetimeSignOfTrack() [1/2]

double Trk::TrackToVertexIPEstimator::getZLifetimeSignOfTrack ( const TrackParameters track,
const Amg::Vector3D jetDirection,
const xAOD::Vertex primaryVertex 
) const
overridevirtual

Implements Trk::ITrackToVertexIPEstimator.

Definition at line 285 of file TrackToVertexIPEstimator.cxx.

288  {
289 
290  const Amg::Vector3D & lp = primaryVertex.position();
291  PerigeeSurface perigeeSurface(lp);
292 
293  std::unique_ptr<const Trk::TrackParameters> extrapolatedParameters =
294  m_extrapolator->extrapolate(
295  Gaudi::Hive::currentContext(), track, perigeeSurface);
296 
297  if (!extrapolatedParameters) return 0.;
298 
299  double trackTheta = extrapolatedParameters->parameters()[Trk::theta];
300  double trackZ0 = extrapolatedParameters->parameters()[Trk::z0];
301  double trackEta = -logf(tanf(trackTheta/2.));
302  double jetEta = jetMomentum.eta();
303  double zs = (jetEta - trackEta)*trackZ0;
304  return (zs>=0. ? 1. : -1.);
305  }

◆ getZLifetimeSignOfTrack() [2/2]

double Trk::TrackToVertexIPEstimator::getZLifetimeSignOfTrack ( const TrackParameters track,
const CLHEP::Hep3Vector &  jetDirection,
const xAOD::Vertex primaryVertex 
) const
overridevirtual

Implements Trk::ITrackToVertexIPEstimator.

Definition at line 277 of file TrackToVertexIPEstimator.cxx.

280  {
281  Amg::Vector3D eigenJetMomentum(jetMomentum.x(), jetMomentum.y(), jetMomentum.z());
282  return getZLifetimeSignOfTrack(track, eigenJetMomentum, primaryVertex);
283  }

◆ initialize()

StatusCode Trk::TrackToVertexIPEstimator::initialize ( )
overridevirtual

Default Athena interface methods.

Definition at line 27 of file TrackToVertexIPEstimator.cxx.

28  {
29 
30  // uploading the corresponding tools
31  // extrapolator
32  if (m_extrapolator.retrieve().isFailure()) {
33  ATH_MSG_FATAL("Failed to retrieve tool " << m_extrapolator);
34  return StatusCode::FAILURE;
35  }
36 
37  // updator
38  if (m_Updator.retrieve().isFailure()) {
39  ATH_MSG_FATAL("Failed to retrieve tool " << m_Updator);
40  return StatusCode::FAILURE;
41  }
42 
43  // linearized track factory
44  if ( m_linFactory.retrieve().isFailure() )
45  {
46  ATH_MSG_FATAL("Failed to retrieve tool " << m_linFactory );
47  return StatusCode::FAILURE;
48  }
49 
50  return StatusCode::SUCCESS;
51  }//end of initialize method

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

static const InterfaceID& Trk::ITrackToVertexIPEstimator::interfaceID ( )
inlinestaticinherited

Definition at line 53 of file ITrackToVertexIPEstimator.h.

53  {
54  return IID_ITrackToVertexCompatibilityEstimator;
55  };

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extrapolator

ToolHandle<Trk::IExtrapolator> Trk::TrackToVertexIPEstimator::m_extrapolator
private
Initial value:
{this, "Extrapolator",
"Trk::Extrapolator"}

Definition at line 148 of file TrackToVertexIPEstimator.h.

◆ m_linFactory

ToolHandle<Trk::IVertexLinearizedTrackFactory> Trk::TrackToVertexIPEstimator::m_linFactory
private
Initial value:
{
this, "LinearizedTrackFactory", "Trk::FullLinearizedTrackFactory"}

Definition at line 152 of file TrackToVertexIPEstimator.h.

◆ m_Updator

ToolHandle<Trk::IVertexUpdator> Trk::TrackToVertexIPEstimator::m_Updator
private
Initial value:
{this, "VertexUpdator",
"Trk::KalmanVertexUpdator"}

Definition at line 150 of file TrackToVertexIPEstimator.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
covarianceTool.ndf
ndf
Definition: covarianceTool.py:678
xAOD::Vertex_v1::setPosition
void setPosition(const Amg::Vector3D &position)
Sets the 3-position.
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
xAOD::Vertex_v1::setFitQuality
void setFitQuality(float chiSquared, float numberDoF)
Set the 'Fit Quality' information.
Definition: Vertex_v1.cxx:150
xAOD::Vertex_v1::nTrackParticles
size_t nTrackParticles() const
Get the number of tracks associated with this vertex.
Definition: Vertex_v1.cxx:270
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
Trk::z
@ z
global position (cartesian)
Definition: ParamDefs.h:63
xAOD::Vertex
Vertex_v1 Vertex
Define the latest version of the vertex class.
Definition: Event/xAOD/xAODTracking/xAODTracking/Vertex.h:16
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
make_unique
std::unique_ptr< T > make_unique(Args &&... args)
Definition: SkimmingToolEXOT5.cxx:23
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
xAOD::Vertex_v1::trackParticleLinks
const TrackParticleLinks_t & trackParticleLinks() const
Get all the particles associated with the vertex.
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
Trk::Perigee
ParametersT< 5, Charged, PerigeeSurface > Perigee
Definition: Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:29
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
Trk::z0
@ z0
Definition: ParamDefs.h:70
xAOD::Vertex_v1::position
const Amg::Vector3D & position() const
Returns the 3-pos.
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
Trk::TrackToVertexIPEstimator::calculate
std::unique_ptr< ImpactParametersAndSigma > calculate(const TrackParameters *track, const xAOD::Vertex &vtx) const
A method calculating the do and its error.
Definition: TrackToVertexIPEstimator.cxx:122
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
Trk::TrackToVertexIPEstimator::getUnbiasedVertex
virtual xAOD::Vertex * getUnbiasedVertex(const xAOD::TrackParticle *track, const xAOD::Vertex *vtx) const override
Definition: TrackToVertexIPEstimator.cxx:331
Trk::AmgSymMatrix
AmgSymMatrix(5) &GXFTrackState
Definition: GXFTrackState.h:156
xAOD::Vertex_v1::addTrackAtVertex
void addTrackAtVertex(const ElementLink< TrackParticleContainer > &tr, float weight=1.0)
Add a new track to the vertex.
Definition: Vertex_v1.cxx:314
xAOD::TrackParticle_v1::perigeeParameters
const Trk::Perigee & perigeeParameters() const
Returns the Trk::MeasuredPerigee track parameters.
Definition: TrackParticle_v1.cxx:485
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
beamspotman.n
n
Definition: beamspotman.py:731
Trk::theta
@ theta
Definition: ParamDefs.h:72
Trk::TrackToVertexIPEstimator::get2DLifetimeSignOfTrack
virtual double get2DLifetimeSignOfTrack(const TrackParameters &track, const Amg::Vector3D &jetDirection, const xAOD::Vertex &primaryVertex) const override
Definition: TrackToVertexIPEstimator.cxx:254
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AmgVector
AmgVector(4) T2BSTrackFilterTool
Definition: T2BSTrackFilterTool.cxx:114
Trk::TrackToVertexIPEstimator::m_extrapolator
ToolHandle< Trk::IExtrapolator > m_extrapolator
Definition: TrackToVertexIPEstimator.h:148
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:522
sign
int sign(int a)
Definition: TRT_StrawNeighbourSvc.h:127
xAOD::Vertex_v1::trackParticle
const TrackParticle * trackParticle(size_t i) const
Get the pointer to a given track that was used in vertex reco.
Definition: Vertex_v1.cxx:249
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
xAOD::Vertex_v1::clearTracks
void clearTracks()
Remove all tracks from the vertex.
Definition: Vertex_v1.cxx:331
dot.dot
def dot(G, fn, nodesToHighlight=[])
Definition: dot.py:5
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Amg
Definition of ATLAS Math & Geometry primitives (Amg)
Definition: AmgStringHelpers.h:19
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
Trk::d0
@ d0
Definition: ParamDefs.h:69
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
xAOD::Vertex_v1::trackWeight
float trackWeight(size_t i) const
Get the weight of a given track in the vertex reconstruction.
Definition: Vertex_v1.cxx:262
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Trk::TrackToVertexIPEstimator::m_linFactory
ToolHandle< Trk::IVertexLinearizedTrackFactory > m_linFactory
Definition: TrackToVertexIPEstimator.h:152
xAOD::Vertex_v1::numberDoF
float numberDoF() const
Returns the number of degrees of freedom of the vertex fit as float.
Trk::ParametersBase::momentum
const Amg::Vector3D & momentum() const
Access method for the momentum.
a
TList * a
Definition: liststreamerinfos.cxx:10
xAOD::Vertex_v1::chiSquared
float chiSquared() const
Returns the of the vertex fit as float.
h
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Trk::TrackToVertexIPEstimator::get3DLifetimeSignOfTrack
virtual double get3DLifetimeSignOfTrack(const TrackParameters &track, const Amg::Vector3D &jetDirection, const xAOD::Vertex &primaryVertex) const override
Definition: TrackToVertexIPEstimator.cxx:222
Trk::IVertexUpdator::removeTrack
@ removeTrack
Definition: IVertexUpdator.h:69
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:569
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
Trk::TrackToVertexIPEstimator::getZLifetimeSignOfTrack
virtual double getZLifetimeSignOfTrack(const TrackParameters &track, const Amg::Vector3D &jetDirection, const xAOD::Vertex &primaryVertex) const override
Definition: TrackToVertexIPEstimator.cxx:285
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
TauGNNUtils::Variables::Track::trackPhi
bool trackPhi(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:480
Trk::phi
@ phi
Definition: ParamDefs.h:81
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
xAOD::Vertex_v1::vxTrackAtVertex
std::vector< Trk::VxTrackAtVertex > & vxTrackAtVertex()
Non-const access to the VxTrackAtVertex vector.
Definition: Vertex_v1.cxx:181
Trk::TrackToVertexIPEstimator::estimate
virtual std::unique_ptr< ImpactParametersAndSigma > estimate(const xAOD::TrackParticle *track, const xAOD::Vertex *vtx, bool doRemoval) const override
Estimate methods returning a d0 and its calculated sigma.
Definition: TrackToVertexIPEstimator.cxx:54
xAOD::Vertex_v1::vxTrackAtVertexAvailable
bool vxTrackAtVertexAvailable() const
Check if VxTrackAtVertices are attached to the object.
Definition: Vertex_v1.cxx:209
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
xAOD::Vertex_v1::setCovariancePosition
void setCovariancePosition(const AmgSymMatrix(3)&covariancePosition)
Sets the vertex covariance matrix.
Trk::TrackToVertexIPEstimator::m_Updator
ToolHandle< Trk::IVertexUpdator > m_Updator
Definition: TrackToVertexIPEstimator.h:150
TauGNNUtils::Variables::Track::trackEta
bool trackEta(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:475
fitman.k
k
Definition: fitman.py:528