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