[ROOT] ROOT version 2.25 is now available

From: Rene Brun (Rene.Brun@cern.ch)
Date: Thu Jun 22 2000 - 17:09:50 MEST


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