Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TMatrixTSym< Element > Class Template Reference

template<class Element>
class TMatrixTSym< Element >

TMatrixTSym.

Template class of a symmetric matrix in the linear algebra package.

See the Matrix Linear Algebra page for the documentation of the linear algebra package

Note that in this implementation both matrix element m[i][j] and m[j][i] are updated and stored in memory . However, when making the object persistent only the upper right triangle is stored .

Definition at line 34 of file TMatrixTSym.h.

Public Types

enum  { kWorkMax = 100 }
 
enum  EMatrixCreatorsOp1 {
  kZero , kUnit , kTransposed , kInverted ,
  kAtA
}
 
enum  EMatrixCreatorsOp2 { kPlus , kMinus }
 
- Public Types inherited from TObject
enum  {
  kIsOnHeap = 0x01000000 , kNotDeleted = 0x02000000 , kZombie = 0x04000000 , kInconsistent = 0x08000000 ,
  kBitMask = 0x00ffffff
}
 
enum  { kSingleKey = (1ULL << ( 0 )) , kOverwrite = (1ULL << ( 1 )) , kWriteDelete = (1ULL << ( 2 )) }
 
enum  EDeprecatedStatusBits { kObjInCanvas = (1ULL << ( 3 )) }
 
enum  EStatusBits {
  kCanDelete = (1ULL << ( 0 )) , kMustCleanup = (1ULL << ( 3 )) , kIsReferenced = (1ULL << ( 4 )) , kHasUUID = (1ULL << ( 5 )) ,
  kCannotPick = (1ULL << ( 6 )) , kNoContextMenu = (1ULL << ( 8 )) , kInvalidObject = (1ULL << ( 13 ))
}
 

Public Member Functions

 TMatrixTSym ()
 
 TMatrixTSym (const TMatrixTSym< Element > &a, EMatrixCreatorsOp2 op, const TMatrixTSym< Element > &b)
 
 TMatrixTSym (const TMatrixTSym< Element > &another)
 
template<class Element2 >
 TMatrixTSym (const TMatrixTSym< Element2 > &another)
 
 TMatrixTSym (const TMatrixTSymLazy< Element > &lazy_constructor)
 
 TMatrixTSym (EMatrixCreatorsOp1 op, const TMatrixT< Element > &prototype)
 
 TMatrixTSym (EMatrixCreatorsOp1 op, const TMatrixTSym< Element > &prototype)
 Create a matrix applying a specific operation to the prototype.
 
 TMatrixTSym (Int_t nrows)
 
 TMatrixTSym (Int_t nrows, const Element *data, Option_t *option="")
 option=
 
 TMatrixTSym (Int_t row_lwb, Int_t row_upb)
 
 TMatrixTSym (Int_t row_lwb, Int_t row_upb, const Element *data, Option_t *option="")
 array elements are copied
 
 ~TMatrixTSym () override
 
TMatrixTBase< Element > & Apply (const TElementActionT< Element > &action) override
 Apply action to each matrix element.
 
TMatrixTBase< Element > & Apply (const TElementPosActionT< Element > &action) override
 Apply action to each element of the matrix.
 
TClassClass ()
 
void Clear (Option_t *="") override
 
Double_t Determinant () const override
 
void Determinant (Double_t &d1, Double_t &d2) const override
 
const TMatrixT< Element > EigenVectors (TVectorT< Element > &eigenValues) const
 Return a matrix containing the eigen-vectors ordered by descending eigen-values.
 
const Int_tGetColIndexArray () const override
 
Int_tGetColIndexArray () override
 
const Element * GetMatrixArray () const override
 
Element * GetMatrixArray () override
 
const Int_tGetRowIndexArray () const override
 
Int_tGetRowIndexArray () override
 
TMatrixTSym< Element > GetSub (Int_t row_lwb, Int_t row_upb, Int_t col_lwb, Int_t col_upb, Option_t *option="S") const
 
TMatrixTBase< Element > & GetSub (Int_t row_lwb, Int_t row_upb, Int_t col_lwb, Int_t col_upb, TMatrixTBase< Element > &target, Option_t *option="S") const override
 Get submatrix [row_lwb..row_upb][col_lwb..col_upb]; The indexing range of the returned matrix depends on the argument option:
 
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 on the argument option:
 
TMatrixTSym< Element > & Invert (Double_t *det=nullptr)
 Invert the matrix and calculate its determinant Notice that the LU decomposition is used instead of Bunch-Kaufman Bunch-Kaufman guarantees a symmetric inverted matrix but is slower than LU .
 
TMatrixTSym< Element > & InvertFast (Double_t *det=nullptr)
 Invert the matrix and calculate its determinant.
 
TClassIsA () const override
 
Bool_t IsSymmetric () const override
 Check whether matrix is symmetric.
 
void Minus (const TMatrixTSym< Element > &a, const TMatrixTSym< Element > &b)
 Symmetric matrix summation. Create a matrix C such that C = A + B.
 
void Mult (const TMatrixTSym< Element > &a)
 
Element operator() (Int_t rown, Int_t coln) const override
 
Element & operator() (Int_t rown, Int_t coln) override
 
TMatrixTSym< Element > & operator*= (Element val)
 Multiply every element of the matrix with val.
 
TMatrixTSymoperator+= (const TMatrixTSym &source)
 Add the source matrix.
 
TMatrixTSym< Element > & operator+= (Element val)
 Add val to every element of the matrix.
 
TMatrixTSymoperator-= (const TMatrixTSym &source)
 Subtract the source matrix.
 
TMatrixTSym< Element > & operator-= (Element val)
 Subtract val from every element of the matrix.
 
TMatrixTSym< Element > & operator= (const TMatrixTSym< Element > &source)
 
template<class Element2 >
TMatrixTSym< Element > & operator= (const TMatrixTSym< Element2 > &source)
 
