00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef RICH_READER_HH
00020 #define RICH_READER_HH
00021
00022 #include "StDaqLib/GENERIC/EventReader.hh"
00023 #include "StDaqLib/GENERIC/RecHeaderFormats.hh"
00024 #include "StDaqLib/GENERIC/swaps.hh"
00025 #include "StDaqLib/RICH/RichEventReader.hh"
00026
00027 #define RICH_CRAM_BANKS 8
00028 #define RICH_NUM_CRAMS 8
00029 #define MAX_NUM_CRAMS 8
00030 #define MAX_CHANNEL_NUM 960
00031 #define RICH_NUM_ROWS_PER_CRAM 6
00032 #define RICH_PAD MAX_CHANNEL_NUM/RICH_NUM_ROWS_PER_CRAM
00033 #define RICH_ROW 2*RICH_NUM_CRAMS*RICH_NUM_ROWS_PER_CRAM
00034
00035
00036 namespace RICH_READER {
00037 struct offlen {
00038 unsigned int off;
00039 unsigned int len;
00040 } ;
00041 }
00042 struct Bank_RICP: public Bank
00043 {
00044 struct RICH_READER::offlen CramPTR[2*MAX_NUM_CRAMS] ;
00045 struct RICH_READER::offlen Reserved[2];
00046
00047 } ;
00048
00049 struct RICCRAMP: public Bank
00050 {
00051 struct RICH_READER::offlen banks[RICH_CRAM_BANKS];
00052 };
00053
00054
00055 struct RICDATAD: public Bank{
00056
00057 unsigned int chanADC[1];
00058
00059
00060
00061 };
00062
00063 struct RichDATA{
00064 char * BankType;
00065 unsigned int ByteSwapped ;
00066 unsigned int EventNumber;
00067 unsigned int NumOfChannels;
00068 unsigned short RichMatrix[RICH_PAD] [RICH_ROW] ;
00069 };
00070
00071
00072
00073
00074 class StRichReaderInterface {
00075 public:
00076 virtual ~StRichReaderInterface(){}
00077
00078 virtual unsigned short GetADCFromCoord(int, int) = 0;
00079 virtual unsigned short GetADCFromCramChannel(int, int) = 0;
00080 virtual unsigned int GetEventNumber() = 0;
00081 };
00082
00083
00084 class RICH_Reader : public StRichReaderInterface {
00085 void ProcessEvent(const Bank_RICP * RichPTR);
00086
00087 public:
00088
00089 RICH_Reader(EventReader *er, Bank_RICP *pRICP);
00090 RICH_Reader(RichEventReader *er, Bank_RICP *pRICP);
00091
00092 ~RICH_Reader(){};
00093
00094 unsigned short GetADCFromCoord(int x,int y);
00095 unsigned short GetADCFromCramChannel(int cramBlock,int channelNum);
00096 unsigned int GetEventNumber();
00097 unsigned int GetNumOfChannels();
00098
00099 const char * GetBankType();
00100
00101 int IsByteSwapped();
00102
00103 protected:
00104
00105
00106 EventReader *ercpy;
00107
00108
00109 struct Bank_RICP *pBankRICP;
00110
00111 RichDATA mTheRichArray;
00112
00113
00114 };
00115
00116 RICH_Reader *getRICHReader(EventReader *er);
00117
00118 #endif
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130