ROOT Version 1.01 Release Notes

//
// 05/07/1997  10.22.04  by  Rene Brun
//
- Protect class TClonesArray constructor and [] operator in case
  of an invalid referenced classname.

- Protect classes TFitPanel, TDrawPanelHist in case a canvas is deleted,
  but there are still dialogcanvas (fitpanel,drawpanel) left on the screen.
//________________________________________________________________________
//
//::>          VERSION  1.01/07   02/07/97 19.07.13
//
// 02/07/1997  18.50.05  by  Rene Brun
//
- Change specs for TPad::cd from cd(const char *) to cd(Int_t padnumber=0).
  When a canvas/pad is divided via TPad::Divide, one can directly
  set the current path to one of the subdivisions.
  See TPad::Divide for the convention to number subpads.
  For example:
    c1.Divide(2,3); // create 6 pads (2 divisions along x, 3 along y).
    To set the current pad to the bottom right pad, do
    c1.cd(6);
  Note that c1.cd() is equivalent to c1.cd(0) and sets the current pad
  to c1 itself.

- Several structural changes to the TDialogCanvas and TButton classes
  and their derived classes.
  Several member functions of TPad are redefined in these two classes
  without specifying the option MENU.

- New member function TCanvas::SetEditable et TCanvas::IsEditable.
  New data member fIsEditable in TCanvas.
  By default a TCanvas is editable.
  By default a TDialogCanvas is not editable.
  SetEditable appears as an option in the context menu.

- Modify TClass::GetMenuItems to correctly fill the list of items
  in case a function is declared in MENU in a base class and redefined
  without the option MENU in a derived class.
//
// 26/06/1997  10.11.59  by  Rene Brun
//
- New version of TMotifBrowser from Nenad fixing a segmentation fault.

- A few changes in g2root. In case a GEANT volume name contains
  characters like + - *, they are replaced respectively by p m s.

- Optimisation in h2root. The maximum value of a variable length array
  is now saved in the TBranch/TLeaf structure, such that TTree::MakeCode
  can generate the variable declarations with the maximum value defined
  in the Hbook program.

- Changes in class TH1::PaintColorLevels.
  When a maximum is set on a 2-d histogram, the new version will use
  the same color for all values greater or equal to the maximum.

- New class TELTU implementing the Geant shape ELTU (Elliptic tube).

- Change in TMaterial. This class inherits from TAttLine.

- Protections in TPCON::Paint in case the number of Z sections is less than 2.

- Implement a new option in TNode::Paint.
  A new visibility option (-3) can be set on the top level node.
  This will set visible only nodes with no sons. This option is the best one
  to quickly view a detector.

- Changes in TPolyLine3D to dynamically allocate some buffers.
//
// 23/06/1997  09.05.30  by  Rene Brun
//
- The type of information printed in the histogram statistics box
  can be selected via gStyle->SetOptStat(mode).
  The parameter mode can be = nemruo  (default = 111100)
    n = 1;  name of histogram is printed
    e = 1;  number of entries printed
    m = 1;  mean value printed
    r = 1;  rms printed
    u = 1;  number of underflows printed
    o = 1;  number of overflows printed
  Example: gStyle->SetOptStat(11);
           print only name of histogram and number of entries.

- Optimisation in TTree Input/Output. When a basket is written to the file,
  the basket object is deleted from memory. This saves a lot of space
  in memory when writing very large Trees (Gigabytes). This also improves
  the performance of the TTree::SetAutoSave facility.

//________________________________________________________________________
//
//::>          VERSION  1.01/06   17/06/97 12.12.06
//
//
// 16/06/1997  12.12.56  by  Rene Brun
//
- Change in TObject::Write. If a TFile contains subdirectories,
  the new version supports f.Write at the top level.
  In previous versions, it was necessary to dir->Write at each level
  of subdirectories.
//
// 15/06/1997  22.12.56  by  Fons Rademakers
//
- TUnixSystem: ExpandPathName(), Which(), DynamicPathName() and
  ConcatFileName() now return an allocated char* that should be
  deleted by the user. This is conform the TWinNTSystem behaviour
  and it is thread save. Routines using these functions have been
  modified accordingly.