TMatrixTSym< Element > & operator= (const TMatrixTSymLazy< Element > &source)
 
TMatrixTSym< Element > & operator= (Element val)
 Assign val to every element of the matrix.
 
TMatrixTRow< Element > operator[] (Int_t rown)
 
const TMatrixTRow_const< Element > operator[] (Int_t rown) const
 
void Plus (const TMatrixTSym< Element > &a, const TMatrixTSym< Element > &b)
 Symmetric matrix summation. Create a matrix C such that C = A + B.
 
TMatrixTBase< Element > & Randomize (Element alpha, Element beta, Double_t &seed) override
 randomize matrix element values but keep matrix symmetric
 
virtual TMatrixTSym< Element > & RandomizePD (Element alpha, Element beta, Double_t &seed)
 randomize matrix element values but keep matrix symmetric positive definite
 
TMatrixTSym< Element > & Rank1Update (const TVectorT< Element > &v, Element alpha=1.0)
 Perform a rank 1 operation on the matrix: A += alpha * v * v^T.
 
TMatrixTBase< Element > & ResizeTo (const TMatrixTSym< Element > &m)
 
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 old ones are copied to the new structures, then the old elements are deleted.
 
TMatrixTBase< Element > & ResizeTo (Int_t row_lwb, Int_t row_upb, Int_t col_lwb, Int_t col_upb, Int_t=-1) override
 Set size of the matrix to [row_lwb:row_upb] x [col_lwb:col_upb] New dynamic elements are created, the overlapping part of the old ones are copied to the new structures, then the old elements are deleted.
 
TMatrixTBase< Element > & SetColIndexArray (Int_t *) override
 
TMatrixTBase< Element > & SetMatrixArray (const Element *data, Option_t *option="") override
 Copy array data to matrix .
 
TMatrixTBase< Element > & SetRowIndexArray (Int_t *) override
 
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..row_lwb+nrows_source][row_lwb..row_lwb+nrows_source];.
 
TMatrixTBase< Element > & SetSub (Int_t row_lwb, Int_t col_lwb, const TMatrixTBase< Element > &source) override
 Insert matrix source starting at [row_lwb][col_lwb] in a symmetric fashion, thereby overwriting the part [row_lwb..row_lwb+nrows_source][row_lwb..row_lwb+nrows_source];.
 
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.
 
TMatrixTSym< Element > & Similarity (const TMatrixT< Element > &n)
 Calculate B * (*this) * B^T , final matrix will be (nrowsb x nrowsb) This is a similarity transform when B is orthogonal .
 
TMatrixTSym< Element > & Similarity (const TMatrixTSym< Element > &n)
 Calculate B * (*this) * B^T , final matrix will be (nrowsb x nrowsb) This is a similarity transform when B is orthogonal .
 
Element Similarity (const TVectorT< Element > &v) const
 Calculate scalar v * (*this) * v^T.
 
TMatrixTSym< Element > & SimilarityT (const TMatrixT< Element > &n)
 Calculate B^T * (*this) * B , final matrix will be (ncolsb x ncolsb) It is more efficient than applying the actual multiplication because this routine realizes that the final matrix is symmetric .
 
void Streamer (TBuffer &) override
 Stream an object of class TMatrixTSym.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
TMatrixTSym< Element > & T ()
 
void TMult (const TMatrixT< Element > &a)
 Create a matrix C such that C = A' * A.
 
void TMult (const TMatrixTSym< Element > &a)
 Matrix multiplication, with A symmetric Create a matrix C such that C = A' * A = A * A = A * A'.
 
TMatrixTSym< Element > & Transpose (const TMatrixTSym< Element > &source)
 Transpose a matrix.
 
const TMatrixTSym< Element > & Use (const TMatrixTSym< Element > &a) const
 
const TMatrixTSym< Element > & Use (Int_t nrows, const Element *data) const
 
TMatrixTSym< Element > & Use (Int_t nrows, Element *data)
 
const TMatrixTSym< Element > & Use (Int_t row_lwb, Int_t row_upb, const Element *data) const
 
TMatrixTSym< Element > & Use (Int_t row_lwb, Int_t row_upb, Element *data)
 
TMatrixTSym< Element > & Use (TMatrixTSym< Element > &a)
 
- Public Member Functions inherited from TMatrixTBase< Element >
 TMatrixTBase ()
 
 ~TMatrixTBase () override
 
virtual TMatrixTBase< Element > & Abs ()
 Take an absolute value of a matrix, i.e. apply Abs() to each element.
 
TClassClass ()
 
virtual Element ColNorm () const
 Column matrix norm, MAX{ SUM{ |M(i,j)|, over i}, over j}.
 
void Draw (Option_t *option="") override
 Draw this matrix The histogram is named "TMatrixT" by default and no title.
 
virtual Element E2Norm () const
 Square of the Euclidean norm, SUM{ m(i,j)^2 }.
 
virtual void ExtractRow (Int_t row, Int_t col, Element *v, Int_t n=-1) const
 Store in array v, n matrix elements of row rown starting at column coln.
 
Int_t GetColLwb () const
 
Int_t GetColUpb () const
 
virtual void GetMatrix2Array (Element *data, Option_t *option="") const
 Copy matrix data to array .
 
Int_t GetNcols () const
 
Int_t GetNoElements () const
 
Int_t GetNrows () const
 
Int_t GetRowLwb () const
 
Int_t GetRowUpb () const
 
Element GetTol () const
 
virtual TMatrixTBase< Element > & InsertRow (Int_t row, Int_t col, const Element *v, Int_t n=-1)
 Copy n elements from array v to row rown starting at column coln.
 
void Invalidate ()
 
Bool_t IsOwner () const
 
Bool_t IsValid () const
 
void MakeValid ()
 
virtual Element Max () const
 return maximum vector element value
 
