00001
00011 #ifndef TARTRIDF_H
00012 #define TARTRIDF_H
00013 #include "TArtDataFormat.h"
00014 #include <stdio.h>
00018 typedef union {
00019 unsigned long long int BYTE;
00020 struct {
00021 unsigned long long int fSize:22;
00022 unsigned long long int fClassID:6;
00023 unsigned long long int fLayer:2;
00024 unsigned long long int fReserved:2;
00025 unsigned long long int fAddress:32;
00026 void Print() {
00027 printf("Ly = %d\n",fLayer);
00028 printf("Cl = %d\n",fClassID);
00029 printf("Size = %d\n",fSize);
00030 printf("Addr = %d\n",fAddress);
00031 }
00032 } BIT;
00033 } ArtRidfHeader_t;
00037 class TArtRIDF : public TArtDataFormat {
00038 public:
00039 virtual ~TArtRIDF();
00040 static TArtDataFormat* Instance();
00041 virtual ArtBlockStat_t GetNextBlock(TArtDataSource* source);
00042 virtual ArtEventStat_t GetNextEvent(unsigned short* buf,
00043 unsigned short* runbuf,
00044 unsigned short*rnum,
00045 int &nw);
00046 virtual void FindSegment(unsigned short *evtdata,
00047 int *evtsize,
00048 int *addr,
00049 int *nw,
00050 int *maxsegid);
00051 protected:
00052 TArtRIDF();
00053 private:
00054 static TArtDataFormat* fgInstance;
00055 };
00056 #endif // end of #ifdef TARTRIDF_H