68 fIn = fftw_malloc(
sizeof(fftw_complex) *
n);
70 fOut = fftw_malloc(
sizeof(fftw_complex) *
n);
110 fftw_destroy_plan((fftw_plan)
fPlan);
112 fftw_free((fftw_complex*)
fIn);
114 fftw_free((fftw_complex*)
fOut);
145 fftw_destroy_plan((fftw_plan)
fPlan);
160 fftw_execute((fftw_plan)
fPlan);
162 Error(
"Transform",
"transform not initialised");
174 data[i] = ((fftw_complex*)
fOut)[i/2][0];
175 data[i+1] = ((fftw_complex*)
fOut)[i/2][1];
179 data[i] = ((fftw_complex*)
fIn)[i/2][0];
180 data[i+1] = ((fftw_complex*)
fIn)[i/2][1];
190 if (
fOut && !fromInput){
191 re = ((fftw_complex*)
fOut)[ipoint][0];
192 im = ((fftw_complex*)
fOut)[ipoint][1];
194 re = ((fftw_complex*)
fIn)[ipoint][0];
195 im = ((fftw_complex*)
fIn)[ipoint][1];
204 Int_t ireal = ipoint[0];
206 ireal=
fN[i+1]*ireal + ipoint[i+1];
208 if (
fOut && !fromInput){
209 re = ((fftw_complex*)
fOut)[ireal][0];
210 im = ((fftw_complex*)
fOut)[ireal][1];
212 re = ((fftw_complex*)
fIn)[ireal][0];
213 im = ((fftw_complex*)
fIn)[ireal][1];
222 if (
fOut && !fromInput){
224 re[i] = ((fftw_complex*)
fOut)[i][0];
225 im[i] = ((fftw_complex*)
fOut)[i][1];
229 re[i] = ((fftw_complex*)
fIn)[i][0];
230 im[i] = ((fftw_complex*)
fIn)[i][1];
240 if (
fOut && !fromInput){
242 data[i] = ((fftw_complex*)
fOut)[i/2][0];
243 data[i+1] = ((fftw_complex*)
fOut)[i/2][1];
247 data[i] = ((fftw_complex*)
fIn)[i/2][0];
248 data[i+1] = ((fftw_complex*)
fIn)[i/2][1];
258 ((fftw_complex*)
fIn)[ipoint][0]=re;
259 ((fftw_complex*)
fIn)[ipoint][1]=im;
267 Int_t ireal = ipoint[0];
269 ireal=
fN[i+1]*ireal + ipoint[i+1];
271 ((fftw_complex*)
fIn)[ireal][0]=re;
272 ((fftw_complex*)
fIn)[ireal][1]=im;
279 ((fftw_complex*)
fIn)[ipoint][0] =
c.Re();
280 ((fftw_complex*)
fIn)[ipoint][1] =
c.Im();
290 ((fftw_complex*)
fIn)[i/2][0]=data[i];
291 ((fftw_complex*)
fIn)[i/2][1]=data[i+1];
301 Error(
"SetPointsComplex",
"Size is not set yet");
305 ((fftw_complex*)
fIn)[i][0]=re_data[i];
306 ((fftw_complex*)
fIn)[i][1]=im_data[i];
322 return FFTW_ESTIMATE;
328 return FFTW_EXHAUSTIVE;
329 return FFTW_ESTIMATE;
int Int_t
Signed integer 4 bytes (int).
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
bool Bool_t
Boolean (0=false, 1=true) (bool).
double Double_t
Double 8 bytes.
const char Option_t
Option string (const char).
UInt_t MapFlag(Option_t *flag)
allowed options:
void SetPoints(const Double_t *data) override
set all points.
void SetPointComplex(Int_t ipoint, TComplex &c) override
void GetPointsComplex(Double_t *re, Double_t *im, Bool_t fromInput=kFALSE) const override
Copies real and imaginary parts of the output (input) into the argument arrays.
void GetPoints(Double_t *data, Bool_t fromInput=kFALSE) const override
Copies the output(or input) into the argument array.
void SetPointsComplex(const Double_t *re, const Double_t *im) override
set all points. the values are copied
void Transform() override
Computes the transform, specified in Init() function.
void Init(Option_t *flags, Int_t sign, const Int_t *) override
Creates the fftw-plan.
~TFFTComplex() override
Destroys the data arrays and the plan.
void GetPointComplex(Int_t ipoint, Double_t &re, Double_t &im, Bool_t fromInput=kFALSE) const override
returns real and imaginary parts of the point #ipoint
void SetPoint(Int_t ipoint, Double_t re, Double_t im=0) override
sets real and imaginary parts of point # ipoint
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
void ToUpper()
Change string to upper case.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const