ATLAS Offline Software
L1CaloPprChanCalibContainer.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 <algorithm>
8 #include <memory>
9 
10 #include "CoralBase/AttributeListSpecification.h"
14 
16  : AbstractL1CaloPersistentCondition("CondAttrListCollection")
17 {
18  this->addSpecification(eErrorCode, "ErrorCode", "unsigned int");
19  this->addSpecification(ePedMean, "PedMean", "double");
20  this->addSpecification(ePedValue, "PedValue", "unsigned int");
21  this->addSpecification(ePedFirSum, "PedFirSum", "unsigned int");
22  this->addSpecification(eExtBcidThreshold, "ExtBcidThreshold", "unsigned short");
23  this->addSpecification(eSatBcidThreshLow, "SatBcidThreshLow", "unsigned short");
24  this->addSpecification(eSatBcidThreshHigh, "SatBcidThreshHigh", "unsigned short");
25  this->addSpecification(eSatBcidLevel, "SatBcidLevel", "unsigned short");
26  this->addSpecification(eBcidEnergyRangeLow, "BcidEnergyRangeLow", "unsigned short");
27  this->addSpecification(eBcidEnergyRangeHigh, "BcidEnergyRangeHigh", "unsigned short");
28  this->addSpecification(eFirStartBit, "FirStartBit", "unsigned short");
29  this->addSpecification(eFirCoeff1, "FirCoeff1", "short");
30  this->addSpecification(eFirCoeff2, "FirCoeff2", "short");
31  this->addSpecification(eFirCoeff3, "FirCoeff3", "short");
32  this->addSpecification(eFirCoeff4, "FirCoeff4", "short");
33  this->addSpecification(eFirCoeff5, "FirCoeff5", "short");
34  this->addSpecification(eLutCpStrategy, "LutCpStrategy", "unsigned short");
35  this->addSpecification(eLutCpOffset, "LutCpOffset", "unsigned short");
36  this->addSpecification(eLutCpNoiseCut, "LutCpNoiseCut", "unsigned short");
37  this->addSpecification(eLutCpSlope, "LutCpSlope", "unsigned short");
38  this->addSpecification(eLutCpPar1, "LutCpPar1", "short");
39  this->addSpecification(eLutCpPar2, "LutCpPar2", "short");
40  this->addSpecification(eLutCpPar3, "LutCpPar3", "short");
41  this->addSpecification(eLutCpPar4, "LutCpPar4", "short");
42  this->addSpecification(eLutCpScale, "LutCpScale", "unsigned short");
43  this->addSpecification(eLutJepStrategy, "LutJepStrategy", "unsigned short");
44  this->addSpecification(eLutJepOffset, "LutJepOffset", "unsigned short");
45  this->addSpecification(eLutJepNoiseCut, "LutJepNoiseCut", "unsigned short");
46  this->addSpecification(eLutJepSlope, "LutJepSlope", "unsigned short");
47  this->addSpecification(eLutJepPar1, "LutJepPar1", "short");
48  this->addSpecification(eLutJepPar2, "LutJepPar2", "short");
49  this->addSpecification(eLutJepPar3, "LutJepPar3", "short");
50  this->addSpecification(eLutJepPar4, "LutJepPar4", "short");
51  this->addSpecification(eLutJepScale, "LutJepScale", "unsigned short");
52 }
53 
55  : L1CaloPprChanCalibContainer() // delegating constructor
56 {
57  // cppcheck-suppress useInitializationList
58  m_coolFolderKey = folderKey;
59 }
60 
61 
63 {
64  using std::make_unique;
65 
66  if(m_coolFolderKey.empty()) return nullptr;
67 
68  auto* attrSpecification = this->createAttributeListSpecification();
69  if(!attrSpecification || !attrSpecification->size()) return nullptr;
70 
71  auto attrListCollection = make_unique<CondAttrListCollection>(true);
72  for(const auto& item : m_pprChanCalibs) {
73  AthenaAttributeList attrList(*attrSpecification);
74  attrList[specificationName(eErrorCode)].setValue(item.errorCode());
75  attrList[specificationName(ePedMean)].setValue(item.pedMean());
76  attrList[specificationName(ePedValue)].setValue(item.pedValue());
77  attrList[specificationName(ePedFirSum)].setValue(item.pedFirSum());
78  attrList[specificationName(eExtBcidThreshold)].setValue(item.extBcidThreshold());
79  attrList[specificationName(eSatBcidThreshLow)].setValue(item.satBcidThreshLow());
80  attrList[specificationName(eSatBcidThreshHigh)].setValue(item.satBcidThreshHigh());
81  attrList[specificationName(eSatBcidLevel)].setValue(item.satBcidLevel());
82  attrList[specificationName(eBcidEnergyRangeLow)].setValue(item.bcidEnergyRangeLow());
83  attrList[specificationName(eBcidEnergyRangeHigh)].setValue(item.bcidEnergyRangeHigh());
84  attrList[specificationName(eFirStartBit)].setValue(item.firStartBit());
85  attrList[specificationName(eFirCoeff1)].setValue(item.firCoeff1());
86  attrList[specificationName(eFirCoeff2)].setValue(item.firCoeff2());
87  attrList[specificationName(eFirCoeff3)].setValue(item.firCoeff3());
88  attrList[specificationName(eFirCoeff4)].setValue(item.firCoeff4());
89  attrList[specificationName(eFirCoeff5)].setValue(item.firCoeff5());
90  attrList[specificationName(eLutCpStrategy)].setValue(item.lutCpStrategy());
91  attrList[specificationName(eLutCpOffset)].setValue(item.lutCpOffset());
92  attrList[specificationName(eLutCpNoiseCut)].setValue(item.lutCpNoiseCut());
93  attrList[specificationName(eLutCpSlope)].setValue(item.lutCpSlope());
94  attrList[specificationName(eLutCpPar1)].setValue(item.lutCpPar1());
95  attrList[specificationName(eLutCpPar2)].setValue(item.lutCpPar2());
96  attrList[specificationName(eLutCpPar3)].setValue(item.lutCpPar3());
97  attrList[specificationName(eLutCpPar4)].setValue(item.lutCpPar4());
98  attrList[specificationName(eLutCpScale)].setValue(item.lutCpScale());
99  attrList[specificationName(eLutJepStrategy)].setValue(item.lutJepStrategy());
100  attrList[specificationName(eLutJepOffset)].setValue(item.lutJepOffset());
101  attrList[specificationName(eLutJepNoiseCut)].setValue(item.lutJepNoiseCut());
102  attrList[specificationName(eLutJepSlope)].setValue(item.lutJepSlope());
103  attrList[specificationName(eLutJepPar1)].setValue(item.lutJepPar1());
104  attrList[specificationName(eLutJepPar2)].setValue(item.lutJepPar2());
105  attrList[specificationName(eLutJepPar3)].setValue(item.lutJepPar3());
106  attrList[specificationName(eLutJepPar4)].setValue(item.lutJepPar4());
107  attrList[specificationName(eLutJepScale)].setValue(item.lutJepScale());
108 
109  attrListCollection->add(item.channelId(), attrList);
110  }
111  return static_cast<DataObject*>(attrListCollection.release());
112 }
113 
114 void L1CaloPprChanCalibContainer::makeTransient(const std::map<std::string, const CondAttrListCollection*>& condAttrListCollectionMap)
115 {
116  clear();
117 
118  // In the case of overlay, we need multiple instances of L1CaloPprChanCalibContainer
119  // Take the last element in the map
120  if (condAttrListCollectionMap.empty()) return;
121  auto it = condAttrListCollectionMap.rbegin();
122 
123  auto attrListCollection = it->second;
124 
125  for(const auto& item : *attrListCollection) {
126  auto chanNum = item.first;
127  const auto& attrList = item.second;
128 
129  auto errorCode = attrList[specificationName(eErrorCode)].data<unsigned int>();
130  auto pedMean = attrList[specificationName(ePedMean)].data<double>();
131  auto pedValue = attrList[specificationName(ePedValue)].data<unsigned int>();
132  auto pedFirSum = attrList[specificationName(ePedFirSum)].data<unsigned int>();
133  auto extBcidThreshold = attrList[specificationName(eExtBcidThreshold)].data<unsigned short>();
134  auto satBcidThreshLow = attrList[specificationName(eSatBcidThreshLow)].data<unsigned short>();
135  auto satBcidThreshHigh = attrList[specificationName(eSatBcidThreshHigh)].data<unsigned short>();
136  auto satBcidLevel = attrList[specificationName(eSatBcidLevel)].data<unsigned short>();
137  auto bcidEnergyRangeLow = attrList[specificationName(eBcidEnergyRangeLow)].data<unsigned short>();
138  auto bcidEnergyRangeHigh = attrList[specificationName(eBcidEnergyRangeHigh)].data<unsigned short>();
139  auto firStartBit = attrList[specificationName(eFirStartBit)].data<unsigned short>();
140  auto firCoeff1 = attrList[specificationName(eFirCoeff1)].data<short>();
141  auto firCoeff2 = attrList[specificationName(eFirCoeff2)].data<short>();
142  auto firCoeff3 = attrList[specificationName(eFirCoeff3)].data<short>();
143  auto firCoeff4 = attrList[specificationName(eFirCoeff4)].data<short>();
144  auto firCoeff5 = attrList[specificationName(eFirCoeff5)].data<short>();
145  auto lutCpStrategy = attrList[specificationName(eLutCpStrategy)].data<unsigned short>();
146  auto lutCpOffset = attrList[specificationName(eLutCpOffset)].data<unsigned short>();
147  auto lutCpNoiseCut = attrList[specificationName(eLutCpNoiseCut)].data<unsigned short>();
148  auto lutCpSlope = attrList[specificationName(eLutCpSlope)].data<unsigned short>();
149  auto lutCpPar1 = attrList[specificationName(eLutCpPar1)].data<short>();
150  auto lutCpPar2 = attrList[specificationName(eLutCpPar2)].data<short>();
151  auto lutCpPar3 = attrList[specificationName(eLutCpPar3)].data<short>();
152  auto lutCpPar4 = attrList[specificationName(eLutCpPar4)].data<short>();
153  auto lutCpScale = attrList[specificationName(eLutCpScale)].data<unsigned short>();
154  auto lutJepStrategy = attrList[specificationName(eLutJepStrategy)].data<unsigned short>();
155  auto lutJepOffset = attrList[specificationName(eLutJepOffset)].data<unsigned short>();
156  auto lutJepNoiseCut = attrList[specificationName(eLutJepNoiseCut)].data<unsigned short>();
157  auto lutJepSlope = attrList[specificationName(eLutJepSlope)].data<unsigned short>();
158  auto lutJepPar1 = attrList[specificationName(eLutJepPar1)].data<short>();
159  auto lutJepPar2 = attrList[specificationName(eLutJepPar2)].data<short>();
160  auto lutJepPar3 = attrList[specificationName(eLutJepPar3)].data<short>();
161  auto lutJepPar4 = attrList[specificationName(eLutJepPar4)].data<short>();
162  auto lutJepScale = attrList[specificationName(eLutJepScale)].data<unsigned short>();
163 
164  addPprChanCalib(L1CaloPprChanCalib(chanNum, errorCode, pedMean, pedValue, pedFirSum, extBcidThreshold, satBcidThreshLow, satBcidThreshHigh, satBcidLevel, bcidEnergyRangeLow, bcidEnergyRangeHigh, firStartBit, firCoeff1, firCoeff2, firCoeff3, firCoeff4, firCoeff5, lutCpStrategy, lutCpOffset, lutCpNoiseCut, lutCpSlope, lutCpPar1, lutCpPar2, lutCpPar3, lutCpPar4, lutCpScale, lutJepStrategy, lutJepOffset, lutJepNoiseCut, lutJepSlope, lutJepPar1, lutJepPar2, lutJepPar3, lutJepPar4, lutJepScale));
165  }
166 
167 // }
168 }
169 
171 {
172  auto it = std::lower_bound(std::begin(m_pprChanCalibs),
174  channelId,
175  [](const L1CaloPprChanCalib& el, unsigned int val) -> bool {
176  return el.channelId() < val;
177  });
178  if(it == std::end(m_pprChanCalibs)) return nullptr;
179  return &(*it);
180 }
181 
183 {
184  // insert into the correct position mainting the sorted vector
185  m_pprChanCalibs.insert(std::lower_bound(std::begin(m_pprChanCalibs),
188  [](const L1CaloPprChanCalib& el, unsigned int va) -> bool {
189  return el.channelId() < va;
190  }),
191  pprChanCalib);
192 }
L1CaloPprChanCalibContainer::eLutCpOffset
@ eLutCpOffset
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::eFirCoeff4
@ eFirCoeff4
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::eLutCpPar1
@ eLutCpPar1
Definition: L1CaloPprChanCalibContainer.h:37
CondAttrListCollection.h
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
L1CaloPprChanCalibContainer::eLutJepPar4
@ eLutJepPar4
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::eLutCpPar3
@ eLutCpPar3
Definition: L1CaloPprChanCalibContainer.h:37
make_unique
std::unique_ptr< T > make_unique(Args &&... args)
Definition: SkimmingToolEXOT5.cxx:23
L1CaloPprChanCalibContainer::eSatBcidThreshHigh
@ eSatBcidThreshHigh
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::ePedMean
@ ePedMean
Definition: L1CaloPprChanCalibContainer.h:37
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
skel.it
it
Definition: skel.GENtoEVGEN.py:423
L1CaloPprChanCalibContainer::eFirCoeff5
@ eFirCoeff5
Definition: L1CaloPprChanCalibContainer.h:37
AbstractL1CaloPersistentCondition::addSpecification
void addSpecification(int specId, const std::string &specName, const std::string &specType)
Definition: AbstractL1CaloPersistentCondition.cxx:26
L1CaloPprChanCalibContainer::eSatBcidLevel
@ eSatBcidLevel
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::eLutJepSlope
@ eLutJepSlope
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::eLutJepPar2
@ eLutJepPar2
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::m_coolFolderKey
std::string m_coolFolderKey
Definition: L1CaloPprChanCalibContainer.h:65
AthenaAttributeList.h
L1CaloPprChanCalibContainer::eLutCpSlope
@ eLutCpSlope
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer.h
AbstractL1CaloPersistentCondition::createAttributeListSpecification
coral::AttributeListSpecification * createAttributeListSpecification() const
Definition: AbstractL1CaloPersistentCondition.cxx:31
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
L1CaloPprChanCalibContainer
Definition: L1CaloPprChanCalibContainer.h:27
L1CaloPprChanCalibContainer::addPprChanCalib
void addPprChanCalib(const L1CaloPprChanCalib &pprChanCalib)
Definition: L1CaloPprChanCalibContainer.cxx:182
L1CaloPprChanCalibContainer::eLutJepOffset
@ eLutJepOffset
Definition: L1CaloPprChanCalibContainer.h:37
checkCoolLatestUpdate.chanNum
chanNum
Definition: checkCoolLatestUpdate.py:27
L1CaloPprChanCalibContainer::m_pprChanCalibs
std::vector< L1CaloPprChanCalib > m_pprChanCalibs
Definition: L1CaloPprChanCalibContainer.h:64
L1CaloPprChanCalibContainer::makeTransient
virtual void makeTransient(const std::map< std::string, const CondAttrListCollection * > &)
Definition: L1CaloPprChanCalibContainer.cxx:114
L1CaloPprChanCalibContainer::eErrorCode
@ eErrorCode
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::eFirCoeff3
@ eFirCoeff3
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::clear
virtual void clear()
Definition: L1CaloPprChanCalibContainer.h:45
L1CaloPprChanCalibContainer::eLutCpStrategy
@ eLutCpStrategy
Definition: L1CaloPprChanCalibContainer.h:37
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
AthenaAttributeList
An AttributeList represents a logical row of attributes in a metadata table. The name and type of eac...
Definition: PersistentDataModel/PersistentDataModel/AthenaAttributeList.h:45
L1CaloPprChanCalibContainer::eLutCpNoiseCut
@ eLutCpNoiseCut
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::eLutCpPar4
@ eLutCpPar4
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalib
Folder <-> Object mapping for /TRIGGER/L1Calo/V2/Calibration/Physics/PprChanCalib .
Definition: L1CaloPprChanCalib.h:17
CaloCondBlobAlgs_fillNoiseFromASCII.channelId
channelId
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:122
L1CaloPprChanCalib::channelId
unsigned int channelId() const
Definition: L1CaloPprChanCalib.h:22
L1CaloPprChanCalibContainer::L1CaloPprChanCalibContainer
L1CaloPprChanCalibContainer()
Definition: L1CaloPprChanCalibContainer.cxx:15
L1CaloPprChanCalibContainer::eLutJepStrategy
@ eLutJepStrategy
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::eExtBcidThreshold
@ eExtBcidThreshold
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::eSatBcidThreshLow
@ eSatBcidThreshLow
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::eLutJepPar3
@ eLutJepPar3
Definition: L1CaloPprChanCalibContainer.h:37
item
Definition: ItemListSvc.h:43
AbstractL1CaloPersistentCondition::specificationName
std::string specificationName(int specId) const
Definition: AbstractL1CaloPersistentCondition.cxx:44
L1CaloPprChanCalibContainer::eFirCoeff1
@ eFirCoeff1
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::pprChanCalib
const L1CaloPprChanCalib * pprChanCalib(unsigned int channelId) const
Definition: L1CaloPprChanCalibContainer.cxx:170
L1CaloPprChanCalibContainer::eBcidEnergyRangeLow
@ eBcidEnergyRangeLow
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::eFirCoeff2
@ eFirCoeff2
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalib.h
L1CaloPprChanCalibContainer::ePedValue
@ ePedValue
Definition: L1CaloPprChanCalibContainer.h:37
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
L1CaloPprChanCalibContainer::ePedFirSum
@ ePedFirSum
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::eLutJepNoiseCut
@ eLutJepNoiseCut
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::eLutJepPar1
@ eLutJepPar1
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::eLutCpScale
@ eLutCpScale
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::makePersistent
virtual DataObject * makePersistent() const
Definition: L1CaloPprChanCalibContainer.cxx:62
L1CaloPprChanCalibContainer::eBcidEnergyRangeHigh
@ eBcidEnergyRangeHigh
Definition: L1CaloPprChanCalibContainer.h:37
AbstractL1CaloPersistentCondition
AbstractL1CaloConditionContainer abstract base class for L1Calo persistent conditions container objec...
Definition: AbstractL1CaloPersistentCondition.h:22
L1CaloPprChanCalibContainer::eLutCpPar2
@ eLutCpPar2
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::eFirStartBit
@ eFirStartBit
Definition: L1CaloPprChanCalibContainer.h:37
L1CaloPprChanCalibContainer::eLutJepScale
@ eLutJepScale
Definition: L1CaloPprChanCalibContainer.h:37