ROOT version 4.00 Development Notes

2004-01-05 09:20  brun

	* base/src/TFile.cxx:
	In TFile::ReadStreamerInfo extend the size of the array fClassIndex
	in case the info unique number is greater than the array size.
	
	Set fUnits=8 in case of large files.
	
2004-01-05 09:18  brun

	* base/src/TDirectory.cxx:
	In TDirectory::FillBuffer and TDirectory::Streamer always initialize
	the 12 extra bytes created in case of large files to avoid warnings
	with valgrind
	
2004-01-03 15:26  brun

	* treeplayer/src/TTreeFormula.cxx:
	In case of data members with new data types, one must access the array
	of newtypes (via the new function TStreamerInfo::GetNewTypes or
	TSreamerElement::GetNewType instead of the GetType functions.
	
2004-01-03 15:24  brun

	* meta/src/TStreamerInfo.cxx:
	Fix a bug in ReadBufferConv and ReafBufferClonesConv in case of fix size arrays.
	Use the new TBuffer functions for Double32_t
	
2004-01-03 15:22  brun

	* meta/inc/TStreamerInfo.h:
	Add new member function
	  Int_t  *GetNewTtpes();
	This function returns a pointer to teh array of new types
	
2004-01-03 10:42  brun

	* utils/src/rootcint.cxx:
	Add support for the new type Double32_t in case of old style Streamers
	
2004-01-03 10:41  brun

	* base/: inc/TBuffer.h, src/TBuffer.cxx:
	Add the following new functions:
	   Int_t    ReadArrayDouble32(Double_t  *&d);
	   Int_t    ReadStaticArrayDouble32(Double_t  *d);
	   void     ReadFastArrayDouble32(Double_t  *d, Int_t n);
	   void     WriteArrayDouble32(const Double_t  *d, Int_t n);
	   void     WriteFastArrayDouble32(const Double_t  *d, Int_t n);
	
2004-01-03 10:38  brun

	* net/src/TWebFile.cxx:
	Fix a warning in a printf statement
	
2004-01-02 10:27  brun

	* tree/inc/TEventList.h:
	Implement TEventList::Clear. This function calls TEventList::Reset
	
2004-01-01 19:03  brun

	* gpad/src/TPad.cxx:
	From Bertrand:
	
	patch solving incorrect behaviour in RequestString calls
	
2004-01-01 18:57  brun

	* win32gdk/gdk/src/gdk/win32/: gdkcursor-win32.c, gdkgc-win32.c,
	gdkvisual-win32.c, gdkwindow-win32.c:
	From Bertrand Bellenot:
	
	code cleaning and potential memory leaks removal
	
2003-12-31 17:36  brun

	* base/src/TFile.cxx, winnt/src/TWinNTSystem.cxx:
	Implement support for large files under windows:
	 -stats  -> changed to _stati64
	 -lseek  -> changed to _lseeki64
	
2003-12-30 23:10  brun

	* tree/src/TBranch.cxx:
	Optimize format in TBranch::Print in case of large files.
	
2003-12-30 22:44  brun

	* geom/src/TGeoPgon.cxx:
	Remove unused variable Rproj
	
2003-12-30 22:42  brun

	* rpdutils/src/rpdutils.cxx:
	Remove some unused variables like kMethods, Nrec
	
2003-12-30 22:34  brun

	* mlp/src/TNeuron.cxx:
	Remove an unused return statement
	
2003-12-30 21:43  brun

	* base/inc/RConfig.h, base/src/TFile.cxx, unix/src/TUnixSystem.cxx:
	In RConfig.h, define R__SEEK64 for combinations of systems/compilers
	supporting open64, lseek64 and stat64.
	Use the variable R__SEEK64 in TFile and TUnixSystem.
	
2003-12-30 19:31  brun

	* test/MainEvent.cxx:
	Change variable counting the number of bytes processed from Int_t to Long64_t
	
2003-12-30 19:17  brun

	* tree/src/: TBranch.cxx, TTree.cxx:
	Fix some consistency problem when encoding the branch fBasketSeek array.
	Modify a print format in case of files bigger than 2 Gigabytes.
	
2003-12-30 19:16  brun

	* test/MainEvent.cxx:
	Add a call to TTree::SetMaxTreeSize to give the possibility to create
	a Tree as big as 2 Terabytes (if the system can do it).
	For example try the following:
	  Event 100000 0 7 1
	This should create a Tree of size 7.6 Gigabytes
	
2003-12-30 17:32  brun

	* treeplayer/src/TTreeFormula.cxx:
	From Philippe:
	Fix a compilation error on alpha/cxx
	
2003-12-30 15:58  brun

	* winnt/inc/TWinNTSystem.h:
	Fix for Windows
	
2003-12-30 15:20  brun

	* base/src/TFile.cxx, unix/src/TUnixSystem.cxx:
	Lseek64 cannot be used with gcc2.95 or 2.96
	
2003-12-30 14:39  brun

	* base/inc/RVersion.h, base/src/TFile.cxx,
	winnt/src/TWinNTSystem.cxx:
	Fix some portability problems on Windows
	
2003-12-30 14:16  brun

	* alien/inc/TAlienFile.h, alien/src/TAlienFile.cxx,
	base/inc/TDirectory.h, base/inc/TFile.h, base/inc/TFree.h,
	base/inc/TKey.h, base/inc/TSystem.h, base/src/TApplication.cxx,
	base/src/TDirectory.cxx, base/src/TFile.cxx, base/src/TFree.cxx,
	base/src/TKey.cxx, base/src/TMD5.cxx, base/src/TSystem.cxx,
	base/src/TSystemDirectory.cxx, base/src/TSystemFile.cxx,
	build/version_number, chirp/inc/TChirpFile.h,
	chirp/src/TChirpFile.cxx, dcache/inc/TDCacheFile.h,
	dcache/src/TDCacheFile.cxx, hbook/inc/THbookFile.h,
	html/src/THtml.cxx, net/inc/TCache.h, net/inc/TFTP.h,
	net/inc/TNetFile.h, net/inc/TWebFile.h, net/src/TCache.cxx,
	net/src/TFTP.cxx, net/src/TNetFile.cxx, net/src/TWebFile.cxx,
	proof/src/TProof.cxx, proof/src/TProofServ.cxx,
	rfio/inc/TRFIOFile.h, rfio/src/TRFIOFile.cxx,
	table/src/TFileSet.cxx, tree/inc/TBasket.h, tree/inc/TBranch.h,
	tree/inc/TTree.h, tree/src/TBasket.cxx, tree/src/TBranch.cxx,
	tree/src/TBranchElement.cxx, tree/src/TBranchObject.cxx,
	tree/src/TTree.cxx, treeplayer/inc/TFileDrawMap.h,
	treeplayer/src/TFileDrawMap.cxx, unix/inc/TUnixSystem.h,
	unix/src/TUnixSystem.cxx, winnt/inc/TWinNTSystem.h,
	winnt/src/TWinNTSystem.cxx:
	Mega patch to add support for large files (bigger than 2 GBytes)
	----------------------------------------------------------------
	
	  ==========>NEW VERSION 4.00/00 <===========
	
	Because this new version has a considerable number of changes,
	and new important additions by Philippe are scheduled for the coming days
	we are starting a new major version 4.
	  -Support for large files
	  -Automatic schema evolution for foreign classes
	  -New data type Double32_t
	
	Large files are currently tested only under Linux with gcc3.2.
	Support for other systems will be gradually added in the coming days.
	By default under Linux, files are created with the option LARGEFILE.
	Note that when creating a Tree, the default maximum size for a Tree
	is set to 1.9 GBytes. You can change this default value by calling
	  TTree::SetMaxTreeSize(Long64_t maxsize)
	
	The implementation of this new feature has required changes in many places.
	The files produced by this new version can still be read by old ROOT versions
	if their size if smaller than 2 GBytes. And obviously, the new version
	can digest old ROOT files.
	
	WARNING: note the following backward incompatibility:
	 -TSystem::GetPathInfo has a new signature: (also TUnixSystem, TWinNTSystem, etc)
	  old: GetPathInfo(const char *path, Long_t *id, Long_t *size, Long_t *flags, Long_t *modtime);
	  new: GetPathInfo(const char *path, Long_t *id, Long64_t *size, Long_t *flags, Long_t *modtime);
	
	 -TFile::SysSeek and TFile::SysStat have a new signature (also TNetFile, TWebFile, etc)
	  old:  Int_t    SysSeek(Int_t fd, Long_t offset, Int_t whence);
	        Int_t    SysStat(Int_t fd, Long_t *id, Long_t *size, Long_t *flags, Long_t *modtime);
	  new:  Long64_t SysSeek(Int_t fd, Long64_t offset, Int_t whence);
	        Int_t    SysStat(Int_t fd, Long_t *id, Long64_t *size, Long_t *flags, Long_t *modtime);
	
	 -TTree::SetMaxTreeSize has a new signature:
	  old:  void TTree::SetMaxTreeSize(Int_t maxsize)
	  new:  void TTree::SetMaxTreeSize(Long64_t maxsize)
	
	  All references to Seek_t have been replaced by Long64_t.
	
2003-12-27 19:49  brun

	* hist/src/TFormula.cxx:
	Fix a compilation problem on HP-UX/aCC
	
2003-12-27 17:14  brun

	* tree/src/TBranchClones.cxx, tree/src/TTree.cxx,
	treeplayer/src/TTreeFormula.cxx:
	More changes required by the introduction of the new data type Double32_t
	
2003-12-27 17:13  brun

	* test/: Event.cxx, Event.h:
	Modidy the classes Event and Track to make use of the new data type Double32_t
	
2003-12-27 12:28  brun

	* win32gdk/gdk/src/gdk/win32/: gdkdrawable-win32.c,
	gdkwindow-win32.c:
	Patch from Bertrand fixing brushes related memory leaks
	
2003-12-26 23:06  brun

	* tree/src/TBranchElement.cxx:
	Changes to support
	 -Long64 and ULong64_t
	 -Double32_t
	
2003-12-26 19:38  brun

	* base/inc/LinkDef1.h, base/inc/Rtypes.h, meta/inc/TDataType.h,
	meta/inc/TStreamerInfo.h, meta/src/TDataType.cxx,
	meta/src/TStreamerInfo.cxx:
	Implement a new data type Double32_t (in Rtypes.h).
	In memory a Double32_t is like a Double_t (8 bytes).
	When written to a file, the type is converted to a Float 4 bytes.
	The newdata type is accepted as a simple variable, as a fixed length array
	or a variable length array, like:
	  Double32_t  fPt:
	  Double32_t  fVertex[3];
	  Int_t       fNtracks;
	  Double32_t *fPx;  //[fNtracks]
	
	The new data type is supported in all I/O modes (TKey or TTree)
	
	The automatic schema evolution algorithm accepts this new type.
	For example a class in a file containing a Double_t data member
	can be read by a new class where the member is now of type Double32_t
	and vice-versa.
	
2003-12-25 19:11  brun

	* dcache/src/TDCacheFile.cxx:
	Fix warnings with unused parameter
	
2003-12-25 18:55  brun

	* tree/: inc/TBranchElement.h, src/TBranchElement.cxx:
	Add a new member fCheckSum and corresponding getter GetCheckSum.
	Classversion incremented to version 8.
	In TBranchElement::GetInfo, use the fCheckSum member to find the right
	TStreamerInfo object in TClass.
	With this change and the previous changes in TBuffer, TClass and TStreamerInfo,
	automatic schema evolution is supported for foreign classes written in a TTree
	or as classes written as a TKey.
	
2003-12-25 18:51  brun

	* meta/src/TStreamerInfo.cxx:
	In TStreamerInfo::BuildCheck recompute the fClassVersion and the pointer to the
	TStreamerInfo object corresponding to the current class checksum.
	In case of a foreign class, do not print the Warning in case the current class
	checksum and the checksum in the TStreamerInfo differ. Instead recompute
	the correct class version using the checksum parameter.
	
2003-12-25 18:48  brun

	* meta/src/TClass.cxx:
	Pass the pointer to the current class as 3rd argument of TBuffer::ReadVersion
	
2003-12-25 18:47  brun

	* base/: inc/TBuffer.h, src/TBuffer.cxx:
	Add an optional argument to TBuffer::ReadVersion.
	The new argument "TClass* cl) is used to retrieve the version number
	corresponding to the class checksum.
	This change is required to support automatic schema evolution
	for foreign classes.
	
2003-12-24 18:33  brun

	* win32gdk/Module.mk:
	Fix a TAB problem (Bertrand)
	
2003-12-24 18:28  brun

	* win32gdk/gdk/src/gdk/win32/gdkdrawable-win32.c:
	A pach from Bertrand Bellenot fixing region-related memory leaks.
	
2003-12-24 14:36  brun

	* win32gdk/Module.mk:
	Fix to previous fix
	
2003-12-24 14:30  brun

	* win32gdk/Module.mk:
	Fix to Makefile by Bertrand Bellenot
	
2003-12-24 11:58  brun

	* win32gdk/gdk/src/gdk/win32/: gdkevents-win32.c,
	gdkwindow-win32.c:
	Fix memory leaks (Bertrand Bellenot)
	
2003-12-24 10:45  brun

	* treeplayer/src/TSelectorDraw.cxx:
	From Philippe:
	
	Because of a misplaced curly bracket, TSelectorDraw::ProcessFillObject was unable to draw a large amount of data (i.e.
	up to fTree->GetEstimate()).
	
2003-12-21 20:07  brun

	* base/src/TVirtualX.cxx:
	Fix a long list of badly formatted comments (when commenting unused pointers)
	
2003-12-21 15:49  brun

	* fumili/src/TFumili.cxx:
	The functions TFumili::GetParameter and TFumili::GetParError had code inverted.
	Memory leak fixed in GraphFitChisquareFumili.
	Thanks to Fedor Ignatov
	
2003-12-19 17:36  brun

	* gui/src/TGLayout.cxx:
	From Valeriy Onuchin:
	
	- small fix in TGVerticalLayout, TGHorizontalLayout
	
2003-12-19 17:10  brun

	* tree/src/TLeafL.cxx:
	Fix in casting a return value to satisfy VC++6
	
2003-12-19 17:04  brun

	* test/RootShower/RootShower.cxx:
	Fix for Windows by Bertrand
	
2003-12-19 17:00  brun

	* gui/src/TGButton.cxx:
	From Valeriy Onuchin:
	 - TGCheckButton alignment fixed.  Label is aligned against button.
	
2003-12-19 14:40  brun

	* tree/: inc/LinkDef.h, inc/TLeafL.h, src/TBranch.cxx,
	src/TLeafL.cxx, src/TTree.cxx:
	Add new class TLeafL to support Long64_t, ULong64_t data types in a TBranch
	
2003-12-19 11:26  brun

	* win32gdk/src/TGWin32ProxyBase.cxx:
	From valeriy Onuchin:
	
	- mods in TGWin32ProxyBase::ForwardCallBack(Bool_t sync)
	  Do not execute the method which had failed to be executed because of delay
	  with response from "server thread".
	
2003-12-19 10:31  brun

	* tree/src/TSelector.cxx, treeplayer/src/TTreePlayer.cxx:
	Add the following warning in TSelector::GetSelector:
	
	//   WARNING when a selector is used with a TChain:
	//    in the Process, ProcessCut, ProcessFill function, you must use
	//    the pointer to the current Tree to call GetEntry(entry).
	//    entry is always the local entry number in the current tree.
	//    Assuming that fChain is the pointer to the TChain being processed,
	//    use fChain->GetTree()->GetEntry(entry);
	
	Modify TTreePlayer::MakeSelector to generate the code with this warning
	in the selector Process function.
	
2003-12-19 08:55  brun

	* tree/: inc/TLeaf.h, src/TLeaf.cxx:
	From Philippe:
	
	Using valgrind on TBench, I found some uninitialized memory in TLeaf
	in the case of a TLeafElement belonging to a split TClonesArray.
	
	The uninitialized memory came from the fact that the constructor was
	not initializing everything if it could not find the leafcount.
	In the case described above, the leafcount is not available until
	after the constructor of the leaf (or so it seems) and is explicitly
	set later using TLeaf::SetLeafCount.
	
	This patch insures that more data members are initialized even in
	case of seemingly incorrect configuration and insures that the Zombie
	state is removed if the leafcount becomes available after the end of
	the constructor.
	
2003-12-18 19:31  brun

	* krb5auth/src/Krb5Auth.cxx:
	From Philippe:
	corrects the printing of a couple of debug messages and add one more debug message.
	
2003-12-18 16:14  brun

	* gui/src/TGListBox.cxx:
	From Valeriy Onuchin:
	- TGListBox. Reset GetSelected when setting OFF the multiple selection.
	
2003-12-18 14:21  brun

	* hist/src/TFormula.cxx, test/dt_DrawTest.C, test/dt_MakeRef.C,
	tree/src/TTree.cxx, treeplayer/inc/TTreeFormula.h,
	treeplayer/src/TTreeFormula.cxx, treeplayer/src/TTreePlayer.cxx:
	From Philippe:
	
	        Add support for the boolean optimization in TFormula::GetExpFormula
	
	        Prevent TTree::Scan from printing random value for invalid formulas
	
	        Add a new TTreeFormula special function:
	
	      Alt$(primary,alternate) : return the value of "primary" if it is available
	                    for the current iteration otherwise return the value of "alternate".
	                    For example, with arr1[3] and arr2[2]
	      tree->Draw("arr1-Alt$(arr2,0)");
	                 will draw arr[0]+arr2[0] ; arr[1]+arr2[1] and arr[1]+0
	                    Or with a variable size array arr3
	       tree->Draw("Alt$(arr3[0],0)+Alt$(arr3[1],0)+Alt$(arr3[2],0)");
	                    will draw the sum arr3 for the index 0 to min(2,actual_size_of_arr3-1)
	                    As a comparison
	       tree->Draw("arr3[0]+arr3[1]+arr3[2]");
	                    will draw the sum arr3 for the index 0 to 2 only if the
	                    actual_size_of_arr3 is greater or equal to 3.
	                    Note that the array in 'primary' is flatened/linearilized thus using
	                    Alt$ with multi-dimensional arrays of different dimensions in unlikely
	                    to yield the expected results.  To visualize a bit more what elements
	                    would be matched by TTree::Draw, TTree::Scan can be used:
	       tree->Scan("arr1:Alt$(arr2,0)");
	                    will print on one line the value of arr1 and (arr2,0) that will be
	                    matched by
	       tree->Draw("arr1-Alt$(arr2,0)");
	
2003-12-18 14:17  brun

	* gui/src/TGListBox.cxx:
	From Valeriy Onuchin:
	
	- TGListBox class:
	  generation Selected signals  added when SetMultipleSelections(kTRUE)
	
2003-12-17 16:20  brun

	* treeplayer/src/TTreePlayer.cxx:
	Fix a problem in TTreePlayer::UnbinnedFit in case the initial value of a parameter is negative.
	In this case, the step size was set negative, forcing Minuit in RESET mode.
	
2003-12-16 23:42  brun

	* treeplayer/src/TTreePlayer.cxx:
	From Philippe
	
	This patch makes sure the formula are properly refreshed when using a chain.
	
	It removes the printing of some (spurious) empty lines when using a selection criterion.
	I.e. Without a selection criterion, there is always a least one line per entry (if is empty) while with a selection
	criterion, an entry is printed if and only if a least one of the sub-element exist and match the criterion.
	
2003-12-16 23:31  brun

	* gui/src/TGMenu.cxx:
	Protection added to TGMenu (Thanks Valeri Fine)
	
2003-12-16 22:58  brun

	* treeplayer/src/TTreePlayer.cxx:
	From Philippe:
	
	With this improvement, TTree::Scan properly correlate (as needed) the selection criterium and the printed columns.
	


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.