[root] / trunk / tree / tree / inc / TBranch.h Repository:
ViewVC logotype

Log of /trunk/tree/tree/inc/TBranch.h

Parent Directory Parent Directory


Links to HEAD: (view) (download) (as text) (annotate)
Sticky Revision:

Revision 48992 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Mar 28 15:26:26 2013 UTC (21 months, 3 weeks ago) by rdm
File length: 11513 byte(s)
Diff to previous 46110
From Lifeng Sun:
The attached patchset fixes a bunch of typo in the source:
0001-succes-success.patch
0002-preceed-preced.patch
0003-informations-information.patch
0004-childs-children.patch
0005-avaliable-available.patch
0006-writeable-writable.patch
0007-comand-command.patch
0008-unkown-unknown.patch
0009-wierd-weird.patch
0010-wheter-whether.patch
0011-unecessary-unnecessary.patch
0012-splitted-split.patch
0013-registerd-registered.patch
0014-recieve-receive.patch
0015-processsing-processing.patch
0016-ouput-output.patch
0017-mutiple-multiple.patch
0018-lenght-length.patch
0019-interupted-interrupted.patch
0020-independant-independent.patch
0021-inconsistant-inconsistent.patch
0022-expresion-expression.patch
0023-explicitely-explicitly.patch
0024-enviroment-environment.patch
0025-deafult-default.patch
0026-continous-continuous.patch
0027-completly-completely.patch
0028-commited-committed.patch
0029-choosen-chosen.patch
0030-backgroud-background.patch
0031-auxilliary-auxiliary.patch
0032-authentification-authentication.patch
0033-appropiate-appropriate.patch
0034-an-other-another.patch
0035-environement-environment.patch
0036-targetting-targeting.patch
0037-suppported-supported.patch
0038-paramater-parameter.patch

Revision 46110 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Sep 21 14:07:42 2012 UTC (2 years, 4 months ago) by pcanal
File length: 11513 byte(s)
Diff to previous 40872
fix typo

Revision 40872 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Sep 13 21:33:33 2011 UTC (3 years, 4 months ago) by pcanal
File length: 11513 byte(s)
Diff to previous 39757
From Chris Jones:

Put in place the infrastructure to optimize the I/O writes in the same way we optimized the I/O reads.

Rename TBuffer::ReadSequence to TBuffer::ApplySequence as they can be used both for reading and writing.  The 3 new signatures:

1. virtual Int_t ApplySequence(const TStreamerInfoActions::TActionSequence &sequence, void *object);      
2. virtual Int_t ApplySequenceVecPtr(const TStreamerInfoActions::TActionSequence &sequence, void *start_collection, void *end_collection);      
3. virtual Int_t ApplySequence(const TStreamerInfoActions::TActionSequence &sequence, void *start_collection, void *end_collection);

The 1st version is optimized to read a single object. The 2nd version is optimized to read the content of TClonesArrays and vectors of pointers to objects.
The 3rd version is used to streamed any collections.

In TBranchElement, introduce a set FillLeaves member functions to precalculate many of the (existing) conditional.  Introduction support for the StreamerInfo write actions and sequences.

Revision 39757 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Jun 15 16:28:05 2011 UTC (3 years, 7 months ago) by pcanal
File length: 11307 byte(s)
Diff to previous 39696
Add missing part to 39755

Revision 39696 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Jun 13 21:35:34 2011 UTC (3 years, 7 months ago) by pcanal
File length: 11259 byte(s)
Diff to previous 39611
From David Dagenhart:

Implement an option to allow ROOT to use the LZMA compression
algorithm to compress data instead of the ZLIB compression algorithm.
LZMA compression typically results in smaller files, but takes more
CPU time to compress data. To use the new feature, the external XZ
package must be installed when ROOT is configured and built:

Download 5.0.3 from here http://tukaani.org/xz/
and make sure to configure with fPIC:
   ./configure CFLAGS='-fPIC'

Then the client C++ code must call routines to explicitly request LZMA
compression.

ZLIB compression is still the default.

Setting the Compression Level and Algorithm:

There are three equivalent ways to set the compression level and 
algorithm. For example, to set the compression to the LZMA algorithm
and compression level 5.

1. TFile f(filename, option, title);
   f.SetCompressionSettings(ROOT::CompressionSettings(ROOT::kLZMA, 5));

OR

2. TFile f(filename, option, title, ROOT::CompressionSettings(ROOT::kLZMA, 5));

OR

3. TFile f(filename, option, title);
   f.SetCompressionAlgorithm(ROOT::kLZMA);
   f.SetCompressionLevel(5);

These methods work for TFile, TBranch, TMessage, TSocket, and TBufferXML. 
The compression algorithm and level settings only affect compression of
data after they have been set. TFile passes its settings to its branches 
only at the time the branches are created. This can be overidden by 
explicitly setting the level and algorithm for the branch. These classes 
also have the following methods to access the algorithm and level for 
compression.

   Int_t GetCompressionAlgorithm() const;
   Int_t GetCompressionLevel() const;
   Int_t GetCompressionSettings() const;

If the compression level is set to 0, then no compression will be
done. All of the currently supported algorithms allow the level to be
set to any value from 1 to 9. The higher the level, the larger the
compression factors will be (smaller compressed data size). The
tradeoff is that for higher levels more CPU time is used for
compression and possibly more memory. The ZLIB algorithm takes less
CPU time during compression than the LZMA algorithm, but the LZMA
algorithm usually delivers higher compression factors.

The header file core/zip/inc/Compression.h declares the function
"CompressionSettings" and the enumeration for the algorithms.
Currently the following selections can be made for the algorithm:
kZLIB (1), kLZMA (2), kOldCompressionAlgo (3), and kUseGlobalSetting
(0). The last option refers to an older interface used to control the
algorithm that is maintained for backward compatibility. The following
function is defined in core/zip/inc/Bits.h and it set the global
variable.

   R__SetZipMode(int algorithm)

If the algorithm is set to kUseGlobalSetting (0), the global variable
controls the algorithm for compression operations.  This is the
default and the default value for the global variable is kZLIB.

Note that the LZMA algorithm will only be available if the LZMA
libraries from the XZ package were available when the ROOT executable
being used was configured and built. If you are building ROOT and want
LZMA then you must do something similar to the following if XZ is not
already installed on your system.

  Download XZ version 5.0.3 from http://tukaani.org/xz/
  unwind the tarball
  cd xz-5.0.3
  ./configure CFLAGS='-fPIC'
  make

