Hi Torsten,
I looked at your file and I understand why you get the problem.
You have specified split=1 in your class Event. You should specify
at least split=2 if you want to see each member of your TClonesArray
in a separate branch.
If you do T.Print(), you will see:
*Br 47 :fgenTracks :
*Entries : 186059 : Total Size= 557009404 bytes File Size =
36544499
*Baskets : 8739 : Basket Size= 64000 bytes Compression= 15.24
Any traversal of this branch will load 577 Megabytes in memory !
Rene Brun
On
Thu,
12
Jun 2003, Torsten Harenberg wrote:
> Dear list,
>
> I tried to adapt the example "test/MainEvent" included in the source tree.
> This works fine and produces me an output root file.
>
> When I try to plot one variable included in a TClonesArray afterwards, the
> procedure is very slow and consumes *TONS* of memory (around one Gig),
> which is not released afterwards. A second (SIMILAR) Draw crashes my
> machine, as it runs out of swap.
>
> I think the problem is similar to what has been reported by Mathieu
> Ribordy on
>
> http://root.cern.ch/root/roottalk/roottalk02/2340.html
> and
> http://root.cern.ch/root/roottalk/roottalk02/1979.html
>
> If you want to reproduce: I put the root file on
>
> http://www.atlas.uni-wuppertal.de/~harenber/Event.root
>
> then follow:
>
> root [0] TFile a("Event.root");
> Warning in <TClass::TClass>: no dictionary for class Event is available
> Warning in <TClass::TClass>: no dictionary for class Track is available
> root [1] gObjectTable->Print();
>
> Object statistics
> class cnt on heap size total size
> heap size
> ================================================================================
> TRootGuiFactory 1 1 28 28
> 28
> TSignalHandler 1 1 36 36
> 36
> TFileHandler 2 2 32 64
> 64
> TList 349 348 44 15356
> 15312
> TObject 162 162 12 1944
> 1944
> TStreamerInfo 28 28 84 2352
> 2352
> TClass 63 63 140 8820
> 8820
> TObjArray 109 109 40 4360
> 4360
> TStreamerBase 27 27 104 2808
> 2808
> TStreamerBasicType 121 121 100 12100
> 12100
> TStreamerObject 7 7 96 672
> 672
> TStreamerObjectPointer 7 7 96 672
> 672
> TStreamerString 10 10 96 960
> 960
> TStreamerObjectAny 2 2 96 192
> 192
> TStreamerBasicPointer 3 3 120 360
> 360
> TProcessID 1 1 36 36
> 36
> TObjString 568 568 20 11360
> 11360
> TAssoc 573 573 20 11460
> 11460
> TPluginHandler 34 34 68 2312
> 2312
> TMethod 299 299 52 15548
> 15548
> TDataType 191 191 40 7640
> 7640
> TColor 229 229 56 12824
> 12824
> TRealData 91 91 36 3276
> 3276
> TDataMember 265 265 76 20140
> 20140
> TBaseClass 26 26 40 1040
> 1040
> TMethodArg 2 2 40 80
> 80
> TGGC 31 0 124 3844
> 0
> TFolder 17 17 36 612
> 612
> TRint 1 1 124 124
> 124
> THashTable 12 12 40 480
> 480
> THashList 10 9 48 480
> 432
> TOrdCollection 8 8 44 352
> 352
> TGMimeTypes 1 1 32 32
> 32
> TObjectTable 1 1 24 24
> 24
> TRandom 2 2 32 64
> 64
> TMessageHandler 1 1 56 56
> 56
> TClassMenuItem 63 63 60 3780
> 3780
> TMethodCall 8 8 60 480
> 480
> TGLayoutHints 1 1 32 32
> 32
> TFile 1 1 220 220
> 220
> TGClient 1 1 84 84
> 84
> TMap 2 0 28 56
> 0
> TStyle 5 5 780 3900
> 3900
> TQClass 3 3 152 456
> 456
> TSystemDirectory 1 1 36 36
> 36
> TEnv 1 1 24 24
> 24
> TGuiFactory 1 1 28 28
> 28
> TGX11TTF 1 1 268 268
> 268
> TTimer 1 0 60 60
> 0
> TVirtualX 1 1 84 84
> 84
> TExMap 1 1 24 24
> 24
> TCint 1 1 228 228
> 228
> TClassTable 1 1 12 12
> 12
> TKey 3 3 80 240
> 240
> TBenchmark 1 1 52 52
> 52
> TBits 1 1 24 24
> 24
> TUnixSystem 1 1 376 376
> 376
> TStopwatch 1 0 68 68
> 0
> TPluginManager 1 1 16 16
> 16
> TGPicturePool 1 1 28 28
> 28
> TProcessUUID 1 1 44 44
> 44
> TGFrame 1 1 72 72
> 72
> TROOT 1 0 292 292
> 0
> --------------------------------------------------------------------------------
> Total: 3360 3322 5400 153492
> 149080
> ================================================================================
> root [2] T->Draw("fgenTracks.x");
> <TCanvas::MakeDefCanvas>: created default TCanvas with name c1
> root [3] gObjectTable->Print();
>
> Object statistics
> class cnt on heap size total size
> heap size
> ================================================================================
> TRootGuiFactory 1 1 28 28
> 28
> TSignalHandler 1 1 36 36
> 36
> TFileHandler 2 2 32 64
> 64
> TList 568 568 44 24992
> 24992
> TObject 173 173 12 2076
> 2076
> TStreamerInfo 28 28 84 2352
> 2352
> TClass 101 101 140 14140
> 14140
> TNamed 3 3 28 84
> 84
> TStreamerElement 1 0 96 96
> 0
> TObjArray 307 307 40 12280
> 12280
> TStreamerBase 27 27 104 2808
> 2808
> TStreamerBasicType 121 121 100 12100
> 12100
> TStreamerObject 7 7 96 672
> 672
> TStreamerObjectPointer 7 7 96 672
> 672
> TStreamerString 10 10 96 960
> 960
> TStreamerObjectAny 2 2 96 192
> 192
> TStreamerBasicPointer 3 3 120 360
> 360
> TClonesArray 1 1 48 48
> 48
> TProcessID 2 2 36 72
> 72
> TTree 1 1 292 292
> 292
> TBranchElement 50 50 340 17000
> 17000
> TLeafElement 50 50 68 3400
> 3400
> TBasket 51 51 112 5712
> 5712
> TKey 3 3 80 240
> 240
> TTreePlayer 1 1 44 44
> 44
> TGMenuTitle 7 7 108 756
> 756
> TGCompositeFrame 1 1 80 80
> 80
> TGFrame 5 5 72 360
> 360
> TCanvas 1 1 648 648
> 648
> TBits 15 15 24 360
> 360
> TH1F 1 1 588 588
> 588
> THistPainter 1 1 180 180
> 180
> TUtilHist 1 1 28 28
> 28
> TFrame 1 1 76 76
> 76
> TLatex 5 5 124 620
> 620
> TPaveText 1 1 176 176
> 176
> TGViewPort 1 1 92 92
> 92
> TGCanvas 1 1 88 88
> 88
> TRootCanvas 1 1 264 264
> 264
> TGMenuBar 1 1 92 92
> 92
> TObjString 636 636 20 12720
> 12720
> TMethod 668 668 52 34736
> 34736
> TAssoc 631 631 20 12620
> 12620
> TMethodCall 18 18 60 1080
> 1080
> TPluginHandler 34 34 68 2312
> 2312
> TDataMember 271 271 76 20596
> 20596
> TRealData 368 368 36 13248
> 13248
> TDataType 191 191 40 7640
> 7640
> TColor 229 229 56 12824
> 12824
> TBuffer 51 51 60 3060
> 3060
> TClassMenuItem 124 124 60 7440
> 7440
> TF1 13 13 240 3120
> 3120
> TBaseClass 59 59 40 2360
> 2360
> TMethodArg 2 2 40 80
> 80
> TGGC 31 0 124 3844
> 0
> THashTable 14 14 40 560
> 560
> TFolder 17 17 36 612
> 612
> TRint 1 1 124 124
> 124
> THashList 11 10 48 528
> 480
> TGMenuEntry 54 54 56 3024
> 3024
> TGLayoutHints 6 6 32 192
> 192
> TOrdCollection 8 8 44 352
> 352
> TGMimeTypes 1 1 32 32
> 32
> TObjectTable 1 1 24 24
> 24
> TRandom 2 2 32 64
> 64
> THLimitsFinder 1 1 12 12
> 12
> TGFrameElement 11 11 24 264
> 264
> TMessageHandler 1 1 56 56
> 56
> TQClass 22 22 152 3344
> 3344
> TGPicture 5 5 76 380
> 380
> TGHScrollBar 1 1 164 164
> 164
> TContextMenu 1 1 60 60
> 60
> TGScrollBarElement 6 6 80 480
> 480
> TFile 1 1 220 220
> 220
> TGClient 1 1 84 84
> 84
> TMap 2 0 28 56
> 0
> TGPopupMenu 7 7 124 868
> 868
> TStyle 5 5 780 3900
> 3900
> TSystemDirectory 1 1 36 36
> 36
> TEnv 1 1 24 24
> 24
> TGVerticalLayout 3 3 20 60
> 60
> TGuiFactory 1 1 28 28
> 28
> TExMap 5 5 24 120
> 120
> TGX11TTF 1 1 268 268
> 268
> TTimer 1 0 60 60
> 0
> TGStatusBar 1 1 96 96
> 96
> TTreeFormula 1 1 18496 18496
> 18496
> TVirtualX 1 1 84 84
> 84
> TGVScrollBar 1 1 164 164
> 164
> TCint 1 1 228 228
> 228
> TClassTable 1 1 12 12
> 12
> TBenchmark 1 1 52 52
> 52
> TSelectorDraw 1 1 220 220
> 220
> TUnixSystem 1 1 376 376
> 376
> TAxis 3 3 128 384
> 384
> TStopwatch 1 0 68 68
> 0
> TPluginManager 1 1 16 16
> 16
> TGPicturePool 1 1 28 28
> 28
> TGHorizontalLayout 1 1 20 20
> 20
> TProcessUUID 1 1 44 44
> 44
> TRootContextMenu 1 1 140 140
> 140
> TTreeFormulaManager 1 1 168 168
> 168
> TPaveStats 1 1 204 204
> 204
> TROOT 1 0 292 292
> 0
> --------------------------------------------------------------------------------
> Total: 5103 5065 29524 279896
> 275432
> ================================================================================
>
>
>
> I tried to follow Rene's suggestions on
> http://root.cern.ch/root/roottalk/roottalk02/1984.html
>
> and implemented the SetOwner call in the Event constructor, but this made
> -at least for me- no difference. Trying to call a delete in the Event
> distructor like
>
> fgenTracks->Clear("C"); //will also call Track::Clear
> frecTracks->Clear("C"); //will also call Track::Clear
> fgenTracks->Delete();
> delete fgenTracks;
> fgenTracks=0;
>
> , however, brings up a SEGFAULT in the AddTrack method in
>
> Track *track = new(tracks[fNrectrack++]) Track(rdmctrack);
>
> Anybody any further idea, what I did wrong?
>
> Thanks and best regards,
>
> Torsten
>
> P.S.: root version is 3.05/05 11 June 2003, running on a Linux PC
> (compiled with ./configure linux) with gcc-3.2 (SuSE 8.1)
>
> <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
> <> <>
> <> Torsten Harenberg harenberg@physik.uni-wuppertal.de <>
> <> Bergische Universitaet <>
> <> FB 8 - Physik Tel.: +49 (0)202 439-2740 <>
> <> Gaussstr. 20 Fax : +49 (0)202 439-2811 <>
> <> 42097 Wuppertal <>
> <> <>
> <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
>
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:12 MET