ATLAS Offline Software
Loading...
Searching...
No Matches
ParametersBase.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
6// ParametersBase.h, (c) ATLAS Detector software
8
9#ifndef TRKPARAMETERSBASE_PARAMETERSBASE_H
10#define TRKPARAMETERSBASE_PARAMETERSBASE_H
11//
13//system
14#include <memory>
15#include <type_traits>
16#include <optional>
17#include <iosfwd>
18
19class MsgStream;
20
21template<typename T>
25template<class SURFACE_CNV, class ATA_SURFACE>
27
28namespace Trk {
29class Surface;
31
32
52
53template<int DIM, class T>
54class ParametersBase : public ParametersCommon<DIM,T>
55{
56public:
58 virtual ~ParametersBase() = default;
59
61 double charge() const;
62
64 const Amg::Vector3D& position() const;
65
67 const Amg::Vector3D& momentum() const;
68
70 double pT() const;
71
73 double eta() const;
74
76 virtual bool operator==(const ParametersBase<DIM, T>&) const;
77
79 virtual bool hasSurface() const override = 0;
80
82 virtual const Surface& associatedSurface() const override = 0;
83
88 virtual Amg::RotationMatrix3D measurementFrame() const override = 0;
89
92 virtual ParametersBase<DIM, T>* clone() const override = 0;
93
97 std::unique_ptr<ParametersBase<DIM, T>> uniqueClone() const{
98 return std::unique_ptr<ParametersBase<DIM, T>>(this->clone());
99 }
100
102 constexpr virtual ParametersType type() const override = 0;
103
106 constexpr virtual SurfaceType surfaceType() const override = 0;
107
109 virtual MsgStream& dump(MsgStream& out) const;
110 virtual std::ostream& dump(std::ostream& out) const;
111
112protected:
113 /*
114 * This is an abstract class and we can not instantiate objects directly.
115 * In the other hand derived classed can use ctors
116 */
117 ParametersBase() = default;
118 ParametersBase(ParametersBase&&) noexcept = default;
119 ParametersBase& operator=(ParametersBase&&) noexcept = default;
121 ParametersBase& operator=(const ParametersBase&) = default;
122
123 /* Helper ctors for derived classes*/
125 std::optional<AmgSymMatrix(DIM)>&& covariance,
126 const T chargeDef);
127
128 ParametersBase(std::optional<AmgSymMatrix(DIM)>&& covariance);
129
130 ParametersBase(const AmgVector(DIM) & parameters,
131 std::optional<AmgSymMatrix(DIM)>&& covariance = std::nullopt);
132
133 virtual void updateParametersHelper(const AmgVector(DIM) &) override = 0;
134 /*
135 * Add dependent names into scope
136 */
137 using ParametersCommon<DIM, T>::m_parameters;
138 using ParametersCommon<DIM, T>::m_covariance;
139 using ParametersCommon<DIM, T>::m_chargeDef;
142};
143
146template<int DIM, class T>
147MsgStream&
148operator<<(MsgStream& sl, const Trk::ParametersBase<DIM, T>& tp);
149
150template<int DIM, class T>
152operator<<(std::ostream& sl, const Trk::ParametersBase<DIM, T>& tp);
153
154} // end of namespace Trk
155
156#include "TrkParametersBase/ParametersBase.icc"
157
158#endif
Eigen::Matrix< double, 3, 1 > Vector3D
New convertor which handles all track parameters in one go - i.e.
Material effects engine interface for charged and neutral (fast track simulation) ,...
The base class for neutral and charged Track parameters.
virtual MsgStream & dump(MsgStream &out) const
Dumps relevant information about the track parameters into the ostream.
double eta() const
Access method for pseudorapidity - from momentum.
const Amg::Vector3D & momentum() const
Access method for the momentum.
virtual bool operator==(const ParametersBase< DIM, T > &) const
equality operator
ParametersBase(ParametersBase &&) noexcept=default
virtual constexpr SurfaceType surfaceType() const override=0
Returns the Surface Type enum for the surface used to define the derived class.
virtual ~ParametersBase()=default
virtual Destructor
virtual ParametersBase< DIM, T > * clone() const override=0
clone method for polymorphic deep copy
virtual Amg::RotationMatrix3D measurementFrame() const override=0
Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perig...
virtual std::ostream & dump(std::ostream &out) const
const Amg::Vector3D & position() const
Access method for the position.
double charge() const
Returns the charge.
virtual constexpr ParametersType type() const override=0
Return the ParametersType enum.
virtual bool hasSurface() const override=0
Test to see if there's a not null surface ptr.
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
double pT() const
Access method for transverse momentum.
virtual void updateParametersHelper(const AmgVector(DIM) &) override=0
ParametersBase()=default
std::unique_ptr< ParametersBase< DIM, T > > uniqueClone() const
clone method for polymorphic deep copy returning unique_ptr; it is not overriden, but uses the existi...
ParametersCommon()=default
Abstract Base Class for tracking surfaces.
STL class.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
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.
STL namespace.