GENFIT  Rev:NoNumberAvailable
BorderedBandMatrix.h
Go to the documentation of this file.
1 /*
2  * BorderedBandMatrix.h
3  *
4  * Created on: Aug 14, 2011
5  * Author: kleinwrt
6  */
7 
8 #ifndef BORDEREDBANDMATRIX_H_
9 #define BORDEREDBANDMATRIX_H_
10 
11 #include "VMatrix.h"
12 
13 #include <iostream>
14 #include <vector>
15 #include <math.h>
16 #include <cstdlib>
17 #include <TVectorD.h>
18 #include <TMatrixD.h>
19 #include <TMatrixDSym.h>
20 
21 
23 namespace gbl {
24 
26 
59 public:
61  virtual ~BorderedBandMatrix();
62  void resize(unsigned int nSize, unsigned int nBorder = 1,
63  unsigned int nBand = 5);
64  void solveAndInvertBorderedBand(const VVector &aRightHandSide,
65  VVector &aSolution);
66  void addBlockMatrix(double aWeight,
67  const std::vector<unsigned int>* anIndex,
68  const std::vector<double>* aVector);
69  TMatrixDSym getBlockMatrix(const std::vector<unsigned int> anIndex) const;
70  void printMatrix() const;
71 
72 private:
73  unsigned int numSize;
74  unsigned int numBorder;
75  unsigned int numBand;
76  unsigned int numCol;
80 
81  void decomposeBand();
82  VVector solveBand(const VVector &aRightHandSide) const;
83  VMatrix solveBand(const VMatrix &aRightHandSide) const;
85  VMatrix bandOfAVAT(const VMatrix &anArray,
86  const VSymMatrix &aSymArray) const;
87 };
88 }
89 #endif /* BORDEREDBANDMATRIX_H_ */
gbl::VMatrix
Simple Matrix based on std::vector<double>
Definition: VMatrix.h:42
gbl::BorderedBandMatrix::solveBand
VVector solveBand(const VVector &aRightHandSide) const
Solve for band part.
Definition: BorderedBandMatrix.cc:212
gbl::BorderedBandMatrix::invertBand
VMatrix invertBand()
Invert band part.
Definition: BorderedBandMatrix.cc:270
gbl
Namespace for the general broken lines package.
Definition: BorderedBandMatrix.cc:11
gbl::BorderedBandMatrix::getBlockMatrix
TMatrixDSym getBlockMatrix(const std::vector< unsigned int > anIndex) const
Retrieve symmetric block matrix.
Definition: BorderedBandMatrix.cc:75
gbl::BorderedBandMatrix::numSize
unsigned int numSize
Matrix size.
Definition: BorderedBandMatrix.h:73
gbl::BorderedBandMatrix::theBorder
VSymMatrix theBorder
Border part.
Definition: BorderedBandMatrix.h:77
VMatrix.h
gbl::BorderedBandMatrix::addBlockMatrix
void addBlockMatrix(double aWeight, const std::vector< unsigned int > *anIndex, const std::vector< double > *aVector)
Add symmetric block matrix.
Definition: BorderedBandMatrix.cc:46
gbl::BorderedBandMatrix::numBand
unsigned int numBand
Band width.
Definition: BorderedBandMatrix.h:75
gbl::BorderedBandMatrix
(Symmetric) Bordered Band Matrix.
Definition: BorderedBandMatrix.h:58
gbl::BorderedBandMatrix::theMixed
VMatrix theMixed
Mixed part.
Definition: BorderedBandMatrix.h:78
gbl::BorderedBandMatrix::numBorder
unsigned int numBorder
Border size.
Definition: BorderedBandMatrix.h:74
gbl::BorderedBandMatrix::~BorderedBandMatrix
virtual ~BorderedBandMatrix()
Definition: BorderedBandMatrix.cc:17
gbl::BorderedBandMatrix::BorderedBandMatrix
BorderedBandMatrix()
Create bordered band matrix.
Definition: BorderedBandMatrix.cc:14
gbl::BorderedBandMatrix::printMatrix
void printMatrix() const
Print bordered band matrix.
Definition: BorderedBandMatrix.cc:158
gbl::BorderedBandMatrix::bandOfAVAT
VMatrix bandOfAVAT(const VMatrix &anArray, const VSymMatrix &aSymArray) const
Calculate band part of: 'anArray * aSymArray * anArray.T'.
Definition: BorderedBandMatrix.cc:294
gbl::VSymMatrix
Simple symmetric Matrix based on std::vector<double>
Definition: VMatrix.h:65
gbl::BorderedBandMatrix::solveAndInvertBorderedBand
void solveAndInvertBorderedBand(const VVector &aRightHandSide, VVector &aSolution)
Solve linear equation system, partially calculate inverse.
Definition: BorderedBandMatrix.cc:125
gbl::BorderedBandMatrix::decomposeBand
void decomposeBand()
(root free) Cholesky decomposition of band part: C=LDL^T
Definition: BorderedBandMatrix.cc:177
gbl::BorderedBandMatrix::theBand
VMatrix theBand
Band part.
Definition: BorderedBandMatrix.h:79
gbl::VVector
Simple Vector based on std::vector<double>
Definition: VMatrix.h:22
gbl::BorderedBandMatrix::numCol
unsigned int numCol
Band matrix size.
Definition: BorderedBandMatrix.h:76
gbl::BorderedBandMatrix::resize
void resize(unsigned int nSize, unsigned int nBorder=1, unsigned int nBand=5)
Resize bordered band matrix.
Definition: BorderedBandMatrix.cc:26