You are here

Math

The ROOT framework provides support for a variety of mathematical and statistical functions, grouped into few packages. The standard C math library, together with extensions like the support for complex numbers and pseudo-random generators, is provided by the MathCore package, that also includes physics vectors. Additional algorithms and pseudo-random number generators are provided by the MathMore package, whereas linear algebra has its own package. Different minimization engines are available in the fitting and minimization category, whereas the statistical libraries include a number of tools.

ROOT provides different pseudo-random number generators for the uniform distribution between 0 and 1, including the Ranlux engine, the generator by L'Ecuyer and the Mersenne twister MT19937 generator (the default one). In addition, the user can find generators corresponding to the most common distributions, e.g. the exponential, Gauss, Landau, Breit-Wigner (aka Cauchy), Poisson and binomial distributions. An interface to the UNU.RAN ANSI C library is also available (TUnuran), that allows to generate numbers accordingly to a very large class of distributions (in one or multi-dimesnions).

ROOT provides physics vectors used to represent spacetime vectors and their transformations. The most important class is TLorentzVector, inheriting from TObject, but its projections in 3D and 2D space also exist (TVector3 and TVector2). Other implementations (not inheriting from TObject) are also available. The GenVector package can represent vectors in 3 and 4 dimensions, together with their operations and transformations (such rotations and Lorentz transformations). They are different from the vectors provided by the linear algebra package, describing generic n-dimensional vectors. The ROOT Math library also provides classes representing points and several coordinate systems.

Operations on vectors can be applied with the matrices provided by the linear algebra package. All matrix operations are supported, together with several matrix decompositions. In addition, eigenvalues and eigenvectors may be computed with real matrices.

The MathMore library provides an advanced collection of functions and C++ classes for numerical computing, including special functions not included in MathCore, probability density functions and cumulative distribution functions, numerical integration and differentiation, root solvers, minimization, interpolation and function approximation. The mathematical functions belong to the namespace ROOT::Math.

Minimization is an important part of the statistical data analysis, being used to find the best parameters for the fitting function. In addition to the interface to the FORTRAN minimization package MINUIT (via TMinuit), ROOT also provides a new C++ re-implementation called Minuit2, with extended functionality. Another available fitter is Fumili2.

Classes for computing limits and confidence levels are also provided. In addition, multi-variate analysis is also supported directly (neural networks, principal component analysis, minimum covariance determinant estimator) or via the external package TMVA.

Further documentation can be found here.