ROOT was tested with version 5.0.3 of XZ.  It might work with earlier
versions and will probably work with later versions of XZ.

Then either use "make install" to put the library and headers into
/usr/local/* so the scripts building ROOT can find them or use
arguments to the ROOT configure script to point to the proper
directories containing the XZ library and headers. These are the
library and the included header (lzma.h includes other headers in the
lzma subdirectory).

  src/liblzma/.libs/liblzma.a
  src/liblzma/api/lzma.h

WARNING: Data compressed with the LZMA algorithm cannot be read by
ROOT executables that were not built with LZMA support.

Revision 39611 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Jun 8 19:35:17 2011 UTC (3 years, 7 months ago) by pcanal
File length: 10491 byte(s)
Diff to previous 38801
Introduce TMemFile and update TFileMerger to support incremental merges.

Add new tutorials ( net/treeClient.C + net/fastMergeServer.C )
demonstrating how a TMemFile can be used to do parallel merge
from many client. ( TMemFile still needs to be better integrated
with TMessage and TSocket).

The new TMemFile class support the TFile interface but only store
the information in memory.   This version is limited to 32MB.

   TMessage mess;
   ... 
   mess->ReadFastArray(scratch,length);
   transient = new TMemFile("hsimple.memroot",scratch,length);

will copy the content of 'scratch' into the in-memory buffer
created by/for the TMemFile.

   TMemFile *file = new TMemFile("hsimple.memroot","RECREATE");

Will create an empty in-memory of (currently fixed) size 32MB.

   file->ResetAfterMerge(0);

Will reset the objects in the TDirectory list of objects
so that they are ready for more data accumulations (i.e.
returns the data to 0 but keep the customizations).

Introduce the new function TFileMerger::IncrementalMerge will
will Merge the list of file _with_ the content of the output
file (if any).   This allows make several successive Merge
into the same TFile object.

Introduce non-static version of TFile::Cp allows the copy of
an existing TFile object.

Introduce new explicit interface for providing reseting 
capability after a merge.  If a class has a method with 
the name and signature:

   void ResetAfterMerge(TFileMergeInfo*);

it will be used by a TMemFile to reset its objects after
a merge operation has been done.

If this method does not exist, the TClass will use
a method with the name and signature:
  
   void Reset(Optiont_t *);

TClass now provides a quick access to these merging 
function via TClass::GetResetAfterMerge.   The wrapper function
is automatically created by rootcint and can be installed
via TClass::SetResetAfterMerge.   The wrapper function should have
the signature/type ROOT::ResetAfterMergeFunc_t:

   void (*)(void *thisobj, TFileMergeInfo*);

ResetAfterMerge functions were added to the following classes:
TDirectoryFile, TMemFile, TTree, TChain, TBranch, TBranhcElement, 
TBranchClones, TBranchObject and TBranchRef.

Revision 38801 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Apr 11 20:10:24 2011 UTC (3 years, 9 months ago) by pcanal
File length: 10435 byte(s)
Diff to previous 38059
Reduce by 40% the time taken GetEntry for a branch created using a leaflist (exclusive of the decompression time).

Cache the current basket and its limit.
Reorder the set of test to reduce the number of conditional jump in the most common cases
and use:
  #define unlikely(expr) __builtin_expect(!!(expr), 0)
  #define likely(expr) __builtin_expect(!!(expr), 1)
to tell the compiler/processor which branch is more likely.
Record whether the buffer's map of classname and object is used to avoid resetting unnecessarily at read time.

Revision 38059 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Feb 13 21:12:16 2011 UTC (3 years, 11 months ago) by pcanal
File length: 9914 byte(s)
Diff to previous 37168
Significant improvement of the performance of SetBranchAddress/SetAddress (by a factor 3 to 10 depending on the length/complexity of the classname ).

Revision 37168 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Dec 2 02:34:55 2010 UTC (4 years, 1 month ago) by pcanal
File length: 9790 byte(s)
Diff to previous 36453
In TBranch CopyAddress (and hence indirectly in the fast cloning)
avoid having to read the first entry just to get the address set
and do the address setting directly.

In FlushOneBasket, do no delete the basket and buffer just because
it has already been flushed (it just so happen to be exactly full
at the same entry as the flushing is done).

Revision 36453 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Oct 29 12:59:23 2010 UTC (4 years, 2 months ago) by brun
File length: 9751 byte(s)
Diff to previous 35231
Add a new function TBranch::SetStatus
It is much faster to call this function in case of a Tree with many branches
instead of calling TTree::SetBranchStatus

Revision 35231 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Sep 10 17:59:10 2010 UTC (4 years, 4 months ago) by pcanal
File length: 9702 byte(s)
Diff to previous 34969
Dramatically reduce the amount of memory allocation induces by the management of the TBasket and TBuffer
for each branch.  Instead of creating one TBasket object and one TBuffer object and its associated memory buffer
for each onfile basket of each branch, we now create only one TBasket and one TBuffer object for the lifetime of
each branch.  The memory buffer associated with the TBuffer object is also created once and rarely reallocated;
it is reallocated only when the buffer size is reset (for example by the AutoFlush mechanism) and when the user
object do not fit in the currently allocated memory (but we do not shrink it after that.  The same minization 
is applied to the scratch area used to read the compressed version of a basket from the file.

In TBasket introduce new data member fCompressedBuffer and fCompressedSize to keep track of the scratch memory
area used to read compressed data from the file (Even though we already have fBufferRef and fBuffer from TKey,
they are too tied together to properly used in the case of long live TBasket).

Add a TBasket::Reset member function to return the basket to its original 'unread' or 'unfilled' state.

Add TBranch::GetFreshBasket to factor out the code deciding whether to create a new TBasket object or 
to reuse an existing one.

Revision 34969 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Aug 24 19:01:19 2010 UTC (4 years, 5 months ago) by pcanal
File length: 9672 byte(s)
Diff to previous 34832
Replace the ReadLeaves virtual function by a fReadLeaves pointer to member function,
this allows the customization of the ReadLeaves function at run-time depending on the
underlying user class layout in TBranchElement.  This removes many if statements whose
'answer' is known at initialization time.  [ReadLeavesMakeClass and ReadLeavesCollection
still need further decomposition]

Introduce TBranch::Set/GetMakeClass to independently set each branch in MakeClass mode 
and to have a good place to switch the ReadLeaves function appropriately (to and from
the MakeClass mode (also known as the decomposed object mode)).   This can also be
used to reset the mode of some branch with a MakeClass/MakeSelector file.

Revision 34832 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Aug 17 14:47:30 2010 UTC (4 years, 5 months ago) by pcanal
File length: 9427 byte(s)
Diff to previous 33097
Fix TChain::GetListOfBranches documentation and add documentation to TBranch::GetClassName

Revision 33097 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Apr 19 21:47:55 2010 UTC (4 years, 9 months ago) by pcanal
File length: 9441 byte(s)
Diff to previous 32339
Remove reliance on gDirectory to set TBranch::fDirectory ; instead use the new function TBranch::UpdateFile to be called from TTree::DirectoryAutoAdd.  This avoids forcing the user to explicitly cd to the input directory before calling TKey::ReadObj for a TTree object

Revision 32339 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Feb 12 23:34:41 2010 UTC (4 years, 11 months ago) by pcanal
File length: 9406 byte(s)
Diff to previous 29934
Improve performance of TBranch::DropBaskets in the common case (only one basket).
Prevent DropBaskets from dropping baskets that are not stored individually (and hence potentially not recoverable).
Prevent DropBaskets from leaking TBaskets baskets.

Revision 29934 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Aug 27 13:54:34 2009 UTC (5 years, 4 months ago) by brun
File length: 9340 byte(s)
Diff to previous 29599
Modify TBranch::DropBaskets:
- small speedup in case of branches with many buffers.
-Remove the members fBasketsRAM and fNBasketsRAM

Revision 29599 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Jul 27 15:42:23 2009 UTC (5 years, 5 months ago) by pcanal
File length: 9494 byte(s)
Diff to previous 25980
The default length fEntryOffset can now  be set via TTree::SetDefaultEntryOffsetLen which can be optionially applied to the  existing branches.

Revision 25980 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Oct 27 18:17:39 2008 UTC (6 years, 2 months ago) by pcanal
File length: 9481 byte(s)
Diff to previous 25474
From Christian Klein-Boesing and me:
Synchronize the algorithm to find the file where a branch is stored and the algorithm used
to find the file for closure (in the TBranch destructor).
Also, add protection in case branches are stored in a separate file and the file can not be open

Revision 25474 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Sep 19 16:32:47 2008 UTC (6 years, 4 months ago) by pcanal
File length: 9440 byte(s)
Diff to previous 24454
Add kMapObject to allow (via mybranch->ResetBit(kMapObject)) the explicitly disabling of the object registration within a branch (if you are sure that there is not a pointer pointing back to the nesting object within this branch

Revision 24454 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Jun 21 03:13:04 2008 UTC (6 years, 7 months ago) by pcanal
File length: 9381 byte(s)
Diff to previous 23378
Disk and Memory Space Gain

In ROOT older than v5.20/00, the branches' last basket, also known as the write basket, was always saved in the same "key" as the TTree object and was always present in memory when reading or writing. When reading this write basket was always present in memory even if the branch was never accessed. 

Starting in v5.20/00, TTree::Write closes out, compresses (when requested) and writes to disk in their own file record the write baskets of all the branches. (This is implemented via the new function TTree::FlushBaskets, TBranch::FlushBaskets, TBranch::FlushOneBaskets) 

TTree::AutoSave supports a new option "FlushBaskets" which will call FlushBaskets before saving the TTree object. 

Benefits

- Flushing the write baskets has several advantages: 
- Reduce the file size of the TTree object (it not longer contains the last basket), improving read time of the TTree object 
- Reduce memory footprint of the TTree object. 
   - In a TTree which "flushed" buffer, there is now usually only zero or one buffer in memory. 
   - Previously each branch always had at least one basket in memory and usually 2 (the write basket and one read basket). 
   - Now only the basket of the branches actually read are loaded in memory. 
- allow for the basket to be compressed and stored separated, increasing the compression factor. 

Note: Calling FlushBaskets too often (either directly of via AutoSave("FlushBaskets")) can lead to unnecessary fragmentation of the ROOT file, since it write the baskets to disk (and a new basket will be started at the next fill) whether or not the content was close to filling the basket or not. 

The fast tree cloning (TTreeCloner) was enhanced to support copying in-memory TTrees (that have been save as a single key on file). This issue was preventing hadd to fast clone files containing any 'in-memory' tree.

Revision 23378 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Apr 22 07:13:36 2008 UTC (6 years, 9 months ago) by brun
File length: 9230 byte(s)
Diff to previous 23230
Add a new function
void TBranch::DeleteBaskets(Option_t* option)
   // Loop on all branch baskets. If the file where branch buffers reside is
   // writable, free the disk space associated to the baskets of the branch,
   // then call Reset(). If the option contains "all", delete also the baskets
   // for the subbranches.
   // The branch is reset.
   // NOTE that this function must be used with extreme care. Deleting branch baskets
   // fragments the file and may introduce inefficiencies when adding new entries
   // in the Tree or later on when reading the Tree.

Revision 23230 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Apr 15 15:33:32 2008 UTC (6 years, 9 months ago) by pcanal
File length: 9173 byte(s)
Diff to previous 22902
Introduce a way to create branch using directly
an object:
  MyClass object;
  TBranch *branch = tree->Branch(branchname, &object, bufsize, splitlevel)

Revision 22902 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Mar 31 09:48:42 2008 UTC (6 years, 9 months ago) by rdm
File length: 9127 byte(s)
Diff to previous 22882
move tree, treeplayer and treeviewer under tree meta directory.

Revision 22882 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Mar 28 12:01:58 2008 UTC (6 years, 9 months ago) by pcanal
Original Path: trunk/tree/inc/TBranch.h
File length: 9127 byte(s)
Diff to previous 21867
Remove the calls to MapObject introduce in revision 21384 when 
are unnecessary hence restoring lost performance in case where
the TTree contains many simple type (double, int, etc.)

Revision 21867 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Jan 28 08:34:00 2008 UTC (6 years, 11 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 9063 byte(s)
Diff to previous 21861
Fix coding conventions

Revision 21861 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Jan 26 09:47:41 2008 UTC (6 years, 11 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 9056 byte(s)
Diff to previous 20882
From Lukasz Janyst:
   * TBranch: add a possibility of starting from non-zero entry

   * TBranchSTL and TIndArray: new classes for handling STL collections
     of pointers

   * TTree, TBranchElement, TTreeFormula: code handling new type of
     branch added

Revision 20882 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Nov 19 11:31:26 2007 UTC (7 years, 2 months ago) by rdm
Original Path: trunk/tree/inc/TBranch.h
File length: 8864 byte(s)
Diff to previous 19826
Set property svn:eol-style LF on all source and Makefiles. This should avoid
problems with Win32 line endings ending up in the repository. All MS tools
support LF eols fine.

Revision 19826 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Sep 19 19:56:11 2007 UTC (7 years, 4 months ago) by rdm
Original Path: trunk/tree/inc/TBranch.h
File length: 8864 byte(s)
Diff to previous 19825
imported svn:keywords Id property

Revision 19825 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Sep 19 19:49:10 2007 UTC (7 years, 4 months ago) by rdm
Original Path: trunk/tree/inc/TBranch.h
File length: 8912 byte(s)
Diff to previous 19673
remove :$ from tag line

Revision 19673 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Aug 23 14:34:03 2007 UTC (7 years, 5 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 8922 byte(s)
Diff to previous 19578
Add an optional argument and extend functionality of the following functions in TBranch
Long64_t TBranch::GetTotBytes(Option_t *option) const
   // Return total number of bytes in the branch (excluding current buffer)
   // if option ="*" includes all sub-branches of this branch too

Long64_t TBranch::GetZipBytes(Option_t *option) const
   // Return total number of zip bytes in the branch
   // if option ="*" includes all sub-branches of this branch too

Revision 19578 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Aug 9 08:33:55 2007 UTC (7 years, 5 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 8905 byte(s)
Diff to previous 18617
Move the inline implementation of TBranch::ResetCount to the implementation file such
that the function can be called from another DLL on Windows.

Revision 18617 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Apr 27 16:49:16 2007 UTC (7 years, 8 months ago) by pcanal
Original Path: trunk/tree/inc/TBranch.h
File length: 8919 byte(s)
Diff to previous 18403
Remove unused parameters from TBranch::Init

Revision 18403 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Mar 26 16:02:09 2007 UTC (7 years, 10 months ago) by pcanal
Original Path: trunk/tree/inc/TBranch.h
File length: 8959 byte(s)
Diff to previous 17680
Cache the branch mother and direct parent to improve performance

Revision 17680 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Feb 4 17:39:44 2007 UTC (7 years, 11 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 8554 byte(s)
Diff to previous 15849
-Move typedefs previously in Htypes.h and Gtypes.h to Rtypes.h
-Move enum EColorType to Rtypes.h
-Move enum EMarkerStyle to TAttMarker
-Move enum ELineStyle to TAttLine
-Replace all references to Htypes.h or Gtypes.h by Rtypes.h

Revision 15849 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Jul 26 13:36:44 2006 UTC (8 years, 6 months ago) by rdm
Original Path: trunk/tree/inc/TBranch.h
File length: 8661 byte(s)
Diff to previous 15134
Instead of providing default implementations for copy ctor's and assignment
operators we better make them private (and not implemented) to avoid people
from accidentally using them. Especially the collections classes and the
TQObject derived classes. In these classes the default implementations would
cause havoc due to multiple deletions of the same objects and other
potential memory corruptions.

Revision 15134 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue May 23 04:47:42 2006 UTC (8 years, 8 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 8604 byte(s)
Diff to previous 15010
From Federico Carminati:

"I have implemented all copy and equal operators needed to silence all
warnings in AliRoot, as requested. I have implemented shallow copies as
would do the default operators synthetized by the compiler.
Most operators are protected. If users complain, you just have to move
them into the public area, but class derivation is of course supported.
It has been a terrible job, I have modified 278 files, but the changes
are backward compabile, and this goes a long way to permitting user to
use the effc++ flag with root headers."

Revision 15010 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri May 12 12:24:27 2006 UTC (8 years, 8 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 8622 byte(s)
Diff to previous 14721
From Federico Carminati
More changes in view of a full support for effc++ option

Revision 14721 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Apr 17 21:21:59 2006 UTC (8 years, 9 months ago) by pcanal
Original Path: trunk/tree/inc/TBranch.h
File length: 8534 byte(s)
Diff to previous 13262
Add support in the fast cloning method for files where the basket
have been stored 'out-of-order' (i.e. for a given branch a basket with
higher entry number is located early in the file)

Revision 13262 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Nov 16 20:20:01 2005 UTC (9 years, 2 months ago) by pcanal
Original Path: trunk/tree/inc/TBranch.h
File length: 8513 byte(s)
Diff to previous 13207
Add utility functions to implement the raw copy of a basket

Revision 13207 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Nov 11 22:16:04 2005 UTC (9 years, 2 months ago) by pcanal
Original Path: trunk/tree/inc/TBranch.h
File length: 8420 byte(s)
Diff to previous 11925
Update the spacing and documentation to match the coding rule

Revision 11925 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue May 31 19:47:41 2005 UTC (9 years, 7 months ago) by pcanal
Original Path: trunk/tree/inc/TBranch.h
File length: 8513 byte(s)
Diff to previous 11376
This patch add the virtual functions need for the implementation
of TTree over SQL.  In particular this virtualizes the creation
of TBasket(s).

Revision 11376 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Mar 19 16:39:39 2005 UTC (9 years, 10 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 8460 byte(s)
Diff to previous 11281
From Axel:
Implement the possibility to histogram members of a class
from the TBrowser, even in the case where the Tree has been built
in no split mode.

Revision 11281 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Mar 10 17:57:05 2005 UTC (9 years, 10 months ago) by rdm
Original Path: trunk/tree/inc/TBranch.h
File length: 8333 byte(s)
Diff to previous 10613
From Marek Biskup:
major new PROOF developments:
 - access to PROOF directly via the TChain interface (creating a TDSet
   in the background).
 - access to PROOF based trees via the TTreeViewer
 - fully implemented the TChain/TDSet::Draw() interface.
 - PROOF sessions can now be browsed via the TBrowser

Revision 10613 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Nov 24 14:11:38 2004 UTC (10 years, 2 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 8312 byte(s)
Diff to previous 9663
Add the following member functions to TBranch and TTree
Int_t TTree::LoadBaskets(Long64_t maxmemory)
{
  // Read in memory all baskets from all branchs up to the limit
  // of maxmemory bytes.
  // if maxmemory is non null and positive SetVaxVirtualSize is called
  // with this value. Default for maxmemory is 2000000000 (2 Gigabytes).
  // The function returns the total number of baskets read into memory
  // if negative an error occured while loading the branches.
  // This method may be called to force branch baskets in memory
  // when random access to branch entries is required.
  // If random access to only a few branches is required, you should
  // call directly TBranch::LoadBaskets.

Int_t TBranch::LoadBaskets()
{
//  Baskets associated to this branch are forced to be in memory
//  You can call TTree::SetMaxVirtualSize(maxmemory) to instruct
//  the system that the total size of the imported baskets do not
//  exceed maxmemory bytes.
//  The function returns the number of baskets that have been put in memory
//  This method may be called to force all baskets of one or more branch
//  in memory when random access to entries in this branch is required.
//  See also TTree::LoadBaskets to load all baskets of all branches in memory.

Revision 9663 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Aug 3 14:50:51 2004 UTC (10 years, 5 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 8275 byte(s)
Diff to previous 9615
Implement a first version of circular buffers for memory resident Trees.
New data member
   Long64_t  fMaxEntries;  //  Maximum number of entries for the circular buffers
and corresponding function:
   void TTree::SetCircular(Long64_t maxEntries)
where maxEntries is the maximum number of entries to be kept in the buffers.
When the number of entries exceeds this value, the first entries in the Tree
are deleted and the buffers used again.
The implementation minimizes memory operations by swapping basket pointers
and only shifting the data in the new first buffer.

When TTree::Fill reaches fMaxEntries, it calls the new TBranch function:
     virtual void      KeepCircular(Long64_t maxEntries);
In case a branch buffer needs to be recomputed, this function calls
the new function in TBasket
     virtual void    MoveEntries(Int_t dentries);

An example of a script using a circular buffer is shown below

void circular() {
     gROOT->cd(); //make sure that the Tree is memory resident
     TTree *T = new TTree("T","test circular buffers");
     TRandom r;
     Float_t px,py,pz;
     Double_t random;
     UShort_t i;
     T->Branch("px",&px,"px/F");
     T->Branch("py",&py,"px/F");
     T->Branch("pz",&pz,"px/F");
     T->Branch("random",&random,"random/D");
     T->Branch("i",&i,"i/s");
     T->SetCircular(20000);
     for (i = 0; i < 65000; i++) {
        r.Rannor(px,py);
        pz = px*px + py*py;
        random = r.Rndm();
        T->Fill();
     }
     T->Print();
}

Revision 9615 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Jul 29 10:54:55 2004 UTC (10 years, 5 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 8218 byte(s)
Diff to previous 7810

*****************WARNING*****************
With this mega patch, we introduce support for TTree/TChain  with more than
2 billion entries. Several class data members have been changed from
Int_t (or Stat_t) to Long64_t.
==>Trees written with this new version cannot be read with older versions
******************************************

TBranch:
========
 - replace the members with type Int_t or Stat_t by Long64_t
    Long64_t    fEntryNumber;     //  Current entry number (last one filled in this branch)
    Long64_t    fReadEntry;       //! Current entry number when reading
    Long64_t    fEntries;         //  Number of entries
    Long64_t    fTotBytes;        //  Total number of bytes in all leaves before compression
    Long64_t    fZipBytes;        //  Total number of bytes in all leaves after compression
    Long64_t   *fBasketEntry;     //[fMaxBaskets] Table of first entry in eack basket

 - corresponding changes in the member functions
    virtual Int_t     GetEntry(Long64_t entry=0, Int_t getall = 0);
    virtual Int_t     GetEntryExport(Long64_t entry, Int_t getall, TClonesArray *list, Int_t n);
            Int_t     GetEvent(Long64_t entry=0) {return GetEntry(entry);}
            Long64_t *GetBasketEntry() const {return fBasketEntry;}
            Long64_t  GetReadEntry()   const {return fReadEntry;}
            Long64_t  GetTotalSize()   const;
            Long64_t  GetTotBytes()    const {return fTotBytes;}
            Long64_t  GetZipBytes()    const {return fZipBytes;}
            Long64_t  GetEntryNumber() const {return fEntryNumber;}
            Long64_t  GetEntries()     const {return fEntries;}

TBranch::Streamer has been modified to read old files and automatically translate
the old types to the new types.
The new version of Streamer uses the TClass::ReadBuffer/WriteBuffer.

TBranch::Print has been modified to take into account the new data types.

ClassDef version increased to 10.

TBranchClones:
==============
    virtual Int_t    GetEntry(Long64_t entry=0, Int_t getall = 0);

TBranchElement:
===============
            Int_t    GetEntry(Long64_t entry=0, Int_t getall = 0);

TBranchObject:
==============
    virtual Int_t    GetEntry(Long64_t entry=0, Int_t getall = 0);

TChain:
=======
    Long64_t    *fTreeOffset;       //[fTreeOffsetLen]Array of variables

    virtual Int_t     Add(const char *name, Long64_t nentries=kBigNumber);
    virtual Int_t     AddFile(const char *name, Long64_t nentries=kBigNumber);
    virtual Long64_t  Draw(const char *varexp, const TCut &selection, Option_t *option=""
                       ,Long64_t nentries=kBigNumber, Long64_t firstentry=0);
    virtual Long64_t  Draw(const char *varexp, const char *selection, Option_t *option=""
                     ,Long64_t nentries=kBigNumber, Long64_t firstentry=0); // *MENU*
    virtual Long64_t  GetChainEntryNumber(Long64_t entry) const;
    virtual Long64_t  GetEntries() const;
    virtual Int_t     GetEntry(Long64_t entry=0, Int_t getall=0);
            Long64_t  LoadTree(Long64_t entry);
    virtual void      Loop(Option_t *option="",Long64_t nentries=kBigNumber, Long64_t firstentry=0); // *MENU*
    virtual Long64_t  Merge(const char *name);
    virtual Long64_t  Merge(TCollection *list);
    virtual Long64_t  Merge(TFile *file, Int_t basketsize, Option_t *option="");
    virtual Long64_t  Process(const char *filename,Option_t *option="", Long64_t nentries=kBigNumber, Long64_t firstentry=0); // *MENU*
    virtual Long64_t  Process(TSelector *selector,Option_t *option="",  Long64_t nentries=kBigNumber, Long64_t firstentry=0);

ClassDef version changed from 4 to 5

TSelector
=========
   virtual Bool_t      ProcessCut(Long64_t /*entry*/) { return kTRUE; }
   virtual void        ProcessFill(Long64_t /*entry*/) { }
   virtual Bool_t      Process(Long64_t /*entry*/) { return kFALSE; }

