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))) {
197 if (
h->LoadPlugin()==-1) {
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))) {
321 if (
h->LoadPlugin()==-1){
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");
R__EXTERN TVirtualMutex * gROOTMutex
#define R__LOCKGUARD(mutex)
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
const char * Data() const
void ToUpper()
Change string to upper case.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
TVirtualFFT is an interface class for Fast Fourier Transforms.
virtual ~TVirtualFFT()
destructor
static void SetDefaultFFT(const char *name="")
static: set name of default fft
static void SetTransform(TVirtualFFT *fft)
static: set the current transfrom to parameter
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.
static TVirtualFFT * GetCurrentTransform()
static: return current fgFFT
virtual Int_t GetNdim() const =0
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.
virtual Option_t * GetTransformFlag() const =0
virtual Option_t * GetType() const =0
virtual Int_t GetSign() const =0
virtual Int_t * GetN() const =0
static TVirtualFFT * fgFFT
static const char * GetDefaultFFT()
static: return the name of the default fft