ATLAS Offline Software
RPC_Hid2RESrcID.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "RPC_Hid2RESrcID.h"
6 
7 #include <cassert>
8 #include <stdexcept>
9 
10 #include "eformat/SourceIdentifier.h"
11 
12 using eformat::helper::SourceIdentifier;
13 
14 // implementation of RpcPad to RESrcID conversion.
15 // Ketevi A. Assamagan
16 // Jan-16-2003, BNL
17 
18 RPC_Hid2RESrcID::RPC_Hid2RESrcID() : m_rpcIdHelper(nullptr), m_specialROBNumber(-1) {}
19 
20 RPC_Hid2RESrcID::RPC_Hid2RESrcID(int specialROBNumber) : m_rpcIdHelper(nullptr), m_specialROBNumber(specialROBNumber) {}
21 
22 void RPC_Hid2RESrcID::set(const RpcIdHelper* rpdId) { m_rpcIdHelper = rpdId; }
23 
24 // This method is used by the RDO converter only
25 uint32_t RPC_Hid2RESrcID::getRodID(const Identifier& offlineId, const RpcCablingCondData* readCdo) const {
26  // this method returns a RESrcID for the ROD, for a
27  // given RPC pad ID offline ID
28 
29  unsigned short int RODid;
30  unsigned short int Iside;
31  unsigned short int SLid;
32 
33  if (readCdo->give_RODid(offlineId, RODid) && readCdo->give_side(offlineId, Iside) && readCdo->give_SLid(offlineId, SLid)) {
34  uint8_t rodIndex = (uint8_t)RODid;
35  uint16_t side = Iside;
36 
37  eformat::SubDetector detid =
38  (side == eformat::MUON_RPC_BARREL_A_SIDE) ? eformat::MUON_RPC_BARREL_A_SIDE : eformat::MUON_RPC_BARREL_C_SIDE;
39 
40  SourceIdentifier sid(detid, rodIndex);
41  uint32_t rod_id = sid.code();
42 
43  // TEMP FIXME temp fix for the sector 13 pulse tests ---- added fix for M3
44  if ((m_specialROBNumber > 0)) {
45  if (side == 0x65 && (SLid == 23 || SLid == 24)) {
46  // rod_id=0x650001;
47  rod_id = m_specialROBNumber;
48  } else if (side == 0x65 && SLid == 7) {
49  rod_id = 0x650001;
50  } else if (side == 0x65 && SLid == 8) {
51  rod_id = 0x650002;
52  if (m_specialROBNumber == 0x650001) rod_id = 0x650001; // fix for M3 with runnumber up to 11533 (SFI)
53  } else {
54  rod_id = 0xffffffff;
55  }
56  }
57 
58  return rod_id;
59  }
60 
61  return 0xffffffff;
62 }
63 
64 uint32_t RPC_Hid2RESrcID::getRodID(const int& side, const int& slogic, const int& padId, const RpcCablingCondData* readCdo) {
65  // this method returns a RESrcID for the ROD, for a given RPC pad ID
66  const RpcCablingCondData::RDOmap& pad_map = readCdo->give_RDOs();
67  int key = side * 10000 + slogic * 100 + padId;
68  RDOindex index = (*pad_map.find(key)).second;
69  uint8_t rodIndex = (uint8_t)index.RODid();
70 
71  eformat::SubDetector detid = (side == 1) ? eformat::MUON_RPC_BARREL_A_SIDE : eformat::MUON_RPC_BARREL_C_SIDE;
72 
73  SourceIdentifier sid(detid, rodIndex);
74  uint32_t rod_id = sid.code();
75 
76  return rod_id;
77 }
78 
79 uint32_t RPC_Hid2RESrcID::getRodID(const int& sector) {
80  // this method returns a RESrcID for the ROD, for a given RPC pad ID
81  uint8_t rodIndex = (uint8_t)((sector % 32) / 2);
82  int side = (sector < 32) ? 0 : 1;
83 
84  eformat::SubDetector detid = (side == 1) ? eformat::MUON_RPC_BARREL_A_SIDE : eformat::MUON_RPC_BARREL_C_SIDE;
85 
86  SourceIdentifier sid(detid, rodIndex);
87  uint32_t rod_id = sid.code();
88 
89  return rod_id;
90 }
91 
93  // this method returns a RESrcID for the ROD, for a given RPC pad ID
94  eformat::SubDetector detid = (side == 1) ? eformat::MUON_RPC_BARREL_A_SIDE : eformat::MUON_RPC_BARREL_C_SIDE;
95  SourceIdentifier sid(detid, rodIndex);
96  uint32_t rod_id = sid.code();
97  return rod_id;
98 }
99 
102 uint32_t RPC_Hid2RESrcID::getRobID(const uint32_t rod_id) { return rod_id; }
103 
107  // Change Module Type to ROS, moduleid = 0
108  SourceIdentifier id(rob_id);
109  SourceIdentifier id2(id.subdetector_id(), 0);
110  return id2.code();
111 }
112 
116  // ROS to DET
117  SourceIdentifier id(ros_id);
118  SourceIdentifier id2(id.subdetector_id(), 0);
119  return id2.code();
120 }
RPC_Hid2RESrcID::m_specialROBNumber
int m_specialROBNumber
Definition: RPC_Hid2RESrcID.h:38
RPC_Hid2RESrcID::getRobID
static uint32_t getRobID(const uint32_t rod_id)
mapping SrcID from ROD to ROB (called in ByteStreamCnvSvcBase/FullEventAssembler.icc)
Definition: RPC_Hid2RESrcID.cxx:102
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
RPC_Hid2RESrcID.h
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
index
Definition: index.py:1
RpcCablingCondData::give_RODid
bool give_RODid(const Identifier &compactID, unsigned short int &id) const
Definition: RpcCablingCondData.cxx:28
RpcIdHelper
Definition: RpcIdHelper.h:51
RpcCablingCondData
Definition: RpcCablingCondData.h:21
TRT::Hit::side
@ side
Definition: HitInfo.h:83
RpcCablingCondData::give_side
bool give_side(const Identifier &compactID, unsigned short int &id) const
Definition: RpcCablingCondData.cxx:44
RPC_Hid2RESrcID::getRosID
static uint32_t getRosID(const uint32_t rob_id)
mapping SrcID from ROB to ROS
Definition: RPC_Hid2RESrcID.cxx:106
id2
HWIdentifier id2
Definition: LArRodBlockPhysicsV0.cxx:564
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
RPC_Hid2RESrcID::RPC_Hid2RESrcID
RPC_Hid2RESrcID()
Definition: RPC_Hid2RESrcID.cxx:18
RPC_Hid2RESrcID::set
void set(const RpcIdHelper *rpdId)
Definition: RPC_Hid2RESrcID.cxx:22
RPC_Hid2RESrcID::getDetID
static uint32_t getDetID(const uint32_t ros_id)
mapping SrcID from ROS to Det
Definition: RPC_Hid2RESrcID.cxx:115
RpcCablingCondData::RDOmap
std::map< int, RDOindex, std::less< int > > RDOmap
Definition: RpcCablingCondData.h:25
RPC_Hid2RESrcID::m_rpcIdHelper
const RpcIdHelper * m_rpcIdHelper
Definition: RPC_Hid2RESrcID.h:36
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:191
RpcCablingCondData::give_SLid
bool give_SLid(const Identifier &compactID, unsigned short int &id) const
Definition: RpcCablingCondData.cxx:60
RPC_Hid2RESrcID::getRodID
uint32_t getRodID(const Identifier &offlineId, const RpcCablingCondData *readCdo) const
Definition: RPC_Hid2RESrcID.cxx:25
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
RDOindex
Definition: RDOindex.h:85
RpcCablingCondData::give_RDOs
const RDOmap & give_RDOs(void) const
Definition: RpcCablingCondData.cxx:10