#ifndef _TPCData_h_ #define _TPCData_h_ #include "event.h" #include class TPCAltroChannel { private: unsigned short fRcuid; unsigned short fHwid; char *fData; public: unsigned short get10BitWord(unsigned short * x, int pos); int GetDecoded(unsigned short n,unsigned short *ch); int GetEncoded(unsigned short n,unsigned short *ch); int Set(int rcuid ,int hwid, char *data); int GetHardwareAddress(unsigned short *rcuid, unsigned short *chid){*rcuid=fRcuid;*chid=fHwid; return 0;}; int GetMeanAndRMS(int n, unsigned short * data,float *mean, float *rms, int min, int max); TPCAltroChannel(int rcuid ,int hwid, char *data){Set(rcuid,hwid,data);}; TPCAltroChannel(){}; ~TPCAltroChannel(){}; int Print(); }; class TPCRcu { private: unsigned short fHwid; unsigned short fNumberOfChannels; unsigned int fstart; unsigned int fend; char *fHeader; public: int Set(int hwid, char *header); int SetChannel(unsigned int ch); TPCRcu(); TPCRcu(int hwid, char *header){ Set(hwid,header);}; ~TPCRcu(); int Get(char *data){data=fHeader; return fHwid;}; char *Get(){return fHeader;}; int front(){return fstart;}; int back(){return fend;}; int GetNumberOfChannels(){ return fNumberOfChannels;}; int Print(); }; class TPCData { private: struct eventHeaderStruct *fevent; std::vector fRcuList; unsigned short fCurrentRcu; std::vector fChannelList; unsigned short fCurrentChannel; unsigned int fRcuHWAddr; public: unsigned short GetNumberOfRcus() {return fRcuList.size(); }; // returns Number of Rcus unsigned short GetNumberOfChannels(){return fChannelList.size();}; // Returns total number of Altro Channels unsigned short GetNumberOfChannels(int id){ return fRcuList[id].GetNumberOfChannels(); }; // return number of Channels in each Rcu std::vector *GetChannels(){return &fChannelList;}; // int AddChannel(int hwid,char *data); // Adds a Channel to channel list int AddRcu(int hwid, char* data); // Adds a Rcu to rculist int SetEvent(char* data); // Adds a Rcu to rculist TPCData(unsigned int nrcu, unsigned int nchperrcu); int Reset(); ~TPCData(); int Print(); }; #endif