ROOT 6.10/09 Reference Guide |
SMatrix: a generic fixed size D1 x D2 Matrix class.
The class is template on the scalar type, on the matrix sizes: D1 = number of rows and D2 = number of columns amd on the representation storage type. By default the representation is MatRepStd<T,D1,D2> (standard D1xD2 of type T), but it can be of type MatRepSym<T,D> for symmetric matrices DxD, where the storage is only D*(D+1)/2.
Original author is Thorsten Glebe HERA-B Collaboration, MPI Heidelberg (Germany)
Definition at line 31 of file BinaryOperators.h.
Classes | |
class | SMatrixRow |
class | SMatrixRow_const |
Public Types | |
--- Matrix dimension --- | |
enum | { kRows = D1, kCols = D2, kSize = D1*D2 } |
Enumeration defining the matrix dimension, number of rows, columns and size = rows*columns) More... | |
--- Typedefs --- | |
typedef T | value_type |
contained scalar type More... | |
typedef R | rep_type |
storage representation type More... | |
typedef T * | iterator |
STL iterator interface. More... | |
typedef const T * | const_iterator |
STL const_iterator interface. More... | |
Public Member Functions | |
--- Constructors and Assignment --- | |
SMatrix () | |
Default constructor: More... | |
SMatrix (SMatrixNoInit) | |
construct from without initialization More... | |
SMatrix (SMatrixIdentity) | |
construct from an identity matrix More... | |
SMatrix (const SMatrix< T, D1, D2, R > &rhs) | |
copy constructor (from a matrix of the same representation More... | |
template<class R2 > | |
SMatrix (const SMatrix< T, D1, D2, R2 > &rhs) | |
construct from a matrix with different representation. More... | |
template<class A , class R2 > | |
SMatrix (const Expr< A, T, D1, D2, R2 > &rhs) | |
Construct from an expression. More... | |
template<class InputIterator > | |
SMatrix (InputIterator begin, InputIterator end, bool triang=false, bool lower=true) | |
Constructor with STL iterator interface. More... | |
template<class InputIterator > | |
SMatrix (InputIterator begin, unsigned int size, bool triang=false, bool lower=true) | |
Constructor with STL iterator interface. More... | |
SMatrix (const SVector< T, D1 *(D2+1)/2 > &v, bool lower=true) | |
constructor of a symmetrix a matrix from a SVector containing the lower (upper) triangular part. More... | |
SMatrix (const T &rhs) | |
Construct from a scalar value (only for size 1 matrices) More... | |
template<class M > | |
SMatrix< T, D1, D2, R > & | operator= (const M &rhs) |
Assign from another compatible matrix. More... | |
template<class A , class R2 > | |
SMatrix< T, D1, D2, R > & | operator= (const Expr< A, T, D1, D2, R2 > &rhs) |
Assign from a matrix expression. More... | |
SMatrix< T, D1, D2, R > & | operator= (SMatrixIdentity) |
Assign from an identity matrix. More... | |
SMatrix< T, D1, D2, R > & | operator= (const T &rhs) |
Assign from a scalar value (only for size 1 matrices) More... | |
--- Access functions --- | |
T | apply (unsigned int i) const |
access the parse tree with the index starting from zero and following the C convention for the order in accessing the matrix elements. More... | |
const T * | Array () const |
return read-only pointer to internal array More... | |
T * | Array () |
return pointer to internal array More... | |
--- STL-like interface --- | |
The iterators access the matrix element in the order how they are stored in memory. The C (row-major) convention is used, and in the case of symmetric matrices the iterator spans only the lower diagonal block. For example for a symmetric 3x3 matrices the order of the 6 elements \({a_0,...a_5}\) is: \[ M = \left( \begin{array}{ccc} a_0 & a_1 & a_3 \\ a_1 & a_2 & a_4 \\ a_3 & a_4 & a_5 \end{array} \right) \] | |
iterator | begin () |
STL iterator interface. More... | |
iterator | end () |
STL iterator interface. More... | |
const_iterator | begin () const |
STL const_iterator interface. More... | |
const_iterator | end () const |
STL const_iterator interface. More... | |
template<class InputIterator > | |
void | SetElements (InputIterator begin, InputIterator end, bool triang=false, bool lower=true) |
Set matrix elements with STL iterator interface. More... | |
template<class InputIterator > | |
void | SetElements (InputIterator begin, unsigned int size, bool triang=false, bool lower=true) |
Constructor with STL iterator interface. More... | |
--- Operators --- | |
bool | operator== (const T &rhs) const |
element wise comparison More... | |
bool | operator!= (const T &rhs) const |
element wise comparison More... | |
template<class R2 > | |
bool | operator== (const SMatrix< T, D1, D2, R2 > &rhs) const |
element wise comparison More... | |
bool | operator!= (const SMatrix< T, D1, D2, R > &rhs) const |
element wise comparison More... | |
template<class A , class R2 > | |
bool | operator== (const Expr< A, T, D1, D2, R2 > &rhs) const |
element wise comparison More... | |
template<class A , class R2 > | |
bool | operator!= (const Expr< A, T, D1, D2, R2 > &rhs) const |
element wise comparison More... | |
bool | operator> (const T &rhs) const |
element wise comparison More... | |
bool | operator< (const T &rhs) const |
element wise comparison More... | |
template<class R2 > | |
bool | operator> (const SMatrix< T, D1, D2, R2 > &rhs) const |
element wise comparison More... | |
template<class R2 > | |
bool | operator< (const SMatrix< T, D1, D2, R2 > &rhs) const |
element wise comparison More... | |
template<class A , class R2 > | |
bool | operator> (const Expr< A, T, D1, D2, R2 > &rhs) const |
element wise comparison More... | |
template<class A , class R2 > | |
bool | operator< (const Expr< A, T, D1, D2, R2 > &rhs) const |
element wise comparison More... | |
const T & | operator() (unsigned int i, unsigned int j) const |
read only access to matrix element, with indices starting from 0 More... | |
T & | operator() (unsigned int i, unsigned int j) |
read/write access to matrix element with indices starting from 0 More... | |
const T & | At (unsigned int i, unsigned int j) const |
read only access to matrix element, with indices starting from 0. More... | |
T & | At (unsigned int i, unsigned int j) |
read/write access to matrix element with indices starting from 0. More... | |
SMatrixRow_const | operator[] (unsigned int i) const |
read only access to matrix element, with indices starting from 0 : m[i][j] More... | |
SMatrixRow | operator[] (unsigned int i) |
read/write access to matrix element with indices starting from 0 : m[i][j] More... | |
SMatrix< T, D1, D2, R > & | operator+= (const T &rhs) |
addition with a scalar More... | |
template<class R2 > | |
SMatrix< T, D1, D2, R > & | operator+= (const SMatrix< T, D1, D2, R2 > &rhs) |
addition with another matrix of any compatible representation More... | |
template<class A , class R2 > | |
SMatrix< T, D1, D2, R > & | operator+= (const Expr< A, T, D1, D2, R2 > &rhs) |
addition with a compatible matrix expression More... | |
SMatrix< T, D1, D2, R > & | operator-= (const T &rhs) |
subtraction with a scalar More... | |
template<class R2 > | |
SMatrix< T, D1, D2, R > & | operator-= (const SMatrix< T, D1, D2, R2 > &rhs) |
subtraction with another matrix of any compatible representation More... | |
template<class A , class R2 > | |
SMatrix< T, D1, D2, R > & | operator-= (const Expr< A, T, D1, D2, R2 > &rhs) |
subtraction with a compatible matrix expression More... | |
SMatrix< T, D1, D2, R > & | operator*= (const T &rhs) |
multiplication with a scalar More... | |
template<class R2 > | |
SMatrix< T, D1, D2, R > & | operator*= (const SMatrix< T, D1, D2, R2 > &rhs) |
multiplication with another compatible matrix (it is a real matrix multiplication) Note that this operation does not avid to create a temporary to store intermidiate result More... | |
template<class A , class R2 > | |
SMatrix< T, D1, D2, R > & | operator*= (const Expr< A, T, D1, D2, R2 > &rhs) |
multiplication with a compatible matrix expression (it is a real matrix multiplication) More... | |
SMatrix< T, D1, D2, R > & | operator/= (const T &rhs) |
division with a scalar More... | |
--- Linear Algebra Functions --- | |
bool | Invert () |
Invert a square Matrix ( this method changes the current matrix). More... | |
SMatrix< T, D1, D2, R > | Inverse (int &ifail) const |
Invert a square Matrix and returns a new matrix. More... | |
bool | InvertFast () |
Fast Invertion of a square Matrix ( this method changes the current matrix). More... | |
SMatrix< T, D1, D2, R > | InverseFast (int &ifail) const |
Invert a square Matrix and returns a new matrix. More... | |
bool | InvertChol () |
Invertion of a symmetric positive defined Matrix using Choleski decomposition. More... | |
SMatrix< T, D1, D2, R > | InverseChol (int &ifail) const |
Invert of a symmetric positive defined Matrix using Choleski decomposition. More... | |
bool | Det (T &det) |
determinant of square Matrix via Dfact. More... | |
bool | Det2 (T &det) const |
determinant of square Matrix via Dfact. More... | |
--- Matrix Slice Functions --- | |
template<unsigned int D> | |
SMatrix< T, D1, D2, R > & | Place_in_row (const SVector< T, D > &rhs, unsigned int row, unsigned int col) |
place a vector in a Matrix row More... | |
template<class A , unsigned int D> | |
SMatrix< T, D1, D2, R > & | Place_in_row (const VecExpr< A, T, D > &rhs, unsigned int row, unsigned int col) |
place a vector expression in a Matrix row More... | |
template<unsigned int D> | |
SMatrix< T, D1, D2, R > & | Place_in_col (const SVector< T, D > &rhs, unsigned int row, unsigned int col) |
place a vector in a Matrix column More... | |
template<class A , unsigned int D> | |
SMatrix< T, D1, D2, R > & | Place_in_col (const VecExpr< A, T, D > &rhs, unsigned int row, unsigned int col) |
place a vector expression in a Matrix column More... | |
template<unsigned int D3, unsigned int D4, class R2 > | |
SMatrix< T, D1, D2, R > & | Place_at (const SMatrix< T, D3, D4, R2 > &rhs, unsigned int row, unsigned int col) |
place a matrix in this matrix More... | |
template<class A , unsigned int D3, unsigned int D4, class R2 > | |
SMatrix< T, D1, D2, R > & | Place_at (const Expr< A, T, D3, D4, R2 > &rhs, unsigned int row, unsigned int col) |
place a matrix expression in this matrix More... | |
SVector< T, D2 > | Row (unsigned int therow) const |
return a full Matrix row as a vector (copy the content in a new vector) More... | |
SVector< T, D1 > | Col (unsigned int thecol) const |
return a full Matrix column as a vector (copy the content in a new vector) More... | |
template<class SubVector > | |
SubVector | SubRow (unsigned int therow, unsigned int col0=0) const |
return a slice of therow as a vector starting at the colum value col0 until col0+N, where N is the size of the vector (SubVector::kSize ) Condition col0+N <= D2 More... | |
template<class SubVector > | |
SubVector | SubCol (unsigned int thecol, unsigned int row0=0) const |
return a slice of the column as a vector starting at the row value row0 until row0+Dsub. More... | |
template<class SubMatrix > | |
SubMatrix | Sub (unsigned int row0, unsigned int col0) const |
return a submatrix with the upper left corner at the values (row0, col0) and with sizes N1, N2 where N1 and N2 are the dimension of the sub-matrix (SubMatrix::kRows and SubMatrix::kCols ) Condition row0+N1 <= D1 && col0+N2 <=D2 More... | |
SVector< T, D1 > | Diagonal () const |
return diagonal elements of a matrix as a Vector. More... | |
template<class Vector > | |
void | SetDiagonal (const Vector &v) |
Set the diagonal elements from a Vector Require that vector implements kSize since a check (statically) is done on diagonal size == vector size. More... | |
T | Trace () const |
return the trace of a matrix Sum of the diagonal elements More... | |
SVector< T, D1 *(D2+1)/2 > | UpperBlock () const |
return the upper Triangular block of the matrices (including the diagonal) as a vector of sizes N = D1 * (D1 + 1)/2. More... | |
SVector< T, D1 *(D2+1)/2 > | LowerBlock () const |
return the lower Triangular block of the matrices (including the diagonal) as a vector of sizes N = D1 * (D1 + 1)/2. More... | |
--- Other Functions --- | |
bool | IsInUse (const T *p) const |
Function to check if a matrix is sharing same memory location of the passed pointer This function is used by the expression templates to avoid the alias problem during expression evaluation. More... | |
std::ostream & | Print (std::ostream &os) const |
Print: used by operator<<() More... | |
Public Attributes | |
--- Data Member --- | |
R | fRep |
Matrix Storage Object containing matrix data. More... | |
#include <Math/BinaryOperators.h>
typedef const T* ROOT::Math::SMatrix< T, D1, D2, R >::const_iterator |
typedef T* ROOT::Math::SMatrix< T, D1, D2, R >::iterator |
typedef R ROOT::Math::SMatrix< T, D1, D2, R >::rep_type |
typedef T ROOT::Math::SMatrix< T, D1, D2, R >::value_type |
anonymous enum |
ROOT::Math::SMatrix< T, D1, D2, R >::SMatrix | ( | ) |
Default constructor:
Definition at line 72 of file SMatrix.icc.
|
inline |
ROOT::Math::SMatrix< T, D1, D2, R >::SMatrix | ( | SMatrixIdentity | ) |
construct from an identity matrix
Definition at line 79 of file SMatrix.icc.
ROOT::Math::SMatrix< T, D1, D2, R >::SMatrix | ( | const SMatrix< T, D1, D2, R > & | rhs | ) |
copy constructor (from a matrix of the same representation
Definition at line 93 of file SMatrix.icc.
ROOT::Math::SMatrix< T, D1, D2, R >::SMatrix | ( | const SMatrix< T, D1, D2, R2 > & | rhs | ) |
construct from a matrix with different representation.
Works only from symmetric to general and not viceversa.
Definition at line 100 of file SMatrix.icc.
ROOT::Math::SMatrix< T, D1, D2, R >::SMatrix | ( | const Expr< A, T, D1, D2, R2 > & | rhs | ) |
Construct from an expression.
In case of symmetric matrices does not work if expression is of type general matrices. In case one needs to force the assignment from general to symmetric, one can use the ROOT::Math::AssignSym::Evaluate function.
Definition at line 107 of file SMatrix.icc.
ROOT::Math::SMatrix< T, D1, D2, R >::SMatrix | ( | InputIterator | begin, |
InputIterator | end, | ||
bool | triang = false , |
||
bool | lower = true |
||
) |
Constructor with STL iterator interface.
The data will be copied into the matrix
begin | start iterator position |
end | end iterator position |
triang | if true only the triangular lower/upper part of the matrix is filled from the iterators |
lower | if true the lower triangular part is filled |
Size of the matrix must match size of the iterators, if triang is false, otherwise the size of the triangular block. In the case of symmetric matrices triang is considered always to be true (what-ever the user specifies) and the size of the iterators must be equal to the size of the triangular block, which is the number of independent elements of a symmetric matrix: N*(N+1)/2
Definition at line 117 of file SMatrix.icc.
ROOT::Math::SMatrix< T, D1, D2, R >::SMatrix | ( | InputIterator | begin, |
unsigned int | size, | ||
bool | triang = false , |
||
bool | lower = true |
||
) |
Constructor with STL iterator interface.
The data will be copied into the matrix
begin | start iterator position |
size | iterator size |
triang | if true only the triangular lower/upper part of the matrix is filled from the iterators |
lower | if true the lower triangular part is filled |
Size of the iterators must not be larger than the size of the matrix representation. In the case of symmetric matrices the size is N*(N+1)/2.
Definition at line 125 of file SMatrix.icc.
ROOT::Math::SMatrix< T, D1, D2, R >::SMatrix | ( | const SVector< T, D1 *(D2+1)/2 > & | v, |
bool | lower = true |
||
) |
constructor of a symmetrix a matrix from a SVector containing the lower (upper) triangular part.
construct from upper/lower block
Definition at line 852 of file SMatrix.icc.
|
explicit |
Construct from a scalar value (only for size 1 matrices)
Definition at line 138 of file SMatrix.icc.
|
inline |
access the parse tree with the index starting from zero and following the C convention for the order in accessing the matrix elements.
Same convention for general and symmetric matrices.
Definition at line 621 of file SMatrix.icc.
|
inline |
return read-only pointer to internal array
Definition at line 624 of file SMatrix.icc.
|
inline |
return pointer to internal array
Definition at line 627 of file SMatrix.icc.
|
inline |
read only access to matrix element, with indices starting from 0.
Function will check index values and it will assert if they are wrong
Definition at line 647 of file SMatrix.icc.
|
inline |
read/write access to matrix element with indices starting from 0.
Function will check index values and it will assert if they are wrong
Definition at line 654 of file SMatrix.icc.
|
inline |
STL iterator interface.
Definition at line 664 of file SMatrix.icc.
|
inline |
STL const_iterator interface.
Definition at line 674 of file SMatrix.icc.
SVector< T, D1 > ROOT::Math::SMatrix< T, D1, D2, R >::Col | ( | unsigned int | thecol | ) | const |
return a full Matrix column as a vector (copy the content in a new vector)
Definition at line 584 of file SMatrix.icc.
|
inline |
determinant of square Matrix via Dfact.
Return true when the calculation is successfull.
det | will contain the calculated determinant value Note: this will destroy the contents of the Matrix! |
Definition at line 460 of file SMatrix.icc.
|
inline |
determinant of square Matrix via Dfact.
Return true when the calculation is successfull.
det | will contain the calculated determinant value Note: this will preserve the content of the Matrix! |
Definition at line 467 of file SMatrix.icc.
SVector< T, D1 > ROOT::Math::SMatrix< T, D1, D2, R >::Diagonal | ( | ) | const |
return diagonal elements of a matrix as a Vector.
It works only for squared matrices D1 == D2, otherwise it will produce a compile error
Definition at line 749 of file SMatrix.icc.
|
inline |
STL iterator interface.
Definition at line 669 of file SMatrix.icc.
|
inline |
STL const_iterator interface.
Definition at line 679 of file SMatrix.icc.
|
inline |
Invert a square Matrix and returns a new matrix.
In case the inversion fails the current matrix is returned.
ifail | . ifail will be set to 0 when inversion is successfull. See ROOT::Math::SMatrix::Invert for the inversion algorithm |
Definition at line 413 of file SMatrix.icc.
|
inline |
Invert of a symmetric positive defined Matrix using Choleski decomposition.
A compile error is given if the matrix is not of type symmetric and a run-time failure if the matrix is not positive defined. In case the inversion fails the current matrix is returned.
ifail | . ifail will be set to 0 when inversion is successfull. See ROOT::Math::SMatrix::InvertChol for the inversion algorithm |
Definition at line 446 of file SMatrix.icc.
|
inline |
Invert a square Matrix and returns a new matrix.
In case the inversion fails the current matrix is returned.
ifail | . ifail will be set to 0 when inversion is successfull. See ROOT::Math::SMatrix::InvertFast for the inversion algorithm |
Definition at line 430 of file SMatrix.icc.
|
inline |
Invert a square Matrix ( this method changes the current matrix).
Return true if inversion is successfull. The method used for general square matrices is the LU factorization taken from Dinv routine from the CERNLIB (written in C++ from CLHEP authors) In case of symmetric matrices Bunch-Kaufman diagonal pivoting method is used (The implementation is the one written by the CLHEP authors)
Definition at line 406 of file SMatrix.icc.
|
inline |
Invertion of a symmetric positive defined Matrix using Choleski decomposition.
( this method changes the current matrix). Return true if inversion is successfull. The method used is based on Choleski decomposition A compile error is given if the matrix is not of type symmetric and a run-time failure if the matrix is not positive defined. For solving a linear system, it is possible to use also the function ROOT::Math::SolveChol(matrix, vector) which will be faster than performing the inversion
Definition at line 440 of file SMatrix.icc.
|
inline |
Fast Invertion of a square Matrix ( this method changes the current matrix).
Return true if inversion is successfull. The method used is based on direct inversion using the Cramer rule for matrices upto 5x5. Afterwards the same default algorithm of Invert() is used. Note that this method is faster but can suffer from much larger numerical accuracy when the condition of the matrix is large
Definition at line 423 of file SMatrix.icc.
bool ROOT::Math::SMatrix< T, D1, D2, R >::IsInUse | ( | const T * | p | ) | const |
Function to check if a matrix is sharing same memory location of the passed pointer This function is used by the expression templates to avoid the alias problem during expression evaluation.
When the matrix is in use, for example in operations like A = B * A, a temporary object storing the intermediate result is automatically created when evaluating the expression.
Definition at line 889 of file SMatrix.icc.
SVector< T, D1 *(D2+1)/2 > ROOT::Math::SMatrix< T, D1, D2, R >::LowerBlock | ( | ) | const |
return the lower Triangular block of the matrices (including the diagonal) as a vector of sizes N = D1 * (D1 + 1)/2.
It works only for square matrices with D1==D2, otherwise it will produce a compile error
Definition at line 820 of file SMatrix.icc.
|
inline |
element wise comparison
Definition at line 321 of file SMatrix.icc.
|
inline |
element wise comparison
Definition at line 326 of file SMatrix.icc.
|
inline |
element wise comparison
Definition at line 332 of file SMatrix.icc.
|
inline |
read only access to matrix element, with indices starting from 0
Definition at line 633 of file SMatrix.icc.
|
inline |
read/write access to matrix element with indices starting from 0
Definition at line 638 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::operator*= | ( | const T & | rhs | ) |
multiplication with a scalar
Definition at line 252 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::operator*= | ( | const SMatrix< T, D1, D2, R2 > & | rhs | ) |
multiplication with another compatible matrix (it is a real matrix multiplication) Note that this operation does not avid to create a temporary to store intermidiate result
Definition at line 262 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::operator*= | ( | const Expr< A, T, D1, D2, R2 > & | rhs | ) |
multiplication with a compatible matrix expression (it is a real matrix multiplication)
Definition at line 270 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::operator+= | ( | const T & | rhs | ) |
addition with a scalar
Definition at line 191 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::operator+= | ( | const SMatrix< T, D1, D2, R2 > & | rhs | ) |
addition with another matrix of any compatible representation
Definition at line 201 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::operator+= | ( | const Expr< A, T, D1, D2, R2 > & | rhs | ) |
addition with a compatible matrix expression
Definition at line 211 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::operator-= | ( | const T & | rhs | ) |
subtraction with a scalar
Definition at line 222 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::operator-= | ( | const SMatrix< T, D1, D2, R2 > & | rhs | ) |
subtraction with another matrix of any compatible representation
Definition at line 232 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::operator-= | ( | const Expr< A, T, D1, D2, R2 > & | rhs | ) |
subtraction with a compatible matrix expression
Definition at line 242 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::operator/= | ( | const T & | rhs | ) |
division with a scalar
Definition at line 281 of file SMatrix.icc.
bool ROOT::Math::SMatrix< T, D1, D2, R >::operator< | ( | const T & | rhs | ) | const |
element wise comparison
Definition at line 373 of file SMatrix.icc.
bool ROOT::Math::SMatrix< T, D1, D2, R >::operator< | ( | const SMatrix< T, D1, D2, R2 > & | rhs | ) | const |
element wise comparison
Definition at line 383 of file SMatrix.icc.
bool ROOT::Math::SMatrix< T, D1, D2, R >::operator< | ( | const Expr< A, T, D1, D2, R2 > & | rhs | ) | const |
element wise comparison
Definition at line 393 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::operator= | ( | const M & | rhs | ) |
Assign from another compatible matrix.
Possible Symmetirc to general but NOT vice-versa
Definition at line 155 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::operator= | ( | const Expr< A, T, D1, D2, R2 > & | rhs | ) |
Assign from a matrix expression.
Definition at line 162 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::operator= | ( | SMatrixIdentity | ) |
Assign from an identity matrix.
Definition at line 171 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::operator= | ( | const T & | rhs | ) |
Assign from a scalar value (only for size 1 matrices)
Definition at line 144 of file SMatrix.icc.
bool ROOT::Math::SMatrix< T, D1, D2, R >::operator== | ( | const T & | rhs | ) | const |
element wise comparison
Definition at line 293 of file SMatrix.icc.
bool ROOT::Math::SMatrix< T, D1, D2, R >::operator== | ( | const SMatrix< T, D1, D2, R2 > & | rhs | ) | const |
element wise comparison
Definition at line 303 of file SMatrix.icc.
bool ROOT::Math::SMatrix< T, D1, D2, R >::operator== | ( | const Expr< A, T, D1, D2, R2 > & | rhs | ) | const |
element wise comparison
Definition at line 309 of file SMatrix.icc.
bool ROOT::Math::SMatrix< T, D1, D2, R >::operator> | ( | const T & | rhs | ) | const |
element wise comparison
Definition at line 341 of file SMatrix.icc.
bool ROOT::Math::SMatrix< T, D1, D2, R >::operator> | ( | const SMatrix< T, D1, D2, R2 > & | rhs | ) | const |
element wise comparison
Definition at line 351 of file SMatrix.icc.
bool ROOT::Math::SMatrix< T, D1, D2, R >::operator> | ( | const Expr< A, T, D1, D2, R2 > & | rhs | ) | const |
element wise comparison
Definition at line 361 of file SMatrix.icc.
|
inline |
|
inline |
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::Place_at | ( | const SMatrix< T, D3, D4, R2 > & | rhs, |
unsigned int | row, | ||
unsigned int | col | ||
) |
place a matrix in this matrix
Definition at line 546 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::Place_at | ( | const Expr< A, T, D3, D4, R2 > & | rhs, |
unsigned int | row, | ||
unsigned int | col | ||
) |
place a matrix expression in this matrix
Definition at line 558 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::Place_in_col | ( | const SVector< T, D > & | rhs, |
unsigned int | row, | ||
unsigned int | col | ||
) |
place a vector in a Matrix column
Definition at line 512 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::Place_in_col | ( | const VecExpr< A, T, D > & | rhs, |
unsigned int | row, | ||
unsigned int | col | ||
) |
place a vector expression in a Matrix column
Definition at line 529 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::Place_in_row | ( | const SVector< T, D > & | rhs, |
unsigned int | row, | ||
unsigned int | col | ||
) |
place a vector in a Matrix row
Definition at line 478 of file SMatrix.icc.
SMatrix< T, D1, D2, R > & ROOT::Math::SMatrix< T, D1, D2, R >::Place_in_row | ( | const VecExpr< A, T, D > & | rhs, |
unsigned int | row, | ||
unsigned int | col | ||
) |
place a vector expression in a Matrix row
Definition at line 495 of file SMatrix.icc.
std::ostream & ROOT::Math::SMatrix< T, D1, D2, R >::Print | ( | std::ostream & | os | ) | const |
Print: used by operator<<()
Definition at line 597 of file SMatrix.icc.
SVector< T, D2 > ROOT::Math::SMatrix< T, D1, D2, R >::Row | ( | unsigned int | therow | ) | const |
return a full Matrix row as a vector (copy the content in a new vector)
Definition at line 569 of file SMatrix.icc.
void ROOT::Math::SMatrix< T, D1, D2, R >::SetDiagonal | ( | const Vector & | v | ) |
Set the diagonal elements from a Vector Require that vector implements kSize since a check (statically) is done on diagonal size == vector size.
Definition at line 764 of file SMatrix.icc.
void ROOT::Math::SMatrix< T, D1, D2, R >::SetElements | ( | InputIterator | begin, |
InputIterator | end, | ||
bool | triang = false , |
||
bool | lower = true |
||
) |
Set matrix elements with STL iterator interface.
The data will be copied into the matrix
begin | start iterator position |
end | end iterator position |
triang | if true only the triangular lower/upper part of the matrix is filled from the iterators |
lower | if true the lower triangular part is filled |
Size of the matrix must match size of the iterators, if triang is false, otherwise the size of the triangular block. In the case of symmetric matrices triang is considered always to be true (what-ever the user specifies) and the size of the iterators must be equal to the size of the triangular block, which is the number of independent elements of a symmetric matrix: N*(N+1)/2
Definition at line 686 of file SMatrix.icc.
void ROOT::Math::SMatrix< T, D1, D2, R >::SetElements | ( | InputIterator | begin, |
unsigned int | size, | ||
bool | triang = false , |
||
bool | lower = true |
||
) |
Constructor with STL iterator interface.
The data will be copied into the matrix
begin | start iterator position |
size | iterator size |
triang | if true only the triangular lower/upper part of the matrix is filled from the iterators |
lower | if true the lower triangular part is filled |
Size of the iterators must not be larger than the size of the matrix representation. In the case of symmetric matrices the size is N*(N+1)/2.
Definition at line 693 of file SMatrix.icc.
SubMatrix ROOT::Math::SMatrix< T, D1, D2, R >::Sub | ( | unsigned int | row0, |
unsigned int | col0 | ||
) | const |
return a submatrix with the upper left corner at the values (row0, col0) and with sizes N1, N2 where N1 and N2 are the dimension of the sub-matrix (SubMatrix::kRows and SubMatrix::kCols ) Condition row0+N1 <= D1 && col0+N2 <=D2
Definition at line 739 of file SMatrix.icc.
SubVector ROOT::Math::SMatrix< T, D1, D2, R >::SubCol | ( | unsigned int | thecol, |
unsigned int | row0 = 0 |
||
) | const |
return a slice of the column as a vector starting at the row value row0 until row0+Dsub.
where N is the size of the vector (SubVector::kSize ) Condition row0+N <= D1
Definition at line 722 of file SMatrix.icc.
SubVector ROOT::Math::SMatrix< T, D1, D2, R >::SubRow | ( | unsigned int | therow, |
unsigned int | col0 = 0 |
||
) | const |
return a slice of therow as a vector starting at the colum value col0 until col0+N, where N is the size of the vector (SubVector::kSize ) Condition col0+N <= D2
Definition at line 706 of file SMatrix.icc.
T ROOT::Math::SMatrix< T, D1, D2, R >::Trace | ( | ) | const |
return the trace of a matrix Sum of the diagonal elements
Definition at line 778 of file SMatrix.icc.
SVector< T, D1 *(D2+1)/2 > ROOT::Math::SMatrix< T, D1, D2, R >::UpperBlock | ( | ) | const |
return the upper Triangular block of the matrices (including the diagonal) as a vector of sizes N = D1 * (D1 + 1)/2.
It works only for square matrices with D1==D2, otherwise it will produce a compile error
Definition at line 791 of file SMatrix.icc.
R ROOT::Math::SMatrix< T, D1, D2, R >::fRep |