The Minuit2 library is a new object-oriented implementation, written in C++, of the popular MINUIT minimization package. These new version provides basically all the functionality present in the old Fortran version, with almost equivalent numerical accuracy and computational performances. Furthermore, it contains new functionality, like the possibility to set single side parameter limits or the FUMILI algorithm, which is an optimized method for least square and log likelihood minimizations. The package has been originally developed by M. Winkler and F. James. More information on the new C++ version can be found on the MINUIT Web Site.
Minuit2, originally developed in the SEAL project, is now distributed within ROOT. The API has been then changed in this new version to follow the ROOT coding convention (function names starting with capital letters) and the classes have been moved inside the namespace ROOT::Minuit2. In addition, the ROOT distribution contains classes needed to integrate Minuit2 in the ROOT framework.
A new class has been introduced, ROOT::Minuit2::Minuit2Minimizer, which implements the interface ROOT::Math::Minimizer. Within ROOT, it can be instantiates also using the ROOT plug-in manager. This class provides a convenient entry point for using Minuit2. An example of using this interface is the ROOT tutorial tutorials/fit/NumericalMinimization.C or the Minuit2 test program testMinimize.cxx
.
A standalone version of Minuit2 (independent of ROOT) can be easily built and installed using CMake
. See this README
for the instructions on how to get the sources, building and installing a stand-alone Minuit2.
The Minuit2 User Guide provides all the information needed for using directly (without add-on packages like ROOT) Minuit2.