00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef ROOT_TSpectrumTransform
00012 #define ROOT_TSpectrumTransform
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 TH1;
00031
00032 class TSpectrumTransform : public TNamed {
00033
00034 protected:
00035 Int_t fSize;
00036 Int_t fTransformType;
00037 Int_t fDegree;
00038 Int_t fDirection;
00039 Int_t fXmin;
00040 Int_t fXmax;
00041 Float_t fFilterCoeff;
00042 Float_t fEnhanceCoeff;
00043
00044 public:
00045 enum {
00046 kTransformHaar =0,
00047 kTransformWalsh =1,
00048 kTransformCos =2,
00049 kTransformSin =3,
00050 kTransformFourier =4,
00051 kTransformHartley =5,
00052 kTransformFourierWalsh =6,
00053 kTransformFourierHaar =7,
00054 kTransformWalshHaar =8,
00055 kTransformCosWalsh =9,
00056 kTransformCosHaar =10,
00057 kTransformSinWalsh =11,
00058 kTransformSinHaar =12,
00059 kTransformForward =0,
00060 kTransformInverse =1
00061 };
00062 TSpectrumTransform();
00063 TSpectrumTransform(Int_t size);
00064 virtual ~TSpectrumTransform();
00065
00066 protected:
00067 void BitReverse(float *working_space,Int_t num);
00068 void BitReverseHaar(float *working_space,Int_t shift,Int_t num,Int_t start);
00069 void Fourier(float *working_space,Int_t num,Int_t hartley,Int_t direction,Int_t zt_clear);
00070 Int_t GeneralExe(float *working_space,Int_t zt_clear,Int_t num,Int_t degree,Int_t type);
00071 Int_t GeneralInv(float *working_space,Int_t num,Int_t degree,Int_t type);
00072 void Haar(float *working_space,Int_t num,Int_t direction);
00073 void Walsh(float *working_space,Int_t num);
00074
00075 public:
00076 void Enhance(const float *source, float *destVector);
00077 void FilterZonal(const float *source, float *destVector);
00078 void SetDirection(Int_t direction);
00079 void SetEnhanceCoeff(Float_t enhanceCoeff);
00080 void SetFilterCoeff(Float_t filterCoeff);
00081 void SetRegion(Int_t xmin, Int_t xmax);
00082 void SetTransformType(Int_t transType, Int_t degree);
00083 void Transform(const float *source, float *destVector);
00084
00085 ClassDef(TSpectrumTransform,1)
00086 };
00087
00088
00089 #endif
00090