- Implemented search path for macros. The macro search path can be
  specified in the .rootrc file with:

  Unix.*.Root.MacroPath:  .:~/rootmacros:$ROOTSYS/macros:$ROOTSYS/tutorials
  WinNT.*.Root.MacroPath: .:$HOME\rootmacros:$ROOTSYS\macros:$ROOTSYS\tutorials

  The search path is returned by the static function
  TApplication::GetMacroPath() and used by TSystem::Which().

- New ROOT interpreter command ".which macro.C". Returns path of macro.C.
//
// 14/06/1997  16.47.07  by  Rene Brun
//
- Modify TWebFile::ReadBuffer to take into account the case when
  TKey::ReadFile reads a buffer greater than kMAXFILEBUFFER.
  In this case, fOffset must be incremented.
//________________________________________________________________________
//
//::>          VERSION  1.01/05   13/06/97 19.19.09
//
// 11/06/1997  21.01.54  by  Fons Rademakers
//
- Many (subtile) changes to let ROOT run without the builtin
  new and delete operators. The builtin operators perform
  extra memory checks and always set memory to 0. The system
  new and delete operators do not set memory to 0.
  Thank you Purify!

- Unix/Motif interface to OpenGL. Use the Mesa public domain
  OpenGL implementation or your special OpenGL hardware drivers.
  For example to use OpenGL (Mesa) on HP-UX do:

  {
     gSystem.Load("/usr/lib/libXext.sl");
     gSystem.Load("/usr/lib/X11R4/libXmu.sl");
     gSystem.Load("$OPENGL/lib/libMesaGL.sl");
     gSystem.Load("$OPENGL/lib/libMesaGLU.sl");
     gSystem.Load("$OPENGL/lib/libMesaGLw.sl");
     gSystem.Load("$OPENGL/lib/libMesaaux.sl");
     gSystem.Load("libRGL.sl");
  }

  or on Linux:

  {
     gSystem.Load("/usr/X11/lib/libXmu.so");
     gSystem.Load("$OPENGL/lib/libMesaGL.so");
     gSystem.Load("$OPENGL/lib/libMesaGLU.so");
     gSystem.Load("$OPENGL/lib/libMesaGLw.so");
     gSystem.Load("libRGL.so");
  }

- Handle the kSigWindowChanged signal. If x/hp/dterm is resized the
  line width of getline (the command line editor) will be adjusted
  accordingly.
//
// 11/06/1997  14.34.43  by  Rene Brun
//
- Support for log/log scales in TTree::Draw in case of polymarkers.

- A few changes in TTree::DefinedVariable to allow for more combinations
  to access branch leaves.

- Fix problem in TF1::Integral. Use current parameters instead of
  parameters in data members. This also fix a problem in TH1::Fit when
  called with the option "I".

- Rewrite function TMarker::ExecuteEvent and TMarker::DistancetoPrimitive.

- Modify TH1::MakeChopt to support option "hist"
  When option "hist" is active, only the histogram contour is shown.
  This option is useful in case errors are stored (via TH1::Sumw2) and
  one wants to draw only the histogram contour without error bars.

- Fix a problem in TBranchClones::Streamer. The leaf offset should not be
  reset to 0 when the class referenced by the TClonesArray is available.

- Rename existing class TButton to TGroupButton.

- New class TButton. TGroupButton derives from TButton.
  A TButton object is a simple button with a title and an associated action.
  The action can be any valid CINT command or invokation of a macro.
  A TButton object can be created directly via the graphics editor
  in an existing pad/canvas.
  One can draw in a TButton.
  By default, the button action is executed when clicking with the
  left mouse button on the button.
  To edit the content of an existing button in a pad, select first
  the contextmenu item "SetStatus(0)" by clicking on the button with
  the mouse right button. Note that SetStatus sets the status for all
  buttons in the pad, not only for the selected button.
  A pad layout with one or several buttons can be saved (like any pad)
  on a C++ macro.

- Correct typo in class TH1 when printing an error message.
//
// 06/06/1997  10.52.03  by  Rene Brun
- Fix a problem in cint/newlink. Previous version could not process
  more than 10 include files in rootcint.
//
//________________________________________________________________________
//
//::>          VERSION  1.01/04   04/06/97 15.02.07
//
//
// 03/06/1997  08.35.20  by  Rene Brun
//
- Implement new function TF1::Integral.
  This function computes the integral of a function between two limits
  using a gauss quadrature technique.

