nuisance is hosted by Hepforge, IPPP Durham
  • To build against NEUT, NuWro, or GENIE, NUISANCE requires a full installation of the relevant generator.
  • Please see our generator guides on how to set them up, or simply email us.

Getting the code

NUISANCE can be downloaded from our git repository. The clone will default to the head development version:

$ git clone

We recommend to download frozen releases for physics results using the git branch command:

$ git clone -b release_name

The latest release is v1r0, for a list of available releases please see here.

Most other branches are development branches which we don't recommended for physics results.

You can browse the source code here.

External dependencies

NUISANCE's only external dependency is ROOT.

For minimisation routines, we require v5.34/19 and above.

  • How to check your ROOT version:
    $ root-config --version

  • Using a lower patch than ROOT 5.34/19 forces omission of the minimisation code from the NUISANCE build and only builds comparison routines.
    This is because ROOT restructured the Math::Minimizer interface in v5.34/19.

Most dependencies are already met by the recommended installation method, although we explicitly use Minuit2 for minimisation.

Turning ON minimisation in NUISANCE

The NUISANCE build enables minimization routines if it can find Minuit2 in your $ root-config --features.

You can also force it by include a preprocessor define:

  • To force NUISANCE to compile WITH minimizer, add
    to your cmake build defines.
  • e.g. for GENIE
    $ cmake ../ -DUSE_GENIE=1 -DUSE_MINIMIZER=1

Turning OFF minimisation in NUISANCE

NUISANCE supports turning off the Minuit2 libraries if you only want to do generator comparisons and no minimisation, or if you're having trouble with your Minuit2 installation.

If cmake can't find Minuit2 it'll default to turning off the code that depends on Minuit2, but the option can also be forced. This is done on compile time of NUISANCE by a preprocessor define:

  • To force NUISANCE to compile WITHOUT minimizer, add
    to your cmake build defines.
  • e.g. for GENIE
    $ cmake ../ -DUSE_GENIE=1 -DUSE_MINIMIZER=0

Your ROOT install should now be ready for some NUISANCE! (If not, please email us).

Troubleshooting Minuit2 installation

To check if Minuit2 has been enabled in your ROOT package:

  • Check your ROOT environment:
    $ echo $ROOTSYS
    $ which root-config
  • If not found, source your ROOT environment:
    $ source /PATH/TO/YOUR/ROOT/bin/
  • Check ROOT features:
    $ root-config --features | grep 'minuit2'
  • If not found, recompile ROOT with Minuit2 on:
    $ cd $ROOTSYS
    $ ./configure --enable-minuit2
    $ make
  • or if you compiled with cmake:
    $ cd $ROOTSYS
    $ cmake . -Dminuit2:BOOL=ON
    $ make

Compiling against generators

Compiling against GENIE

  • Get a GENIE copy (including reweighting engine)
  • First test your GENIE environment:
    $ which genie-config
    $ echo $GENIE
  • Get the NUISANCE code:
    $ git clone -b v1r0
  • Build NUISANCE:
    $ cd nuisance
    $ mkdir build
    $ cd build
    $ cmake ../ -DUSE_GENIE=1
    $ make install
    $ make docs
    $ source $(uname)/
  • Check the NUISANCE environment:
    $ which nuiscomp

Generic compiling against other generators

Checking your environment pre-build

  • Check generator environment variables, e.g.
    $ echo $NEUT_ROOT
    $ echo $NUWRO
    $ echo $PYTHIA6
  • Check ROOT environment variables:
    $ which root-config
    $ echo $ROOTSYS
  • Make NUISANCE build directory:
    $ mkdir build
    $ cd build
  • Set the compiler flags for the generators:
    $ cmake -DUSE_NuWro=1 -DUSE_NEUT=1 -DUSE_GENIE=1 -DUSE_GiBUU=1 -DUSE_NUANCE=1 ../

    -DUSE_GENERATOR tells the compiler to compile against chosen generator, granted environment variables are set. The default is to set generators to 0.

    E.g. $ cmake ../ -DUSE_NUWRO=1 enables NuWro alone.

    Furthermore, NUISANCE can build GiBUU with $-DBUILD_GiBUU=1 in cmake command.
  • Build NUISANCE:
    $ make (exeutables and libraries)
    $ make docs (doxygen documentation)
    $ make install (install to build location)

The build also generates $(uname)/ The file contains exports of generator environment variables available at last compilation time.

Doing source $(uname)/ is all you need before running NUISANCE applications.

Wrapping up

NUISANCE has now hopefully compiled properly. Now is the time to venture into the exciting land of neutrino scattering physics! Good luck, have fun!

NUISANCE comes with usage examples, which we're continously expanding.

We welcome any feedback!