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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112 bool thereIsACM = false;
113
114 bool thereIsASL = false;
115
116 char recField;
117 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode; inword= " << std::hex << inword << std::dec << std::endl; }
118
119
120
121 CMROS.decodeFragment(inword, recField);
122 PDROS.decodeFragment(inword, recField);
123 RXROS.decodeFragment(inword, recField);
124 SLROS.decodeFragment(inword, recField);
125
126
127
128
129 if (
SLROS.isHeader()) {
130
131
132
133 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode: SectorLogic Header " << std::endl; }
136 SLRO.writeRecord(inword,
false);
137 thereIsASL = false;
138
139 }
else if (
SLROS.isFooter()) {
140
141
142
143 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode: SectorLogic Footer " << std::endl; }
145 thereIsASL = true;
146 SLRO.writeRecord(inword,
true);
147
149
150
151
152 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode: SectorLogic Body " << std::endl; }
153 SLRO.writeRecord(inword,
false);
154 thereIsASL = false;
155
156 }
else if (
RXROS.isHeader()) {
157
158
159
160 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode: RX Header " << std::endl; }
162 RXROS.decodeFragment(inword, recField);
164 thereIsACM = false;
166
171 std::cout << " RPCRODDecode Fragment problem: CM SubHeader expected and RX Header found" << std::endl;
172 }
173 thereIsACM = true;
174 CMRO.writeRecord(inword,
true);
175
176 break;
179 std::cout << " RPCRODDecode Fragment problem: CM Body expected and and RX Header found" << std::endl;
180 }
181 thereIsACM = true;
182 CMRO.writeRecord(inword,
true);
183
184 break;
187 std::cout << " RPCRODDecode Fragment problem: CM Body or Footer expected and RX Header found" << std::endl;
188 }
189 thereIsACM = true;
190 CMRO.writeRecord(inword,
true);
191
192 break;
195 std::cout << " RPCRODDecode Fragment problem: CM Header or Pad Footer expected and RX Header found" << std::endl;
196 }
197 break;
199 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
200 break;
202 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA fragment expected" << std::endl; }
203 break;
205 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA Footer expected" << std::endl; }
206 break;
208 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
209 break;
210 default:
211 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode ERROR in previousRecord " << std::endl; }
212 }
214
215 }
else if (
RXROS.isFooter()) {
216
217
218
221 RXROS.decodeFragment(inword, recField);
222 if (recField == 'F') {}
223 thereIsACM = false;
225
230 std::cout << " RPCRODDecode Fragment problem: CM SubHeader expected and RX Footer found" << std::endl;
231 }
232 thereIsACM = true;
233 CMRO.writeRecord(inword,
true);
234
235 break;
237 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CM Body expected and RX Footer found" << std::endl; }
238 thereIsACM = true;
239 CMRO.writeRecord(inword,
true);
240
241 break;
244 std::cout << " RPCRODDecode Fragment problem: CM Body or Footer expected and and RX Footer found" << std::endl;
245 }
246 thereIsACM = true;
247 CMRO.writeRecord(inword,
true);
248
249 break;
252 std::cout << " RPCRODDecode Fragment problem: CM Header or Pad Footer expected and RX Footer found" << std::endl;
253 }
254 break;
256 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
257 break;
259 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA fragment expected" << std::endl; }
260 break;
262 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA Footer expected" << std::endl; }
263 break;
265 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
266 break;
267 default:
268 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode ERROR in previousRecord " << std::endl; }
269 }
271
272 }
else if (
PDROS.isHeader()) {
273
274
275
276 if (
m_enablePrintOut) { std::cout <<
" PAD Header " << std::hex << inword << std::dec << std::endl; }
278 PDROS.decodeFragment(inword, recField);
279 if (recField ==
'H') {
PadID =
PDROS.padid(); }
280 thereIsACM = false;
282 std::cout <<
" PAD " <<
PadID <<
" LVL1 " << std::hex << ((inword & 0x0e00) >> 8) << std::dec << std::endl;
283 }
284
288 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CM SubHeader expected and not found" << std::endl; }
289 thereIsACM = true;
290 CMRO.writeRecord(inword,
true);
291
292 break;
294 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CM Body expected and not found" << std::endl; }
295 thereIsACM = true;
296 CMRO.writeRecord(inword,
true);
297
298 break;
301 std::cout << " RPCRODDecode Fragment problem: CM Body or Footer expected and not found" << std::endl;
302 }
303 thereIsACM = true;
304 CMRO.writeRecord(inword,
true);
305
306 break;
309 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
310 break;
312 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA fragment expected" << std::endl; }
313 break;
315 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA Footer expected" << std::endl; }
316 break;
318 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
319 break;
320 default:
321 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode ERROR in previousRecord " << std::endl; }
322 }
324
325 }
else if (
PDROS.isSubHeader()) {
326
327
328
329 if (
m_enablePrintOut) { std::cout <<
" BCID " << std::hex << (inword & 0x0fff) << std::dec << std::endl; }
333 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CM SubHeader expected and not found" << std::endl; }
334 thereIsACM = true;
335 CMRO.writeRecord(inword,
true);
336
337 break;
339 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CM Body expected and not found" << std::endl; }
340 thereIsACM = true;
341 CMRO.writeRecord(inword,
true);
342
343 break;
346 std::cout << " RPCRODDecode Fragment problem: CM Body or Footer expected and not found" << std::endl;
347 }
348 thereIsACM = true;
349 CMRO.writeRecord(inword,
true);
350
351 break;
353 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: Pad Header expected and not found" << std::endl; }
354 break;
356 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
357 break;
359 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA fragment expected" << std::endl; }
360 break;
362 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA Footer expected" << std::endl; }
363 break;
365 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
366 break;
367 default:
368 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode ERROR in previousRecord " << std::endl; }
369 }
371
372 }
else if (
PDROS.isPreFooter()) {
373
374
375
376 if (
m_enablePrintOut) { std::cout <<
" STATUS ERROR " << std::hex << (inword & 0x000f) << std::dec << std::endl; }
380 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CM SubHeader expected and not found" << std::endl; }
381 thereIsACM = true;
382 CMRO.writeRecord(inword,
true);
383
384 break;
386 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CM Body expected and not found" << std::endl; }
387 thereIsACM = true;
388 CMRO.writeRecord(inword,
true);
389
390 break;
393 std::cout << " RPCRODDecode Fragment problem: CM Body or Footer expected and not found" << std::endl;
394 }
395 thereIsACM = true;
396 CMRO.writeRecord(inword,
true);
397
398 break;
401 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
402 break;
404 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA fragment expected" << std::endl; }
405 break;
407 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA Footer expected" << std::endl; }
408 break;
410 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
411 break;
412 default:
413 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode ERROR in previousRecord " << std::endl; }
414 }
416
417 }
else if (
PDROS.isFooter()) {
418
419
420
422 std::cout << " PAD Footer " << std::hex << inword << std::dec << " ERROR FLAG " << std::hex << (inword & 0x0fff) << std::dec
423 << std::endl;
424 }
426 PDROS.decodeFragment(inword, recField);
427 if (recField == 'F') {}
428 thereIsACM = false;
430
434 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CM SubHeader expected and not found" << std::endl; }
435 thereIsACM = true;
436 CMRO.writeRecord(inword,
true);
437
438 break;
440 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CM Body expected and not found" << std::endl; }
441 thereIsACM = true;
442 CMRO.writeRecord(inword,
true);
443
444 break;
447 std::cout << " RPCRODDecode Fragment problem: CM Body or Footer expected and not found" << std::endl;
448 }
449 thereIsACM = true;
450 CMRO.writeRecord(inword,
true);
451
452 break;
454 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: Pad PreFooter expected and not found" << std::endl; }
455 break;
457 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
458 break;
461 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA Footer expected" << std::endl; }
462 break;
464 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
465 break;
466 default:
467 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode ERROR in previousRecord " << std::endl; }
468 }
470
471 }
else if (
CMROS.isHeader()) {
472
473
474
477 CMRO.writeRecord(inword,
false);
478 thereIsACM = false;
479
483 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode warning: CM SubHeader expected and CM Header found" << std::endl; }
484 break;
488 std::cout << " RPCRODDecode warning: CM Body or CM Footer expected and CM Header found" << std::endl;
489 }
490 break;
493 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
494 break;
496 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA fragment expected" << std::endl; }
497 break;
499 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA Footer expected" << std::endl; }
500 break;
502 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
503 break;
504 default:
505 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode ERROR in previousRecord " << std::endl; }
506 }
508
509 }
else if (
CMROS.isSubHeader()) {
510
511
512
514 CMRO.writeRecord(inword,
false);
515 thereIsACM = false;
516
519 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode warning: previous record was not a CM Header" << std::endl; }
520 break;
523 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode warning: CM Body expected and CM SubHeader found" << std::endl; }
524 break;
527 std::cout << " RPCRODDecode warning: CM Body or CM Footer expected; CM SubHeader found" << std::endl;
528 }
529 break;
532 std::cout << " RPCRODDecode warning: CM Header or Pad Footer expected; CM SubHeader found" << std::endl;
533 }
534 break;
536 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
537 break;
539 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA fragment expected" << std::endl; }
540 break;
542 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA Footer expected" << std::endl; }
543 break;
545 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
546 break;
547 default:
548 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode ERROR in previousRecord " << std::endl; }
549 }
551
552 }
else if (
CMROS.isBody()) {
553
554
555
557 thereIsACM = false;
558
562 std::cout << " RPCRODDecode (CMBody1) warning: previous record was not a CM subHeader"
563 << " or CM Body Record " << std::endl;
564 }
565 break;
568 std::cout << " RPCRODDecode (CMBody2) warning: previous record was not a CM subHeader"
569 << " or CM Body Record " << std::endl;
570 }
571 break;
576 std::cout << " RPCRODDecode (CMBody3) warning: previous record was not a CM subHeader"
577 << " or CM Body Record " << std::endl;
578 }
579 break;
581 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
582 break;
584 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA fragment expected" << std::endl; }
585 break;
587 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA Footer expected" << std::endl; }
588 break;
590 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
591 break;
592 default:
593 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode ERROR in previousRecord=" << std::endl; }
594 }
596
597 }
else if (
CMROS.isFooter()) {
598
599
600
601 thereIsACM = true;
604 CMRO.writeRecord(inword,
true);
606
610 std::cout << " RPCRODDecode (CMFooter1) warning: previous record was not a Body record " << std::endl;
611 }
612 break;
615 std::cout << " RPCRODDecode (CMFooter2) warning: previous record was not a Body record" << std::endl;
616 }
617 break;
619 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode warning: previous record was not a Body record" << std::endl; }
620 break;
624 std::cout << " RPCRODDecode (CMFooter3) warning: previous record was not a Body record" << std::endl;
625 }
626 break;
628 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
629 break;
631 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA fragment expected" << std::endl; }
632 break;
634 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA Footer expected" << std::endl; }
635 break;
637 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
638 break;
639 default:
640 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode ERROR in previousRecord" << std::endl; }
641 }
643
644
645
646
648
649
650
651 thereIsACM = false;
653
658 std::cout << " RPCRODDecode Fragment problem: CM SubHeader expected and (reserved) found" << std::endl;
659 }
660 thereIsACM = true;
661 CMRO.writeRecord(inword,
true);
662
663 break;
665 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CM Body expected and (reserved) found" << std::endl; }
666 thereIsACM = true;
667 CMRO.writeRecord(inword,
true);
668
669 break;
672 std::cout << " RPCRODDecode Fragment problem: CM Body or Footer expected and (reserved) found" << std::endl;
673 }
674 thereIsACM = true;
675 CMRO.writeRecord(inword,
true);
676
677 break;
680 std::cout << " RPCRODDecode Fragment problem: CM Header or Pad Footer expected and (reserved) found" << std::endl;
681 }
682 break;
684 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: PadSubHeader expected" << std::endl; }
685 break;
687 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA fragment expected" << std::endl; }
688 break;
690 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: CMA Footer expected" << std::endl; }
691 break;
693 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode Fragment problem: Pad PreFooter expected" << std::endl; }
694 break;
695 default:
696 if (
m_enablePrintOut) { std::cout <<
" RPCRODDecode ERROR in previousRecord " << std::endl; }
697 }
699
700 }
701 int answer = 0;
702 if (thereIsACM) answer = 1;
703 if (thereIsASL) answer = 2;
704 return answer;
705}
SectorLogicReadOutStructure SLROS
PadReadOutStructure PDROS