virtual Element Min () const
 return minimum matrix element value
 
virtual Int_t NonZeros () const
 Compute the number of elements != 0.0.
 
Element Norm1 () const
 
virtual TMatrixTBase< Element > & NormByDiag (const TVectorT< Element > &v, Option_t *option="D")
 option:
 
Element NormInf () const
 
Bool_t operator!= (Element val) const
 Are all matrix elements not equal to val?
 
Bool_t operator< (Element val) const
 Are all matrix elements < val?
 
Bool_t operator<= (Element val) const
 Are all matrix elements <= val?
 
Bool_t operator== (Element val) const
 Are all matrix elements equal to val?
 
Bool_t operator> (Element val) const
 Are all matrix elements > val?
 
Bool_t operator>= (Element val) const
 Are all matrix elements >= val?
 
void Print (Option_t *name="") const override
 Print the matrix as a table of elements.
 
virtual Element RowNorm () const
 Row matrix norm, MAX{ SUM{ |M(i,j)|, over j}, over i}.
 
Element SetTol (Element tol)
 
virtual TMatrixTBase< Element > & Sqr ()
 Square each element of the matrix.
 
virtual TMatrixTBase< Element > & Sqrt ()
 Take square root of all elements.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
virtual Element Sum () const
 Compute sum of elements.
 
virtual TMatrixTBase< Element > & UnitMatrix ()
 Make a unit matrix (matrix need not be a square one).
 
virtual TMatrixTBase< Element > & Zero ()
 Set matrix elements to zero.
 
- Public Member Functions inherited from TObject
 TObject ()
 TObject constructor.
 
 TObject (const TObject &object)
 TObject copy ctor.
 
virtual ~TObject ()
 TObject destructor.
 
void AbstractMethod (const char *method) const
 Use this method to implement an "abstract" method that you don't want to leave purely abstract.
 
virtual void AppendPad (Option_t *option="")
 Append graphics object to current pad.
 
virtual void Browse (TBrowser *b)
 Browse object. May be overridden for another default action.
 
ULong_t CheckedHash ()
 Check and record whether this class has a consistent Hash/RecursiveRemove setup (*) and then return the regular Hash value for this object.
 
virtual const char * ClassName () const
 Returns name of class to which the object belongs.
 
virtual TObjectClone (const char *newname="") const
 Make a clone of an object using the Streamer facility.
 
virtual Int_t Compare (const TObject *obj) const
 Compare abstract method.
 
virtual void Copy (TObject &object) const
 Copy this to obj.
 
virtual void Delete (Option_t *option="")
 Delete this object.
 
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
 Computes distance from point (px,py) to the object.
 
virtual void DrawClass () const
 Draw class inheritance tree of the class to which this object belongs.
 
virtual TObjectDrawClone (Option_t *option="") const
 Draw a clone of this object in the current selected pad with: gROOT->SetSelectedPad(c1).
 
virtual void Dump () const
 Dump contents of object on stdout.
 
virtual void Error (const char *method, const char *msgfmt,...) const
 Issue error message.
 
virtual void Execute (const char *method, const char *params, Int_t *error=nullptr)
 Execute method on this object with the given parameter string, e.g.
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=nullptr)
 Execute method on this object with parameters stored in the TObjArray.
 
virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
 Execute action corresponding to an event at (px,py).
 
virtual void Fatal (const char *method, const char *msgfmt,...) const
 Issue fatal error message.
 
virtual TObjectFindObject (const char *name) const
 Must be redefined in derived classes.
 
virtual TObjectFindObject (const TObject *obj) const
 Must be redefined in derived classes.
 
virtual Option_tGetDrawOption () const
 Get option used by the graphics system to draw this object.
 
virtual const char * GetIconName () const
 Returns mime type name of object.
 
virtual const char * GetName () const
 Returns name of object.
 
virtual char * GetObjectInfo (Int_t px, Int_t py) const
 Returns string containing info about the object at position (px,py).
 
virtual Option_tGetOption () const
 
virtual const char * GetTitle () const
 Returns title of object.
 
virtual UInt_t GetUniqueID () const
 Return the unique object id.
 
virtual Bool_t HandleTimer (TTimer *timer)
 Execute action in response of a timer timing out.
 
virtual ULong_t Hash () const
 Return hash value for this object.
 
Bool_t HasInconsistentHash () const
 Return true is the type of this object is known to have an inconsistent setup for Hash and RecursiveRemove (i.e.
 
virtual void Info (const char *method, const char *msgfmt,...) const
 Issue info message.
 
virtual Bool_t InheritsFrom (const char *classname) const
 Returns kTRUE if object inherits from class "classname".
 
virtual Bool_t InheritsFrom (const TClass *cl) const
 Returns kTRUE if object inherits from TClass cl.
 
virtual void Inspect () const
 Dump contents of this object in a graphics canvas.
 
void InvertBit (UInt_t f)
 
Bool_t IsDestructed () const
 IsDestructed.
 
virtual Bool_t IsEqual (const TObject *obj) const
 Default equal comparison (objects are equal if they have the same address in memory).
 
virtual Bool_t IsFolder () const
 Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
 
R__ALWAYS_INLINE Bool_t IsOnHeap () const
 
virtual Bool_t IsSortable () const
 
R__ALWAYS_INLINE Bool_t IsZombie () const
 
virtual void ls (Option_t *option="") const
 The ls function lists the contents of a class on stdout.
 
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 class (in principle against good design since a child class should not provide less functionality than its parent, however, sometimes it is necessary).
 
virtual Bool_t Notify ()
 This method must be overridden to handle object notification (the base implementation is no-op).
 
void Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const
 Use this method to declare a method obsolete.
 
void operator delete (void *ptr)
 Operator delete.
 
void operator delete[] (void *ptr)
 Operator delete [].
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, void *vp)
 
void * operator new[] (size_t sz)
 
