ATLAS Offline Software
Loading...
Searching...
No Matches
TgcCablingCondAlg.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include "TgcCablingCondAlg.h"
6
10
11namespace Muon {
13 ATH_CHECK(m_writeKey.initialize());
14 ATH_CHECK(m_idHelperSvc.retrieve());
15 return StatusCode::SUCCESS;
16}
17StatusCode TgcCablingCondAlg::execute(const EventContext& ctx) const {
18 SG::WriteCondHandle writeHandle{m_writeKey, ctx};
19 if (writeHandle.isValid()) {
20 ATH_MSG_DEBUG("CondHandle "
21 << writeHandle.fullKey() << " is already valid."
22 << ". In theory this should not be called, but may happen"
23 << " if multiple concurrent events are being processed "
24 "out of order.");
25 return StatusCode::SUCCESS;
26 }
27 writeHandle.addDependency(EventIDRange(IOVInfiniteRange::infiniteRunLB()));
28
29 ATH_CHECK(m_idHelperSvc.retrieve());
30
31 auto findCalibFile = [this](const std::string& db,
32 std::string& fileName) -> StatusCode {
33 fileName = PathResolver::find_file(db, "DATAPATH");
34 if (fileName.empty() || !std::filesystem::exists(fileName)) {
35 ATH_MSG_ERROR("Cannot resolve database '" << db << "'");
36 return StatusCode::FAILURE;
37 }
38 return StatusCode::SUCCESS;
39 };
40
42 cfg.idHelperSvc = m_idHelperSvc.get();
43 cfg.AsideId = m_AsideId;
44 cfg.CsideId = m_CsideId;
45
46 ATH_CHECK(findCalibFile(m_databaseASDToPP, cfg.fileNameASDtoPP));
47 ATH_CHECK(findCalibFile(m_databaseInPP, cfg.fileNameInPP));
48 ATH_CHECK(findCalibFile(m_databasePPToSL, cfg.fileNamePPtoSL));
49 ATH_CHECK(findCalibFile(m_databaseSLBToROD, cfg.fileNameSLBtoROD));
50 ATH_CHECK(findCalibFile(m_databaseASDToPP, cfg.fileNameASDtoPPdiff));
51
52 // instantiate TGC cabling manager
53 auto cabling = std::make_unique<Muon::TgcCablingMap>(cfg);
54 ATH_CHECK(writeHandle.record(std::move(cabling)));
55 return StatusCode::SUCCESS;
56}
57
58} // namespace Muon
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_DEBUG(x)
static EventIDRange infiniteRunLB()
Produces an EventIDRange that is infinite in RunLumi and invalid in Time.
StringProperty m_databaseSLBToROD
StringProperty m_databaseASDToPP
virtual StatusCode execute(const EventContext &ctx) const override final
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
SG::WriteCondHandleKey< TgcCablingMap > m_writeKey
virtual StatusCode initialize() override final
StringProperty m_databasePPToSL
static std::string find_file(const std::string &logical_file_name, const std::string &search_path)
void addDependency(const EventIDRange &range)
StatusCode record(const EventIDRange &range, T *t)
record handle, with explicit range DEPRECATED
const DataObjID & fullKey() const
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.