TSelectorCint
=============
   virtual Bool_t      ProcessCut(Long64_t entry);
   virtual void        ProcessFill(Long64_t entry);
   virtual Bool_t      Process(Long64_t entry);

TSelectorDraw
=============
    Long64_t       fDraw;           //! Last entry loop number when object was drawn
    Long64_t       fSelectedRows;   //  Number of selected entries
    Long64_t       fOldEstimate;    //  value of Tree fEstimate when selector is called
    Double_t      *fV1;             //![fSelectedRows]Local buffer for variable 1
    Double_t      *fV2;             //![fSelectedRows]Local buffer for variable 2
    Double_t      *fV3;             //![fSelectedRows]Local buffer for variable 3
    Double_t      *fV4;             //![fSelectedRows]Local buffer for variable 4
    Double_t      *fW;              //![fSelectedRows]Local buffer for weights

    virtual Long64_t  GetSelectedRows() const {return fSelectedRows;}
    virtual Bool_t    Process(Long64_t /*entry*/) { return kFALSE; }
    virtual void      ProcessFill(Long64_t entry);
    virtual void      ProcessFillMultiple(Long64_t entry);
    virtual void      ProcessFillObject(Long64_t entry);
    virtual void      SetEstimate(Long64_t n);

TTree
=====
Modified data types
    Long64_t       fEntries;           //  Number of entries
    Long64_t       fTotBytes;          //  Total number of bytes in all branches before compression
    Long64_t       fZipBytes;          //  Total number of bytes in all branches after compression
    Long64_t       fSavedBytes;        //  Number of autosaved bytes
    Long64_t       fMaxEntryLoop;      //  Maximum number of entries to process
    Long64_t       fMaxVirtualSize;    //  Maximum total size of buffers kept in memory
    Long64_t       fAutoSave;          //  Autosave tree when fAutoSave bytes produced
    Long64_t       fEstimate;          //  Number of entries to estimate histogram limits
    Long64_t       fChainOffset;       //! Offset of 1st entry of this Tree in a TChain
    Long64_t       fReadEntry;         //! Number of the entry being processed
    Long64_t       fTotalBuffers;      //! Total number of bytes in branch buffers
    Long64_t       fDebugMin;          //! First entry number to debug
    Long64_t       fDebugMax;          //! Last entry number to debug

