9 #include "GaudiKernel/MsgStream.h" 
   14     OfflineOnlineMap::const_iterator 
it = 
m_RDOmap.find(compactID);
 
   17     if (!
index) 
return false;
 
   22     if (hashID >= 
m_HashVec.size()) 
return false;
 
   24     if (!
index) 
return false;
 
   30     OfflineOnlineMap::const_iterator 
it = 
m_RDOmap.find(compactID);
 
   33     if (!
index) 
return false;
 
   38     if (hashID >= 
m_HashVec.size()) 
return false;
 
   40     if (!
index) 
return false;
 
   46     OfflineOnlineMap::const_iterator 
it = 
m_RDOmap.find(compactID);
 
   49     if (!
index) 
return false;
 
   54     if (hashID >= 
m_HashVec.size()) 
return false;
 
   56     if (!
index) 
return false;
 
   62     OfflineOnlineMap::const_iterator 
it = 
m_RDOmap.find(compactID);
 
   65     if (!
index) 
return false;
 
   70     if (hashID >= 
m_HashVec.size()) 
return false;
 
   72     if (!
index) 
return false;
 
   78     OfflineOnlineMap::const_iterator 
it = 
m_RDOmap.find(compactID);
 
   81     if (!
index) 
return false;
 
   86     if (hashID >= 
m_HashVec.size()) 
return false;
 
   88     if (!
index) 
return false;
 
   94     OfflineOnlineMap::const_iterator 
it = 
m_RDOmap.find(compactID);
 
   97     if (!
index) 
return false;
 
  102     if (hashID >= 
m_HashVec.size()) 
return false;
 
  104     if (!
index) 
return false;
 
  120     std::map<Identifier, int>::const_iterator 
it = 
m_lookup.find(
id);
 
  121     if (
it != 
m_lookup.end()) { 
return (*it).second; }
 
  132     if ((subsystem_id != 0x66 && subsystem_id != 0x65) || (rod_id >= 16)) 
return std::vector<IdentifierHash>();
 
  133     return m_rod2hash[(subsystem_id == 0x66) ? 0 : 1][rod_id];
 
  137     unsigned short int side;
 
  138     unsigned short int RODid;
 
  142         return (sub << 16) | 
