Hi,
I have a question concerning custom streamers:
Do I have to write a Streamer (or call the Streamer method) for each base
class of an user defined class ?
In particular, must I call the TObject::Streamer(TBuffer&) from my custom
Streamer ?
The example:
http://root.cern.ch/root/InputOutput.html#streamer
calls the Tnamed, TAttLine and TAttFill Streamers but not the TAtt3D
Streamer
In my application I have:
class TMirrorEvent : public TObject
{
public:
TMirrorEvent(); // standard ctor
TMirrorEvent( MiEvent ); // ctor from MiEvent
TMirrorEvent( TShmEvent* ); // ctor from TShmEvent
virtual ~TMirrorEvent();
inline void Dump(); // 'dump' contents to stdout
void Update( TShmEvent* ); // update internal references ...
// access functions for sub structures
public:
inline TMirrorEventHeader* EventHeader();
inline TMirrorPixelData* PixelData();
inline TMirrorPixelList* PixelList();
inline TMirrorFADCData* FADCData();
private:
MiEvent pMiEvent;
enum Constructor_t { kCREATE, kMIEVENT, kTSHMEVENT };
enum Constructor_t fConstructorType; // how object was created
private:
TMirrorEventHeader* pHeader; // ptr. to TMirrorEventHeader
TMirrorPixelData* pPixelData; // ptr. to TMirrorPixelData
TMirrorPixelList* pPixelList; // ptr. to TMirrorPixelList
TMirrorFADCData* pFADCData; // ptr. to TMirrorFADCData
ClassDef(TMirrorEvent,MiEVENTVERSION)
};
with the Streamer():
void TMirrorEvent::Streamer(TBuffer &b)
{
if (b.IsReading()) {
Version_t v = b.ReadVersion();
if ( v != MiEVENTVERSIONv1 ) {
cerr << "Version mismatch in TMirrorPixelList::Streamer()!" << endl;
}
// is this really needed ?
TObject::Streamer( b );
} else {
b.WriteVersion(TMirrorEvent::IsA());
// is this really needed ?
TObject::Streamer( b );
}
pHeader->Streamer( b );
pPixelData->Streamer( b );
pPixelList->Streamer( b );
pFADCData->Streamer( b );
}
The other classes (TMirror*) inherit indeed also from TObject, but don't
call TObject::Streamer(). Both versions work (writing and reading), as
long as I don't mix the data files. But what is the really compatible,
recommended way to go ?
Thanks and Regards
Hermann-Josef
**************************************************************************
* *
* Dr. Hermann-Josef Mathes *
* KASCADE & AUGER Collaboration *
* Forschungszentrum Karlsruhe Phone: +49 7247 822429 *
* Institut fuer Kernphysik FAX: +49 7247 824075 *
* POB 3640 *
* D-76021 Karlsruhe/Germany Mail: mathes@ik3.fzk.de *
* hjmathes@web.de *
* *
**************************************************************************
* Feel free to visit my homepage: *
* http://www-ik3.fzk.de/~mathes/Welcome.html *
* My software project page for DAQ: *
* http://www-ik3.fzk.de/~mathes/software/software.html *
* *
* Visit the institute and project homepages: *
* http://www-ik3.fzk.de/ *
* http://www-ik1.fzk.de/KASCADE_home.html *
**************************************************************************
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:29 MET