#ifndef ROOT_TBranchClones
#define ROOT_TBranchClones
#ifndef ROOT_TBranch
#include "TBranch.h"
#endif
class TClonesArray;
class TTreeCloner;
class TBranchClones : public TBranch {
protected:
TClonesArray *fList;
Int_t fRead;
Int_t fN;
Int_t fNdataMax;
TString fClassName;
TBranch *fBranchCount;
friend class TTreeCloner;
void Init(TTree *tree, TBranch *parent, const char *name, void *clonesaddress, Int_t basketsize=32000,Int_t compress=-1, Int_t splitlevel=1);
public:
TBranchClones();
TBranchClones(TTree *tree, const char *name, void *clonesaddress, Int_t basketsize=32000,Int_t compress=-1, Int_t splitlevel=1);
TBranchClones(TBranch *parent, const char *name, void *clonesaddress, Int_t basketsize=32000,Int_t compress=-1, Int_t splitlevel=1);
virtual ~TBranchClones();
virtual void Browse(TBrowser *b);
virtual Int_t Fill();
virtual const char* GetClassName() const { return fClassName; }
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall = 0);
virtual Int_t GetN() const {return fN;}
TClonesArray *GetList() const {return fList;}
Bool_t IsFolder() const {return kTRUE;}
virtual void Print(Option_t *option="") const;
virtual void Reset(Option_t *option="");
virtual void ResetAfterMerge(TFileMergeInfo *);
virtual void SetAddress(void *add);
virtual void SetBasketSize(Int_t buffsize);
virtual void SetTree(TTree *tree) { fTree = tree; fBranchCount->SetTree(tree); }
virtual void UpdateFile();
ClassDef(TBranchClones,2);
};
#endif