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