void * operator new[] (size_t sz, void *vp)
 
TObjectoperator= (const TObject &rhs)
 TObject assignment operator.
 
virtual void Paint (Option_t *option="")
 This method must be overridden if a class wants to paint itself.
 
virtual void Pop ()
 Pop on object drawn in a pad to the top of the display list.
 
virtual Int_t Read (const char *name)
 Read contents of object with specified name from the current directory.
 
virtual void RecursiveRemove (TObject *obj)
 Recursively remove this object from a list.
 
void ResetBit (UInt_t f)
 
virtual void SaveAs (const char *filename="", Option_t *option="") const
 Save this object in the file specified by filename.
 
virtual void SavePrimitive (std::ostream &out, Option_t *option="")
 Save a primitive as a C++ statement(s) on output stream "out".
 
void SetBit (UInt_t f)
 
void SetBit (UInt_t f, Bool_t set)
 Set or unset the user status bits as specified in f.
 
virtual void SetDrawOption (Option_t *option="")
 Set drawing option for object.
 
virtual void SetUniqueID (UInt_t uid)
 Set the unique object id.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
virtual void SysError (const char *method, const char *msgfmt,...) const
 Issue system error message.
 
R__ALWAYS_INLINE Bool_t TestBit (UInt_t f) const
 
Int_t TestBits (UInt_t f) const
 
virtual void UseCurrentStyle ()
 Set current style settings in this object This function is called when either TCanvas::UseCurrentStyle or TROOT::ForceStyle have been invoked.
 
virtual void Warning (const char *method, const char *msgfmt,...) const
 Issue warning message.
 
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
 Write this object to the current directory.
 
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const
 Write this object to the current directory.
 

Static Public Member Functions

static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
- Static Public Member Functions inherited from TMatrixTBase< Element >
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
static Element & NaNValue ()
 
- Static Public Member Functions inherited from TObject
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
static Longptr_t GetDtorOnly ()
 Return destructor only flag.
 
static Bool_t GetObjectStat ()
 Get status of object stat flag.
 
static void SetDtorOnly (void *obj)
 Set destructor only flag.
 
static void SetObjectStat (Bool_t stat)
 Turn on/off tracking of objects in the TObjectTable.
 

Protected Member Functions

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.
 
void Delete_m (Int_t size, Element *&)
 delete data pointer m, if it was assigned on the heap
 
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 .
 
Element * New_m (Int_t size)
 return data pointer .
 
- Protected Member Functions inherited from TObject
virtual void DoError (int level, const char *location, const char *fmt, va_list va) const
 Interface to ErrorHandler (protected).
 
void MakeZombie ()
 

Protected Attributes

Element fDataStack [TMatrixTBase< Element >::kSizeMax]
 
Element * fElements
 data container
 
- Protected Attributes inherited from TMatrixTBase< Element >
Int_t fColLwb
 
Bool_t fIsOwner
 
Int_t fNcols
 
Int_t fNelems
 
Int_t fNrowIndex
 
Int_t fNrows
 
Int_t fRowLwb
 
Element fTol
 

Additional Inherited Members

- Protected Types inherited from TMatrixTBase< Element >
enum  { kSizeMax = 25 }
 
enum  { kWorkMax = 100 }
 
enum  EMatrixStatusBits { kStatus = (1ULL << ( 14 )) }
 
- Protected Types inherited from TObject
enum  { kOnlyPrepStep = (1ULL << ( 3 )) }
 
- Static Protected Member Functions inherited from TMatrixTBase< Element >
static void DoubleLexSort (Int_t n, Int_t *first, Int_t *second, Element *data)
 default kTRUE, when Use array kFALSE
 
static void IndexedLexSort (Int_t n, Int_t *first, Int_t swapFirst, Int_t *second, Int_t swapSecond, Int_t *index)
 Lexical sort on array data using indices first and second.
 

#include <TMatrixTSym.h>

Inheritance diagram for TMatrixTSym< Element >:
[legend]

Member Enumeration Documentation

◆ anonymous enum

template<class Element >
anonymous enum
Enumerator
kWorkMax 

Definition at line 50 of file TMatrixTSym.h.

◆ EMatrixCreatorsOp1

template<class Element >
enum TMatrixTSym::EMatrixCreatorsOp1
Enumerator
kZero 
kUnit 
kTransposed 
kInverted 
kAtA 

Definition at line 51 of file TMatrixTSym.h.

◆ EMatrixCreatorsOp2

template<class Element >
enum TMatrixTSym::EMatrixCreatorsOp2
Enumerator
kPlus 
kMinus 

Definition at line 52 of file TMatrixTSym.h.

Constructor & Destructor Documentation

◆ TMatrixTSym() [1/11]

template<class Element >
TMatrixTSym< Element >::TMatrixTSym ( )
inline

Definition at line 54 of file TMatrixTSym.h.

◆ TMatrixTSym() [2/11]

template<class Element >
TMatrixTSym< Element >::TMatrixTSym ( Int_t  nrows)
explicit

Definition at line 41 of file TMatrixTSym.cxx.

◆ TMatrixTSym() [3/11]

template<class Element >
TMatrixTSym< Element >::TMatrixTSym ( Int_t  row_lwb,
Int_t  row_upb 
)

Definition at line 49 of file TMatrixTSym.cxx.

◆ TMatrixTSym() [4/11]

template<class Element >
TMatrixTSym< Element >::TMatrixTSym ( Int_t  no_rows,
const Element *  elements,
Option_t option = "" 
)

option=

  • "F": array elements contains the matrix stored column-wise like in Fortran, so a[i,j] = elements[i+no_rows*j],
  • else it is supposed that array elements are stored row-wise a[i,j] = elements[i*no_cols+j]

array elements are copied

Definition at line 65 of file TMatrixTSym.cxx.

◆ TMatrixTSym() [5/11]

