Mathieu,
Could you:
- tell me the ROOT version number
- send me the result of evtree.Print()
- call gObjectTable->Print() before the first Draw(), eg with the
sequence:
gObjectTable->Print();
evtree.Draw("event.hitsclone.GetLe()");
gObjectTable->Print();
evtree.Draw("event.hitsclone.GetLe()");
gObjectTable->Print();
send me the output for each gObjectTable->Print.
Make sure that the memory statistics is activated in your
system.rootrc
- tell me which variables are used by your function GetLe()
- if you have a short file, tell me where/how I can take it
Rene Brun
On Tue, 4 Jun 2002, Mathieu Ribordy wrote:
> Hi,
> In a TFile, I store a tree of event. An event stores TClonesArray and
> TObjArray's
> Writing the tree is fine, memory is under control, which is not the case
> when I read it back:
>
> when I ask to draw e.g. some hit values (the hits are stored in a
> TClonesArray hitsclone):
> evtree.Draw("event.hitsclone.GetLe()");
> the number of hit objects is increasing during the loop on the event and
> the memory is not released at the end (10 Mb/1000 event)
>
> similarly, when I plot one track in a TObjArray (which owns its
> objects):
> evtree.Draw("event.GetTrack(7)->GetCosth()");
> (5Mb/1000 event)
>
> Concretely, I cannot draw more than few 10000's events before crashing,
> and it is also unacceptably slow (tens of minutes).
>
> Certainly stg I do not manage correctly, but what ?
> The memory should be released after each event, as I plot values of
> objects stored in a TClonesArray or values of objects stored in a
> TObjArray, which owns its objects.
> I would be very grateful for some help, I don't see any way to
> circumvent this behavior.
> Mathieu
>
>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:54 MET