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