https://github.com/root-project/root
Tip revision: 240159a4d51a78c4c9e6b34f1809285b7355ba28 authored by Unknown Author on 07 June 2006, 09:10:54 UTC
This commit was manufactured by cvs2svn to create tag 'v5-11-06'.
This commit was manufactured by cvs2svn to create tag 'v5-11-06'.
Tip revision: 240159a
ChangeLog-2-24
//________________________________________________________________________
//
//::> VERSION 2.24/05 16/05/2000 16.07.27
//
//
// 16/05/2000 16.03.14 by Rene Brun
//
- This version should be the last version maintained with CMZ.
Next version will be maintained by CVS.
- Modify TF1::IntegralMultiple. The maximum number of points maxpts
has been increased to improve the result. Thanks Regis Terrier.
//
// 16/05/2000 12.04.12 by Fons Rademakers
//
- THtml: fix in way pathnames of source files are found. If pathname
contains a path (i.e. / (or \ on win32)) then after prepending a
source dir prefix this file is looked for. If not found the path
is stripped off and the source search path is used (old behaviour).
//
// 16/05/2000 11.58.00 by Masaharu Goto
//
* 5.14.38 5 May 2000
*-1306, ctor call for class object as static data member, t377.cxx, t380.cxx
* 1307, global namespace, using directive and function call, t382.h/cxx
* 1308, pointer to reference conversion bug fix, t383.cxx
* 1309, #pragma link C++ function A::B(); t384.h
* 1310, f(int (**)()); t385.h
* 1311, namespace{class{enum{}}} bug fix, t386.h
* 1312, N::A a; N::f(a); f(a); 3.4.2, t387.cxx, review needed
* 1313, #pragma link C++ function A::B(); with function template, t384.h
* 1314, Assume CINTSYSDIR from GetModuleFileName(),Win32
//
// 15/05/2000 23.20.31 by Rene Brun
//
- Add a new parameter nentries to TChain::Add
void TChain::Add(const char *name, Int_t nentries=-1)
if nentries < 0, the file is connected and the tree header read in memory
to get the number of entries.
if (nentries >= 0, the file is not connected, nentries is assumed to be
the number of entries in the file. In this case, no check is made that
the file exists and the Tree existing in the file. This second mode
is interesting in case the number of entries in the file is already stored
in a run data base for example.
- Add a new branch constructor to TTree:
Int_t Branch(TList *list, Int_t bufsize=32000);
This new function creates one branch for each element in the list.
Two cases are supported:
list[i] is a TObject*: a TBranchObject is created with a branch name
being the name of the object.
list[i] is a TClonesArray*: A TBranchClones is created.
if list[i]->TestBit(TClonesArray::kNoSplit) is 1, the TClonesArray
is not split.
if list[i]->TestBit(TClonesArray::kForgetBits) is 1 and the TClonesArray
is split, then no branches are created for the fBits and fUniqueID
of the TObject part of the class referenced by the TClonesArray.
The function returns the total number of branches created.
- Add a new member function in class TObjLink.
TObject **GetObjectRef()
The function returns the address of the object referenced by TObjLink.
This new function was necessary for the implementation of the new TTree::Branch
constructor described above.
- Modify TBranchClones constructor to add a new parameter splitlevel.
Modify TTree::Branch for TClonesArray to not create branches for the TObject
part (fBits and fUniqueID) if the splitlevel is > 1.
- Add new enum list in TClonesArray.h. The following options are defined:
enum {
kForgetBits = BIT(0), // Do not create branches for fBits, fUniqueID
kNoSplit = BIT(1) // array not split by TTree::Branch
};
- A few changes from Damir Buskulic and Jiri Masik for Linuxppc in
rootd, root daemon, proofd and Makefile.linuxdeb2.
- Extend kMAXFOUND from 50 to 200 in TFormula.
The previous value of 50 was a bit short when TFormula is used by TTreeFormula
and many cuts are defined.
- Modify TTreePlayer::MakeClass to change the name of the variable for the loop
index from j to jentry.
- Merge with Fons and Valery's versions
//
// 13/05/2000 18.56.36 by Rene Brun
//
- Mods in TTreePlayer::MakeCode when generating the pointer name in case
of a TBranchObject.
//
// 11/05/2000 16.11.27 by Fons Rademakers
//
- TBranch: fEntryBuffer was not initialized.
- vvector: corrected a test case.
//
// 11/05/2000 07.20.41 by Rene Brun
//
- protection added in TBranchClones constructor in case the Tree is created
in memory (no file open) (thanks Gene Van Buren).
- Merge with Valery's version of May10.
- Add two fixes reported by Masa in CINT_Infunc.
- Add minor changes reported by Damir Buskiluc when compiling with gcc 2.05
under ppcLinux.
- fix some problems with strings (backslask escaping ") in some strings
in tutorials Ifit and Shared.
//
// 09/05/2000 19.40.35 by Fons Rademakers
//
- tutorials/rootalias.C: use gSystem->GetName() to distinguish
between unix and win32 (instead of cmz +IF conditionals).
//
// 08/05/2000 19.40.35 by Fons Rademakers
//
- TGMimeTypes: fixed win32 case.
- TFormula: introduced #pragma for win32 case.
- TTUBE, TTUBS: #ifdef's cleaned up.
//
// 07/05/2000 17.11.56 by Fons Rademakers
//
- New abstract class TInspectorImp. This interface class is used
via the TGuiFactories to create and object inspector window. Currently
this is only used for the Win32 implementation (the X11 version uses
a normal TCanvas). The introduction was needed to remove the last
Win32 graphics dependency from TWinNTSystem (to be able to build
libCore.dll seperately from libWin32.dll). For the introduction of this
class changes were made in: TObject, TSystem, TWinNTSystem, TGuiFactory,
and TWin32GuiFactory.
- rootcint: fix for Win32.
- TGToolTip: corrected comments.
//________________________________________________________________________
//
//::> VERSION 2.24/04 05/05/2000 14.08.29
//
//
// 05/05/2000 12.58.00 by Masaharu Goto
//
* 5.14.36 9 Apr 2000
* - , minor fix in VC++ and BC++ setup
* - , turned on G__CONSTNESSFLAG
* 1293, bug fix to 1290, risk3, t364.cxx
* 1294, SetGlobalcomp() changed by Philippe Canal
* - , G__STRUCTPVAR -> divided as 1.2 due to size reason
* - , ifunc.c C++ comment error
* 1295, G__free_friendtag() problem only with rootcint,,
* 1296, static member in nested class, t370.cxx, risk3
* 1297, nested ClassDef,
* 1298, ImplFileLine support
*
* 5.14.37 29 Apr 2000
* 1299, overload matching for pointer to function, t373.cxx
* 1300, Check $LINES, $COLUMNS for G__more_pause(), risk1
* 1301, Bug fix for PHIL0, null fp, t372.h, risk3
* - , DataMbr.h/cxx, errno -> errnum fix
* 1302, 1290 bug fix, infinit loop, t376.cxx
* 1303, bug fix from Philippe Canal,
* 1304, workaround for Philippe's problem, bad3.cxx, t377.cxx
* 1305, Win32, ifstream::open(), t375.cxx, bug fix
//
// 05/05/2000 09.42.44 by Rene Brun
//
- Implement support for operator "*" in TCut. File Tree_LinkDef modified.
Examples of use:
Root > TCut c1 = "x<1"
Root > TCut c2 = "y<0"
Root > TCut c3 = c1&&c2
Root > ntuple.Draw("x", c1)
Root > ntuple.Draw("x", c1||"x>0")
Root > ntuple.Draw("x", c1&&c2)
Root > ntuple.Draw("x", "(x+y)"*(c1&&c2))
//________________________________________________________________________
//
//::> VERSION 2.24/03 04/05/2000 08.40.02
//
//
// 04/05/2000 8.48.59 by Rene Brun
//
- minor typos fixed.
- Rename global functions H() to R__H().
//
// 03/05/2000 08.13.47 by Rene Brun
//
- Import latest version from Fons and implement a few changes from Philippe
in BASE_System and CINT_loadfile.
//
// 03/05/2000 01.35.47 by Philippe Canal
//
- Addition of a new option for TSystem::CompileMacro and Change in
Semantic of the '+' and '++' options for .L, .x and .X.
Both .L MyFunc.C++ and .L MyFunc.C+ now keep the shared library at the
end of the ROOT session.
If the shared library already exist, .L MyFunc.C+ will only recompile it
if the macro file is newer than the shared library. However it does not
detect whether any of the files included by the macro has been changed
more recently than the shared library.
.L MyFunc.C++ always recompiles the shared library.
TSystem::CompileMacro(const char *filename, Option_t * opt)
The second argument can now be any combination of the letter 'k' and 'f'
with the following meaning:
k : keep the shared library after the session end.
f : force recompilation.
//
// 02/05/2000 19.15.59 by Rene Brun
//
- Merge with latest versions from Philippe and valery.
//
// 02/05/2000 19.01.23 by Philippe Canal
//
- The macro ClassDef and ClassImp have been upgraded to be able to handle
classes inside namespaces and to handle nested classes (classes defined
inside other classes).
In order to use this upgrade, you just have to enclose your class inside
a namespace and to make sure that the ClassImp macro is also used inside
the same namespace:
#include "TObject.h"
namespace MyProject {
class MyClass : public TObject {
public:
MyClass();
int Loop();
ClassDef( MyClass, 1 ) // This is a class inside a namespace
};
};
And in the implementation file
#include "MyClass.h"
namespace MyProject {
ClassImp( MyClass )
MyClass::MyClass() {
// Body of the constructor
}
int MyClass::Loop() {
// Body of the Loop
}
};
Once this is done, when refering in root to this class using a string
(for example to define a TClonesArrays, a Branch in a Tree, or on the
root prompt), you have to always use the fully qualified name. There
isn't yet an equivalent to 'using namespace MyProject;' for ROOT.
For example to define a TClonesArray of MyClass objects:
TClonesArray * o = new TClonesArray("MyProject::MyClass");
IMPORTANT WARNING:
This change is only transparent for classes for which a dictionary is
produced! If you need to use a class with ClassDef and ClassImp but do
NOT want to generate a dictionary file for it, you HAVE TO use the macro
ClassImp2 instead of ClassImp! In our example above you would write in
the implementation file:
#include "MyClass.h"
namespace MyProject {
ClassImp2(MyProject, MyClass )
MyClass::MyClass() {
// Body of the constructor
}
int MyClass::Loop() {
// Body of the Loop
}
};
If your classes do not belong to a namespace just omit the first
argument:
#include "MyClass_not_in_namespace.h"
ClassImp2(,MyClass_not_in_namespace)
MyClass_not_in_namespace::MyClass_not_in_namespace() {
// Body of the constructor
}
int MyClass_not_in_namespace::Loop() {
// Body of the Loop
}
IMPORTANT WARNING 2:
ClassDef and ClassImp for namespaces and nested classes is
NOT yet fully implemented for templated classes.
//
// 02/05/2000 08.40.13 by Rene Brun
//
- Add a new static function to class TH1.
static void AddDirectory(Bool_t add=kTRUE)
By default (fAddDirectory = kTRUE), histograms are automatically added
to the list of objects in memory.
Note that an histogram can be removed from its support directory
by calling h->SetDirectory(0) or h->SetDirectory(dir) to add it
to the list of objects in the directory dir.
//
// 01/05/2000 22.08.01 by Rene Brun
//
- Activate option DATE in TStyle:
New data members, fDateX, fDateY and fAttDate.
New member functions SetDateX, SetDateY, GetAttDate.
void TStyle::SetOptDate(Int_t mode)
if mode is non null, the current date/time will be printed in the canvas.
The position of the date string can be controlled by:
mode = 1 (default) date is printed in the bottom/left corner.
mode = 2 date is printed in the bottom/right corner.
mode = 3 date is printed in the top/right corner.
The date position can also be controlled by:
gStyle->SetDateX(x); x in NDC
gStyle->SetDateY(y); y in NDC
The date text attributes can be changed with:
gStyle->GetAttDate()->SetTextFont(font=62);
gStyle->GetAttDate()->SetTextSize(size=0.025);
gStyle->GetAttDate()->SetTextAngle(angle=0);
gStyle->GetAttDate()->SetTextAlign(align=11);
gStyle->GetAttDate()->SetTextColor(color=1);
The current date attributes can be obtained via:
gStyle->GetAttDate()->GetTextxxxx();
When the date option is active, a text object is created when the pad
paint its list of primitives. The text object is named "DATE".
The DATE attributes can also be edited interactively (position
and attributes) via the normal context menu.
//
// 30/04/2000 10.16.21 by Rene Brun
//
- Change name of variable errno to errn in DataMbr.h and in
G__DataMemberInfo::ValidArrayIndex. errno is a reserved keyword.
Problem was apparent with VC++ and AIX/xlC.
- Comment most ClassDef & ClassImp in WIN32 directory. A side-effect
of the changes in the ClassDef/ClassImp macros forces the dictionary
for all classes including these macros.
//
// 29/04/2000 12.37.58 by Rene Brun
//
- Add new member functions in TGeometry and TNode to transform master
to local coordinate system(thanks to Robert Hatcher).
TGeometry/TNode provided Local2Master coordinate transformations, but not
the reverse. In case of some data of object positions in global coordinates
but trying to build a truly hierarchical structure (thus the need for
"placement" relative to local coordinates) this was an impediment.
void TGeometry::Master2Local(Double_t *master, Double_t *local);
void TGeometry::Master2Local(Float_t *master, Float_t *local);
void TNode::Master2Local(Double_t *master, Double_t *local);
void TNode::Master2Local(Float_t *master, Float_t *local);
- Add fix from Masa in CINT_ifunc.c to appear in CINT 5.14.37.
This fix a problem with function overloading. the same code can now
be used with the compiler or the interpreter when calling TF1 functions.
- Modify test program stress to take advantage of the changes in CINT_ifunc.
- Modify h2root to support boolean data types from Hbook. Instead of using
unsigned integers, the new code uses unsigned chars.
- Modify print format in TTree::Show in case of a TLeafB. print up
to 10 variables on the same line.
//
// 28/04/2000 18.17.48 by Rene Brun
//
- Remove a limitation in THistPainter::PaintAxis preventing to set
a negative number of divisions on the Y axis. A negative number of divisions
may be specified to force a precise number of primary divisions on an axis.
- Implement support for regular expressions in TDirectory::Delete.
One can now do gDirectory->Delete("foo*")
- Modify TROOT::ls to call TDirectory::ls
- in TCutG constructor, remove a possible TCutG with the same name
in the list of special objects. stress7 can now be executed more than once.
- Add compiler option -Wp,-H10000 to the list of CINT compiler options
for HP-UC CC compiler to prevent a limitation of CC when compiling CINT_var.
- Change tolerance in stress/stress16 from 10 bytes to 20 bytes.
//
// 28/04/2000 16.58.41 by Fons Rademakers
//
- TGTextEntry: fix in SetFont() to correctly modify the graphics
contexts. Before SetFont() changed the default GC used by many
widgets.
- guitest.cxx: show example for TGTextEntry::SetFont.
- TROOT: use preprocessor symbols __DATE__ and __TIME__ to get
the date/time of compilation instead of CMZ symbols in preparation
of move to CVS.
//
// 27/04/2000 15.54.53 by Rene Brun
//
- Modify test program stress/stress1 to be able to run it with CINT.
- Modify code generated by TTreePlayer::MakeClass to generate special code
for TChains. Also generate new member function Cut.
- Changes in TH2, TH3, TProfile2D include files to avoid warning messages
under AIX and HP-UX.
- Modify CINT function IFUNC to avoid a compiler problkem under AIX.
the C function IFUNC contained a C++ style comment.
- Merge with Fons and Philippe's versions.
//
// 26/04/2000 12.15.54 by Fons Rademakers
//
- TObjArray: IsEmpty() correctly returns kTRUE in case TObjArray
is empty (idem for TClonesArray).
- rootcint: mods by Philippe for support of namespaces.
- Rtypes.h: mods in the ClassDef and ClassImp macros for namespace
support.
//
// 25/04/2000 17.56.34 by Rene Brun
//
- Merge with Philippe Canal's version.
- Implement support for branches with names ending with "."
in TTree::MakeClass.
//
// 25/04/2000 15.13.17 by Philippe Canal
//
Phillippe implemented a way for the user to fill a tree directly from a
TBuffer or TMessage;
This only work for branches that contain a non-split object.
Using this features makes the files non-readable by previous version of
root (2.24/02 and below).
To use this features, you need to have something like:
TBuffer * pointerToMyBuffer;
.....
myBranch->SetBufferAddress( pointerToMyBuffer );
And when myTree->Fill() is called, the data is copied from MyBuffer.
The amount of data copied is determined either by the current offset of
the buffer if it is not null or by the maximum size of the buffer.
Here are three valid usages examples
1. TBuffer * buf = new TBuffer(TBuffer::kWrite, bufsize);
branch->SetBufferAddress(buf);
buf->Reset();
buf->SetWriteMode();
event->Streamer(*buf);
buf->SetReadMode();
tree->Fill();
2. TBuffer * buf = new TBuffer(TBuffer::kWrite, bufsize);
branch->SetBufferAddress(buf);
char * data;
int nbyte = Copy_Data_From_Somewhere(data);
buf->SetBuffer(data,nbytes);
tree->Fill();
3. TMessage *mess;
Int_t messlen;
do {
messlen = s->Recv(mess);
} while ( messlen == 0 );
branch->SetBufferAddress(mess);
tree->Fill()
The extra information needed to correctly read the file created using this
features is stored at the end of each basket (using this features) just
after the array containing the entries offset within the basket.
//
// 23/04/2000 22.30.47 by Rene Brun
//
- Fix a problem in TBranchObject::SetAddress in case of a branchobject
in split mode and the branch name is of the forme "name." and one of
the sub branches members is a TClonesArray. The TClonesArray branch name
was not correctly encoded. Solution was to use the same logic already
used for other data member types.
(thanks Christian Holm Christensen for reporting this problem)
- Sasha Vanyashin has reduced further the byte swapping overhead on linux
by introducing asm routines bswapcpy32 and bswapcpy16 (similar to memcpy)
in TBuffer.
//
// 21/04/2000 21.54.54 by Rene Brun
//
- Fix a bug in TH2::FillRandom and TH3FillRandom. These functions were
correct only in the case where the x range and the y range were identical.
(thanks Laurent APHECETCHE).
- Implement support for histogram min/max in TLego::SurfaceFunction.
With this change, one can now do TH1::Draw("surf") on a histogram
where a min/max have been specified.
//
// 19/04/2000 18.32.19 by Fons Rademakers
//
- TPad: fix in Print() so a pad can be saved to gif, before
the complete canvas was always saved.
//
// 19/04/2000 11.24.25 by Rene Brun
//
- In TBranchClones::GetEntry, add a statement to clear the TClonesArray
before reading a new event. In case of split mode, the number of entries
in the array was not updated (thanks Thorsten Glebe for reporting).
- Merge with Valery's version.
This includes a protection in the THtml class and a new version
of the STAR classes.
//
// 18/04/2000 17.45.49 by Fons Rademakers
//
- Changes in several files related to the imminent move to CVS.
//
// 18/04/2000 10.36.20 by Rene Brun
//
- Activate option to write a TClonesArray in non-split mode
in TTree::Branch (TClonesArray flavour).
- Add a new tutorials tcl.C. This tutorial illustrate how to use a
TClonesArray in various mode: split, no-split.
The tutorials also shows how to run with the interpreter or
the script compiler.
//
// 16/04/2000 23.08.00 by Rene Brun
//
- Optimize code in TBasket, TBranch and TBuffer. Several functions declared
non virtual.
- In TRootBrowser::IconBoxAction Chdir has to been called after
obj->Browse because Browse assume that the current directory is the
one where to find the object while Chdir actually change the directory.
(from Philippe Canal).
- New class TProfile2D (2-dim profile histograms).
Same functionality as class TProfile for 1-dim histograms.
- Optimize TArrayC,S,I,F,L,D replacing implicit loop to set array
elements to 0 by a call to memset.
//
// 15/04/2000 19.07.24 by Rene Brun
//
- IMPORTANT ADDITION TO THE HISTOGRAMING PACKAGE
==============================================
Two new global functions have been added to TH1.h
TH1 *R__H(Int_t hid);
TH1 *R__H(const char *hname);
The first function R__H returns a pointer to a histogram with a name
corresponding to the encoding of "h" and the integer hid.
For example, if the histogram with name "h23" exists in the current
directory (either memory or disk), R__H(23) returns a pointer to
this histogram. if hid is a negative integer (eg -23), R__H(-23) returns
a pointer to the histogram with name "h_23".
The second function H returns a pointer to the histogram with name hname.
eg: R__H("h23").
The main advantage of these two functions is that they can be called
anywhere in the user's code without using global pointers for each
histogram.
These two functions provide also an easier access to histograms converted
from Hbook files.
These functions have however a severe performance penalty.
Using R__H(10)->Fill(x) is on average 6 times slower than h->Fill(x) !
R__H(const char *hname) finds the address of the histogram hname in
the hashlist of objects in memory corresponding to the current file.
If no object is found in memory, hname is searched in the list of objects
in the current directory on disk.
R__H(Int_t hid) converts hid into hname and then proceeds like R__H(const char *hname).
//
// 15/04/2000 11.58.37 by Philippe Canal
//
- Some files similar to those produced by h2root, can have simple
type AND branches that contain more than one leaf and have no reason to
contain a leaf with the same name. Those files currently core dumps the
TChain::Merge mechanism because the fill address of the new tree is not reset
properly after a change of file.
//
// 14/04/2000 12.24.20 by Rene Brun
//
- Rename functions in TPaveStats;
GetFormatFit -----> GetFitFormat
GetFormatStat -----> GetStatFormat
SetFormatFit -----> SetFitFormat
SetFormatStat -----> SetStatFormat
The TPaveStats fFitFormat and fStatFormat are now initialized
from the TStyle permanent parameters.
- New functions in TStyle:
GetFitFormat, GetStatFormat, SetFitFormat, SetStatFormat
- Introduce a new function in TProfile:
TH1D *TProfile::ProjectionX(const char* name="_px", const char *option="e")
Similarly to TH2::ProjectionX, this new function fills the profile projection
along X. It creates a TH1D histogram. if the option "e" is specified
the histogram has the profile error bars.
- Add new static functions in TVirtualFitter:
TVirtualFitter::SetMaxIterations(Int_t maxiter=5000);
TVirtualFitter::SetPrecision(Double_t prec=1e-6);
TVirtualFitter::GetMaxIterations();
TVirtualFitter::GetPrecision();
The SetPrecision function can be used to set a fit relative_precision.
The default value for relative_precision is 1e-6.
- TH1::Fit and TGraph::Fit have been modified to take advantage of
the new TVirtualFitter functions. Because TMinuit precision is an absolute
precision, an estimation of the final sum of squares of residuals (sumw2)
is computed in these two functions. The precision requested from TMinuit
is sumw2*relative_precision. The new algorithm should give in general
a better fit precision.
- Minor change in TBtInnerNode constructor to bypass a compiler bug
with gcc2.95 (thanks Matthew D. Langston).
//
// 14/04/2000 11.48.54 by Fons Rademakers
//
TExMap: implemented Streamer().
//
// 13/04/2000 19.19.49 by Rene Brun
//
- Modify AA_ARCHS to add one line for solarisgcc.
- Modify TH1::Copy to set the TAxis parents.
- Add missing file basic.dat in $ROOTSYS/tutorials.
- Modify tutorial exec1.C. logic was broken since the changes in gPad.
- In RConfig.h, define __i486__ only if not already defined. This is to avoid
a long list of warnings on Debian systems.
- Modify the comments in class TButton example. add missing backslash
in front of ".
- Improvement in TTreePlayer::Scan (thanks Jiri Masik).
When one scans a tree and interrupts it via q key and <CR>,
the q is read by getchar but the <CR> remains unread in the stream.
Any subsequent Scan scrolls two screens without prompting as the new
getchar is reading the last <CR>.
//________________________________________________________________________
//
//::> VERSION 2.24/02 07/04/2000 08.52.32
//
//
// 07/04/2000 08.45.56 by Rene Brun
//
- Merge with Fons and Valery's latest versions.
//
// 06/04/2000 16.06.22 by Fons Rademakers
//
- TDatime: new ctor taking a SQL compatible time string.
- TEnv: made most member functions virtual to allow overriding.
Also a fix in GetValue() to correctly return negative integers.
- TStopWatch: made the new Counter() an const inline function.
- TRootEmbeddedCanvas: extension to allow the embedding of a custom,
TCanvas derived, canvas. See ctor for extensive example.
- rootcint: small cleanup of Philippe's code.
- TRint: added a noLogo arg to ctor. Setting it to kTRUE will not
print the standard logo. This allows for custom a logo in a TRint
derived class.
- TGLBContainer: InsertEntry() now correctly inserts a new entry at the
head of the list if the parameter afterID is set to -1. Fix by
Reiner Rohlfs.
- TUnixSystem: in dtor reset signals to handlers that were active
before the TUnixSystem object was created. This was needed in an
app that also uses Oracle OCI. Fix provided by Fedor Ratnikov.
- TClonesArray: made several method virtual and made the data members
protected. Denis Bertini (Hades/GSI).
- TObjArray: made the datamembers protected. Denis Bertini (Hades/GSI).
- importcint: updated CINT import macro for new STL includes.
//
// 06/04/2000 13.23.49 by Valery Fine(fine@bnl.gov)
//
- WinNTSystem::DirName - bug fixed (Thanks V.Onuchin)
- ZIP inflate function Writedata: logic has been modified
//
// 05/04/2000 08.36.47 by Rene Brun
//
- Fix a problem in TH2::ProfileY (thanks Gerco Onderwater).
When creating a profile along the y-axis from a 2D histo, the number of bins
in the profile are incorrect (as a matter of fact, the number of bins on the
x-axis of the original 2d histo is used).
- Remove a memory leak in TCint::UpdateListOfTypes.
The leak was apparent when running the THtml class.
- Implement new function "fmod" in TFormula and TTreeFormula.
one can do: t.Draw("x","fmod(y,0.5)>0.2")
- Protection added in TLeafObject::GetMethodCall (thanks Philippe Canal).
a TMethodCall was created by passing a null pointer as argument. However
the code from this constructor (and/or functions called from within) assumes
an argument list.
//
// 04/04/2000 15.07.50 by Rene Brun
//
- A small change in TPostScript::Initialize (Thanks Olivier Couet).
When including ps or eps files in PowerPoint, some horizonthal lines
were appearing in the picture. This problem is due to a bug in PowerPoint
that does always closes all the open paths. To circumvent this problem,
an additional "newpath" statement is now generated when opening
a new picture.
//
// 03/04/2000 12.44.10 by Rene Brun
//
- Add new tutorial gaxis.C
- Fix a problem in THistPainter::PaintInit in case of log scale along X.
Must check that the selected last bin is not greater than the number of bins.
Problem was apparent in case of variable bin size histograms.
- Merge with Valery's version. This version fixes a problem in TPGON::FillTableOfCoSin
Protections in TWinNtSystem and TTabCom.
//________________________________________________________________________
//
//::> VERSION 2.24/01 31/03/2000 12.19.07
//
//
// 31/03/2000 12.11.55 by Rene Brun
//
- The following functions from the ZIP package have been renamed to avoid
clashes between ROOT and external packages using modified versions of
the original ZIP package. The old names are now prefixed with R__.
(thanks to Ursula Berthon to help understanding the problem).
This is the new list of the ZIP functions:
R__ReadByte
R__WriteData
R__build_bl_tree
R__build_tree
R__compress_block
R__fill_window
R__flush_outbuf
R__gen_bitlen
R__gen_codes
R__init_block
R__longest_match
R__pqdownheap
R__scan_tree
R__send_all_trees
R__send_tree
R__set_file_type
- Implement TEventList::SetName. TEventList is a TNamed.
TNamed::SetName must be overloaded in TEventList because TEventList objects
like TH1s and TTrees are inserted into a THashList. Changing the name
of one of these objects implies recomputing the hashlist.
- Merge with Valery's version.
Valery has introduced a new function TStopwatch::Counter counting
the number of start/stops.
Cleanup of STAR code to follow the ROOT coding style.
//
// 28/03/2000 12.39.19 by Rene Brun
//
- Improve functions TPolyMarker3D::PaintH3 and TMarker3DBox::PaintH3
to take into account the current axis ranges (set via TAxis::SetRange).
- minor change in tutorial graph.C. Add the statement c1->Modified() at
the end of the macro.
- Slight modification (Philippe Canal) in the destructor for TClass to avoid
accessing deleted memory.
Sometime ago the TList destructor was changed from strictly not deleting
the object it is holding to checking via GetObject()->TestBit(kCanDelete)
if it should delete the object or not. The consequence is that while
deleting fAllPubMethod and fAllPubData, eventhough it was not deleting the
object a second time, it was still accessing them. Thus the deletion of
these two list have to be done before the deletion of the objects in it.
- Modify TGraph::GetXaxis and GetYaxis to use TGraph::GetHistogram
rather than fHistogram.
- Modify the globals kumac for KCC on SGI, removing --no-exceptions.
same change in the makefile and root-config.
- Add new macro hadd.C in the list of tutorials. This macro can be used
to merge histogram files.
//
// 23/03/2000 09.59.30 by Rene Brun
//
- Minor change in root-config for HP-UX CC compiler. +Z option added
in the list of compiler options.
- The following set of Bessel functions has been added in class TMath.
origin from Nick van Eijndhoven and based on Numerical Recipes.
Double_t BesselI(Int_t n,Double_t x); // Compute integer order modified Bessel function I_n(x)
Double_t BesselK(Int_t n,Double_t x); // Compute integer order modified Bessel function K_n(x)
Double_t BesselI0(Double_t x); // Compute modified Bessel function I_0(x)
Double_t BesselK0(Double_t x); // Compute modified Bessel function K_0(x)
Double_t BesselI1(Double_t x); // Compute modified Bessel function I_1(x)
Double_t BesselK1(Double_t x); // Compute modified Bessel function K_1(x)
- Bug corrected in TH3::Project3D. When looping on the bins, the current
value for the bin error was obtained after filling the bin. It should be
obtained before filling the bin. (Thanks Angela Biselli for reporting).
//
// 21/03/2000 11.07.07 by Rene Brun
//
- Modify TFile::Init to read the file title. The file title was written
to the file but never read in when the file was reconnected.
//
// 20/03/2000 10.26.46 by Rene Brun
//
- Fix code generation in TTreePlayer::MakeClass and MakeCode in case
of variable length two dim arrays (Thanks Philippe Canal).
- Protection in TF1::GetRandom (when the parabola becomes flat).
Thanks Federico Carminati.
- Add library -lnsl in installation of h2root, g2root for Linux.
This is required on RH6.1 with the new version of CERNLIB.
- Add possibility to close a TCutG with a double click in TPad::createNewPolyLine
- Merge with valery's version including changes for TPadView3D (moved to BASE)
//
// 16/03/2000 08.11.07 by Rene Brun
//
- In TMinuit destructor remove the TMinuit object from gROOT->GetListofSpecials().
Also reset gMinuit=0 if gMinuit=this.
//
// 15/03/2000 16.55.10 by Fons Rademakers
//
- TString: can now specify which character to strip in Strip().
- mmalloc, mfree, mmprivate: changed "struct list" to "struct mmlist"
to avoid possible clash with STl list class (fix by pcanal).
//
// 11/03/2000 16.04.06 by Rene Brun
//
- Changes in include Bytes.h to support an optimized byte swapping code
on Linux machines (thanks to Sasha Vanyashin ).
The Bytes.h uses asm macros from the #include <byteswap.h>
This is a part of the GNU C library: /usr/include/byteswap.h and
/usr/include/bits/byteswap.h. To get the most of the macros one has to use
the compiler switches higher then i386 (e.g., -march=pentiumpro -mpentiumpro),
since the default gcc copmpiler settings are just the i386.
Because the byteswap.h is missing on many Linux systems, a copy of
this include is provided in Byteswap.h
- Fix a problem in TMethodCall::ReturnType to take into account
the Root data types Float_t, Int_t, etc in addition to the basic types.
(thanks Gene Van Buren)
- New functionality added to class TLatex (Marthe Brun)
#left(, #right) to draw parenthesis with a size corresponding
to the block between parenthesis.
Support for Upper and Lower indices in front of a letter (useful for
chemical elements). try for example {}_{3}^{7}Li.
Use this new functions in tutorial latex.C.
Better vertical aligment of Greek characters
//
// 10/03/2000 10.47.26 by Philippe canal
//
- New version of rootcint. This new version is now able to automatically
generate the Streamer functions for classes containing pointers to basic types
in the following case.
Int_t fN; //Number of array elements
Int_t *fType; //[fN] array of fN integers
Float_t *fX; //[3*fN] array of 3*fN floats
- Extensions to TSystem such that the following will nicely work:
root> .L stress.cxx
root> stress(); // will interpret
root> .L stress.cxx
root> stress(); // will interpret a new version
root> .L stress.cxx++
root> stress(); // will execute compiled code
root> .L stress.cxx++ // does not re-compiled if stress.cxx is NOT newer.
root> stress(); // will execute new compiled code
//
// 08/03/2000 14.57.15 by Rene Brun
//
- In TVirtualFitter destructor, reset fgFitter and fgMaxpar to 0.
This is necessary in case a previous fitter was created with a number
of parameters maxpar, then deleted and a new fitter created with
less parameters. (case shown by Nicolas Produit)
//
// 07/03/2000 16.50.31 by Rene Brun
//
- Modify CINT/libstrm deck header to add -KCC.
Modify importcint to add -kCC when importing libstrm.
- Add comments in TNamed::SetName, TNamed::SetObject to mention that
if an object is a member of a THashList, the THashList must be
rehashed after the SetName.
Comment also added to the THashList constructors.
//
// 06/03/2000 08.43.09 by Rene Brun
//
- Update a wrong comment in tutorial Ifit (mnhelp("*") instead of mnhelp("*",0).
(thanks Ben Kilminster).
- Modify test programs Tetris and hworld to replace references to gPad
by TVirtualPad::Pad().
- Merge with Valery's new version. This new version includes several changes
in the STAR classes + support for double-click on WindowsNT.
//
// 05/03/2000 16.11.09 by Rene Brun
- Declare the TTree::Branch functions to be virtual (Fred Gray request).
//
//
// 04/03/2000 16.34.54 by Rene Brun
//
- Fix a clipping problem in TGraph::PaintGraph in case of option Bar.
Add SetBit(kClipFrame) in default TGraph constructor.
(thanks Anton Fokin).
//
// 03/03/2000 19.02.17 by Fons Rademakers
//
- TDatime: allow 100 - 199 as years (100 is returned by Linux's gmtime
for the year 2000).
- TMatrix, TVector: print errors when two matrices or vectors are not
compatible instead of silently doing nothing.
- TGSlider: fixed two case of && which should be & in DoDraw() for TGVSlider
and TGHSlider. Found by Yun-Ha Shin.
//
// 02/03/2000 10.10.41 by Rene Brun
//
- In TChain::SetBranchAddress and TChain::SetBranchStatus,
set fTreeNumber = -1 to force TChain::LoadEntry to be executed
at the next call to TChain::GetEntry. This statement is necessary
in case a user calls one of these two functions after a first pass
to the files in the chain. (thanks Goetz Gaycken)
- Add new function int() to TFormula::Analyze, TFormula::Eval
and to TTreeFormula::Eval
//
// 01/03/2000 17.27.39 by Rene Brun
//
- Important change in histogram classes
=====================================
- All histogram classes are derived from the base class TH1
TH1
^
|
|
|
-----------------------------------------------------
| | | | | |
| | TH1C TH1S TH1F TH1D
| | |
| | |
| TH2 TProfile
| |
| |
| ------------------------------
| | | | |
| TH2C TH2S TH2F TH2D
|
TH3
|
|
------------------------------
| | | |
TH3C TH3S TH3F TH3D
The TH*C classes also inherit from the array class TArrayC.
The TH*S classes also inherit from the array class TArrayS.
The TH*F classes also inherit from the array class TArrayF.
The TH*D classes also inherit from the array class TArrayD.
This change is backward compatible. Previous style histograms
can be read by the new version.
//
// 29/02/2000 20.23.34 by Fons Rademakers
//
- TVirtualPad: R__Pad() now static member TVirtualPad::Pad().
//
// 29/02/2000 08.35.28 by Rene Brun
//
- Implement copy constructor of TParticle
//
// 28/02/2000 09.39.18 by Rene Brun
//
- Add new classes TSpline, TSpline3 and TSpline5 (from Federico Carminati)
Add new tutorial spline.C
- Implement a new TF1 constructor
TF1::TF1(const char *name, Float_t xmin, Float_t xmax, Int_t npar)
where name is the name of a preloaded CINT function
- New code in TBranchClones::Streamer to automatically create
the TClonesArray if the support pointer contains a null address
(thanks to Marian Ivanov).
- Merge with Valery's version:
additions in TROOT::GetClass to take into account typedefed classes.
new versions of STAR classes
//
// 23/02/2000 19.09.59 by Rene Brun
//
- Rename C function mem_read to R__mem_read in the ZIP Bits.c file.
This name clashes with a similar name in one library used by ISDC.
Thanks Nicolas Produit for investigating.
- Many thanks to Marco van Leeuwen for reporting a problem with TGraph::Fit
when fitting with a polynomial. The problem has been fixed in TGraph::LeastSquareFit.
The last data point was ignored by this function computing the initial
value of parameters.
//
//
// 22/02/2000 08.22.57 by Rene Brun
//
- Protection added in TCanvas::RunAutoExec. The global gPad may be null
in some cases (eg, when a TDialogCanvas object is deleted by a button
inside the canvas itself).
-In TTreePlayer::DrawSelect, disable the bit kCanRebin for histograms
(1-d, 2-d and 3-d) when the option "same" is specified.
- In TH1::GetStats, forgot to preset to 0 the last element of the array stats.
This was given a problem on Alpha/Unix machines.
- Regenerate the G__Meta dictionary to remove new code generated by the
new version of CINT. Correction reported to Masa.
- Several changes received from Valery Fine in the new STAR package and also in
the Win32 GUI.
//
// 18/02/2000 17.47.15 by Rene Brun
//
- A change in the functions TF1::Integral, also, TF2 and TF3.
All parameters promoted from Float_t to Double_t.
(thanks Rutger van der Eijk )
- Thanks to Romain.Holzmann@gsi.de for fixing a problem in TTreeFormula.
"I have noticed a problem when using a graphical cut TCutG in a TTree::Draw()
selection in case the selection applies to a pair of variables (x:y) of which
one at least is stored in a TClonesArray:
Indeed, in the TTreePlayer::EntryLoop(...) method the flag SelectMultiple is
not set properly in this case, so that only the first entry of the TClonesArray
is tested and the result of fSelect->EvalInstance(0) is used for ALL entries
of the array, i.e. either all x:y pairs are accepted or all are rejected!
The problem seems to come from the TTreeFormula constructor which does not
set TTreeFormula::fMultiplicity (?) for the case of a graphical cut."
//
// 17/02/2000 19.28.15 by Masaharu Goto
//
- New CINT 5.14.31 7 Feb 2000 (previous version in ROOT was 5.14.25)
5.14.26 8 Dec 1999
1242, #pragma link C++ namespace, risk1, t298.h
5.14.27 19 Dec 1999
1243, #pragma link C++ defined_in tagname; risk1, t299.h
1244, default template arg, get typenum at the first instantiation, risk2
1245, prompt \ newline escape, risk2, t301.cxx
1246, p = new scope::ctor(); bug fix, risk2
1247, gROOT->Macro("f.c") in loop, 1168 side effect, risk3
1248, fix to 1219, 1225, pointer to function argument, risk2
1249, f(void (*p)()=0); bug fix, risk 2, t307.h
1250, 'explicit' support, risk4, t308.cxx,
1251, compiled default ctor in bytecode loop, bug fix. risk2, t310.h/cxx
- , G__NOMATHLIB switch, risk1
1252, 1.0 + obj; buf fix, risk1, t309.cxx
1253, tempbuf display,
1254, A& a=A(x); temp object lifetime bug fix, risk4, t312.cxx
1255, UInt_t -1 display bug fix, risk2
-1256, n=0;for(i=0;i<n;i++); bytecode, risk5, t313.cxx
BUG FOUND, intprt_cint infinit loop, CINT simple.cxx
1257, pragma link C++ class A*-; supported risk3, t315.h
5.14.28 5 Jan 2000
/1258, const and non-const member function override, risk3, t316.h
/1259, constness flag for G__value
/1260, func overload matching with object constness
Note: constness checking is implemented by 1258-1260. There are several
problems and this feature is not activated unless G__CONSTNESSFLAG
is explicitly defined in platform/dependency file.
- DLL/sharedlib binary incompatibility
- STL container's const_iterator begin/end can not be compiled
1261, #pragma include_noerr "f1" #on_error "f2"
1262, A*** x; bug fix, risk3, t317.h
5.14.29 17 Jan 2000
-1263, 1240 fix, implicit conv + derived to base conv, t321.cxx, not done
1264, more than 10 class object member , risk2, c:/src/err/MyDlg.cpp
1265, operator-> support t323.cxx
1266, void (*p2f)(int&); bug fix t326.cxx, t325.cxx
1267, G__ClassInfo::New(int n); added, risk2
1268, compiled exception catching, t332.h/.cxx, risk4
5.14.30 30 Jan 2000
1269, static member function flag missing, t333.h , risk2
1270, exception in bytecode, t332.h/.cxx, risk5
1271, auto loading of std header in DLL, t332.h/.cxx, risk4
1272, #pragma link postprocess file action; t335.h/.cxx t335post.cxx, risk3
5.14.31 7 Feb 2000
1273, function only macro smart unloading, risk4, t336.cxx
G__set_smartload() added
1274, A f() { return B(); }, risi3, t338.cxx
- , auto_ptr added in stl/_memory, t340.cxx
1275, template<class T> class A{template<class Y> A(Y& x){}};, risk2,t340.h
- , auto_ptr support, t343.cxx t342.cxx, t345.cxx
1240 -> G__WORKAROUND000209_1
//
// 17/02/2000 18.40.43 by Fons Rademakers
//
- Secure rootd deamon
===================
Rootd now supports secure authentication by using the SRP package
from Stanford (http://srp.stanford.edu/srp/). SRP, Secure Remote
Passwords, uses a so called "asymmetric key exchange protocol"
in which no passwords are ever send over the wire. To quickly
read about the main features of SRP look at:
http://jafar.stanford.edu/srp/advantages.html
To build rootd with libsrp.a you've to do the following:
- get the SRP source (ftp://srp.stanford.edu/pub/srp/srp-1.5.0.tar.gz)
- get the gmp source (ftp://srp.stanford.edu/pub/srp/gmp-2.0.2.tar.gz)
This is not needed when you are on a recent Linux machine where
libgmp.so exists in /usr/lib.
- Build the gmp and SRP libs (./configure;make;[make install])
- Check the rootd Makefile and set the SRP variable to where you
installed the SRP source.
- Build rootd
- Get the package ftp://root.cern.ch/root/srputils.tar.gz
- Untar, check that the variable SRP is set correctly in the Makefile
and make and make install. This produces the utilities rtconf,
rpasswd and the library libSRPAuth.so.
- To setup the SRP passwd file on the remote node do:
- rtconf
A key of 512 bit is good enough (creates the file
$HOME/.srootdpass.conf)
- rpasswd
Give a passwd for rootd (creates the file $HOME/.srootdpass)
- On the local site you need to get only libSRPAuth.so and put it
in $ROOTSYS/lib.
- Now when creating a TNetFile object via TFile::Open("root://....")
libSRPAuth.so will be loaded if it exits and the secure login
protocol will be used. Note that other rootd trafic is not encrypted.
- TRint, rootx: changed option -p (to popdown the slpash screen) to -splash
to prevent any accidental usage.
- TCut: fixed behaviour of operator!().
- TROOT: added check in GetClass() for fClasses==0.
- Threads: updates in the thread package, but this is still work in progres.
//
// 17/02/2000 15.35.35 by Rene Brun
//
- Add new install Makesolarisgcc (thanks Michal Lijowski).
- Minor changes in TGX11 (change Text_t to char) to make new Sun CC5 happy.
Similar minor change in TView : Replace TMath::Atan(1) by its value.
- Modify TAttext to show function SetTextAngle in the context menu.
- Add new function TEventList::SetDelta.
- Change comment in TF1::Derivative.
- Minor change in TH1::GetBarOffset and GetBarWidth. Cast result to Float_t
to avoid a warning with one compiler.
- In TTreePlayer::MakeClass, generate the code for the class destructor.
Delete the current file in the destructor.
- One change in TCint (Win32 only).
//
// 14/02/2000 12.24.01 by Rene Brun
//
- Add the following functions overridden TNamed::SetObject
TH1::SetObject(const char *name, const char *title)
TNode::SetObject(const char *name, const char *title)
TTree::SetObject(const char *name, const char *title)
Because instances of these 3 classes are automatically added to the current
directory (a THashList), it is necessary to recompute the hashtable.
This was already done by the SetName functions of these classes.
//________________________________________________________________________
//
//::> VERSION 2.24/00 14/02/2000 10.13.26
//
//
// 01/02/2000 16.35.57 by Rene Brun
//
- Add new attributes fTitleColor and fTitleFont in TAttAxis.
Same in helper class TGaxis.
The necessary changes to introduce the new attributes have been made in
THistPainter::PaintAxis and in class TAxis3D.
- Protection added to TRotmatrix in case a TGeometry object dose not exist.
When this is the case, a default TGeometry object is created.
- Changes in TTreePlayer::TakeEstimate to support option "goff" when
generating 3-d histograms.