ROOT logo
/////////////////////////////////////////////////////////////////////////
//
// class for symmetric matrix
// R.Schicker 15-May-00
//
/////////////////////////////////////////////////////////////////////////
#ifndef HSYMMAT_H
#define HSYMMAT_H
using namespace std;
#include "TObject.h"
#include "TArrayF.h"
#include <iostream> 
#include <iomanip>

class HSymMat : public TObject {
protected:
  Float_t *pData;   //! Matrix elements
  Int_t size;
  Int_t dim;

  HSymMat(Int_t dim);
  Int_t getLinear(Int_t i,Int_t j) const {
    return (i<j)?(i*(2*dim-i-1))/2+j:(j*(2*dim-j-1))/2+i;
  }
public:
  HSymMat(void);
  ~HSymMat(void);

  void Clear(void);

  inline Float_t &operator()(Int_t i,Int_t j);
  void setElement(const Int_t,const Float_t);
  void setElement(const Int_t,const Int_t,const Float_t);
  void setErr(const Int_t,const Float_t);
  void setCov(HSymMat&);

  Float_t getElement(const Int_t) const;
  Float_t getElement(const Int_t,const Int_t) const;
  Float_t getErr(const Int_t);
  Int_t getDim(void) const { return dim; }
  void getCov(HSymMat&);
  void print(void);

  Float_t convolution(Float_t v1[],Float_t v2[]);
  void transform(const HSymMat &m,Float_t *der);

  ClassDef(HSymMat,1)  // Symmetric matrix  
};

inline Float_t &HSymMat::operator()(Int_t i,Int_t j) {
  if (i<dim && j<dim) {
    return pData[getLinear(i,j)];
  } else Error("operator()","Out of bounds!");
  return pData[0];
}

///////////////////////////////////////////////
class HSymMat2 : public HSymMat {
protected:
  Float_t data[2*(2+1)/2];
public:
  HSymMat2(void) : HSymMat(2) { pData=data; }
  ~HSymMat2(void) {}
  ClassDef(HSymMat2,1) //Symmetric matrix dimension 2
};

class HSymMat3 : public HSymMat {
protected:
  Float_t data[3*(3+1)/2];
public:
  HSymMat3(void) : HSymMat(3) { pData=data; }
  ~HSymMat3(void) {}
  ClassDef(HSymMat3,1) //Symmetric matrix dimension 3
};

class HSymMat4 : public HSymMat {
protected:
  Float_t data[4*(4+1)/2];
public:
  HSymMat4(void) : HSymMat(4) { pData=data; }
  ~HSymMat4(void) {}
  ClassDef(HSymMat4,1) //Symmetric matrix dimension 4
};

class HSymMat5 : public HSymMat {
protected:
  Float_t data[5*(5+1)/2];
public:
  HSymMat5(void) : HSymMat(5) { pData=data; }
  ~HSymMat5(void) {}
  ClassDef(HSymMat5,1) //Symmetric matrix dimension 5
};

class HSymMat6 : public HSymMat {
protected:
  Float_t data[6*(6+1)/2];
public:
  HSymMat6(void) : HSymMat(6) { pData=data; }
  ~HSymMat6(void) {}
  ClassDef(HSymMat6,1) //Symmetric matrix dimension 6
};

#endif  /* HSYMMAT_H */














 hsymmat.h:1
 hsymmat.h:2
 hsymmat.h:3
 hsymmat.h:4
 hsymmat.h:5
 hsymmat.h:6
 hsymmat.h:7
 hsymmat.h:8
 hsymmat.h:9
 hsymmat.h:10
 hsymmat.h:11
 hsymmat.h:12
 hsymmat.h:13
 hsymmat.h:14
 hsymmat.h:15
 hsymmat.h:16
 hsymmat.h:17
 hsymmat.h:18
 hsymmat.h:19
 hsymmat.h:20
 hsymmat.h:21
 hsymmat.h:22
 hsymmat.h:23
 hsymmat.h:24
 hsymmat.h:25
 hsymmat.h:26
 hsymmat.h:27
 hsymmat.h:28
 hsymmat.h:29
 hsymmat.h:30
 hsymmat.h:31
 hsymmat.h:32
 hsymmat.h:33
 hsymmat.h:34
 hsymmat.h:35
 hsymmat.h:36
 hsymmat.h:37
 hsymmat.h:38
 hsymmat.h:39
 hsymmat.h:40
 hsymmat.h:41
 hsymmat.h:42
 hsymmat.h:43
 hsymmat.h:44
 hsymmat.h:45
 hsymmat.h:46
 hsymmat.h:47
 hsymmat.h:48
 hsymmat.h:49
 hsymmat.h:50
 hsymmat.h:51
 hsymmat.h:52
 hsymmat.h:53
 hsymmat.h:54
 hsymmat.h:55
 hsymmat.h:56
 hsymmat.h:57
 hsymmat.h:58
 hsymmat.h:59
 hsymmat.h:60
 hsymmat.h:61
 hsymmat.h:62
 hsymmat.h:63
 hsymmat.h:64
 hsymmat.h:65
 hsymmat.h:66
 hsymmat.h:67
 hsymmat.h:68
 hsymmat.h:69
 hsymmat.h:70
 hsymmat.h:71
 hsymmat.h:72
 hsymmat.h:73
 hsymmat.h:74
 hsymmat.h:75
 hsymmat.h:76
 hsymmat.h:77
 hsymmat.h:78
 hsymmat.h:79
 hsymmat.h:80
 hsymmat.h:81
 hsymmat.h:82
 hsymmat.h:83
 hsymmat.h:84
 hsymmat.h:85
 hsymmat.h:86
 hsymmat.h:87
 hsymmat.h:88
 hsymmat.h:89
 hsymmat.h:90
 hsymmat.h:91
 hsymmat.h:92
 hsymmat.h:93
 hsymmat.h:94
 hsymmat.h:95
 hsymmat.h:96
 hsymmat.h:97
 hsymmat.h:98
 hsymmat.h:99
 hsymmat.h:100
 hsymmat.h:101
 hsymmat.h:102
 hsymmat.h:103
 hsymmat.h:104
 hsymmat.h:105
 hsymmat.h:106
 hsymmat.h:107
 hsymmat.h:108
 hsymmat.h:109
 hsymmat.h:110
 hsymmat.h:111
 hsymmat.h:112
 hsymmat.h:113
 hsymmat.h:114
 hsymmat.h:115
 hsymmat.h:116
 hsymmat.h:117