Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TTreeCloner Class Reference

Class implementing or helping the various TTree cloning method.

Definition at line 31 of file TTreeCloner.h.

Classes

class  CompareEntry
 
class  CompareSeek
 

Public Types

enum  EClonerOptions { kNone = 0 , kNoWarnings = BIT(1) , kIgnoreMissingTopLevel = BIT(2) , kNoFileCache = BIT(3) }
 

Public Member Functions

 TTreeCloner (TTree *from, TDirectory *newdirectory, Option_t *method, UInt_t options=kNone)
 Constructor. In place cloning.
 
 TTreeCloner (TTree *from, TTree *to, Option_t *method, UInt_t options=kNone)
 Constructor.
 
virtual ~TTreeCloner ()
 TTreeCloner destructor.
 
 ClassDef (TTreeCloner, 0)
 
void CloseOutWriteBaskets ()
 Before we can start adding new basket, we need to flush to disk the partially filled baskets (the WriteBasket)
 
void CollectBaskets ()
 Collect the information about the on-file basket that need to be copied.
 
UInt_t CollectBranches ()
 Fill the array of branches, matching the branches of the 'from' and 'to' TTrees Returns the total number of baskets in all the branches.
 
UInt_t CollectBranches (TBranch *from, TBranch *to)
 Fill the array of branches, adding the branch 'from' and 'to', and matching the sub-branches of the 'from' and 'to' branches.
 
UInt_t CollectBranches (TObjArray *from, TObjArray *to)
 Fill the array of branches, matching the branches of the 'from' and 'to' arrays.
 
void CopyMemoryBaskets ()
 Transfer the basket from the input file to the output file.
 
void CopyProcessIds ()
 Make sure that all the needed TStreamerInfo are present in the output file.
 
void CopyStreamerInfos ()
 Make sure that all the needed TStreamerInfo are present in the output file.
 
bool Exec ()
 Execute the cloning.
 
const char * GetWarning () const
 
bool IsInPlace () const
 
bool IsValid ()
 
bool NeedConversion ()
 
void SetCacheSize (Long64_t size)
 Set the cache size used by the matching TFile.
 
void SortBaskets ()
 Sort the basket according to the user request.
 
void WriteBaskets ()
 Transfer the basket from the input file to the output file.
 

Private Types

enum  ECloneMethod { kDefault = 0 , kSortBasketsByBranch = 1 , kSortBasketsByOffset = 2 , kSortBasketsByEntry = 3 }
 

Private Member Functions

 TTreeCloner (const TTreeCloner &)=delete
 
 TTreeCloner (TTree *from, TTree *to, TDirectory *newdirectory, Option_t *method, UInt_t options=kNone)
 Constructor implementation.
 
void CreateCache ()
 Create a TFileCacheRead if it was requested.
 
UInt_t FillCache (UInt_t from)
 Fill the file cache with the next set of basket.
 
void ImportClusterRanges ()
 Set the entries and import the cluster range of the.
 
TTreeCloneroperator= (const TTreeCloner &)=delete
 
void RestoreCache ()
 Restore the TFileCacheRead to its previous value.
 

Private Attributes

UInt_tfBasketBranchNum
 [fMaxBaskets] Index of the branch(es) of the basket.
 
Long64_tfBasketEntry
 [fMaxBaskets] list of basket start entries.
 
UInt_tfBasketIndex
 [fMaxBaskets] ordered list of basket indices to be written.
 
UInt_tfBasketNum
 [fMaxBaskets] index of the basket within the branch.
 
Long64_tfBasketSeek
 [fMaxBaskets] list of basket position to be read.
 
Long64_t fCacheSize
 Requested size of the file cache.
 
UInt_t fCloneMethod
 Indicates which cloning method was selected.
 
TFileCacheReadfFileCache
 File Cache used to reduce the number of individual reads.
 
TObjArray fFromBranches
 
TTreefFromTree
 
bool fIsValid
 
UInt_t fMaxBaskets
 
Option_tfMethod
 
bool fNeedConversion
 True if the fast merge is not possible but a slow merge might possible.
 
UInt_t fOptions
 
