GENFIT  Rev:NoNumberAvailable
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
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
void kalmanPrediction(const TVectorD &x, const TVectorD &delta, const TMatrixD &F, TVectorD &xNew)
Transport the state.
Definition: Tools.cc:477
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
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
void QR(TMatrixD &A)
Replaces A with an upper right matrix connected to A by an orthongonal transformation. I.e., it computes R from a QR decomposition of A = QR, replacing A.
Definition: Tools.cc:260
HMatrix for projecting from AbsTrackRep parameters to measured parameters in a DetPlane.
Definition: AbsHMatrix.h:37
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
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, covariance square root res, R, H : residual, measurement covariance square root, H matrix of the measurement.
Definition: Tools.cc:517
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
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.e. extrapolation) with transport matrix F and the noise square root Q. Gives the new covariance square root.
Definition: Tools.cc:492
bool transposedInvert(const TMatrixD &R, TMatrixD &inv)
Inverts the transpose of the upper right matrix R into inv.
Definition: Tools.cc:240
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
Defines for I/O streams used for error and debug printing.