TObjArray Streamer

From: Anthony Faust (afaust@dres.dnd.ca)
Date: Mon Nov 29 1999 - 18:36:39 MET


Good morning Rooters,

	I would like to write the following class, which includes a TObjArray, 
to a ROOT file. However, the Streamer function for the 'TObjArray* fTracks' 
pointer, generated by rootcint does, not call a Streamer function for the 
TObjArray, as can be seem in the attached Streamer function. 
	
	I have lloed for similar examples but could not find any. I am just 
getting started with root, so any helpful tips would be appreciated.
	
	Thanks.

#ifndef TXrayEvent_hh
#define TXrayEvent_hh 1

////////////////////////////////////////////////////////////////
//                                                            //
// TXrayEvent                                                 //
// Description of the event parameters                        //
//                                                            //
////////////////////////////////////////////////////////////////

#include "TObjArray.h"
#include <iostream.h>

#include "TXrayTrack.hh"

#ifdef G4ROOT
#include "G4Event.hh"
#endif

class TXrayEvent : public TObject {

public:
            TXrayEvent();
   virtual ~TXrayEvent();

   Int_t  GetRunID()		const { return frunID; }
   Int_t  GetEvtID()		const { return feventID; }
   Int_t  GetDate()		const { return fDate; }

   Int_t  GetNTrack()		const { return fNtrack; }
   UInt_t GetFlag()		const { return fFlag; }

   TObjArray *GetTracks()	const { return fTracks; }

   void Clear(Option_t* option="");
   void Reset(Option_t* option="");

#ifdef G4ROOT
public:
   void Fill    (const G4Event*);
   void AddTrack(const XrayTrajectory*);
#endif

private:

   Int_t          frunID;
   Int_t          feventID;
   Int_t          fDate;

   Int_t          fNtrack;
   UInt_t         fFlag;

          TObjArray  *fTracks;
   static TObjArray *fgTracks;


   ClassDef(TXrayEvent,1)  //Event structure
};

#endif

///////////////////////////////////
// rootcint generated Streamer   //
/////////////////////////////////// 

 void TXrayEvent::Streamer(TBuffer &R__b)
 {
    // Stream an object of class TXrayEvent.
 
    if (R__b.IsReading()) {
       Version_t R__v = R__b.ReadVersion(); if (R__v) { }
       TObject::Streamer(R__b);
       R__b >> frunID;
       R__b >> feventID;
       R__b >> fDate;
       R__b >> fNtrack;
       R__b >> fFlag;
       R__b >> fTracks;
    } else {
       R__b.WriteVersion(TXrayEvent::IsA());
       TObject::Streamer(R__b);
       R__b << frunID;
       R__b << feventID;
       R__b << fDate;
       R__b << fNtrack;
       R__b << fFlag;
       R__b << fTracks;
    }
 }
 


_____________
Anthony A. Faust                                | Anthony.Faust@dres.dnd.ca
Defence Research Establishment Suffield         | PH:  (403) 544-5362
Box 4000, Medicine Hat, Alberta, CANADA T1A 8K6 | FAX: (403) 544-4704



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:43 MET