ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Database
IOVDbMetaDataTools
src
MetaDataToCondAlg.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
9
10
#include "
MetaDataToCondAlg.h
"
11
12
#include "
StoreGate/StoreGateSvc.h
"
13
#include "
StoreGate/WriteCondHandle.h
"
14
#include "
IOVDbDataModel/IOVMetaDataContainer.h
"
15
#include "
AthenaPoolUtilities/CondAttrListCollection.h
"
16
#include "
AthenaKernel/IOVInfiniteRange.h
"
17
18
StatusCode
MetaDataToCondAlg::initialize
() {
19
ATH_MSG_DEBUG
(
"Initializing MetaDataToCondAlg for folder "
<<
m_folderName
.value());
20
21
if
(
m_folderName
.value().empty()) {
22
ATH_MSG_ERROR
(
"FolderName property must be set"
);
23
return
StatusCode::FAILURE;
24
}
25
26
// Use folder name as output key if not explicitly set
27
if
(
m_outputKey
.key().empty()) {
28
m_outputKey
=
m_folderName
.value();
29
}
30
31
ATH_CHECK
(
m_outputKey
.initialize());
32
ATH_CHECK
(
m_metaDataStore
.retrieve());
33
34
return
StatusCode::SUCCESS;
35
}
36
37
StatusCode
MetaDataToCondAlg::execute
(
const
EventContext& ctx)
const
{
38
SG::WriteCondHandle<AthenaAttributeList>
writeHandle(
m_outputKey
, ctx);
39
40
if
(writeHandle.
isValid
()) {
41
ATH_MSG_DEBUG
(
"CondHandle "
<<
m_outputKey
.fullKey() <<
" is already valid"
);
42
return
StatusCode::SUCCESS;
43
}
44
45
// Read from MetaDataStore
46
const
IOVMetaDataContainer
* metaContainer =
nullptr
;
47
if
(!
m_metaDataStore
->retrieve(metaContainer,
m_folderName
.value()).isSuccess()) {
48
ATH_MSG_ERROR
(
"Could not retrieve IOVMetaDataContainer for folder "
<<
m_folderName
.value()
49
<<
" from MetaDataStore"
);
50
return
StatusCode::FAILURE;
51
}
52
53
const
IOVPayloadContainer
* payloadContainer = metaContainer->
payloadContainer
();
54
if
(!payloadContainer || payloadContainer->
size
() == 0) {
55
ATH_MSG_ERROR
(
"No payloads in IOVMetaDataContainer for folder "
<<
m_folderName
.value());
56
return
StatusCode::FAILURE;
57
}
58
59
// Get the first payload (parameter folders should have only one)
60
const
CondAttrListCollection
* coll = *(payloadContainer->
begin
());
61
if
(!coll) {
62
ATH_MSG_ERROR
(
"Could not get CondAttrListCollection from payload container"
);
63
return
StatusCode::FAILURE;
64
}
65
66
// Extract AthenaAttributeList from the first channel
67
auto
itr = coll->
begin
();
68
if
(itr == coll->
end
()) {
69
ATH_MSG_ERROR
(
"CondAttrListCollection is empty"
);
70
return
StatusCode::FAILURE;
71
}
72
73
const
coral::AttributeList& attrList = itr->second;
74
auto
athAttrList = std::make_unique<AthenaAttributeList>(attrList);
75
76
ATH_MSG_DEBUG
(
"Read "
<< athAttrList->size() <<
" attributes from folder "
<<
m_folderName
.value());
77
78
// Use infinite range - the metadata is valid for the entire job
79
writeHandle.
addDependency
(
IOVInfiniteRange::infiniteRunLB
());
80
81
ATH_CHECK
(writeHandle.
record
(std::move(athAttrList)));
82
83
ATH_MSG_DEBUG
(
"Recorded AthenaAttributeList for "
<<
m_outputKey
.fullKey());
84
85
return
StatusCode::SUCCESS;
86
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:32
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:28
CondAttrListCollection.h
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
IOVInfiniteRange.h
IOVMetaDataContainer.h
This class is a container for conditions data.
MetaDataToCondAlg.h
Condition algorithm to populate ConditionStore from MetaDataStore.
StoreGateSvc.h
WriteCondHandle.h
CondAttrListCollection
This class is a collection of AttributeLists where each one is associated with a channel number.
Definition
CondAttrListCollection.h:51
CondAttrListCollection::end
const_iterator end() const
Definition
CondAttrListCollection.h:314
CondAttrListCollection::begin
const_iterator begin() const
Access to Chan/AttributeList pairs via iterators.
Definition
CondAttrListCollection.h:308
IOVInfiniteRange::infiniteRunLB
static EventIDRange infiniteRunLB()
Produces an EventIDRange that is infinite in RunLumi and invalid in Time.
Definition
IOVInfiniteRange.h:39
IOVMetaDataContainer
This class is a container for conditions data.
Definition
IOVMetaDataContainer.h:37
IOVMetaDataContainer::payloadContainer
const IOVPayloadContainer * payloadContainer() const
Access to payload container.
Definition
IOVMetaDataContainer.h:141
IOVPayloadContainer
This class is a container for the payload of conditions data.
Definition
IOVPayloadContainer.h:35
IOVPayloadContainer::size
size_type size() const
size of payload vector
Definition
IOVPayloadContainer.h:121
IOVPayloadContainer::begin
const_iterator begin() const
Begin of payload vector.
Definition
IOVPayloadContainer.h:107
MetaDataToCondAlg::m_metaDataStore
ServiceHandle< StoreGateSvc > m_metaDataStore
Handle to MetaDataStore.
Definition
MetaDataToCondAlg.h:43
MetaDataToCondAlg::execute
virtual StatusCode execute(const EventContext &ctx) const override
Definition
MetaDataToCondAlg.cxx:37
MetaDataToCondAlg::m_outputKey
SG::WriteCondHandleKey< AthenaAttributeList > m_outputKey
Output condition key.
Definition
MetaDataToCondAlg.h:39
MetaDataToCondAlg::initialize
virtual StatusCode initialize() override
Definition
MetaDataToCondAlg.cxx:18
MetaDataToCondAlg::m_folderName
Gaudi::Property< std::string > m_folderName
Folder name to read from MetaDataStore.
Definition
MetaDataToCondAlg.h:35
SG::WriteCondHandle
Definition
WriteCondHandle.h:26
SG::WriteCondHandle::addDependency
void addDependency(const EventIDRange &range)
Definition
WriteCondHandle.h:279
SG::WriteCondHandle::record
StatusCode record(const EventIDRange &range, T *t)
record handle, with explicit range DEPRECATED
Definition
WriteCondHandle.h:161
SG::WriteCondHandle::isValid
bool isValid() const
Definition
WriteCondHandle.h:252
Generated on
for ATLAS Offline Software by
1.17.0