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