[ROOT] TTree Question

From: Airat A. Sadreev (airat@hq.tatenergo.ru)
Date: Thu Jul 13 2000 - 07:21:01 MEST


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