Math Libraries
MathCore
- TKDTree: new class for representing a kd-tree (a k-dimensional tree). See the TKDTree class documentation for a detailed description of the method.
- TMath: change slightly the signature of TMath::Sort(n,x,w). Now the type of the index array (w) and the type of the size (n) have to be the same. Before the type of (n) was not templated and was a Long64_t, therefore, due to automatic compiler conversion one could instantiate for example a TMath::Sort by having as unsigned int for the size for the array and int for the array. Now this is not possible anymore and one must pass the same type. This is now consistent with other similar TMath functions. Now in the CINT dictionary contains also the instantiations for both cases of Long64_t and Int_t for the size (and index array) types.
-
Fixed a bug in the ROOT::Math::landau_pdf function. Now it evaluates to the correct normalized distribution when the scale factor is different than 1.
- TVirtualFitter: move TVirtualFitter from base to mathcore. Setting the minimizer parameters is done via the new class ROOT::Math::MinimizerOptions. Fixed also a bug in the TVirtualFitter destructor, which was preventing the deletion of the static instance and causing in same cases memory leaks.
- ROOT::Math::MinimizerOptions: new class keeping the minimizer control parameters, minimizer name and algorithms. Static values of the parameter exist and can be set and retrieved via corresponding static methods.
- Fitting Classes: improve in general all classes in view of using them in the histogram and graph fitting routines. Few bugs have been as well fixed (see the cvs log for details).
MathCore
- Fixed a bug in setting the VEGAS integration mode in the GSLMCIntegrator class.
Fumili
- Add implementation of Minimizer interface using TFumili.
Minuit
-
In TMinuitMinimizer: do not delete the contained TMinuit reference, but maintain it alive, and accessible outside as gMinuit. It can then be used after fitting, for example for drawing contour plots.
-
TLinearMinimizer: add support for robust fitting
Minuit2
- Add support to perform parallel minimization using a thread for each gradient calculation with openMP. In the ROOT environment the Minuit2 library can be build using openMP ( -fopenmp compilation flag for gcc) if the environment variables USE_PARALLEL_MINUIT2 and USE_OPENMP are set.
In the Minuit2 standalone built libraries (using autoconf) support for openMP is automatically enabled, whenever the compiler supports it (for example for gcc version >= 4.2). Some small changes have been applied in Minuit2 to make it thread safe. For example, when transforming from internal to external values, the parameter values are not cached anymore in MnUserTransformation class.
- DavidonErrorUpdator: add an additional check to avoid a division by zero.
- In Minuit2Minimizer fill the status information according to the minimizer result
GenVector
- Change the way the exception are thrown in the package (class GenVector_exception). Now, the GenVector_exception class is created only when the throwing of exception is enabled. This avoids the allocation of an un-needed std::string. This problem was observed in CMS when converting from 4D-vectors based on mass to standard (x,y,z,t) vectors, when the mass is zero. In this case, a numerical error creates artificially small negative masses returned by the (x,y,z,t) vector. Eventually a protection could be added when calculating M2(), to avoid negative values due to numerical rounding.
- Fix a problem in the assignment operator of the ROOT::Math::PxPyPzM4D class. Avoid having nan when converting for example from PxPyPzME4D to PxPyPzM4D when the mass is negative.
- Throw always exception in the non-supported setters (i.e. SetPt on a PxPyPzEVector) methods, which are generated only for the CINT dictionary. These methods flag a compiled-error when running in C++ mode.
Physics
-
TLorentzVector:Change in the implementation of the function SetPtEtaPhi and SetPtEtaPhiM the algorithm to calculate z from pt and eta. Use now, as in the GenVector package, the expression z = pt * sinh(eta) instead of using the tangent and the arc-tangent. This is is more efficient and avoids a problem found on 64 bit machines when eta=0. by Dariusz Miskowiec.
Unuran
- New version (1.3) from Josef Leydold fixing some warnings on Windows Visual Studio 9.