GENFIT  Rev:NoNumberAvailable
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
VMatrix.h
Go to the documentation of this file.
1 /*
2  * VMatrix.h
3  *
4  * Created on: Feb 15, 2012
5  * Author: kleinwrt
6  */
7 
8 #ifndef VMATRIX_H_
9 #define VMATRIX_H_
10 
11 #include <iostream>
12 #include <iomanip>
13 #include <vector>
14 #include <cstring>
15 #include <math.h>
16 
17 
19 namespace gbl {
20 
22 class VVector {
23 public:
24  VVector(const unsigned int nRows = 0);
25  VVector(const VVector &aVector);
26  virtual ~VVector();
27  void resize(const unsigned int nRows);
28  VVector getVec(unsigned int len, unsigned int start = 0) const;
29  void putVec(const VVector &aVector, unsigned int start = 0);
30  inline double &operator()(unsigned int i);
31  inline double operator()(unsigned int i) const;
32  unsigned int getNumRows() const;
33  void print() const;
34  VVector operator-(const VVector &aVector) const;
35  VVector &operator=(const VVector &aVector);
36 private:
37  unsigned int numRows;
38  std::vector<double> theVec;
39 };
40 
42 class VMatrix {
43 public:
44  VMatrix(const unsigned int nRows = 0, const unsigned int nCols = 0);
45  VMatrix(const VMatrix &aMatrix);
46  virtual ~VMatrix();
47  void resize(const unsigned int nRows, const unsigned int nCols);
48  VMatrix transpose() const;
49  inline double &operator()(unsigned int i, unsigned int j);
50  inline double operator()(unsigned int i, unsigned int j) const;
51  unsigned int getNumRows() const;
52  unsigned int getNumCols() const;
53  void print() const;
54  VVector operator*(const VVector &aVector) const;
55  VMatrix operator*(const VMatrix &aMatrix) const;
56  VMatrix operator+(const VMatrix &aMatrix) const;
57  VMatrix &operator=(const VMatrix &aMatrix);
58 private:
59  unsigned int numRows;
60  unsigned int numCols;
61  std::vector<double> theVec;
62 };
63 
65 class VSymMatrix {
66 public:
67  VSymMatrix(const unsigned int nRows = 0);
68  virtual ~VSymMatrix();
69  void resize(const unsigned int nRows);
70  unsigned int invert();
71  inline double &operator()(unsigned int i, unsigned int j);
72  inline double operator()(unsigned int i, unsigned int j) const;
73  unsigned int getNumRows() const;
74  void print() const;
75  VSymMatrix operator-(const VMatrix &aMatrix) const;
76  VVector operator*(const VVector &aVector) const;
77  VMatrix operator*(const VMatrix &aMatrix) const;
78 private:
79  unsigned int numRows;
80  std::vector<double> theVec;
81 };
82 
84 inline double &VMatrix::operator()(unsigned int iRow, unsigned int iCol) {
85  return theVec[numCols * iRow + iCol];
86 }
87 
89 inline double VMatrix::operator()(unsigned int iRow, unsigned int iCol) const {
90  return theVec[numCols * iRow + iCol];
91 }
92 
94 inline double &VVector::operator()(unsigned int iRow) {
95  return theVec[iRow];
96 }
97 
99 inline double VVector::operator()(unsigned int iRow) const {
100  return theVec[iRow];
101 }
102 
104 inline double &VSymMatrix::operator()(unsigned int iRow, unsigned int iCol) {
105  return theVec[(iRow * iRow + iRow) / 2 + iCol]; // assuming iCol <= iRow
106 }
107 
109 inline double VSymMatrix::operator()(unsigned int iRow,
110  unsigned int iCol) const {
111  return theVec[(iRow * iRow + iRow) / 2 + iCol]; // assuming iCol <= iRow
112 }
113 }
114 #endif /* VMATRIX_H_ */
unsigned int getNumRows() const
Get number of rows (= number of colums).
Definition: VMatrix.cc:162
VMatrix transpose() const
Get transposed matrix.
Definition: VMatrix.cc:43
void print() const
Print matrix.
Definition: VMatrix.cc:70
std::vector< double > theVec
Data.
Definition: VMatrix.h:38
VVector operator-(const VVector &aVector) const
Subtraction Vector-Vector.
Definition: VMatrix.cc:290
VMatrix operator+(const VMatrix &aMatrix) const
Addition Matrix+Matrix.
Definition: VMatrix.cc:115
unsigned int numRows
Number of rows.
Definition: VMatrix.h:79
unsigned int getNumCols() const
Get number of columns.
Definition: VMatrix.cc:65
VSymMatrix operator-(const VMatrix &aMatrix) const
Subtraction SymMatrix-(sym)Matrix.
Definition: VMatrix.cc:183
VVector & operator=(const VVector &aVector)
Assignment Vector=Vector.
Definition: VMatrix.cc:299
unsigned int invert()
Matrix inversion.
Definition: VMatrix.cc:326
std::vector< double > theVec
Data.
Definition: VMatrix.h:61
unsigned int numRows
Number of rows.
Definition: VMatrix.h:59
void resize(const unsigned int nRows)
Resize symmetric matrix.
Definition: VMatrix.cc:153
unsigned int numCols
Number of columns.
Definition: VMatrix.h:60
VVector operator*(const VVector &aVector) const
Multiplication SymMatrix*Vector.
Definition: VMatrix.cc:194
Simple Vector based on std::vector
Definition: VMatrix.h:22
void resize(const unsigned int nRows)
Resize vector.
Definition: VMatrix.cc:240
virtual ~VMatrix()
Definition: VMatrix.cc:25
VSymMatrix(const unsigned int nRows=0)
Definition: VMatrix.cc:142
void putVec(const VVector &aVector, unsigned int start=0)
Put part of vector.
Definition: VMatrix.cc:262
Namespace for the general broken lines package.
double & operator()(unsigned int i, unsigned int j)
access element (i,j) assuming i>=j
Definition: VMatrix.h:104
void print() const
Print vector.
Definition: VMatrix.cc:276
virtual ~VSymMatrix()
Definition: VMatrix.cc:146
double & operator()(unsigned int i)
access element (i)
Definition: VMatrix.h:94
void resize(const unsigned int nRows, const unsigned int nCols)
Resize Matrix.
Definition: VMatrix.cc:33
unsigned int getNumRows() const
Get number of rows.
Definition: VMatrix.cc:271
VMatrix & operator=(const VMatrix &aMatrix)
Assignment Matrix=Matrix.
Definition: VMatrix.cc:126
unsigned int getNumRows() const
Get number of rows.
Definition: VMatrix.cc:57
void print() const
Print matrix.
Definition: VMatrix.cc:167
VMatrix(const unsigned int nRows=0, const unsigned int nCols=0)
Definition: VMatrix.cc:15
VVector operator*(const VVector &aVector) const
Multiplication Matrix*Vector.
Definition: VMatrix.cc:86
std::vector< double > theVec
Data (symmetric storage)
Definition: VMatrix.h:80
VVector(const unsigned int nRows=0)
Definition: VMatrix.cc:224
virtual ~VVector()
Definition: VMatrix.cc:233
unsigned int numRows
Number of rows.
Definition: VMatrix.h:37
double & operator()(unsigned int i, unsigned int j)
access element (i,j)
Definition: VMatrix.h:84
Simple Matrix based on std::vector
Definition: VMatrix.h:42
Simple symmetric Matrix based on std::vector
Definition: VMatrix.h:65
VVector getVec(unsigned int len, unsigned int start=0) const
Get part of vector.
Definition: VMatrix.cc:251