12#ifndef ROOT_TMatrixTSym 
   13#define ROOT_TMatrixTSym 
   30template<
class Element>
class TMatrixT;
 
   32template<
class Element>
class TVectorT;
 
  119                                                return ResizeTo(
m.GetRowLwb(),
m.GetRowUpb(),
m.GetColLwb(),
m.GetColUpb()); }
 
 
  147         Error(
"operator=(const TMatrixTSym2 &)",
"matrices not compatible");
 
  156      this->
fTol = source.GetTol();
 
 
  194                                                                                                 { 
return Use(
a.GetRowLwb(),
a.GetRowUpb(),
a.GetMatrixArray()); }
 
 
  196                                                                                                 { 
return Use(
a.GetRowLwb(),
a.GetRowUpb(),
a.GetMatrixArray()); }
 
 
  212      Error(
"operator()",
"Request row(%d) outside matrix range of %d - %d",
rown,this->fRowLwb,this->fRowLwb+this->fNrows);
 
  216      Error(
"operator()",
"Request column(%d) outside matrix range of %d - %d",
coln,this->fColLwb,this->fColLwb+this->fNcols);
 
 
  228      Error(
"operator()",
"Request row(%d) outside matrix range of %d - %d",
rown,this->fRowLwb,this->fRowLwb+this->fNrows);
 
  232      Error(
"operator()",
"Request column(%d) outside matrix range of %d - %d",
coln,this->fColLwb,this->fColLwb+this->fNcols);
 
 
 
  248#if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40600 
  249#pragma GCC diagnostic push 
  250#pragma GCC diagnostic ignored "-Weffc++" 
  254#if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40600 
  255#pragma GCC diagnostic pop 
 
 
 
 
 
 
 
 
 
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
 
#define ClassDefOverride(name, id)
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
Bool_t operator<=(const TDatime &d1, const TDatime &d2)
 
Bool_t operator>(const TDatime &d1, const TDatime &d2)
 
Bool_t operator>=(const TDatime &d1, const TDatime &d2)
 
Bool_t operator<(const TDatime &d1, const TDatime &d2)
 
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t target
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
 
TString operator+(const TString &s1, const TString &s2)
Use the special concatenation constructor.
 
TTime operator*(const TTime &t1, const TTime &t2)
 
TTime operator-(const TTime &t1, const TTime &t2)
 
TClass instances represent classes, structs and namespaces in the ROOT type system.
 
static Element & NaNValue()
 
TMatrixTSym< Element > GetSub(Int_t row_lwb, Int_t row_upb, Int_t col_lwb, Int_t col_upb, Option_t *option="S") const
 
Element & operator()(Int_t rown, Int_t coln) override
Access element a_ij where i=rown and j=coln.
 
TMatrixTBase< Element > & ResizeTo(const TMatrixTSym< Element > &m)
 
TMatrixTSym< Element > & operator*=(Element val)
Multiply every element of the matrix with val.
 
TMatrixTBase< Element > & ResizeTo(Int_t nrows, Int_t ncols, Int_t=-1) override
Set size of the matrix to nrows x ncols New dynamic elements are created, the overlapping part of the...
 
TMatrixTSym(const TMatrixTSym< Element2 > &another)
 
TMatrixTRow< Element > operator[](Int_t rown)
Access row a_i where i=rown.
 
const Int_t * GetColIndexArray() const override
 
TMatrixTSym< Element > & operator+=(Element val)
Add val to every element of the matrix.
 
const TMatrixTSym< Element > & Use(Int_t nrows, const Element *data) const
 
const TMatrixTSym< Element > & Use(Int_t row_lwb, Int_t row_upb, const Element *data) const
 
virtual TMatrixTSym< Element > & RandomizePD(Element alpha, Element beta, Double_t &seed)
randomize matrix element values but keep matrix symmetric positive definite
 
TMatrixTBase< Element > & Randomize(Element alpha, Element beta, Double_t &seed) override
randomize matrix element values but keep matrix symmetric
 
Int_t * GetRowIndexArray() override
 
TMatrixTBase< Element > & SetColIndexArray(Int_t *) override
 
TMatrixTSym< Element > & Transpose(const TMatrixTSym< Element > &source)
Transpose a matrix.
 
Element * New_m(Int_t size)
return data pointer .
 
TMatrixTSym< Element > & Use(Int_t nrows, Element *data)
 
TMatrixTSym< Element > & Use(Int_t row_lwb, Int_t row_upb, Element *data)
 
const TMatrixTRow_const< Element > operator[](Int_t rown) const
 
TMatrixTSym< Element > & Rank1Update(const TVectorT< Element > &v, Element alpha=1.0)
Perform a rank 1 operation on the matrix: A += alpha * v * v^T.
 
TMatrixTSym< Element > & Use(TMatrixTSym< Element > &a)
 
TMatrixTSym< Element > & T()
 
