[ROOT] Effects of IgnoreTObjectStreamer and BypassStreamer

From: Bill Seligman (seligman@nevis1.nevis.columbia.edu)
Date: Thu Feb 15 2001 - 18:52:03 MET


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 : Fri Jun 08 2001 - 11:51:08 MEST