rod;
 
  149     unsigned int hash = (
unsigned int)rdoHashId;
 
  151     if (
hash >= 
m_HashVec.size()) { 
return StatusCode::FAILURE; }
 
  156     robId = (
side << 16) | rob_id;
 
  169         robIdVec.push_back(robid);
 
  173     std::sort(robIdVec.begin(), robIdVec.end());
 
  174     robIdVec.erase(unique(robIdVec.begin(), robIdVec.end()), robIdVec.end());
 
  180                                                            const int cabling_code)
 const {
 
  187                                                            int doubletZ, 
int doubletPhi, 
int gasGap, 
int measuresPhi, 
int strip)
 const {
 
  188     unsigned long int code = 0;
 
  190     unsigned long int etaPhiView = 2;
 
  193     int logicSector = (phi1_16 - 1) * 2 + 
doubletPhi - 2;
 
  194     if (logicSector < 0) logicSector = 31;
 
  195     if (measuresPhi > 0) etaPhiView = 1;
 
  198     unsigned long int cabStat = 
doubletR;
 
  200         cabStat = 2 + cabStat;
 
  201         if (cabStat > 3) cabStat = 2;  
 
  207     if (
stationName.substr(0,3)==
"BIS" && logicSector>31) logicSector+=1; 
 
  209     if (logicSector < 0 || logicSector > 63) { 
return 999999; }
 
  212     if (zIndexInCablingStation > 99) 
return 0;
 
  213     int cablingStation = cabStat;
 
  215     unsigned long int gg = 
gasGap - 1;
 
  222                                                              int zIndexInCablingStation, 
int strip) {
 
  223     unsigned long int code = 0;
 
  224     code = etaPhiView * 100000000 + logicSector * 1000000 + cablingStation * 100000 + 
gasGap * 10000 + zIndexInCablingStation * 100 +
 
  241                                                                int doubletR, 
int doubletZ, 
int cabStat)
 const {
 
  242     unsigned int zIndexInCablingStation = 999;
 
  243     int cablingStation = -1;
 
  246     if (sectType < 1 || sectType > 
m_MaxType + 1) { 
return 99999; }
 
  249     for (
unsigned int jStat = 1; jStat < 4; ++jStat) {
 
  250         if (cablingStation != -1) 
break;
 
  251         for (
unsigned int jCham = 0; jCham < 20; ++jCham) {
 
  253             if (rpcC == 
nullptr) 
continue;
 
  258             if (rpcC->
doubletZ() != doubletZ) { 
continue; }
 
  259             cablingStation = jStat;
 
  260             zIndexInCablingStation = jCham;
 
  264     if (cablingStation < 1 || cablingStation > 3 || (cabStat != cablingStation)) { 
return 99999; }
 
  265     if (zIndexInCablingStation > 19) { 
return 99999; }
 
  267     return zIndexInCablingStation;
 
  271                                                         unsigned short int PADId, 
unsigned short int CMAId, 
unsigned short ijk,
 
  273     std::list<unsigned int> CodeList;
 
  275     int logic_sector = SectorId + SubsystemId * 32;
 
  276     unsigned short int Ixx = CMAId & 1;
 
  277     unsigned short int ep = (CMAId >> 1) & 1;
 
  278     unsigned short int lh = (CMAId >> 2) & 1;
 
  280     ep = (ep == 1) ? 0 : 1;
 
  289         CodeList = 
s.give_strip_code(
PHI, logic_sector, 
lh, ijk, 
Channel);
 
  292         CodeList = 
s.give_strip_code(
ETA, logic_sector, 
lh, ijk, 
Channel);
 
  295     std::list<RPCofflineId> offlineIdList;
 
  296     std::list<unsigned int>::const_iterator 
it = CodeList.begin();
 
  297     while (
it != CodeList.end()) {
 
  301         int RPC_strip = 
decode.strip_number();
 
  302         int RPC_chamber = 
decode.rpc_z_index();
 
  303         int RPC_layer = 
decode.rpc_layer();
 
  304         int RPC_station = 
decode.lvl1_station();
 
  305         int sector = (
decode.logic_sector()) % 32;
 
  311         rpcId.
stationPhi = (sector == 31) ? 1 : (sector + 1) / 4 + 1;
 
  315         rpcId.
gasGap = RPC_layer + 1;
 
  317         rpcId.
strip = RPC_strip + 1;
 
  319         offlineIdList.push_back(std::move(rpcId));
 
  324     std::list<Identifier> 
ids;
 
  325     std::list<RPCofflineId>::const_iterator 
iterator = offlineIdList.begin();
 
  326     while (
iterator != offlineIdList.end()) {
 
  328             rpcId->
channelID((*iterator).stationName, (*iterator).stationEta, (*iterator).stationPhi, (*iterator).doubletR,
 
  329                              (*iterator).doubletZ, (*iterator).doubletPhi, (*iterator).gasGap, (*iterator).measuresPhi, (*iterator).strip);
 
  346     for (
IdentifierHash rdoId : (*it).second) rdoHashVec.push_back(rdoId);
 
  352                                                std::vector<IdentifierHash>& rdoHashVec)
 const {
 
  356     std::set<IdentifierHash> requestedRdoHashSet;
 
  363         requestedRdoHashSet.insert((*it).second.begin(), (*it).second.end());
 
  367     for (
IdentifierHash rdoHashId : requestedRdoHashSet) { rdoHashVec.push_back(rdoHashId); }
 
  376     std::set<IdentifierHash> requestedRdoHashSet;
 
  383         requestedRdoHashSet.insert((*it).second.begin(), (*it).second.end());
 
  387     for (
IdentifierHash rdoHashId : requestedRdoHashSet) { rdoHashVec.push_back(rdoHashId); }
 
  401     for (
uint32_t robId : (*it).second) robIdVec.push_back(robId);
 
  407                                              unsigned short int& cma_mask, 
unsigned short int& feet_th0, 
unsigned short int& feet_th1,
 
  408                                              unsigned short int& feet_th2)
 const {
 
  422                                           unsigned int& padIdHash)
 const {
 
  423     unsigned short int PADId = (RoIId) / 4;
 
  425     int key = SubsystemId * 10000 + SectorId * 100 + PADId;
 
  429     if (
it == 
m_RDOs.end()) 
return false;
 
  434     padIdHash = 
index.hash();
 
  442     unsigned int EtaLowBorder = 0;
 
  443     unsigned int EtaHighBorder = 0;
 
  444     unsigned int PhiLowBorder = 0;
 
  445     unsigned int PhiHighBorder = 0;
 
  446     bool ok = 
give_RoI_borders(SubsystemId, SectorId, RoIId, EtaLowBorder, EtaHighBorder, PhiLowBorder, PhiHighBorder);
 
  458                                           unsigned int& EtaLowBorder, 
unsigned int& EtaHighBorder, 
unsigned int& PhiLowBorder,
 
  459                                           unsigned int& PhiHighBorder)
 const {
 
  460     int logic_sector = SectorId + SubsystemId * 32;
 
  461     int PadId = (RoIId) / 4;
 
  462     int PadRoI = (RoIId) % 4;
 
  463     int PhiIxx = PadRoI / 2;
 
  464     int EtaIxx = PadRoI % 2;
 
  473     if (!
s.give_RoI_borders(
ETA, 
PHI, EtaLowBorder, EtaHighBorder, PhiLowBorder, PhiHighBorder)) {
 
  475         if (
log.level() <= MSG::WARNING)
 
  477                 << 
"give_RoI_borders() - failed to call give_RoI_borders() on SectorLogicSetup, borders not set, return false..." << 
endmsg;
 
  481     EtaLowBorder += logic_sector * 1000000;
 
  482     EtaHighBorder += logic_sector * 1000000;
 
  483     PhiLowBorder += logic_sector * 1000000;
 
  484     PhiHighBorder += logic_sector * 1000000;
 
  493             if (rpc_strip.
strip > 48) rpc_strip.
strip = 48;
 
  498             if (rpc_strip.
strip > 36) rpc_strip.
strip = 36;
 
  509     if (!
decode) { 
return rpcId; }
 
  510     int RPC_logic_sector = 
decode.logic_sector();
 
  511     int RPC_strip = 
decode.strip_number();
 
  512     int RPC_chamber = 
decode.rpc_z_index();
 
  513     int RPC_layer = 
decode.rpc_layer();
 
  514     int RPC_station = 
decode.lvl1_station();
 
  515     int sector = (
decode.logic_sector()) % 32;
 
  524     rpcId.
stationPhi = (sector == 31) ? 1 : (sector + 1) / 4 + 1;
 
  528     rpcId.
gasGap = RPC_layer + 1;
 
  530     rpcId.
strip = RPC_strip + 1;
 
  536                                             unsigned int& EtaLowBorder, 
unsigned int& EtaHighBorder, 
unsigned int& PhiLowBorder,
 
  537                                             unsigned int& PhiHighBorder)
 const {
 
  538     int logic_sector = SectorId + SubsystemId * 32;
 
  539     int PadId = (RoIId) / 4;
 
  540     int PadRoI = (RoIId) % 4;
 
  541     int PhiIxx = PadRoI / 2;
 
  542     int EtaIxx = PadRoI % 2;
 
  551     if (!
s.give_LowPt_borders(
ETA, 
PHI, EtaLowBorder, EtaHighBorder, PhiLowBorder, PhiHighBorder)) {
 
  566     if (EtaLowBorder == 0 || EtaHighBorder == 0 || PhiLowBorder == 0 || PhiHighBorder == 0) 
return false;
 
  568     EtaLowBorder += logic_sector * 1000000;
 
  569     EtaHighBorder += logic_sector * 1000000;
 
  570     PhiLowBorder += logic_sector * 1000000;
 
  571     PhiHighBorder += logic_sector * 1000000;
 
  579     unsigned int EtaLowBorder = 0;
 
  580     unsigned int EtaHighBorder = 0;
 
  581     unsigned int PhiLowBorder = 0;
 
  582     unsigned int PhiHighBorder = 0;
 
  583     bool ok = 
give_LowPt_borders(SubsystemId, SectorId, RoIId, EtaLowBorder, EtaHighBorder, PhiLowBorder, PhiHighBorder);
 
  594                                              unsigned int& EtaLowBorder, 
unsigned int& EtaHighBorder, 
unsigned int& PhiLowBorder,
 
  595                                              unsigned int& PhiHighBorder)
 const {
 
  596     int logic_sector = SectorId + SubsystemId * 32;
 
  597     int PadId = (RoIId) / 4;
 
  598     int PadRoI = (RoIId) % 4;
 
  599     int PhiIxx = PadRoI / 2;
 
  600     int EtaIxx = PadRoI % 2;
 
  609     if (!
s.give_HighPt_borders(
ETA, 
PHI, EtaLowBorder, EtaHighBorder, PhiLowBorder, PhiHighBorder)) {
 
  624     if (EtaLowBorder == 0 || EtaHighBorder == 0 || PhiLowBorder == 0 || PhiHighBorder == 0) 
return false;
 
  626     EtaLowBorder += logic_sector * 1000000;
 
  627     EtaHighBorder += logic_sector * 1000000;
 
  628     PhiLowBorder += logic_sector * 1000000;
 
  629     PhiHighBorder += logic_sector * 1000000;
 
  637     unsigned int EtaLowBorder = 0;
 
  638     unsigned int EtaHighBorder = 0;
 
  639     unsigned int PhiLowBorder = 0;
 
  640     unsigned int PhiHighBorder = 0;
 
  641     bool ok = 
give_HighPt_borders(SubsystemId, SectorId, RoIId, EtaLowBorder, EtaHighBorder, PhiLowBorder, PhiHighBorder);
 
  660     if (
side >= 2) 
return false;
 
  661     if (sector >= 32) 
return false;
 
  662     if (padId >= 10) 
return false;