ATLAS Offline Software
Loading...
Searching...
No Matches
SCT_LinkMaskingCondAlg.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
6
7#include <memory>
8
9SCT_LinkMaskingCondAlg::SCT_LinkMaskingCondAlg(const std::string& name, ISvcLocator* pSvcLocator)
10 : ::AthCondAlgorithm(name, pSvcLocator)
11{
12}
13
15 ATH_MSG_DEBUG("initialize " << name());
16
17 // Read Cond Handle
18 ATH_CHECK(m_readKey.initialize());
19 // Write Cond Handles
20 ATH_CHECK(m_writeKey.initialize());
21
22 return StatusCode::SUCCESS;
23}
24
25StatusCode SCT_LinkMaskingCondAlg::execute(const EventContext& ctx) const {
26 ATH_MSG_DEBUG("execute " << name());
27
28 // Write Cond Handle
30 // Do we have a valid Write Cond Handle for current time?
31 if (writeHandle.isValid()) {
32 ATH_MSG_DEBUG("CondHandle " << writeHandle.fullKey() << " is already valid."
33 << ". In theory this should not be called, but may happen"
34 << " if multiple concurrent events are being processed out of order.");
35 return StatusCode::SUCCESS;
36 }
37
38 // Read Cond Handle
40 const CondAttrListCollection* readCdo{*readHandle};
41 if (readCdo==nullptr) {
42 ATH_MSG_FATAL("Null pointer to the read conditions object");
43 return StatusCode::FAILURE;
44 }
45 // Add dependency
46 writeHandle.addDependency(readHandle);
47 ATH_MSG_INFO("Size of CondAttrListCollection " << readHandle.fullKey() << " readCdo->size()= " << readCdo->size());
48 ATH_MSG_INFO("Range of input is " << readHandle.getRange());
49
50 // Construct the output Cond Object and fill it in
51 std::unique_ptr<SCT_ModuleVetoCondData> writeCdo{std::make_unique<SCT_ModuleVetoCondData>()};
52
53 // Read bad wafer info
56 for (;linkItr != linkEnd; ++linkItr) {
57 //A CondAttrListCollection is a map of ChanNum and AttributeList
58 Identifier waferId{(*linkItr).first};
59 const CondAttrListCollection::AttributeList &payload{(*linkItr).second};
60 bool lastProbedState{payload[0].data<bool>()};
61 if (not lastProbedState) writeCdo->setBadWaferId(waferId);
62 ATH_MSG_INFO("LINK " << waferId << " (" << waferId.get_identifier32().get_compact() << " in 32 bit): " << lastProbedState);
63 }
64 if (writeCdo->size()>0) writeCdo->setFilled();
65
66 // Record the output cond object
67 if (writeHandle.record(std::move(writeCdo)).isFailure()) {
68 ATH_MSG_FATAL("Could not record SCT_ModuleVetoCondData " << writeHandle.key()
69 << " with EventRange " << writeHandle.getRange()
70 << " into Conditions Store");
71 return StatusCode::FAILURE;
72 }
73 ATH_MSG_INFO("recorded new CDO " << writeHandle.key() << " with range " << writeHandle.getRange() << " into Conditions Store");
74
75 return StatusCode::SUCCESS;
76}
77
79 ATH_MSG_DEBUG("finalize " << name());
80 return StatusCode::SUCCESS;
81}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_FATAL(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
Base class for conditions algorithms.
This class is a collection of AttributeLists where each one is associated with a channel number.
const_iterator end() const
const_iterator begin() const
Access to Chan/AttributeList pairs via iterators.
size_type size() const
number of Chan/AttributeList pairs
ChanAttrListMap::const_iterator const_iterator
coral::AttributeList AttributeList
value_type get_compact() const
Get the compact id.
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
virtual StatusCode initialize() override final
virtual StatusCode finalize() override final
SCT_LinkMaskingCondAlg(const std::string &name, ISvcLocator *pSvcLocator)
SG::WriteCondHandleKey< SCT_ModuleVetoCondData > m_writeKey
SG::ReadCondHandleKey< CondAttrListCollection > m_readKey
virtual StatusCode execute(const EventContext &ctx) const override final
const DataObjID & fullKey() const
const EventIDRange & getRange()
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
const DataObjID & fullKey() const