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
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147 #ifndef StTriggerData_hh
00148 #define StTriggerData_hh
00149
00150 #include "StObject.h"
00151 #include "StEnumerations.h"
00152 #include "StMessMgr.h"
00153
00154 class StTriggerData : public StObject {
00155 public:
00156 StTriggerData();
00157 virtual ~StTriggerData();
00158
00159 virtual void readData() {};
00160 virtual void dump() const = 0;
00161 virtual void setDebug(unsigned int);
00162
00163
00164 virtual int year() const;
00165 virtual unsigned int version() const = 0;
00166 virtual unsigned int numberOfPreXing() const = 0;
00167 virtual unsigned int numberOfPostXing() const = 0;
00168 virtual unsigned int errorFlag() const;
00169
00170
00171 virtual unsigned int eventNumber() const;
00172 virtual unsigned int token() const = 0;
00173 virtual unsigned int triggerWord() const = 0;
00174 virtual unsigned int actionWord() const = 0;
00175 virtual unsigned short busyStatus() const;
00176 virtual unsigned short dsmInput() const;
00177 virtual unsigned short trgToken() const;
00178 virtual unsigned short dsmAddress() const;
00179 virtual unsigned short mAddBits() const;
00180 virtual unsigned short bcData(int channel) const;
00181
00182
00183 virtual int L2ResultsOffset(StL2AlgorithmId id) const;
00184 bool isL2Triggered(StL2TriggerResultType id) const;
00185 virtual unsigned long long l2sum() const;
00186
00187
00188 virtual unsigned int bunchCounterHigh() const;
00189 virtual unsigned int bunchCounterLow() const;
00190 virtual unsigned int bunchId48Bit() const;
00191 virtual unsigned int bunchId7Bit() const;
00192 virtual unsigned int spinBit() const;
00193 virtual unsigned int spinBitYellowFilled() const;
00194 virtual unsigned int spinBitYellowUp() const;
00195 virtual unsigned int spinBitYellowDown() const;
00196 virtual unsigned int spinBitYellowUnpol() const;
00197 virtual unsigned int spinBitBlueFilled() const;
00198 virtual unsigned int spinBitBlueUp() const;
00199 virtual unsigned int spinBitBlueDown() const;
00200 virtual unsigned int spinBitBlueUnpol() const;
00201
00202
00203 virtual unsigned short tcuBits() const = 0;
00204 virtual unsigned short lastDSM(int channel) const;
00205 virtual unsigned short vertexDSM(int channel) const;
00206 virtual unsigned short ctbLayer1DSM(int channel) const;
00207 virtual unsigned short ctbLayer2DSM(int channel) const;
00208 virtual unsigned short bemcLayer1DSM(int channel, int prepost=0) const;
00209 virtual unsigned short eemcLayer1DSM(int channel, int prepost=0) const;
00210 virtual unsigned short emcLayer2DSM(int channel) const;
00211 virtual unsigned short tpcMaskDSM(int channel) const;
00212 virtual unsigned short fpdLayer1DSMRaw(StBeamDirection eastwest, int channel, int prepost=0) const;
00213 virtual unsigned short fpdLayer1DSM(StBeamDirection eastwest, int module, int board, int prepsot=0) const;
00214 virtual unsigned short fpdLayer2DSMRaw(int channel) const;
00215 virtual unsigned short fpdLayer2DSM(StBeamDirection eastwest, int module) const;
00216
00217
00218 virtual unsigned short ctbRaw(int address, int prepost=0) const;
00219 virtual unsigned short ctb(int pmt, int prepost=0) const;
00220 virtual unsigned short ctbTraySlat(int tray, int slat, int prepost=0) const;
00221 virtual unsigned short ctbSum(int prepost=0) const;
00222
00223
00224 virtual unsigned short mwc(int sector, int prepost=0) const;
00225
00226
00227 virtual bool zdcPresent(int prepost=0) const;
00228 virtual unsigned short zdcAtChannel(int channel, int prepost=0) const;
00229 virtual unsigned short zdcAtAddress(int address, int prepost=0) const;
00230 virtual unsigned short zdcUnAttenuated(StBeamDirection eastwest, int prepost=0) const;
00231 virtual unsigned short zdcAttenuated(StBeamDirection eastwest, int prepost=0) const;
00232 virtual unsigned short zdcADC(StBeamDirection eastwest, int pmt, int prepost=0) const;
00233 virtual unsigned short zdcTDC(StBeamDirection eastwest, int prepost=0) const;
00234 virtual unsigned short zdcPmtTDC(StBeamDirection eastwest, int pmt, int prepost=0) const;
00235 virtual unsigned short zdcHardwareSum(int prepost=0) const;
00236
00237 virtual unsigned short zdcEarliestTDC(StBeamDirection eastwest, int prepost=0) const;
00238 virtual bool zdcSumADCaboveThreshold(StBeamDirection eastwest, int prepost=0) const;
00239 virtual bool zdcFrontADCaboveThreshold(StBeamDirection eastwest, int prepost=0) const;
00240 virtual bool zdcBackADCaboveThreshold(StBeamDirection eastwest, int prepost=0) const;
00241 virtual unsigned short zdcTruncatedSum(StBeamDirection eastwest, int prepost=0) const;
00242
00243 virtual bool zdcSumADCaboveThresholdL2(StBeamDirection eastwest) const;
00244 virtual bool zdcFrontADCaboveThresholdL2(StBeamDirection eastwest) const;
00245 virtual bool zdcBackADCaboveThresholdL2(StBeamDirection eastwest) const;
00246 virtual unsigned short zdcTimeDifference() const;
00247
00248 virtual bool zdcSumADCaboveThresholdL3(StBeamDirection eastwest) const;
00249 virtual bool zdcFrontADCaboveThresholdL3(StBeamDirection eastwest) const;
00250 virtual bool zdcBackADCaboveThresholdL3(StBeamDirection eastwest) const;
00251 virtual bool zdcTimeDifferenceInWindow() const;
00252
00253
00254 virtual bool zdcSMDPresent(int prepost=0) const;
00255 virtual unsigned short zdcSMD(StBeamDirection eastwest, int verthori, int strip, int prepost=0) const;
00256 virtual unsigned short zdcSMDHighestStrip(StBeamDirection eastwest, int verthori, int prepost=0) const;
00257
00258
00259 virtual unsigned char bemcHighTower(int patch_id, int prepost=0) const;
00260 virtual unsigned char bemcJetPatch (int patch_id, int prepost=0) const;
00261 virtual unsigned char eemcHighTower(int patch_id, int prepost=0) const;
00262 virtual unsigned char eemcJetPatch (int patch_id, int prepost=0) const;
00263 virtual unsigned char bemcHighestTowerADC(int prepost=0) const;
00264 virtual unsigned char eemcHighestTowerADC(int prepost=0) const;
00265
00266
00267 virtual unsigned short bbcADC(StBeamDirection eastwest, int pmt, int prepost=0) const;
00268 virtual unsigned short bbcTDC(StBeamDirection eastwest, int pmt, int prepost=0) const;
00269 virtual unsigned short bbcADCSum(StBeamDirection eastwest, int prepost=0) const;
00270 virtual unsigned short bbcADCSumLargeTile(StBeamDirection eastwest, int prepost=0) const;
00271 virtual unsigned short bbcEarliestTDC(StBeamDirection eastwest, int prepost=0) const;
00272 virtual unsigned short bbcTimeDifference() const;
00273 virtual unsigned short bbcEarliestTDCLarge(StBeamDirection eastwest, int prepost=0) const;
00274 virtual unsigned short bbcTimeDifferenceLarge() const;
00275
00276
00277 virtual unsigned short fpd(StBeamDirection eastwest, int module, int pmt, int prepost=0) const;
00278 virtual unsigned short fpdSum(StBeamDirection eastwest, int module) const;
00279
00280
00281 virtual unsigned short nQTdata(int prepost=0) const;
00282 virtual unsigned int* QTdata(int prepost=0) const;
00283 virtual unsigned short fmsADC(int crt, int adr, int ch, int prepost=0) const;
00284 virtual unsigned short fmsTDC(int crt, int adr, int ch, int prepost=0) const;
00285
00286
00287 virtual unsigned short vpdADC(StBeamDirection eastwest, int pmt, int prepost=0) const;
00288 virtual unsigned short vpdTDC(StBeamDirection eastwest, int pmt, int prepost=0) const;
00289 virtual unsigned short vpdADCHighThr(StBeamDirection eastwest, int pmt, int prepost=0) const;
00290 virtual unsigned short vpdTDCHighThr(StBeamDirection eastwest, int pmt, int prepost=0) const;
00291 virtual unsigned short vpdEarliestTDC(StBeamDirection eastwest, int prepost=0) const;
00292 virtual unsigned short vpdEarliestTDCHighThr(StBeamDirection eastwest, int prepost=0) const;
00293 virtual unsigned short vpdTimeDifference() const;
00294
00295
00296 virtual unsigned short mtdAtAddress(int address, int prepost=0) const;
00297 virtual unsigned short mtdgemAtAddress(int address, int prepost=0) const;
00298 virtual unsigned short mtdAdc(StBeamDirection eastwest, int pmt, int prepost=0) const;
00299 virtual unsigned short mtdTdc(StBeamDirection eastwest, int pmt, int prepost=0) const;
00300 virtual unsigned char mtdDsmAtCh(int ch, int prepost=0) const;
00301 virtual bool mtdDsmHit(int pmt, int prepost=0) const;
00302 virtual unsigned short mtdVpdTacDiff() const;
00303
00304
00305 virtual unsigned short tofAtAddress(int address, int prepost=0) const;
00306 virtual unsigned short tofTrayMultiplicity(int tray, int prepost=0) const;
00307 virtual unsigned short tofMultiplicity(int prepost=0) const;
00308
00309
00310 virtual unsigned short pp2ppADC(StBeamDirection eastwest, int vh, int udio, int ch, int prepost=0) const;
00311 virtual unsigned short pp2ppTAC(StBeamDirection eastwest, int vh, int udio, int ch, int prepost=0) const;
00312 virtual unsigned long pp2ppDSM(int prepost=0) const;
00313
00314
00315 float zdcVertexZ() const;
00316 void setZdcVertexZ(float);
00317
00318
00319 virtual char* getTriggerStructure() = 0;
00320 virtual int getRawSize() const = 0;
00321 virtual unsigned char* getDsm0_BEMCE(int prepost=0) const =0;
00322 virtual unsigned char* getDsm0_BEMCW(int prepost=0) const =0;
00323 virtual unsigned short* getDsm1_BEMC(int prepost=0) const =0;
00324 virtual unsigned char* getDsm0_EEMC(int prepost=0) const =0;
00325 virtual unsigned short* getDsm1_EEMC(int prepost=0) const =0;
00326 virtual unsigned short* getDsm2_EMC() const =0;
00327 virtual unsigned short* getDsm3() const =0;
00328 virtual unsigned char* getDsm_FMS(int prepost=0) const;
00329 virtual unsigned char* getDsm01_FMS(int prepost=0) const;
00330 virtual unsigned char* getDsm02_FMS(int prepost=0) const;
00331 virtual unsigned short* getDsm1_FMS(int prepost=0) const;
00332 virtual unsigned short* getDsm2_FMS() const;
00333 virtual unsigned int l2ResultLength() const = 0;
00334 virtual const unsigned int* l2Result() const = 0;
00335
00336
00337 virtual void killFMS();
00338
00339 protected:
00340 int prepostAddress(int prepost) const;
00341
00342
00343 unsigned short decodeEmc12bit(const int dsm, const int channel, const unsigned char *raw) const;
00344
00345
00346 void swapI(unsigned int *);
00347 void swapSCC(unsigned int *);
00348 void swapSS(unsigned int *);
00349 void swapIn(unsigned int *, unsigned int);
00350 void swapSSn(unsigned int *, unsigned int);
00351 void swapSCCn(unsigned int *, unsigned int);
00352
00353
00354 enum {MaxQTData = 529};
00355 void decodeQT(unsigned int ndata, unsigned int *data, unsigned short adc[16][32], unsigned char tac[16][32]);
00356
00357 protected:
00358 int mYear;
00359 float mZdcVertexZ;
00360 int mRun;
00361 unsigned int mErrorFlag;
00362
00363 unsigned int mDebug;
00364
00365 ClassDef(StTriggerData,7)
00366 };
00367
00368 inline void StTriggerData::swapI(unsigned int *var){
00369 *var =
00370 (*var & 0xff000000) >> 24 |
00371 (*var & 0x00ff0000) >> 8 |
00372 (*var & 0x0000ff00) << 8 |
00373 (*var & 0x000000ff) << 24 ;
00374 }
00375
00376 inline void StTriggerData::swapSCC(unsigned int *var){
00377 *var =
00378 (*var & 0x0000ff00) >> 8 |
00379 (*var & 0x000000ff) << 8 |
00380 (*var & 0xffff0000);
00381 }
00382
00383 inline void StTriggerData::swapSS(unsigned int *var){
00384 *var =
00385 (*var & 0xff000000) >> 8 |
00386 (*var & 0x00ff0000) << 8 |
00387 (*var & 0x0000ff00) >> 8 |
00388 (*var & 0x000000ff) << 8;
00389 }
00390
00391 inline void StTriggerData::swapIn(unsigned int *var, unsigned int n) {for(unsigned int i=0; i<n; i++) {swapI(var++);} }
00392 inline void StTriggerData::swapSSn(unsigned int *var, unsigned int n) {for(unsigned int i=0; i<n/2; i++) {swapSS(var++);} }
00393 inline void StTriggerData::swapSCCn(unsigned int *var, unsigned int n){for(unsigned int i=0; i<n; i++) {swapSCC(var++);} }
00394
00395 #endif
00396