Class Acts::HelicalTrackLinearizer

template<typename propagator_t, typename propagator_options_t = PropagatorOptions<>>
class HelicalTrackLinearizer

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

The track parameters are written as a function of the global PCA position and the momentum of the particle at the PCA. 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 (phi, theta, q/p) 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.

This class computes A and B using the analytic formulae of Ref. (1).

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

Template Parameters
  • propagator_t – Propagator type

  • propagator_options_t – Propagator options type

Public Types

using Propagator_t = propagator_t

Public Functions

inline HelicalTrackLinearizer(const Config &config, std::unique_ptr<const Logger> _logger = getDefaultLogger("HelTrkLinProp", Logging::INFO))


  • config – Configuration object

  • _logger – a logger instance

Result<LinearizedTrack> linearizeTrack(const BoundTrackParameters &params, const Vector4 &linPoint, const Acts::GeometryContext &gctx, const Acts::MagneticFieldContext &mctx, State &state) const

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


Transverse plane of the Perigee corresponding to linPoint is parallel to the global x-y plane

  • params – Parameters to linearize

  • linPoint – Point which defines the Perigee.

  • gctx – Geometry context

  • mctx – Magnetic field context

  • state – Linearizer state object


Linearized track

struct Config

Configuration struct.

Public Functions

inline Config(std::shared_ptr<const MagneticFieldProvider> bIn, std::shared_ptr<const Propagator_t> prop)

@ Config constructor if magnetic field is present

  • bIn – The magnetic field

  • prop – The propagator

inline Config(std::shared_ptr<const Propagator_t> prop)

Config constructor without B field -> uses NullBField.


prop – The propagator

Public Members

std::shared_ptr<const MagneticFieldProvider> bField
double minQoP = 1e-15
std::shared_ptr<const Propagator_t> propagator
ActsScalar targetTolerance = 1e-12

Tolerance determining how close we need to get to the Perigee surface to reach it during propagation.

struct State

State struct.

Public Functions

inline State(MagneticFieldProvider::Cache fieldCacheIn)

The state constructor.


fieldCacheIn – The magnetic field cache

Public Members

MagneticFieldProvider::Cache fieldCache

Magnetic field cache.