# ROOT Math Work Package

## Math: The ROOT Mathematical Libraries

The ROOT Math package consists of the following components:

- MathCore: a self-consistent minimal set of tools required for the basic numerical computing. It provides the major mathematical functions in the namespaces `ROOT::Math` and `TMath`, classes for random number generators, `TRandom`, class for complex numbers, `TComplex`, common interfaces for function evaluation and numerical algorithms. Basic implementations of some of the numerical algorithms such as integration or derivation, are as also provided by MathCore. Furthermore, classes required for fit the ROOT data objects (and also any data sets) are as well provided.
- MathMore: package incorporating advanced numerical functionality and dependent on external libraries like the GNU Scientific Library (GSL). It complements the MathCore library by providing a more complete sets of special mathematical functions and implementations of the numerical algorithms interfaces defined in MathCore using GSL.
- Minimization and Fitting Libraries: libraries required for numerical minimization and fitting. The minimization libraries include the numerical methods for solving the fitting problem by finding minimum of multi-dimensional function. The current common interface for fitting is class `TVirtualFitter` and implemented by derived classes in the minimization and fitting libraries. The fitting in ROOT is being re-organized and new fitting classes are present in MathCore for providing the fitting functionality and the use the minimization libraries via a new common interface (`ROOT::Math::Minimizer`). In detail the minimization libraries, implementing all the new and old minimization interface, include:
  - Minuit:library providing via a class `TMinuit` an implementation of the popular MINUIT minimization package. In addition the library contains also an implementation of the linear fitter (class `TLinearFitter`), for solving linear least square fits.
  - Minuit2: new object-oriented implementation of MINUIT, with the same minimization algorithms (such as Migrad or Simplex). In addition it provides a new implementation of the Fumili algorithm, a specialized method for finding the minimum of a standard least square or likelihood functions.
  - Fumili: library providing the implementation of the original Fumili fitting algorithm
- Linear algebra. Two libraries are contained in ROOT for describing linear algebra matrices and vector classes:
  - Matrix: general matrix package providing matrix `TMatrix` and vector `TVector` classes and the complete environment to perform linear algebra calculations, like equation solving and eigenvalue decompositions.
  - SMatrix: package optimized for high performances matrix and vector computations of small and fixed size. It is based on expression templates to achieve an high level optimization.
- Physics Vectors: classes for describing vectors in 2, 3 and 4 dimensions (relativistic vectors) and their rotation and transformation algorithms. Two package exist in ROOT:
  - Physics: library with the `TVector3` and `TLorentzVector` classes.
  - GenVector: new library providing generic class templates for modeling the vectors.
- Unuran: package with universal algorithms for generating non-uniform pseudo-random numbers, from a large classes of continuous or discrete distributions in one or multi-dimensions.
- Foam: multi-dimensional general purpose Monte Carlo event generator (and integrator). It generates randomly points (vectors) according to an arbitrary probability distribution in n dimensions.
- FFTW: library with implementation of the fast Fourier transform (FFT) using the FFTW package. It requires a previous installation of (FFTW).
- MLP: library with the neural network class, `TMultiLayerPerceptron` based on the NN algorithm from the mlpfit package.
- Quadp: optimization library with linear and quadratic programming methods. It is based on the Matrix package.
- Statistic classes for computing limits and confidence levels. More detailed is provided here. Some of these classes are currently provided by libPhysics.

Further information is available at the following links:

- ROOT Mathematical Library Web page
- ROOT Math doxygen class documentation
- The Math chapter in the user guide
- The Linear Algebra chapter in the user guide
- The Physics Vector chapter in the user guide
- Inventory of Math functions and algorithms

Last modified: Thu Mar 5 16:03:07 CET 2009