/usr/include/root/TBranch.h is in libroot-tree-dev 5.34.30-0ubuntu8.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 | // @(#)root/tree:$Id$
// Author: Rene Brun 12/01/96
/*************************************************************************
* Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
#ifndef ROOT_TBranch
#define ROOT_TBranch
//////////////////////////////////////////////////////////////////////////
// //
// TBranch //
// //
// A TTree object is a list of TBranchs. //
// A TBranch describes the branch data structure and supports : //
// the list of TBaskets (branch buffers) associated to this branch. //
// the list of TLeaves (branch description) //
//////////////////////////////////////////////////////////////////////////
#ifndef ROOT_TNamed
#include "TNamed.h"
#endif
#ifndef ROOT_TObjArray
#include "TObjArray.h"
#endif
#ifndef ROOT_TAttFill
#include "TAttFill.h"
#endif
#ifndef ROOT_TDataType
#include "TDataType.h"
#endif
class TTree;
class TBasket;
class TLeaf;
class TBrowser;
class TDirectory;
class TFile;
class TClonesArray;
class TTreeCloner;
const Int_t kDoNotProcess = BIT(10); // Active bit for branches
const Int_t kIsClone = BIT(11); // to indicate a TBranchClones
const Int_t kBranchObject = BIT(12); // branch is a TObject*
const Int_t kBranchAny = BIT(17); // branch is an object*
const Int_t kMapObject = kBranchObject | kBranchAny;
class TBranch : public TNamed , public TAttFill {
protected:
friend class TTreeCloner;
// TBranch status bits
enum EStatusBits {
kAutoDelete = BIT(15),
kDoNotUseBufferMap = BIT(22) // If set, at least one of the entry in the branch will use the buffer's map of classname and objects.
};
static Int_t fgCount; //! branch counter
Int_t fCompress; // Compression level and algorithm
Int_t fBasketSize; // Initial Size of Basket Buffer
Int_t fEntryOffsetLen; // Initial Length of fEntryOffset table in the basket buffers
Int_t fWriteBasket; // Last basket number written
Long64_t fEntryNumber; // Current entry number (last one filled in this branch)
Int_t fOffset; // Offset of this branch
Int_t fMaxBaskets; // Maximum number of Baskets so far
Int_t fNBaskets; //! Number of baskets in memory
Int_t fSplitLevel; // Branch split level
Int_t fNleaves; //! Number of leaves
Int_t fReadBasket; //! Current basket number when reading
Long64_t fReadEntry; //! Current entry number when reading
Long64_t fFirstBasketEntry;//! First entry in the current basket.
Long64_t fNextBasketEntry; //! Next entry that will requires us to go to the next basket
TBasket *fCurrentBasket; //! Pointer to the current basket.
Long64_t fEntries; // Number of entries
Long64_t fFirstEntry; // Number of the first entry in this branch
Long64_t fTotBytes; // Total number of bytes in all leaves before compression
Long64_t fZipBytes; // Total number of bytes in all leaves after compression
TObjArray fBranches; //-> List of Branches of this branch
TObjArray fLeaves; //-> List of leaves of this branch
TObjArray fBaskets; //-> List of baskets of this branch
Int_t *fBasketBytes; //[fMaxBaskets] Length of baskets on file
Long64_t *fBasketEntry; //[fMaxBaskets] Table of first entry in eack basket
Long64_t *fBasketSeek; //[fMaxBaskets] Addresses of baskets on file
TTree *fTree; //! Pointer to Tree header
TBranch *fMother; //! Pointer to top-level parent branch in the tree.
TBranch *fParent; //! Pointer to parent branch.
char *fAddress; //! Address of 1st leaf (variable or object)
TDirectory *fDirectory; //! Pointer to directory where this branch buffers are stored
TString fFileName; // Name of file where buffers are stored ("" if in same file as Tree header)
TBuffer *fEntryBuffer; //! Buffer used to directly pass the content without streaming
TList *fBrowsables; //! List of TVirtualBranchBrowsables used for Browse()
Bool_t fSkipZip; //! After being read, the buffer will not be unziped.
typedef void (TBranch::*ReadLeaves_t)(TBuffer &b);
ReadLeaves_t fReadLeaves; //! Pointer to the ReadLeaves implementation to use.
typedef void (TBranch::*FillLeaves_t)(TBuffer &b);
FillLeaves_t fFillLeaves; //! Pointer to the FillLeaves implementation to use.
void ReadLeavesImpl(TBuffer &b);
void ReadLeaves0Impl(TBuffer &b);
void ReadLeaves1Impl(TBuffer &b);
void ReadLeaves2Impl(TBuffer &b);
void FillLeavesImpl(TBuffer &b);
void SetSkipZip(Bool_t skip = kTRUE) { fSkipZip = skip; }
void Init(const char *name, const char *leaflist, Int_t compress);
TBasket *GetFreshBasket();
Int_t WriteBasket(TBasket* basket, Int_t where);
TString GetRealFileName() const;
private:
Int_t FillEntryBuffer(TBasket* basket,TBuffer* buf, Int_t& lnew);
TBranch(const TBranch&); // not implemented
TBranch& operator=(const TBranch&); // not implemented
public:
TBranch();
TBranch(TTree *tree, const char *name, void *address, const char *leaflist, Int_t basketsize=32000, Int_t compress=-1);
TBranch(TBranch *parent, const char *name, void *address, const char *leaflist, Int_t basketsize=32000, Int_t compress=-1);
virtual ~TBranch();
virtual void AddBasket(TBasket &b, Bool_t ondisk, Long64_t startEntry);
virtual void AddLastBasket(Long64_t startEntry);
virtual void Browse(TBrowser *b);
virtual void DeleteBaskets(Option_t* option="");
virtual void DropBaskets(Option_t *option = "");
void ExpandBasketArrays();
virtual Int_t Fill();
virtual TBranch *FindBranch(const char *name);
virtual TLeaf *FindLeaf(const char *name);
Int_t FlushBaskets();
Int_t FlushOneBasket(UInt_t which);
virtual char *GetAddress() const {return fAddress;}
TBasket *GetBasket(Int_t basket);
Int_t *GetBasketBytes() const {return fBasketBytes;}
Long64_t *GetBasketEntry() const {return fBasketEntry;}
virtual Long64_t GetBasketSeek(Int_t basket) const;
virtual Int_t GetBasketSize() const {return fBasketSize;}
virtual TList *GetBrowsables();
virtual const char* GetClassName() const;
Int_t GetCompressionAlgorithm() const;
Int_t GetCompressionLevel() const;
Int_t GetCompressionSettings() const;
TDirectory *GetDirectory() const {return fDirectory;}
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 GetEntryOffsetLen() const { return fEntryOffsetLen; }
Int_t GetEvent(Long64_t entry=0) {return GetEntry(entry);}
const char *GetIconName() const;
virtual Int_t GetExpectedType(TClass *&clptr,EDataType &type);
virtual TLeaf *GetLeaf(const char *name) const;
virtual TFile *GetFile(Int_t mode=0);
const char *GetFileName() const {return fFileName.Data();}
Int_t GetOffset() const {return fOffset;}
Int_t GetReadBasket() const {return fReadBasket;}
Long64_t GetReadEntry() const {return fReadEntry;}
Int_t GetWriteBasket() const {return fWriteBasket;}
Long64_t GetTotalSize(Option_t *option="") const;
Long64_t GetTotBytes(Option_t *option="") const;
Long64_t GetZipBytes(Option_t *option="") const;
Long64_t GetEntryNumber() const {return fEntryNumber;}
Long64_t GetFirstEntry() const {return fFirstEntry; }
TObjArray *GetListOfBaskets() {return &fBaskets;}
TObjArray *GetListOfBranches() {return &fBranches;}
TObjArray *GetListOfLeaves() {return &fLeaves;}
Int_t GetMaxBaskets() const {return fMaxBaskets;}
Int_t GetNleaves() const {return fNleaves;}
Int_t GetSplitLevel() const {return fSplitLevel;}
Long64_t GetEntries() const {return fEntries;}
TTree *GetTree() const {return fTree;}
virtual Int_t GetRow(Int_t row);
virtual Bool_t GetMakeClass() const;
TBranch *GetMother() const;
TBranch *GetSubBranch(const TBranch *br) const;
Bool_t IsAutoDelete() const;
Bool_t IsFolder() const;
virtual void KeepCircular(Long64_t maxEntries);
virtual Int_t LoadBaskets();
virtual void Print(Option_t *option="") const;
virtual void ReadBasket(TBuffer &b);
virtual void Refresh(TBranch *b);
virtual void Reset(Option_t *option="");
virtual void ResetAfterMerge(TFileMergeInfo *);
virtual void ResetAddress();
virtual void ResetReadEntry() {fReadEntry = -1;}
virtual void SetAddress(void *add);
virtual void SetObject(void *objadd);
virtual void SetAutoDelete(Bool_t autodel=kTRUE);
virtual void SetBasketSize(Int_t buffsize);
virtual void SetBufferAddress(TBuffer *entryBuffer);
void SetCompressionAlgorithm(Int_t algorithm=0);
void SetCompressionLevel(Int_t level=1);
void SetCompressionSettings(Int_t settings=1);
virtual void SetEntries(Long64_t entries);
virtual void SetEntryOffsetLen(Int_t len, Bool_t updateSubBranches = kFALSE);
virtual void SetFirstEntry( Long64_t entry );
virtual void SetFile(TFile *file=0);
virtual void SetFile(const char *filename);
virtual Bool_t SetMakeClass(Bool_t decomposeObj = kTRUE);
virtual void SetOffset(Int_t offset=0) {fOffset=offset;}
virtual void SetStatus(Bool_t status=1);
virtual void SetTree(TTree *tree) { fTree = tree;}
virtual void SetupAddresses();
virtual void UpdateAddress() {;}
virtual void UpdateFile();
static void ResetCount();
ClassDef(TBranch,12); //Branch descriptor
};
//______________________________________________________________________________
inline Int_t TBranch::GetCompressionAlgorithm() const
{
return (fCompress < 0) ? -1 : fCompress / 100;
}
//______________________________________________________________________________
inline Int_t TBranch::GetCompressionLevel() const
{
return (fCompress < 0) ? -1 : fCompress % 100;
}
//______________________________________________________________________________
inline Int_t TBranch::GetCompressionSettings() const
{
return (fCompress < 0) ? -1 : fCompress;
}
#endif
|