StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StTriggerData.h
1 /***************************************************************************
2  *
3  * $Id: StTriggerData.h,v 2.55 2019/06/25 15:50:15 ullrich Exp $
4  *
5  * Author: Akio Ogawa & Mirko Planinic, Feb 2003
6  ***************************************************************************
7  *
8  * Description: abstract class for trigger data
9  *
10  ***************************************************************************
11  *
12  * $Log: StTriggerData.h,v $
13  * Revision 2.55 2019/06/25 15:50:15 ullrich
14  * Improved QT board error reports/handling. Added EPD access functions. (Akio)
15  *
16  * Revision 2.54 2019/01/07 15:50:12 ullrich
17  * Added StTriggerData2019.
18  *
19  * Revision 2.53 2018/06/06 18:03:59 ullrich
20  * Added fcts: epdNHits, vpdADCSum, vpdMeanTimeDifference (Akio)
21  *
22  * Revision 2.52 2018/02/22 16:47:20 ullrich
23  * Changes for blind analysis and EPD
24  *
25  * Revision 2.51 2017/10/13 20:13:53 ullrich
26  * Added access fct epdADC() and epdTDC().
27  *
28  * Revision 2.50 2017/05/30 15:59:14 ullrich
29  * Added bbcTDC5bit() method.
30  *
31  * Revision 2.49 2017/05/18 17:09:43 ullrich
32  * Changes to decoding of Qt data.
33  *
34  * Revision 2.48 2017/02/20 16:32:12 ullrich
35  * Added bbcVP101
36  *
37  * Revision 2.47 2016/12/15 16:30:06 ullrich
38  * Updates from Jeff.
39  *
40  * Revision 2.46 2016/06/07 15:51:34 akio
41  * Making code better based on Coverity reports
42  *
43  * Revision 2.45 2016/02/11 14:22:02 ullrich
44  * Add fcts to access MTD DSM and QT info.
45  *
46  * Revision 2.44 2013/11/13 19:17:01 ullrich
47  * Added mtd4AtAddress() and dsmTF201Ch(). (Akio)
48  *
49  * Revision 2.43 2013/02/12 19:40:32 ullrich
50  * Add two new methods: mxqAtSlotAddress and mtd3AtAddress (Llope).
51  *
52  * Revision 2.42 2012/05/07 14:42:58 fisyak
53  * Add handilings for Track to Fast Detectors Matching
54  *
55  * Revision 2.41 2012/04/30 15:19:11 ullrich
56  * Added access function for l2sum (Akio)
57  *
58  * Revision 2.40 2012/02/01 17:00:07 ullrich
59  * Fixed bug concerning seg failt when MIX DSM not in run and added new arg to MtdVpdTacDiff()
60  *
61  * Revision 2.39 2011/11/04 19:20:38 ullrich
62  * Added tpcMaskDSM() - Akio.
63  *
64  * Revision 2.38 2011/10/17 15:36:37 fisyak
65  * increment version no.
66  *
67  * Revision 2.37 2011/02/15 18:56:09 ullrich
68  * New access fct for ZDCSMD, new ZDCSMD map, spinBit() modified.
69  *
70  * Revision 2.36 2011/01/18 23:06:07 ullrich
71  * New function mtdgemAtAddress added. vpdADC, vpdTDC, vpdADCHighThr, vpdTDCHighThr, vpdEarliestTDC, and vpdEarliestTDCHighThr updated.
72  *
73  * Revision 2.35 2010/06/01 22:18:44 ullrich
74  * Change member debug to mDebug.
75  *
76  * Revision 2.34 2010/04/07 14:43:19 ullrich
77  * Added new access function for BBC large tile earliest TAC and difference
78  *
79  * Revision 2.33 2010/01/13 17:55:39 ullrich
80  * Better mErrorFlags, abort, and debug flag handling, updated MTD DSM access function for run10, clean up compiler warning messages.
81  *
82  * Revision 2.32 2010/01/08 22:44:37 ullrich
83  * Updates needed to add StFmsCollection and related classes.
84  *
85  * Revision 2.31 2009/08/24 22:38:28 ullrich
86  * New data member mErrorFlag and referring access fct.
87  *
88  * Revision 2.30 2009/06/16 15:44:26 ullrich
89  * Added fmsADC() method.
90  *
91  * Revision 2.29 2009/05/15 18:16:15 ullrich
92  * Updates for pp2pp and ToF.
93  *
94  * Revision 2.28 2009/05/05 20:53:16 ullrich
95  * Updates for MTD.
96  *
97  * Revision 2.27 2009/03/19 02:46:01 ullrich
98  * Add 2nd argument (pre/post) to vpdEarliestTDC().
99  *
100  * Revision 2.26 2009/03/04 02:01:30 ullrich
101  * New access functions for ZDC DSM layer-1 and layer-2 data.
102  *
103  * Revision 2.25 2009/02/23 22:31:09 ullrich
104  * Fixed problem when running over 2009 data (solution by Pibero) and new VPD access functions.
105  *
106  * Revision 2.24 2009/02/13 23:04:50 ullrich
107  * Updates necessary for use in Online QA (P) plots.
108  *
109  * Revision 2.23 2009/02/11 23:33:55 jeromel
110  * Modifications by Akio to support getDsm0_BEMCE and getDsm0_BEMCW as well as
111  * getDsm1_BEMC. However, use of const=0 impose implementation (was not done
112  * in years < 2009). Added methods with return 0.
113  *
114  * Revision 2.22 2009/01/20 18:10:14 ullrich
115  * Bug fix and new ZDC access functions.
116  *
117  * Revision 2.21 2009/01/14 17:54:45 ullrich
118  * Modified to cope with necessary changes for 2009.
119  *
120  * Revision 2.20 2008/03/12 15:56:41 ullrich
121  * Add new methods tofAtAddress() and tofMultiplicity().
122  *
123  * Revision 2.19 2007/07/02 17:03:02 ullrich
124  * Add two new members mtdAdc() and mtdTdc() (Akio).
125  *
126  * Revision 2.18 2007/05/15 16:31:26 ullrich
127  * Add virtual function mtdAtAddress().
128  *
129  * Revision 2.17 2007/04/03 20:10:49 ullrich
130  * Added access function for VPD data.
131  *
132  * Revision 2.16 2006/09/20 00:44:56 ullrich
133  * Modified method to return length of L2 results.
134  *
135  * Revision 2.15 2006/09/19 22:53:55 ullrich
136  * Added access method to L2 results.
137  *
138  * Revision 2.14 2006/09/13 23:59:55 ullrich
139  * Added new data member mRun. Removed arg run from ctb(), ctbTraySlat(), zdcSMD()
140  *
141  * Revision 2.13 2006/08/21 19:41:50 ullrich
142  * Add run number as argument to ctb(), ctbTray(), and zdcSMD(). Used 2005 only. (Akio)
143  *
144  * Revision 2.12 2006/05/05 16:01:41 ullrich
145  * Added isL2Triggered().
146  *
147  * Revision 2.11 2006/03/22 20:58:21 ullrich
148  * Added interface to L2 results (offsets).
149  *
150  * Revision 2.10 2004/11/30 19:19:11 ullrich
151  * Added new access function for EEMC data (Akio).
152  *
153  * Revision 2.9 2004/10/20 18:56:22 ullrich
154  * Add method getRawSize().
155  *
156  * Revision 2.8 2004/08/03 17:22:16 ullrich
157  * Major update by Akio and Marco.
158  *
159  * Revision 2.7 2004/07/20 18:02:26 jeromel
160  * Updates from Akio to fix CTB issues.
161  *
162  * Revision 2.6 2004/02/11 01:39:51 ullrich
163  * Use enumeration StBeamDirector for east/west. Add member for ZDC vertex.
164  *
165  * Revision 2.5 2004/01/28 00:29:49 ullrich
166  * Methods to retrieve ZDC data added.
167  *
168  * Revision 2.4 2003/12/23 21:58:28 ullrich
169  * Modifications to handle StTruggerData2004.
170  *
171  * Revision 2.3 2003/07/16 19:58:31 perev
172  * Cleanup of StTriggerData2003 at all
173  *
174  * Revision 2.2 2003/05/21 03:58:44 ullrich
175  * Added more methods to retrieve spin bits.
176  *
177  * Revision 2.1 2003/04/16 17:47:41 ullrich
178  * Initial Revision.
179  *
180  **************************************************************************
181  *
182  * prepost argument should go between -5 and 5, and 0 is triggered crossing
183  *
184  **************************************************************************/
185 
186 #ifndef StTriggerData_hh
187 #define StTriggerData_hh
188 
189 #include "StObject.h"
190 #include "StEnumerations.h"
191 #include "StMessMgr.h"
192 
193 class StTriggerData : public StObject {
194 public:
195  StTriggerData();
196  virtual ~StTriggerData();
197 
198  virtual void readData() {};
199  virtual void dump() const = 0; // dump data into text
200  virtual void setDebug(unsigned int);
201  virtual void blindRunInfo(); // for run18 blinding analysis
202 
203  // version and data type information
204  virtual int year() const; // year of the data
205  virtual unsigned int version() const = 0; // TrgDataType Version Number
206  virtual unsigned int numberOfPreXing() const = 0; // # of pre xing data for detectors
207  virtual unsigned int numberOfPostXing() const = 0; // # of post xing data for detectors
208  virtual unsigned int errorFlag() const; // error flag
209 
210  // generic trigger infomations
211  virtual unsigned int eventNumber() const;
212  virtual unsigned int token() const = 0;
213  virtual unsigned int triggerWord() const = 0;
214  virtual unsigned int actionWord() const = 0;
215  virtual unsigned int zdcKillerBit() const;
216  virtual unsigned short busyStatus() const;
217  virtual unsigned short dsmInput() const;
218  virtual unsigned short trgToken() const;
219  virtual unsigned short dsmAddress() const;
220  virtual unsigned short mAddBits() const;
221  virtual unsigned short bcData(int channel) const;
222 
223  virtual unsigned short getTrgDetMask() const;
224  virtual unsigned int getTrgCrateMask() const;
225 
226  //L2 results offsets
227  virtual int L2ResultsOffset(StL2AlgorithmId id) const;
228  bool isL2Triggered(StL2TriggerResultType id) const;
229  virtual unsigned long long l2sum() const;
230 
231  // bunch and spin bits
232  virtual unsigned int tcuCounter() const;
233  virtual unsigned int rccCounter(int crate) const;
234  virtual unsigned long long bunchCounter() const;
235  virtual unsigned int bunchCounterHigh() const;
236  virtual unsigned int bunchCounterLow() const;
237  virtual unsigned int bunchId48Bit() const;
238  virtual unsigned int bunchId7Bit() const;
239  virtual unsigned int revTick1() const;
240  virtual unsigned int revTick2() const;
241  virtual unsigned int revTick3() const;
242  virtual unsigned int spinBit() const;
243  virtual unsigned int spinBitYellowFilled() const;
244  virtual unsigned int spinBitYellowUp() const;
245  virtual unsigned int spinBitYellowDown() const;
246  virtual unsigned int spinBitYellowUnpol() const;
247  virtual unsigned int spinBitBlueFilled() const;
248  virtual unsigned int spinBitBlueUp() const;
249  virtual unsigned int spinBitBlueDown() const;
250  virtual unsigned int spinBitBlueUnpol() const;
251 
252  // high level DSM infos
253  virtual unsigned short tcuBits() const = 0;
254  virtual unsigned short lastDSM(int channel) const;
255  virtual unsigned short vertexDSM(int channel) const;
256  virtual unsigned short ctbLayer1DSM(int channel) const;
257  virtual unsigned short ctbLayer2DSM(int channel) const;
258  virtual unsigned short bemcLayer1DSM(int channel, int prepost=0) const;
259  virtual unsigned short eemcLayer1DSM(int channel, int prepost=0) const;
260  virtual unsigned short emcLayer2DSM(int channel) const;
261  virtual unsigned short tpcMaskDSM(int channel) const;
262  virtual unsigned short fpdLayer1DSMRaw(StBeamDirection eastwest, int channel, int prepost=0) const;
263  virtual unsigned short fpdLayer1DSM(StBeamDirection eastwest, int module, int board, int prepsot=0) const;
264  virtual unsigned short fpdLayer2DSMRaw(int channel) const;
265  virtual unsigned short fpdLayer2DSM(StBeamDirection eastwest, int module) const;
266 
267  // CTB
268  virtual unsigned short ctbRaw(int address, int prepost=0) const;
269  virtual unsigned short ctb(int pmt, int prepost=0) const;
270  virtual unsigned short ctbTraySlat(int tray, int slat, int prepost=0) const;
271  virtual unsigned short ctbSum(int prepost=0) const;
272 
273  // MWC
274  virtual unsigned short mwc(int sector, int prepost=0) const;
275 
276  // ZDC
277  virtual bool zdcPresent(int prepost=0) const;
278  virtual unsigned short zdcAtChannel(int channel, int prepost=0) const;
279  virtual unsigned short zdcAtAddress(int address, int prepost=0) const;
280  virtual unsigned short zdcUnAttenuated(StBeamDirection eastwest, int prepost=0) const;
281  virtual unsigned short zdcAttenuated(StBeamDirection eastwest, int prepost=0) const;
282  virtual unsigned short zdcADC(StBeamDirection eastwest, int pmt, int prepost=0) const;
283  virtual unsigned short zdcTDC(StBeamDirection eastwest, int prepost=0) const;
284  virtual unsigned short zdcPmtTDC(StBeamDirection eastwest, int pmt, int prepost=0) const;
285  virtual unsigned short zdcHardwareSum(int prepost=0) const;
286  // ZDC DSM L1
287  virtual unsigned short zdcEarliestTDC(StBeamDirection eastwest, int prepost=0) const;
288  virtual bool zdcSumADCaboveThreshold(StBeamDirection eastwest, int prepost=0) const;
289  virtual bool zdcFrontADCaboveThreshold(StBeamDirection eastwest, int prepost=0) const;
290  virtual bool zdcBackADCaboveThreshold(StBeamDirection eastwest, int prepost=0) const;
291  virtual unsigned short zdcTruncatedSum(StBeamDirection eastwest, int prepost=0) const;
292  // ZDC DSM L2
293  virtual bool zdcSumADCaboveThresholdL2(StBeamDirection eastwest) const;
294  virtual bool zdcFrontADCaboveThresholdL2(StBeamDirection eastwest) const;
295  virtual bool zdcBackADCaboveThresholdL2(StBeamDirection eastwest) const;
296  virtual unsigned short zdcTimeDifference() const;
297  // ZDC DSM L3
298  virtual bool zdcSumADCaboveThresholdL3(StBeamDirection eastwest) const;
299  virtual bool zdcFrontADCaboveThresholdL3(StBeamDirection eastwest) const;
300  virtual bool zdcBackADCaboveThresholdL3(StBeamDirection eastwest) const;
301  virtual bool zdcTimeDifferenceInWindow() const;
302 
303  //ZDCSMD
304  virtual bool zdcSMDPresent(int prepost=0) const;
305  virtual unsigned short zdcSMD(StBeamDirection eastwest, int verthori, int strip, int prepost=0) const;
306  virtual unsigned short zdcSMDHighestStrip(StBeamDirection eastwest, int verthori, int prepost=0) const;
307 
308  // EMC
309  virtual unsigned char bemcHighTower(int patch_id, int prepost=0) const;
310  virtual unsigned char bemcJetPatch (int patch_id, int prepost=0) const;
311  virtual unsigned char eemcHighTower(int patch_id, int prepost=0) const;
312  virtual unsigned char eemcJetPatch (int patch_id, int prepost=0) const;
313  virtual unsigned char bemcHighestTowerADC(int prepost=0) const;
314  virtual unsigned char eemcHighestTowerADC(int prepost=0) const;
315 
316  // BBC bbcTDC
317  virtual unsigned short bbcADC(StBeamDirection eastwest, int pmt, int prepost=0) const;
318  virtual unsigned short bbcTDC(StBeamDirection eastwest, int pmt, int prepost=0) const;
319  virtual unsigned short bbcTDC5bit(StBeamDirection eastwest, int pmt, int prepost=0) const;
320  virtual unsigned short bbcADCSum(StBeamDirection eastwest, int prepost=0) const;
321  virtual unsigned short bbcADCSumLargeTile(StBeamDirection eastwest, int prepost=0) const;
322  virtual unsigned short bbcEarliestTDC(StBeamDirection eastwest, int prepost=0) const;
323  virtual unsigned short bbcTimeDifference() const;
324  virtual unsigned short bbcTacSum() const;
325  virtual unsigned short bbcEarliestTDCLarge(StBeamDirection eastwest, int prepost=0) const;
326  virtual unsigned short bbcTimeDifferenceLarge() const;
327  virtual unsigned short bbcBB101(int ch, int prepost=0) const;
328  virtual unsigned short bbcBB102(int ch, int prepost=0) const;
329 
330  // FPD module #: north=0, south=1, top=2, bottom=3, north preshower=4, south preshower=5
331  virtual unsigned short fpd(StBeamDirection eastwest, int module, int pmt, int prepost=0) const;
332  virtual unsigned short fpdSum(StBeamDirection eastwest, int module) const;
333 
334  // FMS
335  virtual unsigned short nQTdata(int prepost=0) const;
336  virtual unsigned int* QTdata(int prepost=0) const;
337  virtual unsigned short fmsADC(int crt, int adr, int ch, int prepost=0) const;
338  virtual unsigned short fmsTDC(int crt, int adr, int ch, int prepost=0) const;
339 
340  //EPD
341  virtual unsigned short epdEarliestTDC(StBeamDirection eastwest, int prepost=0) const;
342  virtual unsigned short epdTimeDifference() const;
343  virtual bool epdHitLayer2(StBeamDirection eastwest) const;
344  virtual unsigned short epdLayer1(int ch, int prepost=0) const;
345  virtual unsigned short epdLayer1a(int ch, int prepost=0) const;
346  virtual unsigned short epdLayer1b(int ch, int prepost=0) const;
347  virtual unsigned short epdLayer0t(int ch, int prepost=0) const;
348  virtual unsigned short epdLayer0a(int ch, int prepost=0) const;
349  virtual unsigned char epdLayer0h(int ch, int prepost=0) const;
350  virtual unsigned short epdADC(int crt, int adr, int ch, int prepost=0) const;
351  virtual unsigned short epdTDC(int crt, int adr, int ch, int prepost=0) const;
352  virtual unsigned short epdNHits(StBeamDirection eastwest, int prepost=0) const;
353  virtual unsigned short epdNHitsQT(int crate, int qt, int mult12, int prepost=0) const;
354  virtual unsigned short epdLayer0aMult(int ch, int prepost=0) const;
355  virtual unsigned short epdLayer0hMult(int ch, int mult12, int prepost=0) const;
356  virtual unsigned short epdLayer1bMult(StBeamDirection eastwest, int ring, int prepost=0) const;
357  virtual unsigned short epdMultTotal(int prepost=0) const;
358  virtual unsigned short epdMultDiff(int prepost=0) const;
359 
360  // VPD
361  virtual unsigned short vpdADC(StBeamDirection eastwest, int pmt, int prepost=0) const;
362  virtual unsigned short vpdTDC(StBeamDirection eastwest, int pmt, int prepost=0) const;
363  virtual unsigned short vpdADCHighThr(StBeamDirection eastwest, int pmt, int prepost=0) const;
364  virtual unsigned short vpdTDCHighThr(StBeamDirection eastwest, int pmt, int prepost=0) const;
365  virtual unsigned short vpdEarliestTDC(StBeamDirection eastwest, int prepost=0) const;
366  virtual unsigned short vpdEarliestTDCHighThr(StBeamDirection eastwest, int prepost=0) const;
367  virtual unsigned short vpdADCSum(StBeamDirection eastwest, int prepost=0) const;
368  virtual unsigned short vpdTimeDifference() const;
369  virtual float vpdMeanTimeDifference(int prepost=0) const;
370  virtual unsigned short bbcVP101(int ch, int prepost = 0) const;
371 
372  //MXQ crate
373  virtual unsigned short mxqAtSlotAddress(int address, int prepost=0, int slot=0) const;
374 
375  //MTD
376  virtual unsigned short mtdQtAtCh(int qtid, int address, int prepost) const;
377  virtual unsigned short mtdAtAddress(int address, int prepost=0) const;
378  virtual unsigned short mtdgemAtAddress(int address, int prepost=0) const;
379  virtual unsigned short mtd3AtAddress(int address, int prepost=0) const;
380  virtual unsigned short mtdAdc(StBeamDirection eastwest, int pmt, int prepost=0) const;
381  virtual unsigned short mtdTdc(StBeamDirection eastwest, int pmt, int prepost=0) const;
382  virtual unsigned char mtdDsmAtCh(int ch, int prepost=0) const;
383  virtual bool mtdDsmHit(int pmt, int prepost=0) const;
384  virtual unsigned short mtdVpdTacDiff() const;
385  virtual unsigned short mtd4AtAddress(int address, int prepost=0) const;
386 
387  //TOF
388  virtual unsigned short tofAtAddress(int address, int prepost=0) const;
389  virtual unsigned short tofTrayMultiplicity(int tray, int prepost=0) const;
390  virtual unsigned short tofMultiplicity(int prepost=0) const;
391  virtual unsigned short dsmTF201Ch(int ch) const;
392 
393  //PP2PP
394  virtual unsigned short pp2ppADC(StBeamDirection eastwest, int vh, int udio, int ch, int prepost=0) const;
395  virtual unsigned short pp2ppTAC(StBeamDirection eastwest, int vh, int udio, int ch, int prepost=0) const;
396  virtual unsigned long pp2ppDSM(int prepost=0) const;
397 
398  // auxiliary information
399  float zdcVertexZ() const;
400  void setZdcVertexZ(float);
401 
402  // Experts only!
403  virtual char* getTriggerStructure() = 0;
404  virtual int getRawSize() const = 0;
405  virtual unsigned char* getDsm0_BEMCE(int prepost=0) const =0;
406  virtual unsigned char* getDsm0_BEMCW(int prepost=0) const =0;
407  virtual unsigned short* getDsm1_BEMC(int prepost=0) const =0;
408  virtual unsigned char* getDsm0_EEMC(int prepost=0) const =0;
409  virtual unsigned short* getDsm1_EEMC(int prepost=0) const =0;
410  virtual unsigned short* getDsm2_EMC() const =0;
411  virtual unsigned short* getDsm3() const =0;
412  virtual unsigned char* getDsm_FMS(int prepost=0) const;
413  virtual unsigned char* getDsm01_FMS(int prepost=0) const;
414  virtual unsigned char* getDsm02_FMS(int prepost=0) const;
415  virtual unsigned short* getDsm1_FMS(int prepost=0) const;
416  virtual unsigned short* getDsm2_FMS() const;
417  virtual unsigned int l2ResultLength() const = 0; // Length of raw info
418  virtual const unsigned int* l2Result() const = 0; // Pointer to raw info
419 
420  // StFmsHitMaker only!!!
421  virtual void killFMS();
422 
423 protected:
424  int prepostAddress(int prepost) const; //get pre&post xsing addess, return negative if bad.
425 
426  // Service routine to decode EMC layer0 DSM info into 12bit input values
427  unsigned short decodeEmc12bit(const int dsm, const int channel, const unsigned char *raw) const;
428 
429  // Byte swapping functions
430  void swapI(unsigned int *);
431  void swapSCC(unsigned int *);
432  void swapSS(unsigned int *);
433  void swapIn(unsigned int *, unsigned int);
434  void swapSSn(unsigned int *, unsigned int);
435  void swapSCCn(unsigned int *, unsigned int);
436 
437  // QT data decoding
438  enum {MaxQTData = 529};
439  void decodeQT(unsigned int ndata, unsigned int *data, unsigned short adc[16][32], unsigned char tac[16][32]);
440 
441 protected:
442  int mYear;
443  float mZdcVertexZ;
444  int mRun;
445  unsigned int mErrorFlag;
446 
447  unsigned int mDebug;
448 
449  ClassDef(StTriggerData,7)
450 };
451 
452 inline void StTriggerData::swapI(unsigned int *var){
453  *var =
454  (*var & 0xff000000) >> 24 |
455  (*var & 0x00ff0000) >> 8 |
456  (*var & 0x0000ff00) << 8 |
457  (*var & 0x000000ff) << 24 ;
458 }
459 
460 inline void StTriggerData::swapSCC(unsigned int *var){
461  *var =
462  (*var & 0x0000ff00) >> 8 |
463  (*var & 0x000000ff) << 8 |
464  (*var & 0xffff0000);
465 }
466 
467 inline void StTriggerData::swapSS(unsigned int *var){
468  *var =
469  (*var & 0xff000000) >> 8 |
470  (*var & 0x00ff0000) << 8 |
471  (*var & 0x0000ff00) >> 8 |
472  (*var & 0x000000ff) << 8;
473 }
474 
475 inline void StTriggerData::swapIn(unsigned int *var, unsigned int n) {for(unsigned int i=0; i<n; i++) {swapI(var++);} }
476 inline void StTriggerData::swapSSn(unsigned int *var, unsigned int n) {for(unsigned int i=0; i<n/2; i++) {swapSS(var++);} }
477 inline void StTriggerData::swapSCCn(unsigned int *var, unsigned int n){for(unsigned int i=0; i<n; i++) {swapSCC(var++);} }
478 
479 #endif
480