00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TMatrixDEigen
00013 #define ROOT_TMatrixDEigen
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef ROOT_TMatrixD
00024 #include "TMatrixD.h"
00025 #endif
00026 #ifndef ROOT_TVectorD
00027 #include "TVectorD.h"
00028 #endif
00029
00030 class TMatrixDEigen
00031 {
00032 protected :
00033
00034 static void MakeHessenBerg (TMatrixD &v,TVectorD &ortho,TMatrixD &H);
00035 static void MakeSchurr (TMatrixD &v,TVectorD &d, TVectorD &e,TMatrixD &H);
00036 static void Sort (TMatrixD &v,TVectorD &d, TVectorD &e);
00037
00038 TMatrixD fEigenVectors;
00039 TVectorD fEigenValuesRe;
00040 TVectorD fEigenValuesIm;
00041
00042 public :
00043
00044 enum {kWorkMax = 100};
00045
00046 TMatrixDEigen()
00047 : fEigenVectors(), fEigenValuesRe(), fEigenValuesIm() {};
00048 TMatrixDEigen(const TMatrixD &a);
00049 TMatrixDEigen(const TMatrixDEigen &another);
00050 virtual ~TMatrixDEigen() {}
00051
00052
00053
00054
00055
00056
00057
00058
00059 const TMatrixD &GetEigenVectors () const { return fEigenVectors; }
00060 const TVectorD &GetEigenValuesRe() const { return fEigenValuesRe; }
00061 const TVectorD &GetEigenValuesIm() const { return fEigenValuesIm; }
00062 const TMatrixD GetEigenValues () const;
00063
00064 TMatrixDEigen &operator= (const TMatrixDEigen &source);
00065
00066 ClassDef(TMatrixDEigen,1)
00067 };
00068 #endif