173 uint32_t nbRobPerComp = 2;
178 L_(debug) <<
"============================================================";
179 L_(debug) <<
"================== TOF Mapping =============================";
182 for (uint32_t uGbtx = 0; uGbtx < pars.
NCrobs(); ++uGbtx) {
185 const auto& crob = pars.
crobs.at(uGbtx);
186 switch (crob.rpcType) {
211 case 7: [[fallthrough]];
214 if ((pars.
eqIds[uGdpb] & 0xF000) == 0xB000) {
224 if ((pars.
eqIds[uGdpb] & 0xF000) == 0xB000) {
247 L_(warning) <<
" Found unused GBTX link at uCh = " << uCh;
252 L_(error) <<
"Invalid Tof Type specifier for GBTx " << std::setw(2) << uGbtx <<
": " << crob.rpcType;
257 throw FatalError(
"Tof mapping error for Gbtx {}, diff = {}, type {}", uGbtx, uCh - uCh0, crob.rpcType);
260 L_(debug) <<
" Map for CROB " << uGbtx;
261 std::vector<int32_t> vAddrBunch(8, -1);
262 for (uint32_t uChPrint = uCh0; uChPrint < uCh; ++uChPrint) {
264 if (7 == uChPrint % 8) {
265 L_(debug) << std::hex << std::setfill(
'0') <<
"0x" << std::setw(8) << vAddrBunch[0] <<
" 0x" << std::setw(8)
266 << vAddrBunch[1] <<
" 0x" << std::setw(8) << vAddrBunch[2] <<
" 0x" << std::setw(8) << vAddrBunch[3]
267 <<
" 0x" << std::setw(8) << vAddrBunch[4] <<
" 0x" << std::setw(8) << vAddrBunch[5] <<
" 0x"
268 << std::setw(8) << vAddrBunch[6] <<
" 0x" << std::setw(8) << vAddrBunch[7] << std::dec;
276 L_(debug) << std::hex << std::setfill(
'0') <<
"0x" << std::setw(8) << vAddrBunch[0] << std::dec;
280 L_(debug) << std::hex << std::setfill(
'0') <<
"0x" << std::setw(8) << vAddrBunch[0] <<
" 0x" << std::setw(8)
281 << vAddrBunch[1] << std::dec;
285 L_(debug) << std::hex << std::setfill(
'0') <<
"0x" << std::setw(8) << vAddrBunch[0] <<
" 0x" << std::setw(8)
286 << vAddrBunch[1] <<
" 0x" << std::setw(8) << vAddrBunch[2] << std::dec;
290 L_(debug) << std::hex << std::setfill(
'0') <<
"0x" << std::setw(8) << vAddrBunch[0] <<
" 0x" << std::setw(8)
291 << vAddrBunch[1] <<
" 0x" << std::setw(8) << vAddrBunch[2] <<
" 0x" << std::setw(8) << vAddrBunch[3]
296 L_(debug) << std::hex << std::setfill(
'0') <<
"0x" << std::setw(8) << vAddrBunch[0] <<
" 0x" << std::setw(8)
297 << vAddrBunch[1] <<
" 0x" << std::setw(8) << vAddrBunch[2] <<
" 0x" << std::setw(8) << vAddrBunch[3]
298 <<
" 0x" << std::setw(8) << vAddrBunch[4] << std::dec;
302 L_(debug) << std::hex << std::setfill(
'0') <<
"0x" << std::setw(8) << vAddrBunch[0] <<
" 0x" << std::setw(8)
303 << vAddrBunch[1] <<
" 0x" << std::setw(8) << vAddrBunch[2] <<
" 0x" << std::setw(8) << vAddrBunch[3]
304 <<
" 0x" << std::setw(8) << vAddrBunch[4] <<
" 0x" << std::setw(8) << vAddrBunch[5] << std::dec;
308 L_(debug) << std::hex << std::setfill(
'0') <<
"0x" << std::setw(8) << vAddrBunch[0] <<
" 0x" << std::setw(8)
309 << vAddrBunch[1] <<
" 0x" << std::setw(8) << vAddrBunch[2] <<
" 0x" << std::setw(8) << vAddrBunch[3]
310 <<
" 0x" << std::setw(8) << vAddrBunch[4] <<
" 0x" << std::setw(8) << vAddrBunch[5] <<
" 0x"
311 << std::setw(8) << vAddrBunch[6] << std::dec;
317 L_(debug) <<
"============================================================";
388 L_(debug) <<
" Map CERN 20 gap at GBTX - uCh = " << uCh;
390 const int32_t StrMap[32] = {0, 1, 2, 3, 4, 31, 5, 6, 7, 30, 8,
391 9, 10, 29, 11, 12, 13, 14, 28, 15, 16, 17,
392 18, 27, 26, 25, 24, 23, 22, 21, 20, 19};
394 int32_t iModuleId = 0;
395 int32_t iModuleType = 7;
397 for (int32_t iFeet = 0; iFeet < 2; iFeet++) {
398 for (int32_t iStr = 0; iStr < 32; iStr++) {
399 int32_t iStrMap = 31 - 12 - StrMap[iStr];
400 int32_t iSideMap = iFeet;
408 L_(debug) <<
" Map end CERN 20 gap at GBTX - uCh = " << uCh;
485 if (crob.
rpcSide < 2) NrFeet = 1;
487 for (; iFeet < NrFeet; iFeet++) {
488 for (int32_t iStr = 0; iStr < 32; iStr++) {
489 int32_t iStrMap = iStr;
490 int32_t iRpcMap = crob.
nRPC;
491 int32_t iSideMap = crob.
rpcSide;
499 if (iSideMap == 0) iStrMap = 31 - iStr;
510 for (int32_t iStr = 0; iStr < 32; iStr++) {
522 for (int32_t iFeet = 0; iFeet < 5; iFeet++) {
523 for (int32_t iStr = 0; iStr < 32; iStr++) {
525 case 0: iSideMap = -1;
break;
560 const int ConOff[8] = {0, 2, 4, 6, 7, 1, 3, 5};
561 for (int32_t iFeet = 0; iFeet < 5; iFeet++) {
562 for (int32_t iStr = 0; iStr < 32; iStr++) {
564 case 0: iSideMap = -1;
break;
567 iStrMap = 3 - iStr % 4 + 4 * ConOff[iStr / 4];
572 iStrMap = 3 - iStr % 4 + 4 * ConOff[iStr / 4];
577 iStrMap = 3 - iStr % 4 + 4 * ConOff[iStr / 4];
582 iStrMap = 3 - iStr % 4 + 4 * ConOff[iStr / 4];
599 const int ConOff[8] = {0, 2, 4, 6, 7, 1, 3, 5};
600 for (int32_t iFeet = 0; iFeet < 5; iFeet++) {
601 for (int32_t iStr = 0; iStr < 32; iStr++) {
603 case 0: iSideMap = -1;
break;
606 iStrMap = 3 - iStr % 4 + 4 * ConOff[iStr / 4];
607 iStrMap = 31 - iStrMap;
612 iStrMap = 3 - iStr % 4 + 4 * ConOff[iStr / 4];
613 iStrMap = 31 - iStrMap;
618 iStrMap = 3 - iStr % 4 + 4 * ConOff[iStr / 4];
619 iStrMap = 31 - iStrMap;
624 iStrMap = 3 - iStr % 4 + 4 * ConOff[iStr / 4];
625 iStrMap = 31 - iStrMap;
644 int32_t iModuleIdMap = crob.
moduleId;
645 const int32_t iRpc[5] = {0, -1, 0, 1, 1};
646 const int32_t iSide[5] = {1, -1, 0, 1, 0};
647 for (int32_t iFeet = 0; iFeet < 5; iFeet++) {
648 for (int32_t iStr = 0; iStr < 32; iStr++) {
649 int32_t iStrMap = iStr;
650 int32_t iRpcMap = iRpc[iFeet];
651 int32_t iSideMap = iSide[iFeet];
656 iRpcMap = 1 - iRpcMap;
660 iSideMap = 1 - iSideMap;
663 const int ConOff[8] = {0, 2, 4, 6, 7, 1, 3, 5};
665 case 0: iSideMap = -1;
break;
668 iStrMap = 3 - iStr % 4 + 4 * ConOff[iStr / 4];
673 iStrMap = 3 - iStr % 4 + 4 * ConOff[iStr / 4];
678 iStrMap = 3 - iStr % 4 + 4 * ConOff[iStr / 4];
683 iStrMap = 3 - iStr % 4 + 4 * ConOff[iStr / 4];
689 iRpcMap = 1 - iRpcMap;
692 iRpcMap = 1 - iRpcMap;
693 iSideMap = 1 - iSideMap;
701 case 0: iRpcMap = 0;
break;
702 case 1: iRpcMap = 1;
break;
711 case 3: iSideMap = 0;
break;
713 case 2: iSideMap = 1;
break;
726 else if (23 == iStr) {
737 const int32_t iChMap[160]={
738 124, 125, 126, 127, 12, 13, 14, 15, 4, 5, 6, 7, 28, 29, 30, 31, 120, 121, 122, 123, 8, 9, 10, 11, 104, 105, 106, 107, 108, 109, 110, 111,
739 36, 37, 38, 39, 52, 53, 54, 55, 60, 61, 62, 63, 128, 129, 130, 131, 40, 41, 42, 43, 148, 149, 150, 151, 56, 57, 58, 59, 132, 133, 134, 135,
740 136, 137, 138, 139, 140, 141, 142, 143, 96, 97, 98, 99, 64, 65, 66, 67, 100, 101, 102, 103, 84, 85, 86, 87, 152, 153, 154, 155, 68, 69, 70, 71,
741 156, 157, 158, 159, 144, 145, 146, 147, 44, 45, 46, 47, 76, 77, 78, 79, 48, 49, 50, 51, 20, 21, 22, 23, 32, 33, 34, 35, 116, 117, 118, 119,
742 75, 74, 73, 72, 92, 93, 94, 95, 16, 17, 18, 19, 80, 81, 82, 83, 115, 114, 113, 112, 24, 25, 26, 27, 88, 89, 90, 91, 0, 1, 2, 3
745 int32_t iInd = iFeet * 32 + iStr;
748 if (iInd == iChMap[i])
break;
750 int32_t iFeetInd = (i - iStrMap) / 32;
768 case 4: iSideMap = -1;
break;