[ROOT] TRefArray and Unique ID

From: Sebastien Greder (greder@in2p3.fr)
Date: Wed Oct 29 2003 - 20:23:19 MET


 Hello ,

 Her e is what I'd like to do :

 I have 50 tracks and 10 of them in a jet.
 I have a jet class which has a TRefArray referencing
 the tracks.
 I run over my data and build a TTree with these objects.

 Now I read again this TTree in another ROOT session and 
 get my referenced tracks, well !

 Now I'd like to create new jets and reference again 
 some of the previous tracks to this new one.

 Unfortenatly I'm getting troubles while assigning already
 referenced tracks to a new TRefArray in another ROOT session
 (everything behaves nicely in the same one since it is
 under the same process id control) 

 I put a small code in :

 /afs/in2p3.fr/home/g/greder/public/test.tar.gz

 which is a simple version of my problem.

 You'll find in MyClass.C/h 2 classes :

 MyClass (== tracks) and MyClassRef (==jets), the latter owning a 
 TRefArray.

 Threre is a file MakeTree.C which creates an "event" :

 it creates a TClonesArray of MuClass objects and referenced
 some of them to MyClassRef and save these guys in a ROOT file.

 A second methods reads back the file and reference these tracks
 to another MYClassRef object.

 To run the code just do in a Root session : .x Compile.C

 it will print out an output that looks correct to
 me. 
 Now quit ROOT and comment the line  MakeTree(); in
 Compile.C and re-run Compile.C in a ROOT session.

 The final output has changed.

 Well, this is due to the fact that it is a new ROOT 
 session.

 But what I'd like to understand is why the objects
 in myclassref2's TRefArray have been doubled ? 
 
 And I'd like to know how could I give the objects MyClass to
 a new object MyClassRef 

 It sounds to me I misunderstood something about the TRefArray
 doc, but cannot figure out how to solve my pb.

 thanks,

 sebastien.



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