ATLAS Offline Software
Loading...
Searching...
No Matches
L1CaloRunParametersContainer.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(erunType, "runType", "string");
19 this->addSpecification(erunActionName, "runActionName", "string");
20 this->addSpecification(erunActionVersion, "runActionVersion", "unsigned int");
21 this->addSpecification(ereadoutConfig, "readoutConfig", "string");
22 this->addSpecification(ereadoutConfigID, "readoutConfigID", "unsigned int");
23 this->addSpecification(ettcConfiguration, "ttcConfiguration", "string");
24 this->addSpecification(ettcConfigurationID, "ttcConfigurationID", "unsigned int");
25 this->addSpecification(etriggerMenu, "triggerMenu", "string");
26 this->addSpecification(ecalibration, "calibration", "string");
27 this->addSpecification(econditions, "conditions", "string");
28}
29
31 : L1CaloRunParametersContainer() // delegating constructor
32{
33 // cppcheck-suppress useInitializationList
34 m_coolFolderKey = folderKey;
35}
36
37
39{
40 using std::make_unique;
41
42 if(m_coolFolderKey.empty()) return nullptr;
43
44 auto* attrSpecification = this->createAttributeListSpecification();
45 if(!attrSpecification || !attrSpecification->size()) return nullptr;
46
47 auto attrListCollection = make_unique<CondAttrListCollection>(true);
48 for(const auto& item : m_runParameterss) {
49 AthenaAttributeList attrList(*attrSpecification);
50 attrList[specificationName(erunType)].setValue(item.runType());
51 attrList[specificationName(erunActionName)].setValue(item.runActionName());
52 attrList[specificationName(erunActionVersion)].setValue(item.runActionVersion());
53 attrList[specificationName(ereadoutConfig)].setValue(item.readoutConfig());
54 attrList[specificationName(ereadoutConfigID)].setValue(item.readoutConfigID());
55 attrList[specificationName(ettcConfiguration)].setValue(item.ttcConfiguration());
56 attrList[specificationName(ettcConfigurationID)].setValue(item.ttcConfigurationID());
57 attrList[specificationName(etriggerMenu)].setValue(item.triggerMenu());
58 attrList[specificationName(ecalibration)].setValue(item.calibration());
59 attrList[specificationName(econditions)].setValue(item.conditions());
60
61 attrListCollection->add(item.channelId(), attrList);
62 }
63 return static_cast<DataObject*>(attrListCollection.release());
64}
65
66void L1CaloRunParametersContainer::makeTransient(const std::map<std::string, const CondAttrListCollection*>& condAttrListCollectionMap)
67{
68 clear();
69
70 auto it = condAttrListCollectionMap.find(m_coolFolderKey);
71 if(it == std::end(condAttrListCollectionMap)) return;
72
73 auto attrListCollection = it->second;
74 for(const auto& item : *attrListCollection) {
75 auto chanNum = item.first;
76 const auto& attrList = item.second;
77
78 const auto & runType = attrList[specificationName(erunType)].data<std::string>();
79 const auto & runActionName = attrList[specificationName(erunActionName)].data<std::string>();
80 auto runActionVersion = attrList[specificationName(erunActionVersion)].data<unsigned int>();
81 const auto & readoutConfig = attrList[specificationName(ereadoutConfig)].data<std::string>();
82 auto readoutConfigID = attrList[specificationName(ereadoutConfigID)].data<unsigned int>();
83 const auto & ttcConfiguration = attrList[specificationName(ettcConfiguration)].data<std::string>();
84 auto ttcConfigurationID = attrList[specificationName(ettcConfigurationID)].data<unsigned int>();
85 const auto & triggerMenu = attrList[specificationName(etriggerMenu)].data<std::string>();
86 const auto & calibration = attrList[specificationName(ecalibration)].data<std::string>();
87 const auto & conditions = attrList[specificationName(econditions)].data<std::string>();
88
89 addRunParameters(L1CaloRunParameters(chanNum, runType, runActionName, runActionVersion, readoutConfig, readoutConfigID, ttcConfiguration, ttcConfigurationID, triggerMenu, calibration, conditions));
90 }
91}
92
94{
95 auto it = std::lower_bound(std::begin(m_runParameterss),
96 std::end(m_runParameterss),
97 channelId,
98 [](const L1CaloRunParameters& el, unsigned int val) -> bool {
99 return el.channelId() < val;
100 });
101 if(it == std::end(m_runParameterss)) return nullptr;
102 return &(*it);
103}
104
106{
107 // insert into the correct position mainting the sorted vector
108 m_runParameterss.insert(std::lower_bound(std::begin(m_runParameterss),
109 std::end(m_runParameterss),
110 runParameters.channelId(),
111 [](const L1CaloRunParameters& el, unsigned int va) -> bool {
112 return el.channelId() < va;
113 }),
115}
116
119 for(;it!=this->end();++it) {
120 std::cout << " * item: " << *it <<std::endl;
121 }
122}
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.
void addRunParameters(const L1CaloRunParameters &runParameters)
virtual void makeTransient(const std::map< std::string, const CondAttrListCollection * > &)
std::vector< L1CaloRunParameters >::const_iterator const_iterator
const L1CaloRunParameters * runParameters(unsigned int channelId) const
std::vector< L1CaloRunParameters > m_runParameterss
virtual DataObject * makePersistent() const
Folder <-> Object mapping for /TRIGGER/L1Calo/V1/Conditions/RunParameters .