ATLAS Offline Software
Loading...
Searching...
No Matches
LArRoIMapCondAlg.cxx
Go to the documentation of this file.
1/*
2 * Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration.
3 */
10
11
12#include "LArRoIMapCondAlg.h"
20#include <fstream>
21#include <vector>
22
23
28{
29 ATH_CHECK( detStore()->retrieve(m_onlineID) );
30 ATH_CHECK( detStore()->retrieve(m_TT_ID) );
31 ATH_CHECK( detStore()->retrieve(m_em_id) );
32 ATH_CHECK( detStore()->retrieve(m_hec_id) );
33 ATH_CHECK( detStore()->retrieve(m_fcal_id) );
34
35 ATH_CHECK( m_ttSvc.retrieve() );
36
37 ATH_CHECK( m_onOffIdKey.initialize() );
38 ATH_CHECK( m_febRodKey.initialize() );
39 ATH_CHECK( m_LArRoIMapKey.initialize() );
40
41 return StatusCode::SUCCESS;
42}
43
44
48StatusCode LArRoIMapCondAlg::execute (const EventContext& ctx) const
49{
51 if (writeHandle.isValid()) {
52 return StatusCode::SUCCESS;
53 }
54 auto larRoIMap = std::make_unique<LArRoIMap> (100);
55
58
59 for (const Identifier& id : m_em_id->channel_ids()) {
60 ATH_CHECK( addEntry (*larRoIMap, **onOffId, **febRod, id) );
61 }
62
63 for (const Identifier& id : m_hec_id->channel_ids()) {
64 ATH_CHECK( addEntry (*larRoIMap, **onOffId, **febRod, id) );
65 }
66
67 for (const Identifier& id : m_fcal_id->channel_ids()) {
68 ATH_CHECK( addEntry (*larRoIMap, **onOffId, **febRod, id) );
69 }
70
71 writeHandle.addDependency (onOffId);
72 writeHandle.addDependency (febRod);
73 ATH_CHECK( writeHandle.record (std::move (larRoIMap)) );
74 ATH_MSG_INFO("recorded new " << writeHandle.key() << " with range " << writeHandle.getRange() << " into Conditions Store");
75 return StatusCode::SUCCESS;
76}
77
78
80 const LArOnOffIdMapping& onOffId,
81 const LArFebRodMapping& febRod,
82 const Identifier& id) const
83{
84 HWIdentifier sigId = onOffId.createSignalChannelID (id);
85 Identifier rId = m_ttSvc->whichTTID (id);
86 IdentifierHash hashid;
87 IdContext layer_context = m_TT_ID->layer_context();
88 if (m_TT_ID->get_hash (rId, hashid, &layer_context) != 0) {
89 ATH_MSG_ERROR ("Failed to get TT hash");
90 return StatusCode::FAILURE;
91 }
92 HWIdentifier febId = m_onlineID->feb_Id(sigId);
93 const HWIdentifier& robId = febRod.getReadoutModuleID (febId);
94 m.addEntry (id, sigId, robId, hashid);
95 return StatusCode::SUCCESS;
96}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
Conditions algorithm producing LArRoIMap.
const ServiceHandle< StoreGateSvc > & detStore() const
This class saves the "context" of an expanded identifier (ExpandedIdentifier) for compact or hash ver...
Definition IdContext.h:26
This is a "hash" representation of an Identifier.
HWIdentifier getReadoutModuleID(const HWIdentifier &id) const
HWIdentifier createSignalChannelID(const Identifier &id) const
create a HWIdentifier from an Identifier (not inline)
const LArOnlineID * m_onlineID
const LArHEC_ID * m_hec_id
SG::WriteCondHandleKey< LArRoIMap > m_LArRoIMapKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_onOffIdKey
ToolHandle< CaloTriggerTowerService > m_ttSvc
const CaloLVL1_ID * m_TT_ID
StatusCode addEntry(LArRoIMap &m, const LArOnOffIdMapping &onOffId, const LArFebRodMapping &febRod, const Identifier &id) const
const LArFCAL_ID * m_fcal_id
SG::ReadCondHandleKey< LArFebRodMapping > m_febRodKey
const LArEM_ID * m_em_id
virtual StatusCode execute(const EventContext &ctx) const override
Gaudi execute method.
virtual StatusCode initialize() override
Gaudi initialize method.
Mapping between calorimeter trigger id to offline/online Identifier.
Definition LArRoIMap.h:31
const std::string & key() const
void addDependency(const EventIDRange &range)
const EventIDRange & getRange() const
StatusCode record(const EventIDRange &range, T *t)
record handle, with explicit range DEPRECATED