ATLAS Offline Software
Loading...
Searching...
No Matches
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"
14#include "eformat/SourceIdentifier.h"
15
16using 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
25
26StatusCode MDT_Hid2RESrcID::set(const MdtIdHelper* mdtId) {
27 // Initialize the cabling Service
28 m_mdtIdHelper = mdtId;
29 ATH_CHECK(m_readKey.initialize());
30 return StatusCode::SUCCESS;
31}
32
33uint32_t MDT_Hid2RESrcID::getRodID(const Identifier& offlineId) const {
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
88uint32_t MDT_Hid2RESrcID::getRobID(uint32_t rod_id) {
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
102uint32_t MDT_Hid2RESrcID::getRosID(uint32_t rob_id) {
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
112uint32_t MDT_Hid2RESrcID::getDetID(uint32_t ros_id) {
113 // ROS to DET
114
115 SourceIdentifier id(ros_id);
116 SourceIdentifier id2(id.subdetector_id(), 0);
117 return id2.code();
118}
#define endmsg
#define ATH_CHECK
Evaluate an expression and check for errors.
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
HWIdentifier id2
static uint32_t getRosID(uint32_t rob_id)
Make a ROS Source ID from a ROB source ID.
StatusCode set(const MdtIdHelper *mdtId)
intialize the cabling service
MDT_Hid2RESrcID()
constrcutor
const MdtIdHelper * m_mdtIdHelper
static uint32_t getDetID(uint32_t ros_id)
Make a SubDetector ID from ROS source ID.
uint32_t getRodID(const Identifier &offlineId) const
static uint32_t getRobID(uint32_t rod_id)
Make a ROB Source ID from a ROD source ID.
SG::ReadCondHandleKey< MuonMDT_CablingMap > m_readKey
MdtCablingData CablingData
bool getOnlineId(CablingData &cabling_data, MsgStream &log) const
return the online id given the offline id
bool convert(const CablingData &cabling_data, Identifier &id, bool check_valid=true) const
converts the cabling data into an identifier.
singleton-like access to IMessageSvc via open function and helper
IMessageSvc * getMessageSvc(bool quiet=false)