]>
Commit | Line | Data |
---|---|---|
5ea08be4 | 1 | /**************************************************************************** |
2 | * | |
3 | * event.h: DATE event data format | |
4 | * | |
5 | * Revision History: | |
6 | * V01.00 RD PVV 09-Jan-97 Initial version | |
7 | * V01.01 AV 24-Feb-97 Added START_OF_RUN_FILES and triggerNb | |
8 | * V02.02 RD 13-Mar-97 Detector ID mask type added | |
9 | * V02.03 PVV 20-Mar-97 Detector ID on 128 bits | |
10 | * V02.03 RD PVV 20-Mar-97 Added EVENT_DATA_TRUNCATED | |
11 | * V02.04 PVV 06-May-97 Added EVENT_TYPE_MASK | |
12 | * V02.05 RD PVV 09-May-97 Increase EVENT_DATA_MAX_SIZE to 50 K | |
13 | * V02.06 WB MG 22-May-97 Added END_OF_RUN_FILES | |
14 | * V02.07 WB 23-May-97 Added errorCode, deadTime, deadTimeusec | |
15 | * EVENT_DATA_MAX_SIZE set to 100 * 1024 | |
16 | * MAX_DETECTORS set to 126 | |
17 | * V02.08 PVV 02-Jun-97 Modify the encoding of types | |
18 | * V02.09 WB RD PVV 28-Jul-98 Add fileSeqNb in the header. | |
19 | * Reduce detector mask to 3 long | |
20 | * V02.10 RD 31-Jul-98 (start|end)OfRunFiles added to eventType | |
21 | * V02.11 PVV RD 02-Sep-98 Event type re-numbered | |
22 | * Equipment bit added to event type | |
23 | * V02.12 AV PVV RD 03-Sep-98 FileSeqNo moved before detectorId | |
24 | * V02.13 RD 08-Oct-98 32 bits fields defined as long32 | |
25 | * V02.13 RD 19-Feb-99 Endianness/swap definitions added | |
26 | * V02.14 WB PVV RD 21-Jun-99 typeAttribute added | |
27 | * V02.15 RD 27-Jul-99 Macros for typeAttribute handling added | |
28 | * V02.16 RD 19-Nov-99 Bug in Attributes test/set fixed | |
29 | * V02.17 WB PVV RD 08-May-00 System attributes for SOR and EOR added | |
30 | * V02.18 RD 18-May-00 EVENT_H_ID added | |
31 | * V02.19 RD 10-Aug-00 Macros for detectorId handling added | |
32 | * V03.00 RD 23-Nov-00 Version for DATE V4 | |
33 | * | |
34 | * Preprocessor definitions: | |
35 | * NDEBUG Define BEFORE including this file to disable run-time checks on | |
36 | * various parameters | |
37 | * | |
38 | * Related facilities: | |
39 | * validateEvent.c Validation program, should be run after EACH change to | |
40 | * the definitions given here below | |
41 | ***************************************************************************/ | |
42 | #ifndef __event_h__ | |
43 | #define __event_h__ | |
44 | ||
45 | #define EVENT_MAJOR_VERSION_NUMBER 0x0003 | |
46 | #define EVENT_MINOR_VERSION_NUMBER 0x0000 | |
47 | ||
48 | /* ========== System includes ========= */ | |
49 | #include <string.h> /* Needed by: memset, memcpy */ | |
50 | #include <assert.h> /* Needed by: assert */ | |
51 | ||
52 | /* ========== Definitions for the event header ========== */ | |
53 | ||
54 | /* ---------- Header base size ---------- */ | |
55 | /* This value must be updated for each change in the eventHeaderStruct */ | |
56 | #define EVENT_HEAD_BASE_SIZE 64 | |
57 | ||
58 | /* ---------- Event size ---------- */ | |
59 | typedef unsigned long32 eventSizeType; | |
60 | ||
61 | /* ---------- Magic signature and its byte-swapped version ---------- */ | |
62 | #define EVENT_MAGIC_NUMBER ((eventMagicType)0xDA1E5AFE) | |
63 | #define EVENT_MAGIC_NUMBER_SWAPPED ((eventMagicType)0xFE5A1EDA) | |
64 | typedef unsigned long32 eventMagicType; | |
65 | ||
66 | /* ---------- Header size ---------- */ | |
67 | typedef unsigned long32 eventHeadSizeType; | |
68 | ||
69 | /* ---------- Unique version identifier ---------- */ | |
70 | #define EVENT_CURRENT_VERSION \ | |
71 | (((EVENT_MAJOR_VERSION_NUMBER<<16)&0xffff0000)|\ | |
72 | (EVENT_MINOR_VERSION_NUMBER&0x0000ffff)) | |
73 | typedef unsigned long32 eventVersionType; | |
74 | ||
75 | /* ---------- Event type ---------- */ | |
76 | typedef unsigned long32 eventTypeType; | |
77 | #define START_OF_RUN ((eventTypeType)1) | |
78 | #define END_OF_RUN ((eventTypeType)2) | |
79 | #define START_OF_RUN_FILES ((eventTypeType)3) | |
80 | #define END_OF_RUN_FILES ((eventTypeType)4) | |
81 | #define START_OF_BURST ((eventTypeType)5) | |
82 | #define END_OF_BURST ((eventTypeType)6) | |
83 | #define PHYSICS_EVENT ((eventTypeType)7) | |
84 | #define CALIBRATION_EVENT ((eventTypeType)8) | |
85 | #define EVENT_FORMAT_ERROR ((eventTypeType)9) | |
86 | #define EVENT_TYPE_MIN 1 | |
87 | #define EVENT_TYPE_MAX 9 | |
88 | enum eventTypeEnum { | |
89 | startOfRun = START_OF_RUN, | |
90 | endOfRun = END_OF_RUN, | |
91 | startOfRunFiles = START_OF_RUN_FILES, | |
92 | endOfRunFiles = END_OF_RUN_FILES, | |
93 | startOfBurst = START_OF_BURST, | |
94 | endOfBurst = END_OF_BURST, | |
95 | physicsEvent = PHYSICS_EVENT, | |
96 | calibrationEvent = CALIBRATION_EVENT, | |
97 | formatError = EVENT_FORMAT_ERROR | |
98 | }; | |
99 | #define EVENT_TYPE_OK(t) (((t) >= EVENT_TYPE_MIN) && (((t) <= EVENT_TYPE_MAX))) | |
100 | ||
101 | /* ---------- Run number ---------- */ | |
102 | typedef unsigned long32 eventRunNbType; | |
103 | ||
104 | /* ---------- The eventId field ---------- */ | |
105 | #define EVENT_ID_BYTES 8 | |
106 | #define EVENT_ID_WORDS ((EVENT_ID_BYTES) >> 2) | |
107 | typedef unsigned long32 eventIdType[EVENT_ID_WORDS]; | |
108 | ||
109 | /* PERIOD - ORBIT - BUNCH crossing type events */ | |
110 | #define EVENT_ID_MAX_PERIOD 0x0fffffff | |
111 | #define EVENT_ID_MAX_ORBIT 0x00ffffff | |
112 | #define EVENT_ID_MAX_BUNCH_CROSSING 0x00000fff | |
113 | #define LOAD_EVENT_ID(id,s,o,bc) \ | |
114 | (EVENT_ID_SET_PERIOD(id,s), \ | |
115 | EVENT_ID_SET_ORBIT(id,o), \ | |
116 | EVENT_ID_SET_BUNCH_CROSSING(id,bc)) | |
117 | #define EVENT_ID_GET_BUNCH_CROSSING(id) ((id)[1]&0x00000fff) | |
118 | #define EVENT_ID_GET_ORBIT(id) \ | |
119 | ((((id)[0]<<20)&0xf00000)|(((id)[1]>>12)&0xfffff)) | |
120 | #define EVENT_ID_GET_PERIOD(id) (((id)[0]>>4)&0x0fffffff) | |
121 | ||
122 | #define EVENT_ID_SET_BUNCH_CROSSING(id,v) \ | |
123 | (assert(((v)>=0)&&((v)<=EVENT_ID_MAX_BUNCH_CROSSING)), \ | |
124 | (id)[1]=((id)[1]&0xfffff000)|((v)&0xfff)) | |
125 | #define EVENT_ID_SET_ORBIT(id,v) \ | |
126 | (assert(((v)>=0)&&((v)<=EVENT_ID_MAX_ORBIT)), \ | |
127 | (id)[0]=(((id)[0])&0xfffffff0)|(((v)&0x00f00000)>>20), \ | |
128 | (id)[1]=(((id)[1])&0x00000fff)|(((v)&0x000fffff)<<12)) | |
129 | #define EVENT_ID_SET_PERIOD(id,v) \ | |
130 | (assert(((v)>=0)&&((v)<=EVENT_ID_MAX_PERIOD)), \ | |
131 | (id)[0]=(((id)[0])&0x0000000f)|(((v)&0x0fffffff)<<4)) | |
132 | ||
133 | /* RAW type event */ | |
134 | #define EVENT_ID_MAX_NB_IN_RUN 0xffffffff | |
135 | #define EVENT_ID_MAX_BURST_NB 0x00000fff | |
136 | #define EVENT_ID_MAX_NB_IN_BURST 0x000fffff | |
137 | #define LOAD_RAW_EVENT_ID(id,nir,bn,nib) \ | |
138 | (assert(((nir)>=0) && ((nir) <= EVENT_ID_MAX_NB_IN_RUN) && \ | |
139 | ((bn)>=0) && ((bn)<=EVENT_ID_MAX_BURST_NB) && \ | |
140 | ((nib)>=0) && ((nib)<=EVENT_ID_MAX_NB_IN_BURST)), \ | |
141 | (id)[0]=nir, \ | |
142 | (id)[1]=((bn<<20)&0xfff00000)|(nib&0x000fffff)) | |
143 | #define EVENT_ID_SET_NB_IN_RUN(id,nir) \ | |
144 | (assert(((nir)>=0)&&((nir)<=EVENT_ID_MAX_NB_IN_RUN)), \ | |
145 | (id)[0]=(nir)) | |
146 | #define EVENT_ID_SET_BURST_NB(id,bn) \ | |
147 | (assert(((bn)>=0)&&((bn)<=EVENT_ID_MAX_BURST_NB)), \ | |
148 | (id)[1]=((id)[1]&0x000fffff)|(((bn)<<20)&0xfff00000)) | |
149 | #define EVENT_ID_SET_NB_IN_BURST(id,nib) \ | |
150 | (assert(((nib)>=0)&&((nib)<=EVENT_ID_MAX_NB_IN_BURST)), \ | |
151 | (id)[1]=((id)[1]&0xfff00000)|((nib)&0x000fffff)) | |
152 | #define EVENT_ID_GET_NB_IN_RUN(id) ((id)[0]) | |
153 | #define EVENT_ID_GET_BURST_NB(id) (((id)[1]>>20)&0x00000fff) | |
154 | #define EVENT_ID_GET_NB_IN_BURST(id) ((id)[1]&0x000fffff) | |
155 | ||
156 | /* All events */ | |
157 | #define EQ_EVENT_ID(a,b) ((((a)[0])==((b)[0]))&&(((a)[1])==((b)[1]))) | |
158 | #define GT_EVENT_ID(a,b) \ | |
159 | (((((a)[0])>((b)[0])))||((((a)[0])==((b)[0]))&&(((a)[1])>((b)[1])))) | |
160 | #define LT_EVENT_ID(a,b) \ | |
161 | ((((a)[0])<((b)[0])) || ((((a)[0])==((b)[0]))&&(((a)[1])<((b)[1])))) | |
162 | #define GE_EVENT_ID(a,b) (!LT_EVENT_ID(a,b)) | |
163 | #define LE_EVENT_ID(a,b) (!GT_EVENT_ID(a,b)) | |
164 | #define COPY_EVENT_ID(from,to) \ | |
165 | memcpy((void*)to,(const void*)from,EVENT_ID_BYTES) | |
166 | #define ADD_EVENT_ID(a,b) ((a)[1]+=(b)[1],(a)[0]+=(b)[0]) | |
167 | #define SUB_EVENT_ID(a,b) ((a)[1]-=(b)[1],(a)[0]-=(b)[0]) | |
168 | #define ZERO_EVENT_ID(id) memset(id,0,EVENT_ID_BYTES) | |
169 | ||
170 | /* ---------- Trigger pattern (and relative masks) ---------- */ | |
171 | #define EVENT_TRIGGER_PATTERN_BYTES 8 | |
172 | #define EVENT_TRIGGER_PATTERN_WORDS ((EVENT_TRIGGER_PATTERN_BYTES)>>2) | |
173 | typedef unsigned long32 eventTriggerPatternType[EVENT_TRIGGER_PATTERN_WORDS]; | |
174 | #define EVENT_TRIGGER_ID_MIN 1 | |
175 | #define EVENT_TRIGGER_ID_MAX 50 | |
176 | #define CHECK_TRIGGER(t) (assert(((t)>=EVENT_TRIGGER_ID_MIN) && \ | |
177 | ((t)<=EVENT_TRIGGER_ID_MAX))) | |
178 | #define TRIGGER_TO_BIT(t) (1<<((t)&0x1f)) | |
179 | #define TRIGGER_TO_WORD(t) (CHECK_TRIGGER(t), (t)>>5) | |
180 | #define ZERO_TRIGGER_PATTERN(p) memset(p,0,EVENT_TRIGGER_PATTERN_BYTES) | |
181 | #define SET_TRIGGER_IN_PATTERN(p,id) (p)[TRIGGER_TO_WORD(id)] |= \ | |
182 | TRIGGER_TO_BIT(id) | |
183 | #define CLEAR_TRIGGER_IN_PATTERN(p,id) (p)[TRIGGER_TO_WORD(id)] &= \ | |
184 | ~(TRIGGER_TO_BIT(id)) | |
185 | #define FLIP_TRIGGER_IN_PATTERN(p,id) (p)[TRIGGER_TO_WORD(id)] ^= \ | |
186 | TRIGGER_TO_BIT(id) | |
187 | #define TEST_TRIGGER_IN_PATTERN(p,id) (((p)[TRIGGER_TO_WORD(id)] & \ | |
188 | TRIGGER_TO_BIT(id)) != 0) | |
189 | #define TRIGGER_PATTERN_INVALID(p) (((p)[0] & 1) == 0) | |
190 | #define TRIGGER_PATTERN_VALID(p) (((p)[0] & 1) != 0) | |
191 | #define VALIDATE_TRIGGER_PATTERN(p) ((p)[0] |= 1) | |
192 | #define INVALIDATE_TRIGGER_PATTERN(p) ((p)[0] &= 0xfffffffe) | |
193 | #define COPY_TRIGGER_PATTERN(f,t) memcpy(t,f,EVENT_TRIGGER_PATTERN_BYTES) | |
194 | #define TRIGGER_PATTERN_OK(p) (((p)[1] & 0xfff80000) == 0) | |
195 | ||
196 | /* ---------- Detectors cluster (and relative masks) ---------- */ | |
197 | #define EVENT_DETECTOR_PATTERN_BYTES 4 | |
198 | #define EVENT_DETECTOR_PATTERN_WORDS (EVENT_DETECTOR_PATTERN_BYTES>>2) | |
199 | typedef unsigned long32 eventDetectorPatternType[EVENT_DETECTOR_PATTERN_WORDS]; | |
200 | #define EVENT_DETECTOR_ID_MIN 1 | |
201 | #define EVENT_DETECTOR_ID_MAX 24 | |
202 | #define CHECK_DETECTOR(d) (assert(((d) >= EVENT_DETECTOR_ID_MIN) &&\ | |
203 | ((d) <= EVENT_DETECTOR_ID_MAX))) | |
204 | #define DETECTOR_TO_BIT(d) (CHECK_DETECTOR(d), 1<<(d)) | |
205 | #define ZERO_DETECTOR_PATTERN(p) ((p)[0] = 0) | |
206 | #define SET_DETECTOR_IN_PATTERN(p,d) ((p)[0] |= DETECTOR_TO_BIT(d)) | |
207 | #define CLEAR_DETECTOR_IN_PATTERN(p,d) ((p)[0] &= ~(DETECTOR_TO_BIT(d))) | |
208 | #define FLIP_DETECTOR_IN_PATTERN(p,d) ((p)[0] ^= DETECTOR_TO_BIT(d)) | |
209 | #define TEST_DETECTOR_IN_PATTERN(p,d) (((p)[0] & DETECTOR_TO_BIT(d))!=0) | |
210 | #define DETECTOR_PATTERN_INVALID(p) (((p)[0] & 1) == 0) | |
211 | #define DETECTOR_PATTERN_VALID(p) (((p)[0] & 1) != 0) | |
212 | #define VALIDATE_DETECTOR_PATTERN(p) ((p)[0] |= 1) | |
213 | #define INVALIDATE_DETECTOR_PATTERN(p) ((p)[0] &= 0xfffffffe) | |
214 | #define COPY_DETECTOR_PATTERN(f,t) ((t)[0] = (f)[0]) | |
215 | #define DETECTOR_PATTERN_OK(p) (((p)[0] & 0xfe000000) == 0) | |
216 | ||
217 | /* ---------- The sizes and positions of the typeAttribute field ---------- */ | |
218 | #define ALL_ATTRIBUTE_WORDS 3 | |
219 | #define ALL_ATTRIBUTE_BYTES (ALL_ATTRIBUTE_WORDS * 4) | |
220 | #define ALL_ATTRIBUTE_BITS (ALL_ATTRIBUTE_BYTES * 8) | |
221 | #define USER_ATTRIBUTE_WORDS 2 | |
222 | #define USER_ATTRIBUTE_BYTES (USER_ATTRIBUTE_WORDS * 4) | |
223 | #define USER_ATTRIBUTE_BITS (USER_ATTRIBUTE_BYTES * 8) | |
224 | #define FIRST_USER_ATTRIBUTE 0 | |
225 | #define LAST_USER_ATTRIBUTE (USER_ATTRIBUTE_BITS - 1) | |
226 | #define SYSTEM_ATTRIBUTE_WORDS 1 | |
227 | #define SYSTEM_ATTRIBUTE_BYTES (SYSTEM_ATTRIBUTE_WORDS * 4) | |
228 | #define SYSTEM_ATTRIBUTE_BITS (SYSTEM_ATTRIBUTE_BYTES * 8) | |
229 | #define FIRST_SYSTEM_ATTRIBUTE USER_ATTRIBUTE_BITS | |
230 | #define LAST_SYSTEM_ATTRIBUTE (USER_ATTRIBUTE_BITS + \ | |
231 | SYSTEM_ATTRIBUTE_BITS - 1) | |
232 | typedef unsigned long32 eventTypeAttributeType[ALL_ATTRIBUTE_WORDS]; | |
233 | ||
234 | /* Word and bit definitions */ | |
235 | #define SYS_ATTR_2_W(b) (assert(((b)>=64)&&((b)<=95)),2) | |
236 | #define USR_ATTR_2_W(b) (assert(((b)>= 0)&&((b)<=63)),(b)>>5) | |
237 | #define ATTR_2_W(b) (assert(((b)>= 0)&&((b)<=95)),(b)>>5) | |
238 | #define ATTR_2_B(b) (1<<((b)&0x1f)) | |
239 | ||
240 | /* Macros to handle all attributes without distinction */ | |
241 | #define RESET_ATTRIBUTES(m) ((m)[2] = (m)[1] = (m)[0] = 0) | |
242 | #define SET_ANY_ATTRIBUTE(m,b) (m)[ATTR_2_W(b)] |= ATTR_2_B(b) | |
243 | #define CLEAR_ANY_ATTRIBUTE(m,b) (m)[ATTR_2_W(b)] &= ~(ATTR_2_B(b)) | |
244 | #define FLIP_ANY_ATTRIBUTE(m,b) (m)[ATTR_2_W(b)] ^= ATTR_2_B(b) | |
245 | #define TEST_ANY_ATTRIBUTE(m,b) (((m)[ATTR_2_W(b)] & ATTR_2_B(b))!= 0) | |
246 | #define COPY_ALL_ATTRIBUTES( from, to )\ | |
247 | memcpy((void *)&to[0], (const void *)&from[0], ALL_ATTRIBUTE_BYTES) | |
248 | ||
249 | /* Macros to handle SYSTEM attributes */ | |
250 | #define RESET_SYSTEM_ATTRIBUTES(m) ((m)[2] = 0) | |
251 | #define SET_SYSTEM_ATTRIBUTE(m,b) (m)[SYS_ATTR_2_W(b)] |= ATTR_2_B(b) | |
252 | #define CLEAR_SYSTEM_ATTRIBUTE(m,b) (m)[SYS_ATTR_2_W(b)] &= ~(ATTR_2_B(b)) | |
253 | #define FLIP_SYSTEM_ATTRIBUTE(m,b) (m)[SYS_ATTR_2_W(b)] ^= ATTR_2_B(b) | |
254 | #define TEST_SYSTEM_ATTRIBUTE(m,b) (((m)[SYS_ATTR_2_W(b)] & ATTR_2_B(b)) != 0) | |
255 | #define COPY_SYSTEM_ATTRIBUTES( from, to ) \ | |
256 | memcpy((void *)&to[2], (const void *)&from[2], SYSTEM_ATTRIBUTE_BYTES) | |
257 | ||
258 | /* Macros to handle USER attributes */ | |
259 | #define RESET_USER_ATTRIBUTES(m) ((m)[0] = (m)[1] = 0) | |
260 | #define SET_USER_ATTRIBUTE(m,b) (m)[USR_ATTR_2_W(b)] |= ATTR_2_B(b) | |
261 | #define CLEAR_USER_ATTRIBUTE(m,b) (m)[USR_ATTR_2_W(b)] &= ~(ATTR_2_B(b)) | |
262 | #define FLIP_USER_ATTRIBUTE(m,b) (m)[USR_ATTR_2_W(b)] ^= ATTR_2_B(b) | |
263 | #define TEST_USER_ATTRIBUTE(m,b) (((m)[USR_ATTR_2_W(b)] & ATTR_2_B(b)) != 0) | |
264 | #define COPY_USER_ATTRIBUTES( from, to ) \ | |
265 | memcpy((void *)&to[0], (const void *)&from[0], USER_ATTRIBUTE_BYTES) | |
266 | ||
267 | /* System attributes assignment */ | |
268 | #define ATTR_P_START 64 /* Start of a phase */ | |
269 | #define ATTR_P_END 65 /* End of a phase */ | |
270 | #define ATTR_START_OF_RUN_START ATTR_P_START/* Start of SOR phase */ | |
271 | #define ATTR_START_OF_RUN_END ATTR_P_END /* End of SOR phase */ | |
272 | #define ATTR_END_OF_RUN_START ATTR_P_START/* Start of EOR phase */ | |
273 | #define ATTR_END_OF_RUN_END ATTR_P_END /* End of SOR phase */ | |
274 | #define ATTR_EVENT_SWAPPED 66 /* Swapped event header */ | |
275 | #define ATTR_EVENT_PAGED 67 /* Paged event */ | |
276 | #define ATTR_SUPER_EVENT 68 /* Super event */ | |
277 | #define ATTR_ORBIT_BC 69 /* Orbit/bunch crossing in ID*/ | |
278 | ||
279 | #define ATTR_EVENT_DATA_TRUNCATED 94 /* Truncated payload */ | |
280 | #define ATTR_EVENT_ERROR 95 /* Invalid event content */ | |
281 | ||
282 | #define SYSTEM_ATTRIBUTES_OK(m) \ | |
283 | ((((m)[2]) & ~(ATTR_2_B(ATTR_P_START) | \ | |
284 | ATTR_2_B(ATTR_P_END) | \ | |
285 | ATTR_2_B(ATTR_EVENT_SWAPPED) | \ | |
286 | ATTR_2_B(ATTR_EVENT_PAGED) | \ | |
287 | ATTR_2_B(ATTR_SUPER_EVENT) | \ | |
288 | ATTR_2_B(ATTR_ORBIT_BC) | \ | |
289 | ATTR_2_B(ATTR_EVENT_DATA_TRUNCATED) | \ | |
290 | ATTR_2_B(ATTR_EVENT_ERROR))) == 0) | |
291 | ||
292 | /* ---------- LDC and GDC identifier ---------- */ | |
293 | typedef unsigned long32 eventHostIdType; | |
294 | typedef eventHostIdType eventLdcIdType; | |
295 | typedef eventHostIdType eventGdcIdType; | |
296 | #define HOST_ID_MIN ((eventHostIdType)0) /* The minimum allowed ID */ | |
297 | #define HOST_ID_MAX ((eventHostIdType)511) /* The maximum allowed ID */ | |
298 | #define VOID_ID ((eventHostIdType)-1) /* Unloaded ID */ | |
299 | ||
300 | /* ---------- The event header structure (with + without data) ---------- */ | |
301 | struct eventHeaderStruct { | |
302 | eventSizeType eventSize; | |
303 | eventMagicType eventMagic; | |
304 | eventHeadSizeType eventHeadSize; | |
305 | eventVersionType eventVersion; | |
306 | eventTypeType eventType; | |
307 | eventRunNbType eventRunNb; | |
308 | eventIdType eventId; | |
309 | eventTriggerPatternType eventTriggerPattern; | |
310 | eventDetectorPatternType eventDetectorPattern; | |
311 | eventTypeAttributeType eventTypeAttribute; | |
312 | eventLdcIdType eventLdcId; | |
313 | eventGdcIdType eventGdcId; | |
314 | }; | |
315 | ||
316 | struct eventStruct { | |
317 | struct eventHeaderStruct eventHeader; | |
318 | unsigned short eventRawData[1]; | |
319 | }; | |
320 | ||
321 | /* ========== Definitions for the Vector ========== */ | |
322 | typedef short eventVectorBankIdType; | |
323 | typedef unsigned int eventVectorSizeType; | |
324 | typedef unsigned int eventVectorOffsetType; | |
325 | ||
326 | struct eventVectorStruct { | |
327 | eventVectorBankIdType eventVectorBankId; | |
328 | unsigned eventVectorPointsToVector : 1; | |
329 | eventVectorSizeType eventVectorSize; | |
330 | eventVectorOffsetType eventVectorStartOffset; | |
331 | }; | |
332 | ||
333 | /* ========== Definitions for the payload descriptor ========== */ | |
334 | typedef unsigned long32 eventNumEquipmentsType; | |
335 | typedef struct eventVectorStruct eventExtensionVectorType; | |
336 | ||
337 | struct vectorPayloadDescriptorStruct { | |
338 | eventNumEquipmentsType eventNumEquipments; | |
339 | eventExtensionVectorType eventExtensionVector; | |
340 | }; | |
341 | ||
342 | /* ========== Definitions for the equipment header ========== */ | |
343 | typedef long32 equipmentSizeType; | |
344 | typedef long32 equipmentTypeType; | |
345 | typedef long32 equipmentIdType; | |
346 | typedef eventTypeAttributeType equipmentTypeAttributeType; | |
347 | typedef long32 equipmentBasicElementSizeType; | |
348 | ||
349 | struct equipmentHeaderStruct { | |
350 | equipmentSizeType equipmentSize; | |
351 | equipmentTypeType equipmentType; | |
352 | equipmentIdType equipmentId; | |
353 | equipmentTypeAttributeType equipmentTypeAttribute; | |
354 | equipmentBasicElementSizeType equipmentBasicElementSize; | |
355 | }; | |
356 | ||
357 | struct equipmentDescriptorStruct { | |
358 | struct equipmentHeaderStruct equipmentHeader; | |
359 | struct eventVectorStruct equipmentVector; | |
360 | }; | |
361 | ||
362 | struct equipmentStruct { | |
363 | struct equipmentHeaderStruct equipmentHeader; | |
364 | unsigned short equipmentRawData[1]; | |
365 | }; | |
366 | ||
367 | /* ========== Global macros ========== */ | |
368 | ||
369 | /* The macro PAGED_EVENT_SIZE receives in input the ADDRESS of a paged | |
370 | event and returns the size (in bytes) of the first page of the | |
371 | event */ | |
372 | #define PAGED_EVENT_SIZE( event ) \ | |
373 | (EVENT_HEAD_BASE_SIZE +sizeof( struct vectorPayloadDescriptorStruct ) + \ | |
374 | ((*(eventNumEquipmentsType *)((void*)event+EVENT_HEAD_BASE_SIZE))* \ | |
375 | (sizeof( struct equipmentDescriptorStruct )))) | |
376 | ||
377 | #endif |