FFT Plugin not found?

I have a recent, fresh installation of ROOT (in /usr/bin/src/root/root_install/bin/root/. I’m running a fresh install of the latest Debian, and I installed all required and optional dependencies listed here: Dependencies - ROOT. Then, I followed (verbatim) the build-from-source instructions given here: Installing ROOT - ROOT… without issue.

I can confirm that FFTW3 was successfully installed, and functional. Moreover, root-config --has-fftw3 returns “yes”.

I’m using some (unfortunately, largely undocumented) ROOT-based software which uses TVirtualFFT. When I try to run this software (or, really, any code which uses ROOT’s FFTW facilities), I get the errors:

Error in <TVirtualFFT::FFT>: plugin not found
Error in <TVirtualFFT::SineCosine>: plugin not found

Where have I erred?


Please read tips for efficient and successful posting and posting code

ROOT Version: Not Provided
Platform: Not Provided
Compiler: Not Provided


Try the tutorials:
${ROOTSYS}/tutorials/fft/FFT.C
${ROOTSYS}/tutorials/fit/fitConvolution.C

Thanks for the suggestion!-- these seem to work fine. I’m not quite sure what’s going on, then, with the code I’m working with ([1], [2]). It has all of the necessary includes, and otherwise seems to use TVirtualFFT in the same manner as the examples (and, as I understand it, works fine for others also running a fresh install of ROOT and Debian, and who installed ROOT and this software using the very same steps I did).

Try:

// ...
#include "TApplication.h"

int main(int argc, char** argv) {
  TApplication a("a", 0, 0); // just to make sure that the autoloading of ROOT libraries works
  // ...

Here’s the output (which looks as expected, I believe):

   ------------------------------------------------------------------
  | Welcome to ROOT 6.24/06                        https://root.cern |
  | (c) 1995-2021, The ROOT Team; conception: R. Brun, F. Rademakers |
  | Built for linuxx8664gcc on Oct 11 2021, 15:41:00                 |
  | From heads/latest-stable@v6-24-06-4-g7c26799d78                  |
  | With                                                             |
  | Try '.help', '.demo', '.license', '.credits', '.quit'/'.q'       |
   ------------------------------------------------------------------

root [0] 
Processing main.c...
Error in <TApplication::TApplication>: only one instance of TApplication allowed
   ------------------------------------------------------------------
  | Welcome to ROOT 6.24/06                        https://root.cern |
  | (c) 1995-2021, The ROOT Team; conception: R. Brun, F. Rademakers |
  | Built for linuxx8664gcc on Oct 11 2021, 15:41:00                 |
  | From heads/latest-stable@v6-24-06-4-g7c26799d78                  |
  | With                                                             |
  | Try '.help', '.demo', '.license', '.credits', '.quit'/'.q'       |
   ------------------------------------------------------------------

root [0] 

Thanks!

A “TApplication” is only needed in standalone applications.
When you use “root” to process a macro, you should not add it.

I do not think “root” is able to process macros with “int main(int argc, char** argv)”.
Actually, it is better not to use the name “main” at all ("root" already runs its own “main” routine).

How does your “main.C” look like?

Apologies. I misunderstood your reply.

Here’s what I’ve just tried:

I have a program, main.cpp, that looks like:

#include "TApplication.h"
#include <iostream>

int main(int argc, char** argv) {
  TApplication a("a", 0, 0);
  std::cout << "success\n";
}

I compile it with:

g++ main.cpp -o main 'root-config --cflags --glibs'

Which is successful. When I run the program, it outputs “success” (i.e., it seems to run without issue).

Thanks again!