I defined and compiled into a DLL a very simple class: typedef Int_t TCode; typedef TString TName; class TCodeObject: public TObject { public: TCodeObject(); TCodeObject(const TCode& code, const TName& name); TCode Code() const; TName Name() const; void Code(const TCode& value); void Name(const TName& value); protected: TCode fCode; TName fObjectName; ClassDef(TCodeObject,1) }; Then I created ROOT's TFile and TTree and filled the tree: { gSystem.Load("incld.dll"); TFile* file = new TFile("AFile.root", "RECREATE", "Example", 0); TTree* tree = new TTree("T", "The Tree"); TCodeObject* cObject = new TCodeObject(1, "CodeObject_1"); tree->Branch("CodeObjectBranch", "TCodeObject", &cObject, 64000, 1); for (Int_t i = 0; i < 200; ++i) { char buf[80]; sprintf(buf, "Object code is %d", i); cObject->Code(i); cObject->Name(buf); tree->Fill(); } file->Write(); delete file; } Then I invoked TTree's MakeClass and this is result: #include <TChain.h> #include <TFile.h> class TTreeScanner { public : TTree *fTree; file://pointer to the analyzed TTree or TChain Int_t fCurrent; file://current Tree number in a TChain file://Declaration of leaves types Int_t fCode; Char_t fObjectName_*fData[4]; UInt_t fUniqueID; UInt_t fBits; file://List of branches TBranch *b_CodeObjectBranch; TBranch *b_fCode; TBranch *b_fObjectName_*fData; TBranch *b_fUniqueID; TBranch *b_fBits; TTreeScanner(TTree *tree=0); ~TTreeScanner(); Int_t Cut(Int_t entry); Int_t GetEntry(Int_t entry); Int_t LoadTree(Int_t entry); void Init(TTree *tree); void Loop(); void Notify(); void Show(Int_t entry = -1); }; ... The questions is: what is the fields fUniqueID and fBits? Why fObjectName looks so strange: Char_t fObjectName_*fData[4]; It seems that TTree correctly handle only members of scalar types (integer, double, etc), does it? Thank you.
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:29 MET