StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
trgStructures2005.h
1 /*
2  * Header Name: trgStructures2005.h
3  * Header Number: x.y
4  * Package Name: All
5  * Created: z. milosevich 06Dec99
6  * Description: Global trigger structure header file.
7  * Contains definitions of trigger data structures
8  * History:
9  *
10  * 06Dec99 zm Created so offline can use and after modification for mod 8 DMA reads
11  * 08Dec99 zm Changed Event Descriptor Structure to previous length
12  * 03Feb00 zm Changed "ushort ZDCDSM[8]" to "BYTE ZDC[16]" in L0_DSM_Data structure
13  * 22Jul00 egj Added L0RegBytes and L0RegHeader to trgDataHeaders and TrgSumData.
14  * Also added Mult_Reg, ZDC_Reg and Spare_Reg to TrgSumData, making a
15  * total of 16 extra bytes. I compensated for this by removing 16 bytes,
16  * (4 uints) from L2Result, wich is currently unused.
17  * 08Dec00 JMN Changed char hdr[2] in TrgSummary to unsigned short, which is packed
18  * 25Feb01 JMN Redesigned and expanded abbreviations to full.
19  * 12Mar01 JMN Added additional changes from ZM
20  * 30May01 JMN NBNBNBNB Changed FORMAT version from 0x12 to 0x13
21  * 02Jun01 zm defined bit 6 in addBits info FIFO3 for L2.5 abort
22  * 27Jun01 JMN Added definition of number of bytes used in trigger summary headers
23  * 28Jun01 JMN Added definition of ADD_BITs
24  * 10Apr02 zm basic strawman for new structures with new TCU and added detectors
25  * 22May02 zm removed references to current non-existent trigger event header
26  * 24May02 zm incorporated eleanor's comments
27  * 24May02 zm the L0_DSM_Data instance changed from DSM to DSMdata to be able to compile on linux
28  * 19Jun02 zm removed or commented out references to TrgEvtHeader
29  * 05Aug02 JMN changes in event descriptor - moved filler word to end
30  * 15Aug02 HjC correct bytes for FPD
31  * 21Nov02 zm corrections based on eleanor's email: L0 layout for bunch xing,
32  * special and fpd elements; fpd broken down for east/west nort/south
33  * vs top/bottom and layer 1 or 0;
34  * also finished XXX_DATA_OFFSET and RAW_XXX_LEN for passing data from
35  * dsm
36  * 30Aug03 JMN Added RAW_MAX_LEN being maximum length possible in chain block transfer
37  * 14Sep03 JMN Added new dsmMemcpy2Buf
38  * 02Nov03 JMN Modified dsmMemcpy2Buf to ensure dsmData is 8-byte aligned.
39  * 04Nov03 EGJ Modified RawTrgDet to add in ZDCSMD[32]
40  * 28Oct04 JMN Modified RawTrgDet to increased BBC storage from 80 to 96
41  * Format version changed from 0x21 to 0x22
42  */
43 
44 #ifndef trgStructures2005_h
45 #define trgStructures2005_h
46 
47 #define y5MAX_L0_DATA_BLOCKS 11 /* Maximum number of L0 Data Blocks: current + npre + npost */
48 #define y5MAX_RAW_DATA_BLOCKS 11 /* Maximum number of Raw Data Blocks: current + npre + npost */
49 #define y5FORMAT_VERSION 0x22 /* Format Version number for trigger data */
50 #define y5EV_DESC_LEN sizeof(EvtDescData2005) /* Number of bytes in event descriptor */
51 #define y5L0DSM_DATA_LEN sizeof(L0_DSM_Data2005) /* Size of data block in L0 DSM Tree */
52 #define y5RAW_DET_DATA_LEN sizeof(RawTrgDet2005) /* Size of Raw Detector Data from CTB, MWC with headers */
53 #define y5TRG_SUM_LEN sizeof(TrgSumData2005) /* Number of bytes in the trigger summary for DAQ with headers */
54 
55 #define y5L1_DATA_LEN (y5EV_DESC_LEN+y5TRG_SUM_LEN) /* Size of data passed from L1ANA to L2 */
56 #define y5TRG_EVT_LEN (y5L1_DATA_LEN+(y5MAX_RAW_DATA_BLOCKS*y5RAW_DET_DATA_LEN)) /* Max size of a trigger event */
57 #define y5TDI_EVT_LEN (y5EV_DESC_LEN+y5TRG_SUM_LEN+(y5MAX_RAW_DATA_BLOCKS*y5RAW_DET_DATA_LEN)) /* size of event sent to TDI */
58 
59 #define y5L0_SUM_LEN 148 /* Number of bytes in L0 Summary + Header */
60 #define y5L1_SUM_LEN 132 /* Number of bytes in L1 Summary + Header */
61 #define y5L2_SUM_LEN 116 /* Number of bytes in L2 Summary + Header */
62 #define y5L0_REG_LEN 16 /* Number of bytes in L0 Register + Header */
63 
64 #define y5RAW_MAX_LEN 272 /* Maximum length of any Chain Block Transfer */
65 //#define CTB_DATA_OFFSET 8 /* Number of bytes CTB Raw data is offset in raw trigger structure */
66 //#define RAW_CTB_LEN 256 /* Number of bytes in raw CTB DSMs */
67 //#define MWC_DATA_OFFSET 272 /* Number of bytes MWC Raw data is offset in raw trigger structure */
68 //#define RAW_MWC_LEN 128 /* Number of bytes in raw CTB DSMs */
69 //#define BCE_DATA_OFFSET 408 /* Number of bytes BMC Raw data is offset in raw trigger structure */
70 //#define RAW_BCE_LEN 240
71 //#define BCW_DATA_OFFSET 648
72 //#define RAW_BCW_LEN 240
73 //#define BC1_DATA_OFFSET 888
74 //#define RAW_BC1_LEN 96
75 //#define EEC_DATA_OFFSET 992
76 //#define RAW_EEC_LEN 176
77 //#define FPE_DATA_OFFSET 1176 /* everything after this will have to be re-done */
78 //#define RAW_FPE_LEN 208
79 //#define FPW_DATA_OFFSET 1384
80 //#define RAW_FPW_LEN 208
81 //#define BBC_DATA_OFFSET 1600
82 //#define RAW_BBC_LEN 176 /* Number of bytes in BBC and ZDC raw data structures */
83 
84 #define L2RESULTS_OFFSET_TRG 0
85 #define L2RESULTS_OFFSET_EMC_CHECK 1
86 #define L2RESULTS_OFFSET_JPSI 2
87 #define L2RESULTS_OFFSET_UPS 8
88 #define L2RESULTS_OFFSET_DIJET 14
89 #define L2RESULTS_OFFSET_EMC_PED 19
90 #define L2RESULTS_OFFSET_PIG 20
91 
92 #define y5ADD_BIT_PILEUP 0 /* Contamination/Pileup bit in event descriptor add-bits */
93 #define y5ADD_BIT_FORCE 5 /* Force store of this event */
94 #define y5ADD_BIT_L2_5 6 /* Level 2.5 abort */
95 #define y5ADD_BIT_SIM 7 /* Simulated event - used by DAQ */
96 
97 /********** Trigger Structures ***********/
98 
99 /* Event Descriptor Data Structures */
100 
101 
102 typedef struct {
103  unsigned short TCUdataBytes;
104  char TCUEvtDesc;
105  unsigned char TrgDataFmtVer;
106  unsigned int bunchXing_hi;
107  unsigned int bunchXing_lo; /* Two parts of RHIC bunch crossing number */
108  unsigned short actionWdDetectorBitMask; /* from Fifo 1 */
109  unsigned char actionWdTrgCommand; /* from Fifo 1 */
110  unsigned char actionWdDaqCommand; /* from Fifo 1 */
111  unsigned short TrgToken; /* from Fifo 2 */
112  unsigned short addBits; /* from Fifo 2 - bit 0=Contamination; bit 6=L2.5 abort; bit 7=1 is fake data */
113  unsigned short DSMInput; /* from Fifo 3 */
114  unsigned short externalBusy; /* from Fifo 3 */
115  unsigned short modifiedBusyStatus; /* from Fifo 4 */
116  unsigned short physicsWord; /* from Fifo 4 */
117  unsigned short TriggerWord; /* from Fifo 5 */
118  unsigned short DSMAddress; /* from Fifo 6 */
119  unsigned short contaminationBusyStatus; /* from Fifo 6 */
120  unsigned short npre; /* pre value for detector raw data */
121  unsigned short npost; /* post value for detector raw data */
122  unsigned short dummy; /* dummy - filler */
123 } EvtDescData2005; /* 40 bytes total */
124 
125 /* Trigger Summary Data Structures */
126 
127 /* L0 DSM data structures */
128 
129 typedef struct {
130  unsigned short CPA[32]; /* Contents of 4 CTB+MWC DSM Input Buffers (IB's) - coarse pixel array*/
131  unsigned short quadDSM[8]; /* Contents of 1 CTB+MWC DSM IB - outputs of previous 4 */
132  unsigned short lastDSM[8]; /* Contents of last DSM IB - results of all DSM trees */
133  unsigned short VTX[8]; /* Separate ZDC and BBC DSMs have been replaced with this one */
134  unsigned short EMC[8]; /* Contents of 1 EMC IB - results of separate BEMC and EEMC DSMs */
135  unsigned short BCdata[16]; /* Contents of 2 Bunch Crossing DSMs IB's */
136  unsigned short specialTriggers[8]; /* Contents of 1 Special Trigger DSM - all the special trigger requests */
137  unsigned short FPD[8]; /* Contents of 1 FPD IB - we are installing this DSM this year but it */
138 } L0_DSM_Data2005; /* 192 bytes total */
139 
140 
141 /* Summary data */
142 
143 typedef struct {
144  unsigned short TrgSumBytes;
145  unsigned short TrgSumHeader;
146  unsigned int L1Sum[2]; /* L1 Summary */
147  unsigned int L2Sum[2]; /* L2 Summary */
148  unsigned short L0SumBytes;
149  unsigned short L0SumHeader;
150  L0_DSM_Data2005 DSMdata; /* L0 DSM Data from DSM Tree */
151  unsigned short L1SumBytes;
152  unsigned short L1SumHeader;
153  unsigned int L1Result[32]; /* Result from L1 CPU */
154  unsigned short L2SumBytes;
155  unsigned short L2SumHeader;
156  unsigned int L2Result[32]; /* Result from L2 CPU */
157 } TrgSumData2005; /* 480 bytes total */
158 
159 /* Data structure passed between L1ANA and L2 */
160 
161 typedef struct {
162  EvtDescData2005 EvtDesc; /* L1 Event Descriptor Data */
163  TrgSumData2005 TrgSum; /* Summary data */
164 } L1dataType2005; /* 520 bytes */
165 
166 /* Raw Trigger Detector data structures */
167 
168 typedef struct {
169  unsigned short RawDetBytes;
170  char RawDetHeader[2];
171  unsigned short CTBdataBytes;
172  char CTBdataHeader[2];
173  unsigned char CTB[256]; /* CTB raw data */
174  unsigned short MWCdataBytes;
175  char MWCdataHeader[2];
176  unsigned int MWCfiller; /* Dummy to bring header to mod 8 */
177  unsigned char MWC[128]; /* MWC raw data */
178  unsigned short BEMCdataBytes;
179  char BEMCdataHeader[2];
180  unsigned int BEMCfiller; /* Dummy to bring header to mod 8 */
181  unsigned char BEMCEast[240]; /* next year there will be 15 DSMs covering the East half, all in one crate */
182  unsigned char BEMCWest[240]; /* this year there will be 15 DSMs covering the West half, all in one crate */
183  unsigned short BEMClayer1[48]; /* there will be 6 DSMs at layer1 even if only 3 of them have input this year*/
184  unsigned short EEMCdataBytes;
185  char EEMCdataHeader[2];
186  unsigned int EEMCfiller; /* Dummy to bring header to mod 8 */
187  unsigned short EEMClayer1[16]; /* the two layer1 DSMs are at the LHS of the crate so they get read first */
188  unsigned char EEMC[144]; /* next there are the 9 layer0 DSMs, of which only 4-5 have input this year */
189  unsigned short FPDdataBytes;
190  char FPDdataHeader[2];
191  unsigned int FPDfiller; /* Dummy to bring header to mod 8 */
192  unsigned char FPDEastNSLayer0[112]; /* fpd east north/south layer 0 */
193  unsigned short FPDEastNSLayer1[8]; /* fpd east north/south layer 1 */
194  unsigned char FPDEastTBLayer0[64]; /* fpd east top/bottom layer 0 */
195  unsigned short FPDEastTBLayer1[8]; /* fpd east north/south layer 1 */
196  unsigned char FPDWestNSLayer0[112]; /* fpd east north/south layer 0 */
197  unsigned short FPDWestNSLayer1[8]; /* fpd east north/south layer 1 */
198  unsigned char FPDWestTBLayer0[64]; /* fpd east north/south layer 0 */
199  unsigned short FPDWestTBLayer1[8]; /* fpd east north/south layer 1 */
200  unsigned short BBCdataBytes;
201  char BBCdataHeader[2];
202  unsigned int BBCfiller; /* Dummy to bring header to mod 8 */
203  unsigned char BBC[96]; /* increased from 80 to 96 for the addition of a DSM after layer 0 DSMs */
204  unsigned short BBClayer1[16]; /* this is the layer1 DSM that feeds the VTX DSM */
205  unsigned char ZDCSMD[32]; /* this is the 2 layer0 DSM for the ZDC SMD detector */
206  unsigned char ZDC[16]; /* this is the original ZDC DSM */
207  unsigned short ZDClayer1[8]; /* this is the new layer1 ZDC DSM that also feeds the VTX DSM */
208 } RawTrgDet2005; /* 1792 bytes total */
209 
210 /* Trigger Event Structure */
211 
213  EvtDescData2005 EvtDesc; /* L1 Event Descriptor Data : 40 bytes */
214  TrgSumData2005 TrgSum; /* Summary data: 480 bytes */
215  RawTrgDet2005 rawTriggerDet[y5MAX_RAW_DATA_BLOCKS]; /* Raw Detector Data with pre and post History: 11*1792 bytes */
216 } ; /* 20232 bytes */
217 
218 #endif