ATLAS Offline Software
Loading...
Searching...
No Matches
CurvilinearParametersT.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
6// CurvilinearParametersT.h, (c) ATLAS Detector software
8
9#ifndef TRKPARAMETERSBASE_CURVILINEARPARAMETERS_T_H
10#define TRKPARAMETERSBASE_CURVILINEARPARAMETERS_T_H
11
13
18#include <memory>
19class MsgStream;
20
21namespace Trk {
45
46template<int DIM, class T, class S>
47class CurvilinearParametersT final : public ParametersBase<DIM, T>
48{
49public:
50 static_assert(S::staticType == SurfaceType::Plane,
51 "The surface type must be Plane");
52
55
59 const AmgVector(DIM + 2) & parameters,
60 std::optional<AmgSymMatrix(DIM)> covariance = std::nullopt,
61 unsigned int cIdenfier = 0);
62
66 const Amg::Vector3D& pos,
67 double phi,
68 double theta,
69 double qOverP,
70 std::optional<AmgSymMatrix(DIM)> covariance = std::nullopt,
71 unsigned int cIdenfier = 0);
72
76 const Amg::Vector3D& pos,
77 const Amg::Vector3D& mom,
78 double charge,
79 std::optional<AmgSymMatrix(DIM)> covariance = std::nullopt,
80 unsigned int cIdenfier = 0);
81
84
87
89 CurvilinearParametersT<DIM, T, S>& operator=(
90 const CurvilinearParametersT<DIM, T, S>&) = default;
91
93 CurvilinearParametersT<DIM, T, S>& operator=(
94 CurvilinearParametersT<DIM, T, S>&&) noexcept = default;
95
97 virtual ~CurvilinearParametersT() = default;
98
100 unsigned int cIdentifier() const;
101
102 void setcIdentifier(unsigned int cIdentifier);
103
105 virtual bool hasSurface() const override final;
106
108 virtual const S& associatedSurface() const override final;
109
111 virtual bool operator==(
112 const ParametersBase<DIM, T>& rhs) const override final;
113
115 virtual CurvilinearParametersT<DIM, T, S>* clone() const override final;
116
117
119 constexpr virtual ParametersType type() const override final;
120
122 constexpr virtual SurfaceType surfaceType() const override final;
123
125 virtual Amg::RotationMatrix3D measurementFrame() const override final;
126
128 virtual MsgStream& dump(MsgStream& out) const override final;
129 virtual std::ostream& dump(std::ostream& out) const override final;
130
131private:
132 /* Helper to factor in update of parameters*/
133 virtual void updateParametersHelper(const AmgVector(DIM) &) override final;
134
137
139 /*
140 * Add dependent names into scope
141 */
144 unsigned int m_cIdentifier = 0;
145 /*
146 * friends needed for Persistency
147 */
148 template<typename pars>
150 friend class ::TrackParametersCnv_p2;
151 friend class ::MeasuredPerigeeCnv_p1;
152
155};
156} // end of namespace Trk
157
158#include "TrkParametersBase/CurvilinearParametersT.icc"
159#endif
#define AmgSymMatrix(dim)
#define AmgVector(rows)
#define protected
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
virtual constexpr SurfaceType surfaceType() const override final
virtual constexpr ParametersType type() const override final
CurvilinearParametersT(const CurvilinearParametersT< DIM, T, S > &)=default
Copy Constructor.
CurvilinearParametersT(const AmgVector(DIM+2) &parameters, std::optional< AmgSymMatrix(DIM)> covariance=std::nullopt, unsigned int cIdenfier=0)
Create CurvilinearParametersT from DIM+2 parameters.
virtual Amg::RotationMatrix3D measurementFrame() const override final
virtual CurvilinearParametersT< DIM, Neutral, PlaneSurface > * clone() const override final
virtual void updateParametersHelper(const AmgVector(DIM) &) override final
CurvilinearParametersT(const Amg::Vector3D &pos, double phi, double theta, double qOverP, std::optional< AmgSymMatrix(DIM)> covariance=std::nullopt, unsigned int cIdenfier=0)
Create CurvilinearParametersT from mixed parameters: pos, local parameters.
virtual const PlaneSurface & associatedSurface() const override final
CurvilinearParametersT()=default
default constructor only for POOL
CurvilinearParametersT(const Amg::Vector3D &pos, const Amg::Vector3D &mom, double charge, std::optional< AmgSymMatrix(DIM)> covariance=std::nullopt, unsigned int cIdenfier=0)
Create CurvilinearParametersT from global parameters.
CurvilinearParametersT(CurvilinearParametersT< DIM, T, S > &&) noexcept=default
Move Constructor.
simple class that constructs the curvilinear vectors curvU and curvV from a given momentum direction ...
ParametersBase()=default
STL class.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Matrix< double, 3, 1 > Vector3D
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.
@ theta
Definition ParamDefs.h:66
@ qOverP
perigee
Definition ParamDefs.h:67
@ phi
Definition ParamDefs.h:75
-event-from-file
STL namespace.
#define private