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
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 #ifndef TPCV2P0_HH
00048 #define TPCV2P0_HH
00049
00050 #include "StDaqLib/GENERIC/EventReader.hh"
00051 #include "StDaqLib/GENERIC/Error.hh"
00052 #include "StDaqLib/GENERIC/RecHeaderFormats.hh"
00053 #include "TPCV2P0.Banks.hh"
00054
00055 #include "TPCV2P0_Reader.hh"
00056
00057 class TPCV2P0_Reader;
00058 class TPCV2P0_PADK_SR;
00059
00060
00061
00062
00063 class TPCV2P0_ZS_SR : public ZeroSuppressedReader
00064 {
00065 public:
00066 int getPadList(int PadRow, unsigned char **padList);
00067 int getSequences(int PadRow, int Pad, int *nSeq, Sequence **SeqData);
00068 int getSpacePts(int PadRow, int *nSpacePts, SpacePt **SpacePts);
00069
00070 int MemUsed();
00071
00072 TPCV2P0_ZS_SR(int sector, TPCV2P0_Reader *,char mergeSequences);
00073 int initialize();
00074 int getFeeSequences(int Fee, int Pin, int *nSeq, Sequence **SeqData);
00075
00076 ~TPCV2P0_ZS_SR();
00077
00078
00079 private:
00080 classname(Bank_TPCADCD) *adcd_p[6][3];
00081 classname(Bank_TPCADCX) *adcx_p[6][3];
00082 classname(Bank_TPCSEQD) *seqd_p[6][3];
00083 classname(Bank_TPCMZCLD) *cld_p[6][3];
00084
00085 char mMergeSequences;
00086 int sector;
00087 int nsptrow[TPC_PADROWS];
00088 SpacePt *RowSpacePts[TPC_PADROWS];
00089 struct Pad Pad_array[TPC_PADROWS][TPC_MAXPADS];
00090 struct PadRow Row_array[TPC_PADROWS];
00091 u_char padlist[TPC_PADROWS][TPC_MAXPADS];
00092
00093 TPCV2P0_Reader *detector;
00094 TPCV2P0_PADK_SR *padkr;
00095
00096 };
00097
00098
00099
00100 class TPCV2P0_ADCR_SR : public ADCRawReader
00101 {
00102 public:
00103 int getPadList(int PadRow, unsigned char **padList);
00104 int getSequences(int PadRow, int Pad, int *nArray, u_char **Array);
00105 int MemUsed();
00106
00107 TPCV2P0_ADCR_SR(int sector, TPCV2P0_Reader *);
00108 int initialize();
00109 ~TPCV2P0_ADCR_SR();
00110
00111 private:
00112 int sector;
00113 TPCV2P0_Reader *detector;
00114 TPCV2P0_PADK_SR *padkr;
00115 u_char padlist[TPC_PADROWS][TPC_MAXPADS];
00116
00117 classname(Bank_TPCADCR) *banks[6][3];
00118 };
00119
00120
00121 class TPCV2P0_PEDR_SR : public PedestalReader
00122 {
00123 private:
00124 int sector;
00125 TPCV2P0_Reader *detector;
00126 TPCV2P0_PADK_SR *padkr;
00127 classname(Bank_TPCPEDR) *banks[6][3];
00128 u_char padlist[TPC_PADROWS][TPC_MAXPADS];
00129 int numEvents;
00130
00131 public:
00132 int getPadList(int PadRow, unsigned char **padList);
00133 int getSequences(int PadRow, int Pad, int *nArray, u_char **Array);
00134 int getNumberOfEvents();
00135
00136 int MemUsed();
00137
00138 TPCV2P0_PEDR_SR(int sector, TPCV2P0_Reader *); int initialize();
00139 ~TPCV2P0_PEDR_SR();
00140 };
00141
00142
00143 class TPCV2P0_PRMS_SR : public PedestalRMSReader
00144 {
00145 private:
00146 int sector;
00147 TPCV2P0_Reader *detector;
00148 TPCV2P0_PADK_SR *padkr;
00149 classname(Bank_TPCRMSR) *banks[6][3];
00150 u_char padlist[TPC_PADROWS][TPC_MAXPADS];
00151 int numEvents;
00152
00153 public:
00154 int getPadList(int PadRow, unsigned char **padList);
00155 int getSequences(int PadRow, int Pad, int *nArray, u_char **Array);
00156 int getNumberOfEvents();
00157
00158 int MemUsed();
00159
00160 TPCV2P0_PRMS_SR(int sector, TPCV2P0_Reader *);
00161 int initialize();
00162 ~TPCV2P0_PRMS_SR();
00163 };
00164
00165
00166 class TPCV2P0_G_SR : public GainReader
00167 {
00168 private:
00169 int sector;
00170 TPCV2P0_Reader *detector;
00171
00172 public:
00173 int getGain(int PadRow, int Pad, struct Gain **gain);
00174 int getMeanGain();
00175 int getNumberOfEvents();
00176
00177 int MemUsed();
00178
00179 TPCV2P0_G_SR(int sector, TPCV2P0_Reader *);
00180 int initialize();
00181 ~TPCV2P0_G_SR();
00182 };
00183
00184
00185 class TPCV2P0_CPP_SR : public CPPReader
00186 {
00187 public:
00188 int getClusters(int PadRow, int Pad, int *nClusters,
00189 struct ASIC_Cluster **clusters);
00190 int getAsicParams(ASIC_params *);
00191 int MemUsed();
00192
00193 TPCV2P0_CPP_SR(int sector, TPCV2P0_Reader *);
00194 int initialize();
00195 ~TPCV2P0_CPP_SR();
00196
00197 private:
00198 int sector;
00199 TPCV2P0_Reader *detector;
00200 TPCV2P0_PADK_SR *padkr;
00201 classname(Bank_TPCCPPR) *banks[6][3];
00202 };
00203
00204
00205 class TPCV2P0_BC_SR : public BadChannelReader
00206 {
00207 private:
00208 int sector;
00209
00210 public:
00211 int IsBad(int PadRow, int Pad);
00212
00213 int MemUsed();
00214
00215 TPCV2P0_BC_SR(int sector, TPCV2P0_Reader *);
00216 int initialize();
00217 ~TPCV2P0_BC_SR();
00218 };
00219
00220
00221 class TPCV2P0_CR_SR : public ConfigReader
00222 {
00223 private:
00224 int sector;
00225
00226 public:
00227 int FEE_id(int PadRow, int Pad) = 0;
00228
00229
00230 int MemUsed();
00231
00232 TPCV2P0_CR_SR(int sector, TPCV2P0_Reader *);
00233 int initialize();
00234 ~TPCV2P0_CR_SR();
00235 };
00236
00237 struct PADK_entry
00238 {
00239 short offset;
00240 short mz;
00241 short rb;
00242 };
00243
00244 class TPCV2P0_PADK_SR
00245 {
00246 public:
00247 TPCV2P0_PADK_SR(int sector, TPCV2P0_Reader *);
00248 int initialize();
00249
00250 void place(short padrow, short pad, PADK_entry *);
00251 void get(short padrow, short pad, PADK_entry *);
00252
00253 int getADCBytes() { return 512; };
00254 int getCPPBytes() { return 128; };
00255 int getPEDBytes() { return 512; };
00256 int getRMSBytes() { return 512; };
00257 int getCFGBytes() { return 1; };
00258 int getGAINBytes() { return 4; };
00259
00260 private:
00261 int sector;
00262 TPCV2P0_Reader *detector;
00263
00264 short packed_address[TPC_PADROWS][TPC_MAXPADS];
00265
00266 short pack(short rcb, short mz, short offset);
00267 void unpack(PADK_entry *, short paddress);
00268 };
00269
00270 #endif
00271
00272
00273
00274
00275