ATLAS Offline Software
Loading...
Searching...
No Matches
L1CaloDerivedRunParsContainer.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
5
6#include <algorithm>
7#include <memory>
8
9#include "CoralBase/AttributeListSpecification.h"
12
14
16 : AbstractL1CaloPersistentCondition("CondAttrListCollection")
17{
18 this->addSpecification(etimingRegime, "timingRegime", "string");
19 this->addSpecification(etierZeroTag, "tierZeroTag", "string");
20}
21
23 : L1CaloDerivedRunParsContainer() // delegating constructor
24{
25 // cppcheck-suppress useInitializationList
26 m_coolFolderKey = folderKey;
27}
28
29
31{
32 using std::make_unique;
33
34 if(m_coolFolderKey.empty()) return nullptr;
35
36 auto* attrSpecification = this->createAttributeListSpecification();
37 if(!attrSpecification || !attrSpecification->size()) return nullptr;
38
39 auto attrListCollection = make_unique<CondAttrListCollection>(true);
40 for(const auto& item : m_derivedRunParss) {
41 AthenaAttributeList attrList(*attrSpecification);
42 attrList[specificationName(etimingRegime)].setValue(item.timingRegime());
43 attrList[specificationName(etierZeroTag)].setValue(item.tierZeroTag());
44
45 attrListCollection->add(item.channelId(), attrList);
46 }
47 return static_cast<DataObject*>(attrListCollection.release());
48}
49
50void L1CaloDerivedRunParsContainer::makeTransient(const std::map<std::string, const CondAttrListCollection*>& condAttrListCollectionMap)
51{
52 clear();
53
54 auto it = condAttrListCollectionMap.find(m_coolFolderKey);
55 if(it == std::end(condAttrListCollectionMap)) return;
56
57 auto attrListCollection = it->second;
58 for(const auto& item : *attrListCollection) {
59 auto chanNum = item.first;
60 const auto& attrList = item.second;
61
62 const auto & timingRegime = attrList[specificationName(etimingRegime)].data<std::string>();
63 const auto & tierZeroTag = attrList[specificationName(etierZeroTag)].data<std::string>();
64
65 addDerivedRunPars(L1CaloDerivedRunPars(chanNum, timingRegime, tierZeroTag));
66 }
67}
68
70{
71 auto it = std::lower_bound(std::begin(m_derivedRunParss),
72 std::end(m_derivedRunParss),
73 channelId,
74 [](const L1CaloDerivedRunPars& el, unsigned int val) -> bool {
75 return el.channelId() < val;
76 });
77 if(it == std::end(m_derivedRunParss)) return nullptr;
78 return &(*it);
79}
80
82{
83 // insert into the correct position mainting the sorted vector
84 m_derivedRunParss.insert(std::lower_bound(std::begin(m_derivedRunParss),
85 std::end(m_derivedRunParss),
86 derivedRunPars.channelId(),
87 [](const L1CaloDerivedRunPars& el, unsigned int va) -> bool {
88 return el.channelId() < va;
89 }),
91}
92
93
96 for(;it!=this->end();++it) {
97 std::cout << " * item: " << *it <<std::endl;
98 }
99}
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
AbstractL1CaloPersistentCondition(const std::string &condType)
void addSpecification(int specId, const std::string &specName, const std::string &specType)
coral::AttributeListSpecification * createAttributeListSpecification() const
An AttributeList represents a logical row of attributes in a metadata table.
virtual void makeTransient(const std::map< std::string, const CondAttrListCollection * > &)
const L1CaloDerivedRunPars * derivedRunPars(unsigned int channelId) const
void addDerivedRunPars(const L1CaloDerivedRunPars &derivedRunPars)
std::vector< L1CaloDerivedRunPars > m_derivedRunParss
std::vector< L1CaloDerivedRunPars >::const_iterator const_iterator
virtual DataObject * makePersistent() const
Folder <-> Object mapping for /TRIGGER/L1Calo/V1/Conditions/DerivedRunPars .