void Minus(const TMatrixTSym< Element > &a, const TMatrixTSym< Element > &b)
Symmetric matrix subtraction. Replace this matrix with C such that C = A - B.
 
void TMult(const TMatrixT< Element > &a)
Replace this matrix with C such that C = A' * A.
 
const Int_t * GetRowIndexArray() const override
 
void Delete_m(Int_t size, Element *&)
delete data pointer m, if it was assigned on the heap
 
void Allocate(Int_t nrows, Int_t ncols, Int_t row_lwb=0, Int_t col_lwb=0, Int_t init=0, Int_t=-1)
Allocate new matrix.
 
Element * GetMatrixArray() override
 
TMatrixTSym< Element > & GetSub(Int_t row_lwb, Int_t row_upb, TMatrixTSym< Element > &target, Option_t *option="S") const
Get submatrix [row_lwb..row_upb][row_lwb..row_upb]; The indexing range of the returned matrix depends...
 
Int_t Memcpy_m(Element *newp, const Element *oldp, Int_t copySize, Int_t newSize, Int_t oldSize)
copy copySize doubles from *oldp to *newp .
 
const TMatrixT< Element > EigenVectors(TVectorT< Element > &eigenValues) const
Return a matrix containing the eigen-vectors ordered by descending eigen-values.
 
TMatrixTSym< Element > & operator-=(Element val)
Subtract val from every element of the matrix.
 
Bool_t IsSymmetric() const override
Check whether matrix is symmetric.
 
void Plus(const TMatrixTSym< Element > &a, const TMatrixTSym< Element > &b)
Symmetric matrix summation. Replace this matrix with C such that C = A + B.
 
Element fDataStack[TMatrixTBase< Element >::kSizeMax]
 
TMatrixTSym< Element > & InvertFast(Double_t *det=nullptr)
Invert the matrix and calculate its determinant.
 
TMatrixTSym< Element > & SimilarityT(const TMatrixT< Element > &n)
Calculate B^T * (*this) * B , final matrix will be (ncolsb x ncolsb) It is more efficient than applyi...
 
TMatrixTSym< Element > & Similarity(const TMatrixT< Element > &n)
Calculate B * (*this) * B^T , final matrix will be (nrowsb x nrowsb) This is a similarity transform w...
 
TMatrixTSym< Element > & operator=(const TMatrixTSym< Element > &source)
 
TMatrixTSym< Element > & SetSub(Int_t row_lwb, const TMatrixTBase< Element > &source)
Insert matrix source starting at [row_lwb][row_lwb], thereby overwriting the part [row_lwb....
 
TMatrixTBase< Element > & SetMatrixArray(const Element *data, Option_t *option="") override
Copy array data to matrix .
 
void Clear(Option_t *="") override
 
void Mult(const TMatrixTSym< Element > &a)
 
Element * fElements
data container
 
TMatrixTBase< Element > & Shift(Int_t row_shift, Int_t col_shift) override
Shift the row index by adding row_shift and the column index by adding col_shift, respectively.
 
TMatrixTBase< Element > & Apply(const TElementActionT< Element > &action) override
Apply action to each matrix element.
 
Double_t Determinant() const override
 
TMatrixTSym< Element > & Invert(Double_t *det=nullptr)
Invert the matrix and calculate its determinant Notice that the LU decomposition is used instead of B...
 
const TMatrixTSym< Element > & Use(const TMatrixTSym< Element > &a) const
 
Element operator()(Int_t rown, Int_t coln) const override
 
const Element * GetMatrixArray() const override
 
TMatrixTBase< Element > & SetRowIndexArray(Int_t *) override
 
Int_t * GetColIndexArray() override
 
TObject & operator=(const TObject &rhs)
TObject assignment operator.
 
void MayNotUse(const char *method) const
Use this method to signal that a method (defined in a base class) may not be called in a derived clas...
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
bool operator==(const RConcurrentHashColl::HashValue &lhs, const RConcurrentHashColl::HashValue &rhs)
 
TMatrixT< Element > & ElementMult(TMatrixT< Element > &target, const TMatrixT< Element > &source)
Multiply target by the source, element-by-element.
 
TMatrixT< Element > operator||(const TMatrixT< Element > &source1, const TMatrixT< Element > &source2)
Logical OR.
 
TMatrixT< Element > & Add(TMatrixT< Element > &target, Element scalar, const TMatrixT< Element > &source)
Modify addition: target += scalar * source.
 
TMatrixT< Element > & ElementDiv(TMatrixT< Element > &target, const TMatrixT< Element > &source)
Divide target by the source, element-by-element.
 
TMatrixT< Element > operator&&(const TMatrixT< Element > &source1, const TMatrixT< Element > &source2)
Logical AND.
 
Bool_t AreCompatible(const TMatrixTBase< Element1 > &m1, const TMatrixTBase< Element2 > &m2, Int_t verbose=0)
Check that matrice sm1 and m2 areboth valid and have identical shapes .