]>
Commit | Line | Data |
---|---|---|
a81a09d8 | 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 | * | |
32 | ***************************************************************************/ | |
33 | /* modified for root convention */ | |
34 | ||
35 | ||
36 | #ifndef __event_h__ | |
37 | #define __event_h__ | |
38 | ||
39 | /* Unique version identifier */ | |
40 | #define EVENT_H_ID 0x00020018 | |
41 | ||
42 | /* Possible Values for type in eventHeaderStruct */ | |
43 | ||
44 | /* Mask to separate the event type from the event flags */ | |
45 | #define EVENT_TYPE_MASK ((UInt_t)0x0000FFFF) | |
46 | #define EVENT_FLAGS_MASK ((UInt_t)~EVENT_TYPE_MASK) | |
47 | ||
48 | /* Event error flags: */ | |
49 | #define EVENT_ERROR ((UInt_t)0x80000000) | |
50 | #define EVENT_DATA_TRUNCATED ((UInt_t)0x40000000) | |
51 | ||
52 | /* Event flags: */ | |
53 | #define EVENT_EQUIPMENT ((UInt_t)0x00010000) | |
54 | #define EVENT_SWAPPED ((UInt_t)0x00020000) | |
55 | ||
56 | /* Event types: */ | |
57 | #define START_OF_RUN ((UInt_t)1) | |
58 | #define END_OF_RUN ((UInt_t)2) | |
59 | #define START_OF_RUN_FILES ((UInt_t)3) | |
60 | #define END_OF_RUN_FILES ((UInt_t)4) | |
61 | #define START_OF_BURST ((UInt_t)5) | |
62 | #define END_OF_BURST ((UInt_t)6) | |
63 | #define PHYSICS_EVENT ((UInt_t)7) | |
64 | #define CALIBRATION_EVENT ((UInt_t)8) | |
65 | #define END_OF_LINK ((UInt_t)9) | |
66 | #define EVENT_FORMAT_ERROR ((UInt_t)10) | |
67 | ||
68 | #define EVENT_TYPE_MIN 1 | |
69 | #define EVENT_TYPE_MAX 10 | |
70 | ||
71 | /* System attributes */ | |
72 | #define START_OF_RUN_START 0 | |
73 | #define START_OF_RUN_END 1 | |
74 | #define END_OF_RUN_START 0 | |
75 | #define END_OF_RUN_END 1 | |
76 | #define NO_EVENT_BUILDING 2 | |
77 | ||
78 | /* The following enumeration can be used once the EVENT_TYPE_MASK has been | |
79 | * applied to the raw event type */ | |
80 | enum eventType { | |
81 | startOfRun = START_OF_RUN, | |
82 | endOfRun = END_OF_RUN, | |
83 | startOfRunFiles = START_OF_RUN_FILES, | |
84 | endOfRunFiles = END_OF_RUN_FILES, | |
85 | startOfBurst = START_OF_BURST, | |
86 | endOfBurst = END_OF_BURST, | |
87 | physicsEvent = PHYSICS_EVENT, | |
88 | calibrationEvent = CALIBRATION_EVENT, | |
89 | endOfLink = END_OF_LINK, | |
90 | formatError = EVENT_FORMAT_ERROR | |
91 | }; | |
92 | ||
93 | #define EVENT_MAGIC_NUMBER ((UInt_t)0xDA1E5AFE) | |
94 | #define EVENT_MAGIC_NUMBER_SWAPPED ((UInt_t)0xFE5A1EDA) | |
95 | ||
96 | #define HEADER_LENGTH sizeof( struct eventHeaderStruct ) | |
97 | ||
98 | /* Maximum size for any event (excluding the header) */ | |
99 | #define EVENT_DATA_MAX_SIZE ( 100 * 1024 ) | |
100 | ||
101 | /* Maximum size for any event (including the header) */ | |
102 | #define EVENT_MAX_SIZE ( HEADER_LENGTH + EVENT_DATA_MAX_SIZE ) | |
103 | ||
104 | /* The detectorId mask */ | |
105 | typedef UInt_t detectorIdType; | |
106 | #define MAX_DETECTOR ((int)94) | |
107 | #define SUPER_EVENT_MASK ((int)(1 << 31)) | |
108 | #define SUPER_EVENT_BIT ((int)(MAX_DETECTOR+1)) | |
109 | #define MASK_LENGTH ((int)(MAX_DETECTOR/32)+1) | |
110 | ||
111 | /* The typeAttribute mask */ | |
112 | #define ATTRIBUTE_WORDS 2 | |
113 | #define ATTRIBUTE_BYTES ( ATTRIBUTE_WORDS * 4 ) | |
114 | #define ATTRIBUTE_BITS ( ATTRIBUTE_BYTES * 8 ) | |
115 | #define ATTRIBUTE_TO_NUM( bit ) (((bit)&0x20)>>5) | |
116 | #define ATTRIBUTE_TO_BIT( bit ) (1<<((bit)&0x1f)) | |
117 | #define SET_ATTRIBUTE( mask, bit ) \ | |
118 | (mask)[ ATTRIBUTE_TO_NUM(bit) ] |= ATTRIBUTE_TO_BIT( bit ) | |
119 | #define CLEAR_ATTRIBUTE( mask, bit ) \ | |
120 | (mask)[ ATTRIBUTE_TO_NUM(bit) ] &= ~(ATTRIBUTE_TO_BIT( bit )) | |
121 | #define TEST_ATTRIBUTE( mask, bit ) \ | |
122 | (((mask)[ ATTRIBUTE_TO_NUM(bit) ] & ATTRIBUTE_TO_BIT( bit )) != 0 ) | |
123 | ||
124 | struct eventHeaderStruct { | |
125 | Int_t eventSize; /* size of event in Bytes */ | |
126 | UInt_t eventMagic; /* magic number used for consistency check */ | |
127 | UInt_t eventType; /* event type */ | |
128 | UInt_t eventHeadSize; /* size of header in bytes */ | |
129 | UInt_t eventRunNb; /* run number */ | |
130 | UInt_t burstNb; /* burst number */ | |
131 | UInt_t nbInRun; /* event number in run */ | |
132 | UInt_t nbInBurst; /* event number in burst */ | |
133 | UInt_t triggerNb; /* trigger number for this detector */ | |
134 | UInt_t fileSeqNb; /* file sequence number for multifiles run */ | |
135 | detectorIdType detectorId[MASK_LENGTH]; /* detector identification */ | |
136 | UInt_t time; /* time in seconds since 0.00 GMT 1.1.1970 */ | |
137 | UInt_t usec; /* microseconds */ | |
138 | UInt_t errorCode; | |
139 | UInt_t deadTime; | |
140 | UInt_t deadTimeusec; | |
141 | UInt_t eventTypeAttribute[ATTRIBUTE_WORDS]; /* event type id mask */ | |
142 | }; | |
143 | ||
144 | struct eventStruct { | |
145 | struct eventHeaderStruct eventHeader; | |
146 | unsigned short rawData[1]; | |
147 | }; | |
148 | #endif |