Root version 2.22/04 first public pre-relerase now available

From: Rene Brun (Rene.Brun@cern.ch)
Date: Fri Jun 04 1999 - 15:45:16 MEST


Today, we are exposing the first public pre-release of Root version
2.22.
this version is stamped 2.22/04 and the main features are listed below.
For more details, see URLs:

 http://root.cern.ch/root/News.html
 http://root.cern.ch/root/Version222.html
 http://root.cern.ch/root/html/examples/V2.22.txt.html

Rene Brun  &  Fons Rademakers




- New CINT 5.14.4:

- ==========>>IMPORTANT NEW FEATURE IN THE I/O SUBSYSTEM<<=============
  TBuffer: WriteObject() now inserts a byte count in front of the buffer
  and ReadObject() checks at the end of reading the byte count. If the
  byte count is not correct the buffer is positioned at the location
  specified by the byte count so that a next object in the same buffer
  can still be correctly read. This new feature is very useful to detect
  if a Streamer() is out of sync compared to the data on the file. Also
  it will allow the system to skip data of an unkown class (class info
  has been lost or shared lib is not loaded), but still correctly read
  the other data. 
  ROOT FILES WRITTEN WITH BY THIS AND HIGHER (>= 2.22) VERSIONS OF OF
THE
  SYSTEM CANNOT BE READ BY PREVIOUS (< 2.22) VERSIONS. PLEASE UPGRADE.

- rootcint: generate Streamer code for STL containers vector, list,
  deque, map, set, multimap and multiset. It is now possible to do
  automatic I/O for classes containing these containers.

- Several changes in class TH1
  ============================
  - new member functions to return a random number distributed according
    the contents of a histogram.
     Axis_t   GetRandom();  // for 1-d
     void     GetRandom2(Axis_t &x, Axis_t &y); //for 2-d
     void     GetRandom3(Axis_t &x, Axis_t &y, Axis_t &z); //for 3-d
    For the 3 cases GetRandom computes the integral of the bins if not
yet done).
    This integral (fIntegral) is normalized to 1 and a random number
    returned following this integral.

  - existing functions TH1::FillRandom(TF1*) and TH1::FillRandom(TH1*)
    have been modified. TH1::FillRandom(TH1*) has been rewritten to use
    the new TH1::GetRandom functions. The new function does not require
    that the source and destination histogram have the same number of
bins or
    bin limits. Statistics are also correctly filled.

  - Changes in prototype for TH1::DrawCopy from
     old: void    DrawCopy(Option_t *option="");
     new: TH1    *DrawCopy(Option_t *option="");


- Changes in TTree::MakeClass. The new version generates a skeleton
  analysis function allowing a better performance when reading the tree.
  In addition, to the list of leaf (variable) names, the new version
also
  generates for each branch a member like:
    TBranch *b_branchname;
  In the analysis loop, one can call
      b_branchname->GetEntry(entry) to read only the variables belonging
  to this branch. The branch pointers are initialized in the Init
function.
  Note that if b_branchname->GetEntry(entry) is invoked more than once
  for the same entry, the subsequent calls return immediatly from
GetEntry.

- ==========>>>>WARNING  Terminology change in TTree.<<=================
  We now call "entry" what was called "event"
  We have added the following functions
     TTree::GetEntry
     TChain::GetEntry
     TBranch::GetEntry
  These new functions behave like the old GetEvent functions.
  We have left the old GetEvent functions for backward compatibility.
  However, note that these old functions call the new functions
GetEntry.
  We strongly encourage you to make the corresponding changes in your
code.

- New class in patch EG: TParticle. This new class replaces the old
class
  TPrimary (left for compatibility).
  The classes TGenerator, TVenus, TPythia changed to use the new class.
  TGenerator::GetPrimaries has been renamed TGenerator::ImportParticles.

- New class TTabCom: very useful new class made by Christian Lacunza
  <lacunza@cdfsg5.lbl.gov>. This class performs basic tab completion.
  You should be able to hit [TAB] to complete a partially typed:

     username
     environment variable
     preprocessor directive
     pragma
     filename (with a context-sensitive path)
     public member function or data member
     global variable, function, or class name

- IMPORT CHANGE for LINUX users. in $kumacs/globals and all makefiles
  the options  -fno-rtti -fno-exceptions have been removed.
  When we moved from gcc to egcs1.0 about 1 year ago, we found out that
  using the default compiler options was generating a huge overhead in
  space in the object files. In particular the exceptions could generate
a few
  tens of kilobytes of additional code compared to no-exceptions. We saw
many
  cases of small and medium size classes (in fact the majority) for
which the
  object file was more than double.
  Because support for rtti and exceptions was supported by only a few
  compilers at the time, we set by default the options above.
  egcs1.1 is now generating a more compact code than its predecessor
  and is quickly becoming the standard compiler on Linux.
  We have compared a few weeks ago the overhead induced by each option
  above and found the following result on the Root classes
   -rtti overhead = 1.2 per cent (totally negligible)
   -exceptions    = 20 per cent
  The overhead generated by the exceptions option is still not
negligible.
  However, we have decided to compile Root with the default egcs
options.



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:34 MET