ATLAS Offline Software
Loading...
Searching...
No Matches
Hid2RESrcID.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
10#include "GaudiKernel/IToolSvc.h"
11#include "GaudiKernel/ToolHandle.h"
13#include "GaudiKernel/MsgStream.h"
15
16#include <iostream>
17
18#include "eformat/SourceIdentifier.h"
19
20using eformat::helper::SourceIdentifier;
21
22// implementation of LArOnlineID to RESrcID conversion.
23//
24// FIXME: need to check the convention for posNeg vs left-right.
25// DET id assumes left-right
26// FEB_ID assumes pos-neg.
27// I have assumed here, left for pn=0 (negative?)
28// right for pn=1 (positive?)
29
36
37StatusCode Hid2RESrcID::initialize (const LArFebRodMapping& rodMapping)
38{
39 ATH_CHECK( initialize (rodMapping.getLArRoModIDvec()) );
40 return StatusCode::SUCCESS;
41}
42
43
44StatusCode Hid2RESrcID::initialize (const std::vector<HWIdentifier>& roms)
45{
46 // retrieve onlineHelper
47 ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "Hid2RESrcID");
48 ATH_CHECK( detStore.retrieve() );
49 ATH_CHECK( detStore->retrieve(m_onlineHelper, "LArOnlineID") );
50
51 // make internal maps
52
53 eformat::SubDetector detid ;
54 for (const HWIdentifier& mId : roms)
55 {
56 detid = (eformat::SubDetector) m_readoutModuleSvc.subDet(mId);
57 uint8_t m = m_readoutModuleSvc.rodFragId(mId);
58
59 SourceIdentifier sid = SourceIdentifier(detid,m);
60 uint32_t rod_id = sid.code();
61
62 assert( m_coll2ROD.count(mId) == 0 );
63 m_coll2ROD[ mId ]=rod_id;
64
65 }
66
67
68 m_initialized = true ;
69
70 return StatusCode::SUCCESS;
71}
72
73
75{ // this method returns a RESrcID for the ROD, for a given COLLECTION_ID
76
77 COLL_MAP::const_iterator it = m_coll2ROD.find( id );
78 if(it == m_coll2ROD.end()){
79 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "H2d2RESrcID::getRodIDFromROM")
80 << "invalid COLL ID in hex "<<std::hex<<id.get_compact()<<std::dec<<endmsg;
81 std::abort();
82 }
83
84 return (*it).second ;
85}
86
87
88uint32_t Hid2RESrcID::getRodID(const LArFebRodMapping& rodMapping,
89 const HWIdentifier& hid) const
90{ // this method returns a RESrcID for the ROD, for a given LArOnlineID
91 // channel number is ignored.
92 HWIdentifier febId = m_onlineHelper->feb_Id(hid) ;
93 HWIdentifier romId = rodMapping.getReadoutModuleID(febId);
94
95 return getRodIDFromROM(romId);
96}
97
100uint32_t Hid2RESrcID::getRobID( uint32_t rod_id) const
101{
102 return m_rodRobIdMap.getRobID (rod_id);
103}
104
105
108uint32_t Hid2RESrcID::getRosID( uint32_t rob_id) const
109{
110// Change Module Type to ROS, moduleid = 0
111
112 SourceIdentifier id = SourceIdentifier(rob_id);
113 SourceIdentifier id2 = SourceIdentifier(id.subdetector_id(), 0);
114 return id2.code();
115
116}
117
120uint32_t Hid2RESrcID::getDetID ( uint32_t ros_id) const
121{
122// ROS to DET
123
124 SourceIdentifier id = SourceIdentifier(ros_id);
125 SourceIdentifier id2 = SourceIdentifier(id.subdetector_id(), 0);
126 return id2.code();
127}
#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...
Helpers for checking error return status codes and reporting errors.
#define REPORT_MESSAGE_WITH_CONTEXT(LVL, CONTEXT_NAME)
Report a message, with an explicitly specified context name.
uint32_t getRobID(uint32_t rod_id) const
Make a ROB Source ID from a ROD source ID.
HWIdentifier COLLECTION_ID
Definition Hid2RESrcID.h:42
LArReadoutModuleService m_readoutModuleSvc
Definition Hid2RESrcID.h:80
uint32_t getRodIDFromROM(const COLLECTION_ID &hid) const
make a ROD SrcID for a COLLECTION_ID
uint32_t getRodID(const LArFebRodMapping &rodMapping, const HWIdentifier &hid) const
make a ROD SrcID for a HWIdentifier
COLL_MAP m_coll2ROD
Definition Hid2RESrcID.h:79
Hid2RESrcID()
constructor
uint32_t getRosID(uint32_t rob_id) const
Make a ROS Source ID from a ROB source ID.
const LArOnlineID * m_onlineHelper
Definition Hid2RESrcID.h:77
RodRobIdMap m_rodRobIdMap
Definition Hid2RESrcID.h:81
StatusCode initialize(const LArFebRodMapping &rodMapping)
bool m_initialized
Definition Hid2RESrcID.h:76
uint32_t getDetID(uint32_t ros_id) const
Make a SubDetector ID from ROS source ID.
const std::vector< HWIdentifier > & getLArRoModIDvec() const
"iterator" on LArReadoutModuleIDs
HWIdentifier getReadoutModuleID(const HWIdentifier &id) const