ATLAS Offline Software
Loading...
Searching...
No Matches
PatternTrackParameters.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
6// Header file for class PatternTrackParameters
7// Class for pattern track parameters
8// author I.Gavrilenko 09/08/2006
10
11#ifndef PatternTrackParameters_H
12#define PatternTrackParameters_H
13
16#include "TrkSurfaces/Surface.h"
18#include <cmath>
19#include <iosfwd>
20
21class MsgStream;
22
23namespace Trk {
24
25 class PlaneSurface ;
27 class DiscSurface ;
28 class CylinderSurface ;
29 class PerigeeSurface ;
30 class ConeSurface ;
31
33 public:
38 PatternTrackParameters& operator = (PatternTrackParameters&&) noexcept = default;
39 virtual ~PatternTrackParameters() = default;
40
41 // Main methods
42 bool iscovariance () const {return m_covariance != std::nullopt ;}
43 double sinPhi () const;
44 double cosPhi () const;
45 double sinTheta () const;
46 double cosTheta () const;
47 double cotTheta () const;
48 void changeDirection () ;
49 double transverseMomentum() const;
50
51 // Methods from ParametersCommon
52 virtual const Surface& associatedSurface () const override final;
55 double charge() const;
56 virtual bool hasSurface() const override final;
57 virtual Amg::RotationMatrix3D measurementFrame() const override final;
58 virtual PatternTrackParameters * clone() const override final;
59 constexpr virtual ParametersType type() const override final;
60 virtual SurfaceType surfaceType() const override final;
61 virtual void updateParametersHelper(const AmgVector(5) &) override final;
62
63 // set methods
64 void setParameters (const Surface*,const double* );
65 void setCovariance ( const double*);
68
69 // Convertors
72
73 // Init methods
74 void diagonalization (double);
75 bool initiate (PatternTrackParameters&, const Amg::Vector2D&,const Amg::MatrixX&);
76
77 // Add or remove noise
80
81 // Print
83 MsgStream& dump(MsgStream& ) const;
84
86
87 // Protected data
89
91 // Comments
92 // m_surface is pointer to associated surface
93 // m_parameters[ 0] - 1 local coordinate
94 // m_parameters[ 1] - 2 local coordinate
95 // m_parameters[ 2] - Azimuthal angle
96 // m_parameters[ 3] - Polar angle
97 // m_parameters[ 4] - charge/Momentum
98 // m_covariance is the covariance matrix
100
101
102 // Protected methods
109
113
114 private:
115 std::string to_string() const;
116 };
117
119 // Overload operator
121
123 MsgStream& operator << (MsgStream&, const PatternTrackParameters& );
124
125} // end of name space Trk
126
127#include "TrkPatternParameters/PatternTrackParameters.icc"
128
129#endif // PatternTrackParameters
#define protected
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Eigen::Matrix< double, 3, 1 > Vector3D
Class for a conical surface in the ATLAS detector.
Definition ConeSurface.h:51
Class for a CylinderSurface in the ATLAS detector.
Class for a DiscSurface in the ATLAS detector.
Definition DiscSurface.h:54
virtual constexpr ParametersType type() const override final
Return the ParametersType enum.
bool production(const TrackParameters *)
double absoluteMomentum() const
void addNoise(const NoiseOnSurface &, PropDirection)
virtual bool hasSurface() const override final
Test to see if there's a not null surface ptr.
virtual PatternTrackParameters * clone() const override final
clone method for polymorphic deep copy
void setParametersWithCovariance(const Surface *, const double *, const double *)
Amg::Vector3D calculateMomentum(void) const
virtual const Surface & associatedSurface() const override final
Access to the Surface associated to the Parameters.
void setCovariance(const double *)
SurfaceUniquePtrT< const Surface > m_surface
void setParameters(const Surface *, const double *)
virtual Amg::RotationMatrix3D measurementFrame() const override final
Return the measurement frame - this is needed for alignment, in particular for StraightLine and Perig...
virtual void updateParametersHelper(const AmgVector(5) &) override final
Amg::Vector3D localToGlobal(const PlaneSurface *) const
void removeNoise(const NoiseOnSurface &, PropDirection)
Amg::Vector3D momentum() const
Amg::Vector3D calculatePosition(void) const
bool initiate(PatternTrackParameters &, const Amg::Vector2D &, const Amg::MatrixX &)
std::unique_ptr< TrackParameters > convert(bool) const
double transverseMomentum() const
PatternTrackParameters & operator=(const PatternTrackParameters &)
PatternTrackParameters(PatternTrackParameters &&) noexcept=default
virtual SurfaceType surfaceType() const override final
Returns the Surface Type enum for the surface used to define the derived class.
PatternTrackParameters(const PatternTrackParameters &)
Class describing the Line to which the Perigee refers to.
Class for a planaer rectangular or trapezoidal surface in the ATLAS detector.
Class for a StraightLineSurface in the ATLAS detector to describe dirft tube and straw like detectors...
Abstract Base Class for tracking surfaces.
STL class.
STL class.
Definition of ATLAS Math & Geometry primitives (Amg)
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
SurfaceType
This enumerator simplifies the persistency & calculations,.
ParametersCommon< TrackParametersDim, Charged > BaseParameters
ParametersType
Enum to avoid dynamic cast for different parameter types.
ParametersBase< TrackParametersDim, Charged > TrackParameters
std::unique_ptr< S, SurfaceDeleter< S > > SurfaceUniquePtrT
-event-from-file
STL namespace.
#define private