The SMatrix has been deeveloped initially by T. Glebe of the Max-Planck-Institut, Heidelberg, as part of the HeraB analysis framework. A subset of the original package has been now incorporated in the ROOT distribution, with the aim to provide to the LHC experiments a stand-alone and high performant matrix package for reconstruction. The API of the current package differs from the original one, in order to be compliant to the ROOT coding conventions.
SMatrix contains generic Matrix and Vector classes to describe matrix and vector of arbitrary dimensions and of arbitrary type. The classes are templated on the scalar type and on the size of the matrix (number of crows and columns) or the vector. Therefore, the size has to be known at compile time. SMatrix does not contain separated classes to describe symmetric matrices. One should then model a symmetric matrix with the ROOT::Math::SMatrix class, instantiated with dimension D1=D2.
It is not in the mandate of this package to provide a complete linear algebra functionality for these classes. What is provided are the matrix-matrix, matrix-vector, vector-vector operations, plus some extra functionality for square matrices, like inversion, which is based on the optimized Cramer method for squared matrices of size up to 6x6, and determinant calculation.
The SMatrix package contains only header files. Normally one does not need to build any library. In the ROOT distribution a library, libSmatrix is produced with the C++ dictionary information for some squared matrices and vectors.
The current version of SMatrix can be downloaded from here. If you want to install the header files or run the test configure script and then make install or make check to build the tests. No dictionary library is built in this case.
1.4.5