ATLAS Offline Software
MDT_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 "MDT_Hid2RESrcID.h"
6 
8 #include "GaudiKernel/Bootstrap.h"
9 #include "GaudiKernel/IMessageSvc.h"
10 #include "GaudiKernel/ISvcLocator.h"
11 #include "GaudiKernel/MsgStream.h"
12 #include "StoreGate/StoreGateSvc.h"
13 #include "eformat/SourceIdentifier.h"
14 
15 using eformat::helper::SourceIdentifier;
16 
17 // implementation of RpcPad to RESrcID conversion.
18 // Ketevi A. Assamagan
19 // Jan-16-2003, BNL
20 //
21 // adapted for MdtCms by Michela Biglietti <biglietti@na.infn.it>
22 
23 MDT_Hid2RESrcID::MDT_Hid2RESrcID() : m_mdtIdHelper(nullptr), m_specialROBNumber(0), m_readKey("MuonMDT_CablingMap") {}
24 
26  // Initialize the cabling Service
27  m_mdtIdHelper = mdtId;
29  return StatusCode::SUCCESS;
30 }
31 
33  // this method returns a RESrcID for the ROD, for a
34  // given MDT ID offline ID
35 
36  IMessageSvc* msgSvc = nullptr;
37  ISvcLocator* svcLocator = Gaudi::svcLocator();
38  StatusCode sc = svcLocator->service("MessageSvc", msgSvc);
39  if (sc == StatusCode::FAILURE) throw std::runtime_error("Unable to get MessageSvc");
40 
41  MsgStream log(msgSvc, "MDT_Hid2RESrcID::getRodID");
42 
43  log << MSG::DEBUG << "Getting RODId of the Station " << MSG::hex << offlineId << MSG::dec << endmsg;
44 
46  const MuonMDT_CablingMap* readCdo{*readHandle};
47  if (!readCdo) {
48  // ATH_MSG_ERROR("Null pointer to the read conditions object");
49  log << MSG::ERROR << "Null pointer to the read conditions object" << endmsg;
50  return 0;
51  }
53  if (!readCdo->convert(offlineId, cabling_data)) {
54  log << MSG::ERROR << " Invalid identifier given " << endmsg;
55  return 0;
56  }
57  bool online = readCdo->getOnlineId(cabling_data, log);
58 
59  if (!online) {
60  log << MSG::DEBUG << "ROD Id of the Station " << MSG::hex << "0x" << offlineId << " not found" << endmsg;
61  cabling_data.mrod = 0xff;
62  } else {
63  log << MSG::DEBUG << "The ROD ID of the station "
64  << "is " << MSG::hex << "0x" << cabling_data.mrod << MSG::dec << endmsg;
65  }
66 
67  eformat::SubDetector detid = (eformat::SubDetector)cabling_data.subdetectorId;
68 
69  // if (SubsystemId == eformat::MUON_MDT_BARREL_A_SIDE) {
70  // detid = eformat::MUON_MDT_BARREL_A_SIDE;
71  //}
72  // else if (SubsystemId == eformat::MUON_MDT_BARREL_C_SIDE) {
73  // detid = eformat::MUON_MDT_BARREL_C_SIDE;
74  //}
75  // else if (SubsystemId == eformat::MUON_MDT_ENDCAP_A_SIDE) {
76  // detid = eformat::MUON_MDT_ENDCAP_A_SIDE;
77  //}
78  // else if (SubsystemId == eformat::MUON_MDT_ENDCAP_C_SIDE) {
79  // detid = eformat::MUON_MDT_ENDCAP_C_SIDE;
80  //}
81 
82  // uint8_t m = (uint8_t) MrodId;
83  SourceIdentifier sid(detid, cabling_data.mrod);
84 
85  uint32_t rod_id = sid.code();
86 
87  return rod_id;
88 }
89 
93  SourceIdentifier id = SourceIdentifier(rod_id);
94  SourceIdentifier id2 = SourceIdentifier(id.subdetector_id(), id.module_id());
95  // return id2.code();
96 
97  // FIXME ! the rob ID in the first data taken is wrong !
98  // return 0x610003;
99 
100  // After data will be fixed the correct version should be:
101  return rod_id;
102 }
103 
107  // Change Module Type to ROS, moduleid = 0
108 
109  SourceIdentifier id(rob_id);
110  SourceIdentifier id2(id.subdetector_id(), 0);
111  return id2.code();
112 }
113 
117  // ROS to DET
118 
119  SourceIdentifier id(ros_id);
120  SourceIdentifier id2(id.subdetector_id(), 0);
121  return id2.code();
122 }
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
MDT_Hid2RESrcID::MDT_Hid2RESrcID
MDT_Hid2RESrcID()
constrcutor
Definition: MDT_Hid2RESrcID.cxx:23
MDT_Hid2RESrcID::getDetID
static uint32_t getDetID(uint32_t ros_id)
Make a SubDetector ID from ROS source ID.
Definition: MDT_Hid2RESrcID.cxx:116
createCablingJSON.cabling_data
dictionary cabling_data
Definition: createCablingJSON.py:18
MDT_Hid2RESrcID::getRobID
static uint32_t getRobID(uint32_t rod_id)
Make a ROB Source ID from a ROD source ID.
Definition: MDT_Hid2RESrcID.cxx:92
MDT_Hid2RESrcID::set
StatusCode set(const MdtIdHelper *mdtId)
intialize the cabling service
Definition: MDT_Hid2RESrcID.cxx:25
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
AtlasDetectorID.h
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
TileSynchronizeBch.online
online
Definition: TileSynchronizeBch.py:88
MuonMDT_CablingMap
Definition: MuonMDT_CablingMap.h:24
id2
HWIdentifier id2
Definition: LArRodBlockPhysicsV0.cxx:564
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MdtIdHelper
Definition: MdtIdHelper.h:61
MDT_Hid2RESrcID::m_readKey
SG::ReadCondHandleKey< MuonMDT_CablingMap > m_readKey
Definition: MDT_Hid2RESrcID.h:63
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MdtCablingData
Definition: MdtCablingData.h:82
MDT_Hid2RESrcID::getRodID
uint32_t getRodID(const Identifier &offlineId) const
Definition: MDT_Hid2RESrcID.cxx:32
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:194
MDT_Hid2RESrcID::getRosID
static uint32_t getRosID(uint32_t rob_id)
Make a ROS Source ID from a ROB source ID.
Definition: MDT_Hid2RESrcID.cxx:106
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
MDT_Hid2RESrcID.h
DEBUG
#define DEBUG
Definition: page_access.h:11
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
StoreGateSvc.h
MDT_Hid2RESrcID::m_mdtIdHelper
const MdtIdHelper * m_mdtIdHelper
Definition: MDT_Hid2RESrcID.h:59