[ROOT] TTree pointer structure question

From: brant c. (brant@its.caltech.edu)
Date: Tue Aug 12 2003 - 21:49:17 MEST


Hello

I have a problem using a TTree a TObject-derived class.
The structure of the object is admittedly rather complicated:
there are three TObject-derived classes, A, B, and C.
A a1;  B b1,b2; C c1;
a1 has a pointer to b1. b1 has a pointer to a1.
a1 has a pointer to c1.  c1 has a pointer to a1.
c1 has a pointer to b1.
c1 has a pointer to b2.

all other pointers are null, and for a given use of A, some of the 
pointers listed above may also be null (i.e. if c1 hasn't been created yet)

Storing a1 in a TFile works perfectly, with all the pointer structure 
preserved and recreated on reading from the file.
However, storing a1 in a branch of a TTree (splitting set to 99) doesn't 
work properly.
reading a1 from the TTree results in additional objects being created, 
including a duplicate of a1 and a duplicate of b2.  Since my destructors 
aren't designed to handle a garbled structure like that, this results in 
memory leaks on a TTree::Draw() or on looping over the TTree.

Does this sound like a problem with my code?  If so, any thoughts as to 
what I might have done wrong?

If, as I would like to think, my code works properly (the pointer 
structure is correct before I write it to the TTree, and reading from a 
TFile works), is this a known problem?  If not i'll try to reduce it to 
the simplest case and post the code that reproduces the error.

Running  3.05/07 for linuxdeb with gcc 3.3.1

Thanks,
    Brant Carlson



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:14 MET