[root] / trunk / tree / tree / src / TBranchSTL.cxx Repository:
ViewVC logotype

Log of /trunk/tree/tree/src/TBranchSTL.cxx

Parent Directory Parent Directory


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

Revision 41244 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Oct 6 19:42:35 2011 UTC (3 years, 3 months ago) by pcanal
File length: 26464 byte(s)
Diff to previous 40872
Fix Coverity issues:

TBranchSTL: cov 34339 Resource leak (false positive)
TTableDescriptor.cxx: cov 34219,34220 explicit null dereference
TSQLStructure.cxx: cov 34204,34205,34206 Explicit null dereferenced 
TTabCom.cxx: cov 34168 Explicit null dereferenced 
TClassRef.cxx: cove 34165 Explicit null dereferenced (false positive but still confusing coding).
TBufferXML.cxx: 34070 Explicit null dereferenced
TFriendProxyDescriptor.cxx: cov 34066 Uninitialized scalar field
TTreeCloner.cxx: cov 34034057 Dereference null return (stat) 63 Uninitialized scalar field 
TParallelCoordEditor.cxx: 34051,34059,34060,34061 Dereference null return value
TParallelCoord.cxx: 34050,34056, 34057 Dereference null return (stat) 
TBranchProxy.h: 34048 Dereference null return value 
TBranchProxy.cxx: 34043,34044,34045 Dereference null return value
TTree.cxx: 34039 Dereference null return value
TTreePlayer.cxx: 34037 Dereference null return value 
TLeafC.cxx: 34036 Dereference null return value

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: 26314 byte(s)
Diff to previous 40625
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 40625 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Aug 17 22:08:00 2011 UTC (3 years, 5 months ago) by pcanal
File length: 26130 byte(s)
Diff to previous 40624
Avoid spurrious error message (about missing leaf\!) when setting the address of a branch contain a split vector of pointers

Revision 40624 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Aug 17 21:55:21 2011 UTC (3 years, 5 months ago) by pcanal
File length: 24866 byte(s)
Diff to previous 36169
In branch that is splitting a vector of pointer avoid introducing a spurrious dot (.) when the top level branch name already contains it

Revision 36169 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Oct 7 16:06:18 2010 UTC (4 years, 3 months ago) by pcanal
File length: 24640 byte(s)
Diff to previous 34969
Fix Coverity reports 21804 through 21812 (null returns)

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: 24511 byte(s)
Diff to previous 34286
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 34286 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Jul 1 20:38:57 2010 UTC (4 years, 6 months ago) by rdm
File length: 24327 byte(s)
Diff to previous 32159
fix format errors related to TString::Form(), TString::Format(), Form()
and Printf().

Revision 32159 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jan 29 17:17:09 2010 UTC (4 years, 11 months ago) by pcanal
File length: 24401 byte(s)
Diff to previous 31605
Improve thread safety and performance of TStreamerInfo creation and use.
Remove a spurrious error message when in MemberWise streaming mode (see r30751 and r30527)
Insure that the StreamerInfo using in MemberWise streaming in not optimized (previously this was checked/done only for the 'current' StreamerInfo).
Reduce (dramatically) the number of times a StreamerInfo is recompiled.
Add TVirtualStreamerInfo::IsCompiled (to replace use of GetOffset()!=0)

Implementation details:
Remove internal use of TVirtualStreamerInfo::Optimize(kFALSE), replace
by explicit setting of kCannotOptimize.
Remove virtually (and make inline) 3 time critical functions.

Revision 31605 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Dec 7 19:50:39 2009 UTC (5 years, 1 month ago) by pcanal
File length: 24494 byte(s)
Diff to previous 31603
Fix 'reverse_inull' errors found by coverity

Revision 31603 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Dec 7 18:59:15 2009 UTC (5 years, 1 month ago) by pcanal
File length: 24510 byte(s)
Diff to previous 31252
Add missing initialization (found by coverity)

Revision 31252 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Nov 17 20:12:32 2009 UTC (5 years, 2 months ago) by pcanal
File length: 24464 byte(s)
Diff to previous 31238
Properly recover the hierarchy of branch when the top level branch has a trailing dot
and the intermediary branch is TBranchSTL.

Correct the lookup of the CollectionProxy when the sub-branches of a TBranchSTL are
not split (Fixes Savannah #59011).

Expose the sub-branches of a TBranchSTL when calling TTree::Print (by implementing
TBranchSTL::Print()).

Revision 31238 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Nov 17 15:59:29 2009 UTC (5 years, 2 months ago) by pcanal
File length: 22107 byte(s)
Diff to previous 29711
Fix order of routines in file

Revision 29711 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Aug 7 07:50:59 2009 UTC (5 years, 5 months ago) by pcanal
File length: 22085 byte(s)
Diff to previous 24454
Add missing (and essential for set and multiset) call to the collection proxy Commit when reading the 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: 22044 byte(s)
Diff to previous 24169
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 24169 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jun 6 15:23:21 2008 UTC (6 years, 7 months ago) by brun
File length: 22622 byte(s)
Diff to previous 24089
From Lukasz:
Protection added in case the address specified is 0

Revision 24089 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Jun 2 09:32:44 2008 UTC (6 years, 7 months ago) by brun
File length: 22586 byte(s)
Diff to previous 22902
From Lukasz:
fix a bug in the split collection
stuff.

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: 22557 byte(s)
Diff to previous 21867
move tree, treeplayer and treeviewer under tree meta directory.

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/src/TBranchSTL.cxx
File length: 22557 byte(s)
Diff to previous 21861
Fix coding conventions

Revision 21861 - (view) (download) (as text) (annotate) - [select for diffs]
Added Sat Jan 26 09:47:41 2008 UTC (6 years, 11 months ago) by brun
Original Path: trunk/tree/src/TBranchSTL.cxx
File length: 22534 byte(s)
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

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