ATLAS Offline Software
Loading...
Searching...
No Matches
KalmanUpdator_xk.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// KalmanUpdator_xk.h
7// Header file for Kalman Fitter Updator
9// (c) ATLAS Detector software
11// Version 1.0 7/6/2005 I.Gavrilenko
13
14#ifndef TRK_KALMANUPDATOR_XK_H
15#define TRK_KALMANUPDATOR_XK_H
16
20
21namespace Trk {
22
30
31 class LocalParameters ;
33
34 class KalmanUpdator_xk final: virtual public IUpdator,
35 virtual public IPatternParametersUpdator,
36 public AthAlgTool
37 {
39 // Public methods:
41
42 public:
43
45 // Standard Athena tool methods
47
48 KalmanUpdator_xk(const std::string&, const std::string&,
49 const IInterface*);
51 virtual StatusCode initialize() override final;
52 virtual StatusCode finalize() override final;
53
54 // /////////////////////////////////////////////////////////////////
55 // Main public methods for kalman filter updator tool
56 // /////////////////////////////////////////////////////////////////
57
58 // /////////////////////////////////////////////////////////////////
59 // Add and remove without Xi2 calculation
60 // /////////////////////////////////////////////////////////////////
61
64 const TrackParameters&, const Amg::Vector2D&,
65 const Amg::MatrixX&) const override final;
69 const Amg::MatrixX&) const override final;
70
72 virtual bool addToState(PatternTrackParameters&, const Amg::Vector2D&,
73 const Amg::MatrixX&,
74 PatternTrackParameters&) const override final;
77 const Amg::MatrixX&,
78 PatternTrackParameters&) const override final;
81 virtual bool addToStateOneDimension(
82 PatternTrackParameters&, const Amg::Vector2D&, const Amg::MatrixX&,
83 PatternTrackParameters&) const override final;
84
86 // Remove without Xi2 calculation
88
90 const TrackParameters&, const Amg::Vector2D&,
91 const Amg::MatrixX&) const override final;
94 const Amg::MatrixX&) const override final;
95
96 virtual bool removeFromState(PatternTrackParameters&, const Amg::Vector2D&,
97 const Amg::MatrixX&,
98 PatternTrackParameters&) const override final;
100 const LocalParameters&, const Amg::MatrixX&,
101 PatternTrackParameters&) const override final;
102
104 // Add with Xi2 calculation
106
108 const TrackParameters&, const Amg::Vector2D&, const Amg::MatrixX&,
109 FitQualityOnSurface*&) const override final;
112 FitQualityOnSurface*&) const override final;
113 virtual std::pair<AmgVector(5), AmgSymMatrix(5)>*
115 const Amg::VectorX&, const Amg::MatrixX&, int,
117 bool) const override final;
118
119 virtual bool addToState(PatternTrackParameters&, const Amg::Vector2D&,
120 const Amg::MatrixX&, PatternTrackParameters&,
121 double&, int&) const override final;
123 const Amg::MatrixX&, PatternTrackParameters&,
124 double&, int&) const override final;
126 const Amg::Vector2D&,
127 const Amg::MatrixX&,
128 PatternTrackParameters&, double&,
129 int&) const override final;
130
132 // Remove with Xi2 calculation
134
136 const TrackParameters&, const Amg::Vector2D&, const Amg::MatrixX&,
137 FitQualityOnSurface*&) const override final;
140 FitQualityOnSurface*&) const override final;
141
142 virtual bool removeFromState(PatternTrackParameters&, const Amg::Vector2D&,
143 const Amg::MatrixX&, PatternTrackParameters&,
144 double&, int&) const override final;
146 const LocalParameters&, const Amg::MatrixX&,
147 PatternTrackParameters&, double&,
148 int&) const override;
149
151 // Combine two state with or without Xi2 calculation
153
158 FitQualityOnSurface*&) const override final;
159
162 PatternTrackParameters&) const override final;
166 double&) const override final;
167
169 // Xi2 calculation
171
173 const TrackParameters&, const Amg::Vector2D&,
174 const Amg::MatrixX&) const override final;
177 const Amg::MatrixX&) const override final;
179 const TrackParameters&, const Amg::Vector2D&,
180 const Amg::MatrixX&) const override final;
183 const Amg::MatrixX&) const override final;
186
188 const Amg::Vector2D&,
189 const Amg::MatrixX&, int&,
190 double&) const override final;
193 const Amg::MatrixX&, int&,
194 double&) const override final;
196 const Amg::Vector2D&, const Amg::MatrixX&,
197 int&, double&) const override final;
200 const Amg::MatrixX&, int&,
201 double&) const override final;
204 double&) const override final;
205
207 // let the client tools know how the assumptions on the initial
208 // precision for non-measured track parameters are configured
210
211 virtual std::vector<double> initialErrors() const override final;
212
213 protected:
214
216 // Protected methods
218
220 // Updators
222
224 (const TrackParameters&,const Amg::Vector2D&,const Amg::MatrixX&,
225 FitQualityOnSurface*&,int,bool) const;
226
229 FitQualityOnSurface*&,int,bool) const;
230
231 bool update
232 (PatternTrackParameters&,const Amg::Vector2D&,const Amg::MatrixX&,
233 int,bool,PatternTrackParameters&,double&,int&) const;
234
236 (PatternTrackParameters&,const Amg::Vector2D&,const Amg::MatrixX&,
237 int,bool,PatternTrackParameters&,double&) const;
238
239 bool update
241 int,bool,PatternTrackParameters&,double&,int&) const;
242
244 // Xi2 calculation
246
247 static bool predictedStateFitQuality
248 (const double*,const Amg::Vector2D&,const Amg::MatrixX&,int&,double&) ;
249
250 static bool fullStateFitQuality
251 (const double*,const Amg::Vector2D&,const Amg::MatrixX&,int&,double&) ;
252
254 // Converters
256
257 static bool trackParametersToUpdator
258 (const TrackParameters&,double*,double*) ;
259
260 static bool trackParametersToUpdator
261 (const PatternTrackParameters&,double*,double*) ;
262
263 static bool localParametersToUpdator
264 (const LocalParameters&,const Amg::MatrixX&,int&,int&,double*,double*) ;
265
267 (const TrackParameters&,double*,double*) ;
268
270 // Update no measured track parameters
272
274 (const double*,const double*,double*,double*) const;
275
277 (const double*,const double*,double*,double*) const;
278
280 (const double*,const double*,double*,double*,int) const;
281
283 // Update measured track parameters
285
286 static bool updateWithOneDim
287 (int,bool,const double*,const double*,double*,double*,double&) ;
288
289 static bool updateWithTwoDim
290 (int,bool,const double*,const double*,double*,double*,double&) ;
291
293 (int,bool,const double*,const double*,double*,const double*,double&) ;
294
295 static bool updateWithFiveDim
296 ( bool,double*,double*,double*,double*,double&) ;
297
299 (int,bool,double*,const double*,double*,double*,double&,
300 int,int) const;
301
303 (int,bool,double*,double*,double*,double*,double&) const;
304
306 (int,bool,double*,double*,double*,double*,double&) const;
307
308 static bool invert (int,double*,double*) ;
309 static bool invert2( const double*,double*) ;
310 static bool invert3( const double*,double*) ;
311 static bool invert4( const double*,double*) ;
312 static bool invert5( const double*,double*) ;
313
314 static double Xi2 (int,double*,double*) ;
315 static double Xi2for1( const double*,const double*) ;
316 static double Xi2for2( const double*,const double*) ;
317 static double Xi2for3( const double*,const double*) ;
318 static double Xi2for4( const double*,const double*) ;
319 static double Xi2for5( const double*,const double*) ;
320
321 static int differenceParLoc(int,const double*,const double*,double*) ;
322 static void differenceLocPar(int,const double*,const double*,double*) ;
323 static void testAngles(double*,double*) ;
324
325 void mapKeyProduction();
326
328 // Protected data members
330
331 std::vector<double> m_cov0;
332 unsigned int m_key[ 33]{};
333 unsigned int m_map[160]{};
335 };
336
338 // Inline methods
340
341} // end of namespace
342
343#endif // TRK_KALMANUPDATOR_XK_H
#define AmgVector(rows)
#define protected
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Interface for updating Trk::PatternTrackParameters, the fast internal representation of track paramet...
Set of interfaces for methods operating on track states, mainly for Kalman filtering.
Definition IUpdator.h:64
static bool trackParametersToUpdator(const TrackParameters &, double *, double *)
static bool invert5(const double *, double *)
virtual StatusCode initialize() override final
std::vector< double > m_cov0
bool updateNoMeasuredWithOneDim(const double *, const double *, double *, double *) const
virtual std::unique_ptr< TrackParameters > removeFromState(const TrackParameters &, const Amg::Vector2D &, const Amg::MatrixX &) const override final
the reverse updating or inverse KalmanFilter removes a measurement from the track state,...
static bool localParametersToUpdator(const LocalParameters &, const Amg::MatrixX &, int &, int &, double *, double *)
static bool updateWithTwoDim(int, bool, const double *, const double *, double *, double *, double &)
virtual ~KalmanUpdator_xk()
static std::unique_ptr< TrackParameters > updatorToTrackParameters(const TrackParameters &, double *, double *)
bool updateNoMeasuredWithTwoDim(const double *, const double *, double *, double *) const
static bool invert3(const double *, double *)
static bool updateWithOneDim(int, bool, const double *, const double *, double *, double *, double &)
static int differenceParLoc(int, const double *, const double *, double *)
bool updateNoMeasuredWithAnyDim(const double *, const double *, double *, double *, int) const
static double Xi2(int, double *, double *)
static double Xi2for4(const double *, const double *)
KalmanUpdator_xk(const std::string &, const std::string &, const IInterface *)
static double Xi2for2(const double *, const double *)
virtual std::unique_ptr< TrackParameters > combineStates(const TrackParameters &, const TrackParameters &) const override final
adds to a track state the parameters from another state using a statistical combination - use with ca...
virtual bool addToStateOneDimension(PatternTrackParameters &, const Amg::Vector2D &, const Amg::MatrixX &, PatternTrackParameters &) const override final
add without chi2 calculation, PRD-level, pattern track parameters, specifically 1D
virtual std::pair< AmgVector(5), AmgSymMatrix(5)> * updateParameterDifference(const AmgVector(5) &, const AmgSymMatrix(5) &, const Amg::VectorX &, const Amg::MatrixX &, int, Trk::FitQualityOnSurface *&, bool) const override final
pure AMG interface for reference-track KF, allowing update of parameter differences
virtual std::vector< double > initialErrors() const override final
let the client tools know how the assumptions on the initial precision for non-measured track paramet...
static bool updateWithFiveDim(bool, double *, double *, double *, double *, double &)
static bool invert4(const double *, double *)
bool updateOneDimension(PatternTrackParameters &, const Amg::Vector2D &, const Amg::MatrixX &, int, bool, PatternTrackParameters &, double &) const
bool updateWithOneDimWithBoundary(int, bool, double *, double *, double *, double *, double &) const
static void differenceLocPar(int, const double *, const double *, double *)
bool updateWithTwoDimWithBoundary(int, bool, double *, double *, double *, double *, double &) const
bool updateWithAnyDim(int, bool, double *, const double *, double *, double *, double &, int, int) const
static double Xi2for3(const double *, const double *)
static double Xi2for1(const double *, const double *)
virtual std::unique_ptr< TrackParameters > addToState(const TrackParameters &, const Amg::Vector2D &, const Amg::MatrixX &) const override final
add without chi2 calculation, PRD-level, EDM track parameters
static bool updateWithTwoDimParameters(int, bool, const double *, const double *, double *, const double *, double &)
static bool invert(int, double *, double *)
static bool invert2(const double *, double *)
virtual FitQualityOnSurface fullStateFitQuality(const TrackParameters &, const Amg::Vector2D &, const Amg::MatrixX &) const override final
estimator for FitQuality on Surface from a full track state, that is a state which contains the curre...
std::unique_ptr< TrackParameters > update(const TrackParameters &, const Amg::Vector2D &, const Amg::MatrixX &, FitQualityOnSurface *&, int, bool) const
static double Xi2for5(const double *, const double *)
virtual StatusCode finalize() override final
unsigned int m_map[160]
static void testAngles(double *, double *)
virtual FitQualityOnSurface predictedStateFitQuality(const TrackParameters &, const Amg::Vector2D &, const Amg::MatrixX &) const override final
estimator for FitQuality on Surface from a predicted track state, that is a state which does not cont...
STL class.
STL class.
Definition of ATLAS Math & Geometry primitives (Amg)
Ensure that the ATLAS eigen extensions are properly loaded.
ParametersBase< TrackParametersDim, Charged > TrackParameters
AmgSymMatrix(5) &GXFTrackState
STL namespace.