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