We are happy to announce the release of version 2.25 of ROOT.
Since this new version contains many new features we've bumped the
version number from 2.24 to 2.25. We believe that most changes are
backward compatible, except in a few cases indicated below.
Before upgrading read carefully this document.
Main changes:
- change from single to double precision in many classes
- better handling of arrays in TTree::Draw()
- source now maintained and available in CVS and new makefiles
- full cross-reference of the latest sources available on the web
- ported to even more hardware (including Intel's new Itanium)
- rootd and proofd now use official IANA assigned port numbers
In more detail:
Axis_t and Coord_t promoted from Float_t to Double_t
====================================================
As a consequence, the TAxis class, the TH1, TF1 classes and TGraph use
double precision for all internal and external parameters dealing
with axis coordinates. The new Root version can read old histograms.
This change affects many class constructors, getters and setters.
For example, the normal constructor for a TH1F has been changed from
TH1F(const char* name,const char* title,int nbinsx,float xlow,float xup)
to:
TH1F(const char* name,const char* title,int nbinsx,double xlow,double xup)
All constructors expecting previously a float* argument are still there,
but a new constructor with a double* argument has been implemented.
All pad graphics in double precision
====================================
All classes TPad, TCanvas, TLine, TBox, TGaxis, etc use now double precision
arguments. Internal data members have also been changed to double.
Note some backward incompatibilities such as:
TPad::GetRange, TPad::GetRangeAxis, TView::GetRmin, TView::GetRmax
All TTree selections and graphics promoted to double precision
==============================================================
As a consequence the return code for TTree::GetV1,2,3 has been changed
from float* to double*.
New classes TVectorD and TMatrixD in addition to TVector and TMatrix
====================================================================
These changes solve all precision problems reported so far.
Major extensions to TTree::Draw
===============================
The functionality of TTree::Draw has been upgraded to handle a wider
variety of operations involving arrays; TClonesArrays are here
considered as a variable size arrays.
Let assumes, a leaf fMatrix, on the branch fEvent, which is a 3 by 3
array. In a TTree::Draw expression you can now access fMatrix using
the following syntax:
String passed What is used for each entry of the tree
"fMatrix" 9 elements of fMatrix
"fMatrix[][]" 9 elements of fMatrix
"fMatrix[2][2]" only the elements fMatrix[2][2]
"fMatrix[1]" 3 elements fMatrix[1][0], fMatrix[1][1] and fMatrix[1][2]
"fMatrix[1][]" 3 elements fMatrix[1][0], fMatrix[1][1] and fMatrix[1][2]
"fMatrix[][0]" 3 elements fMatrix[0][0], fMatrix[1][0] and fMatrix[2][0]
"fEvent.fMatrix...." same as "fMatrix..." (unless there is more than one
leaf named fMatrix!).
In summary, if a specific index is not specified for a dimension,
TTree::Draw will loop through all the indices along this dimension.
Leaving off the last (right most) dimension of specifying then with the
two characters '[]' is equivalent.
For variable size arrays (and TClonesArray) the range of the first
dimension is recalculated for each entry of the tree.
TTree::Draw also now properly handling operations involving 2 or more
arrays.
Let assume a second matrix fResults[5][2], here are a sample of some
of the possible combinations, the number of elements they produce and
the loop used:
expression element(s) Loop
"fMatrix[2][1] - fResults[5][2]" one no loop
"fMatrix[2][] - fResults[5][2]" three on 2nd dim fMatrix
"fMatrix[2][] - fResults[5][]" two on both 2nd dimensions
"fMatrix[][2] - fResults[][1]" three on both 1st dimensions
"fMatrix[][2] - fResults[][]" six on both 1st and 2nd dimensions
of fResults
"fMatrix[][2] - fResults[3][]" two on 1st dim of fMatrix and 2nd
of fResults (at the same time)
"fMatrix[][] - fResults[][]" six on 1st dim then on 2nd dim
In summary, TTree::Draw loops through all un-specified dimensions. To
figure out the range of each loop, we match each unspecified dimension
from left to right (ignoring ALL dimensions for which an index has been
specified), in the equivalent loop matched dimensions use the same index
and are restricted to the smallest range (of only the matched dimensions).
When involving variable arrays, the range can of course be different
for each entry of the tree.
So the loop equivalent to "fMatrix[][2] - fResults[3][]" is:
for (Int_t i0; i < min(3,2); i++) {
use the value of (fMatrix[i0][2] - fMatrix[3][i0])
}
So the loop equivalent to "fMatrix[][2] - fResults[][]" is:
for (Int_t i0; i < min(3,5); i++) {
for (Int_t i1; i1 < 2; i1++) {
use the value of (fMatrix[i0][2] - fMatrix[i0][i1])
}
}
So the loop equivalent to "fMatrix[][] - fResults[][]" is:
for (Int_t i0; i < min(3,5); i++) {
for (Int_t i1; i1 < min(3,2); i1++) {
use the value of (fMatrix[i0][i1] - fMatrix[i0][i1])
}
}
It should also handle properly operations including arrays of the same
number of dimensions but different sizes.
Other important improvements
============================
The TH2 and TH3 FitSlice, Profile and Projection functions work now
with fixed AND variable bin size axis.
New symbols in TLatex + several tiny improvements.
A new function TTree::UnbinnedFit().
Many add-on libraries now available by default in binary distributions
======================================================================
We provide now in all binary distributions by default TrueType font,
OpenGL and RFIO support. No need to install yourself these add-on
components. To use TrueType fonts one still has to get (once) the
TrueType fonts (see http://root.cern.ch/root/TrueType.html).
Some platforms also come with the MySQL interface library.
Also available are the Pythia event generator interface libraries.
For the people building ROOT from source we provide pre-built libraries
for all needed external components:
ftp://root.cern.ch/root/ttf
ftp://root.cern.ch/root/opengl
ftp://root.cern.ch/root/shift
ftp://root.cern.ch/root/pythia
ftp://root.cern.ch/root/xpm
How to use these libraries is explained in detail in
http://root.cern.ch/root/Install.html
Source in CVS
=============
We now maintain the ROOT source in CVS. Users can use anonymous
CVS to track the "latest greatest" developments. Use this to get your
latest bug fix in between official releases. At the same time we
introduced a new, very efficient, Makefile system. For more see
http://root.cern.ch/root/CVS.html.
LXR based source cross-reference
================================
A full cross-reference of the complete source in CVS is available on
the web. See http://root.cern.ch/lxr/. This cross-reference is updated
every 6 hours to reflect the status of the CVS repository.
New platform support
====================
Newly supported platforms are:
- Compaq Alpha Linux (64 bits)
- Intel Itanium Linux (64 bits)
For both platforms binary versions are available.
Change in port numbers for rootd and proofd
===========================================
The rootd and proofd daemons now use official IANA assigned port
numbers. This requires a change in the /etc/services and /etc/inetd.conf
system files. See http://www.isi.edu/in-notes/iana/assignments/port-numbers
and search for "rootd".
Changes in ROOTMARKS
====================
The tutorials/benchmarks.C and test/stress now normalized to 200 ROOTMARKS
on a Pentium III 600 Mhz instead of 27 ROOTMARKS on an HP735/99 Mhz.
Many minor changes
==================
Please read very carefully the long list of changes in the release notes at:
http://root.cern.ch/root/html/examples/V2.25.txt.html
AFS files updated
=================
new -> 2.25
pro -> 2.23
old -> 2.22
Happy rooting....
Rene Brun & Fons Rademakers
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:28 MET