4 #ifndef ROOT_TVirtualFFT
5 #define ROOT_TVirtualFFT
88 class TVirtualFFT:
public TObject {
91 static TVirtualFFT *fgFFT;
92 static TString fgDefault;
97 virtual ~TVirtualFFT();
99 virtual Int_t *GetN()
const = 0;
101 virtual Int_t GetNdim()
const = 0;
102 virtual Option_t *GetType()
const = 0;
103 virtual Int_t GetSign()
const = 0;
104 virtual Option_t *GetTransformFlag()
const = 0;
105 virtual void Init(Option_t *flag,Int_t sign,
const Int_t *kind) = 0;
106 virtual Bool_t IsInplace()
const = 0;
108 virtual void GetPoints(Double_t *data, Bool_t fromInput = kFALSE)
const = 0;
109 virtual Double_t GetPointReal(Int_t ipoint, Bool_t fromInput = kFALSE)
const = 0;
110 virtual Double_t GetPointReal(
const Int_t *ipoint, Bool_t fromInput = kFALSE)
const = 0;
111 virtual void GetPointComplex(Int_t ipoint, Double_t &re, Double_t &im, Bool_t fromInput=kFALSE)
const = 0;
112 virtual void GetPointComplex(
const Int_t *ipoint, Double_t &re, Double_t &im, Bool_t fromInput=kFALSE)
const = 0;
113 virtual Double_t* GetPointsReal(Bool_t fromInput=kFALSE)
const = 0;
114 virtual void GetPointsComplex(Double_t *re, Double_t *im, Bool_t fromInput = kFALSE)
const = 0;
115 virtual void GetPointsComplex(Double_t *data, Bool_t fromInput = kFALSE)
const = 0;
117 virtual void SetPoint(Int_t ipoint, Double_t re, Double_t im = 0) = 0;
118 virtual void SetPoint(
const Int_t *ipoint, Double_t re, Double_t im = 0) = 0;
119 virtual void SetPoints(
const Double_t *data) = 0;
120 virtual void SetPointComplex(Int_t ipoint, TComplex &c) = 0;
121 virtual void SetPointsComplex(
const Double_t *re,
const Double_t *im) =0;
122 virtual void Transform() = 0;
124 static TVirtualFFT* FFT(Int_t ndim, Int_t *n, Option_t *option);
125 static TVirtualFFT* SineCosine(Int_t ndim, Int_t *n, Int_t *r2rkind, Option_t *option);
126 static TVirtualFFT* GetCurrentTransform();
128 static void SetTransform(TVirtualFFT *fft);
129 static const char* GetDefaultFFT();
130 static void SetDefaultFFT(
const char *name =
"");
132 ClassDef(TVirtualFFT, 0);