/*********** BxLaben *************/ class BxLabenRawHit: public TObject { public: BxLabenRawHit (); virtual ~BxLabenRawHit (); UShort_t GetLg () const { return lg; } private: UShort_t lg; }; class BxLabenClusteredHit: public TObject { public: BxLabenClusteredHit (); virtual ~BxLabenClusteredHit (); Double_t GetTime () const { return time; } private: Double_t time; }; class BxLabenCluster: public TObject { public: BxLabenCluster (); virtual ~BxLabenCluster (); const TClonesArray* GetHits () const { return hits; } Int_t GetNHits () const { return nhits; } private: Int_t nhits; TClonesArray *hits; //-> }; class BxLaben: public TObject { public: BxLaben(); virtual ~BxLaben (); void Assign(); const TClonesArray* GetRawHits () const { return raw_hits; } const TClonesArray* GetClusters () const { return clusters; } Double_t GetTriggerTime () const { return trigger_time; } private: Double_t trigger_time; TClonesArray *raw_hits; //-> TClonesArray *clusters; //-> }; /*********** BxEvent *************/ class BxEvent : public TObject { public: BxEvent(); virtual ~BxEvent (); void Assign(); // event header getters Int_t GetEvNum () const { return evnum; } // subclass getters const BxLaben& GetLaben () const { return laben; } private: Int_t evnum; BxLaben laben; }; /********** implementation ************/ BxLabenRawHit::BxLabenRawHit() : lg(666) { } BxLabenClusteredHit::BxLabenClusteredHit() : time(13.) { } BxLabenCluster::BxLabenCluster() : nhits(99) { hits = new TClonesArray("BxLabenClusteredHit", 10000); for (int i = 0 ; i < nhits; i++) new ((*hits)[i]) BxLabenClusteredHit(); } BxLaben::BxLaben() { raw_hits = new TClonesArray("BxLabenRawHit", 10000); clusters = new TClonesArray("BxLabenCluster", 10000); } void BxLaben::Assign() { trigger_time = 3.1; raw_hits->Clear(); for (int i = 0 ; i < 100; i++) new ((*raw_hits)[i]) BxLabenRawHit(); clusters->Clear(); for (int i = 0 ; i < 5; i++) new ((*clusters)[i]) BxLabenCluster(); } BxEvent::BxEvent() : laben() { } void BxEvent::Assign() { evnum = 15; laben.Assign(); } BxLabenRawHit::~BxLabenRawHit() {} BxLabenClusteredHit::~BxLabenClusteredHit() {} BxLabenCluster::~BxLabenCluster() { if (hits) delete hits; } BxLaben::~BxLaben() { if (raw_hits) delete raw_hits; if (clusters) delete clusters; } BxEvent::~BxEvent() {}