00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef ROOT_TSpectrum2Transform
00012 #define ROOT_TSpectrum2Transform
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef ROOT_TNamed
00027 #include "TNamed.h"
00028 #endif
00029
00030 class TSpectrum2Transform : public TObject {
00031 protected:
00032 Int_t fSizeX;
00033 Int_t fSizeY;
00034 Int_t fTransformType;
00035 Int_t fDegree;
00036 Int_t fDirection;
00037 Int_t fXmin;
00038 Int_t fXmax;
00039 Int_t fYmin;
00040 Int_t fYmax;
00041 Float_t fFilterCoeff;
00042 Float_t fEnhanceCoeff;
00043 public:
00044 enum {
00045 kTransformHaar =0,
00046 kTransformWalsh =1,
00047 kTransformCos =2,
00048 kTransformSin =3,
00049 kTransformFourier =4,
00050 kTransformHartley =5,
00051 kTransformFourierWalsh =6,
00052 kTransformFourierHaar =7,
00053 kTransformWalshHaar =8,
00054 kTransformCosWalsh =9,
00055 kTransformCosHaar =10,
00056 kTransformSinWalsh =11,
00057 kTransformSinHaar =12,
00058 kTransformForward =0,
00059 kTransformInverse =1
00060 };
00061 TSpectrum2Transform();
00062 TSpectrum2Transform(Int_t sizeX, Int_t sizeY);
00063 virtual ~TSpectrum2Transform();
00064
00065 protected:
00066 void BitReverse(Float_t *working_space,Int_t num);
00067 void BitReverseHaar(Float_t *working_space,Int_t shift,Int_t num,Int_t start);
00068 void FourCos2(Float_t **working_matrix,Float_t *working_vector,Int_t numx,Int_t numy,Int_t direction,Int_t type);
00069 void Fourier(Float_t *working_space,Int_t num,Int_t hartley,Int_t direction,Int_t zt_clear);
00070 void General2(Float_t **working_matrix,Float_t *working_vector,Int_t numx,Int_t numy,Int_t direction,Int_t type,Int_t degree);
00071 Int_t GeneralExe(Float_t *working_space,Int_t zt_clear,Int_t num,Int_t degree,Int_t type);
00072 Int_t GeneralInv(Float_t *working_space,Int_t num,Int_t degree,Int_t type);
00073 void Haar(Float_t *working_space,Int_t num,Int_t direction);
00074 void HaarWalsh2(Float_t **working_matrix,Float_t *working_vector,Int_t numx,Int_t numy,Int_t direction,Int_t type);
00075 void Walsh(Float_t *working_space,Int_t num);
00076
00077 public:
00078 void Enhance(const Float_t **fSource, Float_t **fDest);
00079 void FilterZonal(const Float_t **fSource, Float_t **fDest);
00080 void SetDirection(Int_t direction);
00081 void SetEnhanceCoeff(Float_t enhanceCoeff);
00082 void SetFilterCoeff(Float_t filterCoeff);
00083 void SetRegion(Int_t xmin, Int_t xmax, Int_t ymin, Int_t ymax);
00084 void SetTransformType(Int_t transType, Int_t degree);
00085 void Transform(const Float_t **fSource, Float_t **fDest);
00086
00087 ClassDef(TSpectrum2Transform,1)
00088 };
00089
00090 #endif