- Implement new option "I" in TH1::Fit. When this option is specified,
  the integral of the function in the bin range is used instead of the
  value of the function at the center of the bin.
  Note that this option gives better results, but is slower.

- Changes in TMotifBrowser. When going up and down in a directory-tree
  structure, the directoriy contents are correctly updated.

- Fix in CINT/newlink by Masa in case of a class data member being
  a 2-d static array.

- Fix a problem in h2root. The previous version did not work on large
  Hbook files due to an unnecessary limitation in the loop
  processing the RZ keys.

- TTree::MakeCode generates a new style code based on SetBranchAddress.
  Take also care of sattic arrays in clss referenced by TClonesArray.

- Fix problem in TF2::SetRange (Thanks Glenn Cooper). Following a
  SetRange a Draw operation did not take into account the new range.
  Current histogram must be deleted. Done.

- Correct typo in TH1::Fit (Thanks Glenn Cooper) affecting fits
  on 3-d histograms.

- Change in TBranchClones::Streamer.
  When the class referenced by the TClonesArray is not available,
  set the leaf offset to 0, such that TTree::setBranchAddress can
  be used.

- Protect TH1::PaintStat when no stats and no fits to be drawn.
  (thanks to Nick for reporting).

- Fix a text alignment problem in TPostScript::Text.
  In case of vertical text, the horizontal alignment was wrong.

- Protect TAttLine::DistancetoPrimitive against a division by zero.

- Changes in TBranchClones constructor. The name of the branchcount
  is changed to name of TClonesArray pointer followed by underscore.

- Protect TFormula::Compile in case of compilation error.
  A case happens where fNoper = 1 and fOper = 0. Now protected.

- New functions TGraph::ComputeRange and TGraphErrors::ComputeRange.
  TGraph::PaintGraph calls ComputeRange for a better estimation of
  the graph range.
  Similar change in TGraphErrors::Paint to take into account the errors
  in the computation of the range.

- Fix a problem in TTreeFormula::DefinedVariable in case the parameter
  is a string terminated by a dot (example 999.) Thanks to Damir.

- Modify tutorial hsum to add a slider.

- Mods in TSliderBox::ExecuteEvent to support vertical sliders.

- Modify TH1::DrawPalette.
  In addition to the color table drawn by TH1::Draw with option "col"
  an axis showing the correspondance with colors is painted.

- Implement TH1::SetCellError.

- Changes in TBranchClones, TTree and TBranchObject.
  In case of TTree::SetBranchStatus, a leaf of a TClonesArray was not
  exported in the individual objects of the TClonesArray.

- TMotifBrowser modified to avoid reloading the object from the file
  following a browse operation

- $G__ci include modified to avoid a compiler warning on Alpha/Unix with the
  CXX compiler.
//________________________________________________________________________
//
//::>          VERSION  1.01/03   24/05/97 13.57.18
//
//
// 23/05/1997  17.30.48  by  Rene Brun
//
- New version of CINT from Masa.
  This new version fixes two problems reported to roottalk:
    1- int l = strlen(s); now OK
    2- complex problem reported by Alexei Klimentov. Code generated
       by rootcint did not compile in case of 2-d arrays.

- New member functions in the TH1 class:
  TH1D *TH1::ProjectionX(name="_px",firstybin=0,lastybin=0,Option_t *option="")
  TH1D *TH1::ProjectionY(name="_py",firstxbin=0,lastxbin=0,Option_t *option="")
  These two functions make a projection X,Y of a 2-D histogram into
  a 1-D histogram (always type TH1D).
  By default, ProjectionX uses all the bins along Y for the projection.
  if firstbin,lastybin are specified, they are used to restrict the Y range
  of the projection. Same for ProjectionY.
  If option =="e", the error bars are automatically computed for the projection.
  The resulting projection is named by default with the name of the 2-d histogram
  with the suffix "_px".
  TProfile *TH1::ProfileX(name="_pfx",firstybin=0,lastybin=0,Option_t *option="")
  TProfile *TH1::ProfileY(name="_pfy",firstxbin=0,lastxbin=0,Option_t *option="")
  Same as ProjectionX> instead the result is a TProfile histogram.

- Fix a problem in TTreeFormula::DefinedVariable in  case of a TTree
  with a fixed length array.

