ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::ImpactPointEstimator Class Reference

Estimator for impact point calculations A description of the underlying mathematics can be found here: https://github.com/acts-project/acts/pull/2506 TODO: Upload reference at a better place. More...

#include <Acts/Vertexing/ImpactPointEstimator.hpp>

Classes

struct  Config
struct  State
 State struct. More...

Public Member Functions

 ImpactPointEstimator (const Config &cfg, std::unique_ptr< const Logger > logger=getDefaultLogger("ImpactPointEstimator", Logging::INFO))
 Constructor.
 ImpactPointEstimator (const ImpactPointEstimator &other)
 Copy constructor to clone logger (class owns a unique pointer to it, which can't be copied).
 ImpactPointEstimator (ImpactPointEstimator &&)=default
 Move constructor for impact point estimator.
Result< double > calculateDistance (const GeometryContext &gctx, const BoundTrackParameters &trkParams, const Vector3 &vtxPos, State &state) const
 Calculates 3D distance between a track and a vertex.
Result< BoundTrackParametersestimate3DImpactParameters (const GeometryContext &gctx, const Acts::MagneticFieldContext &mctx, const BoundTrackParameters &trkParams, const Vector3 &vtxPos, State &state) const
 Estimates the track parameters at the 3D PCA (i.e., a point of minimal 3D distance) to a vertex.
Result< double > get3DLifetimeSignOfTrack (const BoundTrackParameters &track, const Vertex &vtx, const Acts::Vector3 &direction, const GeometryContext &gctx, const MagneticFieldContext &mctx) const
 Estimates the sign of the 3D lifetime of a given track w.r.t.
template<int nDim>
Result< std::pair< Acts::ActsVector< nDim >, Acts::Vector3 > > getDistanceAndMomentum (const GeometryContext &gctx, const BoundTrackParameters &trkParams, const ActsVector< nDim > &vtxPos, State &state) const
 Calculate the distance between a track and a vertex by finding the corresponding 3D PCA.
Result< ImpactParametersAndSigmagetImpactParameters (const BoundTrackParameters &track, const Vertex &vtx, const GeometryContext &gctx, const MagneticFieldContext &mctx, bool calculateTimeIP=false) const
 Calculates the impact parameters of a track w.r.t.
Result< std::pair< double, double > > getLifetimeSignOfTrack (const BoundTrackParameters &track, const Vertex &vtx, const Acts::Vector3 &direction, const GeometryContext &gctx, const MagneticFieldContext &mctx) const
 Estimates the sign of the 2D and Z lifetime of a given track w.r.t.
template<int nDim>
Result< double > getVertexCompatibility (const GeometryContext &gctx, const BoundTrackParameters *trkParams, const ActsVector< nDim > &vertexPos) const
 Estimates the compatibility of a track to a vertex based on their 3D (if nDim = 3) or 4D (if nDim = 4) distance and the track covariance.

Detailed Description

Estimator for impact point calculations A description of the underlying mathematics can be found here: https://github.com/acts-project/acts/pull/2506 TODO: Upload reference at a better place.

Constructor & Destructor Documentation

◆ ImpactPointEstimator() [1/3]

Acts::ImpactPointEstimator::ImpactPointEstimator ( const Config & cfg,
std::unique_ptr< const Logger > logger = getDefaultLogger("ImpactPointEstimator",                                                     Logging::INFO) )
explicit

Constructor.

Parameters
cfgConfiguration object
loggerLogging instance

◆ ImpactPointEstimator() [2/3]

Acts::ImpactPointEstimator::ImpactPointEstimator ( const ImpactPointEstimator & other)

Copy constructor to clone logger (class owns a unique pointer to it, which can't be copied).

Parameters
otherImpact point estimator to be cloned

◆ ImpactPointEstimator() [3/3]

Acts::ImpactPointEstimator::ImpactPointEstimator ( ImpactPointEstimator && )
default

Move constructor for impact point estimator.

Member Function Documentation

◆ calculateDistance()

Result< double > Acts::ImpactPointEstimator::calculateDistance ( const GeometryContext & gctx,
const BoundTrackParameters & trkParams,
const Vector3 & vtxPos,
State & state ) const

Calculates 3D distance between a track and a vertex.

Parameters
gctxThe geometry context
trkParamsTrack parameters
vtxPos3D position to calculate the distance to
stateThe state object
Returns
Distance

◆ estimate3DImpactParameters()

Result< BoundTrackParameters > Acts::ImpactPointEstimator::estimate3DImpactParameters ( const GeometryContext & gctx,
const Acts::MagneticFieldContext & mctx,
const BoundTrackParameters & trkParams,
const Vector3 & vtxPos,
State & state ) const

Estimates the track parameters at the 3D PCA (i.e., a point of minimal 3D distance) to a vertex.

The track parameters are defined wrt a reference plane that has its origin at the vertex position and whose z-axis points in the direction of the track momentum. The plane's x-axis points approximately from the vertex to the 3D PCA (it is only approximate because we force it to be orthogonal to the z-axis). The y-axis is calculated as a cross product between x- and z-axis.

Parameters
gctxThe geometry context
mctxThe magnetic field context
trkParamsTrack parameters
vtxPosReference position (vertex)
stateThe state object
Returns
Track parameters at the 3D PCA

◆ get3DLifetimeSignOfTrack()

Result< double > Acts::ImpactPointEstimator::get3DLifetimeSignOfTrack ( const BoundTrackParameters & track,
const Vertex & vtx,
const Acts::Vector3 & direction,
const GeometryContext & gctx,
const MagneticFieldContext & mctx ) const

Estimates the sign of the 3D lifetime of a given track w.r.t.

a vertex and a direction (e.g. a jet direction)

Parameters
trackTrack to estimate the IP from
vtxVertex the track belongs to
directionThe direction
gctxThe geometry context
mctxThe magnetic field context
Returns
The value of the 3D lifetime

◆ getDistanceAndMomentum()

template<int nDim>
Result< std::pair< Acts::ActsVector< nDim >, Acts::Vector3 > > Acts::ImpactPointEstimator::getDistanceAndMomentum ( const GeometryContext & gctx,
const BoundTrackParameters & trkParams,
const ActsVector< nDim > & vtxPos,
State & state ) const

Calculate the distance between a track and a vertex by finding the corresponding 3D PCA.

Returns also the momentum direction at the 3D PCA. The template parameter nDim determines whether we calculate the 3D distance (nDim = 3) or the 4D distance (nDim = 4) to the 3D PCA.

Note
For straight tracks we use an analytical solution; for helical tracks we use the Newton method.
Template Parameters
nDimNumber of dimensions used to compute compatibility
Note
If nDim = 3 we only consider spatial dimensions; if nDim = 4, we also consider time. Other values are not allowed.
Parameters
gctxGeometry context
trkParamsTrack parameters
vtxPosVertex position
stateThe state object
Returns
Pair containing the distance vector and momentum direction at PCA

◆ getImpactParameters()

Result< ImpactParametersAndSigma > Acts::ImpactPointEstimator::getImpactParameters ( const BoundTrackParameters & track,
const Vertex & vtx,
const GeometryContext & gctx,
const MagneticFieldContext & mctx,
bool calculateTimeIP = false ) const

Calculates the impact parameters of a track w.r.t.

a vertex. The corresponding errors are approximated by summing the variances of the track and the vertex.

Parameters
trackTrack whose impact parameters are calculated
vtxVertex corresponding to the track
gctxThe geometry context
mctxThe magnetic field context
calculateTimeIPIf true, the difference in time is computed
Returns
Impact parameters and their uncertainties for the track-vertex pair

◆ getLifetimeSignOfTrack()

Result< std::pair< double, double > > Acts::ImpactPointEstimator::getLifetimeSignOfTrack ( const BoundTrackParameters & track,
const Vertex & vtx,
const Acts::Vector3 & direction,
const GeometryContext & gctx,
const MagneticFieldContext & mctx ) const

Estimates the sign of the 2D and Z lifetime of a given track w.r.t.

a vertex and a direction (e.g. a jet direction) by propagating the trajectory state towards the vertex position and computing the scalar product with the direction vector

Parameters
trackTrack to estimate the IP from
vtxVertex the track belongs to
directionThe direction
gctxThe geometry context
mctxThe magnetic field context
Returns
A pair holding the sign for the 2D and Z lifetimes

◆ getVertexCompatibility()

template<int nDim>
Result< double > Acts::ImpactPointEstimator::getVertexCompatibility ( const GeometryContext & gctx,
const BoundTrackParameters * trkParams,
const ActsVector< nDim > & vertexPos ) const

Estimates the compatibility of a track to a vertex based on their 3D (if nDim = 3) or 4D (if nDim = 4) distance and the track covariance.

Note
Confusingly, a smaller compatibility means that a track is more compatible.
Template Parameters
nDimNumber of dimensions used to compute compatibility
Note
If nDim = 3 we only consider spatial dimensions; if nDim = 4, we also consider time. Other values are not allowed.
Parameters
gctxThe Geometry context
trkParamsTrack parameters at point of closest approach in 3D as retrieved by estimate3DImpactParameters
vertexPosThe vertex position
Returns
The compatibility value