New function signatures
    virtual Long64_t     AutoSave(Option_t *option="");
    virtual TTree       *CloneTree(Long64_t nentries=-1, Option_t *option="");
    virtual Long64_t     CopyEntries(TTree *tree, Long64_t nentries=-1);
    virtual TTree       *CopyTree(const char *selection, Option_t *option=""
                          ,Long64_t nentries=1000000000, Long64_t firstentry=0);
    virtual Long64_t     Draw(const char *varexp, const TCut &selection, Option_t *option=""
                          ,Long64_t nentries=1000000000, Long64_t firstentry=0);
    virtual Long64_t     Draw(const char *varexp, const char *selection, Option_t *option=""
                          ,Long64_t nentries=1000000000, Long64_t firstentry=0); // *MENU*
    virtual Long64_t     Fit(const char *funcname ,const char *varexp, const char *selection="",Option_t *option="" ,Option_t *goption=""
                          ,Long64_t nentries=1000000000, Long64_t firstentry=0); // *MENU*
    virtual Long64_t     GetChainEntryNumber(Long64_t entry) const {return entry;}
    virtual Long64_t     GetChainOffset() const { return fChainOffset; }
            Long64_t     GetDebugMax()  const {return fDebugMax;}
            Long64_t     GetDebugMin()  const {return fDebugMin;}
    virtual Long64_t     GetEntries() const   {return fEntries;}
    virtual Long64_t     GetEntriesFast() const   {return fEntries;}
    virtual Long64_t     GetEntriesFriend() const;
    virtual Long64_t     GetEstimate() const { return fEstimate; }
    virtual Int_t        GetEntry(Long64_t entry=0, Int_t getall=0);
            Int_t        GetEvent(Long64_t entry=0, Int_t getall=0) {return GetEntry(entry,getall);}
    virtual Long64_t     GetEntryNumberWithBestIndex(Int_t major, Int_t minor=0) const;
    virtual Long64_t     GetEntryNumberWithIndex(Int_t major, Int_t minor=0) const;
    virtual Long64_t     GetEntryNumber(Long64_t entry) const;
    virtual Long64_t     GetMaxEntryLoop() const {return fMaxEntryLoop;}
    static  Long64_t     GetMaxTreeSize();
    virtual Long64_t     GetMaxVirtualSize() const {return fMaxVirtualSize;}
    virtual Long64_t     GetReadEntry()  const {return fReadEntry;}
    virtual Long64_t     GetReadEvent()  const {return fReadEntry;}
    virtual Long64_t     GetSelectedRows() {return GetPlayer()->GetSelectedRows();}
    virtual Long64_t     GetTotBytes() const {return fTotBytes;}
    virtual Long64_t     GetZipBytes() const {return fZipBytes;}
    virtual Long64_t     LoadTree(Long64_t entry);
    virtual Long64_t     LoadTreeFriend(Long64_t entry, TTree *T);
    virtual Long64_t     Merge(TCollection *list);
    TPrincipal          *Principal(const char *varexp="", const char *selection="", Option_t *option="np"
                                   ,Long64_t nentries=1000000000, Long64_t firstentry=0);
    virtual Long64_t     Process(const char *filename,Option_t *option="", Long64_t nentries=1000000000, Long64_t firstentry=0); // *MENU*
    virtual Long64_t     Process(TSelector *selector, Option_t *option="", Long64_t nentries=1000000000, Long64_t firstentry=0);
    virtual Long64_t     Project(const char *hname, const char *varexp, const char *selection="", Option_t *option=""
                          ,Long64_t nentries=1000000000, Long64_t firstentry=0);
    virtual TSQLResult  *Query(const char *varexp="", const char *selection="", Option_t *option=""
                          ,Long64_t nentries=1000000000, Long64_t firstentry=0);
    virtual Long64_t     Scan(const char *varexp="", const char *selection="", Option_t *option=""
                          ,Long64_t nentries=1000000000, Long64_t firstentry=0); // *MENU*
    virtual void         SetDebug(Int_t level=1, Long64_t min=0, Long64_t max=9999999); // *MENU*
    virtual void         SetEntries(Long64_t n);
    virtual void         SetEstimate(Long64_t nentries=10000);
    virtual void         SetMaxEntryLoop(Long64_t maxev=1000000000) {fMaxEntryLoop = maxev;} // *MENU*
    static  void         SetMaxTreeSize(Long64_t maxsize=1900000000);
    virtual void         SetMaxVirtualSize(Long64_t size=0) {fMaxVirtualSize = size;} // *MENU*
    virtual void         Show(Long64_t entry=-1, Int_t lenmax=20);
    virtual Long64_t     UnbinnedFit(const char *funcname ,const char *varexp, const char *selection="",Option_t *option=""
                          ,Long64_t nentries=1000000000, Long64_t firstentry=0);

