SND@LHC Software
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
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
19namespace gbl {
20
22class VVector {
23public:
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);
36private:
37 unsigned int numRows;
38 std::vector<double> theVec;
39};
40
42class VMatrix {
43public:
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);
58private:
59 unsigned int numRows;
60 unsigned int numCols;
61 std::vector<double> theVec;
62};
63
66public:
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;
78private:
79 unsigned int numRows;
80 std::vector<double> theVec;
81};
82
84inline double &VMatrix::operator()(unsigned int iRow, unsigned int iCol) {
85 return theVec[numCols * iRow + iCol];
86}
87
89inline double VMatrix::operator()(unsigned int iRow, unsigned int iCol) const {
90 return theVec[numCols * iRow + iCol];
91}
92
94inline double &VVector::operator()(unsigned int iRow) {
95 return theVec[iRow];
96}
97
99inline double VVector::operator()(unsigned int iRow) const {
100 return theVec[iRow];
101}
102
104inline double &VSymMatrix::operator()(unsigned int iRow, unsigned int iCol) {
105 return theVec[(iRow * iRow + iRow) / 2 + iCol]; // assuming iCol <= iRow
106}
107
109inline 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_ */
Simple Matrix based on std::vector<double>
Definition VMatrix.h:42
unsigned int getNumCols() const
Get number of columns.
Definition VMatrix.cc:65
VMatrix transpose() const
Get transposed matrix.
Definition VMatrix.cc:43
VVector operator*(const VVector &aVector) const
Multiplication Matrix*Vector.
Definition VMatrix.cc:86
unsigned int numRows
Number of rows.
Definition VMatrix.h:59
unsigned int getNumRows() const
Get number of rows.
Definition VMatrix.cc:57
void resize(const unsigned int nRows, const unsigned int nCols)
Resize Matrix.
Definition VMatrix.cc:33
VMatrix operator+(const VMatrix &aMatrix) const
Addition Matrix+Matrix.
Definition VMatrix.cc:115
unsigned int numCols
Number of columns.
Definition VMatrix.h:60
VMatrix & operator=(const VMatrix &aMatrix)
Assignment Matrix=Matrix.
Definition VMatrix.cc:126
std::vector< double > theVec
Data.
Definition VMatrix.h:61
double & operator()(unsigned int i, unsigned int j)
access element (i,j)
Definition VMatrix.h:84
void print() const
Print matrix.
Definition VMatrix.cc:70
virtual ~VMatrix()
Definition VMatrix.cc:25
Simple symmetric Matrix based on std::vector<double>
Definition VMatrix.h:65
VVector operator*(const VVector &aVector) const
Multiplication SymMatrix*Vector.
Definition VMatrix.cc:194
void print() const
Print matrix.
Definition VMatrix.cc:167
double & operator()(unsigned int i, unsigned int j)
access element (i,j) assuming i>=j
Definition VMatrix.h:104
unsigned int invert()
Matrix inversion.
Definition VMatrix.cc:326
unsigned int getNumRows() const
Get number of rows (= number of colums).
Definition VMatrix.cc:162
std::vector< double > theVec
Data (symmetric storage)
Definition VMatrix.h:80
unsigned int numRows
Number of rows.
Definition VMatrix.h:79
void resize(const unsigned int nRows)
Resize symmetric matrix.
Definition VMatrix.cc:153
virtual ~VSymMatrix()
Definition VMatrix.cc:146
VSymMatrix operator-(const VMatrix &aMatrix) const
Subtraction SymMatrix-(sym)Matrix.
Definition VMatrix.cc:183
Simple Vector based on std::vector<double>
Definition VMatrix.h:22
virtual ~VVector()
Definition VMatrix.cc:233
void putVec(const VVector &aVector, unsigned int start=0)
Put part of vector.
Definition VMatrix.cc:262
std::vector< double > theVec
Data.
Definition VMatrix.h:38
VVector getVec(unsigned int len, unsigned int start=0) const
Get part of vector.
Definition VMatrix.cc:251
VVector operator-(const VVector &aVector) const
Subtraction Vector-Vector.
Definition VMatrix.cc:290
void resize(const unsigned int nRows)
Resize vector.
Definition VMatrix.cc:240
unsigned int numRows
Number of rows.
Definition VMatrix.h:37
double & operator()(unsigned int i)
access element (i)
Definition VMatrix.h:94
void print() const
Print vector.
Definition VMatrix.cc:276
VVector & operator=(const VVector &aVector)
Assignment Vector=Vector.
Definition VMatrix.cc:299
unsigned int getNumRows() const
Get number of rows.
Definition VMatrix.cc:271
Namespace for the general broken lines package.