ROOT Version 2.00 Release Notes

//________________________________________________________________________
//
//::>          VERSION  2.00/09   27/06/98 09.23.55
//
//
// 27/06/1998  01.25.52  by  Fons Rademakers
//
- Introduction of Makefiles. The makefile system consists of a main,
  machine independent back-end, Make-macros, and several, machine dependent
  front-ends, Makefile.linux, Makefile.linuxegcs, etc. The individual
  file dependencies are stored in Make-depend. To use the makefiles
  create a link called Makefile to the desired front-end:

      cd $ROOTSYS/src
      ln -s Makefile.linux Makefile

  To build the complete system type:

      make distclean; make

  Make must be GNU make (gmake on some platforms). If you have an SMP
  system you can do:

      make -j <n>

  Where <n> is the number of CPU's you want to use in parallel.

  To be able to regenerate the Make-depend file one needs a special
  fixed "makedepend" program (the original "makedepend" does not work
  do to a bug in the handling of C++ comments, //). Source of this fixed
  "makedepend" program is available from ftp://root.cern.ch/root/mkdep.tar.gz.
  After compilation install it in $ROOTSYS/bin. To use it type:

      make depend

  However, the provided Make-depend file is up to date.

  More makefile front-ends for different platforms will be released
  in the coming weeks via the ROOT web site.

- Changes in a number of installation KUMACS to prepare for Makefiles.

- TH1 and TF1: fix bug in which wrong object is set for the DrawPanelHist
  and FitPanel if invoked via contextmenu.

- TSlider: fix in SetRange(), min and max were not updated.

- TDrawPanelHist, TFitPanel: change cursor to watch when executing a command.

//
// 22/06/1998  08.40.19  by  Valery Fine
//
- Implement shapes TSPHE and TELTU.
  This has required changes in include files TTUBE

- Added examples of TSPHE in tutorial shapes.

- Changes in WinntSystem::ExpandPathName().  Now it

    1. Replaces all "$(" with "%"
       Replaces all ")"  with "%"

    2. Calls WIN32 API to expand all %name%

  This means it may expand  UNIX-like and Windows like environment
  variables.(for example $(rootsys) and %rootsys% too)//

- Changed TClass::Draw() to draw an array index (like Html does).

- Changed THtml class to hyperize pointers to arrays as well.

//
// 21/06/1998  23.43.46  by  Rene Brun
//
- Mods in TTree::MakeCode. The code generated takes into account
  repetitive executions. The Root file is only connected once.

- New tutorial zdemo illustrating graphs in log scale and annotations.
  Thanks to Michael Tokarev and Elena Potrebenikova (JINR Dubna)

- Modify TDialogCanvas::Apply to show the cursor watch

- Modify TCanvas::Update to reset the current cursor to the cross shape.

- Modify FitPanelGraph to set the Watch cursor.

- Implement Getters for all geometry classes.

- Fix clipping for 3-D primitives. Changes are in:
     TPad::PaintLine3D
     TPolyLine3D::PaintPolyLine
     TPolymarker3D::Paintpolymarker

- Introduce bit mask operations in TTreeFormula. The logic was already
  available in TFormula.

- Modify TH1::GetObjectInfo to take into account the axis range when
  computing the integral for the histogram. The info reported by
  this function is reported in the canvas event status. When the histogram
  DrawPanel is active, the slider can be used to set the axis range.
  This feature can be used to interactively evaluate the integral of an
  histogram in the range defined by the slider.

- Fix a bug in TSliderBox in case of vertical sliders.

- Fix a problem in TBranchClones::Reset. The number of entries and the baskets
  in the branchcount of a TBranchClones were not reset.

- Merge with Valery's version. Main changes are in macros.
  class TPythia now OK for NT.

- Include changes from Kris Hagel and Kaori Wada for the VMS version.
//
// 10/06/1998  12.46.57  by  Fons Rademakers
//
- TKey: before writing and reading an object (via Streamer) we register
  the object in the TBuffer map keeping track of written and read
  objects. This prevents double writing of objects that contain pointer
  to themselves. This mod is completely backward compatible.
  Same change made in TMapFile.
  HOWEVER: NOTE that files written with this version of Root cannot be read
  by old versions of the system.

- TObject: simplified Clone() and now also handles case of self reference
  more efficiently.

- TServerSocket: inherits now from TSocket. The main advantage is that a
  server socket can now be monitored by a TMonitor for a connection. Only
  when the monitor returns the server socket (because a connection is
  attempted) we call Accept() which will not block since the connection
  can be established immediately. Usage is demonstrated in the new tutorial
  hserv2.C.
//________________________________________________________________________
//
//::>          VERSION  2.00/08   05/06/98 14.36.25
//
//
// 04/06/1998  15.38.43  by  Rene Brun
//
- Several new functions have been introduced in the TTree class.
  TTree::CopyEvents to copy events from a Tree to this tree.
  TTree::CloneTree. The default value for the number of events to copy
  has been changed. By default the new function copy all events.

- The TTree::SetBranchStatus information is now persistent. The next session
  will remember the branch status. A new function TTree::UpdateActiveBranches
  is automatically called by TTree::Streamer to rebuild the list of
  active branches.

- Thanks to the above changes and new functions, one can now copy a subset
  of a Tree to a new Tree. The subset can be a subset of all events and/or
  a subset of the branches. Two example macros (CopyTree and CopyTree2)
  have been added to the list of tutorials to illustrate the two cases.

- Several changes in the TEventList class. A TEventList object is a list
  of TTree event numbers. A TEventList object can now be automatically
  generated by a TTree::Draw (see below). Note that a TEventList object
  is automatically added to the list of objects in the current directory.
  To get this object from the current directory, use:
    TEventList *elist = (TEventList*)gDirectory->Get(list_name);

- Several changes in TTree::Draw and TTree::Scan to activate TEventList
     Saving the result of Draw to a TEventList
     =========================================
  TTree::Draw can be used to fill a TEventList object (list of event numbers)
  instead of histogramming one variable (say varexp).
  If varexp has the form >>elist , a TEventList object named "elist"
  is created in the current directory. elist will contain the list
  of event numbers satisfying the current selection.
  Example:
    tree.Draw(">>yplus","y>0")
    will create a TEventList object named "yplus" in the current directory.
    In an interactive session, one can type (after TTree::Draw)
       yplus.Print("all")
    to print the list of event numbers in the list.

  By default, the specified event list is reset.
  To continue to append data to an existing list, use "+" in front
  of the list name;
    tree.Draw(">>+yplus","y>0")
      will not reset yplus, but will enter the selected events at the end
      of the existing list.

      Using a TEventList as Input
      ===========================
  Once a TEventList object has been generated, it can be used as input
  for TTree::Draw. Use TTree::SetEventList to set the current event list
  Example:
     TEventList *elist = (TEventList*)gDirectory->Get("yplus");
     tree->SetEventList(elist);
     tree->Draw("py");

  Note: Use tree->SetEventList(0) if you do not want use the list as input.

  With this new functionality in TTree::Draw, the old (unimplemented)
  function TTree::Select has been deleted.

- New functions TPad::SetTickx, TPad::SetTicky, TPad::GetTickx, TPad::GetTicky.
  SetTickx, SetTicky force tick marks to be drawn on the horizontal, vertical
  outer axis respectively. The TPad class has two new data members, fTickx, fTicky.

- Protection in TRootIconBox::AddObjItem in case a directory contains
  a key corresponding to an object with a missing class definition.

- Mods in TChain constructor. By default add a TChainElement with name="*".
  This is necessary for anticipation of a construct like:
     chain->setBranchStatus("*",0);
     chain->SetBranchStatus("bname",1);

- Merge with Valery version. A few changes in h2root to take into account
  the DEC Fortran way of passing cahracter arguments (NT only).

- Change TCutG constructor. last two arguments are now optional.

- Modify TAttAxis::Streamer to take into account the case of old Root files
  generated in October 1996 with version 08/05.

- Implement new function TFile::GetVersion. This function returns the Root
  version number with which the file was initially created.

- Changes in TH1::PaintLego. When drawing the axis, one could not change
  the axis title size in case of lego/surface plots.
  (thanks to Rainer Cee for reporting).

- Due to several problems reported under WindowsNT (for example
  Postscript output was wrong), we have changed the level of optimization
  for C++ from -O2 to -O.

//
// 25/05/1998  20.30.26  by  Fons Rademakers
//

- Added new tutorials Dialogs.

- TRegexp added to dictionary (cint_base2).

- TClonesArray::Expand. Shrinking now OK.

- In TMapFile: Correction to acquire/release semaphores.

- In class THtml, functions THtml::WriteHtmlHeader and THtml::WriteHtmlFooter
  are declared virtual functions. This gives the possibility to customize the
  Root Html output.

- New function TObject::GetIconName. This function can be used to
  dynamically select the icon type shown in the browser.

- New function TCollection::SetParent.

- New constructor in TControlBar to control the position of the menu
  on the display. This has implied changes in classes TControlBar,
  TControlBarImp, TGuiFactory.
//
// 22/05/1998  12.36.14  by  Fons Rademakers
//
- TGTextEntry: text change events now also trigger the calling of the
  registered command (see TGWidget::SetCommand()).

- TRint: the name and location of the history file (default $HOME/.rootrc)
  can now be specified in the .rootrc file (resource Rint.History).
//
// 22/05/1998  10.47.33  by  Rene Brun
//
- Implement TProfile::Add, Divide and Multiply functions.

- Modify TGraphErrors constructor. All arguments except the first
  are now optional.

- Modify TH1::Scale. This function scales now both contents and errors (if any).
  The new function uses internally TH1::Add, but keeps the original
  number of entries.

//________________________________________________________________________
//
//::>          VERSION  2.00/07   19/05/98 08.15.23
//
//
// 19/05/1998  08.15.23  by  Rene Brun
//
- New function TH1::FillRandom(TH1 *hist, Int_t ntimes).
  This function can be used to fill this histogram randomly following
  the distribution in histogram hist. This new function is valid
  for 1-D, 2-D and 3-D histograms.

- Additions to TStyle. The function TStyle::SetLineStyleString accepts
  line styles in the range 1->29. Only 4 line styles were supported
  by the previous version. The functions TStyle::GetLineStyleString,
  TAttLine::Modify have been modified accordingly.

- The corrections introduced in 2.00/06 in TH1 functions to include
  underflows and overflows (Add, Multiply, Divide, Integral, FillRandom)
  have generated some side-effects in case of TH2 and TH3 objects.
  New code should work for all TH1 dimensions. (thanks Goetz Gaycken).

- One more fix in TPostScript::DrawPS function in case of fill area
  styles in the range (3000->3025). Histograms with only first bin filled
  were not correctly printed with PostScript. (thanks again Peter Wienemann ).

//
// 18/05/1998  21.28.30  by  Fons Rademakers
//
- TGPicturePool: picture cash was not working properly.

- TGClient: fRoot is now a TGFrame containing correct size of X11
  root window. This is necessary so dialogs can be centered on
  the root window, like:
  new TGFileDialog(gClient->GetRoot(), gClient->GetRoot(), kFDOpen, &fi);

- TUnixSystem: ExpandPathName was not working properly on AIX.
//________________________________________________________________________
//
//::>          VERSION  2.00/06   15/05/98 11.58.22
//
//
// 15/05/1998  10.06.42  by  Rene Brun
//
- Fix a memory leak in TClass::Draw. The memory leak was really apparent
  when processing a large number of classes with THtml::MakeAll.

- Fix a problem in TBasket::SetWriteMode. When a Tree was filled
  in two consecutive sessions, branches with only one basket in memory
  had a wrong start offset.

- New function TBasket::SetReadMode. This new function supports
  alternate read/fill operations in a TTree in the same session.

- Optimize computation of the default X axis range in TGraph::PaintGraph
  in case of log scale.

- One more tiny fix in TPostScript::DrawPS in case of fill areas
  with the special fill patterns.

- Changes in TGraph(Int_t n, Float_t *x=0, Float_t *y=0).
  The two last parameters are not optional.
//
// 12/05/1998  16.54.18  by   Kaori Wada and Kris Hagel
//              Cyclotron Institute, Texas A & M University
//
- Kaori has ported ROOT and CINT under VMS including full graphics.
  This version is included in the distribution, but a more intensive test
  is necessary before announcing this release.
  Porting on VMS has required changes in:
    - installation procedures ([.] instead of /) in diretory/file names
    - Implementation of the new class TVmsSystem.
    - mods in functions attach, Getline, keys and mvalloc.
    - mods in Rconfig
    - several changes in CINT
        - $FPROTO and $G__CI
        - functions macro, method and shl
   Many thanks to Kaori for this hard work. Kaori has been able to
   make the relevant changes with a minimum guidance from the Root team.
   Many thanks to Kris for his couragous initiative.
//
// 12/05/1998  16.11.53  by  Fons Rademakers
//
- TMessage: fix bug in case message contains objects of different classes.
  Example: TObjArray containing histograms (thanks Judith Katzy).

- The file $ROOTSYS/tutorials/.rootrc now shows all supported ROOT
  environment variables.

- Global gDebug: now int (was bool). When >4 X11 will be in synchronous mode
  which will allow better X11 debugging. gdebug is settable via .rootrc,
  via interpreter symbol gDebug or via debugger. Setting it via the interpreter
  to >4 will not cause synchronous mode because at that stage X11 is already
  initialized.

- TCanvas: new environment option Canvas.ShowEventStatus. When true
  every canvas will have by default the event status bar shown.

- Imported latest CINT 5.13.52:
   5.13.52 5 May 1998
   Otofuji-san's feedback,
   -                      , src/Makefile.base.nec fix
   G__OLDIMPLEMENTATION820, inherited virtual flag
   G__OLDIMPLEMENTATION821, p2f resolution bytecode vs compiled in shl.c
   -                      , G__define_var new_name length, f ( LongListOfArg )
//
// 07/05/1998  14.04.36  by  Fons Rademakers
//
- TGScrollbar: fix in scrolling up when clicking in scrollbar above slider.

- TGText: new text handling class in preparation for text editor widget.

- Import of latest CINT 5.13.51:
   5.13.50 25 Apr 1998
   G__OLDIMPLEMENTATION815, tempate<> class numeric_limits<float> { ... };
   G__OLDIMPLEMENTATION816, sizeof( signed char )
   G__OLDIMPLEMENTATION817, f() throw() ;
   G__OLDIMPLEMENTATION818, template<class T*> A { T a; } A<char*> b;
   G__OLDIMPLEMENTATION819, iostream style header with preprocessor

   5.13.51 1 May 1998
   -                      , Array index check changed for STL end() in pcode.c
//
// 06/05/1998  20.48.50  by  Rene Brun
//
- Changes in TH1::Integral, TH1::Add, TH1::Divide, TH1::Multiply.
  The Overflow bin was not taken into account.
  (thanks Goetz Gaycken ).

- In h2root, add option "P" in call HROPEN to preserve case
  of file name.

- Correct comments in TProfile (thanks Ludger Janauschek).

- Fix a problem in TTree::MakeCode in case of two dimensionnal array with
  a variable size first dimension. The second dimension was not generated
  in the declaration of the branch/leaf type. (Thanks Pasha Murat)

- Fix a small typo problem in TH1::PaintStat (thanks Mathieu de Naurois)
  The default width of the stats box could not be modified.
  GetStatH was used instead of GetStatW.

- Include changes from Thomas Hadig in TMinuit::mnplot.
  Thomas fixed several problems with the mixture of TString and char
  inside this function.

//
// 25/04/1998  14.30.12  by  Fons Rademakers
//
- Port to KAI KCC compiler (changes in several decks). Works except
  for CINT iostream (expect fix from Masa soon) and no support for
  ROOT's new/delete (reported to KAI). Link without ROOT's libNew.so.

- TGListBox: added multiselection option + speed inprovements in item
  add and delete. New features can be excercised in $ROOTSYS/test/guitest
  (by Reiner Rohlfs).

- TMap: important fix in TMap::Remove() (reported by Reid Rivenburgh).

- Import of latest CINT 5.13.49:
   5.13.47 2 Apr 1998
   G__OLDIMPLEMENTATION800, load XXX.dll with XXX.[DLLPOST] in MAKEINFO
   G__OLDIMPLEMENTATION801, reset G__reftype in G__memvar_setup()
   G__OLDIMPLEMENTATION802, #define A 3.14  , A -> 1.1343e-314 bug fix

   5.13.48 11 Apr 1998
   G__STD_NAMESPACE       , ON780 766 676 667, this does not work yet
   Scott Snyder's bug report
   G__OLDIMPLEMENTATION803, typedef foo<const const int> x;
   G__OLDIMPLEMENTATION804, G__library_func() in bytecode, result->ref=0 fix
   G__OLDIMPLEMENTATION805, Array index check changed for STL end()
   G__OLDIMPLEMENTATION806, throw bytecode turn off, segv
   G__OLDIMPLEMENTATION807, reference type global for dictionary generation
   G__OLDIMPLEMENTATION808, Eliminate gets in g__cfunc.c for ROOT

   5.13.49 18 Apr 1998
   G__OLDIMPLEMENTATION809, G__pointer2func recursive call bug fix
   G__OLDIMPLEMENTATION810, G__getexpr() a<b<c>> -> a<b<c> >
   -                      , G__stepmode(1) from interactive session bug fix
   G__OLDIMPLEMENTATION811,
   G__OLDIMPLEMENTATION812, memberfunc template
   G__OLDIMPLEMENTATION813, if(i) return x;  double x;  buf fix
   G__OLDIMPLEMENTATION814, new A(g->f(),g->f()); bug fix
//
// 22/04/1998  20.59.13  by  Rene Brun
//
- Fix a problem in h2root in case the Hbook ntuple block name include
  blank characters (eg 'BLOCK  0').

- Fix a problem in TGraph::PaintGraph. In case of a graph drawn with
  the option "F" (Fill area), the last point of the graph was not included
  in the fill area.
//________________________________________________________________________
//
//::>          VERSION  2.00/05   20/04/98 18.52.58
//
// 20/04/1998  18.24.39  by  Fons Rademakers
//
- The default canvas creation function TCanvas::MakeDefCanvas is now
  registered as soon as the library containing TCanvas is loaded.
  Before this was done in the InitGui routine, which required the initfunc
  arguments of the TROOT ctor to be set. So now only linking with libGPad
  is enough to get batch mode graphics.

- Class TDatime: new members functions to Set the time. Before the time
  was always the time of the creation of the TDatime object.

//
// 17/04/1998  12.04.26  by  Rene Brun
//
- Changes in TObject::Dump and TObject::Inspect to show the date/time
  instead of the compacted value stored in TDatime.
- A small problem fixed in TPostScript::DrawPS. When an histogram
  with only the first channel non-empty was drawn with fill area
  style = 3010, the Postscript ouput had some garbage. This garbage was not
  visible with Postscript viewers like gs or gv or Ghostview. It was only
  visible on the printer. This is in fact a bug in Postcript printers
  when printing some fill areas with special patterns.
  (thanks to Peter Wienemann for submitting a simple example)

- Correction in  g2root (thanks Federico Carminati).
  g2root routine toreal had a problem with numbers of the sort 3.33E-8 which
  are generated by the HP. In this case the number is written as .000000 by
  the write(s1,'(f14.7)')r. The scan starts after the point and skips
  backward al the 0's. Result nothing is written in the s string and the
  previous number is loaded. This does not happen on linux because numbers
  are written as 0.000 and so on...

//________________________________________________________________________
//
//::>          VERSION  2.00/04   07/04/98 16.02.38
//
//
// 06/04/1998  13.24.50  by  Rene Brun
//
 - Corrections from Victor Perevoztchikov <perev@mail.phy.ornl.gov>
   to run under SGI IRIX64.
   The changes are in installation macros: globals, sourcedir, selectsystem
    and install_h2root.
   Victor also fixed a problem in CINT/Error.
   Many thanks to Victor.

 - Bug fixed in TChain::SetBranchAddress
     reported by Laurent Aphecetche <aphecetche@ganil.fr>
   The correction implied changes in TChain.h and TChainElement.h.

 - In TDirectory. Added a protection against directory names including
   a slash.
   The logic with the special options "ROOT", "FILE" and "MAP" has been
   removed. The constructors from TFile, TMapFile and TROOT invokes
   the TDirectory default constructor and include the old special logic
   of TDirectory.

 - in TGraph. Clip correctly the graph when the pad range is smaller
   than the TGraph boundaries.

 - in TPaveLabel and TPaveText, optimize the estimation of the length
   of the strings by taking into account the special Postscript escape
   characters.

 - Additional protection introduced in TF1::EvalPar in case one executes
   a function compiled in a previous session, saved in a file,
   read again without providing the original version of the function.
        (thanks Carlos Lacasta)
   TF1 has two new functions TF1::Save and TF1::GetSave.
   TF1::Save is called by functions like TH1::Fit or TGraph::Fit
   to store the function values in an array in case of interpreted or
   compiled functions. This is necessary to display the shape of the function
   in a new session when the original definition of the user-defined function
   is not available anymore.
   When Painting the function, TF1::EvalPar will automatically call TF1::GetSave
   to return the function value from the values saved in a special array
   member of the TF1 class.

//
// 06/04/1998  13.24.50  by  Fons Rademakers
//

 - Support for Linux RedHat version 5 (glibc).

 - A few changes in TGSlider.

 - New version of CINT introduced (5.13.46 )  from Masa Goto.

  5.13.46 1 Apr 1998
  G__OLDIMPLEMENTATION794, #include ".." first try where source code exists
  G__OLDIMPLEMENTATION795, workaround to ON792  T() -> void*() -> (void*)()
  G__OLDIMPLEMENTATION796, void (*p2f[])() = {a,b,c}; bug fix
  G__OLDIMPLEMENTATION797, for(;;) { CLS x=init; } bug fix
  G__OLDIMPLEMENTATION798, for(;;) { CLS& x=init; } bug fix
  G__OLDIMPLEMENTATION799, for(;;) { CLS& x=init; } bug fix bytecode
  -                      , G__check_nonull() G__int(*para) bug fix for SGI
//________________________________________________________________________
//
//::>          VERSION  2.00/03   27/03/98 19.02.24
//
//
// 27/03/1998  18.45.21  by  Fons Rademakers
//
- TGListBox: can scroll specified item to top of listbox (by Reiner Rohlfs).

- TGToolTip: correctly position tooltip when on edge of screen (by R. Rohlfs).

- TRootCanvas: Menu item SaveAs... now correctly uses specified name.

- TGFrame: remove some compiler warnings.

- Front-end program: Logo stays for at least 4 seconds on screen.


//
// 27/03/1998  09.13.56  by  Rene Brun
//
 - Fix a problem in TH1::FillRandom. random numbers were offset by 1 bin.
   (thanks Andrzej Olszewski).

 - New function TH1::SetNormFactor(Float_t factor) to set the histogram
   normalization factor.
 - TH1::GetIntegral renamed to TH1::Integral to be consistent with TF1::Integral.

 - New function THtml::SetEscape(char escape). This function can be used
   to specify a escape character in front of characters "<", ">" and "&".
   The default escape character is backslash. (thanks Valery)

 - in TStyle, the functions TStyle::SetOptFit and TStyle::SetOptStat
   have been moved from inline functions to the implementation file.
   These functions are commented.

 - Protection introduced in TF1::EvalPar in case one executes a function
   created with the interpreter in a previous session, saved in a file,
   read again without providing the original version of the function.

 - Protection in TPad::SaveAs in case the pathname of the output file
   is of the form "../dir/file.ps".

 - in Tree::Branch (TClonesArray case), do not store the branch in the list
   of branches in case the TClonesArray is not split.
   Note that in the current implementation a TClonesArray branch must be split.

//________________________________________________________________________
//
//::>          VERSION  2.00/02   23/03/98 16.23.28
//
 - New version of CINT (version 5.13.45) introduced.
   This new version fixes a few problems connected with cout/printf.

 - Added ClassDef and ClassImp macros in TMath.h and TStorage.h.
   The documentation for these two classes is now generated.

 - In TFormula::GetParameter: protection in case of an inconsistent
   value of the argument.

 - In TCanvas::SaveSource. The code generated in case gStyle->SetScreenFactor
   was called was incorrect.

 - Cosmetic changes in print in TFitPanel and TFitPanelGraph.
//________________________________________________________________________
//
//::>          VERSION  2.00/01   15/03/98 16.47.52
//
//
// 09/03/1998  15.53.49  by  Rene Brun & Fons Rademakers
//
A few problems reported with the new GUI have been corrected:
  - Protection against fonts non available.
  - Library libXpm not available.
  - The front-end program "root" is now linked statically with libXpm.a.
  - Problem on 64 bit Alpha's has been fixed (segv when using contolbars).

New version of CINT introduced (5.13.44) (Masa Goto)
*  5.13.43 4 Feb 1998
*  Scott Snyder's contribution
*  G__OLDIMPLEMENTATION766, #define DOOM_STD std::
*  Ulli Schwanke's bug report
*  G__OLDIMPLEMENTATION767, if(!i%x) bug fix
*  Valeri Dorofeev's bug report
*  G__OLDIMPLEMENTATION768, func proto overriding bug fix
*  ifstream deletion problem fix,
*  -                      , libstrm.cxx malloc(size) -> new(size)
*  G__OLDIMPLEMENTATION769, linking undefined class/struct
*  Scott Snyder's contribution
*  G__OLDIMPLEMENTATION770, namespace nam{class S; A<A<S> > f; }
*  G__OLDIMPLEMENTATION771, const
*  G__OLDIMPLEMENTATION772,
*  G__OLDIMPLEMENTATION773,
*  G__OLDIMPLEMENTATION773,
*  G__OLDIMPLEMENTATION774,
*  G__OLDIMPLEMENTATION775,
*  Tetsu Watanabe's feedback
*  G__OLDIMPLEMENTATION776, Evaluation of array size decl in bytecode compile
*                          array size decl as local const still causes problem
*  Scott Snyder's contribution
*  G__OLDIMPLEMENTATION777, nested template reading and writing to same file
*  G__OLDIMPLEMENTATION778, G__instantiate_template() tagnamein -> replacetmpl
*  -                      , +V problem error->warning
*  G__OLDIMPLEMENTATION779, decl, reference initialization workaround
*  G__OLDIMPLEMENTATION780, opr.c std::
*  G__OLDIMPLEMENTATION781, vec<int>a;
*
*  5.13.44 1 Mar 1998
*  -                      , G__search_typename2 exported. bug fix
*  G__OLDIMPLEMENTATION782, #pragma include   error -> warning
*  G__OLDIMPLEMENTATION783, makecint -cc & -cint option added
*  G__VARIABLEFPOS        , record global variable file position
//________________________________________________________________________
//
//::>          VERSION  2.00/00   08/03/98 16.09.16
//
Version 2.00 contains the following important new features:

A - A completely new set of GUI classes
    (http://root.cern.ch/root/html/GUI_Index.html).

    These new GUI classes provide a full OO GUI framework as opposed to
    a simple wrapper around Motif. All GUI elements do their drawing
    via the TGXW abstract base class. Depending on the platfrom
    where you run ROOT the concrete graphics class (inheriting from TGXW)
    is either TGX11 or TGWin32. All GUI widgets are created from
    "first principles", i.e. they only use routines like DrawLine,
    FillRectangle, CopyPixmap, etc. and therefore the TGX11 implementation
    only requires X11 (no more need for Motif, Xt, Xaw, etc.) and the
    Xpm library (for color icons). [The libXpm.so library is distributed
    with the ROOT libraries in the $ROOTSYS/lib directory.]
    Another advantage of this approach is that porting to a new, non
    X11/Win32, platform requires only the implementation of an appropriate
    version of TGXW (and TSystem for the OS interface).

    All GUI classes are now fully scriptable and accessable via the
    interpreter. This allows for fast prototyping of widget layouts.

    The GUI classes are based on the XClass'95 library written
    by Hector Peraza (ftp://mitac11.uia.ac.be/html-test/xclass.html).
    The widgets have the well known Win95 look and feel.

    All components previously using Motif widgets, like, the Canvas,
    Browser, Controlbar, ContextMenu, Method Argument Dialogs, etc.,
    have been rewritten using the new widgets.

    Except for the automatically generated reference manual, the
    documentation of the new GUI is still very sparse. However, to see
    how to implement fairly complex GUI's have a look directly at the
    source of classes like TRootBrowser, TRootCanvas, TRootDialog, etc.
    Also try the test program $ROOTSYS/test/guitest.cxx (make guitest).
    This program excercises most of the widgets.

    [For the time being, under Windows, the old user interface classes
     are still being used.]

    The DrawPanel and FitPanel widgets are not yet using the new GUI.
    Work is in progress to replace these widgets and to add new ones
    exploiting the power of the new classes.

    More details about the new GUI classes can be found at:
    http://root.cern.ch/root/hepvis98/newgui.html


B - New front-end program that starts the actual interactive program.

    The actual interactive program, executable "root" in version 1.xx,
    is now called "root.exe". This program is started via a little
    front-end program now called "root". From the user's point of view
    nothing has changed in this respect. You still start ROOT by typing
    "root". The advantage of this little front-end program however is
    that it allows the setting of the appropriate LD_LIBRARY_PATH,
    SHLIB_PATH or LIB_PATH variables (depending on the platform).
    That means that the user only has to define a single shell variable,
    ROOTSYS, before using ROOT. Further, since the front-end is very small
    it will start quickly and, in case of an error (in the command
    line arguments or in opening an X server connection), it will give
    feedback directly, without having to wait for the loading of the ROOT
    shared libraries. Which could take some time depending if they had
    to be read from disk or over the network (AFS/NFS). Finally, it is
    this front-end that displays the "splashscreen" while waiting for
    "root.exe" to start. The source for the front-end can be found in
    ROOTX_rootx.cxx and ROOTX_rootxx.cxx (in the source distribution).
    Change the graphics and the module to be executed when you want to
    use this front-end to start your own ROOT based standalone application.


C - Enhancement of the TTree/TBranch classes.

    On popular demand (especially by people from FermiLab) branches
    of TTree objects can now be stored in separate files. This powerful
    feature allows for very large TTree's and also for the possibility
    of less used branches to be migrated to mass storage (tape, etc.),
    while at the same time keeping the rest of the TTree on disk.

    Further, multidimensional arrays are now properly supported.


D - New classes THelix and TMarker3DBox.

    These classes are interesting in the context of event displays.


E - Support for more style parameters.

    More style options can now be managed via the TStyle class.


F - New tool GH2ROOT to automatically generate C++ classes to read and
    convert Geant3 hits.

    For more information of this powerful migration tool see:
    http://root.cern.ch/root/gh2root.html


G - Long list of bug fixes, enhancements and new features:

  - All Motif releated classes have been deleted since they have been
    obsoleted by the new GUI classes.

  - Class TRandom: new algorithm similar to the one in Kernlib implemented.

  - Class TFileType has been deleted. The new Browser uses mime types as
    specified in the file $ROOTSYS/icons/root.mimes.

  - Class TCollection: the garbage collection routine was not reentrant.
    This was giving a problem when closing a file in the destructor of
    another file. This happens in the new Tree/Branch facility when
    branches of a Tree reside on different files.

  - Class TAttAxis: new data member fTitleSize and corresponding getter/setter.
    The axis title size can be modified via the axis context menu.

  - Class TGaxis: implement the new option supporting the title size.

  - Class TAxis: a bug has been fixed in TAxis::Streamer. In case a sub-range
    was set on the axis, the range was not correctly saved.

  - Class TF1: new function TF1::Derivative() to compute the derivative of
    a function at one point.

  - Class TLego: support for log scales on x,y,z axis.

  - Class TMarker: fix a memory leak in function DisplayMarkerTypes().
    The local marker object and text object were not deleted when closing
    the canvas showing the marker types.

  - Class TPaveLabel: support for changing text alignment added.

  - Class TPaveText: support for changing text alignment added.

  - Class TPolyLine: function GetPolyLine() had an incorrect parameter type.

  - Class TPolyMarker: function GetPolyMarker had an incorrect parameter type.

  - Class TStyle: new data members fCanvasDefH and fCanvasDefW + corresponding
    getters/setters. SetCanvasDefH,W can be used to define the default canvas
    size. In addition, several parameters defined in a style are now taken
    into account in several classes, like TH1, TCanvas and TGraph.

  - Class TText: new function SetNDC.
    By default, the text is drawn in the pad coordinates system.
    One can draw in NDC coordinates [0,1] if the function SetNDC()
    is called for a TText object.

  - Class TCanvas: the default canvas constructor uses the size of the canvas
    as defined by the current style (TStyle::SetCanvasDefH()).
    The bottom, top, left and right margin defined in TStyle::SetBottomMargin,
    etc. are active in creating the default pad in a canvas.

  - Class THelix: new class implemented by Ping Yeh from the AMS collaboration.

  - Class TMarker3DBox: new class, a special 3-D marker designed for event
    display. It has the following parameters:
      fX;               X coordinate of the center of the box
      fY;               Y coordinate of the center of the box
      fZ;               Z coordinate of the center of the box
      fDx;              half length in X
      fDy;              half length in Y
      fDz;              half length in Z
      fTheta;           Angle of box z axis with respect to main Z axis
      fPhi;             Angle of box x axis with respect to main Xaxis
      fRefObject;       A reference to an object

  - Class TTube: implement member function SetNumberOfDivisions().

  - Class TH1: in TH1::Fit() and H1FitChisquare(). In case a fit range was
    specified, the function was using the overflow bin. The chisquare value
    was strongly dependent on the content of this bin.
    When drawing the axis titles, the label font and axis title size are used
    in the temporary TGaxis object.
    In TH1::PaintScatterPlot(), a protection has been introduced to avoid
    plotting a too large number of dots in one cell.

  - Classes TH1C, TH1S: implement functions AddBinContent(). This function
    is a redefinition of TH1::AddBinContent(). A bin content is not
    incremented when the new bin value is bigger than the bin capacity (to
    avoid negative bin contents).

  - Class TBasket: in function SetWriteMode(), do not create the array of
    event offsets. Support introduced for branches residing on different files.

  - Class TBranch: new function SetFile(), see below:

     void TBranch::SetFile(const char *fname)

    Set file where this branch writes/reads its buffers.
    By default the branch buffers reside in the file where the Tree was
    created. Branches of the same Tree may be in different files.
    The ROOT file will be connected only when the branch is accessed.
    If called by TBranch::Fill() (via TBasket::WriteFile()), the file
    will be created with the option "recreate".
    If called by TBranch::GetEvent() (via TBranch::GetBasket()), the file
    will be open in read-only mode. To open a file in "update" mode,
    explicitely use TBranch::SetFile(TFile *file).

  - Class TBranchObject: reimplement function SetBasketSize().

  - Class TChain: memory leak problem solved. When deletting a chain, the
    files and Trees referenced by the chain were not deleted.

  - Class TLeaf: modify function GetLeafCounter() to support the case of
    multidimensional arrays. Previous version was limited to 2 dimensions.
    Reimplement function ResetAddress(). In case of a function generated by
    TTree::MakeCode(), the leaf addresses for 2-d arrays were not correctly
    set. Similar changes in subclasses TLeafB, TLeafC, TLeafD, TLeafF,
    TLeafI and TLeafS.

  - Class TTree: support for branches residing in different files introduced.
    By default a branch is stored in the same file as where the Tree has
    been created. One can use TBranch::SetFile() to specify the name of a
    file where a branch should be written.
    Writing a branch to a different file is interesting in case one plans
    to write huge Trees that cannot fit completly on disk. In that case,
    it migth be advantagous to write some branches on separate disk files
    that can then be stored on tape.
    Using a Tree that references branches that are stored on separate
    files, the branch files will be automatically opened only when
    the branch is accessed.

  - The format of TTree::Print() and TBranch::Print() is more economical,
    only 2 lines per branch are printed. Each line is <72 characters.

  - Class TTreeFormula: changes to support multidimensional arrays.

  - Class TPostscript: one can now generate an EPS file from a single pad.
    In previous versions, one could only print a complete canvas.

  - ZIP package: global functions and variables have R__ prepended to avoid
    conflict with other packages (XDR in particular).

  - The source has been cleaned, removing unused variables. Code compiles
    under the KAI compiler.

  - In Tutorials, new tutorials dirs.C and gerrors2.C

  - Conversion program h2root. A few protections added.



ROOT page - Class index - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.