MathCore

MathCore contains now the classes in the math directory, TMath, TComplex and the TRandom classes. This implies that all other ROOT library using one of these classes, such as libHist, have a direct dependency on the Mathcore library. Linking with libMathCore is therefore required for running any major ROOT application. It has been added to the list of libraries obtained when doing root-config --libs.

N.B. users building ROOT applications and not using root-config MUST add libMathCore to their list of linking libraries.

Together with the libraries merge, many changes have been applied to both TMath and the other mathcore classes.

TMath

A major clean-up and re-structuring has been performed for the TMath functions. In particular some functions have been implemented using STL algorithms which have shown for these case better berformances in term of CPU time. The file TMathImp.h contains the implementations for the template functions. Some of the basic special functions of TMath, like the error function or the gamma and beta functions use now the Cephes implementation from Stephen L. Moshier, which is used by the ROOT::Math functions and it has been found to be more accurate and in some cases even faster. More detailed information on the new mathematical functions can be found in this presentation from M. Slawinska.

GenVector

The new physics vector classes have been moved out from the MathCore library in a new library, libGenVector. The library contains as well the CINT dictionary including main instantiations for the template classes.

Fit

Mathcore include now new classes for performing fits and minimization of multi-dimensional functions. These aim of these classes is to extend and improve the fitting functionality provided in ROOT via the TVirtualFitter classes and the Fit method present in many data analysis object, such as TH1.
The fit data are decoupled from the fitter class and described by the ROOT::Fit::BinData for bin data containing coordinate values of any dimensions, bin content values and optionally errors in coordinate and bin content, and ROOT::Fit::UnBinData classes for any dimension un-bin data.
The fitter class provides the support for fitting those data with any model function implementing the parametric function interface, ROOT::Math::IParamMultiFunction. Fit methods such as least square, bin and un-bin likelihood are supported. The fit solution is found by using the ROOT::Math::Minimizer class.
Various implementation can be used automatically using the ROOT plug-in manager mechanism, including the linear fitter for a fast and direct solution, in case of a linear least square model, or by using Minuit, Minuit2 or GSL minimization methods provided by the MathMore library.

Functions for filling the new ROOT::Fit::BinData classes with all the histogram and graph types have been added in the histogram library (libHist) and graph library:

Additional MathCore changes

More detailed description of the current MathCore release can be found at this location.



MathMore

This new release contains:

More detailed description of the current MathMore release can be found at this location.

 

Hist

The hist library now depends on libMathCore which must be linked whenever one needs to use the histogram library. The major changes have been done in the TF1 class.

Minuit

Two new classes have been added: In addition, the method TLinearFitter::SetBasisFunction(TObjArray * f) has been added to set directly the linear terms of the fit function.