LArSoft  v10_06_00
Liquid Argon Software toolkit - https://larsoft.org/
KalmanFilter.h
Go to the documentation of this file.
1 
8 #ifndef LAR_KALMAN_FILTER_H
9 #define LAR_KALMAN_FILTER_H 1
10 
11 #include "Eigen/Dense"
12 
13 namespace lar_content
14 {
15 
20 {
21 public:
30  KalmanFilter3D(double dt, double processVariance, double measurementVariance, const Eigen::VectorXd &x);
31 
36 
40  void Predict();
41 
47  void Update(const Eigen::VectorXd &z);
48 
54  const Eigen::VectorXd &GetState() const;
55 
61  const Eigen::VectorXd GetPosition() const;
62 
68  const Eigen::VectorXd GetDirection() const;
69 
75  const Eigen::VectorXd &GetTemporaryState() const;
76 
77 private:
78  double m_dt;
79  Eigen::VectorXd m_x;
80  Eigen::MatrixXd m_P;
81  Eigen::MatrixXd m_F;
82  Eigen::MatrixXd m_H;
83  Eigen::MatrixXd m_R;
84  Eigen::MatrixXd m_Q;
85  Eigen::VectorXd m_xTemp;
86  Eigen::MatrixXd m_PTemp;
87 };
88 
93 {
94 public:
103  KalmanFilter2D(double dt, double processVariance, double measurementVariance, const Eigen::VectorXd &x);
104 
108  ~KalmanFilter2D();
109 
113  void Predict();
114 
120  void Update(const Eigen::VectorXd &z);
121 
127  const Eigen::VectorXd &GetState() const;
128 
134  const Eigen::VectorXd GetPosition() const;
135 
141  const Eigen::VectorXd GetDirection() const;
142 
148  const Eigen::VectorXd &GetTemporaryState() const;
149 
150 private:
151  double m_dt;
152  Eigen::VectorXd m_x;
153  Eigen::MatrixXd m_P;
154  Eigen::MatrixXd m_F;
155  Eigen::MatrixXd m_H;
156  Eigen::MatrixXd m_R;
157  Eigen::MatrixXd m_Q;
158  Eigen::VectorXd m_xTemp;
159  Eigen::MatrixXd m_PTemp;
160 };
161 
162 } // namespace lar_content
163 
164 #endif // #ifndef LAR_KALMAN_FILTER_H
Float_t x
Definition: compare.C:6
Eigen::MatrixXd m_R
Measurement covariance matrix.
Definition: KalmanFilter.h:83
Eigen::MatrixXd m_P
Covariance matrix.
Definition: KalmanFilter.h:80
const Eigen::VectorXd & GetState() const
Get the current state vector.
Definition: KalmanFilter.cc:69
const Eigen::VectorXd GetDirection() const
Get the current direction vector.
Definition: KalmanFilter.cc:83
const Eigen::VectorXd GetPosition() const
Get the current position vector.
Definition: KalmanFilter.cc:76
Double_t z
Definition: plot.C:276
KalmanFilter3D class.
Definition: KalmanFilter.h:19
Eigen::MatrixXd m_H
Measurement matrix.
Definition: KalmanFilter.h:82
Eigen::MatrixXd m_F
State transition matrix.
Definition: KalmanFilter.h:154
Eigen::VectorXd m_x
State vector (tracks position and 'velocity')
Definition: KalmanFilter.h:152
void Predict()
Uses the state transition matrix to predict the next state.
Definition: KalmanFilter.cc:48
Eigen::VectorXd m_xTemp
Temporary state vector.
Definition: KalmanFilter.h:85
KalmanFilter3D(double dt, double processVariance, double measurementVariance, const Eigen::VectorXd &x)
Default constructor.
Definition: KalmanFilter.cc:16
Eigen::MatrixXd m_P
Covariance matrix.
Definition: KalmanFilter.h:153
Eigen::VectorXd m_xTemp
Temporary state vector.
Definition: KalmanFilter.h:158
Eigen::MatrixXd m_H
Measurement matrix.
Definition: KalmanFilter.h:155
const Eigen::VectorXd & GetTemporaryState() const
Get the temporary state vector.
Definition: KalmanFilter.cc:90
Eigen::VectorXd m_x
State vector (tracks position and 'velocity')
Definition: KalmanFilter.h:79
Eigen::MatrixXd m_PTemp
Temporary covariance matrix.
Definition: KalmanFilter.h:159
Eigen::MatrixXd m_PTemp
Temporary covariance matrix.
Definition: KalmanFilter.h:86
Eigen::MatrixXd m_F
State transition matrix.
Definition: KalmanFilter.h:81
double m_dt
Time step.
Definition: KalmanFilter.h:78
Eigen::MatrixXd m_R
Measurement covariance matrix.
Definition: KalmanFilter.h:156
KalmanFilter2D class.
Definition: KalmanFilter.h:92
void Update(const Eigen::VectorXd &z)
Uses the measurement matrix to update the state estimate.
Definition: KalmanFilter.cc:56
Eigen::MatrixXd m_Q
Process covariance matrix.
Definition: KalmanFilter.h:157
double m_dt
Time step.
Definition: KalmanFilter.h:151
Eigen::MatrixXd m_Q
Process covariance matrix.
Definition: KalmanFilter.h:84