UShort_t fPidOffset
 Offset to be added to the copied key/basket.
 
TFileCacheReadfPrevCache
 Cache that set before the TTreeCloner ctor for the 'from' TTree if any.
 
TObjArray fToBranches
 
TDirectoryfToDirectory
 
TFilefToFile
 
Long64_t fToStartEntries
 Number of entries in the target tree before any addition.
 
TTreefToTree
 
TString fWarningMsg
 Text of the error message lead to an 'invalid' state.
 

Friends

class CompareEntry
 
class CompareSeek
 

#include <TTreeCloner.h>

Member Enumeration Documentation

◆ ECloneMethod

Enumerator
kDefault 
kSortBasketsByBranch 
kSortBasketsByOffset 
kSortBasketsByEntry 

Definition at line 62 of file TTreeCloner.h.

◆ EClonerOptions

Enumerator
kNone 
kNoWarnings 
kIgnoreMissingTopLevel 
kNoFileCache 

Definition at line 98 of file TTreeCloner.h.

Constructor & Destructor Documentation

◆ TTreeCloner() [1/4]

TTreeCloner::TTreeCloner ( const TTreeCloner )
privatedelete

◆ TTreeCloner() [2/4]

TTreeCloner::TTreeCloner ( TTree from,
TTree to,
TDirectory newdirectory,
Option_t method,
UInt_t  options = kNone 
)
private

Constructor implementation.

Definition at line 127 of file TTreeCloner.cxx.

◆ TTreeCloner() [3/4]

TTreeCloner::TTreeCloner ( TTree from,
TTree to,
Option_t method,
UInt_t  options = kNone 
)

Constructor.

This object would transfer the data from 'from' to 'to' using the method indicated in method.

The value of the parameter 'method' determines in which order the branches' baskets are written to the output file.

When a TTree is filled the data is stored in the individual branches' basket. Each basket is written individually to the disk as soon as it is full. In consequence the baskets of branches that contain 'large' data chunk are written to the disk more often.

There is currently 3 supported sorting order:

SortBasketsByOffset (the default)
SortBasketsByBranch
SortBasketsByEntry

When using SortBasketsByOffset the baskets are written in the output file in the same order as in the original file (i.e. the basket are sorted on their offset in the original file; Usually this also means that the baskets are sorted on the index/number of the last entry they contain)

When using SortBasketsByBranch all the baskets of each individual branches are stored contiguously. This tends to optimize reading speed when reading a small number (1->5) of branches, since all their baskets will be clustered together instead of being spread across the file. However it might decrease the performance when reading more branches (or the full entry).

When using SortBasketsByEntry the baskets with the lowest starting entry are written first. (i.e. the baskets are sorted on the index/number of the first entry they contain). This means that on the file the baskets will be in the order in which they will be needed when reading the whole tree sequentially.

Definition at line 104 of file TTreeCloner.cxx.

◆ TTreeCloner() [4/4]

TTreeCloner::TTreeCloner ( TTree from,
TDirectory newdirectory,
Option_t method,
UInt_t  options = kNone 
)

Constructor. In place cloning.

This object would transfer the data from 'from' the original location to 'newdirectory' the new directory using the sorting method indicated in method. It updates the 'from' TTree with the new information. See TTreeCloner::TTreeCloner(TTree *from, TTree *to, Option_t *method, UInt_t options) for details on the sorting methods.

Definition at line 119 of file TTreeCloner.cxx.

◆ ~TTreeCloner()

TTreeCloner::~TTreeCloner ( )
virtual

TTreeCloner destructor.

Definition at line 246 of file TTreeCloner.cxx.

Member Function Documentation

◆ ClassDef()

TTreeCloner::ClassDef ( TTreeCloner  ,
 
)

◆ CloseOutWriteBaskets()

void TTreeCloner::CloseOutWriteBaskets ( )

Before we can start adding new basket, we need to flush to disk the partially filled baskets (the WriteBasket)

Definition at line 262 of file TTreeCloner.cxx.

◆ CollectBaskets()

void TTreeCloner::CollectBaskets ( )

Collect the information about the on-file basket that need to be copied.

