134 Int_t inputtype=0, currenttype=0;
140 if (opt.
Contains(
"ES")) flag =
"ES";
143 if (opt.
Contains(
"EX")) flag =
"EX";
154 for (
Int_t i=0; i<ndim; i++){
155 if (
n[i]!=ncurrent[i])
163 if (strcmp(t,
"R2HC")==0 || strcmp(t,
"HC2R")==0 || strcmp(t,
"DHT")==0)
166 if (!(inputtype==1 && currenttype==1))
191 if (opt.
Contains(
"C2C")) pluginname =
"fftwc2c";
192 if (opt.
Contains(
"C2R")) pluginname =
"fftwc2r";
193 if (opt.
Contains(
"R2C")) pluginname =
"fftwr2c";
195 if ((
h=
gROOT->GetPluginManager()->FindHandler(
"TVirtualFFT", pluginname))) {
196 if (
h->LoadPlugin()==-1) {
197 ::Error(
"TVirtualFFT::FFT",
"handler not found");
202 ::Error(
"TVirtualFFT::FFT",
"plugin failed to create TVirtualFFT object");
206 if (pluginname==
"fftwr2r") {
207 if (opt.
Contains(
"R2HC")) kind[0] = 10;
208 if (opt.
Contains(
"HC2R")) kind[0] = 11;
209 if (opt.
Contains(
"DHT")) kind[0] = 12;
211 fft->
Init(flag, sign, kind);
219 ::Error(
"TVirtualFFT::FFT",
"plugin not found");
232 if (opt.
Contains(
"R2HC")) kind[0] = 10;
233 if (opt.
Contains(
"HC2R")) kind[0] = 11;
234 if (opt.
Contains(
"DHT")) kind[0] = 12;
285 if (opt.
Contains(
"ES")) flag =
"ES";
288 if (opt.
Contains(
"EX")) flag =
"EX";
297 for (
Int_t i=0; i<ndim; i++) {
298 if (
n[i] != ncurrent[i])
318 pluginname =
"fftwr2r";
319 if ((
h=
gROOT->GetPluginManager()->FindHandler(
"TVirtualFFT", pluginname))) {
320 if (
h->LoadPlugin()==-1){
321 ::Error(
"TVirtualFFT::SineCosine",
"handler not found");
326 ::Error(
"TVirtualFFT::SineCosine",
"plugin failed to create TVirtualFFT object");
329 fft->
Init(flag, 0, r2rkind);
334 ::Error(
"TVirtualFFT::SineCosine",
"handler not found");
353 ::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