template<class Element >
TMatrixTSym< Element >::TMatrixTSym ( Int_t  row_lwb,
Int_t  row_upb,
const Element *  data,
Option_t option = "" 
)

array elements are copied

Definition at line 78 of file TMatrixTSym.cxx.

◆ TMatrixTSym() [6/11]

template<class Element >
TMatrixTSym< Element >::TMatrixTSym ( const TMatrixTSym< Element > &  another)

Definition at line 91 of file TMatrixTSym.cxx.

◆ TMatrixTSym() [7/11]

template<class Element >
template<class Element2 >
TMatrixTSym< Element >::TMatrixTSym ( const TMatrixTSym< Element2 > &  another)
inline

Definition at line 60 of file TMatrixTSym.h.

◆ TMatrixTSym() [8/11]

template<class Element >
TMatrixTSym< Element >::TMatrixTSym ( EMatrixCreatorsOp1  op,
const TMatrixTSym< Element > &  prototype 
)

Create a matrix applying a specific operation to the prototype.

Example: TMatrixTSym<Element> a(10,12); ...; TMatrixTSym<Element> b(TMatrixT::kTransposed, a); Supported operations are: kZero, kUnit, kTransposed, kInverted and kAtA.

Definition at line 104 of file TMatrixTSym.cxx.

◆ TMatrixTSym() [9/11]

template<class Element >
TMatrixTSym< Element >::TMatrixTSym ( EMatrixCreatorsOp1  op,
const TMatrixT< Element > &  prototype 
)

Definition at line 153 of file TMatrixTSym.cxx.

◆ TMatrixTSym() [10/11]

template<class Element >
TMatrixTSym< Element >::TMatrixTSym ( const TMatrixTSym< Element > &  a,
EMatrixCreatorsOp2  op,
const TMatrixTSym< Element > &  b 
)

Definition at line 172 of file TMatrixTSym.cxx.

◆ TMatrixTSym() [11/11]

template<class Element >
TMatrixTSym< Element >::TMatrixTSym ( const TMatrixTSymLazy< Element > &  lazy_constructor)

Definition at line 200 of file TMatrixTSym.cxx.

◆ ~TMatrixTSym()

template<class Element >
TMatrixTSym< Element >::~TMatrixTSym ( )
inlineoverride

Definition at line 72 of file TMatrixTSym.h.

Member Function Documentation

◆ Allocate()

template<class Element >
void TMatrixTSym< Element >::Allocate ( Int_t  no_rows,
Int_t  no_cols,
Int_t  row_lwb = 0,
Int_t  col_lwb = 0,
Int_t  init = 0,
Int_t  = -1 
)
protected

Allocate new matrix.

Arguments are number of rows, columns, row lowerbound (0 default) and column lowerbound (0 default).

Definition at line 274 of file TMatrixTSym.cxx.

◆ Apply() [1/2]

template<class Element >
TMatrixTBase< Element > & TMatrixTSym< Element >::Apply ( const TElementActionT< Element > &  action)
overridevirtual

Apply action to each matrix element.

Reimplemented from TMatrixTBase< Element >.

Definition at line 1553 of file TMatrixTSym.cxx.

◆ Apply() [2/2]

template<class Element >
TMatrixTBase< Element > & TMatrixTSym< Element >::Apply ( const TElementPosActionT< Element > &  action)
overridevirtual

Apply action to each element of the matrix.

To action the location of the current element is passed.

Reimplemented from TMatrixTBase< Element >.

Definition at line 1580 of file TMatrixTSym.cxx.

◆ Class() [1/2]

template<class Element >
static TClass * TMatrixTSym< Element >::Class ( )
static
Returns
TClass describing this class

◆ Class() [2/2]

TClass * TMatrixTSym< double >::Class ( )

◆ Class_Name()

template<class Element >
static const char * TMatrixTSym< Element >::Class_Name ( )
static
Returns
Name of this class

◆ Class_Version()

template<class Element >
static constexpr Version_t TMatrixTSym< Element >::Class_Version ( )
inlinestaticconstexpr
Returns
Version of this class

Definition at line 176 of file TMatrixTSym.h.

◆ Clear()

template<class Element >
void TMatrixTSym< Element >::Clear ( Option_t = "")
inlineoverridevirtual

Implements TMatrixTBase< Element >.

Definition at line 92 of file TMatrixTSym.h.

◆ DeclFileName()

template<class Element >
static const char * TMatrixTSym< Element >::DeclFileName ( )
inlinestatic
Returns
Name of the file containing the class declaration

Definition at line 176 of file TMatrixTSym.h.

◆ Delete_m()

template<class Element >
void TMatrixTSym< Element >::Delete_m ( Int_t  size,
Element *&  m 
)
protected

delete data pointer m, if it was assigned on the heap

Definition at line 215 of file TMatrixTSym.cxx.

◆ Determinant() [1/2]

template<class Element >
Double_t TMatrixTSym< Element >::Determinant
overridevirtual

Reimplemented from TMatrixTBase< Element >.

Definition at line 935 of file TMatrixTSym.cxx.

◆ Determinant() [2/2]

template<class Element >
void TMatrixTSym< Element >::Determinant ( Double_t d1,
Double_t d2 
) const
overridevirtual

Reimplemented from TMatrixTBase< Element >.

Definition at line 947 of file TMatrixTSym.cxx.

◆ EigenVectors()

template<class Element >
const TMatrixT< Element > TMatrixTSym< Element >::EigenVectors ( TVectorT< Element > &  eigenValues) const

Return a matrix containing the eigen-vectors ordered by descending eigen-values.

For full functionality use TMatrixDSymEigen .

Definition at line 1681 of file TMatrixTSym.cxx.

◆ GetColIndexArray() [1/2]

template<class Element >
const Int_t * TMatrixTSym< Element >::GetColIndexArray ( ) const
inlineoverridevirtual

