88 TString TVirtualFFT::fgDefault =
"";
133 Int_t inputtype=0, currenttype=0;
139 if (opt.
Contains(
"ES")) flag =
"ES";
142 if (opt.
Contains(
"EX")) flag =
"EX";
153 for (
Int_t i=0; i<ndim; i++){
154 if (n[i]!=ncurrent[i])
162 if (strcmp(t,
"R2HC")==0 || strcmp(t,
"HC2R")==0 || strcmp(t,
"DHT")==0)
165 if (!(inputtype==1 && currenttype==1))
190 if (opt.
Contains(
"C2C")) pluginname =
"fftwc2c";
191 if (opt.
Contains(
"C2R")) pluginname =
"fftwc2r";
192 if (opt.
Contains(
"R2C")) pluginname =
"fftwr2c";
194 if ((h=
gROOT->GetPluginManager()->FindHandler(
"TVirtualFFT", pluginname))) {
196 ::Error(
"TVirtualFFT::FFT",
"handler not found");
201 ::Error(
"TVirtualFFT::FFT",
"plugin failed to create TVirtualFFT object");
205 if (pluginname==
"fftwr2r") {
206 if (opt.
Contains(
"R2HC")) kind[0] = 10;
207 if (opt.
Contains(
"HC2R")) kind[0] = 11;
208 if (opt.
Contains(
"DHT")) kind[0] = 12;
210 fft->
Init(flag, sign, kind);
218 ::Error(
"TVirtualFFT::FFT",
"plugin not found");
231 if (opt.
Contains(
"R2HC")) kind[0] = 10;
232 if (opt.
Contains(
"HC2R")) kind[0] = 11;
233 if (opt.
Contains(
"DHT")) kind[0] = 12;
284 if (opt.
Contains(
"ES")) flag =
"ES";
287 if (opt.
Contains(
"EX")) flag =
"EX";
296 for (
Int_t i=0; i<ndim; i++) {
297 if (n[i] != ncurrent[i])
317 pluginname =
"fftwr2r";
318 if ((h=
gROOT->GetPluginManager()->FindHandler(
"TVirtualFFT", pluginname))) {
320 ::Error(
"TVirtualFFT::SineCosine",
"handler not found");
325 ::Error(
"TVirtualFFT::SineCosine",
"plugin failed to create TVirtualFFT object");
328 fft->
Init(flag, 0, r2rkind);
333 ::Error(
"TVirtualFFT::SineCosine",
"handler not found");
352 ::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
Long_t ExecPlugin(int nargs, const T &...params)
static void SetDefaultFFT(const char *name="")
static: set name of default fft
const char * Data() const
static TVirtualFFT * fgFFT
UChar_t mod R__LOCKGUARD2(gSrvAuthenticateMutex)
virtual Int_t * GetN() const =0
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Init(Option_t *flag, Int_t sign, const Int_t *kind)=0
static TVirtualFFT * FFT(Int_t ndim, Int_t *n, Option_t *option)
Returns a pointer to the FFT of requested size and type.
virtual Option_t * GetTransformFlag() const =0
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.
ClassImp(TVirtualFFT) TVirtualFFT
destructor
virtual Int_t GetSign() const =0
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual Int_t GetNdim() const =0
virtual Option_t * GetType() const =0
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.