9#ifndef TRKPARAMETERSCOMMON_PARAMETERSCOMMON_H
10#define TRKPARAMETERSCOMMON_PARAMETERSCOMMON_H
32constexpr double INVALID = std::numeric_limits<double>::quiet_NaN();
44template <
int DIM,
class T>
47 static_assert((std::is_same<T, Trk::Charged>::value ||
48 std::is_same<T, Trk::Neutral>::value),
49 "Parameters must be Charged or Neutral");
50 static constexpr int dim = DIM;
#define AmgSymMatrix(dim)
void updateParameters(const AmgVector(DIM) &, const AmgSymMatrix(DIM) &)
Update parameters and covariance , passing covariance by ref.
void updateParameters(const AmgVector(DIM) &)
Update parameters.
virtual const Surface & associatedSurface() const =0
Access to the Surface associated to the Parameters.
virtual Amg::RotationMatrix3D measurementFrame() const =0
Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perig...
virtual ~ParametersCommon()=default
virtual Destructor
std::optional< AmgSymMatrix(DIM)> m_covariance
virtual ParametersCommon< DIM, T > * clone() const =0
clone method for polymorphic deep copy
const AmgSymMatrix(DIM) *covariance() const
Access method for the covariance matrix - returns nullptr if no covariance matrix is given.
virtual bool hasSurface() const =0
Test to see if there's a not null surface ptr.
ParametersCommon(ParametersCommon &&) noexcept=default
virtual SurfaceType surfaceType() const =0
Returns the Surface Type enum for the surface used to define the derived class.
constexpr bool isCharged() const
Returns true if Charged or false if Neutral.
AmgVector(DIM) ¶meters()
AmgSymMatrix(DIM) *covariance()
ParametersCommon()=default
void setParameters(const AmgVector(DIM) ¶m)
set parameters
virtual void updateParametersHelper(const AmgVector(DIM) &)=0
void setCovariance(const AmgSymMatrix(DIM) &cov)
set covariance
const AmgVector(DIM) ¶meters() const
Access methods for the parameters.
Amg::Vector2D localPosition() const
Access method for the local coordinates, local parameter definitions differ for each surface type.
virtual constexpr ParametersType type() const =0
Return the ParametersType enum.
Abstract Base Class for tracking surfaces.
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Eigen::Matrix< double, 2, 1 > Vector2D
constexpr double INVALID_P(10e9)
constexpr double INVALID_QOP(10e-9)
Ensure that the ATLAS eigen extensions are properly loaded.
SurfaceType
This enumerator simplifies the persistency & calculations,.
ParametersType
Enum to avoid dynamic cast for different parameter types.