Hello Airat,
You are hitting one of the limitations of the split mode: See
http://root.cern.ch/root/HowtoWriteTree.html
section "Making a Tree with many branches"
Change your last argument to tree->Branch from 1 to 0.
We hope to remove several of these limitations in the not too distant future.
Rene Brun
Airat A. Sadreev wrote:
>
> 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