ROOT Version 2.00 Development Notes
//
// 13/11/1998 18.47.45 by Fons Rademakers
//
- TGX11: fix in RequestString and RequestLocator to not turn off
mouse motion and keyboard event. This caused the canvas to stop
handling mouse motion events after using the editor to edit
text strings.
- TPad: fix in PaintBox when drawing pattern backgrounds. Regression
was introduced during implementation of transparency in the same
routine.
- TMatrix: in ResizeTo don't use ReAlloc that verifies previous size
because in some cases we don't know any more the previous size
(like after a small reduction in size when there is no realloc done).
//
// 12/11/1998 20.14.39 by Fons Rademakers
//
- TRint: new method SetPrompt(). Using this method you can change
the standard root[] prompt. Like:
root [0] ((TRint*)gROOT->GetApplication())->SetPrompt("aap> ")
aap>
- TList: new method Remove(TobjLink lnk*). If the lnk is known objects
can be removed without makeing a linear search first. This method
was also added to THashList.
- TCanvas: create a default TApplication object in case it does not
yet exist at the time the first canvas is created. This guarantees
that certain service performed by TApplication have been performed
(like the allocation of the color table).
//
// 12/11/1998 13.52.35 by Rene Brun
//
- Extend size of internal TMinuit arrays (dimension kMAXDIM increased to 100).
- Modify $kumacs/vhtml macro.
Add new macro $kumacs/vhtmldev generating automatically the html file
describing the current Changelog.
//
// 10/11/1998 19.15.04 by Fons Rademakers
//
- THashList: corrected a case where in Delete() and Clear() objects
could be deleted twice. Involves also small change in THashTable
and TList.
- TDirectory: added some garbage collector clauses for extra protection
during cleanup.
- Started integration of TrueType library for X11. We use the TT render
engine from http://www.freetype.org/. The TT renderer will be used via
the class TGX11TTF. This class inherits from TGX11 and overrides only
the TGX11 text render functions. This class will be in its own shared
library. When this library is loaded it replaces the current gGXW (iff
it points to a TGX11 object) with a pointer to a TGX11TTF object.
From that moment on all fonts will be rendered using TT fonts. See
here the beauty of OO, C++ and dynamic linking.
- TGX11: made several text related method virtual. See above.
- TGXW: added the method HasTTFonts(), returns kTRUE if TGX11TTF is
loaded and active.
- TAttText: add case for TT fonts.
- TDataMember: create getter and setter interpreter call func environment
only when needed and not in the ctor. Save a lot of space.
- TRootGLViewer: handle expose event, like for TRootCanvas and
TRootEmbeddedCanvas.
- TClonesArray: cleanup TObjectTable when deleting or shrinking (i.e.
recuperating space) a clones array. Before TObjecTable could contain
invalid entries after the deletion of a clones array.
//
// 11/11/1998 17.11.49 by Rene Brun
//
- Implement the following new functions in class TMath:
TMath::Gaus(Double_t x, Double_t mean=0, Double_t sigma=1)
TMath::Landau(Double_t x, Double_t mean=0, Double_t sigma=1)
TMath::Probability(Float_t chisquare, Int_t ncons)
The Landau function is a C++ implementation of the function DENLAN
in CERNLIB (G110).
The Probability function (original version from Nick Van Einjdhoven)
computes the confidence-level from chisquare and a number
of constraints ncons.
- Implement new function TRandom::Landau.
This function returns a random number following a Landau distribution.
- new keywords "landau", "xlandau", "ylandau", "xylandau" in TFormula.
One can create functions using inline formula referencing these keywords.
Example:
TF1 f1("f1","landau",-5,25);
f1.SetParameters(100,0,1);
f1.Draw();
- Modify TH1::Fit to automatically initialize parameters
for a landau fit.
Example:
TH1F h1("h1","test landau",100,-5,25);
h1.Fillrandom("f1");
h1.Fit("landau");
- New button "landau" in TFitPanel.
- Modify tutorial hsum.C to show an example of TRandom::Landau.
- Implement support for both Alpha/Unix CXX version 5 and 6 in
$kumacs/globals and test/Makefile.
- Fix a problem in TTreeFormula::GetNdata. When fNodes[i] < 0
there is no need to compute a pointer to the leaf i.
This problem was appearing in TTreeFormula when called
by TTree::Scan. Thanks to Mike Beddo for reporting.
- In TCutG::SavePrimitive, add a few more statements to the generated
code when saving a TCutG:
-Reference to the original Tree
-Setting of the VarX and VarY expressions.
//
// 10/11/1998 18.16.18 by Rene Brun
//
- Modify TH1::FitSlicesY and TH1::FitSlicesZ to save the initial
parameters settings and reinitialize the fitting function with
the saved parameters before each new slice fit.
- Modify TH1::Build to not delete a previous histogram with the same name
as the histogram being created. The old histogram is simply removed
from the list of objects in the current directory.
//
// 09/11/1998 18.46.02 by Rene Brun
//
- Change most functions of TMinuit to be virtual. This gives the
possibility to derive a class from TMinuit.
- Merge with Valery's version and Fons's version.
- Extensions in test suite "stress". stress tested on all machines.
Implementation of new ROOTMARKS.
- Optimization in TGaxis::PaintAxis. In case of log axis, the algorithm
positioning the power of 10 exponent in case of logarithmic axis
has been improved.
- Mods in TH1::UseCurrentStyle. Additional attributes are taken into account.
In particular, axis attributes.
//
// 08/11/1998 12.35.34 by Rene Brun
//
- Some changes in data member declarations in classes TFile, TSlave
TNetFile and TProof.
Data members counting I/O transactions are now declared Double_t
instead of UInt_t. This
in the corresponding classes.
Root server ROOTD also changed accordingly.
//
// 05/11/1998 18.57.57 by Rene Brun
//
- Modify TClass::BuildRealData and TTree::Branch to set the Zombie
flag for the temporary object created to build the dictionary.
A user can test (IsZombie()) in the object destructor.
- Modify program test/Event, adding a new static function Reset.
This function is called by the stress program.
- Update deck makemklinux in install directory (thanks Damir Buskulic).
- Update $kumacs/global flags for Alpha/CXX. CXX version 6 is now the default.
Same in test/Makefile.
//
// 05/11/1998 16.13.26 by Rene Brun
//
- Add a new test program called "stress" in test directory.
This program can be compiled with the native compiler or interpreted.
To compile it, do:
make stress
stress to run it
To run with the interpreter, cd to $ROOTSYS/test
Root > .x stress.cxx(100)
The program stress is a collection of test programs executed sequentially
and testing most of the facets of the Root system.
The execution of stress ranges from a few tens of seconds on fast systems
to a few minutes. The execution time is used as a benchmark.
We expect to add more test programs to the stress test suite.
- The introduction of "stress" has required changes in test/Makefile
and test/MakefileWin32.
- Fix a problem in TTree::Draw (AIX and SGI only).
In case of a command like: tree->Draw(">>eventlist","x,0")
the internal variable varexp was not correctly initialized.
- Due to a bug in VisualC++ for the mathematical operator pow
replace all references to TMath::Power(x,2).
This solves in particular a long standing problem in TH1::GetRMS
under Windows.
- In test program vmatrix, replace long by double in TMath::Power.
//
// 05/11/1998 15.09.36 by Fons Rademakers
//
- TCanvas: GetWindowTopX() and GetWindowTopY() now return the exact
position of the canvas on the screen. A TCanvas can now be restored
on the same position as when it was saved.
//
// 04/11/1998 18.06.20 by Rene Brun
//
- Fix a bug in TEventList::Add. The first time a new list was added to
an existing list, the size fSize and the current number of elements fN
were not set.
- Add additional comments in the documentation of classes TCutG and
TEventList explaining how to get a pointer to these objects.
- Modify TH1::PaintTitle and TH1::PaintStat to use gStyle->GetTextFont()
when drawing the title and stats TPaveText. The font 62 was hardwired.
- Fix a problem in TFormula::Streamer (read part).
The array fExpr was created with zero length in case fNoper=0.
This case could appear when a TF1 object referencing an interpreted
CINT function was saved into a file and read again. The effect
was only visible later in the TFormula destructor and only under HP-UX 9.
//
// 04/11/1998 16.45.20 by Fons Rademakers
//
- TGX11: fixed WriteGIF. Works now also on X servers with more than
8 planes. Only the used colors in the image are put in the colormap
(used to be the full colormap, therefore > 8 planes did not work).
If there are more than 256 colors used in the image than we should
use the GIFquantize() routine to reduce the colormap. The routine
is there, only has to be interfaced. The routine ImgPickPalette()
in X11_imgpickpalette() has been removed and replaced by
TGX11::ImgPickPalette().
//
// 03/11/1998 08.40.24 by Rene Brun
//
- Fix a precision problem in TLego.
Instead of testing on 0, test on kEpsil. On Linux with gcc optimized,
the side effect was to generate large Postscript files when the Lego/Surf
options were used.
//
// 02/11/1998 18.20.17 by Fons Rademakers
//
- TRootEmbeddedCanvas: forgot to update after changing TRootCanvas
and TGX11. Handles now also expose events for X servers without
backing store.
- TPad: override SetFillStyle() to map style 0 to 4000 (transparancy).
This allows setting of transparent mode via TAttFillDialog as can
be done for non-pad boxes (like TPaves, etc.).
//
// 01/11/1998 18.56.47 by Fons Rademakers
//
- TPad: implemented transparent pads. A pad is made transparent by
setting its fill style (using SetFillStyle()) in the range 4000-4100.
Where 4000 is fully transparent and 4100 fully opaque. All magic
is done in the method PaintBox() using the new (private) methods
CopyBackgroundPixmaps() and CopyBackgroundPixmap(). Transparent pads
need to always be updated if anything in the canvas is changed
or moved. This is handled in PaintModified().
- TAttFill: new method IsTransparent(). Returns true is fill style is
in the range 4000-4100.
- TCanvas: fixed bug showing on X servers without backing store.
After closing of a TCanvas the FeedBackMode() was not set false
and therefore the X drawing mode in GX11 could remain in kInvert
mode instead of being reset to kCopy. This results in a wrong
refresh of the remaining canvases.
- TRootCanvas: added in the Options menu the items "Move Opaque" and
"Resize Opaque". Also corrected default setting of the check marks
of some option menu items.
//
// 02/11/1998 10.14.28 by Rene Brun
//
- Protection in TDirectory destructor when called from the TROOT destructor.
- Minor change in TF1::Fit to call SET PRINT before SET ERR.
When working in Quiet mode, no messages are printed.
- Minor change in TFile::Write. Do not print anymore the message
TFile Writing ...
To get the message, set the global gDebug to 1.
- Modify comments in TFormula constructor.
//
//________________________________________________________________________
//
//::> VERSION 2.00/13 30/10/98 09.19.13
//
//
// 30/10/1998 08.34.54 by Valery Fine
//
- Add several getter functions in TPadView3D.
- Minor correction in TWin32Canvas header file.
//
// 29/10/1998 18.55.47 by Rene Brun
//
- New functions/data members in class TStyle
TStyle::SetCanvasDefX to set the default canvas top X position.
TStyle::SetCanvasDefY to set the default canvas top Y position.
TStyle::GetCanvasDefX and GetCanvasDefY.
- Changes in TCanvas constructors to take into account the default
values in TStyle for the top X and Y canvas positions.
- Some improvements in TPaveText::PaintText in the algorithm estimating
the best character size.
//
// 29/10/1998 17.47.50 by Fons Rademakers
//
- TCanvas: it is now possible to easily position and resize the canvas
via some method calls. Also the canvas size is now correctly saved.
The position depends on what de window manager does (borders, bevels,
etc.), but is as close as possible to the intended position.
To implement these new features the following methods were added to the
TCanvas class:
Int_t GetWindowTopX()
Int_t GetWindowTopY()
UInt_t GetWindowWidth()
UInt_t GetWindowHeight()
void SetWindowPosition(Int_t x, Int_t y)
void SetWindowSize(UInt_t w, UInt_t h)
The following method has been renamed (also in TPad):
void SetCanvas(UInt_t w, UInt_t h) -> void SetCanvasSize(w, h)
The following methods have been removed:
Int_t GetWtopX()
Int_t GetWtopY()
- TCanvasImp: added SetWindowPosition(), SetWindowSize() and GetWindowGeometry()
renamed SetCanvasSize() (was SetCanvas) and SetWindowTitle()
(was SetCanvasTitle).
//
// 29/10/1998 17.01.32 by Rene Brun
//
- Fix a format problem in TMinuit::mnmatu. The global correlation coeeficient
was not currently printed. (Thanks Ian Tomalin for reporting).
- Add new symbol #Box in class TLatex.
- Minor correction in TTree::GetNameByIndex. With this fix, the symbol "%"
can be used in an expression (means modulo).
//
// 29/10/1998 12.17.04 by Rene Brun
//
- Mods in installation procedure for SGI/KAI. Introduce option -32
in KCC (compiler and linker). Similar changes in Makefile.
- Fix a minor compilation problem (SGI/KCC) in TFunction::InterfaceMethod.
( return type must be void*).
- Remove CPP option _AIX41 in class TUnixSystem. Root assumes AIX version 4.
//
// 28/10/1998 19.19.12 by Rene Brun
//
- Fix a typo in TLego::LegoSpherical when drawing the bottom face.
(found thanks to the KAI compiler)
//
// 28/10/1998 15.35.56 by Rene Brun
//
- Two new functions in TTree: TTree::Show and TTree::MakeClass.
TTree::Show(Int_t event)
========================
This function prints the event number event from the TTree file.
If the argument event is not specified, prints the current event,
otherwise, read event and print it.
TTree::MakeClass(cont char *classname)
======================================
This function generates a skeleton analysis class for this Tree.
This function is an enhancement of the existing TTree::MakeCode.
The following files are produced: classname.h and classname.C
if classname is NULL, classname will be nameoftree.
The generated code in classname.h includes the following:
- Identification of the original Tree and Input file name
- Definition of analysis class (data and functions)
- the following class functions:
-constructor (connecting by default the Tree file)
-GetEvent(Int_t event)
-Init(TTree *tree) to initialize a new TTree
-Show(Int_t event) to read and Dump event
The generated code in classname.C includes only the main
analysis function Loop.
To use this function:
- connect your Tree file (eg: TFile f("myfile.root");)
- T->MakeClass("MyClass");
where T is the name of the Tree in file myfile.root
and MyClass.h, MyClass.C the name of the files created by this function.
In a Root session, you can do:
Root > .L MyClass.C
Root > MyClass t
Root > t.GetEvent(12); // Fill t data members with event number 12
Root > t.Show(); // Show values of event 12
Root > t.Show(16); // Read and show values of event 16
Root > t.Loop(); // Loop on all events
//
// 28/10/1998 14.42.18 by Fons Rademakers
//
- TGX11: changed calling sequence of GetWindowID().
- TGXW: added GetWindowID() to TGXW so it can be used from the
GUI classes.
- TGFrame: made TGFrame(TGClient *, Window_t, const TGWindow * = 0) public
and also added the (default) argument const TGWindow*.
- TRootCanvas: handle correctly expose events on the TCanvas. Now ROOT
works fine on X servers without backing store and save unders.
Also simplified X window structure (one window less).
- Event: cleaned up Event.h, Event.cxx and MainEvent.cxx in $ROOTSYS/test.
All histograms that were declared as global objects are now conveniently
handled by a HistogramManager class. Also the handling of the TClonesArray
in the Event class has been revised (now handled via a static class data
member instead of a global).
//
// 28/10/1998 17.52.39 by Masaharu Goto
//
- New CINT 5.13.78.
5.13.76 2 Oct 1998
G__OLDIMPLEMENTATION912, #pragam link C++ CLS::MEMFUNC(args);
G__OLDIMPLEMENTATION913, bool loading in class definition
G__OLDIMPLEMENTATION914, cout << (bool)1 ; bug fix
G__OLDIMPLEMENTATION915, for(int i=0,i<10;i++) protection
G__OLDIMPLEMENTATION916, multiple inheritance virtual func resolution
G__OLDIMPLEMENTATION917, #46 -> line Solaris bug fix
G__OLDIMPLEMENTATION918, atol -> strtoul in getitem, unsigned in bstore
5.13.77 11 Oct 1998
G__OLDIMPLEMENTATION919, typdef T** x;
G__OLDIMPLEMENTATION921, typedef T** x; x pp=aa; bug fix reference
G__OLDIMPLEMENTATION922, template<class T> f(T x); f(int** x);
G__OLDIMPLEMENTATION923, template<class T> f() { new T(); } T=X*
G__OLDIMPLEMENTATION924, new(p) A*(x); new.c bug fix
G__OLDIMPLEMENTATION925, p->~int(); bug fix
G__OLDIMPLEMENTATION926, T x[] = {long list}; bug fix
- ON753 deactivated , nov> cint Complex.cxx test2.cxx bug fix
G__OLDIMPLEMENTATION927, f() {static MyClass a;} bug fix
- , a=3 , undefined member bug fix
G__OLDIMPLEMENTATION928, G__allincludepath unlimited length
5.13.78 22 Oct 1998
G__OLDIMPLEMENTATION929, iterator f(iterator x);
G__OLDIMPLEMENTATION930, sizeof(void) sizeof.c
G__OLDIMPLEMENTATION931, iterator x=a.begin() decl.c
G__OLDIMPLEMENTATION932, namespace foo{template<class T>class x{};}
//
// 28/10/1998 10.18.23 by Rene Brun
//
- A few changes proposed by Olivier Couet have been introduced in TPostScript.
In TPostScript::Initialize add the Postscript comment line %%BeginProlog
immediately after the line %%EndComments.
In TPostScript::Initialize move the Postscript comment %%EndProlog before the line:
gsave 20 28 t .25 .25 scale gsave
In TPostScript::DefineFillPatterns, the line
gsave Xcurr Ycurr translate PT DP gr } for } for gr } def
has been changed to:
gsave Xcurr Ycurr translate PT DP gr } for } for gr newpath } def
In TPostScript::FontEncode remove an unnecessary character ";" in the line:
fn findfont fs sf textf dup length nbas sub nbas getinterval; sw
- Add function TPave::ls. Fix a minor typo in TLine::ls
- Changes in TRootCanvas::ProcessMessage. When the canvas menu items
deselecting the histogram title or statistics, the existing objects
"title" or "stats" are first deleted in this function.
These objects cannot be deleted in TH1::PaintTitle or TH1::PaintStat
because the object removed from the list of primitives confuses
the iterator in TPad::PaintModified.
(Thanks to Charles Leggett for reporting the problem).
//
// 27/10/1998 19.03.07 by Rene Brun
//
- Implement TVirtualPad::GetEvent, GetEventX and GetEventY.
Same in TPad.
The declaration of these functions in TVirtualPad and TPad avoid
a reference to the libGpad shared library from TPaveText.
//
// 27/10/1998 18.22.45 by Fons Rademakers
//
- TDirectory: fix in Browse() method.
- TKey: fix in Browse() method.
- TRootBrowser: better handling of refreshing. Also, in combination
with the fixes in the above two Browse() methods the segv problem
of version 2.00/12 is solved.
//
// 26/10/1998 11.05.03 by Rene Brun
//
- Improvements in TMinuit::mnhelp suggested by Alexander Zvyagin.
The function accepts now string in upper/lower case and the search
is not limited to 3 characters.
//
// 23/10/1998 08.38.49 by Rene Brun
//
- Protect TLeafObject::GetValue in case the TMethodCall object
does not exist.
- Change of specifications for TH1::SetBins.
The new version allows changing both the number of bins and the limits.
The X axis parameters are modified.
The bins content array is resized
if errors (Sumw2) the errors array is resized
Note that if the new number of bins differs from the old one,
then the previous bin contents are lost
To change only the axis limits, see TAxis::SetRange
//
// 22/10/1998 18.04.28 by Rene Brun
//
- Move functions TLeafS::GetValue and TLeafI::GetValue from inline
functions in the include files to the implementation files.
Some compilers were returning wrong values for the inline code:
(Thanks to Jean Gosset for reporting an example)
//
// 21/10/1998 12.58.44 by Rene Brun
//
- Implement TCutG::SavePrimitive. With this implementation TCutG objects
in a pad are now saved correctly as TCutG objects (and not as TGraph)
in the macro generated automatically by TPad::SaveAs.
- Add new data members fEventX, fEventY in class TCanvas with corresponding
getter functions GetEventX and GetEventY. The new members contain
the last position of the mouse in the canvas.
- Add new functions in class TPaveText:
TPaveText::InsertText(const char *text) to insert a new text at mouse position
TPaveText::EditText() to edit the text at mouse position
TPaveText::DeleteText() to delete the text at mouse position
//
// 20/10/1998 16.45.26 by Rene Brun
//
- Fix a memory leak in TBasket destructor. This leak was a side effect
of a change in the TKey destructor. (Thanks Thomas Ruf)
- Modify TGraph::PaintGraph. The new version does not invoke TH1::PaintStat
if the fit option is disabled. Calling TH1::PaintStat had the side effect
to make the "stats" object inaccessible with the mouse as soon as
a TGraph or TCutG object were drawn on top on the TH1.
(Thanks Otto Schaille for reporting).
//
// 20/10/1998 15.10.17 by Fons Rademakers
//
- TList, THashList: added two new methods:
virtual void AddAfter(TObjLink *after, TObject *obj);
virtual void AddBefore(TObjLink *before, TObject *obj);
Using iteration method 3 (see TList class description) one can
directly insert a new object at the place before or after the found
object. The AddAfter(TObject*,TObject*) and AddBefore() require a new
scan to locate the insertion position.
- TDirectory: fix regression in AppendKey() introduced in version 2.00/12.
Uses the new TList method described above.
- rootcint: call G__exit(0) at end of program to properly close CINT and
let it cleanup any tmp files.
- CINT: should be compiled with the -DG__TMPFILE on RH4.2 systems. This to
workaround the tmpfile() bug.
//
// 18/10/1998 14.29.52 by Rene Brun
//
- Change fitting option in TH1::FitSlicesY. Always use
the option "W" when fitting the slices.
- Implement a better algorithm in static function H1InitGaus
to compute the initial parameters for a gaussian fit.
In case of a "bad-gaussian" or long tails, the previous
estimation of the constant parameter was systematically too low.
The new algorithm sets the initial value of the constant term
to the average of the old algorithm with the maximum bin content
in the fitted range.
- Improvements in TGraph::Fit for some special cases.
(for example when all y values are identical and a straight line fit)
Thanks to Pavol Strizenec for reporting a simple example.
//
// 16/10/1998 12.40.55 by "Valery Fine"
//
- Implement support for OpenGL in class TMarker3DBox.
- Fix timer related problems in TWinNTSystem and TWin32Timer.
//
// 16/10/1998 12.12.04 by Rene Brun
//
- Fix a problem in TTRAP::SetPoints and TGTRA::SetPoints
in case the angle theta2 is specified(TTRAP) or twist (TGTRA).
Thanks to Francois-Xavier Gentit for reporting.
//
// 14/10/1998 15.19.41 by Rene Brun
//
- New option in TH1::PaintAxis to draw additional tick marks/labels.
Assume tx = gPad->GetTickx() and ty = gPad->GetTicky()
by default only the left Y axis and X bottom axis are drawn (tx = ty = 0)
tx = 1 ; tick marks on top side are drawn (inside)
tx = 2; tick marks and labels on top side are drawn
ty = 1; tick marks on right side are drawn (inside)
ty = 2; tick marks and labels on right side are drawn
Use TPad::SetTicks(tx,ty) to set these options
//
// 12/10/1998 18.37.31 by Rene Brun
//
- New data member fLastPoint in class TPolyLine3D.
Corresponding new member functions SetNextPoint and GetLastPoint.
- Extend functionality of TGraph::SetPoint to allow entering a new point
after the TGraph definition. The arrays fX and fY are automatically
extended. This extension allows updates of an existing TGraph with time.
- Introduce support for EGCS under SGI in decks Globals and Makefile.
//________________________________________________________________________
//
//::> VERSION 2.00/12 09/10/98 10.41.34
//
//
// 09/10/1998 10.41.34 by Rene Brun
//
- Clean up source file and stamp version 2.00/12.
- Modify test/Makefile to introduce support for Linux/KCC
- Add new tutorial fitslicesy.C
- generate new HTML files for this new version.
//
//
// 08/10/1998 18.32.55 by Fons Rademakers
//
- TString: fix in ReplaceAll(str1, str2) now the replacement string
str2 can be the empty string "".
- TUnixSystem: ExpandPathName() expands $(ROOTSYS)/bla just like
$ROOTSYS/bla. This allows compatibility with WinNT which only
supports $(ROOTSYS)/bla.
//
// 07/10/1998 17.52.39 by Masaharu Goto
//
- New CINT 5.13.74.
5.13.75 23 Sep 1998
G__OLDIMPLEMENTATION902, VC++6.0 exception handling bug workaround
G__OLDIMPLEMENTATION903, undefined member assignment SEGV, bug fix
- , long.dll
Gunay ARSLEN's bug report
G__OLDIMPLEMENTATION904, #define xxx "abc" bug fix
G__OLDIMPLEMENTATION905, G__replacetemplate, G__asm_wholefunction escape
G__OLDIMPLEMENTATION906, if(CLS==INT) x; else y; free_tempobj bug fix
G__OLDIMPLEMENTATION907, LD_FUNC,LD_IFUNC, ++sp condition
G__OLDIMPLEMENTATION908, sizeof(*ptr) bug fix
G__OLDIMPLEMENTATION909, EOF problem fixed in G__readansiproto()
G__OLDIMPLEMENTATION910, bit-field and bytecode optimization bug fix
G__OLDIMPLEMENTATION911, T *p=new T[x] bytecode abort
//
// 07/10/1998 10.40.10 by Fons Rademakers
//
- TDirectory: fix in the Browse() method to show all cycles of objects
in the browser.
- TKey: fix the Browse() method to delete a previous memory resident object
with the same name (identical behaviour to TDirectory::Get()).
- Added Makefile for Solaris.
//
// 07/10/1998 09.06.59 by Rene Brun
//
- New function TH1::PaintH3Box to draw a TH3F object with the option "box"
This function is called when drawing a TH3F object with the option "box".
The function uses the TMarker3DBox class.
TH3F::Sizeof3D modified to take into account the new option.
- Merge with new Valery's version. Valery has added new constructors
to several geometry shapes classes and a new function in TRotMatrix.
//
// 05/10/1998 18.58.48 by Fons Rademakers
//
- Added three very nice little "fun" programs to the $ROOTSYS/test
directory. They show some very powerful capabilities of ROOT:
- the graphics system
- clever usage of timers to simulate multi-threading (like Netscape
is doing in the Unix version of Navigator).
- the power of inheritance from basic framework classes
Run these 3 examples at the same time by executing the games.C macro
in the $ROOTSYS/tutorials directory. The macro will create the shared
libraries if they don't exist.
//
// 08/10/1998 04.48.02 by Rene Brun
//
- Implement some fixes in TPad suggested by Valery Fine and Andy Haas
when running Root compiled with VC++5.0 under NT running VC++6.0
- Due to the color table initialisation moved in TAppication,
the TGWin32 class has been modified (Valery) to create the color palette
before a canvas is created.
- Some minor changes in $TGXClient and $KeySymbols had to be made
to compile under AIX and HP-UX.
//
// 02/10/1998 14.42.44 by Fons Rademakers
//
- TMapFile: map files can now be "deleted". Previously only Close()
could be used, but this would not clean up the TMapFile object itself
(would only disconnect from the shared memory segment).
- ROOT native GUI: support now key symbols. For example:
frame->BindKey(this, gGXW->KeysymToKeycode(kKey_Up), kAnyModifier);
All defined key symbols can be found in the file KeySymbols.h.
- TGXW: prototype of TGXW::LookupString() is changed from:
LookupString(Event_t *event, char *buf, Int_t buflen, Int_t &keysym);
to
LookupString(Event_t *event, char *buf, Int_t buflen, UInt_t &keysym);
- TGTab: added method SetTab(Int_t tabIndex) to bring the specified
tab to the front (method provided by Reiner Rohlfs).
- TGDoubleSlider: new slider widget which allows modification of upper
and lower limits as well as dragging of slider tab. This widget was
implemented by Reiner Rohlfs.
- TDatime: Convert() made public. Using Convert() it is easy to compare
two datime objects. Requested by Victor Perevoztchikov.
//
// 02/10/1998 11.19.28 by Rene Brun
//
- Fix a problem in TFree::GetBestFree. Do not return a free gap
in case the new free gap after allocation will be less than 4 bytes.
(thanks Eddy Offermann for providing a test case).
- Fix a small problem in TTree::Draw in the following case:
TH2F *blank = new TH2F("blank", "dE/dx vs. B mass", 50,4.8,6, 50,-3,6);
blank->Draw();
ntuple->Draw("dedx:mb", "dtype==431 && ktype==211", "same");
When option "same" was specified, the limits of the histogram created
by ntuple->Draw were not correctly from the current pad coordinates.
(thanks Stephen Bailey for providing a simple test case).
- Merge with Valery's latest version (October 1st).
Changes in TWinNTSystem, TWin32Canvas.
New class TWin32Timer.
New functions TAssoc::isFolder and TAssoc::Browse.
- Fix a memory leak problem in TDirectory::Close and TKey destructor
when closing files with subdirectories.
In TDirectory::Close, the keys from subdirectories were not deleted.
In TKey destructor, buffers were not deleted.
The TBasket destructor does not delete the buffer anymore (done
in TKey destructor).
(thanks Eddy Offermann for reporting this leak).
- Optimize function TDirectory::AppendKey. When many objects (keys)
were written to a file, the time to add a new object was growing
like the square of the existing number of objects in the file.
The effect was only visible when several thousand keys were written.
The new algorithm uses THashList::FindObject instead of TDirectory::GetKey.
Same optimisation in TObject::Read and TObject::Write.
- New function TStyle::SetHeaderPS(const char *header) and corresponding
get function TStyle::GetHeaderPS.
The string in header will be added to the Postscript file
immediatly following the %%Page line
For example, this string may contain special Postscript instructions like
200 200 translate
This information is used in TPostScript::Initialize
(thanks Marcus Mendenhall)
- New function TH1::FitSlicesY(TF1 *f1, Int_t binmin, Int_t binmax, Int_t cut)
Project slices along Y in case of a 2-D histogram, then fit each slice
Only bins along X between binmin and binmax are considered.
with function f1 and make a histogram for each fit parameter
if f1=0, a gaussian is assumed
Before invoking this function, one can set a subrange to be fitted along Y
via f1->SetRange(ymin,ymax)
Note that the generated histograms are added to the list of objects
in the current directory. It is the user's responsability to delete
these histograms.
Example: Assume a 2-d histogram h2
Root > h2->FitSlicesY(); produces 4 TH1D histograms h2_0, h2_1 and h2_2
with h2_0 containing parameter 0(Constant) for a Gaus fit
of each bin in X projected along Y
with h2_1 containing parameter 1(Mean) for a gaus fit
with h2_2 containing parameter 2(RMS) for a gaus fit
with h2_chi2 containing the chisquare/number of degrees of freedom for a gaus fit
Root > h2->FitSlicesY("gaus",15,22,10);
same as above, but only for bins 15 to 22 along X
and only for bins in X for which the corresponding projection
along Y has more than cut bins filled.
- New function TH1::FitSlicesZ(TF1 *f1, Int_t binminx, Int_t binmaxx, Int_t binminy, Int_t binmaxy, Int_t cut)
Project slices along Z in case of a 3-D histogram, then fit each slice
with function f1 and make a 2-d histogram for each fit parameter
Only cells in the bin range [binminx,binmaxx] and [binminy,binmaxy] are considered.
if f1=0, a gaussian is assumed
Before invoking this function, one can set a subrange to be fitted along Z
via f1->SetRange(zmin,zmax)
Example: Assume a 3-d histogram h3
Root > h3->FitSlicesZ(); produces 4 TH2D histograms
with h3_0 containing parameter 0(Constant) for a Gaus fit
of each cell in X,Y projected along Z
with h3_1 containing parameter 1(Mean) for a gaus fit
with h3_2 containing parameter 2(RMS) for a gaus fit
with h3_chi2 containing the chisquare/number of degrees of freedom for a gaus fit
Root > h3->Fit(0,15,22,0,0,10);
same as above, but only for bins 15 to 22 along X
and only for cells in X,Y for which the corresponding projection
along Z has more than cut bins filled.
- New function TH1::Rebin(Int_t ngroup, const char*newname)
to rebin 1-D histograms.
This function replaces the existing histogram if newname="" (default).
It returns a new histogram otherwise.
ngroup is the number of bins to be merged into one new bin.
If the original histogram has errors stored (via Sumw2), the resulting
histograms has new errors correctly calculated.
- Start a cleanup operation to remove some classes interdependencies.
Implement new functions
TVirtualPad::DrawClassObject, TPad::DrawClassObject
TVirtualPad::InspectObject, TPad::InspectObject.
TObject::Inspect invokes TVirtualPad::InpectObject
TClass::Draw invokes TPad::DrawClassObject
- Implement operator "%" in TFormula (thanks Nicolas).
Corresponding mods in TFormula::Analyze, TFormula::Eval
and TTreeFormula::EvalInstance.
- Include a fix in TDataMember constructor by Weiwen Liu (thanks Weiwen).
In case a class A was defined as:
class A {
public:
UChar_t fA;
unsigned char fB;
.....
};
If the class A was used in a TClonesArray, the "unsigned char"
was not processed correctly. Wewen's fix treats now
UChar_t and "unsigned char" equivalently.
- Remove dependency from TBrowser in TObject implementation file.
- New functions TPad::Clip and TPad::ClippingCodes.
TPad::Clip clips a line at a rectangle boundary.
- TPad::PaintLine3D function has been rewritten to take
advantage of the new clipping facility in TPad.
- TPolyLine3D::PaintPolyLine function has been rewritten to take
advantage of the new clipping facility in TPad.
- TBranch::Print modified to print branches with many variables
in multi-lines. Thanks to Weiven Liu for providing the code.
//
// 25/09/1998 13.15.52 by Fons Rademakers
//
- TStyle: added member function SetPaperSize(TStyle::EPaperSize). Can use
symbols TStyle::kA4 and TStyle::kUSLetter to set size.
//
// 24/09/1998 18.40.36 by Fons Rademakers
//
- TApplication: moved TColor initialization from TCanvas to TApplication
so it will be guarenteed called before the GUI color initialization.
Request by Rutger vd Eijk.
- Other change in mmprivate.h and mmalloc.h for VC++ v6.0.
- New CINT 5.13.74.
5.13.74 19 Sep 1998
G__OLDIMPLEMENTATION900, newlink , G__add_macro -p -DX="abc" bug fix
- , IsTmplt, TmpltName, TmpltArg added to G__ClassInfo
G__OLDIMPLEMENTATION901, pause.c G__security assignment bug fix
//
// 23/09/1998 17.32.48 by Fons Rademakers
//
- TServerSocket: there is no wait and retry loop anymore on the low
level bind command. Any retries have to be done by the TServerSocket
user. A bind() failure can be detected using the new TSocket::GetErrorCode()
function. For more details see the TServerSocket::TServerSocket help.
//
// 22/09/1998 11.52.14 by Fons Rademakers
//
- Changes in WIN32_*.cxx, GUI_RootCanvas.cxx and mmprivate.h
to accommodate for VC++ v6.0. (thanks to Sverre Jarp)
- Added makefiles for Debian v2.0 and Digital Unix with cxx v6 compiler.
- TH1: Added PaintStat2() for putting the stat info for 2D histograms
(requested by Hans Dijkstra). Basic info is there, still needs to be
beautified.
//
// 17/09/1998 20.50.22 by Fons Rademakers
//
- New CINT with bug fix for code "nbytes += chain->GetEvent()".
- Added egcs 1.1 support in RConfig.h.
- Added cxx support in Make-macros.
//
// 16/09/1998 00.42.29 by Rene Brun
//
- Problem reported by Axel Schwank in TTree::Scan now fixed.
In some cases, branches with leafcounts did not compute
the leafcount before processing the branch.
- TCanvas::Streamer modified to save the "fShowEventStatus"
and fMenuBar options.
- Problem reported by Reiner Rolfs when saving a canvas with a graph,
then opening the file, drawing the canvas and closing the file.
Closing the file had the side effect to delete the histogram referenced
by the graph object. The correction was one line in TGraph::Streamer
to remove the histogram from the current directory in memory.
- Problem reported by Reiner Rolfs when saving a hierarchy of pads
has been fixed in TPad::Streamer. The global gPad was not saved
and restored before/after the loop reading the pad primitives.
(thanks Reiner).
- Modification in TDatime::Set to correctly encode years>2000
- Protection in TGaxis::Optimize in case the function is called
with invalid floating point numbers (+- inf).
- Accents introduced in class TLatex + some improvements when
positionning subscripts/superscripts and poers. (work by Nicolas)
- Code improvements in TPad::Print (thanks Alexander Zvyagin).
- Remove an unnecessary limitation in TTree::CloneTree in case the Tree
has branches with TClonesArray and one wants to copy only a subset
of one TClonesArray. (Thanks to Axel Schwank)
- When no options are specified in the TPave, TPaveLabel constructors
(default option="br"), then TPave::PaintPave will not draw the border.
Otherwise crazy fill areas were drawn depending on the pad range.
To Draw a TPave, TPaveLabel, etc in NDC with a border, use option="NDCbr"
(thanks Axel Schwank).
- Remove some restrictions in TTree::Draw and TTree::Eventloop.
The following case was not supported (example from Stephen Bailey).
h1->Draw("Mass[2]", "mcid[4]==333");
where Mass is a branch defined as Mass[5] and mcid a branch
defined as mcid[mcn].
The change in TTree::EventLoop makes sure that whenever an expression
references a branch with a leafcount, the leafcount branch is forced
to be read even if only one element is used.
- Change parameter kMaxBuffer from 80 to 120 in TPostScript class.
This change was requested by Olaf Steinkamp to support long
file names as generated by an automatic system.
- Fix a problem in TChain::Merge affecting the merging of TNtuple objects.
- Fix a problem in TNtuple::Streamer. Branch addresses are now set
when reading the TNtuple header from the Root file. This also fixes
a problem when using TTree::CloneTree with a TNtuple object.
- Change type of argument in TFormula::Compile from char* to const char*
- Fix a problem in TChain::Merge due to a change in the default argument
in TTree::CloneTree. The first file in the file was added twice
to the merged file. Thanks to Scott Sampson for reporting the problem.
- Add Warning message in TH1::Add, TH1::Divide, TH1::Multiply
in case the axis limits of operand histograms do not match.
- Fix a bug in TEllipse::Paint. phimin was not taken into account.
Thanks to Mathieu de Naurois for reporting the problem.
- Change TGaxis ClassDef(TGaxis,0) to ClassDef(TGaxis,1) to make
TGaxis streamable.
- Add new function TTreeFormula::GetNnodes() returning the number of Tree leaves
referenced in the formula.
//
// 14/09/1998 17.04.25 by Fons Rademakers
//
- TBuffer: operator<<(Char_t *c) now operator<<(const Char_t *c).
- TGString: added ctor taking directly TString.
- TGTextView: option argument has now default value (= 0).
- TGMatrixLayout: fixed size calculation (was one row too large) +
take parent borderwidth into account.
- TGLayout: delete layoutmanager in TGCompositeFrame dtor (as per
specification).
- guitest.cxx: show example of TGMatrixLayout in "Tab 5".
- cint_meta: added -DG__API to rootcint to process META classes
(Make-macros also updated).
- TObject: added placement operator delete. Needed to be conform with
ANSI C++ (is only used when exception is thrown in placement new).
This new version of operator delete is not supported by older compilers.
It is activated in RConfig.h using the define R__PLACEMENTDELETE.
- To compile with the new Alpha cxx v6 compiler option -nostdnew has
to be used (all ROOT new/delete operators comply with ANSI C++, but
cxx v6 still prefers to load its own global new operator and thereby
causing a mismatch with the ROOT global delete operator).
- TPolyLine: corrected small typo.
- TStopwatch: Start() has now a reset flag. By default the stopwatch is
reset on start (< 2.00/11 behaviour). Help text expanded.
//
// 28/08/1998 10.38.51 by Rene Brun
//
- Urgent bug fix in TTreeFormula::Compile and TTree::Draw
when doing tree->Draw("px[0]") where px is indexed on ntrack for eaxmple.
Thanks to Stephen Bailey for reporting very quickly.
//
// 28/08/1998 08.58.30 by Valery Fine
//
- Correction in $TStopwatch, Stopwatch and Benchmark.
The problem was if one apply Stop, the method can continue
counting the time with the Next Start method as people expect.
The correction allows to accumulate the REAL and CPU time for
each Start->Stop pair to show the total time. In fact the
TStopwatch::Continue method was not implemented yet.
//________________________________________________________________________
//
//::> VERSION 2.00/11 26/08/98 19.10.44
//
//
// 26/08/1998 18.54.42 by Nicolas Brun
//
- Nicolas has implemented a new class TLatex.
See comments and examples in the class implementation.
With this class, it is now possible to draw mathematical
formula (Latex style) on the screen and Postscript. TLatex supports:
-Subscripts and Superscripts (many levels)
-Fractions
-Mathematical Symbols + Sqrt + Sum and Integral
-Greek Letters
This implementation has still a few problems.
There are still some discrepancies between the result on the screen
and the result on Postscript.
Also some differences will be seen between Unix servers depending
the version of X in use. Results on WindowsNT are also slightly different.
An example of use can be found in tutorials/latex.C
With this version, a TLatex object must be explicitely created.
Note that this class cannot be used when running Root in batch mode
because it uses info provided by the low level graphics functions
from X11 or Win32.
We are planning to make an automatic interface to this class
when drawing axis titles, histogram titles and like.
Please forward your comments and suggestions to Nicolas at
nicolas@hpbrun.cern.ch
//
// 14/08/1998 19.15.12 by Fons Rademakers
//
- TROOT::GetMacroPath: fix for Win32 (Valery).
- TRootCanvas and TRootBrowser: if canvas or broser are closed
via menu File/Close then the associated symbol is taken out
of the CINT symbol table. To prevent accidental access to deleted
object.
- rootcint: defines now -D__MAKECINT__ which can be used as special
flag in case of dictionary generation.
- TUnixSystem::ResetTimer: new method to reset async timer. Before
async timer could only be Reset() while being in Notify().
- New class TProcessEventTimer. Us this async timer in tight loops to
periodically process GUI and sync timer events. It is for example
used in TTree::EventLoop().
- Added makefiles for Linux RH4.2 (non glibc) and Irix KCC.
- TSystem::DispatchOneEvent: new argument pendingOnly. If true then
only pending GUI events and timers are processed. This is used in
TSystem::ProcessEvents(). Othwerise DispatchOneEvent() falls through
and blocks on select (in Unix case) unless a timeout is specified.
The TUnixSystem and TWinNTSystem have been updated accordingly.
- TTree::EventLoop: use async timer to process pending GUI events
about 3 times per second.
- MakeDistSource: do not include in source the cint/MAKEINFO and
cint/include/iosenum.h files. They are platform dependent and
are correctly provided in the binary distribution.
- guitest.cxx: show how to color button background
- mmconfig.h: remove reference to ansidecl.h.
- TGTab: clicking on tab will generate the event:
kC_COMMAND, kCM_TAB, tab id, 0.
Added test in guitest.cxx.
- TGWidget: removed fWidgetType datamember. To find widget type just use
the IsA() member function.
- TROOT: set ObjectStat default to 0 (like in example .rootrc).
- TObject: export enum EObjBits to interpreter.
//
// 19/07/98 14.12.45 by Valery Fine(fine@mail.cern.ch)
//
- Several changes in class TWinNTSystem.
- Protection in TBenchmark::Start in case of too many benchmarks.
- TCollection::Browse(TBrowser *b) calls TObject::Browser(b) if b=0
- Several corrections for WIN32 classes to fix
TBrowser and TObject::Inspect method too under Windows NT / 95
//
// 10/08/1998 08.36.59 by Rene Brun
//
- Modify TBranchObject::SetAddress and TBranchClones::Streamer
to support schema evolution in split mode. With the new version,
new data members can be added, deleted or swapped.
- Add a new test in TBranch::SetAddress when the branch is a TClonesArray
branch. In this case, the leaf offset should not be taken into account.
The leaf offset is always set when the shared library containing
the class definition is loaded, but a technique a la MakeCode is used
instead of the class itself.
Thanks to Axel Schwank for reporting this funny case.
- Correct TBranchClones::SetAddress to set the address of the branchcount.
With this fix, one can now read an existing tree from a file and
continue to fill it. (Only Trees with TBranchClones were affected).
- Fix a problem in TTreeFormula::Compile in the following case:
a branch ntrack
a branch px[ntrack]
tree.Draw("ntrack") was ok
tree.Draw("px") was ok
tree.Draw("px[1]") was ok
tree.Draw("px[1]/ntrack") was wrong
Thanks to Stefan Kluth for reporting this problem.
- Add protections in TLeafObject and TMethodCall when requesting
an unknown method name.
- In TChain::LoadTree, call TTree::SetMaxVirtualSize with the value
of fMaxVirtualSize defined for the chain.
- Implement new useful member functions in class TTree:
TTree::GetV1(), TTree::GetV2(), TTree::GetV3(), TTree::GetW().
Via these getter functions, one can access internal arrays of the Tree
corresponding to the previous TTree::Draw function.
See comments in the header of TTree::Draw for more details and an example.
- Fix a typo in TEventList::TEventList. The parameter delta was not used.
(Thanks for reporting).
- Add new data member fXwho in class THtml.
Corresponding getter/setter functions:
GetXwho()
SetXwho(const char *xwho)
Default value for xwho is http://xwho.cern.ch/WHO/people?
- Rename TNode::UpdateGlobalMatrix to TNode::UpdateTempMatrix.
Implement new function TNode::UpdateMatrix().
This new function updates the node parameters (translation vector
and rotation matrix). This function must be called before
invoking TNode::Local2Master.
Thanks to Francois-Xavier Gentit for his suggestion.
- Merge with Valery Fine version.
- Several changes + comments in class THelix.
Please forward comments/questions to the author Ping Yeh
pyeh@cdfsga.fnal.gov
- Set default parameters in:
TPolyLine::SetPolyLine
TPolyMarker::SetPolyMarker
TPolyLine3D::SetPolyLine
TPolyMarker3D::SetPolyMarker
The SetPxxx functions can be called with one argument only to set
the number of points, then the function SetPoint can be called
to initialize points one by one.
- Change definition of internal variable from Option_t to char
in TObject::Pop and TPad::Pop.
- Due to a clash in the definition of the macro EXTERN (with TCL/Tk),
Root defines the following macros:
EXTERN if not already defined
R__EXTERN in all cases.
We suggest you change your EXTERNs to R__EXTERN.
This changes has required modifications in CINT function Parse.
- Add two new data members to class TMaterial:
fRadLength; //material radiation length
fInterLength; //material interaction length
Corresponding constructor and getter functions.
Mods in TMaterial::Streamer to support schema evolution.
- Changes in TH1::Add, TH1::Divide and TH1::Multiply.
If one of the operand histograms has the errors set (Sumw2 has been called),
the resulting histogram has automatically the errors set (Sumw2 is called).
- Fix a problem in TF1::Paint when drawing a function in a pad
with log axes in the case when the function range is smaller
than the defined axis range. (thanks Glenn Cooper for reporting)
- Modify TProfile constructors to pass const Text_t instead of Text_t
for the profile name and title.
- The following functions have been deleted:
TPolyLine::GetPolyLine
TPolyMarker::GetPolyMarker
TPolyLine3D::GetPolyLine
TPolyMarker3D::GetPolyMarker
- WARNING !! Option_t has been redefined to be const char instead of char.
This affects many functions. Please check your code.
- The following classes have been modified to replace arguments
of type char* by const char*
TROOT
TROOT(const Text_t *name, const Text_t *title, VoidFuncPtr_t *initfunc = 0);
TObject *FindObject(const Text_t *name) { void *dum; return FindObject(name, dum); }
TObject *FindObject(const Text_t *name, void *&where);
const Text_t *FindObjectClassName(const Text_t *name) const;
TVirtualPad and TPad;
virtual void DrawText(Float_t x, Float_t y, const Text_t *text) = 0;
virtual void DrawTextNDC(Float_t u, Float_t v, const Text_t *text) = 0;
virtual TObject *GetPrimitive(const Text_t *name) = 0;
virtual void PaintText(Float_t x, Float_t y, const Text_t *text) = 0;
virtual void PaintTextNDC(Float_t u, Float_t v, const Text_t *text) = 0;
virtual void Print(const Text_t *filename="") = 0;
virtual void Print(const Text_t *filename, Option_t *option) = 0;
virtual void SaveAs(const Text_t *filename="") = 0;
virtual void SetName(const Text_t *name) = 0;
TCanvas
TCanvas(const Text_t *name, const Text_t *title="", Int_t form=1);
TCanvas(const Text_t *name, const Text_t *title, Int_t ww, Int_t wh);
TCanvas(const Text_t *name, const Text_t *title, Int_t wtopx, Int_t wtopy,
void SaveSource(const Text_t *filename="", Option_t *option="");
void SetTitle(const Text_t *title="");
TDialogCanvas;
TDialogCanvas(const Text_t *name, const Text_t *title, UInt_t ww, UInt_t wh);
virtual void Apply(const Text_t *action="");
virtual void SetName(const Text_t *name) { fName = name; }
TButton
virtual void SetName(const Text_t *name) { fName = name; }
TSlider
virtual void SetMethod(const Text_t *method) { fMethod=method; } // *MENU*
TAttLineCanvas
TAttLineCanvas(const Text_t *name, const Text_t *title, UInt_t ww=400, UInt_t wh=600);
TAttFillCanvas
TAttFillCanvas(const Text_t *name, const Text_t *title, UInt_t ww=400, UInt_t wh=600);
TAttTextCanvas
TAttTextCanvas(const Text_t *name, const Text_t *title, UInt_t ww=400, UInt_t wh=600);
TAttMarkerCanvas
TAttMarkerCanvas(const Text_t *name, const Text_t *title, UInt_t ww=400, UInt_t wh=600);
TDialogCanvas
virtual void Apply(const Text_t *action="");
TDrawPanelHist
TDrawPanelHist(const Text_t *name, const Text_t *title, UInt_t ww=500, UInt_t wh=600);
virtual void Apply(const Text_t *action="");
TFitPanel
TFitPanel(const Text_t *name, const Text_t *title, UInt_t ww=300, UInt_t wh=400);
virtual void SetFunction(const Text_t *function);
virtual void Apply(const Text_t *action="");
TFitPanelGraph
virtual void Apply(const Text_t *action="");
TGeometry
TGeometry(const Text_t *name, const Text_t *title);
virtual void cd(const Text_t *path=0);
TMaterial *GetMaterial(const Text_t *name);
TMaterial *GetMaterialByNumber(Int_t number);
TNode *GetNode(const Text_t *name);
TShape *GetShape(const Text_t *name);
TRotMatrix *GetRotMatrix(const Text_t *name);
virtual void Node(const Text_t *name, const Text_t *title, const Text_t *shapename, Double_t x=0, Double_t y=0, Double_t z=0
, const Text_t *matrixname="", Option_t *option="");
TNode
TNode(const Text_t *name, const Text_t *title, const Text_t *shapename, Double_t x=0, Double_t y=0, Double_t z=0
, const Text_t *matrixname="", Option_t *option="");
TNode(const Text_t *name, const Text_t *title, TShape *shape, Double_t x=0, Double_t y=0, Double_t z=0
, TRotMatrix *matrix=0, Option_t *option="");
virtual TNode *GetNode(const Text_t *name);
TDirectory
virtual void Delete(const Text_t *namecycle="");
virtual TObject *Get(const Text_t *namecycle);
//________________________________________________________________________
//
//::> VERSION 2.00/10 30/07/98 16.57.22
//
//
// 30/07/1998 14.54.40 by Rene Brun
//
- Implement new functions in classes TH2C,TH2S,TH2F and TH2D
-GetCorrelationFactor(axis1,axis2)
-GetCovariance(axis1,axis2)
-GetMean(axis)
-GetRMS(axis)
Thanks to Stefan Kluth<skluth@mh1.lbl.gov> for suggesting
these new functions and providing hints for the algorithm.
- Change calling sequence of TH1::GetMean and TH1::GetRMS to add
a dummy parameter axis to be consistent with the TH2 similar functions.
This parameter being optional, these functions are still backward
compatible.
- Modify TTree::TakeAction to call the Fill function instead of FillN.
This slows down slightly the filling process for 2-D histograms,
but the resulting histogram has the statistics information correctly
filled. One can invoke the TH2H::GetCorreclationFactor on the 2-d
histogram produced by TTree::Draw.
- In TTree::EventLoop add control on gSystem->ProcessEvents.
In case of a TTree::Draw command, one can now interrupt gracefully
the processing of the command from an embedded canvas.
- Implement changes by Akiya Miyamoto<miyamoto@ccjlc1.kek.jp>.
Akiya has successfully ported Root on the Hitachi machines running
the HIUX operating system under EGCS. Thanks Akiya.
- Mods in TH1::PaintScatterPlot and TH1::TableInit to not plot any markers
in case of a 2-d histogram with entries but all outside the range.
- Several changes in utility program g2root implemented by
Nikolai Root <nroot@inp.nsk.su>. g2root includes a new optional parameter.
With this new parameter, one can specify a file name with a translation
table to automatically convert the 4 Geant character volume names
to more meaningful names. Wilcarding is supported. For more details
see comments in the g2root header.
//
// 28/07/1998 15.45.02 by Fons Rademakers
//
- TCint: in ResetAll() initialize CINT command processor (fixes problem
with initializing enum's via the interpreter.
- TDirectory: in Streamer() make directory readable if its file is also
readable. Bug caused sub-directories to be readonly even when file was
opened in write mode.
- TDirectory: in Build() don't add directory to current directory if
dir name is "". This is only the case when reading directory from
disk. Only add to current dir in TKey::ReadObj() when directory name
has been set. Bug caused re-reading of directory from disk for
every cd() into that directory while accumulating copies in memory.
- TSystem: in ProcessEvent() protect in case of batch mode.
//
// 27/07/1998 17.52.12 by Fons Rademakers
//
- TMapFile: new static method SetMapAddress(Long_t addr). With this
method one can fix the start address of a shared memory region.
For more see the TMapFile::SetMapAddress source on the web.
- Deck eventload: made machine independent.
- TObject: Write(), added option argument. Option can be
TObject::kOverwrite and TObject::SingleKey (last one is only
supported for TCollection::Write().
- TCollection: Write(), added option argument. See above.
//
// 24/07/1998 14.41.23 by Fons Rademakers
//
- Added Makefile front-end for MkLinux (by Damir).
- Added Makefile front-end for Debian (by Jens Ritter).
- Deck eventload: added WIN32 case.
- TPad: fix bug in Divide() in case of long TCanvas names (now dynamic).
- TWinNTSystem: new method ProcessEvents().
- guitest.cxx: added example of custom graphics context to change
label and button text color.
//
// 18/07/1998 19.17.01 by Fons Rademakers
//
- New class TRootEmbeddedCanvas: this native ROOT GUI widget allows
the easy embedding of a TCanvas in a TGFrame. The TRootEmbeddedCanvas
inherits from TGCanvas with the container automatically set to
be a TCanvas. Using the member GetCanvas() you can obtain a pointer
to the associated TCanvas. To see how it should be used see
$ROOTSYS/test/guitest.cxx. When running guitest select the menu
item Test/Dialog... Click on Tab 3 and admire the two TCanvases.
Play with the Start... and Stop... buttons. Also notice how you
can select other tabs while filling continues and how the window
is updated after resizing (even more impressive with a WM that
allows opaque resizing, like kwm).
- TCanvas: new ctor used by TRootEmbeddedCanvas.
- guitest.cxx: added demo of TRootEmbeddedCanvas (see above).
- TDataMember: fix in ctor explaining a number of crashes in the
browser (by Valery).
- TSystem: new method ProcessEvents(). Call this method regularly in
tight calculation loops. It allows the processing of GUI, socket
and timer events. Most importantly it allows the clean interruption
of such a tigh loop. That is, it returns kTRUE when the users wants
to terminate the loop. Currently the user can terminate the loop by
selecting the canvas menu View/Interrupt or by hitting any key in
the canvas. The interrupt flag is set via the routine TROOT::SetInterrupt().
Of course, this method can be called via any GUI button.
- TROOT: new methods SetInterrupt() and IsInterrupted(). Used to toggle
the variable TROOT::fInterrupt.
- TRootCanvas: new menu item View/Interrupt (see above).
- hsimple.C: calls gSystem->ProcessEvents() in main loop.
//
// 15/07/1998 14.33.25 by Fons Rademakers
//
- rootrc: by default Root.MemStat and Root.ObjectStat turned off.
Turn only on for debugging purposes.
- Cleanup of iostream forward declarations in several headers.
- RConfig.h: new flags:
R__ANSISTREAM for ANSI C++ compatible compilers.
R__VECNEWDELETE for compilers supporting overriding of new[] and delete[].
- TRint: Getprompt() and PrintLogo() made public virtual.
- TMapFile: default buffer size set to TBuffer::kMinimalSize (128),
was TBuffer::kInitialSize (1024). Now small objects take only 128 bytes.
Could maybe optimized more.
- TStorage: fixed large memory eating bug in EnterStat().
- New makefile for Linux with KCC.
- TClonesArray: major fix in the way dtors are called for clone
objects. This fixes memory leaks in case clone objects contain
objects that allocated space (e.g. TNamed which contain TString).
Removed the usage of the interpreter to call the dtor. This
is now done via the custom TObject::operator delete (see description
in TClonesArray::TClonesArray() documentation). Also creation of
space for clone objects simplified (does not use TClass:New() anymore).
Method Clear() is now same as Delete().
- TObjArray: Clear() slightly optimized.
//
// 10/07/1998 11.46.03 by Rene Brun
//
//
- New option and parameter in TObject::Write(const char *name, Int_t option, Int_t bufsize).
Bufsize can be given to force a given buffer size to write this object.
By default, the buffersize will be taken from the average buffer size
of all objects written to the current file so far.
If a name is specified, it will be the name of the key.
If name is not given, the name of the key will be the name as returned
by GetName().
The option can be a combination of:
kSingleKey and kOverwrite (enums in TObject.h)
Using the kOverwrite option a previous key with the same name is
overwritten.
The kSingleKey option is only used by TCollection::Write() to write
a container with a single key instead of each object in the container
with its own key.
- Changes in TRint::HandleTermInput. Remove an unnecessary test
on line[0]. Special characters such as French or German accents
when typed at the keyboard had the bad effect to stop the Root
session immediatly.
- Modify the installation procedure for g2root under Linux.
The trick is to use f2c to convert g2root.f into g2root.c
compile g2root.c with gcc. This takes care about recursivity.
Probably the same tric could be used on other machines where Fortran
does not accept recursive calls.
- Modify TH1::Build. Do not delete already existing histogram with
same name in current directory. Simply, remove it from the list.
- Add operator () in TCollection (thanks Nikolay Root from Novosibirsk).
- Add a new test program to benchmark collection classes.
this new test tcollbm has been implemented by Nikolay Root.
- Mods in test/vmatrix to compile under NT (Thanks Valery Fine).
- Add "return 0' in main program of test/vlazy.
- Implement TTUBE::Streamer to take into account class evolution.
(thanks Vitali Choutko for reporting).
- Introduce an option in TPostScript to compile this class
in noopt mode under NT (bug in VC++ optimizer).
- New version of CINT introduced (5.13.63)
//________________________________________________________________________
//
//::> VERSION 2.00/09 27/06/98 09.23.55
//
//
// 27/06/1998 01.25.52 by Fons Rademakers
//
- Introduction of Makefiles. The makefile system consists of a main,
machine independent back-end, Make-macros, and several, machine dependent
front-ends, Makefile.linux, Makefile.linuxegcs, etc. The individual
file dependencies are stored in Make-depend. To use the makefiles
create a link called Makefile to the desired front-end:
cd $ROOTSYS/src
ln -s Makefile.linux Makefile
To build the complete system type:
make distclean; make
Make must be GNU make (gmake on some platforms). If you have an SMP
system you can do:
make -j <n>
Where <n> is the number of CPU's you want to use in parallel.
To be able to regenerate the Make-depend file one needs a special
fixed "makedepend" program (the original "makedepend" does not work
do to a bug in the handling of C++ comments, //). Source of this fixed
"makedepend" program is available from ftp://root.cern.ch/root/mkdep.tar.gz.
After compilation install it in $ROOTSYS/bin. To use it type:
make depend
However, the provided Make-depend file is up to date.
More makefile front-ends for different platforms will be released
in the coming weeks via the ROOT web site.
- Changes in a number of installation KUMACS to prepare for Makefiles.
- TH1 and TF1: fix bug in which wrong object is set for the DrawPanelHist
and FitPanel if invoked via contextmenu.
- TSlider: fix in SetRange(), min and max were not updated.
- TDrawPanelHist, TFitPanel: change cursor to watch when executing a command.
//
// 22/06/1998 08.40.19 by Valery Fine
//
- Implement shapes TSPHE and TELTU.
This has required changes in include files TTUBE
- Added examples of TSPHE in tutorial shapes.
- Changes in WinntSystem::ExpandPathName(). Now it
1. Replaces all "$(" with "%"
Replaces all ")" with "%"
2. Calls WIN32 API to expand all %name%
This means it may expand UNIX-like and Windows like environment
variables.(for example $(rootsys) and %rootsys% too)//
- Changed TClass::Draw() to draw an array index (like Html does).
- Changed THtml class to hyperize pointers to arrays as well.
//
// 21/06/1998 23.43.46 by Rene Brun
//
- Mods in TTree::MakeCode. The code generated takes into account
repetitive executions. The Root file is only connected once.
- New tutorial zdemo illustrating graphs in log scale and annotations.
Thanks to Michael Tokarev and Elena Potrebenikova (JINR Dubna)
- Modify TDialogCanvas::Apply to show the cursor watch
- Modify TCanvas::Update to reset the current cursor to the cross shape.
- Modify FitPanelGraph to set the Watch cursor.
- Implement Getters for all geometry classes.
- Fix clipping for 3-D primitives. Changes are in:
TPad::PaintLine3D
TPolyLine3D::PaintPolyLine
TPolymarker3D::Paintpolymarker
- Introduce bit mask operations in TTreeFormula. The logic was already
available in TFormula.
- Modify TH1::GetObjectInfo to take into account the axis range when
computing the integral for the histogram. The info reported by
this function is reported in the canvas event status. When the histogram
DrawPanel is active, the slider can be used to set the axis range.
This feature can be used to interactively evaluate the integral of an
histogram in the range defined by the slider.
- Fix a bug in TSliderBox in case of vertical sliders.
- Fix a problem in TBranchClones::Reset. The number of entries and the baskets
in the branchcount of a TBranchClones were not reset.
- Merge with Valery's version. Main changes are in macros.
class TPythia now OK for NT.
- Include changes from Kris Hagel and Kaori Wada for the VMS version.
//
// 10/06/1998 12.46.57 by Fons Rademakers
//
- TKey: before writing and reading an object (via Streamer) we register
the object in the TBuffer map keeping track of written and read
objects. This prevents double writing of objects that contain pointer
to themselves. This mod is completely backward compatible.
Same change made in TMapFile.
HOWEVER: NOTE that files written with this version of Root cannot be read
by old versions of the system.
- TObject: simplified Clone() and now also handles case of self reference
more efficiently.
- TServerSocket: inherits now from TSocket. The main advantage is that a
server socket can now be monitored by a TMonitor for a connection. Only
when the monitor returns the server socket (because a connection is
attempted) we call Accept() which will not block since the connection
can be established immediately. Usage is demonstrated in the new tutorial
hserv2.C.
//________________________________________________________________________
//
//::> VERSION 2.00/08 05/06/98 14.36.25
//
//
// 04/06/1998 15.38.43 by Rene Brun
//
- Several new functions have been introduced in the TTree class.
TTree::CopyEvents to copy events from a Tree to this tree.
TTree::CloneTree. The default value for the number of events to copy
has been changed. By default the new function copy all events.
- The TTree::SetBranchStatus information is now persistent. The next session
will remember the branch status. A new function TTree::UpdateActiveBranches
is automatically called by TTree::Streamer to rebuild the list of
active branches.
- Thanks to the above changes and new functions, one can now copy a subset
of a Tree to a new Tree. The subset can be a subset of all events and/or
a subset of the branches. Two example macros (CopyTree and CopyTree2)
have been added to the list of tutorials to illustrate the two cases.
- Several changes in the TEventList class. A TEventList object is a list
of TTree event numbers. A TEventList object can now be automatically
generated by a TTree::Draw (see below). Note that a TEventList object
is automatically added to the list of objects in the current directory.
To get this object from the current directory, use:
TEventList *elist = (TEventList*)gDirectory->Get(list_name);
- Several changes in TTree::Draw and TTree::Scan to activate TEventList
Saving the result of Draw to a TEventList
=========================================
TTree::Draw can be used to fill a TEventList object (list of event numbers)
instead of histogramming one variable (say varexp).
If varexp has the form >>elist , a TEventList object named "elist"
is created in the current directory. elist will contain the list
of event numbers satisfying the current selection.
Example:
tree.Draw(">>yplus","y>0")
will create a TEventList object named "yplus" in the current directory.
In an interactive session, one can type (after TTree::Draw)
yplus.Print("all")
to print the list of event numbers in the list.
By default, the specified event list is reset.
To continue to append data to an existing list, use "+" in front
of the list name;
tree.Draw(">>+yplus","y>0")
will not reset yplus, but will enter the selected events at the end
of the existing list.
Using a TEventList as Input
===========================
Once a TEventList object has been generated, it can be used as input
for TTree::Draw. Use TTree::SetEventList to set the current event list
Example:
TEventList *elist = (TEventList*)gDirectory->Get("yplus");
tree->SetEventList(elist);
tree->Draw("py");
Note: Use tree->SetEventList(0) if you do not want use the list as input.
With this new functionality in TTree::Draw, the old (unimplemented)
function TTree::Select has been deleted.
- New functions TPad::SetTickx, TPad::SetTicky, TPad::GetTickx, TPad::GetTicky.
SetTickx, SetTicky force tick marks to be drawn on the horizontal, vertical
outer axis respectively. The TPad class has two new data members, fTickx, fTicky.
- Protection in TRootIconBox::AddObjItem in case a directory contains
a key corresponding to an object with a missing class definition.
- Mods in TChain constructor. By default add a TChainElement with name="*".
This is necessary for anticipation of a construct like:
chain->setBranchStatus("*",0);
chain->SetBranchStatus("bname",1);
- Merge with Valery version. A few changes in h2root to take into account
the DEC Fortran way of passing cahracter arguments (NT only).
- Change TCutG constructor. last two arguments are now optional.
- Modify TAttAxis::Streamer to take into account the case of old Root files
generated in October 1996 with version 08/05.
- Implement new function TFile::GetVersion. This function returns the Root
version number with which the file was initially created.
- Changes in TH1::PaintLego. When drawing the axis, one could not change
the axis title size in case of lego/surface plots.
(thanks to Rainer Cee for reporting).
- Due to several problems reported under WindowsNT (for example
Postscript output was wrong), we have changed the level of optimization
for C++ from -O2 to -O.
//
// 25/05/1998 20.30.26 by Fons Rademakers
//
- Added new tutorials Dialogs.
- TRegexp added to dictionary (cint_base2).
- TClonesArray::Expand. Shrinking now OK.
- In TMapFile: Correction to acquire/release semaphores.
- In class THtml, functions THtml::WriteHtmlHeader and THtml::WriteHtmlFooter
are declared virtual functions. This gives the possibility to customize the
Root Html output.
- New function TObject::GetIconName. This function can be used to
dynamically select the icon type shown in the browser.
- New function TCollection::SetParent.
- New constructor in TControlBar to control the position of the menu
on the display. This has implied changes in classes TControlBar,
TControlBarImp, TGuiFactory.
//
// 22/05/1998 12.36.14 by Fons Rademakers
//
- TGTextEntry: text change events now also trigger the calling of the
registered command (see TGWidget::SetCommand()).
- TRint: the name and location of the history file (default $HOME/.rootrc)
can now be specified in the .rootrc file (resource Rint.History).
//
// 22/05/1998 10.47.33 by Rene Brun
//
- Implement TProfile::Add, Divide and Multiply functions.
- Modify TGraphErrors constructor. All arguments except the first
are now optional.
- Modify TH1::Scale. This function scales now both contents and errors (if any).
The new function uses internally TH1::Add, but keeps the original
number of entries.
//________________________________________________________________________
//
//::> VERSION 2.00/07 19/05/98 08.15.23
//
//
// 19/05/1998 08.15.23 by Rene Brun
//
- New function TH1::FillRandom(TH1 *hist, Int_t ntimes).
This function can be used to fill this histogram randomly following
the distribution in histogram hist. This new function is valid
for 1-D, 2-D and 3-D histograms.
- Additions to TStyle. The function TStyle::SetLineStyleString accepts
line styles in the range 1->29. Only 4 line styles were supported
by the previous version. The functions TStyle::GetLineStyleString,
TAttLine::Modify have been modified accordingly.
- The corrections introduced in 2.00/06 in TH1 functions to include
underflows and overflows (Add, Multiply, Divide, Integral, FillRandom)
have generated some side-effects in case of TH2 and TH3 objects.
New code should work for all TH1 dimensions. (thanks Goetz Gaycken).
- One more fix in TPostScript::DrawPS function in case of fill area
styles in the range (3000->3025). Histograms with only first bin filled
were not correctly printed with PostScript. (thanks again Peter Wienemann ).
//
// 18/05/1998 21.28.30 by Fons Rademakers
//
- TGPicturePool: picture cash was not working properly.
- TGClient: fRoot is now a TGFrame containing correct size of X11
root window. This is necessary so dialogs can be centered on
the root window, like:
new TGFileDialog(gClient->GetRoot(), gClient->GetRoot(), kFDOpen, &fi);
- TUnixSystem: ExpandPathName was not working properly on AIX.
//________________________________________________________________________
//
//::> VERSION 2.00/06 15/05/98 11.58.22
//
//
// 15/05/1998 10.06.42 by Rene Brun
//
- Fix a memory leak in TClass::Draw. The memory leak was really apparent
when processing a large number of classes with THtml::MakeAll.
- Fix a problem in TBasket::SetWriteMode. When a Tree was filled
in two consecutive sessions, branches with only one basket in memory
had a wrong start offset.
- New function TBasket::SetReadMode. This new function supports
alternate read/fill operations in a TTree in the same session.
- Optimize computation of the default X axis range in TGraph::PaintGraph
in case of log scale.
- One more tiny fix in TPostScript::DrawPS in case of fill areas
with the special fill patterns.
- Changes in TGraph(Int_t n, Float_t *x=0, Float_t *y=0).
The two last parameters are not optional.
//
// 12/05/1998 16.54.18 by Kaori Wada and Kris Hagel
// Cyclotron Institute, Texas A & M University
//
- Kaori has ported ROOT and CINT under VMS including full graphics.
This version is included in the distribution, but a more intensive test
is necessary before announcing this release.
Porting on VMS has required changes in:
- installation procedures ([.] instead of /) in diretory/file names
- Implementation of the new class TVmsSystem.
- mods in functions attach, Getline, keys and mvalloc.
- mods in Rconfig
- several changes in CINT
- $FPROTO and $G__CI
- functions macro, method and shl
Many thanks to Kaori for this hard work. Kaori has been able to
make the relevant changes with a minimum guidance from the Root team.
Many thanks to Kris for his couragous initiative.
//
// 12/05/1998 16.11.53 by Fons Rademakers
//
- TMessage: fix bug in case message contains objects of different classes.
Example: TObjArray containing histograms (thanks Judith Katzy).
- The file $ROOTSYS/tutorials/.rootrc now shows all supported ROOT
environment variables.
- Global gDebug: now int (was bool). When >4 X11 will be in synchronous mode
which will allow better X11 debugging. gdebug is settable via .rootrc,
via interpreter symbol gDebug or via debugger. Setting it via the interpreter
to >4 will not cause synchronous mode because at that stage X11 is already
initialized.
- TCanvas: new environment option Canvas.ShowEventStatus. When true
every canvas will have by default the event status bar shown.
- Imported latest CINT 5.13.52:
5.13.52 5 May 1998
Otofuji-san's feedback,
- , src/Makefile.base.nec fix
G__OLDIMPLEMENTATION820, inherited virtual flag
G__OLDIMPLEMENTATION821, p2f resolution bytecode vs compiled in shl.c
- , G__define_var new_name length, f ( LongListOfArg )
//
// 07/05/1998 14.04.36 by Fons Rademakers
//
- TGScrollbar: fix in scrolling up when clicking in scrollbar above slider.
- TGText: new text handling class in preparation for text editor widget.
- Import of latest CINT 5.13.51:
5.13.50 25 Apr 1998
G__OLDIMPLEMENTATION815, tempate<> class numeric_limits<float> { ... };
G__OLDIMPLEMENTATION816, sizeof( signed char )
G__OLDIMPLEMENTATION817, f() throw() ;
G__OLDIMPLEMENTATION818, template<class T*> A { T a; } A<char*> b;
G__OLDIMPLEMENTATION819, iostream style header with preprocessor
5.13.51 1 May 1998
- , Array index check changed for STL end() in pcode.c
//
// 06/05/1998 20.48.50 by Rene Brun
//
- Changes in TH1::Integral, TH1::Add, TH1::Divide, TH1::Multiply.
The Overflow bin was not taken into account.
(thanks Goetz Gaycken ).
- In h2root, add option "P" in call HROPEN to preserve case
of file name.
- Correct comments in TProfile (thanks Ludger Janauschek).
- Fix a problem in TTree::MakeCode in case of two dimensionnal array with
a variable size first dimension. The second dimension was not generated
in the declaration of the branch/leaf type. (Thanks Pasha Murat)
- Fix a small typo problem in TH1::PaintStat (thanks Mathieu de Naurois)
The default width of the stats box could not be modified.
GetStatH was used instead of GetStatW.
- Include changes from Thomas Hadig in TMinuit::mnplot.
Thomas fixed several problems with the mixture of TString and char
inside this function.
//
// 25/04/1998 14.30.12 by Fons Rademakers
//
- Port to KAI KCC compiler (changes in several decks). Works except
for CINT iostream (expect fix from Masa soon) and no support for
ROOT's new/delete (reported to KAI). Link without ROOT's libNew.so.
- TGListBox: added multiselection option + speed inprovements in item
add and delete. New features can be excercised in $ROOTSYS/test/guitest
(by Reiner Rohlfs).
- TMap: important fix in TMap::Remove() (reported by Reid Rivenburgh).
- Import of latest CINT 5.13.49:
5.13.47 2 Apr 1998
G__OLDIMPLEMENTATION800, load XXX.dll with XXX.[DLLPOST] in MAKEINFO
G__OLDIMPLEMENTATION801, reset G__reftype in G__memvar_setup()
G__OLDIMPLEMENTATION802, #define A 3.14 , A -> 1.1343e-314 bug fix
5.13.48 11 Apr 1998
G__STD_NAMESPACE , ON780 766 676 667, this does not work yet
Scott Snyder's bug report
G__OLDIMPLEMENTATION803, typedef foo<const const int> x;
G__OLDIMPLEMENTATION804, G__library_func() in bytecode, result->ref=0 fix
G__OLDIMPLEMENTATION805, Array index check changed for STL end()
G__OLDIMPLEMENTATION806, throw bytecode turn off, segv
G__OLDIMPLEMENTATION807, reference type global for dictionary generation
G__OLDIMPLEMENTATION808, Eliminate gets in g__cfunc.c for ROOT
5.13.49 18 Apr 1998
G__OLDIMPLEMENTATION809, G__pointer2func recursive call bug fix
G__OLDIMPLEMENTATION810, G__getexpr() a<b<c>> -> a<b<c> >
- , G__stepmode(1) from interactive session bug fix
G__OLDIMPLEMENTATION811,
G__OLDIMPLEMENTATION812, memberfunc template
G__OLDIMPLEMENTATION813, if(i) return x; double x; buf fix
G__OLDIMPLEMENTATION814, new A(g->f(),g->f()); bug fix
//
// 22/04/1998 20.59.13 by Rene Brun
//
- Fix a problem in h2root in case the Hbook ntuple block name include
blank characters (eg 'BLOCK 0').
- Fix a problem in TGraph::PaintGraph. In case of a graph drawn with
the option "F" (Fill area), the last point of the graph was not included
in the fill area.
//________________________________________________________________________
//
//::> VERSION 2.00/05 20/04/98 18.52.58
//
// 20/04/1998 18.24.39 by Fons Rademakers
//
- The default canvas creation function TCanvas::MakeDefCanvas is now
registered as soon as the library containing TCanvas is loaded.
Before this was done in the InitGui routine, which required the initfunc
arguments of the TROOT ctor to be set. So now only linking with libGPad
is enough to get batch mode graphics.
- Class TDatime: new members functions to Set the time. Before the time
was always the time of the creation of the TDatime object.
//
// 17/04/1998 12.04.26 by Rene Brun
//
- Changes in TObject::Dump and TObject::Inspect to show the date/time
instead of the compacted value stored in TDatime.
- A small problem fixed in TPostScript::DrawPS. When an histogram
with only the first channel non-empty was drawn with fill area
style = 3010, the Postscript ouput had some garbage. This garbage was not
visible with Postscript viewers like gs or gv or Ghostview. It was only
visible on the printer. This is in fact a bug in Postcript printers
when printing some fill areas with special patterns.
(thanks to Peter Wienemann for submitting a simple example)
- Correction in g2root (thanks Federico Carminati).
g2root routine toreal had a problem with numbers of the sort 3.33E-8 which
are generated by the HP. In this case the number is written as .000000 by
the write(s1,'(f14.7)')r. The scan starts after the point and skips
backward al the 0's. Result nothing is written in the s string and the
previous number is loaded. This does not happen on linux because numbers
are written as 0.000 and so on...
//________________________________________________________________________
//
//::> VERSION 2.00/04 07/04/98 16.02.38
//
//
// 06/04/1998 13.24.50 by Rene Brun
//
- Corrections from Victor Perevoztchikov <perev@mail.phy.ornl.gov>
to run under SGI IRIX64.
The changes are in installation macros: globals, sourcedir, selectsystem
and install_h2root.
Victor also fixed a problem in CINT/Error.
Many thanks to Victor.
- Bug fixed in TChain::SetBranchAddress
reported by Laurent Aphecetche <aphecetche@ganil.fr>
The correction implied changes in TChain.h and TChainElement.h.
- In TDirectory. Added a protection against directory names including
a slash.
The logic with the special options "ROOT", "FILE" and "MAP" has been
removed. The constructors from TFile, TMapFile and TROOT invokes
the TDirectory default constructor and include the old special logic
of TDirectory.
- in TGraph. Clip correctly the graph when the pad range is smaller
than the TGraph boundaries.
- in TPaveLabel and TPaveText, optimize the estimation of the length
of the strings by taking into account the special Postscript escape
characters.
- Additional protection introduced in TF1::EvalPar in case one executes
a function compiled in a previous session, saved in a file,
read again without providing the original version of the function.
(thanks Carlos Lacasta)
TF1 has two new functions TF1::Save and TF1::GetSave.
TF1::Save is called by functions like TH1::Fit or TGraph::Fit
to store the function values in an array in case of interpreted or
compiled functions. This is necessary to display the shape of the function
in a new session when the original definition of the user-defined function
is not available anymore.
When Painting the function, TF1::EvalPar will automatically call TF1::GetSave
to return the function value from the values saved in a special array
member of the TF1 class.
//
// 06/04/1998 13.24.50 by Fons Rademakers
//
- Support for Linux RedHat version 5 (glibc).
- A few changes in TGSlider.
- New version of CINT introduced (5.13.46 ) from Masa Goto.
5.13.46 1 Apr 1998
G__OLDIMPLEMENTATION794, #include ".." first try where source code exists
G__OLDIMPLEMENTATION795, workaround to ON792 T() -> void*() -> (void*)()
G__OLDIMPLEMENTATION796, void (*p2f[])() = {a,b,c}; bug fix
G__OLDIMPLEMENTATION797, for(;;) { CLS x=init; } bug fix
G__OLDIMPLEMENTATION798, for(;;) { CLS& x=init; } bug fix
G__OLDIMPLEMENTATION799, for(;;) { CLS& x=init; } bug fix bytecode
- , G__check_nonull() G__int(*para) bug fix for SGI
//________________________________________________________________________
//
//::> VERSION 2.00/03 27/03/98 19.02.24
//
//
// 27/03/1998 18.45.21 by Fons Rademakers
//
- TGListBox: can scroll specified item to top of listbox (by Reiner Rohlfs).
- TGToolTip: correctly position tooltip when on edge of screen (by R. Rohlfs).
- TRootCanvas: Menu item SaveAs... now correctly uses specified name.
- TGFrame: remove some compiler warnings.
- Front-end program: Logo stays for at least 4 seconds on screen.
//
// 27/03/1998 09.13.56 by Rene Brun
//
- Fix a problem in TH1::FillRandom. random numbers were offset by 1 bin.
(thanks Andrzej Olszewski).
- New function TH1::SetNormFactor(Float_t factor) to set the histogram
normalization factor.
- TH1::GetIntegral renamed to TH1::Integral to be consistent with TF1::Integral.
- New function THtml::SetEscape(char escape). This function can be used
to specify a escape character in front of characters "<", ">" and "&".
The default escape character is backslash. (thanks Valery)
- in TStyle, the functions TStyle::SetOptFit and TStyle::SetOptStat
have been moved from inline functions to the implementation file.
These functions are commented.
- Protection introduced in TF1::EvalPar in case one executes a function
created with the interpreter in a previous session, saved in a file,
read again without providing the original version of the function.
- Protection in TPad::SaveAs in case the pathname of the output file
is of the form "../dir/file.ps".
- in Tree::Branch (TClonesArray case), do not store the branch in the list
of branches in case the TClonesArray is not split.
Note that in the current implementation a TClonesArray branch must be split.
//________________________________________________________________________
//
//::> VERSION 2.00/02 23/03/98 16.23.28
//
- New version of CINT (version 5.13.45) introduced.
This new version fixes a few problems connected with cout/printf.
- Added ClassDef and ClassImp macros in TMath.h and TStorage.h.
The documentation for these two classes is now generated.
- In TFormula::GetParameter: protection in case of an inconsistent
value of the argument.
- In TCanvas::SaveSource. The code generated in case gStyle->SetScreenFactor
was called was incorrect.
- Cosmetic changes in print in TFitPanel and TFitPanelGraph.
//________________________________________________________________________
//
//::> VERSION 2.00/01 15/03/98 16.47.52
//
//
// 09/03/1998 15.53.49 by Rene Brun & Fons Rademakers
//
A few problems reported with the new GUI have been corrected:
- Protection against fonts non available.
- Library libXpm not available.
- The front-end program "root" is now linked statically with libXpm.a.
- Problem on 64 bit Alpha's has been fixed (segv when using contolbars).
New version of CINT introduced (5.13.44) (Masa Goto)
* 5.13.43 4 Feb 1998
* Scott Snyder's contribution
* G__OLDIMPLEMENTATION766, #define DOOM_STD std::
* Ulli Schwanke's bug report
* G__OLDIMPLEMENTATION767, if(!i%x) bug fix
* Valeri Dorofeev's bug report
* G__OLDIMPLEMENTATION768, func proto overriding bug fix
* ifstream deletion problem fix,
* - , libstrm.cxx malloc(size) -> new(size)
* G__OLDIMPLEMENTATION769, linking undefined class/struct
* Scott Snyder's contribution
* G__OLDIMPLEMENTATION770, namespace nam{class S; A<A<S> > f; }
* G__OLDIMPLEMENTATION771, const
* G__OLDIMPLEMENTATION772,
* G__OLDIMPLEMENTATION773,
* G__OLDIMPLEMENTATION773,
* G__OLDIMPLEMENTATION774,
* G__OLDIMPLEMENTATION775,
* Tetsu Watanabe's feedback
* G__OLDIMPLEMENTATION776, Evaluation of array size decl in bytecode compile
* array size decl as local const still causes problem
* Scott Snyder's contribution
* G__OLDIMPLEMENTATION777, nested template reading and writing to same file
* G__OLDIMPLEMENTATION778, G__instantiate_template() tagnamein -> replacetmpl
* - , +V problem error->warning
* G__OLDIMPLEMENTATION779, decl, reference initialization workaround
* G__OLDIMPLEMENTATION780, opr.c std::
* G__OLDIMPLEMENTATION781, vec<int>a;
*
* 5.13.44 1 Mar 1998
* - , G__search_typename2 exported. bug fix
* G__OLDIMPLEMENTATION782, #pragma include error -> warning
* G__OLDIMPLEMENTATION783, makecint -cc & -cint option added
* G__VARIABLEFPOS , record global variable file position
//________________________________________________________________________
//
//::> VERSION 2.00/00 08/03/98 16.09.16
//
Version 2.00 contains the following important new features:
A - A completely new set of GUI classes
(http://root.cern.ch/root/html/GUI_Index.html).
These new GUI classes provide a full OO GUI framework as opposed to
a simple wrapper around Motif. All GUI elements do their drawing
via the TGXW abstract base class. Depending on the platfrom
where you run ROOT the concrete graphics class (inheriting from TGXW)
is either TGX11 or TGWin32. All GUI widgets are created from
"first principles", i.e. they only use routines like DrawLine,
FillRectangle, CopyPixmap, etc. and therefore the TGX11 implementation
only requires X11 (no more need for Motif, Xt, Xaw, etc.) and the
Xpm library (for color icons). [The libXpm.so library is distributed
with the ROOT libraries in the $ROOTSYS/lib directory.]
Another advantage of this approach is that porting to a new, non
X11/Win32, platform requires only the implementation of an appropriate
version of TGXW (and TSystem for the OS interface).
All GUI classes are now fully scriptable and accessable via the
interpreter. This allows for fast prototyping of widget layouts.
The GUI classes are based on the XClass'95 library written
by Hector Peraza (ftp://mitac11.uia.ac.be/html-test/xclass.html).
The widgets have the well known Win95 look and feel.
All components previously using Motif widgets, like, the Canvas,
Browser, Controlbar, ContextMenu, Method Argument Dialogs, etc.,
have been rewritten using the new widgets.
Except for the automatically generated reference manual, the
documentation of the new GUI is still very sparse. However, to see
how to implement fairly complex GUI's have a look directly at the
source of classes like TRootBrowser, TRootCanvas, TRootDialog, etc.
Also try the test program $ROOTSYS/test/guitest.cxx (make guitest).
This program excercises most of the widgets.
[For the time being, under Windows, the old user interface classes
are still being used.]
The DrawPanel and FitPanel widgets are not yet using the new GUI.
Work is in progress to replace these widgets and to add new ones
exploiting the power of the new classes.
More details about the new GUI classes can be found at:
http://root.cern.ch/root/hepvis98/newgui.html
B - New front-end program that starts the actual interactive program.
The actual interactive program, executable "root" in version 1.xx,
is now called "root.exe". This program is started via a little
front-end program now called "root". From the user's point of view
nothing has changed in this respect. You still start ROOT by typing
"root". The advantage of this little front-end program however is
that it allows the setting of the appropriate LD_LIBRARY_PATH,
SHLIB_PATH or LIB_PATH variables (depending on the platform).
That means that the user only has to define a single shell variable,
ROOTSYS, before using ROOT. Further, since the front-end is very small
it will start quickly and, in case of an error (in the command
line arguments or in opening an X server connection), it will give
feedback directly, without having to wait for the loading of the ROOT
shared libraries. Which could take some time depending if they had
to be read from disk or over the network (AFS/NFS). Finally, it is
this front-end that displays the "splashscreen" while waiting for
"root.exe" to start. The source for the front-end can be found in
ROOTX_rootx.cxx and ROOTX_rootxx.cxx (in the source distribution).
Change the graphics and the module to be executed when you want to
use this front-end to start your own ROOT based standalone application.
C - Enhancement of the TTree/TBranch classes.
On popular demand (especially by people from FermiLab) branches
of TTree objects can now be stored in separate files. This powerful
feature allows for very large TTree's and also for the possibility
of less used branches to be migrated to mass storage (tape, etc.),
while at the same time keeping the rest of the TTree on disk.
Further, multidimensional arrays are now properly supported.
D - New classes THelix and TMarker3DBox.
These classes are interesting in the context of event displays.
E - Support for more style parameters.
More style options can now be managed via the TStyle class.
F - New tool GH2ROOT to automatically generate C++ classes to read and
convert Geant3 hits.
For more information of this powerful migration tool see:
http://root.cern.ch/root/gh2root.html
G - Long list of bug fixes, enhancements and new features:
- All Motif releated classes have been deleted since they have been
obsoleted by the new GUI classes.
- Class TRandom: new algorithm similar to the one in Kernlib implemented.
- Class TFileType has been deleted. The new Browser uses mime types as
specified in the file $ROOTSYS/icons/root.mimes.
- Class TCollection: the garbage collection routine was not reentrant.
This was giving a problem when closing a file in the destructor of
another file. This happens in the new Tree/Branch facility when
branches of a Tree reside on different files.
- Class TAttAxis: new data member fTitleSize and corresponding getter/setter.
The axis title size can be modified via the axis context menu.
- Class TGaxis: implement the new option supporting the title size.
- Class TAxis: a bug has been fixed in TAxis::Streamer. In case a sub-range
was set on the axis, the range was not correctly saved.
- Class TF1: new function TF1::Derivative() to compute the derivative of
a function at one point.
- Class TLego: support for log scales on x,y,z axis.
- Class TMarker: fix a memory leak in function DisplayMarkerTypes().
The local marker object and text object were not deleted when closing
the canvas showing the marker types.
- Class TPaveLabel: support for changing text alignment added.
- Class TPaveText: support for changing text alignment added.
- Class TPolyLine: function GetPolyLine() had an incorrect parameter type.
- Class TPolyMarker: function GetPolyMarker had an incorrect parameter type.
- Class TStyle: new data members fCanvasDefH and fCanvasDefW + corresponding
getters/setters. SetCanvasDefH,W can be used to define the default canvas
size. In addition, several parameters defined in a style are now taken
into account in several classes, like TH1, TCanvas and TGraph.
- Class TText: new function SetNDC.
By default, the text is drawn in the pad coordinates system.
One can draw in NDC coordinates [0,1] if the function SetNDC()
is called for a TText object.
- Class TCanvas: the default canvas constructor uses the size of the canvas
as defined by the current style (TStyle::SetCanvasDefH()).
The bottom, top, left and right margin defined in TStyle::SetBottomMargin,
etc. are active in creating the default pad in a canvas.
- Class THelix: new class implemented by Ping Yeh from the AMS collaboration.
- Class TMarker3DBox: new class, a special 3-D marker designed for event
display. It has the following parameters:
fX; X coordinate of the center of the box
fY; Y coordinate of the center of the box
fZ; Z coordinate of the center of the box
fDx; half length in X
fDy; half length in Y
fDz; half length in Z
fTheta; Angle of box z axis with respect to main Z axis
fPhi; Angle of box x axis with respect to main Xaxis
fRefObject; A reference to an object
- Class TTube: implement member function SetNumberOfDivisions().
- Class TH1: in TH1::Fit() and H1FitChisquare(). In case a fit range was
specified, the function was using the overflow bin. The chisquare value
was strongly dependent on the content of this bin.
When drawing the axis titles, the label font and axis title size are used
in the temporary TGaxis object.
In TH1::PaintScatterPlot(), a protection has been introduced to avoid
plotting a too large number of dots in one cell.
- Classes TH1C, TH1S: implement functions AddBinContent(). This function
is a redefinition of TH1::AddBinContent(). A bin content is not
incremented when the new bin value is bigger than the bin capacity (to
avoid negative bin contents).
- Class TBasket: in function SetWriteMode(), do not create the array of
event offsets. Support introduced for branches residing on different files.
- Class TBranch: new function SetFile(), see below:
void TBranch::SetFile(const char *fname)
Set file where this branch writes/reads its buffers.
By default the branch buffers reside in the file where the Tree was
created. Branches of the same Tree may be in different files.
The ROOT file will be connected only when the branch is accessed.
If called by TBranch::Fill() (via TBasket::WriteFile()), the file
will be created with the option "recreate".
If called by TBranch::GetEvent() (via TBranch::GetBasket()), the file
will be open in read-only mode. To open a file in "update" mode,
explicitely use TBranch::SetFile(TFile *file).
- Class TBranchObject: reimplement function SetBasketSize().
- Class TChain: memory leak problem solved. When deletting a chain, the
files and Trees referenced by the chain were not deleted.
- Class TLeaf: modify function GetLeafCounter() to support the case of
multidimensional arrays. Previous version was limited to 2 dimensions.
Reimplement function ResetAddress(). In case of a function generated by
TTree::MakeCode(), the leaf addresses for 2-d arrays were not correctly
set. Similar changes in subclasses TLeafB, TLeafC, TLeafD, TLeafF,
TLeafI and TLeafS.
- Class TTree: support for branches residing in different files introduced.
By default a branch is stored in the same file as where the Tree has
been created. One can use TBranch::SetFile() to specify the name of a
file where a branch should be written.
Writing a branch to a different file is interesting in case one plans
to write huge Trees that cannot fit completly on disk. In that case,
it migth be advantagous to write some branches on separate disk files
that can then be stored on tape.
Using a Tree that references branches that are stored on separate
files, the branch files will be automatically opened only when
the branch is accessed.
- The format of TTree::Print() and TBranch::Print() is more economical,
only 2 lines per branch are printed. Each line is <72 characters.
- Class TTreeFormula: changes to support multidimensional arrays.
- Class TPostscript: one can now generate an EPS file from a single pad.
In previous versions, one could only print a complete canvas.
- ZIP package: global functions and variables have R__ prepended to avoid
conflict with other packages (XDR in particular).
- The source has been cleaned, removing unused variables. Code compiles
under the KAI compiler.
- In Tutorials, new tutorials dirs.C and gerrors2.C
- Conversion program h2root. A few protections added.
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.