Project
Loading...
Searching...
No Matches
testElectronicMapper.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
12
#include "
ElectronicMapperImplHelper.h
"
13
#define BOOST_TEST_MODULE Test MCHRaw CRUEncoder
14
#define BOOST_TEST_MAIN
15
#define BOOST_TEST_DYN_LINK
16
17
#include <boost/test/unit_test.hpp>
18
19
#include "
MCHRawElecMap/Mapper.h
"
20
21
#include "
dslist.h
"
22
#include <array>
23
#include <boost/mpl/list.hpp>
24
#include <fmt/format.h>
25
#include <gsl/span>
26
#include <set>
27
28
using namespace
o2::mch::raw
;
29
30
typedef
boost::mpl::list<
o2::mch::raw::ElectronicMapperDummy
,
31
o2::mch::raw::ElectronicMapperGenerated
>
32
testTypes
;
33
34
typedef
boost::mpl::list<o2::mch::raw::ElectronicMapperGenerated>
35
realTypes
;
36
37
// // Used to generate dslist.cxx
38
// BOOST_AUTO_TEST_CASE(dumpseg)
39
// {
40
// std::map<int, std::vector<int>> dsids;
41
//
42
// o2::mch::mapping::forEachDetectionElement([&dsids](int deId) {
43
// auto seg = o2::mch::mapping::segmentation(deId);
44
// seg.forEachDualSampa([&dsids, deId](int dsid) {
45
// dsids[deId].emplace_back(dsid);
46
// });
47
// });
48
//
49
// for (auto p : dsids) {
50
// std::cout << "dsids[" << p.first << "]={";
51
// for (auto i = 0; i < p.second.size(); i++) {
52
// std::cout << p.second[i];
53
// if (i != p.second.size() - 1) {
54
// std::cout << ",";
55
// }
56
// }
57
// std::cout << "};\n";
58
// }
59
// std::cout << "\n";
60
// }
61
62
auto
dslist
=
createDualSampaMapper
();
63
64
template
<
size_t
N>
65
std::set<int>
nofDualSampas
(std::array<int, N> deIds)
66
{
67
std::set<int>
ds
;
68
69
for
(
auto
deId : deIds) {
70
for
(
auto
dsid :
dslist
(deId)) {
71
ds
.insert(
encode
(
DsDetId
{deId, dsid}));
72
}
73
}
74
return
ds
;
75
}
76
77
template
<
typename
T>
78
std::set<int>
nofDualSampasFromMapper
(gsl::span<int> deids)
79
{
80
std::set<int>
ds
;
81
82
auto
d2e = o2::mch::raw::createDet2ElecMapper<T>();
83
84
for
(
auto
deid : deids) {
85
size_t
nref =
dslist
(deid).size();
86
std::set<int> dsForOneDE;
87
for
(
auto
dsid :
dslist
(deid)) {
88
DsDetId
id
{
static_cast<
uint16_t
>
(deid),
static_cast<
uint16_t
>
(dsid)};
89
auto
dsel = d2e(
id
);
90
if
(dsel.has_value()) {
91
auto
code =
o2::mch::raw::encode
(
id
);
// encode to be sure we're counting unique pairs (deid,dsid)
92
ds
.insert(code);
93
dsForOneDE.insert(code);
94
}
else
{
95
std::cout <<
"did not find matching dsel for id="
<<
id
<<
"\n"
;
96
}
97
};
98
if
(dsForOneDE.size() != nref) {
99
std::cout << fmt::format(
"ERROR : mapper has {:4d} DS while DE {:4d} should have {:4d}\n"
, dsForOneDE.size(), deid, nref);
100
}
101
}
102
return
ds
;
103
}
104
105
// BOOST_TEST_DECORATOR(*boost::unit_test::disabled())
106
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH1R, T,
testTypes
)
107
{
108
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH1R
);
109
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH1R
);
110
BOOST_CHECK_EQUAL
(
check
.size(),
expected
.size());
111
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
112
}
113
114
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH1L, T,
testTypes
)
115
{
116
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH1L
);
117
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH1L
);
118
BOOST_CHECK_EQUAL
(
check
.size(),
expected
.size());
119
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
120
}
121
122
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH2R, T,
testTypes
)
123
{
124
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH2R
);
125
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH2R
);
126
BOOST_CHECK_EQUAL
(
check
.size(),
expected
.size());
127
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
128
}
129
130
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH2L, T,
testTypes
)
131
{
132
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH2L
);
133
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH2L
);
134
BOOST_CHECK_EQUAL
(
check
.size(),
expected
.size());
135
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
136
}
137
138
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH3R, T,
testTypes
)
139
{
140
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH3R
);
141
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH3R
);
142
BOOST_CHECK_EQUAL
(
check
.size(),
expected
.size());
143
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
144
}
145
146
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH3L, T,
testTypes
)
147
{
148
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH3L
);
149
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH3L
);
150
BOOST_CHECK_EQUAL
(
check
.size(),
expected
.size());
151
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
152
}
153
154
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH4R, T,
testTypes
)
155
{
156
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH4R
);
157
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH4R
);
158
BOOST_CHECK_EQUAL
(
check
.size(),
expected
.size());
159
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
160
}
161
162
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH4L, T,
testTypes
)
163
{
164
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH4L
);
165
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH4L
);
166
BOOST_CHECK_EQUAL
(
check
.size(),
expected
.size());
167
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
168
}
169
170
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH5R, T,
testTypes
)
171
{
172
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH5R
);
173
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH5R
);
174
BOOST_CHECK_EQUAL
(
check
.size(),
expected
.size());
175
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
176
}
177
178
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH5L, T,
testTypes
)
179
{
180
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH5L
);
181
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH5L
);
182
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
183
}
184
185
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH6R, T,
testTypes
)
186
{
187
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH6R
);
188
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH6R
);
189
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
190
}
191
192
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH6L, T,
testTypes
)
193
{
194
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH6L
);
195
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH6L
);
196
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
197
}
198
199
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH7R, T,
testTypes
)
200
{
201
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH7R
);
202
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH7R
);
203
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
204
}
205
206
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH7L, T,
testTypes
)
207
{
208
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH7L
);
209
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH7L
);
210
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
211
}
212
213
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH8R, T,
testTypes
)
214
{
215
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH8R
);
216
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH8R
);
217
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
218
}
219
220
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH8L, T,
testTypes
)
221
{
222
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH8L
);
223
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH8L
);
224
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
225
}
226
227
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH9R, T,
testTypes
)
228
{
229
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH9R
);
230
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH9R
);
231
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
232
}
233
234
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH9L, T,
testTypes
)
235
{
236
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH9L
);
237
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH9L
);
238
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
239
}
240
241
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH10R, T,
testTypes
)
242
{
243
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH10R
);
244
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH10R
);
245
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
246
}
247
248
BOOST_AUTO_TEST_CASE_TEMPLATE
(MustContainAllSampaCH10L, T,
testTypes
)
249
{
250
auto
check
= nofDualSampasFromMapper<T>(
o2::mch::raw::deIdsOfCH10L
);
251
auto
expected
=
nofDualSampas
(
o2::mch::raw::deIdsOfCH10L
);
252
BOOST_CHECK
(std::equal(
expected
.begin(),
expected
.end(),
check
.begin()));
253
}
254
255
// this check depends on the installation status at Pt2, i.e.
256
// not yet fullly installed chambers have an expected number of solarIds
257
// set to zero
258
BOOST_AUTO_TEST_CASE_TEMPLATE
(CheckNumberOfSolarsPerDetectionElement, T,
realTypes
)
259
{
260
// Chamber 1
261
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(100).
size
(), 12);
262
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(102).
size
(), 12);
263
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(101).
size
(), 12);
264
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(103).
size
(), 12);
265
266
// Chamber 2
267
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(200).
size
(), 12);
268
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(202).
size
(), 12);
269
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(201).
size
(), 12);
270
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(203).
size
(), 12);
271
272
// Chamber 3
273
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(300).
size
(), 12);
274
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(302).
size
(), 12);
275
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(301).
size
(), 12);
276
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(303).
size
(), 12);
277
278
// Chamber 4
279
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(400).
size
(), 12);
280
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(402).
size
(), 12);
281
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(401).
size
(), 12);
282
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(403).
size
(), 12);
283
284
// Chamber 5
285
// 5R = 5I
286
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(500).
size
(), 4);
287
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(501).
size
(), 4);
288
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(502).
size
(), 4);
289
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(503).
size
(), 2);
290
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(504).
size
(), 1);
291
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(514).
size
(), 1);
292
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(515).
size
(), 2);
293
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(516).
size
(), 4);
294
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(517).
size
(), 4);
295
// 5L = 5O
296
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(505).
size
(), 1);
297
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(506).
size
(), 2);
298
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(507).
size
(), 4);
299
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(508).
size
(), 4);
300
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(509).
size
(), 4);
301
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(510).
size
(), 4);
302
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(511).
size
(), 4);
303
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(512).
size
(), 2);
304
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(513).
size
(), 1);
305
306
// Chamber 6
307
// 6R = 6I
308
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(600).
size
(), 4);
309
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(601).
size
(), 4);
310
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(602).
size
(), 4);
311
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(603).
size
(), 2);
312
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(604).
size
(), 1);
313
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(614).
size
(), 1);
314
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(615).
size
(), 2);
315
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(616).
size
(), 4);
316
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(617).
size
(), 4);
317
// 6L = 6O
318
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(605).
size
(), 1);
319
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(606).
size
(), 2);
320
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(607).
size
(), 4);
321
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(608).
size
(), 4);
322
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(609).
size
(), 4);
323
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(610).
size
(), 4);
324
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(611).
size
(), 4);
325
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(612).
size
(), 2);
326
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(613).
size
(), 1);
327
328
// Chamber 7
329
// 7R = 7I
330
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(700).
size
(), 4);
331
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(701).
size
(), 4);
332
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(702).
size
(), 4);
333
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(703).
size
(), 4);
334
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(704).
size
(), 2);
335
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(705).
size
(), 2);
336
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(706).
size
(), 1);
337
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(720).
size
(), 1);
338
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(721).
size
(), 2);
339
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(722).
size
(), 2);
340
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(723).
size
(), 4);
341
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(724).
size
(), 4);
342
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(725).
size
(), 4);
343
// 7L = 7O
344
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(707).
size
(), 1);
345
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(708).
size
(), 2);
346
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(709).
size
(), 2);
347
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(710).
size
(), 4);
348
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(711).
size
(), 4);
349
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(712).
size
(), 4);
350
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(713).
size
(), 4);
351
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(714).
size
(), 4);
352
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(715).
size
(), 4);
353
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(716).
size
(), 4);
354
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(717).
size
(), 2);
355
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(718).
size
(), 2);
356
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(719).
size
(), 1);
357
358
// Chamber 8
359
// 8R = 8I
360
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(800).
size
(), 4);
361
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(801).
size
(), 4);
362
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(802).
size
(), 4);
363
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(803).
size
(), 4);
364
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(804).
size
(), 2);
365
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(805).
size
(), 2);
366
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(806).
size
(), 1);
367
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(820).
size
(), 1);
368
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(821).
size
(), 2);
369
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(822).
size
(), 2);
370
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(823).
size
(), 4);
371
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(824).
size
(), 4);
372
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(825).
size
(), 4);
373
// 8L = 8O
374
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(807).
size
(), 1);
375
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(808).
size
(), 2);
376
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(809).
size
(), 2);
377
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(810).
size
(), 4);
378
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(811).
size
(), 4);
379
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(812).
size
(), 4);
380
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(813).
size
(), 4);
381
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(814).
size
(), 4);
382
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(815).
size
(), 4);
383
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(816).
size
(), 4);
384
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(817).
size
(), 2);
385
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(818).
size
(), 2);
386
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(819).
size
(), 1);
387
388
// Chamber 9
389
// 9R = 9I
390
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(900).
size
(), 4);
391
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(901).
size
(), 4);
392
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(902).
size
(), 4);
393
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(903).
size
(), 4);
394
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(904).
size
(), 4);
395
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(905).
size
(), 2);
396
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(906).
size
(), 2);
397
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(920).
size
(), 2);
398
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(921).
size
(), 2);
399
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(922).
size
(), 4);
400
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(923).
size
(), 4);
401
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(924).
size
(), 4);
402
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(925).
size
(), 4);
403
// 9L = 9O
404
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(907).
size
(), 2);
405
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(908).
size
(), 2);
406
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(909).
size
(), 4);
407
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(910).
size
(), 4);
408
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(911).
size
(), 4);
409
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(912).
size
(), 4);
410
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(913).
size
(), 4);
411
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(914).
size
(), 4);
412
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(915).
size
(), 4);
413
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(916).
size
(), 4);
414
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(917).
size
(), 4);
415
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(918).
size
(), 2);
416
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(919).
size
(), 2);
417
418
// Chamber 10
419
// 10R = 10I
420
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1000).
size
(), 4);
421
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1001).
size
(), 4);
422
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1002).
size
(), 4);
423
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1003).
size
(), 4);
424
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1004).
size
(), 4);
425
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1005).
size
(), 2);
426
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1006).
size
(), 2);
427
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1020).
size
(), 2);
428
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1021).
size
(), 2);
429
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1022).
size
(), 4);
430
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1023).
size
(), 4);
431
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1024).
size
(), 4);
432
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1025).
size
(), 4);
433
// 10L = 10O
434
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1007).
size
(), 2);
435
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1008).
size
(), 2);
436
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1009).
size
(), 4);
437
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1010).
size
(), 4);
438
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1011).
size
(), 4);
439
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1012).
size
(), 4);
440
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1013).
size
(), 4);
441
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1014).
size
(), 4);
442
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1015).
size
(), 4);
443
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1016).
size
(), 4);
444
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1017).
size
(), 4);
445
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1018).
size
(), 2);
446
BOOST_CHECK_EQUAL
(getSolarUIDs<T>(1019).
size
(), 2);
447
}
448
449
template
<
typename
T>
450
int
expectedNumberOfSolars
();
451
452
template
<>
453
int
expectedNumberOfSolars<ElectronicMapperDummy>
()
454
{
455
return
421;
456
}
457
template
<>
458
int
expectedNumberOfSolars<ElectronicMapperGenerated>
()
459
{
460
return
624;
461
}
462
463
template
<
typename
T>
464
int
expectedNumberOfDs
();
465
466
template
<>
467
int
expectedNumberOfDs<ElectronicMapperDummy>
()
468
{
469
return
16820;
470
}
471
472
template
<>
473
int
expectedNumberOfDs<ElectronicMapperGenerated>
()
474
{
475
return
16820;
476
}
477
478
BOOST_AUTO_TEST_CASE_TEMPLATE
(AllSolarsMustGetAFeeLinkAndTheReverse, T,
testTypes
)
479
{
480
auto
errors = solar2FeeLinkConsistencyCheck<T>();
481
BOOST_CHECK_EQUAL
(errors.size(), 0);
482
if
(!errors.empty()) {
483
for
(
auto
msg
: errors) {
484
std::cout <<
"ERROR: "
<<
msg
<<
"\n"
;
485
}
486
}
487
}
488
489
BOOST_AUTO_TEST_CASE_TEMPLATE
(CheckNumberOfSolars, T,
testTypes
)
490
{
491
std::set<uint16_t> solarIds = getSolarUIDs<T>();
492
BOOST_CHECK_EQUAL
(solarIds.size(), expectedNumberOfSolars<T>());
// must be updated when adding more chambers
493
}
494
495
BOOST_AUTO_TEST_CASE_TEMPLATE
(CheckNumberOfDsElecId, T,
testTypes
)
496
{
497
std::set<DsElecId> dsElecIds = getAllDs<T>();
498
BOOST_CHECK_EQUAL
(dsElecIds.size(), expectedNumberOfDs<T>());
// must be updated when adding more chambers
499
}
500
501
// Spot check (on a few selected ones, e.g. the ones used in some unit tests)
502
// solars actually have an associated FeeLinkId.
503
BOOST_AUTO_TEST_CASE_TEMPLATE
(CheckAFewSolarIdThatMustHaveAFeeLinkd, T,
testTypes
)
504
{
505
auto
solarIds = {361, 448, 728};
506
for
(
auto
solarId : solarIds) {
507
BOOST_TEST_INFO(fmt::format(
"solarId={}"
, solarId));
508
auto
s2f = o2::mch::raw::createSolar2FeeLinkMapper<T>();
509
auto
f
= s2f(solarId);
510
BOOST_CHECK_EQUAL
(
f
.has_value(),
true
);
511
}
512
}
513
514
BOOST_AUTO_TEST_CASE
(SpotCheck)
515
{
516
o2::mch::raw::FeeLinkId
id
(44, 0);
517
auto
f2s =
o2::mch::raw::createFeeLink2SolarMapper<ElectronicMapperGenerated>
();
518
auto
s = f2s(
id
);
519
BOOST_CHECK_EQUAL
(s.has_value(),
true
);
520
}
521
522
BOOST_AUTO_TEST_CASE
(NumberOfSolarsPerFeeId)
523
{
524
using
elecmap =
ElectronicMapperGenerated
;
525
526
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(0).
size
(), 12);
527
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(1).
size
(), 12);
528
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(2).
size
(), 12);
529
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(3).
size
(), 12);
530
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(4).
size
(), 12);
531
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(5).
size
(), 12);
532
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(6).
size
(), 12);
533
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(7).
size
(), 12);
534
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(8).
size
(), 12);
535
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(9).
size
(), 12);
536
537
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(10).
size
(), 0);
538
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(11).
size
(), 0);
539
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(12).
size
(), 12);
540
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(13).
size
(), 12);
541
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(14).
size
(), 12);
542
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(15).
size
(), 12);
543
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(16).
size
(), 12);
544
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(17).
size
(), 12);
545
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(18).
size
(), 11);
546
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(19).
size
(), 9);
547
548
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(20).
size
(), 6);
549
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(21).
size
(), 11);
550
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(22).
size
(), 9);
551
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(23).
size
(), 6);
552
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(24).
size
(), 9);
553
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(25).
size
(), 6);
554
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(26).
size
(), 11);
555
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(27).
size
(), 9);
556
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(28).
size
(), 6);
557
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(29).
size
(), 11);
558
559
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(30).
size
(), 5);
560
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(31).
size
(), 12);
561
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(32).
size
(), 10);
562
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(33).
size
(), 11);
563
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(34).
size
(), 5);
564
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(35).
size
(), 12);
565
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(36).
size
(), 5);
566
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(37).
size
(), 12);
567
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(38).
size
(), 10);
568
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(39).
size
(), 11);
569
570
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(40).
size
(), 5);
571
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(41).
size
(), 12);
572
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(42).
size
(), 10);
573
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(43).
size
(), 11);
574
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(44).
size
(), 11);
575
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(45).
size
(), 11);
576
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(46).
size
(), 11);
577
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(47).
size
(), 11);
578
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(48).
size
(), 10);
579
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(49).
size
(), 11);
580
581
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(50).
size
(), 11);
582
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(51).
size
(), 11);
583
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(52).
size
(), 11);
584
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(53).
size
(), 11);
585
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(54).
size
(), 11);
586
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(55).
size
(), 11);
587
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(56).
size
(), 11);
588
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(57).
size
(), 11);
589
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(58).
size
(), 0);
590
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(59).
size
(), 0);
591
592
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(60).
size
(), 11);
593
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(61).
size
(), 11);
594
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(62).
size
(), 11);
595
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(63).
size
(), 11);
596
597
BOOST_CHECK_EQUAL
(getSolarUIDsPerFeeId<elecmap>(64).
size
(), 0);
598
}
599
600
BOOST_AUTO_TEST_CASE
(NumberOfDualSampasPerFeeId)
601
{
602
using
elecmap =
ElectronicMapperGenerated
;
603
604
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(0).
size
(), 451);
605
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(1).
size
(), 451);
606
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(2).
size
(), 451);
607
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(3).
size
(), 451);
608
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(4).
size
(), 451);
609
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(5).
size
(), 451);
610
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(6).
size
(), 451);
611
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(7).
size
(), 451);
612
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(8).
size
(), 442);
613
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(9).
size
(), 442);
614
615
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(10).
size
(), 0);
616
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(11).
size
(), 0);
617
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(12).
size
(), 442);
618
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(13).
size
(), 442);
619
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(14).
size
(), 442);
620
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(15).
size
(), 442);
621
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(16).
size
(), 442);
622
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(17).
size
(), 442);
623
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(18).
size
(), 263);
624
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(19).
size
(), 204);
625
626
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(20).
size
(), 137);
627
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(21).
size
(), 263);
628
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(22).
size
(), 204);
629
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(23).
size
(), 137);
630
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(24).
size
(), 225);
631
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(25).
size
(), 122);
632
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(26).
size
(), 267);
633
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(27).
size
(), 225);
634
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(28).
size
(), 122);
635
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(29).
size
(), 267);
636
637
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(30).
size
(), 97);
638
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(31).
size
(), 290);
639
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(32).
size
(), 250);
640
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(33).
size
(), 223);
641
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(34).
size
(), 97);
642
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(35).
size
(), 290);
643
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(36).
size
(), 97);
644
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(37).
size
(), 290);
645
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(38).
size
(), 250);
646
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(39).
size
(), 223);
647
648
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(40).
size
(), 97);
649
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(41).
size
(), 290);
650
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(42).
size
(), 250);
651
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(43).
size
(), 223);
652
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(44).
size
(), 181);
653
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(45).
size
(), 293);
654
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(46).
size
(), 298);
655
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(47).
size
(), 178);
656
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(48).
size
(), 250);
657
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(49).
size
(), 223);
658
659
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(50).
size
(), 181);
660
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(51).
size
(), 293);
661
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(52).
size
(), 298);
662
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(53).
size
(), 178);
663
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(54).
size
(), 181);
664
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(55).
size
(), 293);
665
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(56).
size
(), 298);
666
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(57).
size
(), 178);
667
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(58).
size
(), 0);
668
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(59).
size
(), 0);
669
670
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(60).
size
(), 181);
671
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(61).
size
(), 293);
672
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(62).
size
(), 298);
673
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(63).
size
(), 178);
674
675
BOOST_CHECK_EQUAL
(getDualSampasPerFeeId<elecmap>(64).
size
(), 0);
676
677
int
n
{0};
678
for
(uint16_t feeId = 0; feeId <= 64; feeId++) {
679
n
+= getDualSampasPerFeeId<elecmap>(feeId).size();
680
}
681
682
BOOST_CHECK_EQUAL
(
n
, 16820);
683
}
684
685
BOOST_AUTO_TEST_CASE
(CircularSolarId2IndexCheck)
686
{
687
auto
solarIds =
o2::mch::raw::getSolarUIDs<ElectronicMapperGenerated>
();
688
for
(
const
auto
& solarId : solarIds) {
689
BOOST_TEST_INFO_SCOPE(fmt::format(
"SolarId {}"
, solarId));
690
auto
index
=
o2::mch::raw::solarId2Index<ElectronicMapperGenerated>
(solarId);
691
BOOST_CHECK_EQUAL
(
index
.has_value(),
true
);
692
auto
id
=
o2::mch::raw::solarIndex2Id<ElectronicMapperGenerated>
(
index
.value());
693
BOOST_CHECK_EQUAL
(
id
.has_value(),
true
);
694
BOOST_CHECK_EQUAL
(
id
.
value
(), solarId);
695
}
696
}
ElectronicMapperImplHelper.h
Mapper.h
o2::mch::raw::DsDetId
A DsDetId is just a pair (detection element id, dual sampa id)
Definition
DsDetId.h:22
o2::mch::raw::FeeLinkId
Definition
FeeLinkId.h:22
createDualSampaMapper
std::function< std::set< int >(int deId)> createDualSampaMapper()
Definition
dslist.cxx:15
dslist.h
n
GLdouble n
Definition
glcorearb.h:1982
size
GLsizeiptr size
Definition
glcorearb.h:659
index
GLuint index
Definition
glcorearb.h:781
f
GLdouble f
Definition
glcorearb.h:310
value
GLsizei const GLfloat * value
Definition
glcorearb.h:819
id
GLuint id
Definition
glcorearb.h:650
o2::framework::check
void check(const std::vector< std::string > &arguments, const std::vector< ConfigParamSpec > &workflowOptions, const std::vector< DeviceSpec > &deviceSpecs, CheckMatrix &matrix)
Definition
test_DeviceSpecHelpers.cxx:55
o2::mch::raw
Definition
pedestal-decoding-workflow.cxx:58
o2::mch::raw::deIdsOfCH1L
std::array< int, 2 > deIdsOfCH1L
Definition
Mapper.cxx:18
o2::mch::raw::deIdsOfCH5L
std::array< int, 9 > deIdsOfCH5L
Definition
Mapper.cxx:26
o2::mch::raw::deIdsOfCH2L
std::array< int, 2 > deIdsOfCH2L
Definition
Mapper.cxx:20
o2::mch::raw::deIdsOfCH6R
std::array< int, 9 > deIdsOfCH6R
Definition
Mapper.cxx:27
o2::mch::raw::deIdsOfCH3R
std::array< int, 2 > deIdsOfCH3R
Definition
Mapper.cxx:21
o2::mch::raw::deIdsOfCH1R
std::array< int, 2 > deIdsOfCH1R
Definition
Mapper.cxx:17
o2::mch::raw::deIdsOfCH5R
std::array< int, 9 > deIdsOfCH5R
Definition
Mapper.cxx:25
o2::mch::raw::createFeeLink2SolarMapper< ElectronicMapperGenerated >
std::function< std::optional< uint16_t >(FeeLinkId)> createFeeLink2SolarMapper< ElectronicMapperGenerated >()
Definition
ElectronicMapperGenerated.cxx:157
o2::mch::raw::deIdsOfCH7R
std::array< int, 13 > deIdsOfCH7R
Definition
Mapper.cxx:29
o2::mch::raw::deIdsOfCH8R
std::array< int, 13 > deIdsOfCH8R
Definition
Mapper.cxx:31
o2::mch::raw::deIdsOfCH6L
std::array< int, 9 > deIdsOfCH6L
Definition
Mapper.cxx:28
o2::mch::raw::deIdsOfCH3L
std::array< int, 2 > deIdsOfCH3L
Definition
Mapper.cxx:22
o2::mch::raw::solarIndex2Id< ElectronicMapperGenerated >
std::optional< uint16_t > solarIndex2Id< ElectronicMapperGenerated >(uint16_t solarIndex)
Definition
ElectronicMapperGenerated.cxx:206
o2::mch::raw::deIdsOfCH2R
std::array< int, 2 > deIdsOfCH2R
Definition
Mapper.cxx:19
o2::mch::raw::deIdsOfCH8L
std::array< int, 13 > deIdsOfCH8L
Definition
Mapper.cxx:32
o2::mch::raw::solarId2Index< ElectronicMapperGenerated >
std::optional< uint16_t > solarId2Index< ElectronicMapperGenerated >(uint16_t solarId)
Definition
ElectronicMapperGenerated.cxx:212
o2::mch::raw::deIdsOfCH10L
std::array< int, 13 > deIdsOfCH10L
Definition
Mapper.cxx:36
o2::mch::raw::deIdsOfCH9L
std::array< int, 13 > deIdsOfCH9L
Definition
Mapper.cxx:34
o2::mch::raw::deIdsOfCH10R
std::array< int, 13 > deIdsOfCH10R
Definition
Mapper.cxx:35
o2::mch::raw::deIdsOfCH4L
std::array< int, 2 > deIdsOfCH4L
Definition
Mapper.cxx:24
o2::mch::raw::getSolarUIDs< ElectronicMapperGenerated >
std::set< uint16_t > getSolarUIDs< ElectronicMapperGenerated >()
Definition
ElectronicMapperGenerated.cxx:170
o2::mch::raw::deIdsOfCH9R
std::array< int, 13 > deIdsOfCH9R
Definition
Mapper.cxx:33
o2::mch::raw::deIdsOfCH4R
std::array< int, 2 > deIdsOfCH4R
Definition
Mapper.cxx:23
o2::mch::raw::deIdsOfCH7L
std::array< int, 13 > deIdsOfCH7L
Definition
Mapper.cxx:30
o2::mch::raw::encode
uint32_t encode(const DsDetId &id)
Create an integer code for the given id.
Definition
DsDetId.cxx:28
o2::BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(FlatHisto)
Definition
testFlatHisto.cxx:28
o2::mch::raw::ElectronicMapperDummy
Definition
Mapper.h:86
o2::mch::raw::ElectronicMapperGenerated
Definition
Mapper.h:88
expected
std::map< std::string, ID > expected
Definition
testDCSAliases.cxx:166
testTypes
boost::mpl::list< o2::dcs::DataPointIdentifier, o2::dcs::DataPointValue, o2::dcs::DataPointCompositeObject > testTypes
Definition
testDataPointTypes.cxx:25
expectedNumberOfSolars
int expectedNumberOfSolars()
expectedNumberOfDs< ElectronicMapperGenerated >
int expectedNumberOfDs< ElectronicMapperGenerated >()
Definition
testElectronicMapper.cxx:473
expectedNumberOfDs
int expectedNumberOfDs()
nofDualSampas
std::set< int > nofDualSampas(std::array< int, N > deIds)
Definition
testElectronicMapper.cxx:65
expectedNumberOfDs< ElectronicMapperDummy >
int expectedNumberOfDs< ElectronicMapperDummy >()
Definition
testElectronicMapper.cxx:467
nofDualSampasFromMapper
std::set< int > nofDualSampasFromMapper(gsl::span< int > deids)
Definition
testElectronicMapper.cxx:78
dslist
auto dslist
Definition
testElectronicMapper.cxx:62
expectedNumberOfSolars< ElectronicMapperGenerated >
int expectedNumberOfSolars< ElectronicMapperGenerated >()
Definition
testElectronicMapper.cxx:458
BOOST_AUTO_TEST_CASE_TEMPLATE
BOOST_AUTO_TEST_CASE_TEMPLATE(MustContainAllSampaCH1R, T, testTypes)
Definition
testElectronicMapper.cxx:106
testTypes
boost::mpl::list< o2::mch::raw::ElectronicMapperDummy, o2::mch::raw::ElectronicMapperGenerated > testTypes
Definition
testElectronicMapper.cxx:32
expectedNumberOfSolars< ElectronicMapperDummy >
int expectedNumberOfSolars< ElectronicMapperDummy >()
Definition
testElectronicMapper.cxx:453
realTypes
boost::mpl::list< o2::mch::raw::ElectronicMapperGenerated > realTypes
Definition
testElectronicMapper.cxx:35
ds
o2::mch::DsIndex ds
Definition
testStatusMap.cxx:43
BOOST_CHECK
BOOST_CHECK(tree)
BOOST_CHECK_EQUAL
BOOST_CHECK_EQUAL(triggersD.size(), triggers.size())
msg
uint64_t const void const *restrict const msg
Definition
x9.h:153
Detectors
MUON
MCH
Raw
ElecMap
src
testElectronicMapper.cxx
Generated on Tue Feb 25 2025 23:16:23 for Project by
1.9.8