69 fIn = fftw_malloc(
sizeof(fftw_complex) *
n);
71 fOut = fftw_malloc(
sizeof(fftw_complex) *
n);
111 fftw_destroy_plan((fftw_plan)
fPlan);
113 fftw_free((fftw_complex*)
fIn);
115 fftw_free((fftw_complex*)
fOut);
146 fftw_destroy_plan((fftw_plan)
fPlan);
161 fftw_execute((fftw_plan)
fPlan);
163 Error(
"Transform",
"transform not initialised");
175 data[i] = ((fftw_complex*)
fOut)[i/2][0];
176 data[i+1] = ((fftw_complex*)
fOut)[i/2][1];
180 data[i] = ((fftw_complex*)
fIn)[i/2][0];
181 data[i+1] = ((fftw_complex*)
fIn)[i/2][1];
191 if (
fOut && !fromInput){
192 re = ((fftw_complex*)
fOut)[ipoint][0];
193 im = ((fftw_complex*)
fOut)[ipoint][1];
195 re = ((fftw_complex*)
fIn)[ipoint][0];
196 im = ((fftw_complex*)
fIn)[ipoint][1];
205 Int_t ireal = ipoint[0];
207 ireal=
fN[i+1]*ireal + ipoint[i+1];
209 if (
fOut && !fromInput){
210 re = ((fftw_complex*)
fOut)[ireal][0];
211 im = ((fftw_complex*)
fOut)[ireal][1];
213 re = ((fftw_complex*)
fIn)[ireal][0];
214 im = ((fftw_complex*)
fIn)[ireal][1];
223 if (
fOut && !fromInput){
225 re[i] = ((fftw_complex*)
fOut)[i][0];
226 im[i] = ((fftw_complex*)
fOut)[i][1];
230 re[i] = ((fftw_complex*)
fIn)[i][0];
231 im[i] = ((fftw_complex*)
fIn)[i][1];
241 if (
fOut && !fromInput){
243 data[i] = ((fftw_complex*)
fOut)[i/2][0];
244 data[i+1] = ((fftw_complex*)
fOut)[i/2][1];
248 data[i] = ((fftw_complex*)
fIn)[i/2][0];
249 data[i+1] = ((fftw_complex*)
fIn)[i/2][1];
259 ((fftw_complex*)
fIn)[ipoint][0]=re;
260 ((fftw_complex*)
fIn)[ipoint][1]=im;
268 Int_t ireal = ipoint[0];
270 ireal=
fN[i+1]*ireal + ipoint[i+1];
272 ((fftw_complex*)
fIn)[ireal][0]=re;
273 ((fftw_complex*)
fIn)[ireal][1]=im;
280 ((fftw_complex*)
fIn)[ipoint][0] =
c.Re();
281 ((fftw_complex*)
fIn)[ipoint][1] =
c.Im();
291 ((fftw_complex*)
fIn)[i/2][0]=
data[i];
292 ((fftw_complex*)
fIn)[i/2][1]=
data[i+1];
302 Error(
"SetPointsComplex",
"Size is not set yet");
306 ((fftw_complex*)
fIn)[i][0]=re_data[i];
307 ((fftw_complex*)
fIn)[i][1]=im_data[i];
323 return FFTW_ESTIMATE;
329 return FFTW_EXHAUSTIVE;
330 return FFTW_ESTIMATE;
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
One of the interface classes to the FFTW package, can be used directly or via the TVirtualFFT class.
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