TTree::Streamer has been modified to real old files.
TTree::Print has been modified to take into account the new data types.

ClassDef version number incremented to 13.

TVirtualTreePlayer
==================
    virtual TTree         *CopyTree(const char *selection, Option_t *option=""
                            ,Long64_t nentries=1000000000, Long64_t firstentry=0) = 0;
    virtual Long64_t       DrawScript(const char* wrapperPrefix,
                                      const char *macrofilename, const char *cutfilename,
                                      Option_t *option, Long64_t nentries, Long64_t firstentry) = 0;
    virtual Long64_t       DrawSelect(const char *varexp, const char *selection, Option_t *option
                            ,Long64_t nentries, Long64_t firstentry) = 0;
    virtual Long64_t       Fit(const char *formula ,const char *varexp, const char *selection,Option_t *option ,Option_t *goption
                            ,Long64_t nentries, Long64_t firstentry) = 0;
    virtual Long64_t       GetSelectedRows() const = 0;
    virtual TPrincipal    *Principal(const char *varexp="", const char *selection="", Option_t *option="np"
                           ,Long64_t nentries=1000000000, Long64_t firstentry=0) = 0;
    virtual Long64_t       Process(const char *filename,Option_t *option="", Long64_t nentries=1000000000, Long64_t firstentry=0) = 0;
    virtual Long64_t       Process(TSelector *selector,Option_t *option="",  Long64_t nentries=1000000000, Long64_t firstentry=0) = 0;
    virtual Long64_t       Scan(const char *varexp, const char *selection, Option_t *option
                            ,Long64_t nentries, Long64_t firstentry) = 0;
    virtual TSQLResult    *Query(const char *varexp, const char *selection, Option_t *option
                            ,Long64_t nentries, Long64_t firstentry) = 0;
    virtual void           SetEstimate(Long64_t n) = 0;
    virtual Long64_t       UnbinnedFit(const char *formula ,const char *varexp, const char *selection,Option_t *option
                            ,Long64_t nentries, Long64_t firstentry) = 0;

