4#ifndef ROOT_Math_SMatrix 
    5#define ROOT_Math_SMatrix 
   93template <
class T, 
unsigned int D> 
class SVector;
 
  122          unsigned int D2 = D1,
 
  175   template <
class A, 
class R2>
 
  192   template<
class InputIterator>
 
  193   SMatrix(InputIterator 
begin, InputIterator 
end, 
bool triang = 
false, 
bool lower = 
true);
 
  206   template<
class InputIterator>
 
  207   SMatrix(InputIterator 
begin, 
unsigned int size, 
bool triang = 
false, 
bool lower = 
true);
 
  213#ifndef UNSUPPORTED_TEMPLATE_EXPRESSION 
  216   template<
unsigned int N>
 
  238   template <
class A, 
class R2>
 
  273   T apply(
unsigned int i) 
const;
 
  319   template<
class InputIterator>
 
  320   void SetElements(InputIterator 
begin, InputIterator 
end, 
bool triang = 
false, 
bool lower = 
true);
 
  333   template<
class InputIterator>
 
  334   void SetElements(InputIterator 
begin, 
unsigned int size, 
bool triang = 
false, 
bool lower = 
true);
 
  348   template <
class A, 
class R2>
 
  351   template <
class A, 
class R2>
 
  365   template <
class A, 
class R2>
 
  368   template <
class A, 
class R2>
 
  374   const T& 
operator()(
unsigned int i, 
unsigned int j) 
const;
 
  384   const T& 
At(
unsigned int i, 
unsigned int j) 
const;
 
  389   T& 
At(
unsigned int i, 
unsigned int j);
 
  442   template <
class A, 
class R2>
 
  459   template <
class A, 
class R2>
 
  480   template <
class A, 
class R2>
 
  566   bool Det2(
T& det) 
const;
 
  572   template <
unsigned int D>
 
  577   template <
class A, 
unsigned int D>
 
  582   template <
unsigned int D>
 
  587   template <
class A, 
unsigned int D>
 
  592   template <
unsigned int D3, 
unsigned int D4, 
class R2>
 
  597   template <
class A, 
unsigned int D3, 
unsigned int D4, 
class R2>
 
  617   template <
class SubVector>
 
  618   SubVector 
SubRow(
unsigned int therow, 
unsigned int col0 = 0 ) 
const;
 
  625   template <
class SubVector>
 
  626   SubVector 
SubCol(
unsigned int thecol, 
unsigned int row0 = 0) 
const;
 
  633   template <
class SubMatrix >
 
  634   SubMatrix 
Sub(
unsigned int row0, 
unsigned int col0) 
const;
 
  647   template <
class Vector>
 
  662#ifndef UNSUPPORTED_TEMPLATE_EXPRESSION 
  665   template<
class SubVector>
 
  674#ifndef UNSUPPORTED_TEMPLATE_EXPRESSION 
  677   template<
class SubVector>
 
  697   std::ostream& 
Print(std::ostream& os) 
const;
 
  719template <
class T, 
unsigned int D1, 
unsigned int D2, 
class R>
 
  721  return rhs.
Print(os);
 
#define R(a, b, c, d, e, f, g, h, i)
 
Expression wrapper class for Matrix objects.
 
const SMatrix< T, D1, D2, R > * fMat
 
const T & operator[](int j) const
 
SMatrixRow_const(const SMatrix< T, D1, D2, R > &rhs, unsigned int i)
 
SMatrix< T, D1, D2, R > * fMat
 
SMatrixRow(SMatrix< T, D1, D2, R > &rhs, unsigned int i)
 
SMatrix: a generic fixed size D1 x D2 Matrix class.
 
SVector< T, D1 > Col(unsigned int thecol) const
return a full Matrix column as a vector (copy the content in a new vector)
 
SMatrix()
Default constructor:
 
SMatrix< T, D1, D2, R > & operator-=(const T &rhs)
subtraction with a scalar
 
T apply(unsigned int i) const
access the parse tree with the index starting from zero and following the C convention for the order ...
 
bool Det2(T &det) const
determinant of square Matrix via Dfact.
 
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 = D...
 
iterator end()
STL iterator interface.
 
const T & At(unsigned int i, unsigned int j) const
read only access to matrix element, with indices starting from 0.
 
bool Det(T &det)
determinant of square Matrix via Dfact.
 
@ kCols
return no. of matrix columns
 
@ kRows
return no. of matrix rows
 
@ kSize
return no of elements: rows*columns
 
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.
 
bool operator>(const T &rhs) const
element wise comparison
 
std::ostream & Print(std::ostream &os) const
Print: used by operator<<()
 
SMatrix< T, D1, D2, R > & operator=(const M &rhs)
Assign from another compatible matrix.
 
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
 
SMatrix< T, D1, D2, R > Inverse(int &ifail) const
Invert a square Matrix and returns a new matrix.
 
SMatrixRow operator[](unsigned int i)
read/write access to matrix element with indices starting from 0 : m[i][j]
 
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,...
 
SMatrix< T, D1, D2, R > & operator*=(const T &rhs)
multiplication with a scalar
 
bool operator<(const T &rhs) const
element wise comparison
 
iterator begin()
STL iterator interface.
 
void SetElements(InputIterator begin, InputIterator end, bool triang=false, bool lower=true)
Set matrix elements with STL iterator interface.
 
R fRep
Matrix Storage Object containing matrix data.
 
SMatrix(SMatrixNoInit)
construct from without initialization
 
SMatrix< T, D1, D2, R > InverseFast(int &ifail) const
Invert a square Matrix and returns a new matrix.
 
bool operator==(const T &rhs) const
element wise comparison
 
SMatrixRow_const operator[](unsigned int i) const
read only access to matrix element, with indices starting from 0 : m[i][j]
 
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
 
SVector< T, D1 > Diagonal() const
return diagonal elements of a matrix as a Vector.
 
SMatrix< T, D1, D2, R > InverseChol(int &ifail) const
Invert of a symmetric positive defined Matrix using Choleski decomposition.
 
void SetDiagonal(const Vector &v)
Set the diagonal elements from a Vector Require that vector implements kSize since a check (staticall...
 
bool operator!=(const T &rhs) const
element wise comparison
 
T * iterator
STL iterator interface.
 
const T * const_iterator
STL const_iterator interface.
 
SMatrix< T, D1, D2, R > & operator+=(const T &rhs)
addition with a scalar
 
bool InvertChol()
Invertion of a symmetric positive defined Matrix using Choleski decomposition.
 
bool Invert()
Invert a square Matrix ( this method changes the current matrix).
 
bool IsInUse(const T *p) const
Function to check if a matrix is sharing same memory location of the passed pointer This function is ...
 
R rep_type
storage representation type
 
SMatrix< T, D1, D2, R > & operator/=(const T &rhs)
division with a scalar
 
T value_type
contained scalar type
 
bool InvertFast()
Fast Invertion of a square Matrix ( this method changes the current matrix).
 
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 = D...
 
T Trace() const
return the trace of a matrix Sum of the diagonal elements
 
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,...
 
const T & operator()(unsigned int i, unsigned int j) const
read only access to matrix element, with indices starting from 0
 
SVector< T, D2 > Row(unsigned int therow) const
return a full Matrix row as a vector (copy the content in a new vector)
 
const T * Array() const
return read-only pointer to internal array
 
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
 
SVector: a generic fixed size Vector class.
 
Expression wrapper class for Vector objects.
 
Namespace for new Math classes and functions.
 
std::ostream & operator<<(std::ostream &os, const AxisAngle &a)
Stream Output and Input.