Implements TMatrixTBase< Element >.

Definition at line 86 of file TMatrixTSym.h.

◆ GetColIndexArray() [2/2]

template<class Element >
Int_t * TMatrixTSym< Element >::GetColIndexArray ( )
inlineoverridevirtual

Implements TMatrixTBase< Element >.

Definition at line 87 of file TMatrixTSym.h.

◆ GetMatrixArray() [1/2]

template<class Element >
const Element * TMatrixTSym< Element >::GetMatrixArray
inlineoverridevirtual

Implements TMatrixTBase< Element >.

Definition at line 189 of file TMatrixTSym.h.

◆ GetMatrixArray() [2/2]

template<class Element >
Element * TMatrixTSym< Element >::GetMatrixArray
inlineoverridevirtual

Implements TMatrixTBase< Element >.

Definition at line 190 of file TMatrixTSym.h.

◆ GetRowIndexArray() [1/2]

template<class Element >
const Int_t * TMatrixTSym< Element >::GetRowIndexArray ( ) const
inlineoverridevirtual

Implements TMatrixTBase< Element >.

Definition at line 84 of file TMatrixTSym.h.

◆ GetRowIndexArray() [2/2]

template<class Element >
Int_t * TMatrixTSym< Element >::GetRowIndexArray ( )
inlineoverridevirtual

Implements TMatrixTBase< Element >.

Definition at line 85 of file TMatrixTSym.h.

◆ GetSub() [1/3]

template<class Element >
TMatrixTSym< Element > TMatrixTSym< Element >::GetSub ( Int_t  row_lwb,
Int_t  row_upb,
Int_t  col_lwb,
Int_t  col_upb,
Option_t option = "S" 
) const
inline

Definition at line 200 of file TMatrixTSym.h.

◆ GetSub() [2/3]

template<class Element >
TMatrixTBase< Element > & TMatrixTSym< Element >::GetSub ( Int_t  row_lwb,
Int_t  row_upb,
Int_t  col_lwb,
Int_t  col_upb,
TMatrixTBase< Element > &  target,
Option_t option = "S" 
) const
overridevirtual

Get submatrix [row_lwb..row_upb][col_lwb..col_upb]; The indexing range of the returned matrix depends on the argument option:

option == "S" : return [0..row_upb-row_lwb+1][0..col_upb-col_lwb+1] (default) else : return [row_lwb..row_upb][col_lwb..col_upb]

Implements TMatrixTBase< Element >.

Definition at line 569 of file TMatrixTSym.cxx.

◆ GetSub() [3/3]

template<class Element >
TMatrixTSym< Element > & 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 on the argument option:

option == "S" : return [0..row_upb-row_lwb+1][0..row_upb-row_lwb+1] (default) else : return [row_lwb..row_upb][row_lwb..row_upb]

Definition at line 503 of file TMatrixTSym.cxx.

◆ Invert()

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::Invert ( Double_t det = nullptr)

Invert the matrix and calculate its determinant Notice that the LU decomposition is used instead of Bunch-Kaufman Bunch-Kaufman guarantees a symmetric inverted matrix but is slower than LU .

The user can access Bunch-Kaufman through the TDecompBK class .

Definition at line 961 of file TMatrixTSym.cxx.

◆ InvertFast()

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::InvertFast ( Double_t det = nullptr)

Invert the matrix and calculate its determinant.

Definition at line 979 of file TMatrixTSym.cxx.

◆ IsA()

template<class Element >
TClass * TMatrixTSym< Element >::IsA ( ) const
inlineoverridevirtual
Returns
TClass describing current object

Reimplemented from TMatrixTBase< Element >.

Definition at line 176 of file TMatrixTSym.h.

◆ IsSymmetric()

template<class Element >
Bool_t TMatrixTSym< Element >::IsSymmetric ( ) const
inlineoverridevirtual

Check whether matrix is symmetric.

Reimplemented from TMatrixTBase< Element >.

Definition at line 95 of file TMatrixTSym.h.

◆ Memcpy_m()

template<class Element >
Int_t TMatrixTSym< Element >::Memcpy_m ( Element *  newp,
const Element *  oldp,
Int_t  copySize,
Int_t  newSize,
Int_t  oldSize 
)
protected

copy copySize doubles from *oldp to *newp .

However take care of the situation where both pointers are assigned to the same stack space

Definition at line 247 of file TMatrixTSym.cxx.

◆ Minus()

template<class Element >
void TMatrixTSym< Element >::Minus ( const TMatrixTSym< Element > &  a,
const TMatrixTSym< Element > &  b 
)

Symmetric matrix summation. Create a matrix C such that C = A + B.

Definition at line 346 of file TMatrixTSym.cxx.

◆ Mult()

template<class Element >
void TMatrixTSym< Element >::Mult ( const TMatrixTSym< Element > &  a)
inline

Definition at line 77 of file TMatrixTSym.h.

◆ New_m()

template<class Element >
Element * TMatrixTSym< Element >::New_m ( Int_t  size)
protected

return data pointer .

if requested size <= kSizeMax, assign pointer to the stack space

Definition at line 229 of file TMatrixTSym.cxx.

◆ operator()() [1/2]

template<class Element >
Element TMatrixTSym< Element >::operator() ( Int_t  rown,
Int_t  coln 
) const
inlineoverridevirtual

Implements TMatrixTBase< Element >.

Definition at line 208 of file TMatrixTSym.h.

◆ operator()() [2/2]

template<class Element >
Element & TMatrixTSym< Element >::operator() ( Int_t  rown,
Int_t  coln 
)
inlineoverridevirtual

Implements TMatrixTBase< Element >.

Definition at line 224 of file TMatrixTSym.h.

◆ operator*=()

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::operator*= ( Element  val)

Multiply every element of the matrix with val.

