Title: SMatrix
1MathCore contains presently the basic
Mathematical functionality such as evaluation of
special and statistical functions and physics and
geometry vectors. It is expected to be extended
to include basic mathematical functionality
present currently in libCore, like the random
number classes. SMatrix is a package for
providing optimized matrix compuation for small
(dimension lt 610) and fixed (at compile time)
matrices. MathMore is a package with some extra
functionality typically less used than those in
MathCore. The current implementation in MathMore
is based on GSL.
- Mathematical Functions in MathCore and MathMore
- Special Functions
- use interface proposed to C standard
- double cyl_bessel_i (double nu, double x)
- Statistical Functions
- Probability density functions (pdf)
- Cumulative dist. (lower tail and upper tail)
- Inverse of cumulative distributions
- Coherent naming scheme. Example ?2 distribution
- chisquared_pdf
- chisquared_cdf, chisquared_cdf_c,
- chisquared_quantile, chisquare_quantile_c
- Improved precision for the new functions
- comparison tests with TMath and Mathematica
- SMatrix
- Package with matrix and vector classes of
arbitrary type (initially developed by T. Glebe
for HeraB software) - complementary to TMatrix (not a replacement)
- for fixed (not dynamic) matrix and vector sizes
- SMatrixlt double, 2 , 5gt, SVectorlt double, 5 gt
- optimized for small matrix sizes
- use expression templates to avoid temporaries
- support for vector-matrix arithmetic operations
and matrix inversion, but not full linear
algebra functionality - Test performances in matrix operations and Kalman
filter
On lxplus (slc4 dual-core Intel 64 bits)
For various platforms
- 3D and 4D Vector packages
- Generic Vector package properties
- Possible to choose the internal coordinate
system. The Coordinate system type is a template
parameter of the vector class - LorentzVectorltPxPyPzE4D lt double gt gt
- LorentzVectorltPtEtaPhiE4D lt double gt gt
- Coordinate system classes
- Cartesian3D,Polar3D,Cylindrical3D,CylindricalEta3D
- PxPyPzE4D,PxPyPzM4D,PtEtaPhiE4D,PtEtaPhiM4D
- Vector classes template on the scalar type
- Point and Vector distinction in 3D
- Displacement3DVector lt Cartesian3D ltdouble gt gt
- Position3DPoint lt Cartesian3D ltdouble gt gt
- Transformation classes (based on double
precision) - 3D Rotation classes
- Rotation3D,AxisAngle,EulerAngles,Quaternion
- RotationX, RotationY, RotationZ
- LorentzRotation classes
- LorenzRotation,Boost, BoostX, BoostY, BoostZ
- Random Numbers
- TRandom
- base class with methods for generating random
numbers according to various distributions - contain a very simple, bad quality generator
- TRandom3 Mersenne-Twister generator
- good random quality, very long period (106000),
fast - TRandom1 RanLux generator (from M. Lüscher )
- proven random quality but not very fast
- TRandom2 Tausworthe (from LEcuyer)
- fast generator with acceptable quality (period
1026)
- Quality and CPU performance tests for uniform
generators - on lxplus
- (slc4 dual-core Intel 64 bits)
- New algorithms for non-uniform generators
- Use also UNURAN package for generating
non-uniform random numbers
- no virtual functions
- use of inline methods
- user can choose optimal coordinate system
according to the use case - E.g. make CylindricalEta based vectors when
cutting on ?R
On lxplus (slc4 dual-core Intel 64 bits)
ROOT Users Workshop, CERN, March 26-28, 2007