Definition at line 451 of file TTreeCloner.cxx.

◆ CollectBranches() [1/3]

UInt_t TTreeCloner::CollectBranches ( )

Fill the array of branches, matching the branches of the 'from' and 'to' TTrees Returns the total number of baskets in all the branches.

Definition at line 430 of file TTreeCloner.cxx.

◆ CollectBranches() [2/3]

UInt_t TTreeCloner::CollectBranches ( TBranch from,
TBranch to 
)

Fill the array of branches, adding the branch 'from' and 'to', and matching the sub-branches of the 'from' and 'to' branches.

Returns the total number of baskets in all the from branch and it sub-branches.

Definition at line 279 of file TTreeCloner.cxx.

◆ CollectBranches() [3/3]

UInt_t TTreeCloner::CollectBranches ( TObjArray from,
TObjArray to 
)

Fill the array of branches, matching the branches of the 'from' and 'to' arrays.

Returns the total number of baskets in all the branches.

Definition at line 365 of file TTreeCloner.cxx.

◆ CopyMemoryBaskets()

void TTreeCloner::CopyMemoryBaskets ( )

Transfer the basket from the input file to the output file.

Definition at line 513 of file TTreeCloner.cxx.

◆ CopyProcessIds()

void TTreeCloner::CopyProcessIds ( )

Make sure that all the needed TStreamerInfo are present in the output file.

Definition at line 543 of file TTreeCloner.cxx.

◆ CopyStreamerInfos()

void TTreeCloner::CopyStreamerInfos ( )

Make sure that all the needed TStreamerInfo are present in the output file.

Definition at line 472 of file TTreeCloner.cxx.

◆ CreateCache()

void TTreeCloner::CreateCache ( )
private

Create a TFileCacheRead if it was requested.

Definition at line 596 of file TTreeCloner.cxx.

◆ Exec()

bool TTreeCloner::Exec ( )

Execute the cloning.

Definition at line 222 of file TTreeCloner.cxx.

◆ FillCache()

UInt_t TTreeCloner::FillCache ( UInt_t  from)
private

Fill the file cache with the next set of basket.

Parameters
fromindex of the first lement of fFromBranches to start caching
Returns
The index of first element of fFromBranches that is not in the cache

Definition at line 702 of file TTreeCloner.cxx.

◆ GetWarning()

const char * TTreeCloner::GetWarning ( ) const
inline

Definition at line 117 of file TTreeCloner.h.

◆ ImportClusterRanges()

void TTreeCloner::ImportClusterRanges ( )
private

Set the entries and import the cluster range of the.

Definition at line 626 of file TTreeCloner.cxx.

◆ IsInPlace()

bool TTreeCloner::IsInPlace ( ) const
inline

Definition at line 118 of file TTreeCloner.h.

◆ IsValid()

bool TTreeCloner::IsValid ( )
inline

Definition at line 120 of file TTreeCloner.h.

◆ NeedConversion()

bool TTreeCloner::NeedConversion ( )
inline

Definition at line 121 of file TTreeCloner.h.

◆ operator=()

TTreeCloner & TTreeCloner::operator= ( const TTreeCloner )
privatedelete

◆ RestoreCache()

void TTreeCloner::RestoreCache ( )
private

Restore the TFileCacheRead to its previous value.

Definition at line 615 of file TTreeCloner.cxx.

◆ SetCacheSize()

void TTreeCloner::SetCacheSize ( Long64_t  size)

Set the cache size used by the matching TFile.

Note that the default is to use the same size as the default TTreeCache for the input tree.

Parameters
sizeSize of the cache.
Note
If size=0, or if it does not match the fileCache buffer size, the fileCache will be deleted so that it be created later with the right size (or not created if the size is 0) at the beginning of Exec.

Definition at line 656 of file TTreeCloner.cxx.

◆ SortBaskets()

void TTreeCloner::SortBaskets ( )

Sort the basket according to the user request.

Definition at line 674 of file TTreeCloner.cxx.

◆ WriteBaskets()

void TTreeCloner::WriteBaskets ( )

Transfer the basket from the input file to the output file.

