ATLAS Offline Software
Loading...
Searching...
No Matches
PerigeeSurface.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6// PerigeeSurface.h, (c) ATLAS Detector software
8
9#ifndef TRKSURFACES_PERIGEESURFACE_H
10#define TRKSURFACES_PERIGEESURFACE_H
11
12// Trk
16#include "TrkSurfaces/Surface.h"
17// Amg
21
22class MsgStream;
23
24namespace Trk {
25
26class LocalParameters;
27template<int DIM, class T, class S>
28class ParametersT;
29
41
42class PerigeeSurface final : public Surface
43{
44
45public:
48
51
53 PerigeeSurface(const PerigeeSurface& pesf);
54
57
59 PerigeeSurface(PerigeeSurface&& pesf) noexcept = default;
60
62 PerigeeSurface& operator=(PerigeeSurface&& slsf) noexcept = default;
63
65 virtual ~PerigeeSurface() = default;
66
69
71 PerigeeSurface(const Amg::Transform3D& tTransform);
72
74 PerigeeSurface(const PerigeeSurface& pesf, const Amg::Transform3D& transf);
75
77 virtual PerigeeSurface* clone() const override final;
78
80 virtual bool operator==(const Surface& sf) const override;
81 bool operator==(const PerigeeSurface& cf) const;
82
86 double l1,
87 double l2,
88 double phi,
89 double theta,
90 double qop,
91 std::optional<AmgSymMatrix(5)> cov = std::nullopt) const override final;
92
96 const Amg::Vector3D& position,
97 const Amg::Vector3D& momentum,
98 double charge,
99 std::optional<AmgSymMatrix(5)> cov = std::nullopt) const override final;
100
104 double l1,
105 double l2,
106 double phi,
107 double theta,
108 double qop,
109 std::optional<AmgSymMatrix(5)> cov = std::nullopt) const override final;
110
114 const Amg::Vector3D& position,
115 const Amg::Vector3D& momentum,
116 double charge,
117 std::optional<AmgSymMatrix(5)> cov = std::nullopt) const override final;
118
120 template<int DIM, class T>
122 double l1,
123 double l2,
124 double phi,
125 double theta,
126 double qop,
127 std::optional<AmgSymMatrix(DIM)> cov = std::nullopt) const;
128
130 template<int DIM, class T>
132 const Amg::Vector3D& position,
133 const Amg::Vector3D& momentum,
134 double charge,
135 std::optional<AmgSymMatrix(DIM)> cov = std::nullopt) const;
136
138 constexpr virtual SurfaceType type() const override final;
139
141 virtual const Amg::Vector3D& normal() const override final;
142
144 virtual Amg::Vector3D normal(const Amg::Vector2D& lp) const override final;
145
151 const Amg::Vector3D& glopos,
152 const Amg::Vector3D& glomom) const override final;
153
161
169 const Amg::Vector3D& glomom) const;
170
172 virtual void localToGlobal(const Amg::Vector2D& locp,
173 const Amg::Vector3D& mom,
174 Amg::Vector3D& glob) const override final;
175
179 virtual bool globalToLocal(const Amg::Vector3D& glob,
180 const Amg::Vector3D& mom,
181 Amg::Vector2D& loc) const override final;
182
214 const Amg::Vector3D& pos,
215 const Amg::Vector3D& dir,
216 bool forceDir = false,
217 Trk::BoundaryCheck bchk = false) const override final;
218
221 const Amg::Vector3D& pos,
222 const Amg::Vector3D& dir) const override final;
223
226 const Amg::Vector3D& pos,
227 const Amg::Vector3D& dir,
228 bool Bound) const override final;
229
232 const Amg::Vector3D&) const override final;
233
235 virtual bool isOnSurface(const Amg::Vector3D& glopo,
236 const BoundaryCheck& bchk = true,
237 double tol1 = 0.,
238 double tol2 = 0.) const override final;
239
241 virtual bool insideBounds(const Amg::Vector2D& locpos,
242 double tol1 = 0.,
243 double tol2 = 0.) const override final;
244
245 virtual bool insideBoundsCheck(
246 const Amg::Vector2D& locpos,
247 const BoundaryCheck& bchk) const override final;
248
252
254 virtual const NoBounds& bounds() const override final;
255
257 virtual std::string name() const override final;
258
260 virtual MsgStream& dump(MsgStream& sl) const override;
262 virtual std::ostream& dump(std::ostream& sl) const override;
263
269};
270
271} // end of namespace
272#include "TrkSurfaces/PerigeeSurface.icc"
273
274#endif // TRKSURFACES_PERIGEESURFACE_H
double charge(const T &p)
Definition AtlasPID.h:997
Cached value with atomic update.
#define protected
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Eigen::Matrix< double, 3, 1 > Vector3D
The BoundaryCheck class allows to steer the way surface boundaries are used for inside/outside checks...
Access to distance solutions.
Bounds object for a boundless surface (...)
Definition NoBounds.h:30
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition ParametersT.h:49
virtual bool isOnSurface(const Amg::Vector3D &glopo, const BoundaryCheck &bchk=true, double tol1=0., double tol2=0.) const override final
This method checks if a globalPosition in on the Surface or not.
Amg::Vector3D localToGlobal(const LocalParameters &locpos) const
Local to global method: Take care that by just providing locR and locZ the global position cannot be ...
static constexpr SurfaceType staticType
The surface type static constexpr.
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override final
GlobalToLocal method without dynamic memory allocation - boolean checks if on surface.
virtual const NoBounds & bounds() const override final
Return bounds() method.
virtual PerigeeSurface * clone() const override final
Virtual constructor.
virtual NeutralTrackParametersUniquePtr createUniqueNeutralParameters(double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final
Use the Surface as a ParametersBase constructor, from local parameters - neutral.
PerigeeSurface & operator=(PerigeeSurface &&slsf) noexcept=default
Assignment operator.
CxxUtils::CachedValue< Amg::Vector3D > m_lineDirection
< data members cache of the line direction (speeds up)
const Amg::Vector3D & lineDirection() const
Special method for StraightLineSurface - provides the Line direction from cache: speedup.
virtual bool insideBoundsCheck(const Amg::Vector2D &locpos, const BoundaryCheck &bchk) const override final
PerigeeSurface()
Default Constructor - needed for persistency.
virtual Intersection straightLineIntersection(const Amg::Vector3D &pos, const Amg::Vector3D &dir, bool forceDir=false, Trk::BoundaryCheck bchk=false) const override final
fast straight line intersection schema - standard: provides closest intersection and (signed) path le...
virtual DistanceSolution straightLineDistanceEstimate(const Amg::Vector3D &pos, const Amg::Vector3D &dir) const override final
fast straight line distance evaluation to Surface
std::unique_ptr< ParametersT< DIM, T, PerigeeSurface > > createUniqueParameters(double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(DIM)> cov=std::nullopt) const
Use the Surface as a ParametersBase constructor, from local parameters.
virtual Surface::ChargedTrackParametersUniquePtr createUniqueTrackParameters(double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final
Use the Surface as a ParametersBase constructor, from local parameters - charged.
static const NoBounds s_perigeeBounds
PerigeeSurface & operator=(const PerigeeSurface &slsf)
Assignment operator.
virtual const Amg::Vector3D & normal() const override final
Returns the x global axis.
PerigeeSurface(PerigeeSurface &&pesf) noexcept=default
Copy constructor.
virtual std::string name() const override final
Return properly formatted class name for screen output.
virtual constexpr SurfaceType type() const override final
Return the surface type.
virtual Amg::RotationMatrix3D measurementFrame(const Amg::Vector3D &glopos, const Amg::Vector3D &glomom) const override final
Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perig...
virtual bool insideBounds(const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const override final
This surface calls the iside method of the bounds.
virtual ~PerigeeSurface()=default
Destructor.
virtual double pathCorrection(const Amg::Vector3D &, const Amg::Vector3D &) const override final
the pathCorrection for derived classes with thickness
std::unique_ptr< ParametersBase< 5, Trk::Charged > > ChargedTrackParametersUniquePtr
Unique ptr types.
Surface()
Default Constructor for inheriting classes.
std::unique_ptr< ParametersBase< 5, Trk::Neutral > > NeutralTrackParametersUniquePtr
STL class.
STL class.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
SurfaceType
This enumerator simplifies the persistency & calculations,.
@ theta
Definition ParamDefs.h:66
@ phi
Definition ParamDefs.h:75
AmgSymMatrix(5) &GXFTrackState
-event-from-file
STL namespace.