TBranchElement


class description - source file - inheritance tree

class TBranchElement : public TBranch


    public:
TBranchElement() TBranchElement(const char* name, TStreamerInfo* sinfo, Int_t id, char* pointer, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t btype = 0) TBranchElement(const char* name, TClonesArray* clones, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = -1) virtual ~TBranchElement() virtual Int_t Branch(const char* folder, Int_t bufsize = 32000, Int_t splitlevel = 99) virtual TBranch* Branch(const char* name, void* address, const char* leaflist, Int_t bufsize = 32000) virtual TBranch* Branch(const char* name, const char* classname, void* addobj, Int_t bufsize = 32000, Int_t splitlevel = 99) virtual void Browse(TBrowser* b) void BuildTitle(const char* name) static TClass* Class() virtual Int_t Fill() virtual void FillLeaves(TBuffer& b) TBranchElement* GetBranchCount() const TBranchElement* GetBranchCount2() const virtual const char* GetClassName() const virtual const char* GetClonesName() const Int_t GetDataMemberOffset(const TClass* cl, const char* name) virtual Int_t GetEntry(Int_t entry = 0, Int_t getall = 0) virtual const char* GetIconName() const Int_t GetID() const TStreamerInfo* GetInfo() virtual Int_t GetMaximum() const Int_t GetNdata() const char* GetObject() const virtual const char* GetParentName() const Int_t GetStreamerType() const Int_t GetType() const virtual const char* GetTypeName() const Double_t GetValue(Int_t i, Int_t len, Bool_t subarr = kFALSE) const virtual void* GetValuePointer() const virtual TClass* IsA() const Bool_t IsBranchFolder() const virtual Bool_t IsFolder() const virtual Bool_t Notify() virtual void Print(const Option_t* option) const void PrintValue(Int_t i) const virtual void ReadLeaves(TBuffer& b) virtual void Reset(const Option_t* option) virtual void SetAddress(void* addobj) virtual void SetAutoDelete(Bool_t autodel = kTRUE) virtual void SetBasketSize(Int_t buffsize) virtual void SetBranchCount(TBranchElement* bre) virtual void SetBranchCount2(TBranchElement* bre) virtual void SetBranchFolder() virtual void SetClassName(const char* name) virtual void SetParentName(const char* name) virtual void SetType(Int_t btype) virtual void ShowMembers(TMemberInspector& insp, char* parent) virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b) virtual Int_t Unroll(const char* name, TClass* cltop, TClass* cl, Int_t basketsize, Int_t splitlevel, Int_t btype)

Data Members


    protected:
TString fClassName Class name of referenced object TString fParentName Name of parent class TString fClonesName Name of class in TClonesArray (if any) Int_t fClassVersion Version number of class Int_t fID element serial number in fInfo Int_t fType branch type Int_t fStreamerType branch streamer type Int_t fMaximum Maximum entries for a TClonesArray or variable array Int_t fNdata !Number of data in this branch TBranchElement* fBranchCount pointer to primary branchcount branch TBranchElement* fBranchCount2 pointer to secondary branchcount branch TStreamerInfo* fInfo !Pointer to StreamerInfo char* fObject !Pointer to object at *fAddress char* fBranchPointer !Pointer to object for a master branch public:
static const enum TBranchElement:: kWarn static const enum TBranchElement:: kBranchFolder static const enum TBranchElement:: kDeleteObject

Class Description

                                                                      
 TBranchElement                                                       
                                                                      
 A Branch for the case of an object                                   
                                                                      


TBranchElement(): TBranch()
*-*-*-*-*-*Default constructor for BranchElement*-*-*-*-*-*-*-*-*-*
*-*        ====================================

TBranchElement(const char *bname, TStreamerInfo *sinfo, Int_t id, char *pointer, Int_t basketsize, Int_t splitlevel, Int_t btype) :TBranch()
 Create a BranchElement

 If splitlevel > 0 this branch in turn is split into sub branches

TBranchElement(const char *bname, TClonesArray *clones, Int_t basketsize, Int_t splitlevel, Int_t compress) :TBranch()
 Create a BranchElement

 If splitlevel > 0 this branch in turn is split into sub branches

~TBranchElement()
*-*-*-*-*-*Default destructor for a BranchElement*-*-*-*-*-*-*-*-*-*-*-*
*-*        =====================================

TBranch* Branch(const char *subname, void *address, const char *leaflist,Int_t bufsize)
  Create a sub-branch of this branch (simple variable case)
  ==================================

     This Branch constructor is provided to support non-objects in
     a Tree. The variables described in leaflist may be simple variables
     or structures.
    See the two following constructors for writing objects in a Tree.

    By default the branch buffers are stored in the same file as the Tree.
    use TBranch::SetFile to specify a different file

Int_t Branch(const char *foldername, Int_t bufsize, Int_t splitlevel)
   This function creates one sub-branch for each element in the folder.
   The function returns the total number of branches created.

TBranch* Branch(const char *subname, const char *classname, void *add, Int_t bufsize, Int_t splitlevel)
  Create a sub-branch of this branch (with a class)
  ==================================

    Build a TBranchElement for an object of class classname.
    addobj is the address of a pointer to an object of class classname.
    The class dictionary must be available (ClassDef in class header).

    This option requires access to the library where the corresponding class
    is defined. Accessing one single data member in the object implies
    reading the full object.

    By default the branch buffers are stored in the same file as the parent branch.
    use TBranch::SetFile to specify a different file

    see IMPORTANT NOTE about branch names in TTree::Bronch

   Use splitlevel < 0 instead of splitlevel=0 when the class
   has a custom Streamer

