00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef TPCV1P0_HH
00030 #define TPCV1P0_HH
00031
00032 #include "StDaqLib/GENERIC/EventReader.hh"
00033 #include "StDaqLib/GENERIC/RecHeaderFormats.hh"
00034 #include "TPCV1P0.Banks.hh"
00035
00036 #include "TPCV1P0_Reader.hh"
00037
00038 class TPCV1P0_Reader;
00039 class TPCV1P0_PADK_SR;
00040
00041
00042
00043
00044 class TPCV1P0_ZS_SR : public ZeroSuppressedReader
00045 {
00046 public:
00047 int getPadList(int PadRow, unsigned char **padList);
00048 int getSequences(int PadRow, int Pad, int *nSeq, Sequence **SeqData);
00049 int getSpacePts(int PadRow, int *nSpacePts, SpacePt **SpacePts);
00050 int MemUsed();
00051
00052 TPCV1P0_ZS_SR(int sector, TPCV1P0_Reader *);
00053 int initialize();
00054 int getFeeSequences(int Fee, int Pin, int *nSeq, Sequence **SeqData);
00055
00056 ~TPCV1P0_ZS_SR();
00057
00058 private:
00059 classname(Bank_TPCADCD) *adcd_p[6][3];
00060 classname(Bank_TPCADCX) *adcx_p[6][3];
00061 classname(Bank_TPCSEQD) *seqd_p[6][3];
00062
00063 int sector;
00064 struct Pad Pad_array[TPC_PADROWS][TPC_MAXPADS];
00065 struct PadRow Row_array[TPC_PADROWS];
00066 u_char padlist[TPC_PADROWS][TPC_MAXPADS];
00067
00068 TPCV1P0_Reader *detector;
00069 TPCV1P0_PADK_SR *padkr;
00070
00071 };
00072
00073
00074 class TPCV1P0_ADCR_SR : public ADCRawReader
00075 {
00076 public:
00077 int getPadList(int PadRow, unsigned char **padList);
00078 int getSequences(int PadRow, int Pad, int *nArray, u_char **Array);
00079 int MemUsed();
00080
00081 TPCV1P0_ADCR_SR(int sector, TPCV1P0_Reader *);
00082 int initialize();
00083 ~TPCV1P0_ADCR_SR();
00084
00085 private:
00086 int sector;
00087 TPCV1P0_Reader *detector;
00088 TPCV1P0_PADK_SR *padkr;
00089 u_char padlist[TPC_PADROWS][TPC_MAXPADS];
00090
00091 classname(Bank_TPCADCR) *banks[6][3];
00092 };
00093
00094
00095 class TPCV1P0_PEDR_SR : public PedestalReader
00096 {
00097 private:
00098 int sector;
00099 TPCV1P0_Reader *detector;
00100 TPCV1P0_PADK_SR *padkr;
00101 classname(Bank_TPCPEDR) *banks[6][3];
00102 u_char padlist[TPC_PADROWS][TPC_MAXPADS];
00103 int numEvents;
00104
00105 public:
00106 int getPadList(int PadRow, unsigned char **padList);
00107 int getSequences(int PadRow, int Pad, int *nArray, u_char **Array);
00108 int getNumberOfEvents();
00109
00110 int MemUsed();
00111
00112 TPCV1P0_PEDR_SR(int sector, TPCV1P0_Reader *);
00113 int initialize();
00114 ~TPCV1P0_PEDR_SR();
00115 };
00116
00117
00118 class TPCV1P0_PRMS_SR : public PedestalRMSReader
00119 {
00120 private:
00121 int sector;
00122 TPCV1P0_Reader *detector;
00123 TPCV1P0_PADK_SR *padkr;
00124 classname(Bank_TPCRMSR) *banks[6][3];
00125 u_char padlist[TPC_PADROWS][TPC_MAXPADS];
00126 int numEvents;
00127
00128
00129 public:
00130 int getPadList(int PadRow, unsigned char **padList);
00131 int getSequences(int PadRow, int Pad, int *nArray, u_char **Array);
00132 int getNumberOfEvents();
00133
00134 int MemUsed();
00135
00136 TPCV1P0_PRMS_SR(int sector, TPCV1P0_Reader *);
00137 int initialize();
00138 ~TPCV1P0_PRMS_SR();
00139 };
00140
00141
00142
00143 class TPCV1P0_G_SR : public GainReader
00144 {
00145 private:
00146 int sector;
00147 TPCV1P0_Reader *detector;
00148
00149
00150 public:
00151 int getGain(int PadRow, int Pad, struct Gain **gain);
00152 int getMeanGain();
00153 int getNumberOfEvents();
00154
00155 int MemUsed();
00156
00157 TPCV1P0_G_SR(int sector, TPCV1P0_Reader *);
00158 int initialize();
00159 ~TPCV1P0_G_SR();
00160 };
00161
00162
00163 class TPCV1P0_CPP_SR : public CPPReader
00164 {
00165 public:
00166 int getClusters(int PadRow, int Pad, int *nClusters,
00167 struct ASIC_Cluster **clusters);
00168
00169 int getAsicParams(ASIC_params *){return FALSE;};
00170 int MemUsed();
00171
00172 TPCV1P0_CPP_SR(int sector, TPCV1P0_Reader *);
00173 int initialize();
00174 ~TPCV1P0_CPP_SR();
00175
00176 private:
00177 int sector;
00178 TPCV1P0_Reader *detector;
00179 TPCV1P0_PADK_SR *padkr;
00180 classname(Bank_TPCCPPR) *banks[6][3];
00181 };
00182
00183
00184 class TPCV1P0_BC_SR : public BadChannelReader
00185 {
00186 private:
00187 int sector;
00188
00189 public:
00190 int IsBad(int PadRow, int Pad);
00191
00192 int MemUsed();
00193
00194 TPCV1P0_BC_SR(int sector, TPCV1P0_Reader *);
00195 int initialize();
00196 ~TPCV1P0_BC_SR();
00197 };
00198
00199
00200 class TPCV1P0_CR_SR : public ConfigReader
00201 {
00202 private:
00203 int sector;
00204 TPCV1P0_Reader *detector;
00205
00206 public:
00207 int FEE_id(int PadRow, int Pad) = 0;
00208
00209
00210 int MemUsed();
00211
00212 TPCV1P0_CR_SR(int sector, TPCV1P0_Reader *);
00213 int initialize();
00214 ~TPCV1P0_CR_SR();
00215 };
00216
00217 struct PADK_entry
00218 {
00219 short offset;
00220 short mz;
00221 short rb;
00222 };
00223
00224 class TPCV1P0_PADK_SR
00225 {
00226 public:
00227 TPCV1P0_PADK_SR(int sector, TPCV1P0_Reader *);
00228 int initialize();
00229
00230 void place(short padrow, short pad, PADK_entry *);
00231 void get(short padrow, short pad, PADK_entry *);
00232
00233 int getADCBytes() { return 512; };
00234 int getCPPBytes() { return 128; };
00235 int getPEDBytes() { return 512; };
00236 int getRMSBytes() { return 512; };
00237 int getCFGBytes() { return 1; };
00238 int getGAINBytes() { return 4; };
00239
00240 private:
00241 int sector;
00242 TPCV1P0_Reader *detector;
00243
00244 short packed_address[TPC_PADROWS][TPC_MAXPADS];
00245
00246 short pack(short rcb, short mz, short offset);
00247 void unpack(PADK_entry *, short paddress);
00248 };
00249
00250 #endif
00251
00252
00253
00254
00255