- Many changes in TTree::MakeCode. The code generated by this function
  uses the new functions TTree::SetBranchAddress and TTree::SetBranchStatus
  instead of direct calls to TLeaf::SetAddress.

- Fix a problem in TKey::Read in case the key read is a TDirectory.
  The directory name and title is now correctly set.

- Change in TGraph::PaintGrapHist. In case all Y values are negative,
  the y axis had a line drawn up to 0 instead of the maximum of Y.
  (thanks to Rainer Cee for reporting this problem).
//
// 22/05/1997  08.26.50  by  Rene Brun
//
- Modify TClonesArray::ExpandCreate to reset pointers ranging from
  the parameter value n to the maximum size of the array.
  Set the internal pointer fLast to n-1 instead of max(n-1,fSize);

- Slight change in formating the title in TTree::Draw.
  If the cut expression is too long to be drawn, it is shown as {...}.

//
// 20/05/1997  15.03.56  by  Fons Rademakers
//
- TDirectory: add method mkdir(name,title). This is shortcut for
  TDirectory *d = new TDirectory(name, title)

- TSystem: added cd(), pwd() and mkdir() to navigate in OS file system.

- TMessage: fix problem for Alpha/OSF networking (message length was
  wrongly encoded).
//
//
// 18/05/1997  21.57.11  by  Rene Brun
- New class TCutG. A graphical cut.
  A TCutG object defines a closed polygon in a x,y plot.
  It can be created via the graphics editor option "CutG"
  or directly by invoking its constructor.
  When it is created via the graphics editor, the TCutG object
  is named "CUTG". It is recommended to immediatly change the name
  by using the context menu item "SetName".
   When the graphics editor is used, the names of the variables X,Y
   are automatically taken from the current pad title.
  Example:
  Assume a TTree object T and:
     Root > T.Draw("abs(fMomemtum)%fEtot")
  the TCutG members fVarX, fVary will be set to:
     fVarx = fEtot
     fVary = abs(fMomemtum)

  A graphical cut can be used in a TTree selection expression:
    Root > T.Draw("fEtot","cutg1")
    where "cutg1" is the name of an existing graphical cut.

  Note that, as shown in the example above, a graphical cut may be
  used in a selection expression when drawing TTrees expressions
  of 1-d, 2-d or 3-dimensions.
  The TTree expressions may or may not reference the same variables
  than in the fVarX, fVarY of the graphical cut.

  A Graphical cut may be drawn via TGraph::Draw.
  It can be edited like a normal TGraph.

  A Graphical cut may be saved to a file via TCutG::Write.
  A TCutG object is added in the gROOT->GetListOfSpecials .

- New option "CutG" in the Graphics Editor. Function TPad::CreateNewPolyLine
  has been modified.
  To create a CutG with the graphics editor, one must first do
  TTree::Draw("y:x","selection",..)
  then select the CUTG item and click on the 2-d plot to select
  the points delimiting the cut region.
  The polygon is automatically closed by Root.

- TTreeFormula::Definedvariable and TTree::EvalInstance have been modified
  to take into account the new class TCutG.

- TROOT::FindObject modified. The list of Specials is now in the search path.

- TPolyLine3D::Streamer and TPolyMarker3D now operational.
//
//________________________________________________________________________
//
//::>          VERSION  1.01/02   15/05/97 18.58.47
//
// 15/05/1997  18.51.54  by  Rene Brun
//
- Modify TTreeFormula::DefinedVariable to take into account the case
  of a Tree with two TClonesArray referencing two classes with identical
  data member names.
  For example two TClonesArray fTracks and fMCTracks.
  One can do:
    Root > ntuple->Draw("fTracks.fPx")
    Root > ntuple->Draw("fMCTracks.fPx")

- Masa fixed a bug in CINT/Inherit.

- Fix a problem in TKey::Create when option compression is used.
  In some rare cases, the input parameter (nin) to mmuzip was wrong.

- Implement a new constructor in the TArray classes (was already in TArrayF).

- Modify TPad::CreateNewPolyLine in case of log scales.
  When a polyline was created with the graphics editor, the input points
  were not taking into account log scales in the current pad.

- Change format in TGraph::SavePrimitive.
  Remove a comma left from a previous calling sequence.