void Browse(TBrowser *b)

void BuildTitle(const char *name)
set branch/leaf name/title in case of a TClonesArray sub-branch

Int_t Fill()
*-*-*-*-*-*-*-*Loop on all leaves of this branch to fill Basket buffer*-*-*
*-*            =======================================================

void FillLeaves(TBuffer &b)
  Fill buffers of this branch

Int_t GetDataMemberOffset(const TClass *cl, const char *name)
 return offset od member name in class cl
 check for the following cases Otto and Axel

 case Otto
    class TUsrSevtData2:public TMrbSubevent_Caen {
    class TMrbSubevent_Caen:public TObject {
       TUsrHitBuffer fHitBuffer;
    class TUsrHitBuffer:public TObject {
       Int_t fHighWater;
       TClonesArray *fHits;
    code below to get the correct address for fHitBuffer.fHits

 case Axel
    class jet: public TLorentzVector {
    TClonesArray* caJet=new TClonesArray("jet");
    TTree* tree=new TTree("test","test",99);
    tree->Branch("jet", "TClonesArray",&caJet, 32000);

Int_t GetEntry(Int_t entry, Int_t getall)
*-*-*-*-*Read all branches of a BranchElement and return total number of bytes
*-*      ====================================================================
   If entry = 0 take current entry number + 1
   If entry < 0 reset entry number to 0

  The function returns the number of bytes read from the input buffer.
  If entry does not exist  the function returns 0.
  If an I/O error occurs,  the function returns -1.

  See IMPORTANT REMARKS in TTree::GetEntry

const char* GetIconName() const
 Return icon name depending on type of branch element.

TStreamerInfo* GetInfo()
return pointer to TStreamerinfo object for the class of this branch
rebuild the info if not yet done

Int_t GetMaximum() const
 Return maximum count value of the branchcount if any

const char* GetTypeName() const
 return type name of element in the branch

Double_t GetValue(Int_t j, Int_t len, Bool_t subarr) const
 Returns branch value. If the leaf is an array, j is the index in the array
 If leaf is an array inside a TClonesArray, len should be the length of the
 array.  If subarr is true, then len is actually the index within the sub-array

void* GetValuePointer() const
 Returns pointer to first data element of this branch
 Currently used only for members of type character

Bool_t IsFolder() const
*-*-*-*-*Return TRUE if more than one leaf, FALSE otherwise*-*
*-*      ==================================================

void Print(Option_t *option) const
*-*-*-*-*-*-*-*-*-*-*-*Print TBranch parameters*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-*                    ========================

void PrintValue(Int_t /*len*/) const
 Prints leaf value

void ReadLeaves(TBuffer &b)
 Read buffers for this branch

void Reset(Option_t *option)
*-*-*-*-*-*-*-*Reset a Branch*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-*            ====================

    Existing buffers are deleted
    Entries, max and min are reset


void SetAddress(void *add)
*-*-*-*-*-*-*-*Set address of this branch*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-*            ====================


void SetAutoDelete(Bool_t autodel)
*-*-*-*-*-*-*-*Set the AutoDelete bit
*-*            ====================
  This function can be used to instruct Root in TBranchElement::ReadBasket
  to not delete the object referenced by a branchelement before reading a
  new entry. By default, the object is deleted.
  If autodel is kTRUE, this existing object will be deleted, a new object
    created by the default constructor, then object->Streamer called.
  If autodel is kFALSE, the existing object is not deleted. Root assumes
    that the user is taking care of deleting any internal object or array
    This can be done in Streamer itself.
  If this branch has sub-branches, the function sets autodel for these
  branches as well.
  We STRONGLY suggest to activate this option by default when you create
  the top level branch. This will make the read phase more efficient
  because it minimizes the numbers of new/delete operations.
  Once this option has been set and the Tree is written to a file, it is
  not necessary to specify the option again when reading, unless you
  want to set the opposite mode.


void SetBasketSize(Int_t buffsize)
 Reset basket size for all subbranches of this branchelement

void SetBranchCount(TBranchElement *bre)
 Set the branch count for this branch

void Streamer(TBuffer &R__b)
 Stream an object of class TBranchElement.

Int_t Unroll(const char *name, TClass *cltop, TClass *cl,Int_t basketsize, Int_t splitlevel, Int_t btype)
 unroll base classes and loop on all elements of class cl



Inline Functions


        TBranchElement* GetBranchCount() const
        TBranchElement* GetBranchCount2() const
            const char* GetClassName() const
            const char* GetClonesName() const
                  Int_t GetID() const
                  char* GetObject() const
            const char* GetParentName() const
                  Int_t GetNdata() const
                  Int_t GetType() const
                  Int_t GetStreamerType() const
                 Bool_t IsBranchFolder() const
                 Bool_t Notify()
                   void SetBranchCount2(TBranchElement* bre)
                   void SetBranchFolder()
                   void SetClassName(const char* name)
                   void SetParentName(const char* name)
                   void SetType(Int_t btype)
                TClass* Class()
                TClass* IsA() const
                   void ShowMembers(TMemberInspector& insp, char* parent)
                   void StreamerNVirtual(TBuffer& b)


Author: Rene Brun 14/01/2001
Last update: root/tree:$Name: $:$Id: TBranchElement.cxx,v 1.111 2003/05/07 08:33:45 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *


ROOT page - Class index - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.