ROOT Version 2.20 Release Notes

//________________________________________________________________________
//
//::>          VERSION  2.20/00   27/11/98 15.33.28
//
//
// 26/11/1998  16.51.11  by  Rene Brun
//
- Implement ZOOM on axis. Implement TAxis::ExecuteEvent.
  To zoom along an axis, click with the left mouse button at the position
  where you want to start zooming and release the button where you
  want to end zooming.
  If the button is released outside the axis range, unzooming is applied
  in the corresponding proportions.
  Note that the mouse may be released outside the pad or even canvas range
  if one wants to unzoom by a large factor.
  Zoom is effective for all kind of plots in 1, 2 or 3-D.

- A simple modification in TDirectory::ReadKeys adding IMPORTANT functionality
  to Root in general (thanks Philippe Canal for the suggestion).
  It is interesting to call this function in the following situation.
  Assume another process1 is connecting this directory in Update mode
    -Process1 is adding/updating objects in this directory
    -You want to see the latest status from process1.
  Example Process1:
    obj1.Write();
    obj2.Write();
    gDirectory->SaveSelf();

  Example Process2
    gDirectory->ReadKeys();
    obj1->Draw();

  This is an efficient way (without opening/closing files) to view
  the latest updates of a file being modified by another process
  as it is typically the case in a data acquisition system.

- Protect TH1::Draw when trying to draw a temporary histogram already
  existing in the pad. This solves problems like:
    ntuple->Draw("px"); // this generates temporary histogram htemp
    htemp->Draw(); // in old code, this statement was deleting htemp

- Fix a problem in TTree::DefinedVariable affecting the behaviour
  of TTree::Draw when mixing queries involving arrays with indices
  smaller than 10 and indices greater than 10.
  (thanks Ludger Janauschek for reporting this problem).

- Protect TNtuple::Streamer when reading very old Root files (written
   before January 97). Old TNtuples had one single branch.
//
// 23/11/1998  18.04.39  by  Fons Rademakers
//
- TTF fonts fully implemented. The TTF handling part in ROOT
  is implemented in class TGX11TTF which inherits from TGX11
  and only overrides a few text routines (like DrawText()).
  The loading of the FreeType $ROOTSYS/ttf/libttf.so and the ROOT
  libGX11TTF.so is only triggered when you've installed the
  TTF package in you $ROOTSYS directory. Installing this
  package will create the sub-directory ttf/ containing the lib,
  include and fonts directories. The binary ttf package can be
  downloaded for each platform from the ROOT web site. Of course
  source is also available.

  The FreeType libttf.so "only" contains functions to create a
  pixmap (for anti-aliasing) or bitmap of a certain character,
  for a certain font at a certain size. In the ROOT TGX11TTF class
  all higher level logic, like font caching, character caching,
  string composition, background transparency, color allocation
  for smoothing, etc., etc. is handled.
//
// 22/11/1998  16.56.54  by  Rene Brun
//
- Implement the following new functions in class TMath:
    Double_t TMath::Erf(Double_t x)
    Double_t TMath::Erfc(Double_t x)
    Double_t TMath::Gamma(Double_t z)
    Double_t TMath::Gamma(Double_t a,Double_t x)
    Double_t TMath::GamCf(Double_t a,Double_t x)
    Double_t TMath::GamSer(Double_t a,Double_t x)
    Double_t TMath::LnGamma(Double_t z)
    Double_t TMath::Prob(Double_t chi2,Int_t ndf)

  These new functions have been adapted to the Root coding style
  from original functions implemented by Nick Van Eijndhoven based
  on the book "Numerical recipees". See class TMath for more details.

- Correct comments in TH1::SetBins (thanks Philippe Kanal).

- Fix a problem in TChain::Merge in case the TTree does not reference
  any objects, but only simple structures as for example in TTrees
  generated by h2root (thanks Patrice Lebrun for reporting).

- Add SGI/EGCS and ALPHA/EGCS in $kumacs/globals and test/Makefile.
  (thanks to Pasha Murat).
//
// 14/11/1998  18.27.14  by  Rene Brun
//
- Changes in TCanvas::Streamer to support write/read of a canvas
  from a Root file when running in batch mode.
  The Canvas parameters were not correcly saved in the file due to a
  side-effect of TCanvas::GetTopX that modifies the members
  fWindowWidth and fWindowHeight.
  Also fBatch must be set equal to gROOT->IsBatch in Streamer read mode.
//
// 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)
  The Landau function is a C++ implementation of the function DENLAN
  in CERNLIB (G110).

- 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.
//


ROOT page - Class index - Top of the page

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