ROOT Version 1.02 Release Notes
//________________________________________________________________________
//
//::> VERSION 1.02/00 25/07/97 19.20.43
//
Summary of the main changes or new features in version 1.02 (1.01/08)
=====================================================================
===========> New features
- On popular demand from the many users who use ROOT in on-line or DAQ
environments we've now implemented shared memory for the storage of
objects. Using this feature a DAQ program can produce status histograms,
which can be retrieved by monitor programs. For more info see the
TMapFile class and the tutorial macros hprod.C and hcons.C.
This feature works on all Unix platforms and Win NT/95.
- OpenGL interface and OpenGL 3D viewer. Any 3D ROOT objects (TPolyLine3D,
TPolyMarker3D, TGeometry, etc.) can be displayed in the OpenGL viewer
via the command TPad::x3d("OPENGL") (also accessable via the view memu
in the canvas menubar). On WinNT the OpenGL DLL is loaded automatically,
on Unix one needs to load the OpenGL and additional X libraries via
a macro GL.C. On Unix one can use the Mesa public domain OpenGL
implementation (http://www.ssec.wisc.edu/~brianp/Mesa.html).
- 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().
The new ROOT interpreter command ".which macro.C" returns the path of the macro.C.
- New class TButton. A TButton object is a simple button with a title
and an associated action. The action can be any valid CINT command
or invocation of a macro. A TButton object can be created directly
via the graphics editor in an existing pad/canvas. To be able to execute
the actions bound to a button one has to set the call
TCanvas::SetEditable(kFALSE) (also via context menu in canvas).
- 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.
- 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. The graphical cut object
can be used by TTree::Draw as cut region on a 2d plot.
- 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.
- 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.
- 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.
- 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.
- Many, many new minor features and bug fixes.
--------------------------------------------------------------------------
For more detail on the above mentioned major changes and a detailed
description of the smaller new features and bug fixes see the developers
history file below.
--------------------------------------------------------------------------
//
// 25/07/1997 16.20.38 by Fons Rademakers
//
- New class TMapFile: implements shared memory using a memory mapped file.
Example usage of this new feature can be found in the hprod.C (producer)
and hcons.C (consumer) scripts. The general principle of operation on
the producers side is:
- create a TMapFile object specifying its expected upper size limit
(this file becomes the current directory)
- create histograms, profiles (they will be automatically added to
the current directory, objects of other classes need to call explicitely
AppendDirectory())
- fill histograms, etc
- once in a while call TMapFile::Update() to update the objects in
shared memory
And on the consumer side:
- open existing TMapFile object
- get object from shared memory by name using TMapFile::Get()
- display or operate on object
The calls Update() on the producer side and Get() on the consumer side
are necessary because we can not store objects with vtbl ptr's directly
in shared memory. The problem is that the vtbl ptr is only valid on
the producer side. Any call of a virtual function of an object in
shared memory on the consumer side would result in a bus error (since the
virtual function call would require a dereference of the illegal vtbl ptr).
So the simple solution we've implemented is to stream the objects out to
and in from a buffer mapped in shared memory (Update() and Get()).
This method requires the objects to be stored in shared memory to have
a Streamer() method (generated via rootcint). In the (near) future we
hope to be able to remove the Update() (storing objects unmodified in
shared memory) and only use the Get() (which will require a deep copying
copy ctor that does not use any virtual functions).
The objects in shared memory can be inspected with the browser.
//
// 25/07/1997 18.42.23 by Piotr Golonka
//
- Help menu activated for canvas, browser and OpenGL viewer.
- Implement ToggleButtons for context menus. Methods affected are:
TCanvas::SetEditable
TPad::SetLogx
TPad::SetLogy
TPad::SetGridx
TPad::SetGridy
To activate a toggle button use *TOGGLE* in the comment field of the method
instead of *MENU*
//
// 21/07/1997 13.19.27 by Rene Brun
//
- Implement the drawing of fit parameters for TGraph/TGraphErrors objects.
The TH1::PainStat function has two new arguments and becomes public.
TGraph::PaintGraph invokes TH1::PainStat
- In TBranch::Fill do not drop baskets if gDirectory == gROOT.
- Fix a problem in h2root in case of a column with Double Precision.
- Fix a problem in TFormula::Analyze in case of expressions involving
x**2 or x^2.
- Implement log scales for TGraph.
- Several changes in class TButton. See documentation in class.
- Implement writing/reading 2-dim arrays (with one variable) in
the TBranch/TLeaf classes.
- Changes in TTree::MakeCode to support 2-d arrays.
- In function TPostScript::Text, special case when the string contains
ntuple selection operators like & or !
If the string contains a { the above symbols are skipped. This special case
happens in histogram titles containing the selection expression.
- Several improvements in the OpenGL interface. Perspective view
now implemented.
- Additional documentation in several classes.
//
// 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 static arrays in class 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.