Definition at line 1498 of file TMatrixTSym.cxx.

◆ operator+=() [1/2]

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::operator+= ( const TMatrixTSym< Element > &  source)

Add the source matrix.

Definition at line 1514 of file TMatrixTSym.cxx.

◆ operator+=() [2/2]

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::operator+= ( Element  val)

Add val to every element of the matrix.

Definition at line 1466 of file TMatrixTSym.cxx.

◆ operator-=() [1/2]

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::operator-= ( const TMatrixTSym< Element > &  source)

Subtract the source matrix.

Definition at line 1534 of file TMatrixTSym.cxx.

◆ operator-=() [2/2]

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::operator-= ( Element  val)

Subtract val from every element of the matrix.

Definition at line 1482 of file TMatrixTSym.cxx.

◆ operator=() [1/4]

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::operator= ( const TMatrixTSym< Element > &  source)

Definition at line 1414 of file TMatrixTSym.cxx.

◆ operator=() [2/4]

template<class Element >
template<class Element2 >
TMatrixTSym< Element > & TMatrixTSym< Element >::operator= ( const TMatrixTSym< Element2 > &  source)
inline

Definition at line 144 of file TMatrixTSym.h.

◆ operator=() [3/4]

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::operator= ( const TMatrixTSymLazy< Element > &  source)

Definition at line 1431 of file TMatrixTSym.cxx.

◆ operator=() [4/4]

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::operator= ( Element  val)

Assign val to every element of the matrix.

Definition at line 1450 of file TMatrixTSym.cxx.

◆ operator[]() [1/2]

template<class Element >
TMatrixTRow< Element > TMatrixTSym< Element >::operator[] ( Int_t  rown)
inline

Definition at line 140 of file TMatrixTSym.h.

◆ operator[]() [2/2]

template<class Element >
const TMatrixTRow_const< Element > TMatrixTSym< Element >::operator[] ( Int_t  rown) const
inline

Definition at line 139 of file TMatrixTSym.h.

◆ Plus()

template<class Element >
void TMatrixTSym< Element >::Plus ( const TMatrixTSym< Element > &  a,
const TMatrixTSym< Element > &  b 
)

Symmetric matrix summation. Create a matrix C such that C = A + B.

Definition at line 312 of file TMatrixTSym.cxx.

◆ Randomize()

template<class Element >
TMatrixTBase< Element > & TMatrixTSym< Element >::Randomize ( Element  alpha,
Element  beta,
Double_t seed 
)
overridevirtual

randomize matrix element values but keep matrix symmetric

Reimplemented from TMatrixTBase< Element >.

Definition at line 1608 of file TMatrixTSym.cxx.

◆ RandomizePD()

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::RandomizePD ( Element  alpha,
Element  beta,
Double_t seed 
)
virtual

randomize matrix element values but keep matrix symmetric positive definite

Definition at line 1639 of file TMatrixTSym.cxx.

◆ Rank1Update()

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::Rank1Update ( const TVectorT< Element > &  v,
Element  alpha = 1.0 
)

Perform a rank 1 operation on the matrix: A += alpha * v * v^T.

Definition at line 1063 of file TMatrixTSym.cxx.

◆ ResizeTo() [1/3]

template<class Element >
TMatrixTBase< Element > & TMatrixTSym< Element >::ResizeTo ( const TMatrixTSym< Element > &  m)
inline

Definition at line 118 of file TMatrixTSym.h.

◆ ResizeTo() [2/3]

template<class Element >
TMatrixTBase< Element > & TMatrixTSym< Element >::ResizeTo ( Int_t  nrows,
Int_t  ncols,
Int_t  = -1 
)
overridevirtual

Set size of the matrix to nrows x ncols New dynamic elements are created, the overlapping part of the old ones are copied to the new structures, then the old elements are deleted.

Implements TMatrixTBase< Element >.

Definition at line 771 of file TMatrixTSym.cxx.

◆ ResizeTo() [3/3]

template<class Element >
TMatrixTBase< Element > & TMatrixTSym< Element >::ResizeTo ( Int_t  row_lwb,
Int_t  row_upb,
Int_t  col_lwb,
Int_t  col_upb,
Int_t  = -1 
)
overridevirtual

Set size of the matrix to [row_lwb:row_upb] x [col_lwb:col_upb] New dynamic elements are created, the overlapping part of the old ones are copied to the new structures, then the old elements are deleted.

Implements TMatrixTBase< Element >.

Definition at line 841 of file TMatrixTSym.cxx.

◆ SetColIndexArray()

template<class Element >
TMatrixTBase< Element > & TMatrixTSym< Element >::SetColIndexArray ( Int_t )
inlineoverridevirtual

Implements TMatrixTBase< Element >.

Definition at line 90 of file TMatrixTSym.h.

◆ SetMatrixArray()

template<class Element >
TMatrixTBase< Element > & TMatrixTSym< Element >::SetMatrixArray ( const Element *  data,
Option_t option = "" 
)
overridevirtual

Copy array data to matrix .

It is assumed that array is of size >= fNelems (=)))) fNrows*fNcols option indicates how the data is stored in the array: option =

  • 'F' : column major (Fortran) m[i][j] = array[i+j*fNrows]
  • else : row major (C) m[i][j] = array[i*fNcols+j] (default)

Reimplemented from TMatrixTBase< Element >.

Definition at line 743 of file TMatrixTSym.cxx.

◆ SetRowIndexArray()

template<class Element >
TMatrixTBase< Element > & TMatrixTSym< Element >::SetRowIndexArray ( Int_t )
inlineoverridevirtual

Implements TMatrixTBase< Element >.

Definition at line 89 of file TMatrixTSym.h.

◆ SetSub() [1/2]

template<class Element >
TMatrixTSym< Element > & 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..row_lwb+nrows_source][row_lwb..row_lwb+nrows_source];.