Definition at line 729 of file TTreeCloner.cxx.

Friends And Related Symbol Documentation

◆ CompareEntry

friend class CompareEntry
friend

Definition at line 84 of file TTreeCloner.h.

◆ CompareSeek

friend class CompareSeek
friend

Definition at line 83 of file TTreeCloner.h.

Member Data Documentation

◆ fBasketBranchNum

UInt_t* TTreeCloner::fBasketBranchNum
private

[fMaxBaskets] Index of the branch(es) of the basket.

Definition at line 46 of file TTreeCloner.h.

◆ fBasketEntry

Long64_t* TTreeCloner::fBasketEntry
private

[fMaxBaskets] list of basket start entries.

Definition at line 50 of file TTreeCloner.h.

◆ fBasketIndex

UInt_t* TTreeCloner::fBasketIndex
private

[fMaxBaskets] ordered list of basket indices to be written.

Definition at line 51 of file TTreeCloner.h.

◆ fBasketNum

UInt_t* TTreeCloner::fBasketNum
private

[fMaxBaskets] index of the basket within the branch.

Definition at line 47 of file TTreeCloner.h.

◆ fBasketSeek

Long64_t* TTreeCloner::fBasketSeek
private

[fMaxBaskets] list of basket position to be read.

Definition at line 49 of file TTreeCloner.h.

◆ fCacheSize

Long64_t TTreeCloner::fCacheSize
private

Requested size of the file cache.

Definition at line 58 of file TTreeCloner.h.

◆ fCloneMethod

UInt_t TTreeCloner::fCloneMethod
private

Indicates which cloning method was selected.

Definition at line 55 of file TTreeCloner.h.

◆ fFileCache

TFileCacheRead* TTreeCloner::fFileCache
private

File Cache used to reduce the number of individual reads.

Definition at line 59 of file TTreeCloner.h.

◆ fFromBranches

TObjArray TTreeCloner::fFromBranches
private

Definition at line 42 of file TTreeCloner.h.

◆ fFromTree

TTree* TTreeCloner::fFromTree
private

Definition at line 37 of file TTreeCloner.h.

◆ fIsValid

bool TTreeCloner::fIsValid
private

Definition at line 34 of file TTreeCloner.h.

◆ fMaxBaskets

UInt_t TTreeCloner::fMaxBaskets
private

Definition at line 45 of file TTreeCloner.h.

◆ fMethod

Option_t* TTreeCloner::fMethod
private

Definition at line 41 of file TTreeCloner.h.

◆ fNeedConversion

bool TTreeCloner::fNeedConversion
private

True if the fast merge is not possible but a slow merge might possible.

Definition at line 35 of file TTreeCloner.h.

◆ fOptions

UInt_t TTreeCloner::fOptions
private

Definition at line 36 of file TTreeCloner.h.

◆ fPidOffset

UShort_t TTreeCloner::fPidOffset
private

Offset to be added to the copied key/basket.

Definition at line 53 of file TTreeCloner.h.

◆ fPrevCache

TFileCacheRead* TTreeCloner::fPrevCache
private

Cache that set before the TTreeCloner ctor for the 'from' TTree if any.

Definition at line 60 of file TTreeCloner.h.

◆ fToBranches

TObjArray TTreeCloner::fToBranches
private

Definition at line 43 of file TTreeCloner.h.

◆ fToDirectory

TDirectory* TTreeCloner::fToDirectory
private

Definition at line 39 of file TTreeCloner.h.

◆ fToFile

TFile* TTreeCloner::fToFile
private

Definition at line 40 of file TTreeCloner.h.

◆ fToStartEntries

Long64_t TTreeCloner::fToStartEntries
private

Number of entries in the target tree before any addition.

Definition at line 56 of file TTreeCloner.h.

◆ fToTree

TTree* TTreeCloner::fToTree
private

Definition at line 38 of file TTreeCloner.h.

◆ fWarningMsg

TString TTreeCloner::fWarningMsg
private

Text of the error message lead to an 'invalid' state.

Definition at line 32 of file TTreeCloner.h.

Libraries for TTreeCloner:

The documentation for this class was generated from the following files: