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

Linearizes the track parameters at the PCA to a user-provided point (linPoint). More...

#include <Acts/Vertexing/NumericalTrackLinearizer.hpp>

Classes

struct  Config
 Configuration struct. More...

Public Member Functions

 NumericalTrackLinearizer (const Config &config, std::unique_ptr< const Logger > _logger=getDefaultLogger("NumTrkLinProp", Logging::INFO))
 Constructor.
Result< LinearizedTracklinearizeTrack (const BoundTrackParameters &params, double linPointTime, const Surface &perigeeSurface, const Acts::GeometryContext &gctx, const Acts::MagneticFieldContext &mctx, MagneticFieldProvider::Cache &) const
 Function that linearizes BoundTrackParameters at the PCA to a given Perigee surface.

Detailed Description

Linearizes the track parameters at the PCA to a user-provided point (linPoint).

The track parameters are written as a function of the global 4D PCA position and the momentum of the particle at the PCA (i.e., (phi, theta, q/p)). The linearization then reads (see Eq. 5.7 in Ref(1)):

q = A (r - r_0) + B (p - p_0) + c,

where q are the Perigee parameters wrt linPoint, {r_0} r is the {initial} 4D PCA position, {p_0} p is the {initial} momentum at the PCA, and c is the constant term of the expansion. A and B are matrices of derivatives, denoted hereafter as "positionJacobian" and "momentumJacobian" respectively. Note that, unlike in Ref. (1), we add the time to the parametrization, which adds a row and a column to A and a row to B.

This class computes A and B by wiggling one of the 7 parameters at the PCA and computing the new PCA wrt linPoint. The derivatives wrt the k-th parameter pk are then calculated via

(q(p1, p2, ..., pk+delta, ... p7) - q(p1, p2, ..., pk, ... p7))/delta,

where q(p1, p2, ..., pk+delta, ... p7) are the new Perigee parameters (corresponding to the new PCA to linPoint). Note that p1 corresponds to the x-position of the PCA, p2 corresponds to the y-position of the PCA, etc.

Note
Connection to RiddersPropagator: The RiddersPropagator does a very similar thing to what this class does, but it wiggles BoundTrackParameters (FreeTrackParameters could also be used if Propagator.hpp and Propagator.ipp were adapted to accommodate them). Here, we wiggle neither BoundTrackParameters nor FreeTrackParameters, but rather the parameters described above.

Ref.(1) - CERN-THESIS-2010-027, Giacinto Piacquadio (Freiburg U.)

Constructor & Destructor Documentation

◆ NumericalTrackLinearizer()

Acts::NumericalTrackLinearizer::NumericalTrackLinearizer ( const Config & config,
std::unique_ptr< const Logger > _logger = getDefaultLogger("NumTrkLinProp",                                                               Logging::INFO) )
explicit

Constructor.

Parameters
configConfiguration object
_loggerLogging instance

Member Function Documentation

◆ linearizeTrack()

Result< LinearizedTrack > Acts::NumericalTrackLinearizer::linearizeTrack ( const BoundTrackParameters & params,
double linPointTime,
const Surface & perigeeSurface,
const Acts::GeometryContext & gctx,
const Acts::MagneticFieldContext & mctx,
MagneticFieldProvider::Cache &  ) const

Function that linearizes BoundTrackParameters at the PCA to a given Perigee surface.

Parameters
paramsParameters to linearize
linPointTimeTime associated to the linearization point
Note
Transverse plane of the Perigee corresponding to linPoint is parallel to the global x-y plane
Parameters
perigeeSurfacePerigee surface belonging to linPoint
gctxGeometry context
mctxMagnetic field context
Returns
Linearized track