Project
Loading...
Searching...
No Matches
RawHeaderStream.cxx
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11#include <bitset>
12#include <fstream>
13#include <iostream>
15
17{
18 // std::cout << "called, 10 words" << std::endl;
19 using wordtype = uint64_t;
20 constexpr int RAWHEADERWORDS = sizeof(header) / sizeof(wordtype);
21 wordtype message[RAWHEADERWORDS];
22 auto address = reinterpret_cast<char*>(message);
23 for (int i = 0; i < RAWHEADERWORDS; i++) {
24 stream.read(address + i * sizeof(wordtype) / sizeof(char), sizeof(message[i]));
25 // std::cout << "Word " << i << ": " << std::hex << message[i] << std::dec << std::endl;
26 }
27 header.word0 = message[0];
28 header.word1 = message[1];
29 header.word2 = message[2];
30 header.word3 = message[3];
31 header.word4 = message[4];
32 header.word5 = message[5];
33 header.word6 = message[6];
34 header.word7 = message[7];
35 return stream;
36}
37
39{
40 // std::cout << "called, 10 words" << std::endl;
41 using wordtype = uint64_t;
42 constexpr int RAWHEADERWORDS = sizeof(header) / sizeof(wordtype);
43 wordtype message[RAWHEADERWORDS];
44 auto address = reinterpret_cast<char*>(message);
45 for (int i = 0; i < RAWHEADERWORDS; i++) {
46 stream.read(address + i * sizeof(wordtype) / sizeof(char), sizeof(message[i]));
47 // std::cout << "Word " << i << ": " << std::hex << message[i] << std::dec << std::endl;
48 }
49 header.word0 = message[0];
50 header.word1 = message[1];
51 header.word2 = message[2];
52 header.word3 = message[3];
53 header.word4 = message[4];
54 header.word5 = message[5];
55 header.word6 = message[6];
56 header.word7 = message[7];
57 return stream;
58}
59
61{
62 // std::cout << "called, 10 words" << std::endl;
63 using wordtype = uint64_t;
64 constexpr int RAWHEADERWORDS = sizeof(header) / sizeof(wordtype);
65 wordtype message[RAWHEADERWORDS];
66 auto address = reinterpret_cast<char*>(message);
67 for (int i = 0; i < RAWHEADERWORDS; i++) {
68 stream.read(address + i * sizeof(wordtype) / sizeof(char), sizeof(message[i]));
69 // std::cout << "Word " << i << ": " << std::hex << message[i] << std::dec << std::endl;
70 }
71 header.word0 = message[0];
72 header.word1 = message[1];
73 header.word2 = message[2];
74 header.word3 = message[3];
75 header.word4 = message[4];
76 header.word5 = message[5];
77 header.word6 = message[6];
78 header.word7 = message[7];
79 return stream;
80}
81
83{
84 // std::cout << "called, 10 words" << std::endl;
85 using wordtype = uint64_t;
86 constexpr int RAWHEADERWORDS = sizeof(header) / sizeof(wordtype);
87 wordtype message[RAWHEADERWORDS];
88 auto address = reinterpret_cast<char*>(message);
89 for (int i = 0; i < RAWHEADERWORDS; i++) {
90 stream.read(address + i * sizeof(wordtype) / sizeof(char), sizeof(message[i]));
91 // std::cout << "Word " << i << ": " << std::hex << message[i] << std::dec << std::endl;
92 }
93 header.word0 = message[0];
94 header.word1 = message[1];
95 header.word2 = message[2];
96 header.word3 = message[3];
97 header.word4 = message[4];
98 header.word5 = message[5];
99 header.word6 = message[6];
100 header.word7 = message[7];
101 return stream;
102}
103
105{
106 stream << "Raw data header V4:\n"
107 << " Word0 " << header.word0 << " (0x" << std::hex << header.word0 << std::dec << ")\n"
108 << " Version: " << header.version << "\n"
109 << " Header size: " << header.headerSize << "\n"
110 << " Block length: " << header.blockLength << "\n"
111 << " FEE ID: " << header.feeId << "\n"
112 << " Priority: " << header.priority << "\n"
113 << " Word1 " << header.word1 << " (0x" << std::hex << header.word1 << std::dec << ")\n"
114 << " Offset to next: " << header.offsetToNext << "\n"
115 << " Payload size (B):" << header.memorySize << "\n"
116 << " Packet counter: " << static_cast<int>(header.packetCounter) << "\n"
117 << " Link ID: " << static_cast<int>(header.linkID) << "\n"
118 << " Card ID: " << header.cruID << "\n"
119 << " Endpoint: " << static_cast<int>(header.endPointID) << "\n"
120 << " Word2 " << header.word2 << " (0x" << std::hex << header.word2 << std::dec << ")\n"
121 << " Trigger orbit: " << header.triggerOrbit << "\n"
122 << " Heartbeat orbit: " << header.heartbeatOrbit << "\n"
123 << " Word3 " << header.word3 << " (0x" << std::hex << header.word3 << std::dec << ")\n"
124 << " Word4 " << header.word4 << " (0x" << std::hex << header.word4 << std::dec << ")\n"
125 << " Trigger BC: " << header.triggerBC << "\n"
126 << " Heartbeat BC: " << header.heartbeatBC << "\n"
127 << " Trigger Type: " << header.triggerType << "\n"
128 << " Word5 " << header.word5 << " (0x" << std::hex << header.word5 << std::dec << ")\n"
129 << " Word6 " << header.word6 << " (0x" << std::hex << header.word6 << std::dec << ")\n"
130 << " Detector Field: " << header.detectorField << "\n"
131 << " PAR: " << header.par << "\n"
132 << " STOP: " << header.stop << "\n"
133 << " Page count: " << header.pageCnt << "\n"
134 << " Word7 " << header.word7 << " (0x" << std::hex << header.word7 << std::dec << ")\n"
135 << "End header\n";
136 return stream;
137}
138
140{
141 stream << "Raw data header V5:\n"
142 << " Word0 " << header.word0 << " (0x" << std::hex << header.word0 << std::dec << ")\n"
143 << " Version: " << header.version << "\n"
144 << " Header size: " << header.headerSize << "\n"
145 << " FEE ID: " << header.feeId << "\n"
146 << " Priority: " << header.priority << "\n"
147 << " Word1 " << header.word1 << " (0x" << std::hex << header.word1 << std::dec << ")\n"
148 << " Offset to next: " << header.offsetToNext << "\n"
149 << " Payload size (B):" << header.memorySize << "\n"
150 << " Packet counter: " << static_cast<int>(header.packetCounter) << "\n"
151 << " Link ID: " << static_cast<int>(header.linkID) << "\n"
152 << " Card ID: " << header.cruID << "\n"
153 << " Endpoint: " << static_cast<int>(header.endPointID) << "\n"
154 << " Word2 " << header.word2 << " (0x" << std::hex << header.word2 << std::dec << ")\n"
155 << " Bunch crossing: " << header.bunchCrossing << "\n"
156 << " Orbit: " << header.orbit << "\n"
157 << " Word3 " << header.word3 << " (0x" << std::hex << header.word3 << std::dec << ")\n"
158 << " Word4 " << header.word4 << " (0x" << std::hex << header.word4 << std::dec << ")\n"
159 << " Trigger Type: " << std::bitset<64>(header.triggerType) << "\n"
160 << " Page count: " << header.pageCnt << "\n"
161 << " Stop: " << (static_cast<bool>(header.stop) ? "yes" : "no") << "\n"
162 << " Word5 " << header.word5 << " (0x" << std::hex << header.word5 << std::dec << ")\n"
163 << " Word6 " << header.word6 << " (0x" << std::hex << header.word6 << std::dec << ")\n"
164 << " Detector Field: " << header.detectorField << "\n"
165 << " PAR: " << header.detectorPAR << "\n"
166 << " Word7 " << header.word7 << " (0x" << std::hex << header.word7 << std::dec << ")\n"
167 << "End header\n";
168 return stream;
169}
170
172{
173 stream << "Raw data header V6:\n"
174 << " Word0 " << header.word0 << " (0x" << std::hex << header.word0 << std::dec << ")\n"
175 << " Version: " << header.version << "\n"
176 << " Header size: " << header.headerSize << "\n"
177 << " Source ID: " << header.sourceID << "\n"
178 << " FEE ID: " << header.feeId << "\n"
179 << " Priority: " << header.priority << "\n"
180 << " Word1 " << header.word1 << " (0x" << std::hex << header.word1 << std::dec << ")\n"
181 << " Offset to next: " << header.offsetToNext << "\n"
182 << " Payload size (B):" << header.memorySize << "\n"
183 << " Packet counter: " << static_cast<int>(header.packetCounter) << "\n"
184 << " Link ID: " << static_cast<int>(header.linkID) << "\n"
185 << " Card ID: " << header.cruID << "\n"
186 << " Endpoint: " << static_cast<int>(header.endPointID) << "\n"
187 << " Word2 " << header.word2 << " (0x" << std::hex << header.word2 << std::dec << ")\n"
188 << " Bunch crossing: " << header.bunchCrossing << "\n"
189 << " Orbit: " << header.orbit << "\n"
190 << " Word3 " << header.word3 << " (0x" << std::hex << header.word3 << std::dec << ")\n"
191 << " Word4 " << header.word4 << " (0x" << std::hex << header.word4 << std::dec << ")\n"
192 << " Trigger Type: " << std::bitset<64>(header.triggerType) << "\n"
193 << " Page count: " << header.pageCnt << "\n"
194 << " Stop: " << (static_cast<bool>(header.stop) ? "yes" : "no") << "\n"
195 << " Word5 " << header.word5 << " (0x" << std::hex << header.word5 << std::dec << ")\n"
196 << " Word6 " << header.word6 << " (0x" << std::hex << header.word6 << std::dec << ")\n"
197 << " Detector Field: " << header.detectorField << "\n"
198 << " PAR: " << header.detectorPAR << "\n"
199 << " Word7 " << header.word7 << " (0x" << std::hex << header.word7 << std::dec << ")\n"
200 << "End header\n";
201 return stream;
202}
203
205{
206 stream << "Raw data header V7:\n"
207 << " Word0 " << header.word0 << " (0x" << std::hex << header.word0 << std::dec << ")\n"
208 << " Version: " << header.version << "\n"
209 << " Header size: " << header.headerSize << "\n"
210 << " Source ID: " << header.sourceID << "\n"
211 << " FEE ID: " << header.feeId << "\n"
212 << " Priority: " << header.priority << "\n"
213 << " Word1 " << header.word1 << " (0x" << std::hex << header.word1 << std::dec << ")\n"
214 << " Offset to next: " << header.offsetToNext << "\n"
215 << " Payload size (B):" << header.memorySize << "\n"
216 << " Packet counter: " << static_cast<int>(header.packetCounter) << "\n"
217 << " Link ID: " << static_cast<int>(header.linkID) << "\n"
218 << " Card ID: " << header.cruID << "\n"
219 << " Endpoint: " << static_cast<int>(header.endPointID) << "\n"
220 << " Word2 " << header.word2 << " (0x" << std::hex << header.word2 << std::dec << ")\n"
221 << " Bunch crossing: " << header.bunchCrossing << "\n"
222 << " Orbit: " << header.orbit << "\n"
223 << " Word3 " << header.word3 << " (0x" << std::hex << header.word3 << std::dec << ")\n"
224 << " Data format: " << header.dataFormat << "\n"
225 << " Word4 " << header.word4 << " (0x" << std::hex << header.word4 << std::dec << ")\n"
226 << " Trigger Type: " << std::bitset<64>(header.triggerType) << "\n"
227 << " Page count: " << header.pageCnt << "\n"
228 << " Stop: " << (static_cast<bool>(header.stop) ? "yes" : "no") << "\n"
229 << " Word5 " << header.word5 << " (0x" << std::hex << header.word5 << std::dec << ")\n"
230 << " Word6 " << header.word6 << " (0x" << std::hex << header.word6 << std::dec << ")\n"
231 << " Detector Field: " << header.detectorField << "\n"
232 << " PAR: " << header.detectorPAR << "\n"
233 << " Word7 " << header.word7 << " (0x" << std::hex << header.word7 << std::dec << ")\n"
234 << "End header\n";
235 return stream;
236}
std::vector< std::string > header
int32_t i
Timeframe settings Average distance in cm of events merged into Randomize distance around average distance of merged events Simulate correct bunch interactions instead of placing only the average number of events A value[n] sets TFlen for[n] collisions in Number of bunches per trainsort Number of bunch trains Instantaneous interaction rate Do not simulate border Total number of collisions to be placed in the interior of all time Do not select random but walk over array of events in stride steps h Event generator settings h configStandalone Use CPU for GPU Force usage of the specified GPU device no CPU fallback Continue processing after an error First event to Number of events to Number of iterations to Number of iterations to Number of initial iterations excluded from const char Directory with events to Events directory is and not inside events Show standalone event Run event generator maximum time bin of continuous for triggered for automatic continuous for automatic continuous triggered uint64_t
Input stream operators for raw header 4 to 7 from binary file.
GLuint GLuint64EXT address
Definition glcorearb.h:5846
GLuint GLsizei const GLchar * message
Definition glcorearb.h:2517
GLuint GLuint stream
Definition glcorearb.h:1806
std::istream & operator>>(std::istream &stream, o2::header::RAWDataHeaderV4 &header)
std::ostream & operator<<(std::ostream &stream, const o2::header::RAWDataHeaderV4 &header)