TTreeFormula
============
   TLeaf*      GetLeafWithDatamember(const char* topchoice, const char* nextchice, Long64_t readentry) const;
   Bool_t      BranchHasMethod(TLeaf* leaf, TBranch* branch,
                               const char* method,const char* params,
                               Long64_t readentry) const;

TTreePlayer
===========
    Long64_t       fSelectedRows;    //  Number of selected entries

    virtual TTree    *CopyTree(const char *selection, Option_t *option
                       ,Long64_t nentries, Long64_t firstentry);
    virtual Long64_t  DrawScript(const char* wrapperPrefix,
                                 const char *macrofilename, const char *cutfilename,
                                 Option_t *option, Long64_t nentries, Long64_t firstentry);
    virtual Long64_t  DrawSelect(const char *varexp, const char *selection, Option_t *option
                                 ,Long64_t nentries, Long64_t firstentry);
    virtual Long64_t  Fit(const char *formula ,const char *varexp, const char *selection,Option_t *option ,
                          Option_t *goption ,Long64_t nentries, Long64_t firstentry);
    virtual Long64_t  GetSelectedRows() const {return fSelectedRows;}
    TPrincipal       *Principal(const char *varexp, const char *selection, Option_t *option
                       ,Long64_t nentries, Long64_t firstentry);
    virtual Long64_t  Process(const char *filename,Option_t *option, Long64_t nentries, Long64_t firstentry);
    virtual Long64_t  Process(TSelector *selector,Option_t *option,  Long64_t nentries, Long64_t firstentry);
    virtual Long64_t  Scan(const char *varexp, const char *selection, Option_t *option
                       ,Long64_t nentries, Long64_t firstentry);
    virtual TSQLResult *Query(const char *varexp, const char *selection, Option_t *option
                         ,Long64_t nentries, Long64_t firstentry);
    virtual void      SetEstimate(Long64_t n);
    virtual Long64_t  UnbinnedFit(const char *formula ,const char *varexp, const char *selection,Option_t *option
                       ,Long64_t nentries, Long64_t firstentry);

