Re: [ROOT] Effects of IgnoreTObjectStreamer and BypassStreamer

From: Rene Brun (Rene.Brun@cern.ch)
Date: Thu Feb 15 2001 - 22:32:53 MET


Hi Bill,
You are now becoming an expert on these new I/O facilities despite the
fact that they are not yet well described.
When doing LArRootEvent::Class()->IgnoreTObjectStreamer();
the TObject part of the class  LArRootEvent is not streamed to the file.
This feature is useful in case you do not use any of the TObject fBits and
fUniqueID. You gain space on the file. But you do not loose functionality.
By calling ByPassStreamer, you instruct the TClonesArray::Streamer to not
call your class Streamer function, but to use a more efficient code
internally. You loose only the control in Streamer, nothing else.
Calling these two functions does not disable the automatic schema
evolution system. I am planning to make BypassStreamer the default
behaviour for objects in a TClonesArray. I will put the announcement
in due time.

Rene Brun


On Thu, 15 Feb 2001, Bill Seligman wrote:

> My second question:
> 
> I know that doing the following calls:
> 
>   LArRootEvent::Class()->IgnoreTObjectStreamer();
>   LArRootEvent::Class()->BypassStreamer();
>   LArRootHit::Class()->IgnoreTObjectStreamer();
>   LArRootHit::Class()->BypassStreamer();
> 
> will greatly speed up the I/O of a TClonesArray of LArRootHit* in
> LArRootEvent.
> 
> The question is, what am I giving up with these calls?  I've read the
> descriptions at
> <http://root.cern.ch/root/htmldoc/TClass.html#TClass:BypassStreamer> and
> <http://root.cern.ch/root/htmldoc/TClass.html#TClass:IgnoreTObjectStreamer>. 
> I know that the BypassStreamer() means I lose the potential of
> additional operations in the Streamer() method, and
> IgnoreTObjectStreamer() means that I don't save the fBits and fUniqueID
> of the TObject.
> 
> But what are the practical consequences of not having these features? 
> Do I lose ROOT 3's automatic schema evolution?  Are there some
> histogramming operations that will no longer work?  
> 
> Or are there no other effects other than I/O speed?  Should I
> automatically put them in for every class I derive from TObject?  (And
> if so, why aren't they the default?)
> -- 
> Bill Seligman       | mailto://seligman@nevis.columbia.edu
> Nevis Labs          | http://www.nevis.columbia.edu/~seligman/
> PO Box 137          |
> Irvington NY 10533  | Phone: (914) 591-2823
> 



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:36 MET