Re: Reading objects in TObjectBranch without new/delete?

From: Fons Rademakers (rdm@pcsalo.cern.ch)
Date: Fri Oct 29 1999 - 01:51:17 MEST


Hi Stefan,

  there is already a Clear() in TObject. Just override it for your
class. Of course, we then still have to call it from the TTree code,
but it should be possible.

-- Fons


> On Thu, 28 Oct 1999, Fons Rademakers wrote:
> 
> >   this is called a destructor which can be explicitely called like:
> > 
> > obj->~TObject();
> Hm, yes, as long as there is no need for different actions between really
> deleting an object and just "clearing" it so it can be used again by a
> Streamer for input. Take the case of a class containing a pointer to a
> TClonesArray:
> 
> class A : public TObject {
> 
> public:
> 
> A() { _array= new TClonesArray( "bla", 50 ); }
> 
> virtual ~A() { delete _array; }
> 
> virtual Clear() { _array->Clear(); }
> 
> private:
> 
> UInt_t _nent;         // Number of entries in _array
> TClonesArray* _array; // Array of objects of type bla
> 
> ClassDef(A,1)
> 
> }
> 
> I don't want a static pointer to TClonesArray, because I want to have
> several instances of A each holding a TClonesArray for IO of several lists
> of objects called "bla". Before reading a new entry, I want to clear the
> TClonesArray's, but at the end of reading the tree I may want to really
> delete the As, including their TClonesArray's. 
> 
> Thus, I think there is a case for having a separate virtual function
> "Clear()" to allow for clearing instead of deleting; if you accept the
> idea of reusing top level objects in branches that is. 
> 
> cheers, Stefan
> 
> ---Stefan Kluth---------------Lynen Fellow----------------|\--|\-------
> -  LBNL, MS 50A 2160       -  phone:  +1 510 495 2376  -  |/  |/      -
> -  1 Cyclotron Rd.         -  fax:    +1 510 495 2957  -  |\/\|\/\|'  -
> ---Berkeley, CA94720, USA-----e-mail: SKluth@lbl.gov------|/\/|/\/|----
> 


-- 
Org:    CERN, European Laboratory for Particle Physics.
Mail:   1211 Geneve 23, Switzerland
E-Mail: Fons.Rademakers@cern.ch              Phone: +41 22 7679248
WWW:    http://root.cern.ch/~rdm/            Fax:   +41 22 7677910



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:41 MET