# ROOT Version 2.00 Development Notes

    //
    // 13/11/1998  18.47.45  by  Fons Rademakers
    //
    - TGX11: fix in RequestString and RequestLocator to not turn off
      mouse motion and keyboard event. This caused the canvas to stop
      handling mouse motion events after using the editor to edit
      text strings.

    - TPad: fix in PaintBox when drawing pattern backgrounds. Regression
      was introduced during implementation of transparency in the same
      routine.

    - TMatrix: in ResizeTo don't use ReAlloc that verifies previous size
      because in some cases we don't know any more the previous size
      (like after a small reduction in size when there is no realloc done).
    //
    // 12/11/1998  20.14.39  by  Fons Rademakers
    //
    - TRint: new method SetPrompt(). Using this method you can change
      the standard root[] prompt. Like:
      root [0] ((TRint*)gROOT->GetApplication())->SetPrompt("aap> ")
      aap>

    - TList: new method Remove(TobjLink lnk*). If the lnk is known objects
      can be removed without makeing a linear search first. This method
      was also added to THashList.

    - TCanvas: create a default TApplication object in case it does not
      yet exist at the time the first canvas is created. This guarantees
      that certain service performed by TApplication have been performed
      (like the allocation of the color table).
    //
    // 12/11/1998  13.52.35  by  Rene Brun
    //
    - Extend size of internal TMinuit arrays (dimension kMAXDIM increased to 100).

    - Modify $kumacs/vhtml macro.
      Add new macro $kumacs/vhtmldev generating automatically the html file
      describing the current Changelog.

    //
    // 10/11/1998  19.15.04  by  Fons Rademakers
    //
    - THashList: corrected a case where in Delete() and Clear() objects
      could be deleted twice. Involves also small change in THashTable
      and TList.

    - TDirectory: added some garbage collector clauses for extra protection
      during cleanup.

    - Started integration of TrueType library for X11. We use the TT render
      engine from http://www.freetype.org/. The TT renderer will be used via
      the class TGX11TTF. This class inherits from TGX11 and overrides only
      the TGX11 text render functions. This class will be in its own shared
      library. When this library is loaded it replaces the current gGXW (iff
      it points to a TGX11 object) with a pointer to a TGX11TTF object.
      From that moment on all fonts will be rendered using TT fonts. See
      here the beauty of OO, C++ and dynamic linking.

    - TGX11: made several text related method virtual. See above.

    - TGXW: added the method HasTTFonts(), returns kTRUE if TGX11TTF is
      loaded and active.

    - TAttText: add case for TT fonts.

    - TDataMember: create getter and setter interpreter call func environment
      only when needed and not in the ctor. Save a lot of space.

    - TRootGLViewer: handle expose event, like for TRootCanvas and
      TRootEmbeddedCanvas.

    - TClonesArray: cleanup TObjectTable when deleting or shrinking (i.e.
      recuperating space) a clones array. Before TObjecTable could contain
      invalid entries after the deletion of a clones array.
    //
    // 11/11/1998  17.11.49  by  Rene Brun
    //
    - Implement the following new functions in class TMath:
        TMath::Gaus(Double_t x, Double_t mean=0, Double_t sigma=1)
        TMath::Landau(Double_t x, Double_t mean=0, Double_t sigma=1)
        TMath::Probability(Float_t chisquare, Int_t ncons)
      The Landau function is a C++ implementation of the function DENLAN
      in CERNLIB (G110).
      The Probability function (original version from Nick Van Einjdhoven)
      computes the confidence-level from chisquare and a number
      of constraints ncons.

    - Implement new function TRandom::Landau.
      This function returns a random number following a Landau distribution.

    - new keywords "landau", "xlandau", "ylandau", "xylandau" in TFormula.
      One can create functions using inline formula referencing these keywords.
      Example:
         TF1 f1("f1","landau",-5,25);
         f1.SetParameters(100,0,1);
         f1.Draw();

    - Modify TH1::Fit to automatically initialize parameters
      for a landau fit.
      Example:
         TH1F h1("h1","test landau",100,-5,25);
         h1.Fillrandom("f1");
         h1.Fit("landau");

    - New button "landau" in TFitPanel.

    - Modify tutorial hsum.C to show an example of TRandom::Landau.

    - Implement support for both Alpha/Unix CXX version 5 and 6 in
      $kumacs/globals and test/Makefile.

    - Fix a problem in TTreeFormula::GetNdata. When fNodes[i] < 0
       there is no need to compute a pointer to the leaf i.
       This problem was appearing in TTreeFormula when called
       by TTree::Scan. Thanks to Mike Beddo for reporting.

    - In TCutG::SavePrimitive, add a few more statements to the generated
      code when saving a TCutG:
        -Reference to the original Tree
        -Setting of the VarX and VarY expressions.
    //
    // 10/11/1998  18.16.18  by  Rene Brun
    //
    - Modify TH1::FitSlicesY and TH1::FitSlicesZ to save the initial
      parameters settings and reinitialize the fitting function with
      the saved parameters before each new slice fit.

    - Modify TH1::Build to not delete a previous histogram with the same name
      as the histogram being created. The old histogram is simply removed
      from the list of objects in the current directory.
    //
    // 09/11/1998  18.46.02  by  Rene Brun
    //
    - Change most functions of TMinuit to be virtual. This gives the
      possibility to derive a class from TMinuit.

    - Merge with Valery's version and Fons's version.

    - Extensions in test suite "stress". stress tested on all machines.
      Implementation of new ROOTMARKS.

    - Optimization in TGaxis::PaintAxis. In case of log axis, the algorithm
      positioning the power of 10 exponent in case of logarithmic axis
      has been improved.

    - Mods in TH1::UseCurrentStyle. Additional attributes are taken into account.
      In particular, axis attributes.
    //
    // 08/11/1998  12.35.34  by  Rene Brun
    //
    - Some changes in data member declarations in classes TFile, TSlave
      TNetFile and TProof.
      Data members counting I/O transactions are now declared Double_t
      instead of UInt_t. This
      in the corresponding classes.
      Root server ROOTD also changed accordingly.
    //
    // 05/11/1998  18.57.57  by  Rene Brun
    //
    - Modify TClass::BuildRealData and TTree::Branch to set the Zombie
      flag for the temporary object created to build the dictionary.
      A user can test (IsZombie()) in the object destructor.

    - Modify program test/Event, adding a new static function Reset.
      This function is called by the stress program.

    - Update deck makemklinux in install directory (thanks Damir Buskulic).

    - Update $kumacs/global flags for Alpha/CXX. CXX version 6 is now the default.
      Same in test/Makefile.
    //
    // 05/11/1998  16.13.26  by  Rene Brun
    //
    - Add a new test program called "stress" in test directory.
      This program can be compiled with the native compiler or interpreted.
      To compile it, do:
           make stress
           stress  to run it
      To run with the interpreter, cd to $ROOTSYS/test
        Root > .x stress.cxx(100)
      The program stress is a collection of test programs executed sequentially
      and testing most of the facets of the Root system.
      The execution of stress ranges from a few tens of seconds on fast systems
      to a few minutes. The execution time is used as a benchmark.
      We expect to add more test programs to the stress test suite.

    - The introduction of "stress" has required changes in test/Makefile
      and test/MakefileWin32.

    - Fix a problem in TTree::Draw (AIX and SGI only).
      In case of a command like:  tree->Draw(">>eventlist","x,0")
      the internal variable varexp was not correctly initialized.

    - Due to a bug in VisualC++ for the mathematical operator pow
      replace all references to TMath::Power(x,2).
      This solves in particular a long standing problem in TH1::GetRMS
      under Windows.

    - In test program vmatrix, replace long by double in TMath::Power.
    //
    // 05/11/1998  15.09.36  by  Fons Rademakers
    //
    - TCanvas: GetWindowTopX() and GetWindowTopY() now return the exact
      position of the canvas on the screen. A TCanvas can now be restored
      on the same position as when it was saved.
    //
    // 04/11/1998  18.06.20  by  Rene Brun
    //
    - Fix a bug in TEventList::Add. The first time a new list was added to
      an existing list, the size fSize and the current number of elements fN
      were not set.

    - Add additional comments in the documentation of classes TCutG and
      TEventList explaining how to get a pointer to these objects.

    - Modify TH1::PaintTitle and TH1::PaintStat to use gStyle->GetTextFont()
      when drawing the title and stats TPaveText. The font 62 was hardwired.

    - Fix a problem in TFormula::Streamer (read part).
      The array fExpr was created with zero length in case fNoper=0.
      This case could appear when a TF1 object referencing an interpreted
      CINT function was saved into a file and read again. The effect
      was only visible later in the TFormula destructor and only under HP-UX 9.
    //
    // 04/11/1998  16.45.20  by  Fons Rademakers
    //
    - TGX11: fixed WriteGIF. Works now also on X servers with more than
      8 planes. Only the used colors in the image are put in the colormap
      (used to be the full colormap, therefore > 8 planes did not work).
      If there are more than 256 colors used in the image than we should
      use the GIFquantize() routine to reduce the colormap. The routine
      is there, only has to be interfaced. The routine ImgPickPalette()
      in X11_imgpickpalette() has been removed and replaced by
      TGX11::ImgPickPalette().
    //
    // 03/11/1998  08.40.24  by  Rene Brun
    //
    - Fix a precision problem in TLego.
      Instead of testing on 0, test on kEpsil. On Linux with gcc optimized,
      the side effect was to generate large Postscript files when the Lego/Surf
      options were used.
    //
    // 02/11/1998  18.20.17  by  Fons Rademakers
    //
    - TRootEmbeddedCanvas: forgot to update after changing TRootCanvas
      and TGX11. Handles now also expose events for X servers without
      backing store.

    - TPad: override SetFillStyle() to map style 0 to 4000 (transparancy).
      This allows setting of transparent mode via TAttFillDialog as can
      be done for non-pad boxes (like TPaves, etc.).
    //
    // 01/11/1998  18.56.47  by  Fons Rademakers
    //
    - TPad: implemented transparent pads. A pad is made transparent by
      setting its fill style (using SetFillStyle()) in the range 4000-4100.
      Where 4000 is fully transparent and 4100 fully opaque. All magic
      is done in the method PaintBox() using the new (private) methods
      CopyBackgroundPixmaps() and CopyBackgroundPixmap(). Transparent pads
      need to always be updated if anything in the canvas is changed
      or moved. This is handled in PaintModified().

    - TAttFill: new method IsTransparent(). Returns true is fill style is
      in the range 4000-4100.

    - TCanvas: fixed bug showing on X servers without backing store.
      After closing of a TCanvas the FeedBackMode() was not set false
      and therefore the X drawing mode in GX11 could remain in kInvert
      mode instead of being reset to kCopy. This results in a wrong
      refresh of the remaining canvases.

    - TRootCanvas: added in the Options menu the items "Move Opaque" and
      "Resize Opaque". Also corrected default setting of the check marks
      of some option menu items.
    //
    // 02/11/1998  10.14.28  by  Rene Brun
    //
    - Protection in TDirectory destructor when called from the TROOT destructor.

    - Minor change in TF1::Fit to call SET PRINT before SET ERR.
      When working in Quiet mode, no messages are printed.

    - Minor change in TFile::Write. Do not print anymore the message
           TFile Writing ...
      To get the message, set the global gDebug to 1.

    - Modify comments in TFormula constructor.
    //
    //________________________________________________________________________
    //
    //::>          VERSION  2.00/13   30/10/98 09.19.13
    //
    //
    // 30/10/1998  08.34.54  by  Valery Fine
    //
    - Add several getter functions in TPadView3D.

    - Minor correction in TWin32Canvas header file.
    //
    // 29/10/1998  18.55.47  by  Rene Brun
    //
    - New functions/data members in class TStyle
        TStyle::SetCanvasDefX to set the default canvas top X position.
        TStyle::SetCanvasDefY to set the default canvas top Y position.
        TStyle::GetCanvasDefX and GetCanvasDefY.

    - Changes in TCanvas constructors to take into account the default
      values in TStyle for the top X and Y canvas positions.

    - Some improvements in TPaveText::PaintText in the algorithm estimating
      the best character size.
    //
    // 29/10/1998  17.47.50  by  Fons Rademakers
    //
    - TCanvas: it is now possible to easily position and resize the canvas
      via some method calls. Also the canvas size is now correctly saved.
      The position depends on what de window manager does (borders, bevels,
      etc.), but is as close as possible to the intended position.
      To implement these new features the following methods were added to the
      TCanvas class:
         Int_t  GetWindowTopX()
         Int_t  GetWindowTopY()
         UInt_t GetWindowWidth()
         UInt_t GetWindowHeight()
         void   SetWindowPosition(Int_t x, Int_t y)
         void   SetWindowSize(UInt_t w, UInt_t h)

      The following method has been renamed (also in TPad):
         void SetCanvas(UInt_t w, UInt_t h)  -> void SetCanvasSize(w, h)

      The following methods have been removed:
         Int_t GetWtopX()
         Int_t GetWtopY()

    - TCanvasImp: added SetWindowPosition(), SetWindowSize() and GetWindowGeometry()
      renamed SetCanvasSize() (was SetCanvas) and SetWindowTitle()
      (was SetCanvasTitle).
    //
    // 29/10/1998  17.01.32  by  Rene Brun
    //
    - Fix a format problem in TMinuit::mnmatu. The global correlation coeeficient
      was not currently printed. (Thanks Ian Tomalin for reporting).

    - Add new symbol #Box in class TLatex.

    - Minor correction in TTree::GetNameByIndex. With this fix, the symbol "%"
      can be used in an expression (means modulo).
    //
    // 29/10/1998  12.17.04  by  Rene Brun
    //
    - Mods in installation procedure for SGI/KAI. Introduce option -32
      in KCC (compiler and linker). Similar changes in Makefile.

    - Fix a minor compilation problem (SGI/KCC) in TFunction::InterfaceMethod.
      ( return type must be void*).

    - Remove CPP option _AIX41 in class TUnixSystem. Root assumes AIX version 4.
    //
    // 28/10/1998  19.19.12  by  Rene Brun
    //
    - Fix a typo in TLego::LegoSpherical when drawing the bottom face.
      (found thanks to the KAI compiler)
    //
    // 28/10/1998  15.35.56  by  Rene Brun
    //
    - Two new functions in TTree: TTree::Show and TTree::MakeClass.
      TTree::Show(Int_t event)
      ========================
      This function prints the event number event from the TTree file.
      If the argument event is not specified, prints the current event,
      otherwise, read event and print it.

      TTree::MakeClass(cont char *classname)
      ======================================
       This function generates a skeleton analysis class for this Tree.
       This function is an enhancement of the existing TTree::MakeCode.
       The following files are produced: classname.h and classname.C
       if classname is NULL, classname will be nameoftree.

       The generated code in classname.h includes the following:
          - Identification of the original Tree and Input file name
          - Definition of analysis class (data and functions)
          - the following class functions:
             -constructor (connecting by default the Tree file)
             -GetEvent(Int_t event)
             -Init(TTree *tree) to initialize a new TTree
             -Show(Int_t event) to read and Dump event

       The generated code in classname.C includes only the main
       analysis function Loop.

       To use this function:
          - connect your Tree file (eg: TFile f("myfile.root");)
          - T->MakeClass("MyClass");
        where T is the name of the Tree in file myfile.root
        and MyClass.h, MyClass.C the name of the files created by this function.
       In a Root session, you can do:
          Root > .L MyClass.C
          Root > MyClass t
          Root > t.GetEvent(12); // Fill t data members with event number 12
          Root > t.Show();       // Show values of event 12
          Root > t.Show(16);     // Read and show values of event 16
          Root > t.Loop();       // Loop on all events
    //
    // 28/10/1998  14.42.18  by  Fons Rademakers
    //
    - TGX11: changed calling sequence of GetWindowID().

    - TGXW: added GetWindowID() to TGXW so it can be used from the
      GUI classes.

    - TGFrame: made TGFrame(TGClient *, Window_t, const TGWindow * = 0) public
      and also added the (default) argument const TGWindow*.

    - TRootCanvas: handle correctly expose events on the TCanvas. Now ROOT
      works fine on X servers without backing store and save unders.
      Also simplified X window structure (one window less).

    - Event: cleaned up Event.h, Event.cxx and MainEvent.cxx in $ROOTSYS/test.
      All histograms that were declared as global objects are now conveniently
      handled by a HistogramManager class. Also the handling of the TClonesArray
      in the Event class has been revised (now handled via a static class data
      member instead of a global).
    //
    // 28/10/1998  17.52.39  by  Masaharu Goto
    //
    - New CINT 5.13.78.
      5.13.76 2 Oct 1998
      G__OLDIMPLEMENTATION912, #pragam link C++ CLS::MEMFUNC(args);
      G__OLDIMPLEMENTATION913, bool loading in class definition
      G__OLDIMPLEMENTATION914, cout << (bool)1 ; bug fix
      G__OLDIMPLEMENTATION915, for(int i=0,i<10;i++) protection
      G__OLDIMPLEMENTATION916, multiple inheritance virtual func resolution
      G__OLDIMPLEMENTATION917, #46  -> line  Solaris bug fix
      G__OLDIMPLEMENTATION918, atol -> strtoul in getitem, unsigned in bstore

      5.13.77 11 Oct 1998
      G__OLDIMPLEMENTATION919, typdef T** x;
      G__OLDIMPLEMENTATION921, typedef T** x; x pp=aa; bug fix reference
      G__OLDIMPLEMENTATION922, template<class T> f(T x); f(int** x);
      G__OLDIMPLEMENTATION923, template<class T> f() { new T(); } T=X*
      G__OLDIMPLEMENTATION924, new(p) A*(x); new.c bug fix
      G__OLDIMPLEMENTATION925, p->~int(); bug fix
      G__OLDIMPLEMENTATION926, T x[] = {long list}; bug fix
      - ON753 deactivated    , nov> cint Complex.cxx test2.cxx bug fix
      G__OLDIMPLEMENTATION927, f() {static MyClass a;} bug fix
      -                      , a=3 , undefined member  bug fix
      G__OLDIMPLEMENTATION928, G__allincludepath unlimited length

      5.13.78 22 Oct 1998
      G__OLDIMPLEMENTATION929, iterator f(iterator x);
      G__OLDIMPLEMENTATION930, sizeof(void) sizeof.c
      G__OLDIMPLEMENTATION931, iterator x=a.begin() decl.c
      G__OLDIMPLEMENTATION932, namespace foo{template<class T>class x{};}
    //
    // 28/10/1998  10.18.23  by  Rene Brun
    //
    - A few changes proposed by Olivier Couet have been introduced in TPostScript.
      In TPostScript::Initialize add the Postscript comment line %%BeginProlog
        immediately after the line %%EndComments.

      In TPostScript::Initialize move the Postscript comment %%EndProlog before the line:
         gsave  20 28 t .25 .25 scale  gsave

      In TPostScript::DefineFillPatterns, the line
        gsave Xcurr Ycurr translate PT DP gr } for } for gr } def
            has been changed to:
        gsave Xcurr Ycurr translate PT DP gr } for } for gr newpath } def

      In TPostScript::FontEncode remove an unnecessary character ";" in the line:
        fn findfont fs sf textf dup length nbas sub nbas getinterval; sw

    - Add function TPave::ls. Fix a minor typo in TLine::ls

    - Changes in TRootCanvas::ProcessMessage. When the canvas menu items
      deselecting the histogram title or statistics, the existing objects
      "title" or "stats" are first deleted in this function.
      These objects cannot be deleted in TH1::PaintTitle or TH1::PaintStat
      because the object removed from the list of primitives confuses
      the iterator in TPad::PaintModified.
      (Thanks to Charles Leggett for reporting the problem).
    //
    // 27/10/1998  19.03.07  by  Rene Brun
    //
    - Implement TVirtualPad::GetEvent, GetEventX and GetEventY.
      Same in TPad.
      The declaration of these functions in TVirtualPad and TPad avoid
      a reference to the libGpad shared library from TPaveText.
    //
    // 27/10/1998  18.22.45  by  Fons Rademakers
    //
    - TDirectory: fix in Browse() method.

    - TKey: fix in Browse() method.

    - TRootBrowser: better handling of refreshing. Also, in combination
      with the fixes in the above two Browse() methods the segv problem
      of version 2.00/12 is solved.
    //
    // 26/10/1998  11.05.03  by  Rene Brun
    //
    - Improvements in TMinuit::mnhelp suggested by Alexander Zvyagin.
      The function accepts now string in upper/lower case and the search
      is not limited to 3 characters.
    //
    // 23/10/1998  08.38.49  by  Rene Brun
    //
    - Protect TLeafObject::GetValue in case the TMethodCall object
      does not exist.

    - Change of specifications for TH1::SetBins.
      The new version allows changing both the number of bins and the limits.
       The X axis parameters are modified.
       The bins content array is resized
       if errors (Sumw2) the errors array is resized
       Note that if the new number of bins differs from the old one,
       then the previous bin contents are lost
       To change only the axis limits, see TAxis::SetRange
    //
    // 22/10/1998  18.04.28  by  Rene Brun
    //
    - Move functions TLeafS::GetValue and TLeafI::GetValue from inline
      functions in the include files to the implementation files.
      Some compilers were returning wrong values for the inline code:
      (Thanks to Jean Gosset for reporting an example)
    //
    // 21/10/1998  12.58.44  by  Rene Brun
    //
    - Implement TCutG::SavePrimitive. With this implementation TCutG objects
      in a pad are now saved correctly as TCutG objects (and not as TGraph)
      in the macro generated automatically by TPad::SaveAs.

    - Add new data members fEventX, fEventY in class TCanvas with corresponding
      getter functions GetEventX and GetEventY. The new members contain
      the last position of the mouse in the canvas.

    - Add new functions in class TPaveText:
       TPaveText::InsertText(const char *text) to insert a new text at mouse position
       TPaveText::EditText() to edit the text at mouse position
       TPaveText::DeleteText() to delete the text at mouse position
    //
    // 20/10/1998  16.45.26  by  Rene Brun
    //
    - Fix a memory leak in TBasket destructor. This leak was a side effect
      of a change in the TKey destructor. (Thanks Thomas Ruf)

    - Modify TGraph::PaintGraph. The new version does not invoke TH1::PaintStat
      if the fit option is disabled. Calling TH1::PaintStat had the side effect
      to make the "stats" object inaccessible with the mouse as soon as
      a TGraph or TCutG object were drawn on top on the TH1.
      (Thanks Otto Schaille for reporting).
    //
    // 20/10/1998  15.10.17  by  Fons Rademakers
    //
    - TList, THashList: added two new methods:
         virtual void      AddAfter(TObjLink *after, TObject *obj);
         virtual void      AddBefore(TObjLink *before, TObject *obj);
      Using iteration method 3 (see TList class description) one can
      directly insert a new object at the place before or after the found
      object. The AddAfter(TObject*,TObject*) and AddBefore() require a new
      scan to locate the insertion position.

    - TDirectory: fix regression in AppendKey() introduced in version 2.00/12.
      Uses the new TList method described above.

    - rootcint: call G__exit(0) at end of program to properly close CINT and
      let it cleanup any tmp files.

    - CINT: should be compiled with the -DG__TMPFILE on RH4.2 systems. This to
      workaround the tmpfile() bug.
    //
    // 18/10/1998  14.29.52  by  Rene Brun
    //
    - Change fitting option in TH1::FitSlicesY. Always use
      the option "W" when fitting the slices.
    - Implement a better algorithm in static function H1InitGaus
      to compute the initial parameters for a gaussian fit.
      In case of a "bad-gaussian" or long tails, the previous
      estimation of the constant parameter was systematically too low.
      The new algorithm sets the initial value of the constant term
      to the average of the old algorithm with the maximum bin content
      in the fitted range.
    - Improvements in TGraph::Fit for some special cases.
      (for example when all y values are identical and a straight line fit)
      Thanks to Pavol Strizenec for reporting a simple example.
    //
    // 16/10/1998  12.40.55  by  "Valery Fine"
    //
    - Implement support for OpenGL in class TMarker3DBox.

    - Fix timer related problems in TWinNTSystem and TWin32Timer.
    //
    // 16/10/1998  12.12.04  by  Rene Brun
    //
    - Fix a problem in TTRAP::SetPoints and TGTRA::SetPoints
      in case the angle theta2 is specified(TTRAP) or twist (TGTRA).
      Thanks to Francois-Xavier Gentit for reporting.
    //
    // 14/10/1998  15.19.41  by  Rene Brun
    //
    - New option in TH1::PaintAxis to draw additional tick marks/labels.
       Assume tx = gPad->GetTickx() and ty = gPad->GetTicky()
       by default only the left Y axis and X bottom axis are drawn (tx = ty = 0)
        tx = 1 ;  tick marks on top side are drawn (inside)
        tx = 2;   tick marks and labels on top side are drawn
        ty = 1;   tick marks on right side are drawn (inside)
        ty = 2;   tick marks and labels on right side are drawn
           Use TPad::SetTicks(tx,ty) to set these options
    //
    // 12/10/1998  18.37.31  by  Rene Brun
    //
    - New data member fLastPoint in class TPolyLine3D.
      Corresponding new member functions SetNextPoint and GetLastPoint.

    - Extend functionality of TGraph::SetPoint to allow entering a new point
      after the TGraph definition. The arrays fX and fY are automatically
      extended. This extension allows updates of an existing TGraph with time.

    - Introduce support for EGCS under SGI in decks Globals and Makefile.
    //________________________________________________________________________
    //
    //::>          VERSION  2.00/12   09/10/98 10.41.34
    //
    //
    // 09/10/1998  10.41.34  by  Rene Brun
    //
    - Clean up source file and stamp version 2.00/12.

    - Modify test/Makefile to introduce support for Linux/KCC

    - Add new tutorial fitslicesy.C

    - generate new HTML files for this new version.
    //
    //
    // 08/10/1998  18.32.55  by  Fons Rademakers
    //
    - TString: fix in ReplaceAll(str1, str2) now the replacement string
      str2 can be the empty string "".

    - TUnixSystem: ExpandPathName() expands $(ROOTSYS)/bla just like
      $ROOTSYS/bla. This allows compatibility with WinNT which only
      supports $(ROOTSYS)/bla.
    //
    // 07/10/1998  17.52.39  by  Masaharu Goto
    //
    - New CINT 5.13.74.
      5.13.75 23 Sep 1998
      G__OLDIMPLEMENTATION902, VC++6.0 exception handling bug workaround
      G__OLDIMPLEMENTATION903, undefined member assignment SEGV, bug fix
      -                      , long.dll
      Gunay ARSLEN's bug report
      G__OLDIMPLEMENTATION904, #define xxx "abc"  bug fix
      G__OLDIMPLEMENTATION905, G__replacetemplate, G__asm_wholefunction escape
      G__OLDIMPLEMENTATION906, if(CLS==INT) x; else y; free_tempobj bug fix
      G__OLDIMPLEMENTATION907, LD_FUNC,LD_IFUNC, ++sp condition
      G__OLDIMPLEMENTATION908, sizeof(*ptr) bug fix
      G__OLDIMPLEMENTATION909, EOF problem fixed in G__readansiproto()
      G__OLDIMPLEMENTATION910, bit-field and bytecode optimization bug fix
      G__OLDIMPLEMENTATION911, T *p=new T[x] bytecode abort
    //
    // 07/10/1998  10.40.10  by  Fons Rademakers
    //
    - TDirectory: fix in the Browse() method to show all cycles of objects
      in the browser.

    - TKey: fix the Browse() method to delete a previous memory resident object
      with the same name (identical behaviour to TDirectory::Get()).

    - Added Makefile for Solaris.
    //
    // 07/10/1998  09.06.59  by  Rene Brun
    //
    - New function TH1::PaintH3Box to draw a TH3F object with the option "box"
      This function is called when drawing a TH3F object with the option "box".
      The function uses the TMarker3DBox class.
      TH3F::Sizeof3D modified to take into account the new option.

    - Merge with new Valery's version. Valery has added new constructors
      to several geometry shapes classes and a new function in TRotMatrix.
    //
    // 05/10/1998  18.58.48  by  Fons Rademakers
    //
    - Added three very nice little "fun" programs to the $ROOTSYS/test
      directory. They show some very powerful capabilities of ROOT:
        - the graphics system
        - clever usage of timers to simulate multi-threading (like Netscape
          is doing in the Unix version of Navigator).
        - the power of inheritance from basic framework classes
      Run these 3 examples at the same time by executing the games.C macro
      in the $ROOTSYS/tutorials directory. The macro will create the shared
      libraries if they don't exist.
    //
    // 08/10/1998  04.48.02  by  Rene Brun
    //
    - Implement some fixes in TPad suggested by Valery Fine and Andy Haas
      when running Root compiled with VC++5.0 under NT running VC++6.0

    - Due to the color table initialisation moved in TAppication,
      the TGWin32 class has been modified (Valery) to create the color palette
      before a canvas is created.

    - Some minor changes in $TGXClient and $KeySymbols had to be made
      to compile under AIX and HP-UX.
    //
    // 02/10/1998  14.42.44  by  Fons Rademakers
    //
    - TMapFile: map files can now be "deleted". Previously only Close()
      could be used, but this would not clean up the TMapFile object itself
      (would only disconnect from the shared memory segment).

    - ROOT native GUI: support now key symbols. For example:
        frame->BindKey(this, gGXW->KeysymToKeycode(kKey_Up), kAnyModifier);
      All defined key symbols can be found in the file KeySymbols.h.

    - TGXW: prototype of TGXW::LookupString() is changed from:
         LookupString(Event_t *event, char *buf, Int_t buflen, Int_t &keysym);
      to
         LookupString(Event_t *event, char *buf, Int_t buflen, UInt_t &keysym);

    - TGTab: added method SetTab(Int_t tabIndex) to bring the specified
      tab to the front (method provided by Reiner Rohlfs).

    - TGDoubleSlider: new slider widget which allows modification of upper
      and lower limits as well as dragging of slider tab. This widget was
      implemented by Reiner Rohlfs.

    - TDatime: Convert() made public. Using Convert() it is easy to compare
      two datime objects. Requested by Victor Perevoztchikov.
    //
    // 02/10/1998  11.19.28  by  Rene Brun
    //
    - Fix a problem in TFree::GetBestFree. Do not return a free gap
      in case the new free gap after allocation will be less than 4 bytes.
      (thanks Eddy Offermann for providing a test case).

    - Fix a small problem in TTree::Draw in the following case:
        TH2F *blank = new TH2F("blank", "dE/dx vs. B mass", 50,4.8,6, 50,-3,6);
        blank->Draw();
        ntuple->Draw("dedx:mb", "dtype==431 && ktype==211", "same");
      When option "same" was specified, the limits of the histogram created
       by ntuple->Draw were not correctly from the current pad coordinates.
         (thanks Stephen Bailey for providing a simple test case).

    - Merge with Valery's latest version (October 1st).
      Changes in TWinNTSystem, TWin32Canvas.
      New class TWin32Timer.
      New functions TAssoc::isFolder and TAssoc::Browse.

    - Fix a memory leak problem in TDirectory::Close and TKey destructor
      when closing files with subdirectories.
      In TDirectory::Close, the keys from subdirectories were not deleted.
      In TKey destructor, buffers were not deleted.
      The TBasket destructor does not delete the buffer anymore (done
      in TKey destructor).
      (thanks Eddy Offermann for reporting this leak).

    - Optimize function TDirectory::AppendKey. When many objects (keys)
      were written to a file, the time to add a new object was growing
      like the square of the existing number of objects in the file.
      The effect was only visible when several thousand keys were written.
      The new algorithm uses THashList::FindObject instead of TDirectory::GetKey.
      Same optimisation in TObject::Read and TObject::Write.

    - New function TStyle::SetHeaderPS(const char *header) and corresponding
      get function TStyle::GetHeaderPS.
      The string in header will be added to the Postscript file
      immediatly following the %%Page line
      For example, this string may contain special Postscript instructions like
           200 200 translate
      This information is used in TPostScript::Initialize
      (thanks Marcus Mendenhall)

    - New function TH1::FitSlicesY(TF1 *f1, Int_t binmin, Int_t binmax, Int_t cut)
      Project slices along Y in case of a 2-D histogram, then fit each slice
      Only bins along X between binmin and binmax are considered.
      with function f1 and make a histogram for each fit parameter
      if f1=0, a gaussian is assumed
      Before invoking this function, one can set a subrange to be fitted along Y
      via f1->SetRange(ymin,ymax)
      Note that the generated histograms are added to the list of objects
      in the current directory. It is the user's responsability to delete
      these histograms.

       Example: Assume a 2-d histogram h2
        Root > h2->FitSlicesY(); produces 4 TH1D histograms h2_0, h2_1 and h2_2
               with h2_0 containing parameter 0(Constant) for a Gaus fit
                         of each bin in X projected along Y
               with h2_1 containing parameter 1(Mean) for a gaus fit
               with h2_2 containing parameter 2(RMS)  for a gaus fit
               with h2_chi2 containing the chisquare/number of degrees of freedom for a gaus fit

        Root > h2->FitSlicesY("gaus",15,22,10);
               same as above, but only for bins 15 to 22 along X
               and only for bins in X for which the corresponding projection
               along Y has more than cut bins filled.

    - New function TH1::FitSlicesZ(TF1 *f1, Int_t binminx, Int_t binmaxx, Int_t binminy, Int_t binmaxy, Int_t cut)
      Project slices along Z in case of a 3-D histogram, then fit each slice
      with function f1 and make a 2-d histogram for each fit parameter
      Only cells in the bin range [binminx,binmaxx] and [binminy,binmaxy] are considered.
      if f1=0, a gaussian is assumed
      Before invoking this function, one can set a subrange to be fitted along Z
      via f1->SetRange(zmin,zmax)

       Example: Assume a 3-d histogram h3
        Root > h3->FitSlicesZ(); produces 4 TH2D histograms
               with h3_0 containing parameter 0(Constant) for a Gaus fit
                         of each cell in X,Y projected along Z
               with h3_1 containing parameter 1(Mean) for a gaus fit
               with h3_2 containing parameter 2(RMS)  for a gaus fit
               with h3_chi2 containing the chisquare/number of degrees of freedom for a gaus fit

        Root > h3->Fit(0,15,22,0,0,10);
               same as above, but only for bins 15 to 22 along X
               and only for cells in X,Y for which the corresponding projection
               along Z has more than cut bins filled.

    - New function TH1::Rebin(Int_t ngroup, const char*newname)
      to rebin 1-D histograms.
      This function replaces the existing histogram if newname="" (default).
      It returns a new histogram otherwise.
      ngroup is the number of bins to be merged into one new bin.
      If the original histogram has errors stored (via Sumw2), the resulting
      histograms has new errors correctly calculated.

    - Start a cleanup operation to remove some classes interdependencies.
      Implement new functions
       TVirtualPad::DrawClassObject, TPad::DrawClassObject
       TVirtualPad::InspectObject,   TPad::InspectObject.
      TObject::Inspect invokes TVirtualPad::InpectObject
      TClass::Draw invokes TPad::DrawClassObject

    - Implement operator "%" in TFormula (thanks Nicolas).
      Corresponding mods in TFormula::Analyze, TFormula::Eval
      and TTreeFormula::EvalInstance.

    - Include a fix in TDataMember constructor by Weiwen Liu (thanks Weiwen).
      In case a class A was defined as:
         class A {
         public:
            UChar_t fA;
            unsigned char fB;
            .....
         };
      If the class A was used in a TClonesArray, the "unsigned char"
      was not processed correctly. Wewen's fix treats now
      UChar_t and "unsigned char" equivalently.

    - Remove dependency from TBrowser in TObject implementation file.

    - New functions TPad::Clip and TPad::ClippingCodes.
      TPad::Clip clips a line at a rectangle boundary.

    - TPad::PaintLine3D function has been rewritten to take
      advantage of the new clipping facility in TPad.

    - TPolyLine3D::PaintPolyLine function has been rewritten to take
      advantage of the new clipping facility in TPad.

    - TBranch::Print modified to print branches with many variables
      in multi-lines. Thanks to Weiven Liu for providing the code.
    //
    // 25/09/1998  13.15.52  by  Fons Rademakers
    //
    - TStyle: added member function SetPaperSize(TStyle::EPaperSize). Can use
      symbols TStyle::kA4 and TStyle::kUSLetter to set size.
    //
    // 24/09/1998  18.40.36  by  Fons Rademakers
    //
    - TApplication: moved TColor initialization from TCanvas to TApplication
      so it will be guarenteed called before the GUI color initialization.
      Request by Rutger vd Eijk.

    - Other change in mmprivate.h and mmalloc.h for VC++ v6.0.

    - New CINT 5.13.74.
      5.13.74 19 Sep 1998
      G__OLDIMPLEMENTATION900, newlink , G__add_macro -p -DX="abc" bug fix
      -                      , IsTmplt, TmpltName, TmpltArg added to G__ClassInfo
      G__OLDIMPLEMENTATION901, pause.c G__security assignment bug fix
    //
    // 23/09/1998  17.32.48  by  Fons Rademakers
    //
    - TServerSocket: there is no wait and retry loop anymore on the low
      level bind command. Any retries have to be done by the TServerSocket
      user. A bind() failure can be detected using the new TSocket::GetErrorCode()
      function. For more details see the TServerSocket::TServerSocket help.
    //
    // 22/09/1998  11.52.14  by  Fons Rademakers
    //
    - Changes in WIN32_*.cxx, GUI_RootCanvas.cxx and mmprivate.h
      to accommodate for VC++ v6.0. (thanks to Sverre Jarp)

    - Added makefiles for Debian v2.0 and Digital Unix with cxx v6 compiler.

    - TH1: Added PaintStat2() for putting the stat info for 2D histograms
      (requested by Hans Dijkstra). Basic info is there, still needs to be
      beautified.
    //
    // 17/09/1998  20.50.22  by  Fons Rademakers
    //
    - New CINT with bug fix for code "nbytes += chain->GetEvent()".

    - Added egcs 1.1 support in RConfig.h.

    - Added cxx support in Make-macros.
    //
    // 16/09/1998  00.42.29  by  Rene Brun
    //
    - Problem reported by Axel Schwank in TTree::Scan now fixed.
      In some cases, branches with leafcounts did not compute
      the leafcount before processing the branch.

    - TCanvas::Streamer modified to save the "fShowEventStatus"
      and fMenuBar options.

    - Problem reported by Reiner Rolfs when saving a canvas with a graph,
      then opening the file, drawing the canvas and closing the file.
      Closing the file had the side effect to delete the histogram referenced
      by the graph object. The correction was one line in TGraph::Streamer
      to remove the histogram from the current directory in memory.

    - Problem reported by Reiner Rolfs when saving a hierarchy of pads
      has been fixed in TPad::Streamer. The global gPad was not saved
      and restored before/after the loop reading the pad primitives.
      (thanks Reiner).

    - Modification in TDatime::Set to correctly encode years>2000

    - Protection in TGaxis::Optimize in case the function is called
      with invalid floating point numbers (+- inf).

    - Accents introduced in class TLatex + some improvements when
      positionning subscripts/superscripts and poers. (work by Nicolas)

    - Code improvements in TPad::Print (thanks Alexander Zvyagin).

    - Remove an unnecessary limitation in TTree::CloneTree in case the Tree
      has branches with TClonesArray and one wants to copy only a subset
      of one TClonesArray. (Thanks to Axel Schwank)

    - When no options are specified in the TPave, TPaveLabel constructors
      (default option="br"), then TPave::PaintPave will not draw the border.
      Otherwise crazy fill areas were drawn depending on the pad range.
      To Draw a TPave, TPaveLabel, etc in NDC with a border, use option="NDCbr"
      (thanks Axel Schwank).

    - Remove some restrictions in TTree::Draw and TTree::Eventloop.
      The following case was not supported (example from Stephen Bailey).
        h1->Draw("Mass[2]", "mcid[4]==333");
      where Mass is a branch defined as Mass[5] and mcid a branch
      defined as mcid[mcn].
      The change in TTree::EventLoop makes sure that whenever an expression
      references a branch with a leafcount, the leafcount branch is forced
      to be read even if only one element is used.

    - Change parameter kMaxBuffer from 80 to 120 in TPostScript class.
      This change was requested by Olaf Steinkamp to support long
      file names as generated by an automatic system.

    - Fix a problem in TChain::Merge affecting the merging of TNtuple objects.

    - Fix a problem in TNtuple::Streamer. Branch addresses are now set
      when reading the TNtuple header from the Root file. This also fixes
      a problem when using TTree::CloneTree with a TNtuple object.

    - Change type of argument in TFormula::Compile from char* to const char*

    - Fix a problem in TChain::Merge due to a change in the default argument
      in TTree::CloneTree. The first file in the file was added twice
      to the merged file. Thanks to Scott Sampson for reporting the problem.

    - Add Warning message in TH1::Add, TH1::Divide, TH1::Multiply
      in case the axis limits of operand histograms do not match.

    - Fix a bug in TEllipse::Paint. phimin was not taken into account.
      Thanks to Mathieu de Naurois for reporting the problem.

    - Change TGaxis ClassDef(TGaxis,0) to ClassDef(TGaxis,1) to make
      TGaxis streamable.

    - Add new function TTreeFormula::GetNnodes() returning the number of Tree leaves
      referenced in the formula.

    //
    // 14/09/1998  17.04.25  by  Fons Rademakers
    //
    - TBuffer: operator<<(Char_t *c) now operator<<(const Char_t *c).

    - TGString: added ctor taking directly TString.

    - TGTextView: option argument has now default value (= 0).

    - TGMatrixLayout: fixed size calculation (was one row too large) +
      take parent borderwidth into account.

    - TGLayout: delete layoutmanager in TGCompositeFrame dtor (as per
      specification).

    - guitest.cxx: show example of TGMatrixLayout in "Tab 5".

    - cint_meta: added -DG__API to rootcint to process META classes
      (Make-macros also updated).

    - TObject: added placement operator delete. Needed to be conform with
      ANSI C++ (is only used when exception is thrown in placement new).
      This new version of operator delete is not supported by older compilers.
      It is activated in RConfig.h using the define R__PLACEMENTDELETE.

    - To compile with the new Alpha cxx v6 compiler option -nostdnew has
      to be used (all ROOT new/delete operators comply with ANSI C++, but
      cxx v6 still prefers to load its own global new operator and thereby
      causing a mismatch with the ROOT global delete operator).

    - TPolyLine: corrected small typo.

    - TStopwatch: Start() has now a reset flag. By default the stopwatch is
      reset on start (< 2.00/11 behaviour). Help text expanded.
    //
    // 28/08/1998  10.38.51  by  Rene Brun
    //
    - Urgent bug fix in TTreeFormula::Compile and TTree::Draw
      when doing tree->Draw("px[0]") where px is indexed on ntrack for eaxmple.
      Thanks to Stephen Bailey for reporting very quickly.
    //
    // 28/08/1998  08.58.30  by  Valery Fine
    //
    - Correction in $TStopwatch, Stopwatch and Benchmark.
      The problem was if one apply Stop, the method can continue
      counting the time with the Next Start method as people expect.
      The correction allows to accumulate the REAL and CPU time for
      each Start->Stop pair to show the total time. In fact the
      TStopwatch::Continue method was not implemented yet.
    //________________________________________________________________________
    //
    //::>          VERSION  2.00/11   26/08/98 19.10.44
    //
    //
    // 26/08/1998  18.54.42  by  Nicolas Brun
    //
    - Nicolas has implemented a new class TLatex.
      See comments and examples in the class implementation.
      With this class, it is now possible to draw mathematical
      formula (Latex style) on the screen and Postscript. TLatex supports:
        -Subscripts and Superscripts (many levels)
        -Fractions
        -Mathematical Symbols + Sqrt + Sum and Integral
        -Greek Letters
      This implementation has still a few problems.
      There are still some discrepancies between the result on the screen
      and the result on Postscript.
      Also some differences will be seen between Unix servers depending
      the version of X in use. Results on WindowsNT are also slightly different.
      An example of use can be found in tutorials/latex.C
      With this version, a TLatex object must be explicitely created.
      Note that this class cannot be used when running Root in batch mode
      because it uses info provided by the low level graphics functions
      from X11 or Win32.
      We are planning to make an automatic interface to this class
      when drawing axis titles, histogram titles and like.

      Please forward your comments and suggestions to Nicolas at
             nicolas@hpbrun.cern.ch

    //
    // 14/08/1998  19.15.12  by  Fons Rademakers
    //
    - TROOT::GetMacroPath: fix for Win32 (Valery).

    - TRootCanvas and TRootBrowser: if canvas or broser are closed
      via menu File/Close then the associated symbol is taken out
      of the CINT symbol table. To prevent accidental access to deleted
      object.

    - rootcint: defines now -D__MAKECINT__ which can be used as special
      flag in case of dictionary generation.

    - TUnixSystem::ResetTimer: new method to reset async timer. Before
      async timer could only be Reset() while being in Notify().

    - New class TProcessEventTimer. Us this async timer in tight loops to
      periodically process GUI and sync timer events. It is for example
      used in TTree::EventLoop().

    - Added makefiles for Linux RH4.2 (non glibc) and Irix KCC.

    - TSystem::DispatchOneEvent: new argument pendingOnly. If true then
      only pending GUI events and timers are processed. This is used in
      TSystem::ProcessEvents(). Othwerise DispatchOneEvent() falls through
      and blocks on select (in Unix case) unless a timeout is specified.
      The TUnixSystem and TWinNTSystem have been updated accordingly.

    - TTree::EventLoop: use async timer to process pending GUI events
      about 3 times per second.

    - MakeDistSource: do not include in source the cint/MAKEINFO and
      cint/include/iosenum.h files. They are platform dependent and
      are correctly provided in the binary distribution.

    - guitest.cxx: show how to color button background

    - mmconfig.h: remove reference to ansidecl.h.

    - TGTab: clicking on tab will generate the event:
      kC_COMMAND, kCM_TAB, tab id, 0.
      Added test in guitest.cxx.

    - TGWidget: removed fWidgetType datamember. To find widget type just use
      the IsA() member function.

    - TROOT: set ObjectStat default to 0 (like in example .rootrc).

    - TObject: export enum EObjBits to interpreter.

    //
    // 19/07/98  14.12.45  by  Valery Fine(fine@mail.cern.ch)
    //
    -  Several changes in class TWinNTSystem.

    -  Protection in TBenchmark::Start in case of too many benchmarks.

    -  TCollection::Browse(TBrowser *b) calls TObject::Browser(b) if b=0

    -  Several corrections for WIN32 classes to fix
       TBrowser and TObject::Inspect method too under Windows NT / 95

    //
    // 10/08/1998  08.36.59  by  Rene Brun
    //
    - Modify TBranchObject::SetAddress and TBranchClones::Streamer
      to support schema evolution in split mode. With the new version,
      new data members can be added, deleted or swapped.

    - Add a new test in TBranch::SetAddress when the branch is a TClonesArray
      branch. In this case, the leaf offset should not be taken into account.
      The leaf offset is always set when the shared library containing
      the class definition is loaded, but a technique a la MakeCode is used
      instead of the class itself.
      Thanks to Axel Schwank for reporting this funny case.

    - Correct TBranchClones::SetAddress to set the address of the branchcount.
      With this fix, one can now read an existing tree from a file and
      continue to fill it. (Only Trees with TBranchClones were affected).

    - Fix a problem in TTreeFormula::Compile in the following case:
        a branch ntrack
        a branch px[ntrack]
        tree.Draw("ntrack") was ok
        tree.Draw("px") was ok
        tree.Draw("px[1]") was ok
        tree.Draw("px[1]/ntrack") was wrong
        Thanks to Stefan Kluth for reporting this problem.

    - Add protections in TLeafObject and TMethodCall when requesting
      an unknown method name.

    - In TChain::LoadTree, call TTree::SetMaxVirtualSize with the value
      of fMaxVirtualSize defined for the chain.

    - Implement new useful member functions in class TTree:
      TTree::GetV1(), TTree::GetV2(), TTree::GetV3(), TTree::GetW().
      Via these getter functions, one can access internal arrays of the Tree
      corresponding to the previous TTree::Draw function.
      See comments in the header of TTree::Draw for more details and an example.

    - Fix a typo in TEventList::TEventList. The parameter delta was not used.
      (Thanks for reporting).

    - Add new data member fXwho in class THtml.
      Corresponding getter/setter functions:
        GetXwho()
        SetXwho(const char *xwho)
      Default value for xwho is http://xwho.cern.ch/WHO/people?

    - Rename TNode::UpdateGlobalMatrix to TNode::UpdateTempMatrix.
      Implement new function TNode::UpdateMatrix().
      This new function updates the node parameters (translation vector
      and rotation matrix). This function must be called before
      invoking TNode::Local2Master.
      Thanks to Francois-Xavier Gentit for his suggestion.

    - Merge with Valery Fine version.

    - Several changes + comments in class THelix.
      Please forward comments/questions to the author Ping Yeh
               pyeh@cdfsga.fnal.gov

    - Set default parameters in:
        TPolyLine::SetPolyLine
        TPolyMarker::SetPolyMarker
        TPolyLine3D::SetPolyLine
        TPolyMarker3D::SetPolyMarker
      The SetPxxx functions can be called with one argument only to set
      the number of points, then the function SetPoint can be called
      to initialize points one by one.

    - Change definition of internal variable from Option_t to char
      in TObject::Pop and TPad::Pop.

    - Due to a clash in the definition of the macro EXTERN (with TCL/Tk),
      Root defines the following macros:
         EXTERN if not already defined
         R__EXTERN in all cases.
      We suggest you change your EXTERNs to R__EXTERN.
      This changes has required modifications in CINT function Parse.

    - Add two new data members to class TMaterial:
       fRadLength;   //material radiation length
       fInterLength; //material interaction length
       Corresponding constructor and getter functions.
       Mods in TMaterial::Streamer to support schema evolution.

    - Changes in TH1::Add, TH1::Divide and TH1::Multiply.
      If one of the operand histograms has the errors set (Sumw2 has been called),
      the resulting histogram has automatically the errors set (Sumw2 is called).

    - Fix a problem in TF1::Paint when drawing a function in a pad
      with log axes in the case when the function range is smaller
      than the defined axis range. (thanks Glenn Cooper for reporting)

    - Modify TProfile constructors to pass const Text_t instead of Text_t
      for the profile name and title.

    - The following functions have been deleted:
        TPolyLine::GetPolyLine
        TPolyMarker::GetPolyMarker
        TPolyLine3D::GetPolyLine
        TPolyMarker3D::GetPolyMarker

    - WARNING !! Option_t has been redefined to be const char instead of char.
      This affects many functions. Please check your code.

    - The following classes have been modified to replace arguments
      of type char* by const char*

      TROOT
                         TROOT(const Text_t *name, const Text_t *title, VoidFuncPtr_t *initfunc = 0);
       TObject           *FindObject(const Text_t *name) { void *dum; return FindObject(name, dum); }
       TObject           *FindObject(const Text_t *name, void *&where);
       const Text_t      *FindObjectClassName(const Text_t *name) const;

      TVirtualPad and TPad;
       virtual void     DrawText(Float_t x, Float_t y, const Text_t *text) = 0;
       virtual void     DrawTextNDC(Float_t u, Float_t v, const Text_t *text) = 0;
       virtual TObject  *GetPrimitive(const Text_t *name) = 0;
       virtual void     PaintText(Float_t x, Float_t y, const Text_t *text) = 0;
       virtual void     PaintTextNDC(Float_t u, Float_t v, const Text_t *text) = 0;
       virtual void     Print(const Text_t *filename="") = 0;
       virtual void     Print(const Text_t *filename, Option_t *option) = 0;
       virtual void     SaveAs(const Text_t *filename="") = 0;
       virtual void     SetName(const Text_t *name) = 0;

      TCanvas
       TCanvas(const Text_t *name, const Text_t *title="", Int_t form=1);
       TCanvas(const Text_t *name, const Text_t *title, Int_t ww, Int_t wh);
       TCanvas(const Text_t *name, const Text_t *title, Int_t wtopx, Int_t wtopy,
       void              SaveSource(const Text_t *filename="", Option_t *option="");
       void              SetTitle(const Text_t *title="");

      TDialogCanvas;
       TDialogCanvas(const Text_t *name, const Text_t *title, UInt_t ww, UInt_t wh);
       virtual void   Apply(const Text_t *action="");
       virtual void   SetName(const Text_t *name) { fName = name; }

      TButton
       virtual void  SetName(const Text_t *name) { fName = name; }

      TSlider
       virtual void  SetMethod(const Text_t *method) { fMethod=method; } // *MENU*

      TAttLineCanvas
       TAttLineCanvas(const Text_t *name, const Text_t *title, UInt_t ww=400, UInt_t wh=600);

      TAttFillCanvas
       TAttFillCanvas(const Text_t *name, const Text_t *title, UInt_t ww=400, UInt_t wh=600);

      TAttTextCanvas
       TAttTextCanvas(const Text_t *name, const Text_t *title, UInt_t ww=400, UInt_t wh=600);

      TAttMarkerCanvas
       TAttMarkerCanvas(const Text_t *name, const Text_t *title, UInt_t ww=400, UInt_t wh=600);

      TDialogCanvas
       virtual void   Apply(const Text_t *action="");

      TDrawPanelHist
       TDrawPanelHist(const Text_t *name, const Text_t *title, UInt_t ww=500, UInt_t wh=600);
       virtual void  Apply(const Text_t *action="");

      TFitPanel
       TFitPanel(const Text_t *name, const Text_t *title, UInt_t ww=300, UInt_t wh=400);
       virtual void  SetFunction(const Text_t *function);
       virtual void  Apply(const Text_t *action="");

      TFitPanelGraph
       virtual void  Apply(const Text_t *action="");

      TGeometry
       TGeometry(const Text_t *name, const Text_t *title);
       virtual void   cd(const Text_t *path=0);
       TMaterial      *GetMaterial(const Text_t *name);
       TMaterial      *GetMaterialByNumber(Int_t number);
       TNode          *GetNode(const Text_t *name);
       TShape         *GetShape(const Text_t *name);
       TRotMatrix     *GetRotMatrix(const Text_t *name);
       virtual void   Node(const Text_t *name, const Text_t *title, const Text_t *shapename, Double_t x=0, Double_t y=0, Double_t z=0
                         , const Text_t *matrixname="", Option_t *option="");

      TNode
       TNode(const Text_t *name, const Text_t *title, const Text_t *shapename, Double_t x=0, Double_t y=0, Double_t z=0
                , const Text_t *matrixname="", Option_t *option="");
       TNode(const Text_t *name, const Text_t *title, TShape *shape, Double_t x=0, Double_t y=0, Double_t z=0
                   , TRotMatrix *matrix=0, Option_t *option="");
       virtual TNode       *GetNode(const Text_t *name);

       TDirectory
        virtual void        Delete(const Text_t *namecycle="");
        virtual TObject    *Get(const Text_t *namecycle);

    //________________________________________________________________________
    //
    //::>          VERSION  2.00/10   30/07/98 16.57.22
    //
    //
    // 30/07/1998  14.54.40  by  Rene Brun
    //
    - Implement new functions in classes TH2C,TH2S,TH2F and TH2D
       -GetCorrelationFactor(axis1,axis2)
       -GetCovariance(axis1,axis2)
       -GetMean(axis)
       -GetRMS(axis)
       Thanks to Stefan Kluth<skluth@mh1.lbl.gov> for suggesting
       these new functions and providing hints for the algorithm.

    - Change calling sequence of TH1::GetMean and TH1::GetRMS to add
      a dummy parameter axis to be consistent with the TH2 similar functions.
      This parameter being optional, these functions are still backward
      compatible.

    - Modify TTree::TakeAction to call the Fill function instead of FillN.
      This slows down slightly the filling process for 2-D histograms,
      but the resulting histogram has the statistics information correctly
      filled. One can invoke the TH2H::GetCorreclationFactor on the 2-d
      histogram produced by TTree::Draw.

    - In TTree::EventLoop add control on gSystem->ProcessEvents.
      In case of a TTree::Draw command, one can now interrupt gracefully
      the processing of the command from an embedded canvas.

    - Implement changes by Akiya Miyamoto<miyamoto@ccjlc1.kek.jp>.
      Akiya has successfully ported Root on the Hitachi machines running
      the HIUX operating system under EGCS. Thanks Akiya.

    - Mods in TH1::PaintScatterPlot and TH1::TableInit to not plot any markers
      in case of a 2-d histogram with entries but all outside the range.

    - Several changes in utility program g2root implemented by
      Nikolai Root <nroot@inp.nsk.su>. g2root includes a new optional parameter.
      With this new parameter, one can specify a file name with a translation
      table to automatically convert the 4 Geant character volume names
      to more meaningful names. Wilcarding is supported. For more details
      see comments in the g2root header.

    //
    // 28/07/1998  15.45.02  by  Fons Rademakers
    //
    - TCint: in ResetAll() initialize CINT command processor (fixes problem
      with initializing enum's via the interpreter.

    - TDirectory: in Streamer() make directory readable if its file is also
      readable. Bug caused sub-directories to be readonly even when file was
      opened in write mode.

    - TDirectory: in Build() don't add directory to current directory if
      dir name is "". This is only the case when reading directory from
      disk. Only add to current dir in TKey::ReadObj() when directory name
      has been set. Bug caused re-reading of directory from disk for
      every cd() into that directory while accumulating copies in memory.

    - TSystem: in ProcessEvent() protect in case of batch mode.
    //
    // 27/07/1998  17.52.12  by  Fons Rademakers
    //
    - TMapFile: new static method SetMapAddress(Long_t addr). With this
      method one can fix the start address of a shared memory region.
      For more see the TMapFile::SetMapAddress source on the web.

    - Deck eventload: made machine independent.

    - TObject: Write(), added option argument. Option can be
      TObject::kOverwrite and TObject::SingleKey (last one is only
      supported for TCollection::Write().

    - TCollection: Write(), added option argument. See above.
    //
    // 24/07/1998  14.41.23  by  Fons Rademakers
    //
    - Added Makefile front-end for MkLinux (by Damir).

    - Added Makefile front-end for Debian (by Jens Ritter).

    - Deck eventload: added WIN32 case.

    - TPad: fix bug in Divide() in case of long TCanvas names (now dynamic).

    - TWinNTSystem: new method ProcessEvents().

    - guitest.cxx: added example of custom graphics context to change
      label and button text color.
    //
    // 18/07/1998  19.17.01  by  Fons Rademakers
    //
    - New class TRootEmbeddedCanvas: this native ROOT GUI widget allows
      the easy embedding of a TCanvas in a TGFrame. The TRootEmbeddedCanvas
      inherits from TGCanvas with the container automatically set to
      be a TCanvas. Using the member GetCanvas() you can obtain a pointer
      to the associated TCanvas. To see how it should be used see
      $ROOTSYS/test/guitest.cxx. When running guitest select the menu
      item Test/Dialog... Click on Tab 3 and admire the two TCanvases.
      Play with the Start... and Stop... buttons. Also notice how you
      can select other tabs while filling continues and how the window
      is updated after resizing (even more impressive with a WM that
      allows opaque resizing, like kwm).

    - TCanvas: new ctor used by TRootEmbeddedCanvas.

    - guitest.cxx: added demo of TRootEmbeddedCanvas (see above).

    - TDataMember: fix in ctor explaining a number of crashes in the
      browser (by Valery).

    - TSystem: new method ProcessEvents(). Call this method regularly in
      tight calculation loops. It allows the processing of GUI, socket
      and timer events. Most importantly it allows the clean interruption
      of such a tigh loop. That is, it returns kTRUE when the users wants
      to terminate the loop. Currently the user can terminate the loop by
      selecting the canvas menu View/Interrupt or by hitting any key in
      the canvas. The interrupt flag is set via the routine TROOT::SetInterrupt().
      Of course, this method can be called via any GUI button.

    - TROOT: new methods SetInterrupt() and IsInterrupted(). Used to toggle
      the variable TROOT::fInterrupt.

    - TRootCanvas: new menu item View/Interrupt (see above).

    - hsimple.C: calls gSystem->ProcessEvents() in main loop.
    //
    // 15/07/1998  14.33.25  by  Fons Rademakers
    //
    - rootrc: by default Root.MemStat and Root.ObjectStat turned off.
      Turn only on for debugging purposes.

    - Cleanup of iostream forward declarations in several headers.

    - RConfig.h: new flags:
      R__ANSISTREAM for ANSI C++ compatible compilers.
      R__VECNEWDELETE for compilers supporting overriding of new[] and delete[].

    - TRint: Getprompt() and PrintLogo() made public virtual.

    - TMapFile: default buffer size set to TBuffer::kMinimalSize (128),
      was TBuffer::kInitialSize (1024). Now small objects take only 128 bytes.
      Could maybe optimized more.

    - TStorage: fixed large memory eating bug in EnterStat().

    - New makefile for Linux with KCC.

    - TClonesArray: major fix in the way dtors are called for clone
      objects. This fixes memory leaks in case clone objects contain
      objects that allocated space (e.g. TNamed which contain TString).
      Removed the usage of the interpreter to call the dtor. This
      is now done via the custom TObject::operator delete (see description
      in TClonesArray::TClonesArray() documentation). Also creation of
      space for clone objects simplified (does not use TClass:New() anymore).
      Method Clear() is now same as Delete().

    - TObjArray: Clear() slightly optimized.
    //
    // 10/07/1998  11.46.03  by  Rene Brun
    //
    //
    - New option and parameter in TObject::Write(const char *name, Int_t option, Int_t bufsize).
      Bufsize can be given to force a given buffer size to write this object.
      By default, the buffersize will be taken from the average buffer size
      of all objects written to the current file so far.

      If a name is specified, it will be the name of the key.
      If name is not given, the name of the key will be the name as returned
      by GetName().

      The option can be a combination of:
        kSingleKey and kOverwrite (enums in TObject.h)
      Using the kOverwrite option a previous key with the same name is
      overwritten.
      The kSingleKey option is only used by TCollection::Write() to write
      a container with a single key instead of each object in the container
      with its own key.

    - Changes in TRint::HandleTermInput. Remove an unnecessary test
      on line[0]. Special characters such as French or German accents
      when typed at the keyboard had the bad effect to stop the Root
      session immediatly.

    - Modify the installation procedure for g2root under Linux.
      The trick is to use f2c to convert g2root.f into g2root.c
      compile g2root.c with gcc. This takes care about recursivity.
      Probably the same tric could be used on other machines where Fortran
      does not accept recursive calls.

    - Modify TH1::Build. Do not delete already existing histogram with
      same name in current directory. Simply, remove it from the list.

    - Add operator () in TCollection (thanks Nikolay Root from Novosibirsk).

    - Add a new test program to benchmark collection classes.
      this new test tcollbm has been implemented by Nikolay Root.

    - Mods in test/vmatrix to compile under NT (Thanks Valery Fine).

    - Add "return 0' in main program of test/vlazy.

    - Implement TTUBE::Streamer to take into account class evolution.
      (thanks Vitali Choutko for reporting).

    - Introduce an option in TPostScript to compile this class
      in noopt mode under NT (bug in VC++ optimizer).

    - New version of CINT introduced (5.13.63)
    //________________________________________________________________________
    //
    //::>          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.