ATLAS Offline Software
TrackToVertexIPEstimator.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 #include "TrkTrack/Track.h"
11 
14 #include "xAODTracking/Vertex.h"
15 
16 namespace Trk
17 {
18 
19  TrackToVertexIPEstimator::TrackToVertexIPEstimator(const std::string& t, const std::string& n, const IInterface* p):
20  AthAlgTool(t,n,p)
21  {
22  declareInterface<ITrackToVertexIPEstimator>(this);
23  }
24 
26 
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
52 
53 
54  std::unique_ptr<ImpactParametersAndSigma> TrackToVertexIPEstimator::estimate(const xAOD::TrackParticle * track, const xAOD::Vertex * vtx, bool doRemoval) const
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
64 
65  std::unique_ptr<ImpactParametersAndSigma> TrackToVertexIPEstimator::estimate(const xAOD::TrackParticle * track, const xAOD::TrackParticle * newtrack, const xAOD::Vertex * vtx, bool doRemoval) const
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
75 
76 
77 
78 
79  std::unique_ptr<ImpactParametersAndSigma> TrackToVertexIPEstimator::estimate(const TrackParameters * track, const xAOD::Vertex * vtx, bool doRemoval) const
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
89 
90  std::unique_ptr<ImpactParametersAndSigma> TrackToVertexIPEstimator::estimate(const TrackParameters * track, const TrackParameters * newtrack, const xAOD::Vertex * vtx, bool doRemoval) const
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
120 
121 
122  std::unique_ptr<ImpactParametersAndSigma> TrackToVertexIPEstimator::calculate(const TrackParameters * track, const xAOD::Vertex& vtx) const
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
208 
209 
210 
211 
212 
213 
215  const CLHEP::Hep3Vector & jetMomentum,
216  const xAOD::Vertex & primaryVertex) const
217  {
218  Amg::Vector3D eigenJetMomentum(jetMomentum.x(), jetMomentum.y(), jetMomentum.z());
219  return get3DLifetimeSignOfTrack(track, eigenJetMomentum, primaryVertex);
220  }
221 
223  const Amg::Vector3D & jetMomentum,
224  const xAOD::Vertex & primaryVertex) const
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  }
243 
244 
245 
247  const CLHEP::Hep3Vector & jetMomentum,
248  const xAOD::Vertex & primaryVertex) const
249  {
250  Amg::Vector3D eigenJetMomentum(jetMomentum.x(), jetMomentum.y(), jetMomentum.z());
251  return get2DLifetimeSignOfTrack(track, eigenJetMomentum, primaryVertex);
252  }
253 
255  const Amg::Vector3D & jetMomentum,
256  const xAOD::Vertex & primaryVertex) const
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  }
273 
274 
275 
276 
278  const CLHEP::Hep3Vector & jetMomentum,
279  const xAOD::Vertex & primaryVertex) const
280  {
281  Amg::Vector3D eigenJetMomentum(jetMomentum.x(), jetMomentum.y(), jetMomentum.z());
282  return getZLifetimeSignOfTrack(track, eigenJetMomentum, primaryVertex);
283  }
284 
286  const Amg::Vector3D & jetMomentum,
287  const xAOD::Vertex & primaryVertex) const
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  }
306 
307 
308 /*
309  StatusCode TrackToVertexIPEstimator::queryInterface(const InterfaceID& riid, void** ppvIf)
310  {
311 
312 
313  if(interfaceID() == riid){
314  *ppvIf = dynamic_cast< TrackToVertexIPEstimator* > (this);
315  }
316  else if(ITrackToVertexIPEstimator::interfaceID() == riid){
317  *ppvIf = dynamic_cast<ITrackToVertexIPEstimator*> (this);
318  }
319  else{
320  return AthAlgTool::queryInterface(riid, ppvIf);
321  }
322 
323  addRef();
324  return StatusCode::SUCCESS;
325 
326  }
327 */
328 
330 
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  }
341 
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  }
427 
428 
429 
430  std::unique_ptr<ImpactParametersAndSigma> TrackToVertexIPEstimator::estimate(const xAOD::TrackParticle * track,
431  const xAOD::Vertex* vtx)const
432  {
433 
434  if(track && vtx ){
435  return estimate( &(track->perigeeParameters()), vtx);
436  }
437  return nullptr;
438 
439  }
440 
441  std::unique_ptr<ImpactParametersAndSigma> TrackToVertexIPEstimator::estimate(const TrackParameters * track,
442  const xAOD::Vertex* vtx)const
443  {
444 
445  if(track && vtx ){
446  return calculate( track , *vtx);
447  }
448  return nullptr;
449 
450  }
451 
452 }//end of namespace definitions
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
TrackParameters.h
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
Trk::PerigeeSurface
Definition: PerigeeSurface.h:43
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
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.
TrackParticleBase.h
Trk::TrackToVertexIPEstimator::~TrackToVertexIPEstimator
~TrackToVertexIPEstimator()
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
Trk::temp
Definition: V0VertexDict.h:23
Trk::TrackToVertexIPEstimator::TrackToVertexIPEstimator
TrackToVertexIPEstimator(const std::string &t, const std::string &n, const IInterface *p)
Default Athena interface constructor and destructor.
Definition: TrackToVertexIPEstimator.cxx:19
Track.h
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
beamspotman.n
n
Definition: beamspotman.py:731
TrackToVertexIPEstimator.h
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
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
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
VxTrackAtVertex.h
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
xAOD::Vertex_v1::clearTracks
void clearTracks()
Remove all tracks from the vertex.
Definition: Vertex_v1.cxx:331
Trk::ParametersBase
Definition: ParametersBase.h:55
Vertex.h
dot.dot
def dot(G, fn, nodesToHighlight=[])
Definition: dot.py:5
Trk::IVertexUpdator::positionUpdateOutcome::position
Amg::Vector3D position
Definition: IVertexUpdator.h:61
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
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
Trk::IVertexUpdator::positionUpdateOutcome
Definition: IVertexUpdator.h:60
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.
TrackParticle.h
Trk::ParametersBase::momentum
const Amg::Vector3D & momentum() const
Access method for the momentum.
xAOD::Vertex_v1::chiSquared
float chiSquared() const
Returns the of the vertex fit as float.
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
Trk::TrackToVertexIPEstimator::initialize
virtual StatusCode initialize() override
Default Athena interface methods.
Definition: TrackToVertexIPEstimator.cxx:27
Trk::TrackToVertexIPEstimator::getZLifetimeSignOfTrack
virtual double getZLifetimeSignOfTrack(const TrackParameters &track, const Amg::Vector3D &jetDirection, const xAOD::Vertex &primaryVertex) const override
Definition: TrackToVertexIPEstimator.cxx:285
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
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
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
AthAlgTool
Definition: AthAlgTool.h:26
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
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
TrackParticleContainer.h
TauGNNUtils::Variables::Track::trackEta
bool trackEta(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:475
Trk::LinearizedTrack
Definition: LinearizedTrack.h:43