ATLAS Offline Software
Loading...
Searching...
No Matches
GXFTrackState.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
6// GXFTrackState.h
7// Class grouping all fitter relevant info on a surface-by-surface
8// basis
10// (c) ATLAS Detector software
12
13#ifndef TRK_GXFTRACKSTATE_H
14#define TRK_GXFTRACKSTATE_H
15
20#include <memory>
21#include <bitset>
22
23
24namespace Trk {
25
26 class MeasurementBase;
29
31 public:
32 GXFTrackState() = delete;
37 ~GXFTrackState() = default;
38
39 GXFTrackState(std::unique_ptr<const MeasurementBase>, std::unique_ptr<const TrackParameters>);
40 GXFTrackState(std::unique_ptr<const TrackParameters>, TrackStateOnSurface::TrackStateOnSurfaceType);
41 GXFTrackState(std::unique_ptr<GXFMaterialEffects>, std::unique_ptr<const TrackParameters>);
43 bool isSane() const;
44
45
46 void setMeasurement(std::unique_ptr<const MeasurementBase>);
47 const MeasurementBase *measurement(void);
48
49 void setTrackParameters(std::unique_ptr<const TrackParameters>);
50 const TrackParameters *trackParameters(void) const;
51
53 const Surface & associatedSurface() const;
55 Eigen::Matrix<double, 5, 5> & jacobian();
58
61 AmgSymMatrix(5) & trackCovariance(void);
62 bool hasTrackCovariance(void) const;
63 void zeroTrackCovariance(void);
64
67
70
71 double sinStereo() const;
72 void setSinStereo(double);
73
74 double *measurementErrors();
75 void setMeasurementErrors(const double *);
76
78
79 bool isRecalibrated();
80 void setRecalibrated(bool);
81
84
85 bool measuresPhi() const;
86 void setMeasuresPhi(bool);
87
98
109
117
118 std::optional<std::vector<std::unique_ptr<TrackParameters>>> & getHoles(void);
119 void setHoles(std::vector<std::unique_ptr<TrackParameters>> &&);
120
121 std::unique_ptr<const TrackStateOnSurface>
122 trackStateOnSurface() const;
123
124 private:
125 std::unique_ptr<const MeasurementBase> m_measurement;
126 std::bitset<TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> m_tsType;
127 std::unique_ptr<const TrackParameters> m_trackpar;
128 std::unique_ptr<GXFMaterialEffects> m_materialEffects;
129 Eigen::Matrix<double, 5, 5> m_jacobian;
131
132 AmgSymMatrix(5) m_covariancematrix;
134
136 double m_measerror[5]{};
137 double m_sinstereo;
142 std::optional<std::vector<std::unique_ptr<TrackParameters>>> m_holes;
143
144 public:
145 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
146 };
147
148 inline Eigen::Matrix<double, 5, 5> & GXFTrackState::jacobian() {
149 return m_jacobian;
150 }
151
153 return m_derivs;
154 }
155
156 inline AmgSymMatrix(5) & GXFTrackState::trackCovariance(void) {
157 return m_covariancematrix;
158 }
159
161 return m_trackpar.get();
162 }
163
167
171
175
177 return m_recalib;
178 }
179}
180#endif
#define AmgSymMatrix(dim)
class that is similar to MaterialEffectsOnTrack, but has 'set' methods for more flexibility during tr...
bool getStateType(TrackStateOnSurface::TrackStateOnSurfaceType type) const
Retrieve the value of a specific type bit.
GXFTrackState()=delete
bool measuresPhi() const
GXFTrackState & operator=(GXFTrackState &)=delete
double m_measerror[5]
Measurement errors (corrected for stereo angle)
bool m_recalib
Has this measurement already been recalibrated?
std::optional< std::vector< std::unique_ptr< TrackParameters > > > & getHoles(void)
std::optional< std::vector< std::unique_ptr< TrackParameters > > > m_holes
std::bitset< TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes > m_tsType
type of track state, eg Fittable, Outlier, Scatterer, Brem, Hole
void zeroTrackCovariance(void)
Amg::MatrixX & derivatives()
void setMeasurementType(TrackState::MeasurementType)
Eigen::Matrix< double, 5, 5 > & jacobian()
TrackState::MeasurementType m_mType
Measurement type, eg pixel, SCT, ...
void setTrackCovariance(AmgSymMatrix(5) *)
void setSinStereo(double)
void setStateType(TrackStateOnSurface::TrackStateOnSurfaceType type, bool value=true)
Set a specific type bit.
GXFTrackState & operator=(const GXFTrackState &)=delete
Amg::MatrixX m_derivs
Derivatives of local parameters wrt fit parameters.
void setPosition(Amg::Vector3D &)
const FitQualityOnSurface fitQuality(void)
std::unique_ptr< GXFMaterialEffects > m_materialEffects
Material effects on track (ie scatterer, brem)
const MeasurementBase * measurement(void)
Amg::Vector3D position()
TrackState::MeasurementType measurementType()
void setHoles(std::vector< std::unique_ptr< TrackParameters > > &&)
std::unique_ptr< const TrackParameters > m_trackpar
track parameters
FitQualityOnSurface m_fitqual
bool hasTrackCovariance(void) const
void resetTrackCovariance()
reset covariance to nullptr
std::unique_ptr< const TrackStateOnSurface > trackStateOnSurface() const
void resetStateType(TrackStateOnSurface::TrackStateOnSurfaceType type, bool value=true)
Set a specific type, wiping all others.
void setFitQuality(FitQualityOnSurface)
GXFTrackState & operator=(GXFTrackState &&)=default
void setMeasurement(std::unique_ptr< const MeasurementBase >)
std::unique_ptr< const MeasurementBase > m_measurement
The measurement defining the track state.
AmgSymMatrix(5) m_covariancematrix
Covariance matrix of track parameters at this surface.
void setMeasurementErrors(const double *)
const TrackParameters * trackParameters(void) const
double * measurementErrors()
GXFTrackState(GXFTrackState &&)=default
Amg::Vector3D m_globpos
GXFMaterialEffects * materialEffects()
double m_sinstereo
stereo angle
void setDerivatives(Amg::MatrixX &)
double sinStereo() const
void setTrackParameters(std::unique_ptr< const TrackParameters >)
~GXFTrackState()=default
void setJacobian(TransportJacobian &)
Eigen::Matrix< double, 5, 5 > m_jacobian
Transport jacobian wrt previous state.
AmgSymMatrix(5) &trackCovariance(void)
const Surface & associatedSurface() const
This class is the pure abstract base class for all fittable tracking measurements.
Abstract Base Class for tracking surfaces.
This class represents the jacobian for transforming initial track parameters to new track parameters ...
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Eigen::Matrix< double, 3, 1 > Vector3D
MeasurementType
enum describing the flavour of MeasurementBase
Ensure that the ATLAS eigen extensions are properly loaded.
ParametersBase< TrackParametersDim, Charged > TrackParameters