TFFTRealComplex
One of the interface classes to the FFTW package, can be used directly
or via the TVirtualFFT class. Only the basic interface of FFTW is implemented.
Computes a real input/complex output discrete Fourier transform in 1 or more
dimensions. However, only out-of-place transforms are now supported for transforms
in more than 1 dimension. For detailed information about the computed transforms,
please refer to the FFTW manual
How to use it:
1) Create an instance of TFFTRealComplex - this will allocate input and output
arrays (unless an in-place transform is specified)
2) Run the Init() function with the desired flags and settings (see function
comments for possible kind parameters)
3) Set the data (via SetPoints()or SetPoint() functions)
4) Run the Transform() function
5) Get the output (via GetPoints() or GetPoint() functions)
6) Repeat steps 3)-5) as needed
For a transform of the same size, but with different flags,
rerun the Init() function and continue with steps 3)-5)
NOTE: 1) running Init() function will overwrite the input array! Don't set any data
before running the Init() function
2) FFTW computes unnormalized transform, so doing a transform followed by
its inverse will lead to the original array scaled by the transform size

Creates the fftw-plan
NOTE: input and output arrays are overwritten during initialisation,
so don't set any points, before running this function!!!!!
Arguments sign and kind are dummy and not need to be specified
Possible flag_options:
"ES" (from "estimate") - no time in preparing the transform, but probably sub-optimal
performanc
"M" (from "measure") - some time spend in finding the optimal way to do the transform
"P" (from "patient") - more time spend in finding the optimal way to do the transform
"EX" (from "exhaustive") - the most optimal way is found
This option should be chosen depending on how many transforms of the same size and
type are going to be done. Planning is only done once, for the first transform of this
size and type.

Returns the point #ipoint.
For 1d, if ipoint > fN/2+1 (the point is in the Hermitian symmetric part), it is still
returned. For >1d, only the first (roughly)half of points can be returned
For 2d, see function GetPointComplex(Int_t *ipoint,...)