00001 #include "TTree.h" 00002 #include "Riostream.h" 00003 00004 class TUsrHit:public TObject { 00005 public: 00006 TUsrHit(Int_t ev=0); 00007 virtual ~TUsrHit() {} 00008 00009 protected: 00010 Int_t fEventNumber; // internal event number 00011 Int_t fModuleNumber; // module serial number 00012 Int_t fChannel; // module channel 00013 UShort_t fEventTime[3]; // time stamp generated by dgf clock bus (48 bits unsigned!) 00014 00015 ClassDef(TUsrHit, 1) // [Analyze] Hit 00016 }; 00017 00018 //______________________________________________________ 00019 00020 class TUsrHitBuffer:public TObject { 00021 public: 00022 // TUsrHitBuffer(){}; 00023 TUsrHitBuffer(Int_t maxent = 10); 00024 virtual ~TUsrHitBuffer() { 00025 cout << "~~~~~~dtor TUsrHitBuffer " << this << endl; 00026 delete fHits; 00027 } 00028 00029 00030 TUsrHit *AddHit(Int_t ev); 00031 Int_t GetBufSize() { return fHits->GetSize();} 00032 TClonesArray *GetCA() { return (fHits);} 00033 void Clear(Option_t *opt=""); 00034 00035 protected: 00036 00037 Int_t fNofEntries; // max number of entries 00038 Int_t fNofHits; // current number of hits 00039 TClonesArray *fHits; // array containing hit data 00040 00041 ClassDef(TUsrHitBuffer, 1) // [Analyze] Hit buffer 00042 }; 00043 00044 //______________________________________________________ 00045 00046 class TMrbSubevent_Caen:public TObject { 00047 00048 public: 00049 TMrbSubevent_Caen() {cout << "ctor TMrbSubevent_Caen" << this << endl;} 00050 virtual ~TMrbSubevent_Caen() {} 00051 void Clear(Option_t * /* opt */ ="") {fHitBuffer.Clear();}; 00052 TUsrHitBuffer * GetHitBuffer() {return &fHitBuffer;}; 00053 protected: 00054 00055 Int_t fTimeStamp; // time stamp, same as fUniqueID 00056 TUsrHitBuffer fHitBuffer; // hit buffer to store subevent data 00057 00058 ClassDef(TMrbSubevent_Caen, 1) // [Analyze] Base class for subevents: CAEN data stored in hit buffer 00059 }; 00060 00061 //______________________________________________________ 00062 00063 class TUsrSevtData1:public TMrbSubevent_Caen { 00064 public: 00065 TUsrSevtData1() {SetEvent(0);} 00066 00067 virtual ~TUsrSevtData1() {} 00068 void SetEvent(Int_t ev); 00069 Int_t GetPileup() {return fPileup; }; 00070 00071 protected: 00072 TString fSevtName; // subevent name 00073 Int_t fMer; // data2.mer 00074 Int_t fPileup; // data2.mpileup 00075 00076 ClassDef(TUsrSevtData1, 1) // [Analyze] Store CAEN data in hit buffer 00077 }; 00078 //______________________________________________________ 00079 00080 class TUsrSevtData2:public TMrbSubevent_Caen { 00081 public: 00082 TUsrSevtData2() {SetEvent(0);} 00083 00084 virtual ~TUsrSevtData2() {} 00085 void SetEvent(Int_t ev); 00086 Int_t GetPileup() {return fPileup; }; 00087 00088 protected: 00089 TString fSevtName; // subevent name 00090 Int_t fMer; // data2.mer 00091 Int_t fPileup; // data2.mpileup 00092 00093 ClassDef(TUsrSevtData2, 1) // [Analyze] Store CAEN data in hit buffer 00094 };