- Modify TInterpreter to include TWin32HookViaThread.

- Implement TTree::Project (interface to TTree::Draw).

- Activate option Bar in TH1::PaintHist.
  Because the TGraph object created by TH1::PaintHist uses gStyle
  for the Bar Offset and Width, the TH1 baroffset and width data members
  are temporarily copied to gStyle before drawing. gStyle is reset at
  the end of TH1::PaintHist.
//
// 06/05/1997  09.49.12  by  Rene Brun
//
- Do not print error messages when drawing empty 2-d histograms.
//________________________________________________________________________
//
//::>          VERSION  1.01/01   06/05/97 08.06.28
//
// 06/05/1997  08.04.52  by  Rene Brun
//
- Implement possibility to fit a sub-range of a TGraph.

- Modify TTree::Scan to work with columns that are strings.
  The width of columns printed by Scan is variable. It is computed
  automatically from the maximum length of a string variable.
  The interface is via TTreeFormula::PrintValue.

- Added one parameter to TTreeFormula::PrintValue.
//
// 04/05/1997  20.21.01  by  Valery Fine(fine@vxcern.cern.ch)
//
- TWiNTSystem  - change the CTRL-C handle. Now it terminates WIN32
                  application. So far it crashes ROOT.

- TGLKernelABC - Bool_t fTrueColorMode data-member and methods are introduced

- TGLKernel::SetCurrentColor(Int_t color) - respects the fTrueColorMode to set color
                    as result OpenGL works with all kind of Video mode under Windows
//
// 02/05/1997  16.13.01  by  Rene Brun
//
- Fix a problem in h2root. The name of the leafcount was changed
  to lower case, including the first letter. First letter should be left
  unchanged.
//
// 30/04/1997  19.16.50  by  Rene Brun
//
- Merge with Fons version. This includes changes in $Copyright and $TMath includes.
  Cosmetic changes in Math.
  Add gEnv in cint_base.

- Merge with Valery's version.
  New deck MakeDistSourceWindows in $kumacs.
  Add "SetLineIsProcessing" in Application and Rint.
  Changse in GWin32, $TGLKernel and glkernel.
//________________________________________________________________________
//
//::>          VERSION  1.01/00   30/04/97 12.46.21
//
//
// 30/04/1997  12.14.11  by  Fons Rademakers
//
- TObjectTable: removed most of the static member functions. Class is not
  a singleton anymore. However, static member AddObj() may only be called
  by system (in TObject::TObject) to update the global gObjectTable.

- Implemented primitive garbage collector as a set of static member functions
  of TCollection. The purpose of this garbage collector is to make sure
  and object stored in many different collections (all referenced from
  the same master object) get deleted only once. For example, an object
  of class Event:

  class Event {
     private:
        TList      fTracks;
        THashTable fVertex1;
        THashTable fVertex2;
     ...
  };

  contains three collections. Each collection may contain pointers to
  the same objects (tracks). Now in case it is not clear which collection
  is the owner of the objects on should use the garbage collector in the
  Event destructor. For example:

  Event::~Event()
  {
     TCollection::StartGarbageCollection();
     fTracks.Delete();
     fVertex1.Delete();
     fVertex2.Delete();
     TCollection::EmptyGarbageCollection();
  }

- TServerSocket: non-blocking I/O is now correctly supported.
  TServerSocket::Accept() now returns -1 in case of non-blocking I/O
  and no connection available.
//
// 30/04/1997  14.31.56  by  Rene Brun
//
- Add new member function TBuffer::SetReadMode and TBuffer::SetWriteMode.

- Changes in TBasket and TBranch to allow adding data to a TTree
  in an old Root file. (file must be open in UPDATE mode).
//
// 29/04/1997  15.21.19  by  Valery Fine(fine@vxcern.cern.ch)
//
- TROOT::TROOT  - the default value for the fLineIsProcessing data-member
                  was changed from 0 (zero) to 1. This prevents any mouse
                  activities under Windows unless program creates TRint
                  object. Otherwise the stand-alone ROOT-based application
                  is crashed just the user touches the graphics windows
                  unexpected.
- TRint::TRint  - Call gROOT->SetLineHasBeenProcessed() to change the state
                  of the gROOT->fLineIsProcessing counter and allow the user
                  to interact with TCanvas objects.


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.