Dear root devels and experts,
for quite some while I am storing MC air shower data in ROOT format.
Momentarily I am following the standard TTree philosophy, and this is
also what I would prefer to do in the future. In principle what I do is:
fTree->Branch(“mc”, &event); ,
where event is one MC event that contains e.g. a list of particles (of
course a TClonesArray …), that can easily grow to >10^9 particles - or
more (depending on your settings).
The problem I am encountering is that a single of these events can
easily have the size of several GBs. Under many circumstance and on
typical computer systems this rapidly leads to memory depletion,
swapping and crashes, since always one full event has to be build up in
memory, and only when it is completed it is stored as a big blob with
fTree->Fill();
to the disk. I was thinking of many different tree designs, but the
principle problem I could never solve.
The only way I see now, is to give up the concept of storing the data in
trees, and create TFolder objects for each MC event, that I can fill
with data in a much more controlled way. Unfortunately I loose all the
nice features of trees.
Before I now go on and go for the TFolder solution, it is my last hope
to write to the roottalk list and ask for any experience out there on
storing REALLY HUGE events (many GB each) with a TTree.
Thank you very much for any hints and help
Cheers
Ralf Ulrich