Definition at line 636 of file TMatrixTSym.cxx.

◆ SetSub() [2/2]

template<class Element >
TMatrixTBase< Element > & TMatrixTSym< Element >::SetSub ( Int_t  row_lwb,
Int_t  col_lwb,
const TMatrixTBase< Element > &  source 
)
overridevirtual

Insert matrix source starting at [row_lwb][col_lwb] in a symmetric fashion, thereby overwriting the part [row_lwb..row_lwb+nrows_source][row_lwb..row_lwb+nrows_source];.

Implements TMatrixTBase< Element >.

Definition at line 686 of file TMatrixTSym.cxx.

◆ Shift()

template<class Element >
TMatrixTBase< Element > & TMatrixTSym< Element >::Shift ( Int_t  row_shift,
Int_t  col_shift 
)
overridevirtual

Shift the row index by adding row_shift and the column index by adding col_shift, respectively.

So [rowLwb..rowUpb][colLwb..colUpb] becomes [rowLwb+row_shift..rowUpb+row_shift][colLwb+col_shift..colUpb+col_shift]

Reimplemented from TMatrixTBase< Element >.

Definition at line 756 of file TMatrixTSym.cxx.

◆ Similarity() [1/3]

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::Similarity ( const TMatrixT< Element > &  b)

Calculate B * (*this) * B^T , final matrix will be (nrowsb x nrowsb) This is a similarity transform when B is orthogonal .

It is more efficient than applying the actual multiplication because this routine realizes that the final matrix is symmetric .

Definition at line 1099 of file TMatrixTSym.cxx.

◆ Similarity() [2/3]

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::Similarity ( const TMatrixTSym< Element > &  b)

Calculate B * (*this) * B^T , final matrix will be (nrowsb x nrowsb) This is a similarity transform when B is orthogonal .

It is more efficient than applying the actual multiplication because this routine realizes that the final matrix is symmetric .

Definition at line 1190 of file TMatrixTSym.cxx.

◆ Similarity() [3/3]

template<class Element >
Element TMatrixTSym< Element >::Similarity ( const TVectorT< Element > &  v) const

Calculate scalar v * (*this) * v^T.

Definition at line 1292 of file TMatrixTSym.cxx.

◆ SimilarityT()

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::SimilarityT ( const TMatrixT< Element > &  n)

Calculate B^T * (*this) * B , final matrix will be (ncolsb x ncolsb) It is more efficient than applying the actual multiplication because this routine realizes that the final matrix is symmetric .

Definition at line 1327 of file TMatrixTSym.cxx.

◆ Streamer()

template<class Element >
void TMatrixTSym< Element >::Streamer ( TBuffer R__b)
overridevirtual

Stream an object of class TMatrixTSym.

Reimplemented from TMatrixTBase< Element >.

Definition at line 2037 of file TMatrixTSym.cxx.

◆ StreamerNVirtual()

template<class Element >
void TMatrixTSym< Element >::StreamerNVirtual ( TBuffer ClassDef_StreamerNVirtual_b)
inline

Definition at line 176 of file TMatrixTSym.h.

◆ T()

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::T ( )
inline

Definition at line 127 of file TMatrixTSym.h.

◆ TMult() [1/2]

template<class Element >
void TMatrixTSym< Element >::TMult ( const TMatrixT< Element > &  a)

Create a matrix C such that C = A' * A.

In other words, c[i,j] = SUM{ a[k,i] * a[k,j] }.

Definition at line 381 of file TMatrixTSym.cxx.

◆ TMult() [2/2]

template<class Element >
void TMatrixTSym< Element >::TMult ( const TMatrixTSym< Element > &  a)

Matrix multiplication, with A symmetric Create a matrix C such that C = A' * A = A * A = A * A'.

Definition at line 429 of file TMatrixTSym.cxx.

◆ Transpose()

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::Transpose ( const TMatrixTSym< Element > &  source)

Transpose a matrix.

Definition at line 1041 of file TMatrixTSym.cxx.

◆ Use() [1/6]

template<class Element >
const TMatrixTSym< Element > & TMatrixTSym< Element >::Use ( const TMatrixTSym< Element > &  a) const
inline

Definition at line 197 of file TMatrixTSym.h.

◆ Use() [2/6]

template<class Element >
const TMatrixTSym< Element > & TMatrixTSym< Element >::Use ( Int_t  nrows,
const Element *  data 
) const
inline

Definition at line 193 of file TMatrixTSym.h.

◆ Use() [3/6]

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::Use ( Int_t  nrows,
Element *  data 
)
inline

Definition at line 192 of file TMatrixTSym.h.

◆ Use() [4/6]

template<class Element >
const TMatrixTSym< Element > & TMatrixTSym< Element >::Use ( Int_t  row_lwb,
Int_t  row_upb,
const Element *  data 
) const
inline

Definition at line 98 of file TMatrixTSym.h.

◆ Use() [5/6]

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::Use ( Int_t  row_lwb,
Int_t  row_upb,
Element *  data 
)

Definition at line 475 of file TMatrixTSym.cxx.

◆ Use() [6/6]

template<class Element >
TMatrixTSym< Element > & TMatrixTSym< Element >::Use ( TMatrixTSym< Element > &  a)
inline

Definition at line 195 of file TMatrixTSym.h.

Member Data Documentation

◆ fDataStack

template<class Element >
Element TMatrixTSym< Element >::fDataStack[TMatrixTBase< Element >::kSizeMax]
protected

Definition at line 38 of file TMatrixTSym.h.

◆ fElements

template<class Element >
Element* TMatrixTSym< Element >::fElements
protected

data container

Definition at line 39 of file TMatrixTSym.h.

  • math/matrix/inc/TMatrixDSymfwd.h
  • math/matrix/inc/TMatrixTSym.h
  • math/matrix/src/TMatrixTSym.cxx