ROOT Version 2.22 Release Notes
//________________________________________________________________________
//
//::> VERSION 2.22/10 28/07/99 10.25.01
//
//
// 28/07/1999 10.16.26 by Rene Brun
//
- Solve a rounding problem in TGraph::PaintGrapHist. Sometimes, the last
bin of an histogram was not completly drawn. Thanks Philippe Canal
and Christian Lacunza for reporting.
- The TF1, TF2 and TF3 constructors set the member fNdim in case
TFormula is not invoked. (Thanks Eddy Offermann for reporting).
- Improvements in TPostScript for fill areas with special patterns
(fillstyle >3000). Many thanks to Olivier Couet for implementing
this new logic.
- Minor changes in stress to cope with the new TPostScript changes.
- Modify MakeDepend (opengl -->ttf) Thanks to Damir Buskulic.
//
// 23/07/1999 14.42.49 by Fons Rademakers
//
- TRFIOFile: correct handling of symbolic links to RFIO files.
Also added missing dtor which correctly calls Close().
- GIFDecode: fixed some typo's.
- TClass: make sure in CreateClass() that the dictionary is always
created on the heap and not in a mapped file.
- TMapFile: removed special dictionary allocation case (now in TClass).
- TF1: use Error() instead of Printf().
- New CINT 5.14.10 by Masa Goto:
1140, virtual base class instantiation in ctor
1141, typedef long long int __quad_t; bug fix
//
// 19/07/1999 11.48.23 by Fons Rademakers
//
- Make-macros: added libstrm case for alphaegcs.
Updated compiledata.h (by Philippe).
- Makelib: added the missing $EXTRA field for several platforms.
- TSystem: script compiler knows now about object extension (by Philippe).
- TMath: inline Atan2 implemented without multiple returns for old
HP CC compiler.
- New CINT 5.14.9 by Masa Goto:
Fixes some serious defect in resolving overloaded member functions with
default arguments.
- , G__VARIABLEFPOS, linenum added
1138, #pragma link, undefined symbol warning
- , disable 1083, class A{const char *str; const int N=5;};
1139, G__type2string, invalid tagnum protection
- , 1137 fixed
G__PTR2MEMFUNC, t195.cxx, pointer to member function support
//________________________________________________________________________
//
//::> VERSION 2.22/09 13/07/99 19.08.41
//
//
// 13/07/1999 18.38.25 by Fons Rademakers
//
- TContextMenu: new member functions to also handle TToggle actions.
For example, toggling log scale in the pad will now result in
an instant refresh of the screen.
- TRootContextMenu: calls the new TContextMenu methods.
//
// 13/07/1999 18.49.08 by Rene Brun
//
- Minor format change in TTree::Show when printing TLeafC or TLeafB values.
- Modify logic in TH1::PaintInit and TH1::TableInit in case one draws
an histogram/table in log scale and the origine is negative.
- in TPave constructor, set the option to "brNDC" in case it is given
as "NDC" only.
- Update Makelib and Makefile.alphaegcs. Makefile.alphaegcs was the old
makefile for gcc.
//
// 12/07/1999 22.03.04 by Rene Brun
//
- New code in TTreeFormula::PrintValue. This function is called by TTree::Scan.
In case of leaves of type TLeafB, print value of leave as an array
of chars as it was already the case for leaves of type TLeafC.
- Minor change of logic in class TH1 when invoking TH1::PaintStat.
The test on the kNoStats bit is now done in the calling function instead
of TH1::PaintStat. This solves a problem when this function is called
by the TGraph class. With this change, fit parameters appear again
when a TGraph object is drawn and gStyle->SetOptFit is active.
Thanks Nick van Eijndhoven for reporting the problem.
- Thanks to Philippe Canal for a nice suggestion. Add "canvas->Show()"
to the interpreted command to show/edit attributes and also
the Fitpanel and Drawpanel. With this change, when the attribute canvas
is selected (eg, attline), the attribute canvas is automatically popped
in case it was hidden by some window. The corresponding functions have been
modified accordingly:
TAttLine::SetLineAttributes()
TAttFill::SetLineAttributes()
TAttMarker::SetLineAttributes()
TAttText::SetLineAttributes()
TGraph::FitPanel()
TH1::DrawPanel()
TH1::FitPanel()
- Modify TPad::PaintModified. In case the canvas/pad fill style is 0,
TPad::PaintModified should not be called when in Postscript mode.
The result was OK but the Postscript file generated was bigger.
Thanks Mathieu de Naurois for reporting.
- Some changes in constants in TDatabasePDG (Thanks Danielle Picard).
- in TColor::SetRGB, the dark & light colors are set for systems
with more than 8 color planes. For 8 color planes display, the dark
and light rgb are set to 0.3 and 0.8 respectively.
This simple change helps a bit on old displays when running Root
together with Netscape.
//
// 11/07/1999 12.27.54 by Fons Rademakers
//
- New CINT 5.14.8 by Masa Goto:
5.14.8 4 Jul 1999
1132, cout << c*1./d << endl; bug fix
PHIL2, inode checking in #pragma defined_in
1133, -u [undeffile] improved with #pragma link off
1134, int const a; bug fix
1135, static var access in include file, static func is still not implemented
1136, script compiler shl.c modification 2
1137, function parameter match improvement for default constructor
//
// 11/07/1999 08.58.15 by Rene Brun
//
- Protection added in TPad::DrawClassObject in case the dictionary
for a base class is not available.
//
// 10/07/1999 21.42.51 by Rene Brun
//
- In several functions where the canvas attribute panels or Fitpanel are called
via the interpreter, declare the type of object being instantiated.
eg, attfill = new TAttFillCanvas(..
is changed to:
TAttFillCanvas *attfill = new TAttFillCanvas(..
because with CINT's new feature " set automatic variable allocation mode '0' "
errors are reported.
Classes modified are TH1, TF1, TGraph, TAttText, TAttFill, TAttLine, TAttMarker.
Thanks Christian Lacunza for reporting this problem.
- in TApplication::InitializeColors, rename color 12 to be "grey12"
instead of "grey13". Thanks Christian Lacunza.
- A few changes in the Physics vector classes to implement the decisions
taken at the CERN/FNAL video-conference between the CLHEP/ZOOM and ROOT
development teams(new code from Peter Malzacher). Thanks to all involved:
Mark Fishler, Peter Malzacher, Pasha Murat, Philippe Canal.
- Protection added to TBranch::GetBasket. When a Root file is corrupted
(disk quota, AFS quota/buffer problem, overwrite), the new code
detects this case and reports a message indicating the address
of the possible overwritten area.
- Fix a bug in TPolyMarker3D::SetPolyMarker and TPolyLine3D::SetPolyLine.
The maximum of the loop index must be fN instead of 3*fN
Thanks Federico Carminati for reporting.
//
// 09/07/1999 10.47.43 by Rene Brun
//
- The axis "UnZoom" interactive facility now works in case of a pad
containing several histograms.
- in class TLorentzVector, change name of embedded class HepLorentzRotation_row
to TLorentzRotationRow to be conform to the Root naming scheme.
- Change default compiler optimisation level from -g or -g1 to -O
in the makefiles for hp-ux.
- in Makedepend file, replace all hardwired pathnames for ttf and opengl
by $ROOTSYS/opengl and $ROOTSYS/ttf.
Thanks Dmitri Litvintsev for reporting.
- Protect TPad::PaintModified in case gPad=0 at the entry of the function.
This case may happen in the following situation:
TCancas xxx;
xxx.Update();
Thanks to John Zweizig for reporting the problem.
//
// 08/07/1999 18.48.48 by Rene Brun
//
- Add a protection in TPad::RecursiveRemove. When the object being deleted
is the object currently selected, the fSelected member in the Canvas
must be reset. The situation may happen in very complex situations
when clicking very rapidly and repetitively on a pad being dynamically
updated (histograms filled in a loop + timer).
Thanks Patrick Decowski for reporting.
- New feature in TPad::Print. A canvas saved into a root file can be
printed on Postscript directly without drawing on the screen. eg,
Root > TFile f("c1.root");
Root > c1.Print("c1.ps");
- Remove an inconsistent line in TVector3.h (extern TVector3..)
generating a clash when Root and CLHEP were used together.
Thanks Pasha Murat for reporting.
//________________________________________________________________________
//
//::> VERSION 2.22/08 07/07/99 18.53.13
//
//
// 07/07/1999 18.36.37 by Rene Brun
//
- Modify prototype for TParticle::GetPolarisation.
void GetPolarisation(TVector3 &v);
- Fix a minor problem in TRootCanvas::HandleContainerCrossing
affecting TPaveText::InsertText. With this fix, the TPaveText context menu
item "InsertText" can be used again to insert a text at the mouse position
in a TPaveText object.
- Modify TH1::PaintStat2 to not draw the stats box when the kNoStats bit
is set. This bit is automatically set in TTree::Draw when drawing
the default TH2F created to set the frame range.
- Modify tutorial hsum.C to invoke c1->RedrawAxis at the end of the macro.
- Modify tutorial zdemo to invoke TPad::DrawFrame instead of creating
an empty TH2F (2 places).
- Protection in TTree destructor when the Tree is deleted from a TFile
close or destructor.
- New functions in TMath to return the index of the maximum or minimum
of an array.
Int_t LocMin(Int_t n, Short_t *a);
Int_t LocMin(Int_t n, Int_t *a);
Int_t LocMin(Int_t n, Float_t *a);
Int_t LocMin(Int_t n, Double_t *a);
Int_t LocMax(Int_t n, Short_t *a);
Int_t LocMax(Int_t n, Int_t *a);
Int_t LocMax(Int_t n, Float_t *a);
Int_t LocMax(Int_t n, Double_t *a);
//
// 07/07/1999 11.56.40 by Fons Rademakers
//
- TBuffer: use TExMap when writing instead of TMap. Use hash based on
object's memory address to determine uniqueness (TObject::Hash()). In
previous versions the uniqueness was determined by the derived class'
Hash() method, which, for example, for TNamed's was the hash of the
name.
- Make-macro: fixed name of RFIO dictionary file.
- TGX11: declared XPoint as struct to CINT.
//________________________________________________________________________
//
//::> VERSION 2.22/07 06/07/99 09.04.33
//
//
// 05/07/1999 17.44.39 by Fons Rademakers
//
- All container iterators: have now copy ctor and assigment operators.
- TIter: has now copy ctor and assignment operator.
Both the copy ctor and assignment operator use the assigment operator
of the container iterators (see above).
//
// 05/07/1999 17.08.22 by Rene Brun
//
- Modify TH1::PaintStat and TH1::PaintStat2 to draw the statistics box
even in the case where nentries=0.
Because TGraph objects are drawn via TH1::Paint, the temporary histogram
created in TGraph::PaintGraph has its bit kNoStats set to not draw
the stats box.
- Several corrections in class TAttParticle.
- Modify signature for TVirtualPad::DrawFrame and TPad::DrawFrame.
The new function returns a TH1F* instead of being void.
- Modify tutorial gerrors2 to use TPad::DrawFrame instead of a TH2F.
- Add new dictionary G__Graf3 including TStyle TView, TF1,2,3
This minimizes the size of the Graf1 dictionary.
Create new script cint_g3 and G3_LinkDef.
Modify cint_all, cint_g1, cint_g2, G1_LinkDef, G2_Linkdef and makemacros.
- New version of TPythia::ImportParticles (TClonesArray *particles).
The new version fill the array particles with TParticle objects
instead of TMCParticle. (Thanks Federico Carminati).
- Modify script makecompiledata (windowsNT case).
- Fix a problem in TGraphAsymErrors destructor. Due to a typo, the array
fElow was deleted twice.
- A few changes in TPostScript::DefineFillPatterns necessary to handle
fill patterns 3000 and above. (Thanks Jorg Rieling for reporting).
- Introduce new versions of classes TThread, TPosixCondition
(from Marc ).
//
// 02/07/1999 14.13.30 by Rene Brun
//
- In TPad::Print, automatically update current canvas before generating
a gif file.
- Merge with latest Philippe Canal versions of the following classes;
TCint, TInterpreter, TSystem.
- Implement a few changes by Peter Malzacher in the physics vector classes.
- A few changes in TAttParticle.
//
// 02/07/1999 13.07.07 by Fons Rademakers
//
- TObjArray: fix in BinarySearch() in case array contains empty slots.
- TParticle: fix GetPDG() (by Christian Lacunza).
- New CINT 5.14.7 by Masa Goto:
5.14.7 26 Jun 1999
1126, undefined type in function argument. Warning message
1127, B b(new A(123,3.14)); bug fix
1128, float(x); type conversion operator bug fix
1129, cout << x; type conversion operator with operator overloading bug fix
Still having problem with t182.cxx with bytecode. Need to fix this.
1130, print(float f); print(x); implicit type conv
- , floating accuracy expression %.17g -> %.17e, integral literal bug fix
1131, cout << this << endl; bug fix
//
// 01/07/1999 16.56.44 by Rene Brun
//
- New versions of TDatabasePDG and TParticlePDG from Federico Carminati.
- a few changes in the comments in TCanvas (with #ifdefs for R__THREAD)
to generate a better html documentation.
- Protection introduced in TGraph::ExecuteEvent in case multiple double clicks
on the same point.
- Fix a problem in TH1::Rebin. Last bin was not correctly taken into account.
(Thanks Chris Jillings for reporting).
//
// 30/06/1999 10.36.53 by Fons Rademakers
//
- TROOT, TTree, TBasket: fix some uninitialized variables
(found thanks to Purify).
- WidgetMessageTypes.h: new include containing enum with
all "official" widget messages. Formerly part of TGWidget.h.
- TDatime: new ctor taking UInt_t. Default
ctor to avoid calling the TDatime::Set() in the default TDatime
ctor. Default TKey ctor is only called when reading a TKey and
in that case the TDatime is read from file and there is no
need to first have it set (which may be potentially expensive
since it call localtime()).
- TRFIOFile: call rfio_unlink() instead of gSystem->Unlink() to
delete an RFIO file. Option "RECREATE" should work now.
//
// 30/06/1999 17.50.46 by Rene Brun
//
- Modify TBranch constructor and TBranch::Reset to always preset to 0
the internal tables fBasketEntry and fBasketSeek.
- Modify TTree::MakeClass to generate code that can be compiled
by the normal compiler as well as interpreted by CINT.
Add comments in the generated implementation file to explain how
to use the genearted code.
- Add a new function TBasket::ReadBasketBuffers(char *buf).
This function is called by TBranch::GetBasket in case the length
of the corresponding buffer is less than the temporary space (1000 bytes)
used to read the TBasket header. This avoids reading twice the buffer
in case of very small buffers.
- Fix a problem in TGraph::PaintGraph. In case of a logy scale
and option "bar", the graph was not correctly clipped along y.
(Thanks Rainer Cee for reporting).
//
// 28/06/1999 00.32.19 by Rene Brun
//
- Add a new set of colors (51->100) in class TApplication.
These new colors fill a spectrum ranging from violet to red.
- In TStyle::SetPalette(int ncolors, int *colors=0)
support a new option.
When calling SetPalette(0), the default palette is set.
When calling SetPalette(1), a new color palette is defined
using the 50 colors 51->100.
This palette 1 should be used to produce contour, lego, surface plots.
Thanks to Thomas Ulrich and Jon Gans from the STAR collaboration.
- Modify TH1::PaintSurface and TH1::PaintLego to take into account
the new color palette 1.
- In the TColor constructor, do not create the associate dark/light
colors when the color number is > 50.
- Protect TH1::PaintScatterPlot in case of logz scale. (thanks Otto Schaile)
- Correct un unfortunate typo in the description of the TF1 doc.
(thanks Mark Fishler).
- In TPad::GetFrame, add a protection in case a user has deleted an existing
TFrame with the mouse (Thans Philippe Canal).
//________________________________________________________________________
//
//::> VERSION 2.22/06 23/06/99 08.36.20
//
//
// 23/06/1999 08.34.13 by Rene Brun
//
- Modifications in new class TParticle (thanks Federico Carminati).
Corresponding changes in TGenerator.
- Note that this new class TParticle uses the new set of PDG classes
in patch EG. These PDG classes are still under development.
//
// 23/06/1999 08.31.08 by Peter Malzacher <malzache@fnal.gov>
//
- some improvements in the new CLHEP imported class TLorentzVector
//
// 22/06/1999 19.15.42 by Fons Rademakers
//
- TUrl: fixed illegal changing of const char*.
- TSystem: exposed enum EAccessMode to CINT.
- TSystem, TROOT, TCint: applied mods of Philippe Canal for the
script compiler.
//
// 22/06/1999 10.18.25 by Philippe Canal (pcanal@fnal.gov)
//
- Script Compiler
===============
This new ROOT facility facilitates the use of an external compiler to
'interpret' a C++ root macro (script). The external compiler will
be called to create a shared library that is automatically loaded.
The interface is simple and extend the use of the .X, .x and .L cint commands.
For any of this command if '++' is appended to the name of the script file,
the script compiler is invoked. For example:
.X myFunc.C++(arg1,arg2)
will compile the file myFunc.C, load the resulting shared library and
invoke the function myFunc(arg1,arg2). (As as reminder if the ++ is
dropped, the cint interpreter is used to parse and execute the script).
The script compiler cannot currently digest any C++ code that does contain
a 'main' function or the redefinition of any ROOT global variables (like
TROOT). For the script to be both understandable by cint (via .X myFunc.C )
and by the script compiler (via .X myFunc.C++ ) follow the following
rules (some of these made be relaxed at a latter date):
- contain all needed include files surronded by #ifndef __CINT__
- contain forward declaration for all classes used in function declaration
(this need to be visible by cint)
- If the script has a supporting header file, for example defining some
extra classes, the header has to be in the same directory as the
script in order for its content to be available directly from
the command prompt.
For example:
// This is a ROOT Script myScript.C
// that just draw and fit and histogram
#ifndef __CINT__
#include "TH1.h"
#endif
class TH1;
void myScript( TH1* h, const char * formula ) {
h->Draw();
h->Fit(formula);
}
The script compiler is set to use the same compiler and compiler flags
as ROOT. This can be modified using the following new methods in the
TSystem class: Get/SetIncludePath, Get/SetMakeSharedLib and
Get/SetMakeExe. Typically only the include should need to be modified.
For example:
gSystem->SetIncludePath("-I$ROOTSYS/include -I$HOME/mypackage/include");
For more details refer to the documentation of TSystem::CompileMacro and
TSystem::SetMakeSharedLib.
//
// 21/06/1999 12.44.18 by Rene Brun
//
- New version of class TParticle from Federico Carminati.
(see header file for new definition).
- Optimisation of TTree::MakeClass. The maximum dimension of arrays
is now defined via const Int kMaxxxx variables intead of constants.
- Give more digits when printing in TF2::GetObjectInfo.
//
// 19/06/1999 10.49.06 by Rene Brun
//
- Integrate the new Physics vectors classes adapted to Root
by Peter Malzacher.
In particular, the existing classes TParticle and TGenerator
had to be slightly modified to cope with the new interface
of TLorentzVector.
- Modify scripts cint_physics, Physics_linkDef, Makemacros and
MakeDepend to add the new CLHEP classes.
//
// 19/06/1999 10.31.45 by Peter Malzacher
//
- Import CLHEP Physics vectors classes into ROOT
==============================================
The following classes have been imported from CLHEP.
- TVector3
- TLorentzVector
- TRotation
- TLorentzRotation
Note that the classes TVector3 and TLorentVector have a few
backward incompatibilities with the previous clases with the same name.
Add a new test program in $ROOTSYS/test/TestVectors.cxx
To run it, one can use the new feature of Root to invoke
the compiler and linker dynamically.
Root > .X TestVectors.cxx++ // with the compiler
Root > .X TestVectors.cxx // with the interpreter
//
// 18/06/1999 16.09.49 by Rene Brun
//
- New functionality added to class TTree
======================================
void TTree::BuildIndex(const char *majorname, const char *minorname)
Build an index table using the leaves with name: major & minor name
The index is built in the following way:
A pass on all entries is made using TTree::Draw
var1 = majorname
var2 = minorname
sel = majorname +minorname*1e-9
The standard result from TTree::Draw is stored in fV1, fV2 and fW
Thew array fW is sorted into fIndex
Once the index is computed, one can retrieve one entry via
TTree:GetEntryWithIndex(majornumber, minornumber)
Example:
tree.BuildIndex("Run","Event"); //creates an index using leaves Run and Event
tree.GetEntryWithIndex(1234,56789); //reads entry corresponding to
Run=1234 and Event=56789
Note that once the index is built, it can be saved with the TTree object
with tree.Write(); //if the file has been open in "update" mode.
The most convenient place to create the index is at the end of
the filling process just before saving the Tree header.
Note that this function can also be applied to a TChain.
Int_t TTree::GetEntryWithIndex(Int_t major, Int_t minor)
Return entry corresponding to major and minor number
For example:
Int_t run = 1234;
Int_t event = 345;
Int_t serial= tree.GetEntryNumberWithIndex(run,event);
now the variable serial is in the range [0,nentries] and one can do
tree.GetEntry(serial);
Int_t TTree::GetEntryNumberWithIndex(Int_t major, Int_t minor)
Return entry number corresponding to major and minor number
//
// 18/06/1999 09.15.35 by Rene Brun
//
- Minor changes in TH1 class to replace objects TAxis xaxis,yaxis,xaxis
by pointers.
- Modify default constructor for class TDatabasePDG to support I/O.
With the old form, one could not read this object from a file.
- Fix problem in the TMath::Sort functions. The convention for the
index values start at 0 instead of 1. The result was Ok when sorting
in decreasing order, but not when sorting in increasing order.
- No more optional parameters in one TF1 constructor.
TF1(const char *name, void *fcn, Float_t xmin, Float_t xmax, Int_t npar);
- Fix a problem in TBasket::Streamer. In case a TTree was created and
saved in a file with 0 entries, it was not possible to continue
to fill the Tree in a subsequent job when one of the branches contained
variable length data per entry.
Thanks Alexander Inyakin for reporting the problem).
- In CINT_Physics chnage the name G__PHYSICS to G__Physics.
- minor changes in test programs stress, hsimple and stress such that
these programs can be executed:
- in batch with the standard Makefile & compiler
- via the interpreter (eg .x hsimple.cxx)
- via the interpreter calling the compiler (eg .x hsimple.cxx++)
- Add new functionality in TH1::GetMean, TH1::GetRMS. In case these
functions are called on a histogram never filled via TH1::Fill
the statistics quantities are computed using the bin contents.
//________________________________________________________________________
//
//::> VERSION 2.22/05 15/06/99 17.34.57
//
//
// 15/06/1999 17.29.26 by Rene Brun
//
- Improvement in TGraph::PaintGraph when drawing a graph in log scale
and the dynamic range in x or/and y is > 10000.
- Modify TF1::Streamer to invoke TF1::Save in case of interpreted/compiled
functions (fType > 0). Take into account the possibility for this
object to be written/read/written in multiple cycles.
//
// 15/06/1999 15.35.58 by Fons Rademakers
//
- AA_CREDITS: new file containing list of people who contributed to ROOT.
List is still being assembled (we should have started sooner), so if you
are not yet on don't worry yet.
- GLOBALS: make sure the the CXXOPT '-c' is the last in the string. The
macro makecompiledata depends on it.
- New macro makecompiledata: this macro generated the compiledata.h file
which provides sensible default compiler options. compiledata.h is used
by the new interface to the native compiler for automatic script compilation.
Outside of CMZ compiledata.h is generated by the Makefile.
- TTabCom: provide a private copy ctor. Also initialized fpFiles and
fpSysIncFiles in ctor.
- TCint: fix in TypeName() to correctly handle function pointer type names.
This fixes the bug: Error in <TDataMember::TDataMember>: basic data
type (*)(Double_t*, Double_t*) not found in list of basic types
- rootcint: prevent __MAKECINT__ to be defined as macro in the dictionaries.
- TGListBox: new method GetSelectedEntries(TList *entries). Thanks R.Rohlfs.
//
// 14/06/1999 17.24.17 by Rene Brun
//
- Include changes from Philippe Canal in the following decks.
TSystem, TApplication, TCint.
The new code from Philippe together with the new version of CINT 5.14.6
adds a very interesting new feature to ROOT/CINT.
The purpose of this addition is to allow the user to use an external
compiler to create a shared library from its C++ macro (scripts).
Currently in order to execute a script, a user has to type at the root prompt
.X myfunc.C(arg1,arg2)
We propose to allow him to type:
.X myfunc.C++(arg1,arg2)
In which case an external compiler will be called to create a shared
library. This shared library will then be loaded and the function
myfunc will be called with the two arguments. Of course the ++ notation
will also be supported in similar way for .x and .L.
The current implementation is still a prototype. It requires a special
setup macro to be executed before using this service.
For more details, see comments in TSystem::CompileMacro.
- Changes in TTree::MakeClass to compute the pointer to the top level branch
in case of a TBranchObject and to set its dummy address.
- Changes in TBranchObject::SetAddress. In case add contains the invalid
adress=-1, the special bit kWarn is set. This bit is used to inform
TBranchObject::GetEntry that this branch address is not set and let
GetEntry invoke the GetEntry function of its sub branches.
This case happens in case of a class generated by TTree::MakeClass.
- Minor changes in headers of the following classes:
TLeafB, TLeafC, TLeafD, TLeafF, TLeafI, TLeafS, TSpectrum
Declare several data members non persistent (! as first character
in comment field).
- Minor change in GlKernel by Valery fine (Win32 version only).
//
// 10/06/1999 18.46.21 by Fons Rademakers
//
- TMessage: take care of byte length offset when reading, by moving
fBuffer 4 bytes backward, in this way the recorded offsets match again.
- TGTab: take width of all tabs into account in DefaultSize() (by R.v.d.Eijk).
- TGListTreeItem: new member SetPictures(), to change the icons used for the
tree item in open and closed state (by L. Aphecetche).
//
// 09/06/1999 14.49.50 by Rene Brun
//
- New function TH1::GetStats(Stat_t *stats).
This new function returns or/and compute the following quantities.
stats[0] = sumw
stats[1] = sumw2
stats[2] = sumwx
stats[3] = sumwx2
stats[4] = sumwy if 2-d or 3-d
stats[5] = sumwy2
stats[6] = sumwz if 3-d
stats[7] = sumwz2
The array stats must be correctly dimensionned in the calling program.
If no axis-subrange is specified (via TAxis::SetRange), the array stats
is simply a copy of the statistics quantities computed at filling time.
If a sub-range is specified, the function recomputes these quantities
from the bin contents in the current axis range.
- New functionality added to TH1::GetMean and TH1::GetRMS.
The new implementation invokes TH1::GetStats.
- TH1::PainStat and TH1::PaintStat2 modified to take into account
the new functionality from TH1::GetMean and GetRMS.
When a subset of an histogram is drawn, the statistics box
reports the mean/rms for the current bin range only. These values are
recomputed from the actual bin contents. If the full range is displayed,
the mean and rms values are obtained from the precise values computed
at filling time.
//
// 08/06/1999 17.56.19 by Fons Rademakers
//
- rootcint: cast to TObject* when writing array of TH* (was already done
for simple TH*'s).
- root-config: new utility in $ROOTSYS/bin/root-config. This little script
returns the set of ROOT libs and ROOT compile flags. Instead of hard coding
in Makefiles the long list of ROOT libs, just use root-config. For example
see $ROOTSYS/test/Makefile, where it is used like:
ROOTCFLAGS = $(shell root-config --cflags)
ROOTLIBS = $(shell root-config --libs)
ROOTGLIBS = $(shell root-config --glibs)
Using this utility you are protected in case the name, number, location
of the ROOT libs changes. Idea of root-config came from gtk-config.
- TGTab: fixed RemoveTab(). Should work fine now without memory leaks.
Added also new member GetNumberOfTabs(). See $ROOTSYS/test/guitest.cxx
on how this is used.
//
// 07/06/1999 16.04.25 by Rene Brun
//
New feature in TF1.
In case of precompiled TF1 functions, Root, by definition, cannot save the
precompiled function on the file. However, it is possible to tabulate
the function and save the table together with the function.
This table was already automatically computed/filled during a TF1::Fit.
TF1::Streamer has been modified to save the tabulated function as soon as
one writes such a function on a file.
- Correction in TGraph::PaintGraph affecting the following case.
A TGraph is created with positive y values. The user calls
graph->SetMinimum(negativeValue). The minimum was set to 0
instead of the specified user minimum.
Thanks Henry Sutter for reporting.
- Add gStyle->DetFrameBorderMode(0) in the definition of "Plain" style
in TROOT constructor. Non-setting the frame border to 0 produced
a thin red line in the top/left lines of the frame on EPS files.
//
// 06/06/1999 11.38.41 by Fons Rademakers
//
- TRint: now always load iostream. Please remove any
"#include <iostream>" statements from your rootlogon.C.
- TGTab: added RemoveTab(Int_t idx).
- TFile: updated comments for RFIO in ::Open().
- TGFrame: added virtual dtor for TGFrame (reported by R. v.d. Eijk).
- TSystem: tentatively added "try {} catch(...){}" clause in Run().
Will be enabled when compiling with -DR__EH, still off by default.
//
// 04/06/1999 13.12.53 by Rene Brun
//
- Protect TFile::Init (can be called by TNetFile and TWebFile) in case
tye file is connected and content is bad.
- Changes in TWebFile::Init. Set file descriptor fD to -2.
With the previous value fD=-1, TFile::isOpen was false when called
from TWebFile destructor. (thanks valery for reporting the problem).
//________________________________________________________________________
//
//::> VERSION 2.22/04 03/06/99 19.13.54
//
//
// 03/06/1999 16.47.19 by Rene Brun
//
- Several unused functions removed from TH1.
- Small change in TTUBE::Paint (Thanks Andreas Morsch). The radial lines
are not drawn anymore when drawing in a pad.
- Modify TSpectrum to include a default constructor. The code generated
without the default constructor for the dictionary was given problems on
alphas with cxx6.
- minor changes in CINT functions Class and Type to remove a compilation
warning on hp-ux and alpha.
//
// 02/06/1999 09.25.31 by Rene Brun
//
- Protection in TPad::Paint in case fPrimitives = 0.
This case can happen is a user by mistake has invoked the default pad
constructor.
//
// 01/06/1999 12.21.34 by Fons Rademakers
//
- Make-macros: fix for PostScript.
- TTabCom: new version from Christian Lacunza. Automatically substitutes
. for -> and vice versa.
- TApplication: handle now: ".x test.C (101)" (notice space between .C and ()).
- TObject, TObjectTable: use advanced TMath::Hash() as hash function.
- TClass: added protection in ListAllPublicMethods() and ListAllPublicMembers().
Noticed when doing: root [0] istream::[TAB]
- New CINT 5.14.3 and 5.14.4:
5.14.3 9 May 1999
1097, automatic variable turn on/off
1098, special character allowed as project and dllid for makecint
- , include/bool.h -DTRUE, -DFALSE problem fixed
1099, .hh .hxx. hpp extension allowed
1100, template comment
- , STL header files vector.h -> _vector.h
1101, non-static member func call->error, Not activated:dictionary problem
- , .X t141.cxx ("abc",123) bug fix
1102, .X error recovery bug fix
1103, f(int x) { const int N=x*2; }
- , operator overloading floating accuracy %.12e -> %.17g
1104, f(scope::cls& x=scope::cls()) fix for makecint, not yet for interpreter
1105, .X f.C( sin(1.23) ) bug fix
5.14.4 22 May 1999
- , 1093 improved for makecint/rootcint
1106, G__tagdefining reset bug fix
1107, G__tagdefining questionable restore fixed ???
1108, La (reLoadAll) command
1109, (enum A::)0 bug fix
1110, default parameter evaluation
- , G__getmakeinfo() API added
//
// 01/06/1999 08.10.26 by Rene Brun
//
- Fix a problem in TTreeFormula::EvalInstance.
A wrong value was returned in case of
tree->draw("var","2")
Following the fix, the new version returns a weight=2 for each entry.
(thanks Patrice Lebrun for reporting)
- Implement TChain::GetMinimum and TChain::GetMaximum.
These two new functions redefine the corresponding TTree functions.
They loop on all files in the TChain to return respectively the minimum
and maximum for a given variable.
- Implement new function TAxis::UnZoom.
This new function as well as the existing TAxis::SetRange are both
visible in the TAxis pop-up menu.
- Tutorial basic.C rewritten to use ifstream.
- Minor changes from Valery integrated in TShape and TPoints3DABC.
//
//________________________________________________________________________
//
//::> VERSION 2.22/03 31/05/99 19.12.56
//
//
// 31/05/1999 16.23.57 by Rene Brun
//
- Changes in TTree::MakeClass. The new version generates a skeleton
analysis function allowing a better performance when reading the tree.
In addition, to the list of leaf (variable) names, the new version also
generates for each branch a member like:
TBranch *b_branchname;
In the analysis loop, one can call
b_branchname->GetEntry(entry) to read only the variables belonging
to this branch. The branch pointers are initialized in the Init function.
Note that if b_branchname->GetEntry(entry) is invoked more than once
for the same entry, the subsequent calls return immediatly from GetEntry.
- Changes in TPad::PaintText and TPad::PaintTextNDC.
Text is now always clipped at the pad boundaries. In the previous version,
Text drawn outside the pad was visible with Postscript.
- Modify TH1x::DrawCopy functions to invoke Clone instead of Copy.
The new version of DrawCopy is able to copy the fit part of a TH1.
- Modify TGX11::SetFillColor to set the member fFillColor.
fFillColor is used by TGXW::GetFillColor.
- Modify TH1::PaintBoxes to restore TGXW::SetFillColor after each box.
- Add new function in class TGenerator:
Int_t ImportParticles(TClonesArray *particles, Option_t *option).
- Correction in TPostScript::Text. The greek characters chi and eta
were inverted.
- Move inline definition of TMath::Hash to implementation to avoid
including string.h in TMath.h
//________________________________________________________________________
//
//::> VERSION 2.22/02 28/05/99 18.55.03
//
//
// 28/05/1999 15.26.42 by Fons Rademakers
//
- ==========>>IMPORTANT NEW FEATURE<<=============
TBuffer: WriteObject()/WriteClass() now write the buffer offset
into the output buffer instead of the map index. This allows the reading
of classes and objects inside skipped objects (skipped because their
shared libs are not available/loaded at reading time).
This change is fully backward compatible.
- TExMap: new Map container which can use an external hash value to
store the (key,value) pair. The pairs are two longs (so can also
contain object addresses). Used in TBuffer.
- TMath: added method Hash(const void *, int). This hash function is
provided by V.Perev and provides very good hashing.
- TMapFile: added protection in case more than one map file is open
and one of them gets closed. Also added ifdef for GLIBC 2.1 (RH6).
Corrected "fix" of 22/04/1999 22.13.54, StrDup() space was not
allocated in mapped file.
- TDirectory: add protection against recursive remove in dtor (like
is done in Close()).
- TArray, TMessage: changed call to TBuffer::MapObject(0) to
TBuffer::MapInit().
- TString: added warning in case one tries to do I/O of a string longer
than 255 characters.
- TObjectTable: added protection in Remove().
- TList: added protection in case GetName() returns 0 in FindObject().
- TGX11: handle dashed lines in DrawLine(), like in DrawPolyLine().
- TGX11TTF: for negative X-bearing to 0 (left upper corner of W was
otherwise wrapped to right upper side in pixmap).
- hclient.C: fix in hclient.C tutorial (hpx was not declared).
- rootcint: some more code for handling STL containers.
//
// 28/05/1999 14.22.05 by Rene Brun
//
- Add new class TSpectrum
=========================
This class contains advanced spectra processing functions.
- 1-d & 2-d background estimation
- 1-d & 2-d deconvolution
- 1-d & 2-d peak search
The original functions in C were written by:
Miroslav Morhac
Institute of Physics
Slovak Academy of Sciences
Dubravska cesta 9, 842 28 BRATISLAVA
SLOVAKIA
For more information, see the class documentation.
- Add new member fWeight in class TParticle and corresponding Get/Set.
(Thanks to Andreas Morsch for the suggestion).
//
// 27/05/1999 18.09.18 by Rene Brun
//
- TMath::ATan2(y,x) was returning PI/2 instead of -PI/2 if (y <0, x==0)
(Thanks Bjorn Nilsen for reporting).
//
// 26/05/1999 09.42.29 by Rene Brun
//
- Add comments in the ClassDef statement of the following classes:
- TTabCom
- TVector2
- TVector3
- TParticlePDG
- TLorentzVector
Corresponding dictionaries regenerated.
//
// 25/05/1999 09.56.26 by Rene Brun
//
- Correct documentation for the list of markers in TAttMarker.
Rebuild markers.gif file. Update Web site.
(Thanks Ulrich Jost for notifying).
//
// 21/05/1999 18.13.23 by Rene Brun
//
- Optimize TPostScript::Text for a better evaluation of the text size
in function of the page aspect ratio.
- Implement function TMarker3DBox::ExecuteEvent. TMarker3DBox objects
can now be rotated in a pad.
A protection added in TMarker3DBox::Paint to not call PaintGLPoints
if OpenGL not selected.
- Changes statements in TabCom like assert(plist) to assert(plist != 0).
This to prevent a compiler error with KCC under Alpha.
- Changes in TLine::executeEvent and TTextExecuteEvent to support picking
in case of a TLine or TText object defined in NDC.
- Implement option "all" in TPolyLine3D::Print and TPolyMarker3D::Print
TPolyLine3D::Streamer was not restoring correctly fLastPoint.
- Change logic in TPolyLine3D::SetPolyLine and TPolymarker3D::SetPolyMarker.
//________________________________________________________________________
//
//::> VERSION 2.22/01 20/05/99 16.53.54
//
//
// 20/05/1999 16.36.57 by Rene Brun
//
- README deck in root.cmz file updated to reflect the current
installation procedure. A copy of the CMZ installation procedure
has been added to the Web site.
- Fix a memory leak problem in TMatrix::Invert.
Thanks Roy Lee rlee@physics.harvard.edu for reporting.
- decks CINT_EG and EG_LinkDef updated to include new class TParticle.
- IMPORT CHANGE for LINUX users. in $kumacs/globals and all makefiles
the options -fno-rtti -fno-exceptions have been removed.
When we moved from gcc to egcs1.0 about 1 year ago, we found out that
using the default compiler options was generating a huge overhead in
space in the object files. In particular the exceptions could generate a few
tens of kilobytes of additional code compared to no-exceptions. We saw many
cases of small and medium size classes (in fact the majority) for which the
object file was more than double.
Because support for rtti and exceptions was supported by only a few
compilers at the time, we set by default the options above.
egcs1.1 is now generating a more compact code than its predecessor
and is quickly becoming the standard compiler on Linux.
We have compared a few weeks ago the overhead induced by each option
above and found the following result on the Root classes
-rtti overhead = 1.2 per cent (totally negligible)
-exceptions = 20 per cent
The overhead generated by the exceptions option is still not negligible.
However, we have decided to compile Root with the default egcs options.
- New member function TAxis::CenterTitle. This function is visible
from the axis context menu. By default, the axis title is right adjusted
on the axis. This function can be called (or via the mouse) to draw
the title at the center of the axis.
Patch //ROOT/INCLUDE
- TBasket header file modified to increase class version id to 2.
TBasket::Streamer modified to write/read only the part of the current
buffer filled with useful data. The previous version wrote the full
buffer. This change generates slightly smaller files in case of Trees
with many branches and large buffer sizes.
TBasket::WriteBuffer modified. In some very special cases, it was found
that the size of the "compressed" buffer could be larger than the
uncompressed buffer (this in case of byte data types).
When this happens, the buffer is written in uncompressed mode.
The message generated in the above case was:
mmzip: output buffer too small for in-memory compression
With this modification, users should not see this message anymore.
- Several changes in class TH1
============================
- a new data member "Double_t *fIntegral"
fIntegral is a pointer to an array containing the integral bin by bin
of the histogram. This array is filled by the new function TH1::ComputeIntegral.
- new member functions to return a random number distributed according
the contents of a histogram.
Axis_t GetRandom(); // for 1-d
void GetRandom2(Axis_t &x, Axis_t &y); //for 2-d
void GetRandom3(Axis_t &x, Axis_t &y, Axis_t &z); //for 3-d
For the 3 cases GetRandom computes the integral of the bins 9if not yet done).
This integral (fIntegral) is normalized to 1 and a random number
returned following this integral.
- existing functions TH1::FillRandom(TF1*) and TH1::FillRandom(TH1*)
have been modified. TH1::FillRandom(TH1*) has been rewritten to use
the new TH1::GetRandom functions. The new function does not require
that the source and destination histogram have the same number of bins or
bin limits. Statistics are also correctly filled.
- Changes in prototype for TH1::DrawCopy from
old: void DrawCopy(Option_t *option="");
new: TH1 *DrawCopy(Option_t *option="");
- New option in TH1::Eval
If option "R" is specified, the function is evaluated only
for the bins included in the function range.
If option "A" is specified, the value of the function is added to the
existing bin contents
If option "S" is specified, the value of the function is used to
generate an integer value, distributed according to the Poisson
distribution, with f1 as the mean.
Many thanks to Gerco Onderwater <onderwat@nialas.npl.uiuc.edu>
for suggesting/implementing the new option "S".
- New argument in TH1::FitSlicesX,Y,Z:
void TH1::FitSlicesX(TF1 *f1, Int_t binmin, Int_t binmax, Int_t cut, Option_t *option)
void TH1::FitSlicesY(TF1 *f1, Int_t binmin, Int_t binmax, Int_t cut, Option_t *option)
void TH1::FitSlicesZ(TF1 *f1, Int_t binminx, Int_t binmaxx, Int_t binminy, Int_t binmaxy, Int_t cut, Option_t *option)
The new argument option (default="QNR") can be used to change the fit options.
"Q" means Quiet mode
"N" means do not show the result of the fit
"R" means fit the function in the specified function range
- TH1::PaintLego and TH1::PaintSurface modified. The last color level
was not correctly filled.
- new option "I" supported in TH1::PaintStat. When this option is set,
the "stats" box shows the integral of bins.
This option can be activated by TStyle::SetOptStat.
- TH1::PaintStat uses the new options in TStyle::SetStatFont
and TStyle::SetStatStyle. The stats box can be made transparent
with gStyle->SetStatStyle(0).
- TH1::PaintTitle uses the new options in TStyle::SetTitleFont.
- Changes in class TLine
new function:
TLine *DrawLineNDC(Coord_t x1, Coord_t y1,Coord_t x2, Coord_t y2);
This new function can be used to draw a line in Normalized Device Coordinates.
the prototype of the existing function DrawLine has been changed to:
TLine *DrawLine(Coord_t x1, Coord_t y1,Coord_t x2, Coord_t y2);
- Several changes in class TStyle
===============================
3 new data members:
Style_t fStatFont; //font style of Stats PaveLabel
Style_t fStatStyle; //fill area style of Stats PaveLabel
Style_t fTitleFont; //font style of Title PaveLabel
with corresponding new Getters and setters:
Style_t GetStatFont() {return fStatFont;}
Style_t GetStatStyle() {return fStatStyle;}
Style_t GetTitleFont() {return fTitleFont;} //return histogram title font
void SetStatStyle(Style_t style=1001) {fStatStyle=style;}
void SetStatFont(Style_t font=62) {fStatFont=font;}
void SetTitleFont(Style_t font=62) {fTitleFont=font;}
- Changes in class TText
new function:
TText *DrawTextNDC(Coord_t x, Coord_t y, const Text_t *text);
This new function can be used to draw a text in Normalized Device Coordinates.
the prototype of the existing function DrawText has been changed to:
TText *DrawText(Coord_t x, Coord_t y, const Text_t *text);
- Several changes in class TTree
==============================
The old data members:
Int_t fMaxEventLoop; //Maximum number of events to process
Int_t fReadEvent; //Number of the event being processed
have been renamed:
Int_t fMaxEntryLoop; //Maximum number of entries to process
Int_t fReadEntry; //Number of the entry being processed
The previous functions or function arguments:
virtual void EstimateLimits(Int_t estimate, Int_t nevents=1000000000, Int_t firstevent=0);
virtual void EventLoop(Int_t &action, TObject *obj, Int_t nevents=1000000000, Int_t firstevent=0, Option_t *option="");
virtual Int_t GetEventNumber(Int_t event);
virtual Int_t GetMaxEventLoop() {return fMaxEventLoop;}
virtual void GetNextPacket(TSlave *sl, Int_t &nevents, Stat_t &firstevent, Stat_t &processed);
virtual Int_t GetReadEvent() {return fReadEvent;}
virtual Int_t LoadTree(Int_t event);
virtual void Loop(Option_t *option="",Int_t nevents=1000000000, Int_t firstevent=0); // *MENU*
virtual void SetEstimate(Int_t nevents=10000);
virtual void SetMaxEventLoop(Int_t maxev=1000000000) {fMaxEventLoop = maxev;} // *MENU*
virtual void Show(Int_t event=-1);
have been renamed:
virtual void EstimateLimits(Int_t estimate, Int_t nentries=1000000000, Int_t firstentry=0);
virtual void EntryLoop(Int_t &action, TObject *obj, Int_t nentries=1000000000, Int_t firstentry=0, Option_t *option="");
virtual Int_t GetEntryNumber(Int_t entry);
virtual Int_t GetMaxEntryLoop() {return fMaxEntryLoop;}
virtual void GetNextPacket(TSlave *sl, Int_t &nentries, Stat_t &firstentry, Stat_t &processed);
virtual Int_t GetReadEntry() {return fReadEntry;}
virtual Int_t LoadTree(Int_t entry);
virtual void Loop(Option_t *option="",Int_t nentries=1000000000, Int_t firstentry=0); // *MENU*
virtual void SetEstimate(Int_t nentries=10000);
virtual void SetMaxEntryLoop(Int_t maxev=1000000000) {fMaxEntryLoop = maxev;} // *MENU*
virtual void Show(Int_t entry=-1);
The old TTree::GetEvent has been kept for compatibility. Its new definition is:
Int_t GetEvent(Int_t entry=0, Int_t getall=0) {return GetEntry(entry,getall);}
We STRONGLY recommend our users to edit their code to replace
TTree::GetEvent by TTree::GetEntry.
- Several changes in class TMath:
==============================
TMath::LnGamma moved from private to public.
bug fix in TMath::Nint.
TMath::Gaus returns the value of a gaussian normalized to 1.
- Bug fixed in TEllipse::Paint (thanks Bryce Moffat).
- class TGaxis modified to support the new option CenterTitle.
- modification in TPad in WIN32 specific code when creating
a new text or Pavelabel with the graphics editor.
The old version was creating a temporary variable "TPad *p" that could clash
with an existing user variable with the same name.
(thanks Nick van Eijndhoven)
- Protection in TTreeViewer::ExecuteDraw in case of long selection
expressions. Thanks Walter F.J. Mueller" <mueller@axp602.gsi.de>
- A few fixes in TPolyMarker3D (X3D case )
- Inconsistency in TSPHE::Streamer fixed (thanks Rutger van der Eijk)
A TSPHE stored in a ROOT file isn't correctly retrieved from the file.
This results in not drawing the TSPHE.
Caused by:
The reason for not drawing the TSPHE is that fNz isn't set by the streamer
function (which causes TSPHE::Paint(...) to return before 'drawing' anything).
- Protection added in TBranch::SetAddress. This functions resets the
internal state variable fReadEntry. damir Buskulic reported
an example where he was doing:
branch->GetEvent(2)
branch->setAddress(new address)
branch->GetEvent(2); //same event as before
In this case the new event was not restored.
- Protection added in TBranchClones constructor in case a TClonesArray
references a class with an unknown data type.
- Philippe Canal adds new functionality in TLeaf::GetLeafCounter.
A multi-dimensionnal array notation can be specified in TTree::Draw.
- A very nasty bug fixed in function X3D function DrawSegments.
The old test:
if(remainder)
XDrawSegments(display, win, gc, &segs[index], remainder);
has been replaced by:
if(remainder > 0)
XDrawSegments(display, win, gc, &segs[index], remainder);
Drawing a TPolyMarker3D with only two points was generating a case
with remainder = -1.
//
// 12/05/1999 16.23.14 by Fons Rademakers
//
- TTabCom: .class layout was changed -> fixed parsing.
- GButton: handle correctly "crossing events" over buttons with a
pressed mouse button. Reported by Glen Salo.
- TString: fix Chop() in case of empty string.
//
// 10/05/1999 17.29.14 by Fons Rademakers
//
- rootcint: generate Streamer code for STL containers vector, list,
deque, map, set, multimap and multiset. It is now possible to do
automatic I/O for classes containing these containers, e.g.:
class stl1 : public TObject {
typedef vector<TObjString*> Vec; //example of typedef (not required)
private:
string fStr;
vector<TString> fSVec;
Vec fSOVec;
vector<Float_t> fFVec;
list<TNamed> fNList;
...
};
- rootcint: correct Streamer now for multi-dimensional arrays, e.g:
class aap : public TObject {
private:
TNamed fName[2][3];
...
};
- New CINT 5.14.1 and 5.14.2:
5.14.1 30 Apr 1999
1078, -Q quiet option for cint not to print prompt.
PHIL0, ROOT class comment off of Dictionary
1079, G__display_proto() display also base class member function
1080, char *s; s->Data() error detection
1081, G__scrupto() crash prevention
1082, void*& argument to compiled function, bug fix
5.14.2 4 May 1999
1083, const data member in class handled as static const
1084, non-const static data member initialization in class def, warning
1085, 'class' command displays class/struct/union/namespace
- , G__dasm() uninitialized instruction protection
1086, G__EOFfgetc() does not exit, call G__genericerror instead.
1087, class A { } missing ';' error detection
- , G__calc_internal() for not rewinding dictionary
1088, reference member dictionary generation allowed
1089, automatic variable , warning -> error
1090, -I,envvar option
1091, ROOT macro static variable prohibited
1092, (a+b.data()).data() bug fix
1093, A *p= new A; bug fix
1094, undo rewind implementation
x1095, compiled class redeclaration, object deletion order
1096, T b; T a=b; precompiled class bytecode bug fix
- , G__assign_error message
//
// 10/05/1999 13.13.41 by Valery Fine(fine@mail.cern.ch)
//
- TString: fix in ReplaceAll
//
// 30/04/1999 12.32.15 by Fons Rademakers
//
- rootcint: handle correclty pathnames in dictionary file name, e.g.:
rootcint -f /tmp/aapDict.cxx -c Aap.h
works now correctly.
- TMath: fixed Nint(Float_t) and Nint(Double_t) for negative values.
- TApplication: now check if TT fonts can be found in Root.TTFontPath
before trying to load the TTF libs. Before only the existence of
$ROOTSYS/ttf/fonts was checked.
- New CINT 5.13.98:
5.13.98 24 Apr 1999 , 1073 disabled
- , G__pp_undef() #undef 'g' command bug fix
- , 1062, 1063 implemented but turned off by macro defined in G__ci.h
1073, EXPERIMENTAL! class object instantiation in bytecode function
1074, Api.cxx delete interpreted object
1075, G__Lderived declared if only necessary
- , G__more_pause() COLUMN enhancement
1076, function overloading and class inheritance scan order changed, err det
1077, class to fundamental type conv in func arg, bug fix
//
// 29/04/1999 18.25.40 by Fons Rademakers
//
- TMap: provide GetName() in the TAssoc helper class. This GetName()
returns the name of the key. This fixes TMap::FindObject(const char*).
Exported TAssoc to the interpreter.
- TTabCom: make enum EContext_t public. Some compilers don't like a private
enum as return type (even if they are private them selves). Renamed
resource TabCom.fignore -> TabCom.FileIgnore and added example in .rootrc.
- Getline: fix in putenv of the LINES and COLUMNS variables.
- Makefile.sgi64egcs: added flag -DIRIX64 to CXXFLAGS.
//
// 28/04/1999 13.08.51 by Fons Rademakers
//
- TSystem: fix in DirName(). When path is /tmp it returns correctly /.
- TClass: fixed GetListOfAllPublicMethods(). Don't return any duplicates.
- TTabCom: use tmpnam() to get unique temp files and don't use anymore
the templated error printing function.
- Make-macros: fixed typo: METAADS -> METADS.
//
// 27/04/1999 19.10.21 by Fons Rademakers
//
- New class TTabCom: very useful new class made by Christian Lacunza
<lacunza@cdfsg5.lbl.gov>. This class performs basic tab completion.
You should be able to hit [TAB] to complete a partially typed:
username
environment variable
preprocessor directive
pragma
filename (with a context-sensitive path)
public member function or data member
global variable, function, or class name
Also, something like gWhatever->Func([TAB] will print the appropriate
list of prototypes.
This class is used via a hook function by the Getline package and it
is activated by the interactive application class TRint.
It is an large piece of code (+/- 2000 lines). Thanks Christian.
- Getline: several new features provided by Christian Lacunza.
M-F/M-B : Move cursor forward/backward one word.
M-D : Delete the word under the cursor.
^SPC : Set mark.
^W : Kill from mark to point.
^X : Exchange mark and point.
- TClass: two new methods to get all public methods and members of a
class (including its base classes).
TList *GetListOfAllPublicMethods();
TList *GetListOfAllPublicDataMembers();
- TCanvas: small fix concerning popdown of tooltips (again). Now it really
seems to be ok.
- pause: delete correctly temp files even when G__process_cmd is recursively.
//
// 26/04/1999 16.50.59 by Rene Brun
//
- ==========>>>>WARNING<<=================
Terminology change in TTree. We now call "entry" what was called "event"
========================================================================
We have added the following functions
TTree::GetEntry
TChain::GetEntry
TBranch::GetEntry
These new functions behave like the old GetEvent functions.
We have left the old GetEvent functions for backward compatibility.
However, note that these old functions call the new functions GetEntry.
We strongly encourage you to make the corresponding changes in your code.
This change of terminology has implied massive editing in the source code.
All terms "event" have been replaced by "entry"
- New class in patch EG: TParticle. This new class replaces the old class
TPrimary (left for compatibility).
The classes TGenerator, TVenus, TPythia changed to use the new class.
TGenerator::GetPrimaries has been renamed TGenerator::ImportParticles.
//
// 26/04/1999 12.26.50 by Fons Rademakers
//
- TMapFile: in method Add() the name argument now overrides the objects
given name.
- Globals and Makefiles: for aCC disable warning 823 (warning about cpp
concatenation can be ignored).
- rootcint and TBuffer: can now generate Streamer()'s containing a byte
count. This complements the default byte count facility for pointers to
objects. The byte count streamer are generated for those classes that
have the + option specified in their #pragma line. For the time being
this option is not the default. Example:
#pragma link C++ class AliEvent+;
The Streamer() in that case looks something like this:
UInt_t R__s, R__c;
if (R__b.IsReading()) {
Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
...
...
R__b.CheckByteCount(R__s, R__c, Noot::IsA());
} else {
R__c = R__b.WriteVersion(Noot::IsA(), kTRUE);
...
...
R__b.SetByteCount(R__c, kTRUE);
}
In the writing part we see that WriteVersion() returns the offset where
in the output stream the byte count should be placed (just before the
version number). SetByteCount() writes the byte count at the reserved
location. In the read part ReadVersion() returns the offset of the
current position in the input buffer (R__s) and the expected byte count
(R__c). After reading all data members CheckByteCount() is called to
check if the current input buffer position is where the start and byte
count expect it to be. If not an error is printed and the input buffer
is positioned according to the byte count. This allows the system to
correctly read the next object in the stream.
The byte count version of the Streamer() can read files generated by the
standard (non byte count) Streamer(). Also, a standard Streamer() can
read files produced with a byte count Streamer(). This allows total
flexibility.
- CINT (Api, pause, newlink, var): several mods in CINT passed to Masa.
//
// 24/04/1999 23.15.57 by Fons Rademakers
//
- TString: fix in EndsWith().
- rootcint: remove multiple reference to user's header file from dictionary.
In this case headers that are not protected against multiple inclusion
don't break dictionary compilation.
- ==========>>IMPORTANT NEW FEATURE<<=============
TBuffer: WriteObject() now inserts a byte count in front of the buffer
and ReadObject() checks at the end of reading the byte count. If the
byte count is not correct the buffer is positioned at the location
specified by the byte count so that a next object in the same buffer
can still be correctly read. This new feature is very useful to detect
if a Streamer() is out of sync compared to the data on the file. Also
it will allow the system to skip data of an unkown class (class info
has been lost or shared lib is not loaded), but still correctly read
the other data. This feature works for all objects written via a pointer,
see for example this write part of a streamer:
if (R__b.IsReading()) {
Version_t R__v = R__b.ReadVersion(); if (R__v) { }
TObject::Streamer(R__b);
R__b >> fNoot1; // byte count is checked
fNoot2.Streamer(R__b); // no byte count
} else {
R__b.WriteVersion(Aap::IsA());
TObject::Streamer(R__b);
R__b << fNoot1; // bytecount written via WriteObject()
fNoot2.Streamer(R__b); // no byte count
}
The byte count facility adds an overhead of 4 bytes per object.
Of course this feature does not break backwards compatibility, i.e. all files
generated without byte count can still be read with this new version.
**** IMPORTANT NOTICE ****
ROOT FILES WRITTEN WITH BY THIS AND HIGHER (>= 2.22) VERSIONS OF OF THE
SYSTEM CANNOT BE READ BY PREVIOUS (< 2.22) VERSIONS. PLEASE UPGRADE.
*****************
- TClass: Load() prints error when class is not found or could not be loaded.
//
// 23/04/1999 17.12.58 by Fons Rademakers
//
- TCint: fixed memory leak in UpdateListOfGlobalFunctions().
- proofd: correct calling sequence of send() and recv() for
Solaris.
- Globals: added special cases for SunOS 5.6 and IRIX 6.2.
To compile for SunOS 5.6 add SUNOS56 to SEL flag of cmzlogon.kumac.
To compile for IRIX 6.2 add IRIX62 to SEL flag of cmzlogon.kumac.
- TString: three new member functions:
Bool_t BeginsWith(const char *pat, ECaseCompare cmp = kExact) const;
Bool_t BeginsWith(const TString& pat, ECaseCompare cmp = kExact) const;
Bool_t EndsWith(const char *pat, ECaseCompare cmp = kExact) const;
- TRint: only treat command line arguments ending in ".root" as ROOT
files that will be connected at startup. Before I only checked if
the argument contained ".root", which obviously could clash with
other argument strings.
- New CINT 5.13.97. Masa has been working like mad!
Mods for version 5.13.96 and 5.13.97:
5.13.96 11 Apr 1999
1045, map.h load/unload bug fix G__tagdefining reset in scrupto
1046, struct.c map.h reloading error fixed
1047, tmplt.c search for typedef for default template parameter
1048, pause.c 'class vector<int,allocator<int> >' bug fix
- , G__overloadopr() buffer length
- , HP-UX aCC makecint.c newlink.c modification for include trick
- , include > tmp redirection bug fix
1049, TString* a("abc") syntax checking
1050, (string)??? error check
1051, #include<stdio.h>
1052, typedef new bug fix
1053, G__shl_load() G__setup_tagtable order change
1054, namespace compilation
1055, Internal error: G__type2string() ??? removed
5.13.97 18 Apr 1999
- , 1006 side effect fix
Scott Snyder's contribution
- , KCC warning removed
1056, A<int, int> space in template argument bug fix
1057, namespace foo{class X{};}struct bar{using namespace foo;class Y{X x;};};
1058, initialization of G__using_namespace member
1059, Looking up enum in namespace
1060, using namespace directives in global scope
?1061, spaces in macro arguments (8)
-1062, imporovements for 'variable' macros, not implemented completely (9)
-1063, More CRLF problems, not implemented yet , (10)
1064, Parsing problem of A::B & X() {}
1065, (c1+c2).disp() bug fix
1066, G__clearfilebusy()
1067, security_recover
1068, return mem=local;
1069, f(1)[2] bug fix
1070, int a[10]; *a=3; bug fix
1071, delete (float*)l; bug fix
//
// 23/04/1999 08.33.32 by Rene Brun
//
- Protect TTree::Draw when no entries in the Tree or no entries
in the generated histogram.
- Add Warnings in TTree::Branch and TBranchClones constructor in case
of a data member that cannot be processed in split mode.
- Function TMath::LnGamma promoted from private to public.
- Modify $kumacs/globals to add the compiler option -DSGI_REL=62
for SGI KAI compiler. Without this option, rootd cannot be compiled.
- Minor mods in TParticlePDG and TDatabasePDG (Pasha Murat).
//
// 22/04/1999 22.13.54 by Fons Rademakers
//
- TMapFile: make sure that the TClass object that can be created by
a call to TObject::ClassName() is allocated on the heap and not
in shared memory.
//
// 21/04/1999 20.00.43 by Fons Rademakers
//
- CINT: import stl and prec_stl directories in CMZ. These directories
needed for STL support are now part of the distribution.
- Getline: change the LINES and COLUMNS shell environment variables
after the term window has been resized.
- TCanvas: re-applied the fix made 10/03/1999 19.36.02 to properly
pop-down tooltips when the mouse leaves the canvas.
- TRint: call TCint::RewindDictionary() to clean up partially executed macro
environment in case user hits ctrl-c in middle of macro.
- TUnixSystem: call TCint::RewindDictionary() to clean up partially
executed macro in case of a segv, bus error, illegal instruction or
floating exception. Also cleanup command line input buffer in these cases
so that hitting return will not cause the same buggy macro to re-execute.
This should considerably reduce the number of times you will have to
leave and re-start root after a macro error.
//
// 19/04/1999 18.38.14 by Fons Rademakers
//
- THashTable: fix in Rehash() in case the gObjectTable is not used don't
check validity of pointers.
- TDirectory: fkey and fList are now initialized with THashLists(100,4).
Previously auto rehash level of 1 was used, but THashList sets this to 0
if level < 2.
//
// 19/04/1999 09.23.32 by Rene Brun
//
- Import changes by Valery in the G3D classes. These changes include:
- a fix in TPARA (mismatch degress/radians)
- an additional test when computing the rangeView parameter in all classes.
- Modification by Pasha Murat in TDataBasePDG. Variable cleaner must
be declared static.
//
// 16/04/1999 17.51.45 by Fons Rademakers
//
- TFile, TNetFile, TRFIOFile: changed the signature of Flush() (not const
anymore. Also the protected SysXxxx() methods are not const anymore.
- TRFIOFile: fixed writting case (could only read before). Also optimized
the number of rfio_lseek() calls.
- TKey: delete TFree object whose gap exactly matches a new key. Previousely
this TFree was leaked.
- TObject: in Write(.., kOverwrite) mode delete the overwritten TKey.
Previously this key was leaked.
- TDirectory, TFile: fixed potential TKey leak.
- rootcint: put a clearer message in case a custom Streamer() is assumed.
- Makefile.linuxegcs: use g77 instead of fort77.
//
//________________________________________________________________________
//
//::> VERSION 2.22/00 09/04/99 18.10.52
//
//
// 09/04/1999 18.08.35 by Rene Brun
//
- g2root modified to correctly convert shapes TRAP and PARA. In the previous
version, angles were left in radians instead of being converted to degrees.
(thanks fJean-Pierre Ernenwein for reporting)
- Thanks to Yasuhiro SHIRASAKI for reporting a small problem in h2root.
In case of 2-d histograms, under/overflow bins were not converted
from hbook to root.
- Thanks to Chris Jillings for reporting a problem when an interpreted
function is referenced by multiple TF1. The bug was in a CINT function
called by the Root class TMethodCall called by TF1.
- Several minor changes and additions in classes TLorenztVector, TVector2
and TVector3.
- Change TGX11 to authorize up to 1000 colors (instead of 256).
- Optimisation in TROOT. The list of colors is now a TObjArray instead
of a TList. This speedups considerably applications defining/managing
their own color palette. TROOT::GetColor is much faster.
- Change in BASE1-LinkDef to export global gErrorIgnoreLevel. This variable
is now visible from the interpreter and can be used to set the Error level.
- Thanks to Valery Fine for reporting a mismatch in the class TCONS.
There was a parameter inversion in the constructor.
- Change all DrawCopy functions to return a pointer to the new object
created by this function. The functions affected are:
class TF1
virtual TF1 *DrawCopy(Option_t *option="");
class TF2
virtual TF1 *DrawCopy(Option_t *option="");
class TH1, TH1C,S,F,D
virtual TH1 *DrawCopy(Option_t *option="");
virtual TH1 *DrawCopy(Option_t *option="");
virtual TH1 *DrawCopy(Option_t *option="");
virtual TH1 *DrawCopy(Option_t *option="");
virtual TH1 *DrawCopy(Option_t *option="");
class TH2C,S,F,D
virtual TH1 *DrawCopy(Option_t *option="");
virtual TH1 *DrawCopy(Option_t *option="");
virtual TH1 *DrawCopy(Option_t *option="");
virtual TH1 *DrawCopy(Option_t *option="");
class TPROFILE
virtual TH1 *DrawCopy(Option_t *option="");
Note that the return type is always the base class. You must cast
to the real type.
- In classes TAttFill, TAttLine, TAttText, TAttMarker, TAttPad a semi-colon
has been added as a terminator string when invoking the attribute canvas
via the interpreter. This automatically removes a print generated by CINT
when these commands were invoked. (Thanks Christian Lacunza).
- Members fSelected and fSelectedPad initialized in the TCanvas constructor.
(thanks Pasha Murat for reporting).
- Remove print statement in TNode constructor printing a message every 1000
invokations.
- Changes in TH1::FillN to take into account variable bin size histograms.
- In TClass::GetMenuItems, add a protection in case a pointer to a baseclass
is null (Valery).
- in TTree::Draw, the fEstimate parameter is automatically set to the number
of entries in the tree if this number is smaller than 100000.
The previous default value was always 10000.
- in TTree::GetEvent, return when the event is >= fEntries.
(thanks for reporting this subtle case).
- in TLeafI::Import add a protection in case one element in a TClonesArray
has a null pointer. Also TLeafC, TLeafS, TLeafF and TLeafD have the same
protection. Thanks Thomas Hadig for reporting.
- Thanks Damir Buskulic for providing the makefile for LinuxPPC.
//
// 29/03/1999 20.28.35 by Fons Rademakers
//
- getline: fixed problem with history file being cleared after 100
commands.
- Updated a number of Makefile's to correctly build the fortran based
conversion tools h2root and g2root.
- Install: now also build rootd, proofd and proofserv.
- TMonitor: fix case of Select() with timeout. Remove timer from
timer list after timeout (one shot only timer).
- TObject: in Delete() call gInterpreter->DeleteGlobal(this); to
tell CINT that object cannot be used anymore.
- Rtypes.h and rootcint: mods by Stefan Kluth to handle templated
classes. This is an important first step to full template and STL
support. Thanks Stefan.
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.