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