Class Acts::GenericBoundTrackParameters

template<class particle_hypothesis_t>
class GenericBoundTrackParameters

Track parameters bound to a reference surface for a single track.

This is intended as a user-facing data class that adds additional accessors and charge/momentum interpretation on top of the pure parameters vector. All parameters and their corresponding covariance matrix are stored in bound parametrization. The specific definition of the local spatial parameters is defined by the associated surface.

Note

This class holds shared ownership on its reference surface.

Template Parameters

particle_hypothesis_t – Helper type to interpret the particle charge/momentum

Subclassed by Acts::GenericCurvilinearTrackParameters< particle_hypothesis_t >

Public Types

using CovarianceMatrix = BoundSquareMatrix
using ParametersVector = BoundVector
using ParticleHypothesis = particle_hypothesis_t
using Scalar = ActsScalar

Public Functions

GenericBoundTrackParameters() = delete

Parameters are not default constructible due to the charge type.

GenericBoundTrackParameters(const GenericBoundTrackParameters&) = default
template<typename other_particle_hypothesis_t>
inline GenericBoundTrackParameters(const GenericBoundTrackParameters<other_particle_hypothesis_t> &other)

Converts a bound track parameter with a different hypothesis.

GenericBoundTrackParameters(GenericBoundTrackParameters&&) = default
inline GenericBoundTrackParameters(std::shared_ptr<const Surface> surface, const ParametersVector &params, std::optional<CovarianceMatrix> cov, ParticleHypothesis particleHypothesis)

Construct from a parameters vector on the surface and particle charge.

In principle, only the charge magnitude is needed her to allow unambiguous extraction of the absolute momentum. The particle charge is required as an input here to be consistent with the other constructors below that that also take the charge as an input. The charge sign is only used in debug builds to check for consistency with the q/p parameter.

Parameters
  • surface – Reference surface the parameters are defined on

  • params – Bound parameters vector

  • cov – Bound parameters covariance matrix

  • particleHypothesis – Particle hypothesis

~GenericBoundTrackParameters() = default
inline Scalar absoluteMomentum() const

Absolute momentum.

inline Scalar charge() const

Particle electric charge.

inline std::optional<CovarianceMatrix> &covariance()

Optional covariance matrix.

inline const std::optional<CovarianceMatrix> &covariance() const

Optional covariance matrix.

inline Vector3 direction() const

Unit direction three-vector, i.e.

the normalized momentum three-vector.

inline Vector4 fourPosition(const GeometryContext &geoCtx) const

Space-time position four-vector.

This uses the associated surface to transform the local position on the surface to globalcoordinates. This requires a geometry context to select the appropriate transformation and might be a computationally expensive operation.

Parameters

geoCtx[in] Geometry context for the local-to-global transformation

template<BoundIndices kIndex>
inline Scalar get() const

Access a single parameter value identified by its index.

Template Parameters

kIndex – Track parameter index

inline Vector2 localPosition() const

Local spatial position two-vector.

inline Vector3 momentum() const

Momentum three-vector.

GenericBoundTrackParameters &operator=(const GenericBoundTrackParameters&) = default
GenericBoundTrackParameters &operator=(GenericBoundTrackParameters&&) = default
inline ParametersVector &parameters()

Parameters vector.

inline const ParametersVector &parameters() const

Parameters vector.

inline const ParticleHypothesis &particleHypothesis() const

Particle hypothesis.

inline Scalar phi() const

Phi direction.

inline Vector3 position(const GeometryContext &geoCtx) const

Spatial position three-vector.

This uses the associated surface to transform the local position on the surface to globalcoordinates. This requires a geometry context to select the appropriate transformation and might be a computationally expensive operation.

Parameters

geoCtx[in] Geometry context for the local-to-global transformation

inline Scalar qOverP() const

Charge over momentum.

inline RotationMatrix3 referenceFrame(const GeometryContext &geoCtx) const

Reference frame in which the local error is defined.

For planar surfaces, this is the transformation local-to-global rotation matrix. For non-planar surfaces, it is the local-to-global rotation matrix of the tangential plane at the track position.

Parameters

geoCtx[in] Geometry context for the local-to-global transformation

inline const Surface &referenceSurface() const

Reference surface onto which the parameters are bound.

inline Scalar theta() const

Theta direction.

inline Scalar time() const

Time coordinate.

inline Scalar transverseMomentum() const

Transverse momentum.

Public Static Functions

static inline Result<GenericBoundTrackParameters> create(std::shared_ptr<const Surface> surface, const GeometryContext &geoCtx, const Vector4 &pos4, const Vector3 &dir, Scalar qOverP, std::optional<CovarianceMatrix> cov, ParticleHypothesis particleHypothesis)

Factory to construct from four-position, direction, absolute momentum, and charge.

Note

The returned result indicates whether the free parameters could successfully be converted to on-surface parameters.

Parameters
  • surface – Reference surface the parameters are defined on

  • geoCtx – Geometry context for the local-to-global transformation

  • pos4 – Track position/time four-vector

  • dir – Track direction three-vector; normalization is ignored

  • qOverP – Charge over momentum

  • cov – Bound parameters covariance matrix

  • particleHypothesis – Particle hypothesis