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.
Definition Surface.h:79
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