135 Int_t inputtype=0, currenttype=0;
141 if (opt.
Contains(
"ES")) flag =
"ES";
144 if (opt.
Contains(
"EX")) flag =
"EX";
155 for (
Int_t i=0; i<ndim; i++){
156 if (n[i]!=ncurrent[i])
164 if (strcmp(t,
"R2HC")==0 || strcmp(t,
"HC2R")==0 || strcmp(t,
"DHT")==0)
167 if (!(inputtype==1 && currenttype==1))
192 if (opt.
Contains(
"C2C")) pluginname =
"fftwc2c";
193 if (opt.
Contains(
"C2R")) pluginname =
"fftwc2r";
194 if (opt.
Contains(
"R2C")) pluginname =
"fftwr2c";
196 if ((h=
gROOT->GetPluginManager()->FindHandler(
"TVirtualFFT", pluginname))) {
198 ::Error(
"TVirtualFFT::FFT",
"handler not found");
203 ::Error(
"TVirtualFFT::FFT",
"plugin failed to create TVirtualFFT object");
207 if (pluginname==
"fftwr2r") {
208 if (opt.
Contains(
"R2HC")) kind[0] = 10;
209 if (opt.
Contains(
"HC2R")) kind[0] = 11;
210 if (opt.
Contains(
"DHT")) kind[0] = 12;
212 fft->
Init(flag, sign, kind);
220 ::Error(
"TVirtualFFT::FFT",
"plugin not found");
233 if (opt.
Contains(
"R2HC")) kind[0] = 10;
234 if (opt.
Contains(
"HC2R")) kind[0] = 11;
235 if (opt.
Contains(
"DHT")) kind[0] = 12;
286 if (opt.
Contains(
"ES")) flag =
"ES";
289 if (opt.
Contains(
"EX")) flag =
"EX";
298 for (
Int_t i=0; i<ndim; i++) {
299 if (n[i] != ncurrent[i])
319 pluginname =
"fftwr2r";
320 if ((h=
gROOT->GetPluginManager()->FindHandler(
"TVirtualFFT", pluginname))) {
322 ::Error(
"TVirtualFFT::SineCosine",
"handler not found");
327 ::Error(
"TVirtualFFT::SineCosine",
"plugin failed to create TVirtualFFT object");
330 fft->
Init(flag, 0, r2rkind);
335 ::Error(
"TVirtualFFT::SineCosine",
"handler not found");
354 ::Warning(
"TVirtualFFT::GetCurrentTransform",
"fgFFT is not defined yet");
static void SetTransform(TVirtualFFT *fft)
static: set the current transfrom to parameter
static const char * GetDefaultFFT()
static: return the name of the default fft
static TVirtualFFT * GetCurrentTransform()
static: return current fgFFT
void ToUpper()
Change string to upper case.
Int_t LoadPlugin()
Load the plugin library for this handler.
R__EXTERN TVirtualMutex * gROOTMutex
static void SetDefaultFFT(const char *name="")
static: set name of default fft
static TVirtualFFT * fgFFT
virtual Int_t * GetN() const =0
virtual void Init(Option_t *flag, Int_t sign, const Int_t *kind)=0
Long_t ExecPlugin(int nargs, const T &... params)
static TVirtualFFT * FFT(Int_t ndim, Int_t *n, Option_t *option)
Returns a pointer to the FFT of requested size and type.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual Option_t * GetTransformFlag() const =0
#define R__LOCKGUARD2(mutex)
TVirtualFFT is an interface class for Fast Fourier Transforms.
static TVirtualFFT * SineCosine(Int_t ndim, Int_t *n, Int_t *r2rkind, Option_t *option)
Returns a pointer to a sine or cosine transform of requested size and kind.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual Int_t GetSign() const =0
virtual Int_t GetNdim() const =0
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual Option_t * GetType() const =0
const char * Data() const