I'm having problems including some none-TObjects into a (root)shared
library.
I have a simple Event class (MTRawEvent) declared as follows:
(some members not shown for clarity):
---- MTRawEvent.H ----
#ifndef _MTRawEvent_H_
#define _MTRawEvent_H_
#include "TObject.h"
#include "MTRawHit.H"
class MTRawEvent: public TObject {
public:
MTRawEvent(); // create uninitialized
void SetRawHit(MTRawHit rawHit); // temp set hit as long as not array...
MTRawHit GetRawHit() const; // temp get the single raw hit
virtual ~MTRawEvent(); // destroy Event-object
ClassDef(MTRawEvent, 1) // RawEvent class
private:
MTRawHit fRawHit; // raw hit
};
#endif // _MTRawEvent_H_
---- ----
It contains a MTRawHit object as datamember, which is NOT a TObject:
---- MTRawHit.H ----
#ifndef _MTRawHit_H_
#define _MTRawHit_H_
#include "MTChannelId.H"
class MTRawHit {
public:
MTRawHit(MTChannelId channelId = 0, Int_t tdcValue = 0);
MTChannelId GetChannelId() const; // get channel id
Int_t GetTDCValue() const; // get TDC value
~MTRawHit(); // destroy Hit-object
private:
MTChannelId fChannelId; // channel Id
Int_t fTDCValue; // TDC value
};
#endif // _MTRawHit_H_
---- ----
It contains as datamembers a Int_t and another none-TObject class
MTChannelId.
My problem:
The MTRawEvent I (ofcourse) want to somewhere put in a TTree and a TFile.
With rootcint I can then create the appropriate Streamer methods for
classes inheriting from TObject. From reading the ROOT tutorial and
'course' and browsing the web-pages it doesn't become completely clear
to me what the best procedure is to handle none-TObject classes.
My questions:
- Should I (manually) write Streamer (and ShowMember) member functions for
the none-TObjects (MTRawHit and MTChannelId) or should I only modify the
TObject MTRawEvent?
- If I write (or modify) a Streamer member function definition should I
also put the declaration in the class declaration? Actually I don't
understand why this seems NOT to be necesarry for TObjects...
- Should I include classes of the none-TObjects in the linkdef.h file
(with #pragma link C++ class MTChannelId-; (or with also '!' ?))
I would appriciate any help and/or simple-example ,
Rutger van der Eijk