Re: [ROOT] TClonesArrays as Leaf in TTree

From: Rene Brun (Rene.Brun@cern.ch)
Date: Thu Jul 29 2004 - 07:17:33 MEST


Hi Marc,

Replace the lines
  StMuTrack* v0 = new StMuTrack();
  new((StMuTrack*)arr[0]) StMuTrack(*v0);
  new((StMuTrack*)arr[1]) StMuTrack(*v0);
  mytree->Fill();
by
  new(arr[0]) StMuTrack();
  new(arr[1]) StMuTrack();
  mytree->Fill();

  See $ROOTSYS/test/Event.h,cxx,MainEvent.cxx for a concrete example

Rene Brun

On 
Wed, 28 Jul 2004, Mark Horner 
wrote:

> Hi Rooters
> 
> I want to make a TTree where every entry in a branch is a TClonesArray. 
> My code seg-faults on the Fill() and simple script
> to reproduce the behaviour is:
> 
>  void test()
> {
>   gROOT->LoadMacro("loadSharedLibraries.C");
>   loadSharedLibraries();
>   TTree mytree("mytree","Tree");
>   TClonesArray *arr = new TClonesArray("StMuTrack",10);
>   mytree->Branch("vobranch",&arr);
>   StMuTrack* v0 = new StMuTrack();
>   new((StMuTrack*)arr[0]) StMuTrack(*v0);
>   new((StMuTrack*)arr[1]) StMuTrack(*v0);
>   mytree->Fill();
> }
> 
> I presume I just don't understand how the TTree handles the TClonesArray 
> and that I have made some stupid error.
> 
> The class StMuTrack does has a working copy constructor and is available 
> elsewhere in a TClonesArray so I don't think this is the problem but
> the code is here:
> http://www.star.bnl.gov/cgi-bin/cvsweb.cgi/StRoot/StMuDSTMaker/COMMON/StMuTrack.h?rev=1.9&content-type=text/x-cvsweb-markup
> 
> Could somone point out what I am doing wrong or send me in the correct 
> general direction?
> 
> Thanks
> 
> Mark
> 
> 



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:09 MET