#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;
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)
};
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)
};
class HSymMat3 : public HSymMat {
protected:
Float_t data[3*(3+1)/2];
public:
HSymMat3(void) : HSymMat(3) { pData=data; }
~HSymMat3(void) {}
ClassDef(HSymMat3,1)
};
class HSymMat4 : public HSymMat {
protected:
Float_t data[4*(4+1)/2];
public:
HSymMat4(void) : HSymMat(4) { pData=data; }
~HSymMat4(void) {}
ClassDef(HSymMat4,1)
};
class HSymMat5 : public HSymMat {
protected:
Float_t data[5*(5+1)/2];
public:
HSymMat5(void) : HSymMat(5) { pData=data; }
~HSymMat5(void) {}
ClassDef(HSymMat5,1)
};
class HSymMat6 : public HSymMat {
protected:
Float_t data[6*(6+1)/2];
public:
HSymMat6(void) : HSymMat(6) { pData=data; }
~HSymMat6(void) {}
ClassDef(HSymMat6,1)
};
#endif /* HSYMMAT_H */
Last change: Sat May 22 13:15:01 2010
Last generated: 2010-05-22 13:15
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.