Re: [ROOT] static fgTracks in /test/Event.h

From: Christian Holm Christensen (cholm@hehi03.nbi.dk)
Date: Thu Jan 16 2003 - 00:43:38 MET


Hi Rene et al, 

Rene Brun <Rene.Brun@cern.ch> wrote concerning
  Re: [ROOT] static fgTracks in /test/Event.h [Mon, 13 Jan 2003 21:33:51 +0100 (MET)] 
----------------------------------------------------------------------
> Hi Carlos,
> 
> I recommend the creation of
>   static TClonesArray *fgTracks[2]; //or higher dimension
>          TClonesArray *fTracks[2];
> 
> In the Event example, we use a static TClonesArray *fgTracks.
> In principle, this pointer should be in a Run class.
> The point is that this array should be created only once and not
> for each event to take advantage of the TClonesArray.

Wouldn't it be better if TClonesArray used a std::vector with a custom
allocator internally.  In that way, memory could be shared between
multiple instantations of the same kind of TClonesArray. 

  class TClonesArray : public TCollection {
    ...
    std::vector<?, Root::CloneAllocator<?> > fElements; 
    ...
  }; 


where Root::ClonesAlloc is an allocator similar to the default
allocator in the GNU libstdc++v3 (which pools memory too), but shared
between all TClonesArray's of the same kind (A singleton, as suggested
earlier). 

In fact, I think all the TCollection classes should use std::vector
rather than plain old arrays, as you'll then take advantage of the
algorithms implmented in the library, including threadsafety, and
other such fancy stuff.  Also note, that std::vector is gaurantied to
be continues in memory, so it can be used directly instead of a plain
array.  

Yours, 

 ___  |  Christian Holm Christensen 
  |_| |	 -------------------------------------------------------------
    | |	 Address: Sankt Hansgade 23, 1. th.  Phone:  (+45) 35 35 96 91
     _|	          DK-2200 Copenhagen N       Cell:   (+45) 24 61 85 91
    _|	          Denmark                    Office: (+45) 353  25 305
 ____|	 Email:   cholm@nbi.dk               Web:    www.nbi.dk/~cholm
 | |



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:08 MET