8 #include "GaudiKernel/MsgStream.h"
13 OfflineOnlineMap::const_iterator
it =
m_RDOmap.find(compactID);
16 if (!
index)
return false;
21 if (hashID >=
m_HashVec.size())
return false;
23 if (!
index)
return false;
29 OfflineOnlineMap::const_iterator
it =
m_RDOmap.find(compactID);
32 if (!
index)
return false;
37 if (hashID >=
m_HashVec.size())
return false;
39 if (!
index)
return false;
45 OfflineOnlineMap::const_iterator
it =
m_RDOmap.find(compactID);
48 if (!
index)
return false;
53 if (hashID >=
m_HashVec.size())
return false;
55 if (!
index)
return false;
61 OfflineOnlineMap::const_iterator
it =
m_RDOmap.find(compactID);
64 if (!
index)
return false;
69 if (hashID >=
m_HashVec.size())
return false;
71 if (!
index)
return false;
77 OfflineOnlineMap::const_iterator
it =
m_RDOmap.find(compactID);
80 if (!
index)
return false;
85 if (hashID >=
m_HashVec.size())
return false;
87 if (!
index)
return false;
93 OfflineOnlineMap::const_iterator
it =
m_RDOmap.find(compactID);
96 if (!
index)
return false;
101 if (hashID >=
m_HashVec.size())
return false;
103 if (!
index)
return false;
119 std::map<Identifier, int>::const_iterator
it =
m_lookup.find(
id);
120 if (
it !=
m_lookup.end()) {
return (*it).second; }
131 if ((subsystem_id != 0x66 && subsystem_id != 0x65) || (rod_id >= 16))
return std::vector<IdentifierHash>();
132 return m_rod2hash[(subsystem_id == 0x66) ? 0 : 1][rod_id];
136 unsigned short int side;
137 unsigned short int RODid;
141 return (sub << 16) |
rod;
148 unsigned int hash = (
unsigned int)rdoHashId;
150 if (
hash >=
m_HashVec.size()) {
return StatusCode::FAILURE; }
155 robId = (
side << 16) | rob_id;
168 robIdVec.push_back(robid);
172 std::sort(robIdVec.begin(), robIdVec.end());
173 robIdVec.erase(unique(robIdVec.begin(), robIdVec.end()), robIdVec.end());
179 const int cabling_code)
const {
186 int doubletZ,
int doubletPhi,
int gasGap,
int measuresPhi,
int strip)
const {
187 unsigned long int code = 0;
189 unsigned long int etaPhiView = 2;
192 int logicSector = (phi1_16 - 1) * 2 +
doubletPhi - 2;
193 if (logicSector < 0) logicSector = 31;
194 if (measuresPhi > 0) etaPhiView = 1;
197 unsigned long int cabStat =
doubletR;
199 cabStat = 2 + cabStat;
200 if (cabStat > 3) cabStat = 2;
206 if (
stationName.substr(0,3)==
"BIS" && logicSector>31) logicSector+=1;
208 if (logicSector < 0 || logicSector > 63) {
return 999999; }
211 if (zIndexInCablingStation > 99)
return 0;
212 int cablingStation = cabStat;
214 unsigned long int gg =
gasGap - 1;
221 int zIndexInCablingStation,
int strip) {
222 unsigned long int code = 0;
223 code = etaPhiView * 100000000 + logicSector * 1000000 + cablingStation * 100000 +
gasGap * 10000 + zIndexInCablingStation * 100 +
230 if (stName ==
"BML" ||
240 int doubletR,
int doubletZ,
int cabStat)
const {
241 unsigned int zIndexInCablingStation = 999;
242 int cablingStation = -1;
245 if (sectType < 1 || sectType >
m_MaxType + 1) {
return 99999; }
248 for (
unsigned int jStat = 1; jStat < 4; ++jStat) {
249 if (cablingStation != -1)
break;
250 for (
unsigned int jCham = 0; jCham < 20; ++jCham) {
252 if (rpcC ==
nullptr)
continue;
257 if (rpcC->
doubletZ() != doubletZ) {
continue; }
258 cablingStation = jStat;
259 zIndexInCablingStation = jCham;
263 if (cablingStation < 1 || cablingStation > 3 || (cabStat != cablingStation)) {
return 99999; }
264 if (zIndexInCablingStation > 19) {
return 99999; }
266 return zIndexInCablingStation;
270 unsigned short int PADId,
unsigned short int CMAId,
unsigned short ijk,
272 std::list<unsigned int> CodeList;
274 int logic_sector = SectorId + SubsystemId * 32;
275 unsigned short int Ixx = CMAId & 1;
276 unsigned short int ep = (CMAId >> 1) & 1;
277 unsigned short int lh = (CMAId >> 2) & 1;
279 ep = (ep == 1) ? 0 : 1;
288 CodeList =
s.give_strip_code(
PHI, logic_sector,
lh, ijk,
Channel);
291 CodeList =
s.give_strip_code(
ETA, logic_sector,
lh, ijk,
Channel);
294 std::list<RPCofflineId> offlineIdList;
295 std::list<unsigned int>::const_iterator
it = CodeList.begin();
296 while (
it != CodeList.end()) {
300 int RPC_strip =
decode.strip_number();
301 int RPC_chamber =
decode.rpc_z_index();
302 int RPC_layer =
decode.rpc_layer();
303 int RPC_station =
decode.lvl1_station();
304 int sector = (
decode.logic_sector()) % 32;
310 rpcId.
stationPhi = (sector == 31) ? 1 : (sector + 1) / 4 + 1;
314 rpcId.
gasGap = RPC_layer + 1;
316 rpcId.
strip = RPC_strip + 1;
318 offlineIdList.push_back(rpcId);
323 std::list<Identifier>
ids;
324 std::list<RPCofflineId>::const_iterator
iterator = offlineIdList.begin();
325 while (
iterator != offlineIdList.end()) {
327 rpcId->
channelID((*iterator).stationName, (*iterator).stationEta, (*iterator).stationPhi, (*iterator).doubletR,
328 (*iterator).doubletZ, (*iterator).doubletPhi, (*iterator).gasGap, (*iterator).measuresPhi, (*iterator).strip);
345 for (
IdentifierHash rdoId : (*it).second) rdoHashVec.push_back(rdoId);
351 std::vector<IdentifierHash>& rdoHashVec)
const {
355 std::set<IdentifierHash> requestedRdoHashSet;
362 requestedRdoHashSet.insert((*it).second.begin(), (*it).second.end());
366 for (
IdentifierHash rdoHashId : requestedRdoHashSet) { rdoHashVec.push_back(rdoHashId); }
375 std::set<IdentifierHash> requestedRdoHashSet;
382 requestedRdoHashSet.insert((*it).second.begin(), (*it).second.end());
386 for (
IdentifierHash rdoHashId : requestedRdoHashSet) { rdoHashVec.push_back(rdoHashId); }
400 for (
uint32_t robId : (*it).second) robIdVec.push_back(robId);
406 unsigned short int& cma_mask,
unsigned short int& feet_th0,
unsigned short int& feet_th1,
407 unsigned short int& feet_th2)
const {
421 unsigned int& padIdHash)
const {
422 unsigned short int PADId = (RoIId) / 4;
424 int key = SubsystemId * 10000 + SectorId * 100 + PADId;
428 if (
it ==
m_RDOs.end())
return false;
433 padIdHash =
index.hash();
441 unsigned int EtaLowBorder = 0;
442 unsigned int EtaHighBorder = 0;
443 unsigned int PhiLowBorder = 0;
444 unsigned int PhiHighBorder = 0;
445 bool ok =
give_RoI_borders(SubsystemId, SectorId, RoIId, EtaLowBorder, EtaHighBorder, PhiLowBorder, PhiHighBorder);
457 unsigned int& EtaLowBorder,
unsigned int& EtaHighBorder,
unsigned int& PhiLowBorder,
458 unsigned int& PhiHighBorder)
const {
459 int logic_sector = SectorId + SubsystemId * 32;
460 int PadId = (RoIId) / 4;
461 int PadRoI = (RoIId) % 4;
462 int PhiIxx = PadRoI / 2;
463 int EtaIxx = PadRoI % 2;
472 if (!
s.give_RoI_borders(
ETA,
PHI, EtaLowBorder, EtaHighBorder, PhiLowBorder, PhiHighBorder)) {
474 if (
log.level() <= MSG::WARNING)
476 <<
"give_RoI_borders() - failed to call give_RoI_borders() on SectorLogicSetup, borders not set, return false..." <<
endmsg;
480 EtaLowBorder += logic_sector * 1000000;
481 EtaHighBorder += logic_sector * 1000000;
482 PhiLowBorder += logic_sector * 1000000;
483 PhiHighBorder += logic_sector * 1000000;
492 if (rpc_strip.
strip > 48) rpc_strip.
strip = 48;
497 if (rpc_strip.
strip > 36) rpc_strip.
strip = 36;
508 if (!
decode) {
return rpcId; }
509 int RPC_logic_sector =
decode.logic_sector();
510 int RPC_strip =
decode.strip_number();
511 int RPC_chamber =
decode.rpc_z_index();
512 int RPC_layer =
decode.rpc_layer();
513 int RPC_station =
decode.lvl1_station();
514 int sector = (
decode.logic_sector()) % 32;
523 rpcId.
stationPhi = (sector == 31) ? 1 : (sector + 1) / 4 + 1;
527 rpcId.
gasGap = RPC_layer + 1;
529 rpcId.
strip = RPC_strip + 1;
535 unsigned int& EtaLowBorder,
unsigned int& EtaHighBorder,
unsigned int& PhiLowBorder,
536 unsigned int& PhiHighBorder)
const {
537 int logic_sector = SectorId + SubsystemId * 32;
538 int PadId = (RoIId) / 4;
539 int PadRoI = (RoIId) % 4;
540 int PhiIxx = PadRoI / 2;
541 int EtaIxx = PadRoI % 2;
550 if (!
s.give_LowPt_borders(
ETA,
PHI, EtaLowBorder, EtaHighBorder, PhiLowBorder, PhiHighBorder)) {
565 if (EtaLowBorder == 0 || EtaHighBorder == 0 || PhiLowBorder == 0 || PhiHighBorder == 0)
return false;
567 EtaLowBorder += logic_sector * 1000000;
568 EtaHighBorder += logic_sector * 1000000;
569 PhiLowBorder += logic_sector * 1000000;
570 PhiHighBorder += logic_sector * 1000000;
578 unsigned int EtaLowBorder = 0;
579 unsigned int EtaHighBorder = 0;
580 unsigned int PhiLowBorder = 0;
581 unsigned int PhiHighBorder = 0;
582 bool ok =
give_LowPt_borders(SubsystemId, SectorId, RoIId, EtaLowBorder, EtaHighBorder, PhiLowBorder, PhiHighBorder);
593 unsigned int& EtaLowBorder,
unsigned int& EtaHighBorder,
unsigned int& PhiLowBorder,
594 unsigned int& PhiHighBorder)
const {
595 int logic_sector = SectorId + SubsystemId * 32;
596 int PadId = (RoIId) / 4;
597 int PadRoI = (RoIId) % 4;
598 int PhiIxx = PadRoI / 2;
599 int EtaIxx = PadRoI % 2;
608 if (!
s.give_HighPt_borders(
ETA,
PHI, EtaLowBorder, EtaHighBorder, PhiLowBorder, PhiHighBorder)) {
623 if (EtaLowBorder == 0 || EtaHighBorder == 0 || PhiLowBorder == 0 || PhiHighBorder == 0)
return false;
625 EtaLowBorder += logic_sector * 1000000;
626 EtaHighBorder += logic_sector * 1000000;
627 PhiLowBorder += logic_sector * 1000000;
628 PhiHighBorder += logic_sector * 1000000;
636 unsigned int EtaLowBorder = 0;
637 unsigned int EtaHighBorder = 0;
638 unsigned int PhiLowBorder = 0;
639 unsigned int PhiHighBorder = 0;
640 bool ok =
give_HighPt_borders(SubsystemId, SectorId, RoIId, EtaLowBorder, EtaHighBorder, PhiLowBorder, PhiHighBorder);
659 if (
side >= 2)
return false;
660 if (sector >= 32)
return false;
661 if (padId >= 10)
return false;