LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
KalmanLinearAlgebra.h File Reference

Kalman filter linear algebra typedefs. More...

#include "boost/numeric/ublas/lu.hpp"
#include "boost/numeric/ublas/matrix.hpp"
#include "boost/numeric/ublas/symmetric.hpp"
#include "boost/numeric/ublas/vector.hpp"
#include "boost/serialization/array_wrapper.hpp"
#include <cmath>

Go to the source code of this file.

Classes

struct  trkf::KVector< N >
 Define a shortened alias for ublas namespace. More...
 
struct  trkf::KSymMatrix< N >
 Symmetric matrix, dimension NxN. More...
 
struct  trkf::KMatrix< N, M >
 General matrix, dimension NxM. More...
 
struct  trkf::KHMatrix< N >
 Kalman H-matrix, dimension Nx5. More...
 
struct  trkf::KGMatrix< N >
 Kalman gain matrix, dimension 5xN. More...
 

Namespaces

 trkf
 

Typedefs

typedef KVector< 5 >::type trkf::TrackVector
 Track state vector, dimension 5. More...
 
typedef KSymMatrix< 5 >::type trkf::TrackError
 Track error matrix, dimension 5x5. More...
 
typedef KMatrix< 5, 5 >::type trkf::TrackMatrix
 General 5x5 matrix. More...
 

Functions

template<class T , class TRI , class L , class A >
bool trkf::syminvert (ublas::symmetric_matrix< T, TRI, L, A > &m)
 
template<class T , class L , class A >
bool trkf::invert (ublas::matrix< T, L, A > &m)
 
template<class M >
M::value_type trkf::trace (const M &m)
 

Detailed Description

Kalman filter linear algebra typedefs.

Author
H. Greenlee

There are various linear algebra typedefs defined in this header:

  1. KVector<N>::type - Vector, dimension N.
  2. KSymMatrix<N>::type - Symmetric matrix, dimension NxN.
  3. KMatrix<N,M>::type - A matrix with dimension NxM.
  4. KHMatrix<N>::type - Matrix with dimension Nx5 (H-matrix).
  5. KGMatrix<N>::type - Matrix with dimension 5xN (gain matrix).
  6. TrackVector - Track state vector, fixed dimension 5
  7. TrackError - Track error matrix, fixed dimension 5x5.
  8. TrackMatrix - General matrix, fixed dimension 5x5.

The above typedefs refer to some ublas (boost/numeric/ublas) linear algebra class. The templated typedefs are defined as a member of a template class because c++ doesn't have template typedefs.

All linear algebra objects use the following storage model.

  1. Matrices are stored in row major order (normal c/c++ convention).
  2. Symmetric matrices are stored in lower triangular format.
  3. Amount of preallocated stack memory is specified at compilation time (the actual size of objects must still be specified at run time).

Surprisingly, the ublas linear algebra package does not have any built-in symmetric matrix inverse function. We provide one here as free function syminvert.

Definition in file KalmanLinearAlgebra.h.