File GenericBoundTrackParameters.hpp
-
namespace Acts
Note
This file is foreseen for the
Geometry
module to replaceExtent
-
template<class particle_hypothesis_t>
class GenericBoundTrackParameters - #include <Acts/EventData/GenericBoundTrackParameters.hpp>
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
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 ¶meters()
Parameters vector.
-
inline const ParametersVector ¶meters() 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
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
Private Functions
-
inline void normalizePhiTheta()
Ensure phi and theta angles are within bounds.
Private Members
-
std::optional<BoundSquareMatrix> m_cov
-
BoundVector m_params
-
ParticleHypothesis m_particleHypothesis
Friends
-
inline friend bool operator!=(const GenericBoundTrackParameters &lhs, const GenericBoundTrackParameters &rhs)
Compare two bound track parameters for bitwise in-equality.
-
inline friend std::ostream &operator<<(std::ostream &os, const GenericBoundTrackParameters &tp)
Print information to the output stream.
-
inline friend bool operator==(const GenericBoundTrackParameters &lhs, const GenericBoundTrackParameters &rhs)
Compare two bound track parameters for bitwise equality.
Note
Comparing track parameters for bitwise equality is not a good idea. Depending on the context you might want to compare only the parameter values, or compare them for compatibility instead of equality; you might also have different (floating point) thresholds of equality in different contexts. None of that can be handled by this operator. Users should think really hard if this is what they want and we might decided that we will remove this in the future.
-
template<class particle_hypothesis_t>