35 {
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 bool thereIsACM = false;
93
94 bool thereIsASL = false;
95
96 char recField;
97 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode; inword= " << std::hex << inword << std::dec << std::endl; }
98
99
100
101 CMROS.decodeFragment(inword, recField);
102 PDROS.decodeFragment(inword, recField);
103 RXROS.decodeFragment(inword, recField);
104 SLROS.decodeFragment(inword, recField);
105
106
107
108
109 if (
SLROS.isHeader()) {
110
111
112
113 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode: SectorLogic Header " << std::endl; }
116 SLRO.writeRecord(inword,
false);
117 thereIsASL = false;
119
121
122
123
124 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode: SectorLogic SubHeader " << std::endl; }
126 SLRO.writeRecord(inword,
false);
127
129
130
131
132 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode: SectorLogic Footer " << std::endl; }
134 thereIsASL = true;
135 SLRO.writeRecord(inword,
true);
136
138
140
141
142
143 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode: SectorLogic Body " << std::endl; }
144 SLRO.writeRecord(inword,
false);
145 thereIsASL = false;
146
147 }
else if (
RXROS.isHeader()) {
148
149
150
151 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode: RX Header " << std::endl; }
153 RXROS.decodeFragment(inword, recField);
155 thereIsACM = false;
157
162 std::cout << " RPCRXRODDecode Fragment problem: CM SubHeader expected and RX Header found" << std::endl;
163 }
164 thereIsACM = true;
165 CMRO.writeRecord(inword,
true);
166
167 break;
170 std::cout << " RPCRXRODDecode Fragment problem: CM Body expected and and RX Header found" << std::endl;
171 }
172 thereIsACM = true;
173 CMRO.writeRecord(inword,
true);
174
175 break;
178 std::cout << " RPCRXRODDecode Fragment problem: CM Body or Footer expected and RX Header found" << std::endl;
179 }
180 thereIsACM = true;
181 CMRO.writeRecord(inword,
true);
182
183 break;
186 std::cout << " RPCRXRODDecode Fragment problem: CM Header or Pad Footer expected and RX Header found" << std::endl;
187 }
188 break;
190 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
191 break;
193 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA fragment expected" << std::endl; }
194 break;
196 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA Footer expected" << std::endl; }
197 break;
199 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
200 break;
201 default:
202 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode ERROR in previousRecord " << std::endl; }
203 }
205
206 }
else if (
RXROS.isFooter()) {
207
208
209
212 RXROS.decodeFragment(inword, recField);
213 if (recField == 'F') {}
214 thereIsACM = false;
216
221 std::cout << " RPCRXRODDecode Fragment problem: CM SubHeader expected and RX Footer found" << std::endl;
222 }
223 thereIsACM = true;
224 CMRO.writeRecord(inword,
true);
225
226 break;
229 std::cout << " RPCRXRODDecode Fragment problem: CM Body expected and RX Footer found" << std::endl;
230 }
231 thereIsACM = true;
232 CMRO.writeRecord(inword,
true);
233
234 break;
237 std::cout << " RPCRXRODDecode Fragment problem: CM Body or Footer expected and and RX Footer found" << std::endl;
238 }
239 thereIsACM = true;
240 CMRO.writeRecord(inword,
true);
241
242 break;
245 std::cout << " RPCRXRODDecode Fragment problem: CM Header or Pad Footer expected and RX Footer found" << std::endl;
246 }
247 break;
249 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
250 break;
252 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA fragment expected" << std::endl; }
253 break;
255 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA Footer expected" << std::endl; }
256 break;
258 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
259 break;
260 default:
261 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode ERROR in previousRecord " << std::endl; }
262 }
264
265 }
else if (
PDROS.isHeader()) {
266
267
268
269 if (
m_enablePrintOut) { std::cout <<
" PAD Header " << std::hex << inword << std::dec << std::endl; }
271 PDROS.decodeFragment(inword, recField);
272 if (recField ==
'H') {
PadID =
PDROS.padid(); }
273 thereIsACM = false;
275 std::cout <<
" PAD " <<
PadID <<
" LVL1 " << std::hex << ((inword & 0x0e00) >> 8) << std::dec << std::endl;
276 }
277
281 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CM SubHeader expected and not found" << std::endl; }
282 thereIsACM = true;
283 CMRO.writeRecord(inword,
true);
284
285 break;
287 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CM Body expected and not found" << std::endl; }
288 thereIsACM = true;
289 CMRO.writeRecord(inword,
true);
290
291 break;
294 std::cout << " RPCRXRODDecode Fragment problem: CM Body or Footer expected and not found" << std::endl;
295 }
296 thereIsACM = true;
297 CMRO.writeRecord(inword,
true);
298
299 break;
302 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
303 break;
305 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA fragment expected" << std::endl; }
306 break;
308 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA Footer expected" << std::endl; }
309 break;
311 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
312 break;
313 default:
314 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode ERROR in previousRecord " << std::endl; }
315 }
317
318 }
else if (
PDROS.isSubHeader()) {
319
320
321
322 if (
m_enablePrintOut) { std::cout <<
" BCID " << std::hex << (inword & 0x0fff) << std::dec << std::endl; }
326 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CM SubHeader expected and not found" << std::endl; }
327 thereIsACM = true;
328 CMRO.writeRecord(inword,
true);
329
330 break;
332 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CM Body expected and not found" << std::endl; }
333 thereIsACM = true;
334 CMRO.writeRecord(inword,
true);
335
336 break;
339 std::cout << " RPCRXRODDecode Fragment problem: CM Body or Footer expected and not found" << std::endl;
340 }
341 thereIsACM = true;
342 CMRO.writeRecord(inword,
true);
343
344 break;
346 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: Pad Header expected and not found" << std::endl; }
347 break;
349 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
350 break;
352 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA fragment expected" << std::endl; }
353 break;
355 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA Footer expected" << std::endl; }
356 break;
358 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
359 break;
360 default:
361 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode ERROR in previousRecord " << std::endl; }
362 }
364
365 }
else if (
PDROS.isPreFooter()) {
366
367
368
369 if (
m_enablePrintOut) { std::cout <<
" STATUS ERROR " << std::hex << (inword & 0x000f) << std::dec << std::endl; }
373 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CM SubHeader expected and not found" << std::endl; }
374 thereIsACM = true;
375 CMRO.writeRecord(inword,
true);
376
377 break;
379 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CM Body expected and not found" << std::endl; }
380 thereIsACM = true;
381 CMRO.writeRecord(inword,
true);
382
383 break;
386 std::cout << " RPCRXRODDecode Fragment problem: CM Body or Footer expected and not found" << std::endl;
387 }
388 thereIsACM = true;
389 CMRO.writeRecord(inword,
true);
390
391 break;
394 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
395 break;
397 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA fragment expected" << std::endl; }
398 break;
400 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA Footer expected" << std::endl; }
401 break;
403 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
404 break;
405 default:
406 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode ERROR in previousRecord " << std::endl; }
407 }
409
410 }
else if (
PDROS.isFooter()) {
411
412
413
415 std::cout << " PAD Footer " << std::hex << inword << std::dec << " ERROR FLAG " << std::hex << (inword & 0x0fff) << std::dec
416 << std::endl;
417 }
419 PDROS.decodeFragment(inword, recField);
420 if (recField == 'F') {}
421 thereIsACM = false;
423
427 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CM SubHeader expected and not found" << std::endl; }
428 thereIsACM = true;
429 CMRO.writeRecord(inword,
true);
430
431 break;
433 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CM Body expected and not found" << std::endl; }
434 thereIsACM = true;
435 CMRO.writeRecord(inword,
true);
436
437 break;
440 std::cout << " RPCRXRODDecode Fragment problem: CM Body or Footer expected and not found" << std::endl;
441 }
442 thereIsACM = true;
443 CMRO.writeRecord(inword,
true);
444
445 break;
448 std::cout << " RPCRXRODDecode Fragment problem: Pad PreFooter expected and not found" << std::endl;
449 }
450 break;
452 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
453 break;
456 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA Footer expected" << std::endl; }
457 break;
459 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
460 break;
461 default:
462 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode ERROR in previousRecord " << std::endl; }
463 }
465
466 }
else if (
CMROS.isHeader()) {
467
468
469
472 CMRO.writeRecord(inword,
false);
473 thereIsACM = false;
474
478 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode warning: CM SubHeader expected and CM Header found" << std::endl; }
479 break;
483 std::cout << " RPCRXRODDecode warning: CM Body or CM Footer expected and CM Header found" << std::endl;
484 }
485 break;
488 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
489 break;
491 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA fragment expected" << std::endl; }
492 break;
494 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA Footer expected" << std::endl; }
495 break;
497 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
498 break;
499 default:
500 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode ERROR in previousRecord " << std::endl; }
501 }
503
504 }
else if (
CMROS.isSubHeader()) {
505
506
507
509 CMRO.writeRecord(inword,
false);
510 thereIsACM = false;
511
514 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode warning: previous record was not a CM Header" << std::endl; }
515 break;
518 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode warning: CM Body expected and CM SubHeader found" << std::endl; }
519 break;
522 std::cout << " RPCRXRODDecode warning: CM Body or CM Footer expected; CM SubHeader found" << std::endl;
523 }
524 break;
527 std::cout << " RPCRXRODDecode warning: CM Header or Pad Footer expected; CM SubHeader found" << std::endl;
528 }
529 break;
531 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
532 break;
534 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA fragment expected" << std::endl; }
535 break;
537 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA Footer expected" << std::endl; }
538 break;
540 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
541 break;
542 default:
543 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode ERROR in previousRecord " << std::endl; }
544 }
546
547 }
else if (
CMROS.isBody()) {
548
549
550
552 thereIsACM = false;
553
557 std::cout << " RPCRXRODDecode (CMBody1) warning: previous record was not a CM subHeader"
558 << " or CM Body Record " << std::endl;
559 }
560 break;
563 std::cout << " RPCRXRODDecode (CMBody2) warning: previous record was not a CM subHeader"
564 << " or CM Body Record " << std::endl;
565 }
566 break;
571 std::cout << " RPCRXRODDecode (CMBody3) warning: previous record was not a CM subHeader"
572 << " or CM Body Record " << std::endl;
573 }
574 break;
576 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
577 break;
579 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA fragment expected" << std::endl; }
580 break;
582 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA Footer expected" << std::endl; }
583 break;
585 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
586 break;
587 default:
588 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode ERROR in previousRecord=" << std::endl; }
589 }
591
592 }
else if (
CMROS.isFooter()) {
593
594
595
596 thereIsACM = true;
599 CMRO.writeRecord(inword,
true);
601
605 std::cout << " RPCRXRODDecode (CMFooter1) warning: previous record was not a Body record " << std::endl;
606 }
607 break;
610 std::cout << " RPCRXRODDecode (CMFooter2) warning: previous record was not a Body record" << std::endl;
611 }
612 break;
614 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode warning: previous record was not a Body record" << std::endl; }
615 break;
619 std::cout << " RPCRXRODDecode (CMFooter3) warning: previous record was not a Body record" << std::endl;
620 }
621 break;
623 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
624 break;
626 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA fragment expected" << std::endl; }
627 break;
629 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA Footer expected" << std::endl; }
630 break;
632 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
633 break;
634 default:
635 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode ERROR in previousRecord" << std::endl; }
636 }
638
639
640
641
643
644
645
646 thereIsACM = false;
648
653 std::cout << " RPCRXRODDecode Fragment problem: CM SubHeader expected and (reserved) found" << std::endl;
654 }
655 thereIsACM = true;
656 CMRO.writeRecord(inword,
true);
657
658 break;
661 std::cout << " RPCRXRODDecode Fragment problem: CM Body expected and (reserved) found" << std::endl;
662 }
663 thereIsACM = true;
664 CMRO.writeRecord(inword,
true);
665
666 break;
669 std::cout << " RPCRXRODDecode Fragment problem: CM Body or Footer expected and (reserved) found" << std::endl;
670 }
671 thereIsACM = true;
672 CMRO.writeRecord(inword,
true);
673
674 break;
677 std::cout << " RPCRXRODDecode Fragment problem: CM Header or Pad Footer expected and (reserved) found" << std::endl;
678 }
679 break;
681 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
682 break;
684 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA fragment expected" << std::endl; }
685 break;
687 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: CMA Footer expected" << std::endl; }
688 break;
690 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
691 break;
692 default:
693 if (
m_enablePrintOut) { std::cout <<
" RPCRXRODDecode ERROR in previousRecord " << std::endl; }
694 }
696
697 }
698 int answer = 0;
699 if (thereIsACM) answer = 1;
700 if (thereIsASL) answer = 2;
701 return answer;
702}
bool m_slFound
the SL fragment was found
ubit16 SectorID
Sector, Pad and Matrix identifiers.
SectorLogicRXReadOutStructure SLROS
SectorLogicRXReadOut SLRO
PadReadOutStructure PDROS
RXReadOutStructure RXROS
service objects
ubit16 m_field
RPC data markers.