TMatrix as vector

From: Eddy Offermann (eddy@rentec.com)
Date: Fri Mar 03 2000 - 19:32:18 MET


Hi Nicolas,

As you probably know, you can apply operations on the TMatrix (and TVector)
through a class derived from TElementPosAction. So here two classes
that allow you fill and extract from a TMatrix:

class FillMatrix : public TElementPosAction
{
  Int_t    fnrCols;
  Double_t *fArray;
  inline void Operation(Double_t &element) { element = fArray[fI*fnrCols+fJ]; }
public:
  FillMatrix(const TMatrix &m, TArrayD &a) :
    fnrCols(m.GetNcols()) { fArray=a.GetArray(); }
};

class ExtractMatrix : public TElementPosAction
{
  Int_t     fno_cols;
  Double_t *fArray;
  inline void Operation(Double_t &element) { fArray[fI*fno_cols+fJ] = element; }
public:
  ExtractMatrix(const TMatrix &m,Double_t *a) :
    fno_cols(m.GetNcols()) { fArray=a; }
};

   :
   TArrayD corr(...);
   FillMatrix f(x,corr.GetArray());
   x.Apply(f);
   :
   :
   :
   TArrayD nrho(...);
   ExtractMatrix e(x,nrho.GetArray());
   x.Apply(e);
   :

To the ROOT team:
1) could you please please make the TMatrix and
TVector elements Double_t, all it takes is a global Real_t to Double_t in

MATRIX_Matrix.cxx        MATRIX_Vector.cxx        TMatrixUtils.h
MATRIX_MatrixUtils.cxx   TMatrix.h                TVector.h

In my version, I did it and it works fine.

2) Getting access to and filling of TMatrix/TVector with pointers like
in TArray (GetArray() ..) would be helpful too.

Eddy



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:20 MET