00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef StTriggerData2012_hh
00025 #define StTriggerData2012_hh
00026
00027 #include "StTriggerData.h"
00028 #include "StDaqLib/TRG/trgStructures2012.h"
00029
00030 class StTriggerData2012 : public StTriggerData {
00031
00032 public:
00033 StTriggerData2012();
00034 StTriggerData2012(const TriggerDataBlk2012* data, int run);
00035 StTriggerData2012(const TriggerDataBlk2012* data, int run, int bs, int dbg=0);
00036 ~StTriggerData2012();
00037
00038 void readData() {readData(0,0);}
00039 void readData(const TriggerDataBlk2012* data, int bs);
00040 void dump() const;
00041
00042
00043 unsigned int version() const;
00044 unsigned int numberOfPreXing() const;
00045 unsigned int numberOfPostXing() const;
00046
00047
00048 unsigned int eventNumber() const;
00049 unsigned int token() const;
00050 unsigned int triggerWord() const;
00051 unsigned int actionWord() const;
00052 unsigned short busyStatus() const;
00053 unsigned short dsmInput() const;
00054 unsigned short trgToken() const;
00055 unsigned short dsmAddress() const;
00056 unsigned short mAddBits() const;
00057 unsigned short bcData(int channel) const;
00058
00059
00060 int L2ResultsOffset(StL2AlgorithmId id) const;
00061 bool isL2Triggered(StL2TriggerResultType id) const;
00062 unsigned long long l2sum() const;
00063
00064
00065 unsigned int bunchCounterHigh() const;
00066 unsigned int bunchCounterLow() const;
00067 unsigned int bunchId48Bit() const;
00068 unsigned int bunchId7Bit() const;
00069 unsigned int spinBit() const;
00070 unsigned int spinBitYellowFilled() const;
00071 unsigned int spinBitYellowUp() const;
00072 unsigned int spinBitYellowDown() const;
00073 unsigned int spinBitYellowUnpol() const;
00074 unsigned int spinBitBlueFilled() const;
00075 unsigned int spinBitBlueUp() const;
00076 unsigned int spinBitBlueDown() const;
00077 unsigned int spinBitBlueUnpol() const;
00078
00079
00080 unsigned short tcuBits() const;
00081 unsigned short lastDSM(int address) const;
00082 unsigned short bemcLayer1DSM(int channel, int prepost=0) const;
00083 unsigned short eemcLayer1DSM(int channel, int prepost=0) const;
00084 unsigned short emcLayer2DSM(int channel) const;
00085 unsigned short tpcMaskDSM(int channel) const;
00086 unsigned short fpdLayer1DSMRaw(StBeamDirection eastwest, int channel, int prepost=0) const;
00087
00088 unsigned short fpdLayer2DSMRaw(int channel) const;
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098 unsigned short bbcADC(StBeamDirection eastwest, int pmt, int prepost=0) const;
00099 unsigned short bbcTDC(StBeamDirection eastwest, int pmt, int prepost=0) const;
00100 unsigned short bbcADCSum(StBeamDirection eastwest, int prepost=0) const;
00101 unsigned short bbcADCSumLargeTile(StBeamDirection eastwest, int prepost=0) const;
00102 unsigned short bbcEarliestTDC(StBeamDirection eastwest, int prepost=0) const;
00103 unsigned short bbcTimeDifference() const;
00104 unsigned short bbcEarliestTDCLarge(StBeamDirection eastwest, int prepost=0) const;
00105 unsigned short bbcTimeDifferenceLarge() const;
00106
00107
00108 unsigned short fpd(StBeamDirection eastwest, int module, int pmt, int prepost=0) const;
00109 unsigned short fpdSum(StBeamDirection eastwest, int module) const;
00110
00111
00112 unsigned short nQTdata(int prepost=0) const;
00113 unsigned int* QTdata(int prepost=0) const;
00114 unsigned short fmsADC(int crt, int adr, int ch, int prepost=0) const;
00115 unsigned short fmsTDC(int crt, int adr, int ch, int prepost=0) const;
00116
00117
00118 bool zdcPresent(int prepost=0) const;
00119 unsigned short zdcAtChannel(int channel, int prepost=0) const;
00120 unsigned short zdcAtAddress(int address, int prepost=0) const;
00121 unsigned short zdcUnAttenuated(StBeamDirection eastwest, int prepost=0) const;
00122 unsigned short zdcAttenuated(StBeamDirection eastwest, int prepost=0) const;
00123 unsigned short zdcADC(StBeamDirection eastwest, int pmt, int prepost=0) const;
00124 unsigned short zdcTDC(StBeamDirection eastwest, int prepost=0) const;
00125 unsigned short zdcPmtTDC(StBeamDirection eastwest, int pmt, int prepost=0) const;
00126 unsigned short zdcHardwareSum(int prepost=0) const;
00127
00128 unsigned short zdcEarliestTDC(StBeamDirection eastwest, int prepost=0) const;
00129 bool zdcSumADCaboveThreshold(StBeamDirection eastwest, int prepost=0) const;
00130 bool zdcFrontADCaboveThreshold(StBeamDirection eastwest, int prepost=0) const;
00131 bool zdcBackADCaboveThreshold(StBeamDirection eastwest, int prepost=0) const;
00132 unsigned short zdcTruncatedSum(StBeamDirection eastwest, int prepost=0) const;
00133
00134 bool zdcSumADCaboveThresholdL2(StBeamDirection eastwest) const;
00135 bool zdcFrontADCaboveThresholdL2(StBeamDirection eastwest) const;
00136 bool zdcBackADCaboveThresholdL2(StBeamDirection eastwest) const;
00137 unsigned short zdcTimeDifference() const;
00138
00139 bool zdcSumADCaboveThresholdL3(StBeamDirection eastwest) const;
00140 bool zdcFrontADCaboveThresholdL3(StBeamDirection eastwest) const;
00141 bool zdcBackADCaboveThresholdL3(StBeamDirection eastwest) const;
00142 bool zdcTimeDifferenceInWindow() const;
00143
00144
00145 bool zdcSMDPresent(int prepost=0) const;
00146 unsigned short zdcSMD(StBeamDirection eastwest, int verthori, int strip, int prepost=0) const;
00147 unsigned short zdcSMDHighestStrip(StBeamDirection eastwest, int verthori, int prepost=0) const;
00148
00149
00150 unsigned char bemcHighTower(int patch_id, int prepost=0) const;
00151 unsigned char bemcJetPatch (int patch_id, int prepost=0) const;
00152 unsigned char eemcHighTower(int patch_id, int prepost=0) const;
00153 unsigned char eemcJetPatch (int patch_id, int prepost=0) const;
00154 unsigned char bemcHighestTowerADC(int prepost=0) const;
00155 unsigned char eemcHighestTowerADC(int prepost=0) const;
00156
00157
00158 unsigned short vpdADC(StBeamDirection eastwest, int pmt, int prepost=0) const;
00159 unsigned short vpdTDC(StBeamDirection eastwest, int pmt, int prepost=0) const;
00160 unsigned short vpdADCHighThr(StBeamDirection eastwest, int pmt, int prepost=0) const;
00161 unsigned short vpdTDCHighThr(StBeamDirection eastwest, int pmt, int prepost=0) const;
00162 unsigned short vpdEarliestTDC(StBeamDirection eastwest, int prepost=0) const;
00163 unsigned short vpdEarliestTDCHighThr(StBeamDirection eastwest, int prepost=0) const;
00164 unsigned short vpdTimeDifference() const;
00165
00166
00167 unsigned short mtdAtAddress(int address, int prepost=0) const;
00168 unsigned short mtdAdc(StBeamDirection eastwest, int pmt, int prepost=0) const;
00169 unsigned short mtdTdc(StBeamDirection eastwest, int pmt, int prepost=0) const;
00170 unsigned char mtdDsmAtCh(int ch, int prepost=0) const;
00171 bool mtdDsmHit(int pmt, int prepost=0) const;
00172 unsigned short mtdgemAtAddress(int address, int prepost=0) const;
00173 unsigned short mtdVpdTacDiff() const;
00174
00175
00176 unsigned short tofAtAddress(int address, int prepost=0) const;
00177 unsigned short tofTrayMultiplicity(int tray, int prepost=0) const;
00178 unsigned short tofMultiplicity(int prepost=0) const;
00179
00180
00181 unsigned short pp2ppADC(StBeamDirection eastwest, int vh, int udio, int ch, int prepost=0) const;
00182 unsigned short pp2ppTAC(StBeamDirection eastwest, int vh, int udio, int ch, int prepost=0) const;
00183 unsigned long pp2ppDSM(int prepost=0) const;
00184
00185
00186 char* getTriggerStructure();
00187 TriggerDataBlk2012* getTriggerStructure2012();
00188 int getRawSize() const;
00189
00190 unsigned char* getDsm0_BEMCE(int prepost=0) const;
00191 unsigned char* getDsm0_BEMCW(int prepost=0) const;
00192 unsigned short* getDsm1_BEMC(int prepost=0) const;
00193 unsigned char* getDsm0_EEMC(int prepost=0) const;
00194 unsigned short* getDsm1_EEMC(int prepost=0) const;
00195 unsigned short* getDsm2_EMC() const;
00196
00197 unsigned short* getDsm3() const;
00198 unsigned char* getDsm_FMS(int prepost=0) const;
00199
00200
00201 unsigned short* getDsm1_FMS(int prepost=0) const;
00202 unsigned short* getDsm2_FMS() const;
00203 unsigned int l2ResultLength() const;
00204 const unsigned int* l2Result() const;
00205
00206
00207 void killFMS();
00208
00209 protected:
00210 TriggerDataBlk2012 *mData;
00211
00212 EvtDescData2012* EvtDesc;
00213 L1_DSM_Data2012* L1_DSM;
00214 TrgSumData2012* TrgSum;
00215 BELayerBlock2012* mBC1[11];
00216 QTBlock2012* mMXQ[11];
00217 MIXBlock2012* mMIX[11];
00218 BWestBlock2012* mBCW[11];
00219 BEastBlock2012* mBCE[11];
00220 QTBlock2012* mFEQ[11];
00221 BBCBlock2012* mBBC[11];
00222 QTBlock2012* mBBQ[11];
00223 FMSBlock2012* mFMS[11];
00224 QTBlock2012* mQT1[11];
00225 QTBlock2012* mQT2[11];
00226 QTBlock2012* mQT3[11];
00227 QTBlock2012* mQT4[11];
00228 unsigned short mxq[11][16][32],feq[11][16][32],bbq[11][16][32],qt1[11][16][32],qt2[11][16][32],qt3[11][16][32],qt4[11][16][32];
00229 unsigned char tmxq[11][16][32],tfeq[11][16][32],tbbq[11][16][32],tqt1[11][16][32],tqt2[11][16][32],tqt3[11][16][32],tqt4[11][16][32];
00230
00231 void swapOfflen(TrgOfflen2012* offlen);
00232 void swapDataBlk(TriggerDataBlk2012* TrgData);
00233 void swapEvtDesc(EvtDescData2012* EvtDesc);
00234 void swapL1_DSM(L1_DSM_Data2012* L1_DSM);
00235 void swapTrgSum(TrgSumData2012* TrgSum);
00236 void swapRawDetOfflen(TrgOfflen2012* offlen);
00237 void swapRawDet(DataBlock2012* data, int name, int hlength, int bs);
00238
00239 ClassDef(StTriggerData2012,1)
00240 };
00241
00242 inline void StTriggerData2012::swapOfflen(TrgOfflen2012* offlen)
00243 {
00244 swapI((unsigned int*)&offlen->offset);
00245 swapI((unsigned int*)&offlen->length);
00246 }
00247
00248 inline void StTriggerData2012::swapDataBlk(TriggerDataBlk2012 *TrgData)
00249 {
00250 swapI((unsigned int*)&TrgData->FormatVersion);
00251 swapI((unsigned int*)&TrgData->totalTriggerLength);
00252 swapI((unsigned int*)&TrgData->eventNumber);
00253 swapOfflen(&TrgData->EventDesc_ofl);
00254 swapOfflen(&TrgData->L1_DSM_ofl);
00255 swapOfflen(&TrgData->Summary_ofl);
00256 swapIn((unsigned int*)TrgData->PrePostList,10);
00257 }
00258
00259 inline void StTriggerData2012::swapEvtDesc(EvtDescData2012* EvtDesc)
00260 {
00261 swapIn((unsigned int*)&EvtDesc->length,3);
00262 swapSCC((unsigned int*)&EvtDesc->actionWdDetectorBitMask);
00263 swapSSn((unsigned int*)&EvtDesc->TrgToken,12);
00264 }
00265
00266 inline void StTriggerData2012::swapL1_DSM(L1_DSM_Data2012* L1_DSM)
00267 {
00268 swapI((unsigned int*)&L1_DSM->length);
00269 swapSSn((unsigned int*)L1_DSM->TOF,16+8*7);
00270 }
00271
00272 inline void StTriggerData2012::swapTrgSum(TrgSumData2012* TrgSum)
00273 {
00274 swapIn((unsigned int*)&TrgSum->length,1+2+2+32+64+64);
00275 }
00276
00277 inline void StTriggerData2012::swapRawDetOfflen(TrgOfflen2012* offlen)
00278 {
00279 int i;
00280 for (i=0; i<y12MAX_OFFLEN; i++) {
00281 swapOfflen(&offlen[i]);
00282 if (mDebug>0) printf("Offlen id=%2d offset=%d length=%d\n", i, offlen[i].offset, offlen[i].length);
00283 }
00284 }
00285
00286 #endif