GENFIT  Rev:NoNumberAvailable
Tools.h
Go to the documentation of this file.
1 /* Copyright 2008-2010, Technische Universitaet Muenchen,
2  Authors: Christian Hoeppner & Sebastian Neubert & Johannes Rauch
3 
4  This file is part of GENFIT.
5 
6  GENFIT is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Lesser General Public License as published
8  by the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  GENFIT is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public License
17  along with GENFIT. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
24 #ifndef genfit_Tools_h
25 #define genfit_Tools_h
26 
27 #include <TVectorD.h>
28 #include <TMatrixD.h>
29 #include <TMatrixDSym.h>
30 
34 namespace genfit {
35 
36 class AbsHMatrix;
37 
38 namespace tools {
39 
43 void invertMatrix(const TMatrixDSym& mat, TMatrixDSym& inv, double* determinant = NULL);
46 void invertMatrix(TMatrixDSym& mat, double* determinant = NULL);
47 
51 bool transposedForwardSubstitution(const TMatrixD& R, TVectorD& b);
53 bool transposedForwardSubstitution(const TMatrixD& R, TMatrixD& b, int nCol);
55 bool transposedInvert(const TMatrixD& R, TMatrixD& inv);
56 
61 void QR(TMatrixD& A);
62 
68 void QR(TMatrixD& A, TVectorD& b);
69 
74 void safeAverage(const TMatrixDSym& C1, const TMatrixDSym& C2,
75  TMatrixDSym& result);
76 
82 void
83 noiseMatrixSqrt(const TMatrixDSym& noise,
84  TMatrixD& noiseSqrt);
85 
88 void
89 kalmanPrediction(const TVectorD& x,
90  const TVectorD& delta, const TMatrixD& F,
91  TVectorD& xNew);
92 
97 void
98 kalmanPredictionCovSqrt(const TMatrixD& S,
99  const TMatrixD& F, const TMatrixD& Q,
100  TMatrixD& Snew);
101 
106 void
107 kalmanUpdateSqrt(const TMatrixD& S,
108  const TVectorD& res, const TMatrixD& R, const AbsHMatrix* H,
109  TVectorD& update, TMatrixD& SNew);
110 
111 void
112 kalmanPredictionUpdateSqrt(const TMatrixD& S,
113  const TMatrixD& F, const TMatrixD& Q,
114  const TVectorD& res, const TMatrixD& R,
115  const AbsHMatrix* H,
116  TVectorD& update, TMatrixD& SNew);
117 
118 } /* End of namespace tools */
119 } /* End of namespace genfit */
122 #endif // genfit_Tools_h
genfit::tools::invertMatrix
void invertMatrix(const TMatrixDSym &mat, TMatrixDSym &inv, double *determinant=NULL)
Invert a matrix, throwing an Exception when inversion fails. Optional calculation of determinant.
Definition: Tools.cc:40
genfit::tools::kalmanPredictionCovSqrt
void kalmanPredictionCovSqrt(const TMatrixD &S, const TMatrixD &F, const TMatrixD &Q, TMatrixD &Snew)
Calculates the square root of the covariance matrix after the Kalman prediction (i....
Definition: Tools.cc:492
genfit::AbsHMatrix
HMatrix for projecting from AbsTrackRep parameters to measured parameters in a DetPlane.
Definition: AbsHMatrix.h:37
genfit::tools::kalmanPrediction
void kalmanPrediction(const TVectorD &x, const TVectorD &delta, const TMatrixD &F, TVectorD &xNew)
Transport the state.
Definition: Tools.cc:477
genfit::tools::transposedInvert
bool transposedInvert(const TMatrixD &R, TMatrixD &inv)
Inverts the transpose of the upper right matrix R into inv.
Definition: Tools.cc:240
genfit
Defines for I/O streams used for error and debug printing.
Definition: AbsFinitePlane.cc:22
genfit::tools::QR
void QR(TMatrixD &A)
Replaces A with an upper right matrix connected to A by an orthongonal transformation....
Definition: Tools.cc:260
genfit::tools::noiseMatrixSqrt
void noiseMatrixSqrt(const TMatrixDSym &noise, TMatrixD &noiseSqrt)
Calculate a sqrt for the positive semidefinite noise matrix. Rows corresponding to zero eigenvalues a...
Definition: Tools.cc:443
genfit::tools::kalmanUpdateSqrt
void kalmanUpdateSqrt(const TMatrixD &S, const TVectorD &res, const TMatrixD &R, const AbsHMatrix *H, TVectorD &update, TMatrixD &SNew)
Calculate the Kalman measurement update with no transport. x, S : state prediction,...
Definition: Tools.cc:517
genfit::tools::transposedForwardSubstitution
bool transposedForwardSubstitution(const TMatrixD &R, TVectorD &b)
Solves R^t x = b, replacing b with the solution for x. R is assumed to be upper diagonal.
Definition: Tools.cc:201
genfit::tools::safeAverage
void safeAverage(const TMatrixDSym &C1, const TMatrixDSym &C2, TMatrixDSym &result)
This averages the covariance matrices C1, C2 in a numerically stable way by using matrix square roots...
Definition: Tools.cc:390
genfit::tools::kalmanPredictionUpdateSqrt
void kalmanPredictionUpdateSqrt(const TMatrixD &S, const TMatrixD &F, const TMatrixD &Q, const TVectorD &res, const TMatrixD &R, const AbsHMatrix *H, TVectorD &update, TMatrixD &SNew)
Definition: Tools.cc:548