00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TFFTRealComplex
00013 #define ROOT_TFFTRealComplex
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 #ifndef ROOT_TVirtualFFT
00048 #include "TVirtualFFT.h"
00049 #endif
00050
00051 class TComplex;
00052
00053 class TFFTRealComplex: public TVirtualFFT {
00054 protected:
00055 void *fIn;
00056 void *fOut;
00057 void *fPlan;
00058 Int_t fNdim;
00059 Int_t fTotalSize;
00060 Int_t *fN;
00061 Option_t *fFlags;
00062
00063 UInt_t MapFlag(Option_t *flag);
00064
00065 public:
00066 TFFTRealComplex();
00067 TFFTRealComplex(Int_t n, Bool_t inPlace);
00068 TFFTRealComplex(Int_t ndim, Int_t *n, Bool_t inPlace);
00069 virtual ~TFFTRealComplex();
00070
00071 virtual void Init( Option_t *flags, Int_t ,const Int_t* );
00072
00073 virtual Int_t GetSize() const {return fTotalSize;}
00074 virtual Int_t *GetN() const {return fN;}
00075 virtual Int_t GetNdim() const {return fNdim;}
00076 virtual Option_t *GetType() const {return "R2C";}
00077 virtual Int_t GetSign() const {return 1;}
00078 virtual Option_t *GetTransformFlag() const {return fFlags;}
00079 virtual Bool_t IsInplace() const {if (fOut) return kTRUE; else return kFALSE;};
00080
00081 virtual void GetPoints(Double_t *data, Bool_t fromInput = kFALSE) const;
00082 virtual Double_t GetPointReal(Int_t ipoint, Bool_t fromInput = kFALSE) const;
00083 virtual Double_t GetPointReal(const Int_t *ipoint, Bool_t fromInput = kFALSE) const;
00084 virtual void GetPointComplex(Int_t ipoint, Double_t &re, Double_t &im, Bool_t fromInput=kFALSE) const;
00085 virtual void GetPointComplex(const Int_t *ipoint, Double_t &re, Double_t &im, Bool_t fromInput=kFALSE) const;
00086 virtual Double_t *GetPointsReal(Bool_t fromInput=kFALSE) const;
00087 virtual void GetPointsComplex(Double_t *re, Double_t *im, Bool_t fromInput = kFALSE) const ;
00088 virtual void GetPointsComplex(Double_t *data, Bool_t fromInput = kFALSE) const ;
00089
00090 virtual void SetPoint(Int_t ipoint, Double_t re, Double_t im = 0);
00091 virtual void SetPoint(const Int_t *ipoint, Double_t re, Double_t im = 0);
00092 virtual void SetPoints(const Double_t *data);
00093 virtual void SetPointComplex(Int_t ipoint, TComplex &c);
00094 virtual void SetPointsComplex(const Double_t *re, const Double_t *im);
00095 virtual void Transform();
00096
00097 ClassDef(TFFTRealComplex,0);
00098 };
00099
00100 #endif