ATLAS Offline Software
MDT_Hid2RESrcID.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "MDT_Hid2RESrcID.h"
6 
9 #include "GaudiKernel/Bootstrap.h"
10 #include "GaudiKernel/IMessageSvc.h"
11 #include "GaudiKernel/ISvcLocator.h"
12 #include "GaudiKernel/MsgStream.h"
13 #include "StoreGate/StoreGateSvc.h"
14 #include "eformat/SourceIdentifier.h"
15 
16 using eformat::helper::SourceIdentifier;
17 
18 // implementation of RpcPad to RESrcID conversion.
19 // Ketevi A. Assamagan
20 // Jan-16-2003, BNL
21 //
22 // adapted for MdtCms by Michela Biglietti <biglietti@na.infn.it>
23 
24 MDT_Hid2RESrcID::MDT_Hid2RESrcID() : m_mdtIdHelper(nullptr), m_specialROBNumber(0), m_readKey("MuonMDT_CablingMap") {}
25 
27  // Initialize the cabling Service
28  m_mdtIdHelper = mdtId;
30  return StatusCode::SUCCESS;
31 }
32 
34  // this method returns a RESrcID for the ROD, for a
35  // given MDT ID offline ID
36 
37  MsgStream log(Athena::getMessageSvc(), "MDT_Hid2RESrcID::getRodID");
38 
39  log << MSG::DEBUG << "Getting RODId of the Station " << MSG::hex << offlineId << MSG::dec << endmsg;
40 
42  const MuonMDT_CablingMap* readCdo{*readHandle};
43  if (!readCdo) {
44  // ATH_MSG_ERROR("Null pointer to the read conditions object");
45  log << MSG::ERROR << "Null pointer to the read conditions object" << endmsg;
46  return 0;
47  }
49  if (!readCdo->convert(offlineId, cabling_data)) {
50  log << MSG::ERROR << " Invalid identifier given " << endmsg;
51  return 0;
52  }
53  bool online = readCdo->getOnlineId(cabling_data, log);
54 
55  if (!online) {
56  log << MSG::DEBUG << "ROD Id of the Station " << MSG::hex << "0x" << offlineId << " not found" << endmsg;
57  cabling_data.mrod = 0xff;
58  } else {
59  log << MSG::DEBUG << "The ROD ID of the station "
60  << "is " << MSG::hex << "0x" << cabling_data.mrod << MSG::dec << endmsg;
61  }
62 
63  eformat::SubDetector detid = (eformat::SubDetector)cabling_data.subdetectorId;
64 
65  // if (SubsystemId == eformat::MUON_MDT_BARREL_A_SIDE) {
66  // detid = eformat::MUON_MDT_BARREL_A_SIDE;
67  //}
68  // else if (SubsystemId == eformat::MUON_MDT_BARREL_C_SIDE) {
69  // detid = eformat::MUON_MDT_BARREL_C_SIDE;
70  //}
71  // else if (SubsystemId == eformat::MUON_MDT_ENDCAP_A_SIDE) {
72  // detid = eformat::MUON_MDT_ENDCAP_A_SIDE;
73  //}
74  // else if (SubsystemId == eformat::MUON_MDT_ENDCAP_C_SIDE) {
75  // detid = eformat::MUON_MDT_ENDCAP_C_SIDE;
76  //}
77 
78  // uint8_t m = (uint8_t) MrodId;
79  SourceIdentifier sid(detid, cabling_data.mrod);
80 
81  uint32_t rod_id = sid.code();
82 
83  return rod_id;
84 }
85 
89  SourceIdentifier id = SourceIdentifier(rod_id);
90  SourceIdentifier id2 = SourceIdentifier(id.subdetector_id(), id.module_id());
91  // return id2.code();
92 
93  // FIXME ! the rob ID in the first data taken is wrong !
94  // return 0x610003;
95 
96  // After data will be fixed the correct version should be:
97  return rod_id;
98 }
99 
103  // Change Module Type to ROS, moduleid = 0
104 
105  SourceIdentifier id(rob_id);
106  SourceIdentifier id2(id.subdetector_id(), 0);
107  return id2.code();
108 }
109 
113  // ROS to DET
114 
115  SourceIdentifier id(ros_id);
116  SourceIdentifier id2(id.subdetector_id(), 0);
117  return id2.code();
118 }
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
getMessageSvc.h
singleton-like access to IMessageSvc via open function and helper
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
MDT_Hid2RESrcID::MDT_Hid2RESrcID
MDT_Hid2RESrcID()
constrcutor
Definition: MDT_Hid2RESrcID.cxx:24
MDT_Hid2RESrcID::getDetID
static uint32_t getDetID(uint32_t ros_id)
Make a SubDetector ID from ROS source ID.
Definition: MDT_Hid2RESrcID.cxx:112
createCablingJSON.cabling_data
dictionary cabling_data
Definition: createCablingJSON.py:46
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:88
MDT_Hid2RESrcID::set
StatusCode set(const MdtIdHelper *mdtId)
intialize the cabling service
Definition: MDT_Hid2RESrcID.cxx:26
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
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:28
id2
HWIdentifier id2
Definition: LArRodBlockPhysicsV0.cxx:562
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:33
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:227
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:102
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
Identifier
Definition: IdentifierFieldParser.cxx:14