ATLAS Offline Software
ITkStripCablingTool.cxx
Go to the documentation of this file.
1 /*
2 / Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
14 //this package
15 #include "ITkStripCablingTool.h"
16 
17 //Athena
18 #include "InDetIdentifier/SCT_ID.h"
19 #include "Identifier/Identifier.h"
21 
22 //Gaudi includes
23 #include "GaudiKernel/StatusCode.h"
24 
25 //constants in file scope
26 static const std::string coracool("CORACOOL");
27 static const std::string coolVectorPayload("COOLVECTOR");
28 static const std::string defaultSource(coracool);
29 static const std::string file("ITkStrip_Sept08Cabling_svc.dat");
30 //invalid identifiers to return in case of error
31 static const ITkStripOnlineId invalidId;
32 
33 
36  ATH_MSG_DEBUG("Initialize ITkStrip cabling");
37  const std::string cablingDataSource = m_cablingDataSource.value();
38  m_usingDatabase=(cablingDataSource == coracool) or (cablingDataSource == coolVectorPayload) or (cablingDataSource == file);
39  ATH_CHECK(detStore()->retrieve(m_idHelper, "SCT_ID"));
41  return StatusCode::SUCCESS;
42 }
43 
44 //
46 ITkStripCablingTool::getHashFromOnlineId(const ITkStripOnlineId& /*onlineId*/, const EventContext& /*ctx*/, const bool /*withWarnings*/) const {
47  return 0;
48 }
49 
51 ITkStripCablingTool::getOnlineIdFromHash(const IdentifierHash& hash, const EventContext& ctx) const {
52  const ITkStripCablingData* data{getData(ctx)};
53  if (data==nullptr) {
54  ATH_MSG_ERROR("Filling the cabling FAILED");
55  return invalidId;
56  }
57 
58  return data->getOnlineIdFromHash(hash);
59 }
60 
63  const EventContext& ctx{Gaudi::Hive::currentContext()};
64  return getOnlineIdFromHash(hash, ctx);
65 }
66 
68 ITkStripCablingTool::getRobIdFromHash(const IdentifierHash& hash, const EventContext& ctx) const {
69  return getOnlineIdFromHash(hash, ctx).rod();
70 }
71 
74  const EventContext& ctx{Gaudi::Hive::currentContext()};
75  return getRobIdFromHash(hash, ctx);
76 }
77 
78 void
79 ITkStripCablingTool::getAllRods(std::vector<std::uint32_t>& usersVector, const EventContext& ctx) const {
80  const ITkStripCablingData* data{getData(ctx)};
81  if (data==nullptr) {
82  ATH_MSG_ERROR("Filling the cabling FAILED");
83  return;
84  }
85 
86  data->getRods(usersVector);
87  if (msgLvl(MSG::DEBUG)){
88  ATH_MSG_DEBUG("RODs found: " << usersVector.size());
89  for (const auto& rodId : usersVector) {
90  ATH_MSG_DEBUG("ROD ID: 0x" << std::hex << rodId << std::dec);
91  }
92  }
93 }
94 
95 void
96 ITkStripCablingTool::getAllRods(std::vector<std::uint32_t>& usersVector) const {
97  const EventContext& ctx{Gaudi::Hive::currentContext()};
98  getAllRods(usersVector, ctx);
99 }
100 
101 const ITkStripCablingData*
102 ITkStripCablingTool::getData(const EventContext& ctx) const {
104  ATH_MSG_DEBUG("After getting ITkStripCablindData");
105  return condData.retrieve();
106 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
ITkStripOnlineId::rod
std::uint32_t rod() const
Return the rod/rob Id.
Definition: ITkStripOnlineId.cxx:19
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
SCT_ID.h
This is an Identifier helper class for the SCT subdetector. This class is a factory for creating comp...
ITkStripCablingTool::m_usingDatabase
bool m_usingDatabase
Definition: ITkStripCablingTool.h:70
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ITkStripCablingTool::m_idHelper
const SCT_ID * m_idHelper
helper for offlineId/hash conversions
Definition: ITkStripCablingTool.h:72
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
ITkStripCablingTool::initialize
virtual StatusCode initialize() override
Definition: ITkStripCablingTool.cxx:35
ITkStripCablingTool::m_cablingDataSource
StringProperty m_cablingDataSource
Definition: ITkStripCablingTool.h:69
ITkStripCablingData
Definition: ITkStripCablingData.h:24
ReadCondHandle.h
ITkStripCablingTool::getHashFromOnlineId
virtual IdentifierHash getHashFromOnlineId(const ITkStripOnlineId &onlineId, const EventContext &ctx, const bool withWarnings=true) const override
Definition: ITkStripCablingTool.cxx:46
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
file
TFile * file
Definition: tile_monitor.h:29
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
ITkStripCablingTool::getOnlineIdFromHash
virtual ITkStripOnlineId getOnlineIdFromHash(const IdentifierHash &hash, const EventContext &ctx) const override
return the online Id, given a hash (used by simulation encoders)
Definition: ITkStripCablingTool.cxx:51
ITkStripCablingTool.h
ITkStripCablingTool::m_data
SG::ReadCondHandleKey< ITkStripCablingData > m_data
Definition: ITkStripCablingTool.h:68
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:108
ITkStripOnlineId
Definition: ITkStripOnlineId.h:16
DEBUG
#define DEBUG
Definition: page_access.h:11
ITkStripCablingTool::getData
const ITkStripCablingData * getData(const EventContext &ctx) const
Definition: ITkStripCablingTool.cxx:102
ITkStripCablingTool::getRobIdFromHash
virtual std::uint32_t getRobIdFromHash(const IdentifierHash &hash, const EventContext &ctx) const override
return the rob/rod Id, given a hash (used by simulation encoders)
Definition: ITkStripCablingTool.cxx:68
ITkStripCablingTool::getAllRods
virtual void getAllRods(std::vector< std::uint32_t > &usersVector, const EventContext &ctx) const override
fill a users vector with all the RodIds
Definition: ITkStripCablingTool.cxx:79
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25