|
ROOT
Reference Guide |
|
Go to the documentation of this file.
58 if (fObject->fBasketEntry[i1] == fObject->fBasketEntry[i2]) {
61 return fObject->fBasketEntry[i1] < fObject->fBasketEntry[i2];
105 TTreeCloner(from, to, to ? to->GetDirectory() : nullptr, method, options)
120 TTreeCloner(from, from, newdirectory, method, options)
134 fToDirectory(newdirectory),
135 fToFile(fToDirectory ? fToDirectory->GetFile() : nullptr),
137 fFromBranches( from ? from->GetListOfLeaves()->GetEntriesFast()+1 : 0),
138 fToBranches( to ? to->GetListOfLeaves()->GetEntriesFast()+1 : 0),
139 fMaxBaskets(CollectBranches()),
140 fBasketBranchNum(new
UInt_t[fMaxBaskets]),
141 fBasketNum(new
UInt_t[fMaxBaskets]),
142 fBasketSeek(new
Long64_t[fMaxBaskets]),
143 fBasketEntry(new
Long64_t[fMaxBaskets]),
144 fBasketIndex(new
UInt_t[fMaxBaskets]),
154 if (opt.
Contains(
"sortbasketsbybranch")) {
157 }
else if (opt.
Contains(
"sortbasketsbyentry")) {
179 from ? from->
GetName() :
"no tree");
185 fWarningMsg.
Form(
"The output TTree (%s) must be associated with a directory.",
191 }
else if (
fToFile ==
nullptr) {
192 fWarningMsg.
Form(
"The output TTree (%s) must be associated with a directory (%s) that is in a file.",
200 fWarningMsg.
Form(
"The output TTree (%s) must be associated with a writable file (%s).",
203 fWarningMsg.
Form(
"The output TTree (%s) must be associated with a writable directory (%s in %s).",
291 if (nb != fnb && (nb == 0 || fnb == 0)) {
294 fWarningMsg.
Form(
"The export branch and the import branch do not have the same split level. (The branch name is %s.)",
304 fWarningMsg.
Form(
"The export branch and the import branch do not have the same streamer type. (The branch name is %s.)",
320 fWarningMsg.
Form(
"The export branch and the import branch (%s) do not have the same number of leaves (%d vs %d)",
328 for (
Int_t i=0;i<nb;i++) {
332 if (toleaf->IsA() != fromleaf->IsA() ) {
334 fWarningMsg.
Form(
"The export leaf and the import leaf (%s.%s) do not have the same data type (%s vs %s)",
405 fWarningMsg.
Form(
"One of the export top level branches (%s) is not present in the import TTree.",
413 fWarningMsg.
Form(
"One of the export sub-branches (%s) is not present in the import TTree.",
455 for(
UInt_t i=0,bi=0; i<len; ++i) {
555 while ((key = (
TKey*)next())) {
565 for (
Int_t i=0;i<npids;i++) {
582 if (dirsav) dirsav->
cd();
586 Error(
"CopyProcessIDs",
"Copied %s from %s might already exist!\n",
606 if (prev)
f->SetCacheRead(
nullptr,
fFromTree);
769 if (frombasket && frombasket->
GetNevBuf()>0) {
virtual void Prefetch(Long64_t pos, Int_t len)
Add block of length len at position pos in the list of blocks to be prefetched.
Int_t * GetBasketBytes() const
Bool_t operator()(UInt_t i1, UInt_t i2)
UInt_t * fBasketBranchNum
[fMaxBaskets] Index of the branch(es) of the basket.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual ~TTreeCloner()
TTreeCloner destructor.
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
void CollectBaskets()
Collect the information about the on-file basket that need to be copied.
A Branch for the case of an object.
Bool_t fNeedConversion
True if the fast merge is not possible but a slow merge might possible.
const char * Data() const
virtual Int_t GetBufferSize() const
virtual void * ReadObjectAny(const TClass *expectedClass)
To read an object (non deriving from TObject) from the file.
TTreeCloner(const TTreeCloner &)=delete
TObjArray * GetListOfBranches()
TTreeCache * GetReadCache(TFile *file) const
Find and return the TTreeCache registered with the file and which may contain branches for us.
virtual void AddBasket(TBasket &b, Bool_t ondisk, Long64_t startEntry)
Add the basket to this branch.
void CopyMemoryBaskets()
Transfer the basket from the input file to the output file.
A TTree represents a columnar dataset.
virtual const char * GetTypeName() const
void RestoreCache()
Restore the TFileCacheRead to its previous value.
TObjArray * GetListOfBaskets()
virtual void SetEntries(Long64_t entries)
Set the number of entries in this branch.
A TProcessID identifies a ROOT job in a unique way in time and space.
Bool_t IsLoaded() const
Return true if the shared library of this class is currently in the a process's memory.
Int_t IncrementCount()
Increase the reference count to this object.
Bool_t cd(const char *path=nullptr) override
Change current directory to "this" directory.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Long64_t fFlushedBytes
Number of auto-flushed bytes.
Small helper to keep current directory context.
TVirtualStreamerInfo * GetStreamerInfo(Int_t version=0, Bool_t isTransient=kFALSE) const
returns a pointer to the TVirtualStreamerInfo object for version If the object does not exist,...
virtual Bool_t cd(const char *path=nullptr)
Change current directory to "this" directory.
UInt_t * fBasketIndex
[fMaxBaskets] ordered list of basket indices to be written.
Long64_t CopyTo(TFile *to)
Copy the basket of this branch onto the file to.
void ImportClusterRanges()
Set the entries and import the cluster range of the.
TFileCacheRead * fPrevCache
Cache that set before the TTreeCloner ctor for the 'from' TTree if any.
TObject * UncheckedAt(Int_t i) const
TObject * At(Int_t idx) const
Long64_t * fBasketEntry
[fMaxBaskets] list of basket start entries.
TObjArray * GetListOfProcessIDs() const
friend class CompareEntry
Long64_t * GetBasketEntry() const
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
TBranch * fBranchCount
Branch with clones count.
TVirtualStreamerInfo * FindStreamerInfo(TObjArray *arr, UInt_t checksum) const
Find the TVirtualStreamerInfo in the StreamerInfos corresponding to checksum.
virtual Bool_t IsWritable() const
virtual TObjArray * GetListOfBranches()
virtual void AddLast(TObject *obj)
Add object in the next empty slot in the array.
void ImportClusterRanges(TTree *fromtree)
Appends the cluster range information stored in 'fromtree' to this tree, including the value of fAuto...
virtual TList * GetStreamerInfoList() final
Read the list of TStreamerInfo objects written to this file.
void CreateCache()
Create a TFileCacheRead if it was requested.
Int_t ReadBasketBytes(Long64_t pos, TFile *file)
Read basket buffers in memory and cleanup.
virtual Bool_t IncludeRange(TLeaf *)
virtual TTree * GetTree() const
Long64_t fToStartEntries
Number of entries in the target tree before any addition.
A TTree is a list of TBranches.
TFile * GetCurrentFile() const
Return pointer to the current file.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
TList * GetListOfKeys() const override
void ForceWriteInfo(TFile *file, Bool_t force=kFALSE)
Recursively mark streamer infos for writing to a file.
Bool_t operator()(UInt_t i1, UInt_t i2)
virtual TFile * GetFile(Int_t mode=0)
Return pointer to the file where branch buffers reside, returns 0 in case branch buffers reside in th...
virtual Long64_t GetBasketSeek(Int_t basket) const
Return address of basket in the file.
virtual const char * GetClassName() const
Describe Streamer information for one class version.
TFileCacheRead * fFileCache
File Cache used to reduce the number of individual reads.
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
A Branch for the case of an array of clone objects.
Class implementing or helping the various TTree cloning method.
Int_t GetEntriesFast() const
virtual TObject * Clone(const char *newname="") const
Make a clone of an object using the Streamer facility.
virtual TBranchRef * GetBranchRef() const
Long64_t * fBasketSeek
[fMaxBaskets] Addresses of baskets on file
void SortBaskets()
Sort the basket according to the user request.
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
Int_t LoadBasketBuffers(Long64_t pos, Int_t len, TFile *file, TTree *tree=0)
Load basket buffers in memory without unziping.
UInt_t FillCache(UInt_t from)
Fill the file cache with the next set of basket.
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
UInt_t GetCheckSum() const
virtual void IncrementProcessIDs()
UInt_t fCloneMethod
Indicates which cloning method was selected.
virtual void IncrementPidOffset(UShort_t offset)
Increment fPidOffset by 'offset'.
void CloseOutWriteBaskets()
Before we can start adding new basket, we need to flush to disk the partially filled baskets (the Wri...
virtual void SetDirectory(TDirectory *dir)
Change the tree's directory.
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Long64_t GetCacheAutoSize(Bool_t withDefault=kFALSE) const
Used for automatic sizing of the cache.
A cache when reading files over the network.
Int_t GetClassVersion() const
TDirectory * GetDirectory() const
TDirectory * fToDirectory
Book space in a file, create I/O buffers, to fill them, (un)compress them.
virtual Long64_t GetSeekKey() const
virtual Int_t GetNProcessIDs() const
void CopyStreamerInfos()
Make sure that all the needed TStreamerInfo are present in the output file.
TBranch * GetMother() const
Get our top-level parent branch in the tree.
Manages buffers for branches of a Tree.
TString fWarningMsg
Text of the error message lead to an 'invalid' state.
virtual Long64_t SetEntries(Long64_t n=-1)
Change number of entries in the tree.
ROOT::NewFunc_t GetNew() const
Return the wrapper around new ThisClass().
void Info(const char *location, const char *msgfmt,...)
Use this function for informational messages.
TClass instances represent classes, structs and namespaces in the ROOT type system.
Long64_t * fBasketSeek
[fMaxBaskets] list of basket position to be read.
virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
Int_t GetWriteBasket() const
void CopyProcessIds()
Make sure that all the needed TStreamerInfo are present in the output file.
virtual TFile * GetFile() const
virtual void AddLastBasket(Long64_t startEntry)
Add the start entry of the write basket (not yet created)
Int_t fCacheSize
Requested size of the file cache.
Describe directory structure in memory.
Int_t fMaximum
Maximum entries for a TClonesArray or variable array.
virtual TBranch * BranchRef()
Build the optional branch supporting the TRefTable.
void WriteBaskets()
Transfer the basket from the input file to the output file.
Int_t FlushOneBasket(UInt_t which)
If we have a write basket in memory and it contains some entries and has not yet been written to disk...
virtual const char * GetName() const
Returns name of object.
void SetBranch(TBranch *branch)
void ToLower()
Change string to lower-case.
TObjArray * GetListOfLeaves()
UShort_t fPidOffset
Offset to be added to the copied key/basket.
TBasket * GetBasket(Int_t basket)
virtual Long64_t GetEntries() const
UInt_t CollectBranches()
Fill the array of branches, matching the branches of the 'from' and 'to' TTrees Returns the total num...
Bool_t Exec()
Execute the cloning.
void SetCacheSize(Int_t size)
Set the TFile cache size to be used.
Long64_t GetEntries() const
UInt_t * fBasketNum
[fMaxBaskets] index of the basket within the branch.
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.