Minuit2
Minuit2 copied to clipboard
Stand-alone Minuit2 produced from the ROOT 6 sources with no changes.
This is the Minuit2 fitter standalone edition, from the ROOT toolkit. It uses CMake 3.1+ to build. For information about the Minuit2 fitter, please see the documentation in ROOT.
Source
There are two ways to get Minuit2; you can checkout the ROOT source, then just build or use add_subdirectory
with <ROOT_SOURCE>/math/minuit2
, or you can get a Minuit2 source distribution which contains all the needed files to build with CMake. See DEVELOP.md for more information about extracting the source files from ROOT.
Building
To build, use the standard CMake procedure; on most systems, this looks like:
mkdir PATH_TO_MINIUT2_BUILD
cd PATH_TO_MINUIT2_BUILD
cmake PATH_TO_MINUIT2_SOURCE
cmake --build .
Of course, GUIs, IDEs, etc. that work with CMake will work with this package. The standard method of CMake building, with a build directory inside the Minuit2 source directory and using the makefile generator, would look like:
cd PATH_TO_MINUIT2_SOURCE
mkdir build
cd build
cmake ..
make
The standard CMake variables, such as CMAKE_BUILD_TYPE
and CMAKE_INSTALL_PREFIX
, work with Minuit2. There are two other options:
-
minuit2_mpi
activates the (outdated C++) MPI bindings. -
minuit2_omp
activates OpenMP (make sure all FCNs are threadsafe).
Testing
You can run ctest
or make test
to run the Minuit2 test suite.
Installing or using in another package
You can install the package using cmake --build --target install .
(or make install
if directly using the make system), or you can use it from the build directory. You can also include it in another CMake project using add_subdirectory()
and linking to the Minuit2
target. Since this package also exports targets, find_package(Minuit2)
will also work once this package is built or installed. (For the curious, CMake adds a config script to ~/.cmake/packages
when building or
$CMAKE_INSTALL_PREFIX/share/cmake/Modules
when installing a package that has export commands.)
To repeat; using this in your own CMake project usually amounts to:
find_package(Minuit2)
# OR
add_subdirectory(Minuit2)
target_link_libraries(MyExeOrLib PUBLIC Minuit2::Minuit2)
You do not need to add include directories or anything else for Minuit2; the CMake target system handles all of this for you.
Packaging
To build a binary package (add other generators with -G
):
make package