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