GENFIT Rev: NoNumberAvailable
Loading...
Searching...
No Matches
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
29
30#ifndef VMATRIX_H_
31#define VMATRIX_H_
32
33#include<iostream>
34#include<iomanip>
35#include<vector>
36#include<cstring>
37#include<math.h>
38
40namespace gbl {
41
43class VVector {
44public:
45 VVector(const unsigned int nRows = 0);
46 VVector(const VVector &aVector);
47 virtual ~VVector();
48 void resize(const unsigned int nRows);
49 VVector getVec(unsigned int len, unsigned int start = 0) const;
50 void putVec(const VVector &aVector, unsigned int start = 0);
51 inline double &operator()(unsigned int i);
52 inline double operator()(unsigned int i) const;
53 unsigned int getNumRows() const;
54 void print() const;
55 VVector operator-(const VVector &aVector) const;
56 VVector &operator=(const VVector &aVector);
57private:
58 unsigned int numRows;
59 std::vector<double> theVec;
60};
61
63class VMatrix {
64public:
65 VMatrix(const unsigned int nRows = 0, const unsigned int nCols = 0);
66 VMatrix(const VMatrix &aMatrix);
67 virtual ~VMatrix();
68 void resize(const unsigned int nRows, const unsigned int nCols);
69 VMatrix transpose() const;
70 inline double &operator()(unsigned int i, unsigned int j);
71 inline double operator()(unsigned int i, unsigned int j) const;
72 unsigned int getNumRows() const;
73 unsigned int getNumCols() const;
74 void print() const;
75 VVector operator*(const VVector &aVector) const;
76 VMatrix operator*(const VMatrix &aMatrix) const;
77 VMatrix operator+(const VMatrix &aMatrix) const;
78 VMatrix &operator=(const VMatrix &aMatrix);
79private:
80 unsigned int numRows;
81 unsigned int numCols;
82 std::vector<double> theVec;
83};
84
87public:
88 VSymMatrix(const unsigned int nRows = 0);
89 virtual ~VSymMatrix();
90 void resize(const unsigned int nRows);
91 unsigned int invert();
92 inline double &operator()(unsigned int i, unsigned int j);
93 inline double operator()(unsigned int i, unsigned int j) const;
94 unsigned int getNumRows() const;
95 void print() const;
96 VSymMatrix operator-(const VMatrix &aMatrix) const;
97 VVector operator*(const VVector &aVector) const;
98 VMatrix operator*(const VMatrix &aMatrix) const;
99private:
100 unsigned int numRows;
101 std::vector<double> theVec;
102};
103
105inline double &VMatrix::operator()(unsigned int iRow, unsigned int iCol) {
106 return theVec[numCols * iRow + iCol];
107}
108
110inline double VMatrix::operator()(unsigned int iRow, unsigned int iCol) const {
111 return theVec[numCols * iRow + iCol];
112}
113
115inline double &VVector::operator()(unsigned int iRow) {
116 return theVec[iRow];
117}
118
120inline double VVector::operator()(unsigned int iRow) const {
121 return theVec[iRow];
122}
123
125inline double &VSymMatrix::operator()(unsigned int iRow, unsigned int iCol) {
126 return theVec[(iRow * iRow + iRow) / 2 + iCol]; // assuming iCol <= iRow
127}
128
130inline double VSymMatrix::operator()(unsigned int iRow,
131 unsigned int iCol) const {
132 return theVec[(iRow * iRow + iRow) / 2 + iCol]; // assuming iCol <= iRow
133}
134}
135#endif /* VMATRIX_H_ */
Simple Matrix based on std::vector<double>
Definition VMatrix.h:63
unsigned int getNumCols() const
Get number of columns.
Definition VMatrix.cc:87
VMatrix transpose() const
Get transposed matrix.
Definition VMatrix.cc:65
VVector operator*(const VVector &aVector) const
Multiplication Matrix*Vector.
Definition VMatrix.cc:108
unsigned int numRows
Number of rows.
Definition VMatrix.h:80
unsigned int getNumRows() const
Get number of rows.
Definition VMatrix.cc:79
void resize(const unsigned int nRows, const unsigned int nCols)
Resize Matrix.
Definition VMatrix.cc:55
VMatrix operator+(const VMatrix &aMatrix) const
Addition Matrix+Matrix.
Definition VMatrix.cc:137
unsigned int numCols
Number of columns.
Definition VMatrix.h:81
VMatrix & operator=(const VMatrix &aMatrix)
Assignment Matrix=Matrix.
Definition VMatrix.cc:148
VMatrix(const unsigned int nRows=0, const unsigned int nCols=0)
Definition VMatrix.cc:37
std::vector< double > theVec
Data.
Definition VMatrix.h:82
double & operator()(unsigned int i, unsigned int j)
access element (i,j)
Definition VMatrix.h:105
void print() const
Print matrix.
Definition VMatrix.cc:92
virtual ~VMatrix()
Definition VMatrix.cc:47
VSymMatrix(const unsigned int nRows=0)
Definition VMatrix.cc:164
VVector operator*(const VVector &aVector) const
Multiplication SymMatrix*Vector.
Definition VMatrix.cc:216
void print() const
Print matrix.
Definition VMatrix.cc:189
double & operator()(unsigned int i, unsigned int j)
access element (i,j) assuming i>=j
Definition VMatrix.h:125
unsigned int invert()
Matrix inversion.
Definition VMatrix.cc:348
unsigned int getNumRows() const
Get number of rows (= number of colums).
Definition VMatrix.cc:184
std::vector< double > theVec
Data (symmetric storage)
Definition VMatrix.h:101
unsigned int numRows
Number of rows.
Definition VMatrix.h:100
void resize(const unsigned int nRows)
Resize symmetric matrix.
Definition VMatrix.cc:175
virtual ~VSymMatrix()
Definition VMatrix.cc:168
VSymMatrix operator-(const VMatrix &aMatrix) const
Subtraction SymMatrix-(sym)Matrix.
Definition VMatrix.cc:205
Simple Vector based on std::vector<double>
Definition VMatrix.h:43
virtual ~VVector()
Definition VMatrix.cc:255
void putVec(const VVector &aVector, unsigned int start=0)
Put part of vector.
Definition VMatrix.cc:284
std::vector< double > theVec
Data.
Definition VMatrix.h:59
VVector getVec(unsigned int len, unsigned int start=0) const
Get part of vector.
Definition VMatrix.cc:273
VVector operator-(const VVector &aVector) const
Subtraction Vector-Vector.
Definition VMatrix.cc:312
void resize(const unsigned int nRows)
Resize vector.
Definition VMatrix.cc:262
VVector(const unsigned int nRows=0)
Definition VMatrix.cc:246
unsigned int numRows
Number of rows.
Definition VMatrix.h:58
double & operator()(unsigned int i)
access element (i)
Definition VMatrix.h:115
void print() const
Print vector.
Definition VMatrix.cc:298
VVector & operator=(const VVector &aVector)
Assignment Vector=Vector.
Definition VMatrix.cc:321
unsigned int getNumRows() const
Get number of rows.
Definition VMatrix.cc:293
Namespace for the general broken lines package.