The generated code by TTreePlayer::MakeCode, MakeClass, MakeProxy
uses Long64_t instead of Int_t

TTreeViewer
===========
    Long64_t      Process(const char* filename, Option_t *option="", Long64_t nentries=1000000000, Long64_t firstentry=0); // *MENU*
    void          SetCurrentRecord(Long64_t entry);

THbookBranch
============
    virtual Int_t    GetEntry(Long64_t entry=0, Int_t getall=0);
    virtual void     SetEntries(Long64_t n) {fEntries=n;}

THbookTree
==========
    virtual Int_t    GetEntry(Long64_t entry=0, Int_t getall=0);
    virtual void     InitBranches(Long64_t entry);
    virtual void     SetEntries(Long64_t n);

TProofDraw
==========
    virtual Bool_t   Process(Long64_t /*entry*/);

TProofPlayer
============
    virtual Long64_t  Process(TDSet *set,
    virtual Long64_t  DrawSelect(TDSet *set, const char *varexp,
    Long64_t          Process(TDSet *set, const char *selector,
    Long64_t          DrawSelect(TDSet *set, const char *varexp,

Revision 7810 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Dec 30 13:16:51 2003 UTC (11 years ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 8110 byte(s)
Diff to previous 7572
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.

Revision 7572 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Nov 12 07:23:08 2003 UTC (11 years, 2 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 8110 byte(s)
Diff to previous 6824
Protect TChain::GetEntry in case of an empty chain.
Add a comment in the function indicating that 0 bytes are returned
in this case.

Revision 6824 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jul 4 13:27:35 2003 UTC (11 years, 6 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 8068 byte(s)
Diff to previous 6512
From Philippe:
This update remove the need to set the addresses before calling CloneTree or CopyTree.  This is accomplished by
        - making sure that default addresses are created before passing it to the clone.
        - keep a list of cloned trees and inform them when an address change.

Also hard to trace memory errors due to the 'link' between the original and the cloned tree are removed by
making the original reset all the addresses of the cloned tree whenever the original tree/chain is deleted.

Revision 6512 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Apr 30 16:29:31 2003 UTC (11 years, 8 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 8031 byte(s)
Diff to previous 6244
From Philippe:
This patch adds the capability to transfer buffer directly from one tree to another
without creating the contained objects or even without uncompressing the buffer
(in the case where there is only one object in the buffer).

This code has been in usage in CDF for at least 1 1/2 year and the code has not been
changed since at least 12 months.

Revision 6244 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Mar 4 22:24:39 2003 UTC (11 years, 10 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 7827 byte(s)
Diff to previous 6057
Move getter functions GetMother and GetSubBranch from TBranchElement
to the base class TBranch

Revision 6057 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Feb 5 15:07:29 2003 UTC (11 years, 11 months ago) by rdm
Original Path: trunk/tree/inc/TBranch.h
File length: 7728 byte(s)
Diff to previous 5918
if a branch is a folder use a different icon then when it is not (like for
branch elements).

Revision 5918 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Jan 15 18:48:16 2003 UTC (12 years ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 7686 byte(s)
Diff to previous 4381
*** empty log message ***

Revision 4381 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Apr 19 09:36:11 2002 UTC (12 years, 9 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 7616 byte(s)
Diff to previous 3737
Add a new function GetTotalSize returning the total size in bytes
of the branch buffers on disk + the current buffer in memory.
Modify TBranch::Print to print the info returned by GetTotalSize

Revision 3737 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Jan 23 08:38:59 2002 UTC (13 years ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 7573 byte(s)
Diff to previous 3031
TBranch::SetBasketSize moved to the implementation file. The function checks
that the specified basket size is greater than fEntryOffsetLen.
The functions SetBasketSize in all derived classes call TBranch::SetBasketSize
to get the same protection.

Revision 3031 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Oct 15 06:59:52 2001 UTC (13 years, 3 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 7596 byte(s)
Diff to previous 2674
Add new member fSplitLevel in TBranch with correspondig getter GetSplitLevel.
Modify the various branch constructors to store the branch splitlevel..
When reading old files, the fSplitLevel is set to 1 if the branch
has subbranches.

Revision 2674 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Aug 13 17:23:35 2001 UTC (13 years, 5 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 7474 byte(s)
Diff to previous 2053
Add new function GetClassName (was alraedy in TBranchElement).

Revision 2053 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Apr 23 13:53:40 2001 UTC (13 years, 9 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 7413 byte(s)
Diff to previous 2036
Add getter for GetBasketEntry.

Revision 2036 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Apr 21 12:04:30 2001 UTC (13 years, 9 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 7346 byte(s)
Diff to previous 1921
Add new bit kBranchObject. When this bit is set in the branch,
the object in the branch will be entered into the buffer MapObject
when filling or reading the branch.

Revision 1921 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Apr 9 08:15:41 2001 UTC (13 years, 9 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 7282 byte(s)
Diff to previous 1528
Implement new function FindLeaf and FindBranch. These functions were previously
defined as static functions in TTreeFormula.

Revision 1528 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Feb 6 10:55:40 2001 UTC (13 years, 11 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 7182 byte(s)
Diff to previous 1290
Add new functions:
   TBranch::FillLeaves()
   TBranch::ReadLeaves()
These functions are called by TBranch::Fill and TBranch::GetEntry.

Revision 1290 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Dec 26 14:22:16 2000 UTC (14 years, 1 month ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 7092 byte(s)
Diff to previous 1205
Changes in the format of TTree::Print. The branch number is now printed.
A new static member TBranch::fgCount counting the number of branches.
New static function TBranch::ResetCount to reset the new  member fgCount.

Revision 1205 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Dec 13 15:13:57 2000 UTC (14 years, 1 month ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 6985 byte(s)
Diff to previous 1042
      W A R N I N G   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     ==================================================================
A very long list of changes in this pre-release of version 3.00.
We have modified the signature of many functions (in particular TObject)
to introduce more constness in the system.
You must change your code if your class derives from TObject and uses
one of the modified functions such as ls, Print, Compare, Hash, etc.
The modified functions in TObject have the following signature:
   virtual TObject    *Clone() const;
   virtual Int_t       Compare(const TObject *obj) const;
   virtual void        Delete(Option_t *option=""); // *MENU*
   virtual void        DrawClass() const; // *MENU*
   virtual void        DrawClone(Option_t *option="") const; // *MENU*
   virtual void        Dump() const; // *MENU*
   virtual TObject    *FindObject(const TObject *obj) const;
   virtual char       *GetObjectInfo(Int_t px, Int_t py) const;
   virtual ULong_t     Hash() const;
   virtual void        Inspect() const; // *MENU*
   virtual Bool_t      IsEqual(const TObject *obj) const;
   virtual void        ls(Option_t *option="") const;
   virtual void        Print(Option_t *option="") const;

A similar operation has been done with classes such as TH1, TVirtualPad,
TTree, etc.

Revision 1042 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Nov 24 10:29:03 2000 UTC (14 years, 2 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 6817 byte(s)
Diff to previous 976
Cosmetic changes

Revision 976 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Nov 21 20:46:38 2000 UTC (14 years, 2 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 6797 byte(s)
Diff to previous 568
Increment class version number from 5 to 6.
Cleanup and reorder data members.
Declare dimensions in the comment field for members:
fBasketBytes, fBasketEntry and fBasketSeek.
Declare not persistent the members: fNleaves,fReadBasket, fReadEntry,
fNbasketRAM, fBasketRAM, fTree, fAddress, fDirectory and fEntryBuffer.
Declare fBranches, fLeaves and fBaskets with "->" in the comment field.

Revision 568 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Sep 5 09:21:24 2000 UTC (14 years, 4 months ago) by brun
Original Path: trunk/tree/inc/TBranch.h
File length: 6772 byte(s)
Diff to previous 3
The following headers and classes have been modified to take into account;
  - the new signature of IsFolder (now const)
  - the new TObject::FindObject
  - the fact that the static functions of TObject have been moved to TROOT.

Revision 3 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue May 16 17:00:58 2000 UTC (14 years, 8 months ago) by rdm
Original Path: trunk/tree/inc/TBranch.h
File length: 6713 byte(s)
Copied from: branches/rdm/tree/inc/TBranch.h revision 2
Diff to previous 2
This commit was generated by cvs2svn to compensate for changes in r2,
which included commits to RCS files with non-trunk default branches.

Revision 2 - (view) (download) (as text) (annotate) - [select for diffs]
Added Tue May 16 17:00:58 2000 UTC (14 years, 8 months ago) by rdm
Original Path: branches/rdm/tree/inc/TBranch.h
File length: 6713 byte(s)
Initial import of ROOT into CVS

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.

  Diffs between and
  Type of Diff should be a

Sort log by:

Subversion Admin
ViewVC Help
Powered by ViewVC 1.0.9