ATLAS Offline Software
EMECHVManager.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "LArHV/EMECHVManager.h"
6 #include "LArHV/EMECHVModule.h"
8 #include <cmath>
9 #include <iostream>
10 
11 #include "EMECHVPayload.h"
12 
13 #include "StoreGate/StoreGateSvc.h"
15 #include "GaudiKernel/ISvcLocator.h"
16 #include "GaudiKernel/IToolSvc.h"
17 #include "GaudiKernel/Bootstrap.h"
18 #include "GaudiKernel/ServiceHandle.h"
19 
22 
26 
27 #ifndef SIMULATIONBASE
28 #ifndef GENERATIONBASE
30 #endif
31 #endif
32 
34 
35 #include <atomic>
36 
37 
38 namespace {
39 
40 
41 struct SimIdFunc
42 {
43  SimIdFunc();
44  std::vector<HWIdentifier> operator()(HWIdentifier id) const
45  {
46  return m_cablingTool->getLArElectrodeIDvec (id);
47  }
48  LArHVCablingSimTool* m_cablingTool;
49 };
50 
51 
52 SimIdFunc::SimIdFunc()
53 {
54  ToolHandle<LArHVCablingSimTool> tool ("LArHVCablingSimTool");
55  if (!tool.retrieve().isSuccess()) {
56  std::abort();
57  }
58  m_cablingTool = tool.get();
59 }
60 
61 
62 } // Anonymous namespace
63 
64 
66 public:
68  std::unique_ptr<EMECHVDescriptor> the_descriptor)
69  : descriptor(std::move(the_descriptor)),
70  iWheel(wheel)
71  {
72  for(int iSide=0; iSide<2; ++iSide) {
73  for(int iEta=0; iEta<8; ++iEta) {
74  for(int iPhi=0; iPhi<8; ++iPhi) {
75  for(int iSector=0; iSector<8; ++iSector) {
76  moduleArray[iSide][iEta][iPhi][iSector] = std::make_unique<EMECHVModule>(manager,wheel,iSide,iEta,iPhi,iSector);
77  }
78  }
79  }
80  }
81 
82  ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "HECHVManager");
83  if (StatusCode::SUCCESS!=detStore->retrieve(elecId, "LArElectrodeID")) {
84  throw std::runtime_error("EMECHVManager failed to retrieve LArElectrodeID");
85  }
86 
87  if (StatusCode::SUCCESS!=detStore->retrieve(hvId,"LArHVLineID")) {
88  throw std::runtime_error("EMECHVManager failed to retrieve LArHVLineID");
89  }
90  }
91  ~Clockwork() = default;
92  std::unique_ptr<EMECHVDescriptor> descriptor;
94  std::unique_ptr<const EMECHVModule> moduleArray[2][8][8][8]; // not dense
95  const LArElectrodeID* elecId = nullptr;
96  const LArHVLineID* hvId = nullptr;
97 };
98 
99 
101 {
102 public:
103  std::vector<EMECHVPayload> m_payloadArray;
104 };
105 
106 
108 = default;
109 
110 
112  : m_payload (std::move (payload))
113 {
114 }
115 
116 
119  noexcept {
120  if (this != &other) {
121  m_payload = std::move (other.m_payload);
122  }
123  return *this;
124 }
125 
126 
128 = default;
129 
130 
131 bool EMECHVManager::EMECHVData::hvOn (const EMECHVElectrode& electrode, const int& iGap) const
132 {
133  return voltage (electrode, iGap) > INVALID;
134 }
135 
136 
137 double EMECHVManager::EMECHVData::voltage (const EMECHVElectrode& electrode, const int& iGap) const
138 {
139  return m_payload->m_payloadArray[index(electrode)].voltage[iGap];
140 }
141 
142 
143 double EMECHVManager::EMECHVData::current (const EMECHVElectrode& electrode, const int& iGap) const
144 {
145  return m_payload->m_payloadArray[index(electrode)].current[iGap];
146 }
147 
148 
149 int EMECHVManager::EMECHVData::hvLineNo (const EMECHVElectrode& electrode, const int& iGap) const
150 {
151  return m_payload->m_payloadArray[index(electrode)].hvLineNo[iGap];
152 }
153 
154 
156 {
157  unsigned int electrodeIndex = electrode.getElectrodeIndex();
158  const EMECHVModule& module = electrode.getModule();
159  unsigned int etaIndex = module.getEtaIndex();
160  unsigned int phiIndex = module.getPhiIndex();
161  unsigned int sectorIndex = module.getSectorIndex();
162  unsigned int sideIndex = module.getSideIndex();
163 
164  unsigned int index=0;
165  if (module.getWheelIndex()==EMECHVModule::OUTER) index= 5376*sideIndex+768*etaIndex+96*phiIndex+24*sectorIndex+electrodeIndex;
166  else if (module.getWheelIndex()==EMECHVModule::INNER) index= 512*sideIndex+256*etaIndex+32*phiIndex+4*sectorIndex+electrodeIndex;
167 
168  return index;
169 }
170 
171 
173 {
174  std::unique_ptr<EMECHVDescriptor> descriptor;
175  if (wheel==EMECHVModule::OUTER) {
176  CellPartitioning etaBinning;
177  etaBinning.addValue(1.375);
178  etaBinning.addValue(1.50);
179  etaBinning.addValue(1.6);
180  etaBinning.addValue(1.8);
181  etaBinning.addValue(2.0);
182  etaBinning.addValue(2.1);
183  etaBinning.addValue(2.3);
184  etaBinning.addValue(2.5);
185  descriptor = std::make_unique<EMECHVDescriptor>(etaBinning,CellBinning(0.0, 2*M_PI, 8),CellBinning(0,M_PI/4.0,4));
186  }
187  else {
188  CellPartitioning etaBinning;
189  etaBinning.addValue(2.5);
190  etaBinning.addValue(2.8);
191  etaBinning.addValue(3.2);
192  descriptor = std::make_unique<EMECHVDescriptor>(etaBinning,CellBinning(0.0, 2*M_PI, 8),CellBinning(0,M_PI/4.0,8));
193  }
194  m_c = std::make_unique<Clockwork> (this, wheel, std::move(descriptor));
195 }
196 
198 {
199  return *(m_c->descriptor);
200 }
201 
202 unsigned int EMECHVManager::beginPhiIndex() const
203 {
204  return m_c->descriptor->getPhiBinning().getFirstDivisionNumber();
205 }
206 
207 unsigned int EMECHVManager::endPhiIndex() const
208 {
209  return m_c->descriptor->getPhiBinning().getFirstDivisionNumber() + m_c->descriptor->getPhiBinning().getNumDivisions();
210 }
211 
212 unsigned int EMECHVManager::beginEtaIndex() const
213 {
214  return m_c->descriptor->getEtaBinning().getFirstDivisionNumber();
215 }
216 
217 unsigned int EMECHVManager::endEtaIndex() const
218 {
219  return m_c->descriptor->getEtaBinning().getFirstDivisionNumber() + m_c->descriptor->getEtaBinning().getNumDivisions();
220 }
221 
222 const EMECHVModule& EMECHVManager::getHVModule(unsigned int iSide, unsigned int iEta, unsigned int iPhi, unsigned int iSector) const
223 {
224  return *(m_c->moduleArray[iSide][iEta][iPhi][iSector]);
225 }
226 
228 = default;
229 
231 {
232  return 0;
233 }
234 
236 {
237  return 2;
238 }
239 
241 {
242  return m_c->descriptor->getSectorBinning().getFirstDivisionNumber();
243 }
244 
245 unsigned int EMECHVManager::endSectorIndex() const
246 {
247  return m_c->descriptor->getSectorBinning().getFirstDivisionNumber() + m_c->descriptor->getSectorBinning().getNumDivisions();
248 }
249 
251 {
252  return m_c->iWheel;
253 }
254 
257  const std::vector<const CondAttrListCollection*>& attrLists) const
258 {
259  auto payload = std::make_unique<EMECHVData::Payload>();
260 
261  if (m_c->iWheel==EMECHVModule::OUTER) {
262  payload->m_payloadArray.reserve(2*7*8*4*24);
263  for (unsigned int i=0;i<10752;i++) {
264  payload->m_payloadArray[i].voltage[0] = EMECHVData::INVALID;
265  payload->m_payloadArray[i].voltage[1] = EMECHVData::INVALID;
266  }
267  }
268  else if (m_c->iWheel==EMECHVModule::INNER) {
269  payload->m_payloadArray.reserve(2*2*8*8*4);
270  for (unsigned int i=0;i<1024;i++) {
271  payload->m_payloadArray[i].voltage[0] = EMECHVData::INVALID;
272  payload->m_payloadArray[i].voltage[1] = EMECHVData::INVALID;
273  }
274  }
275 
276  for (const CondAttrListCollection* atrlistcol : attrLists) {
277 
278  for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) {
279  // Construct HWIdentifier
280  // 1. decode COOL Channel ID
281  unsigned int chanID = (*citr).first;
282  int cannode = chanID/1000;
283  int line = chanID%1000;
284 
285  // 2. Construct the identifier
286  HWIdentifier id = m_c->hvId->HVLineId(1,1,cannode,line);
287 
288 
289  std::vector<HWIdentifier> electrodeIdVec = idfunc(id);
290 
291  for(size_t i=0;i<electrodeIdVec.size();i++) {
292  HWIdentifier& elecHWID = electrodeIdVec[i];
293 
294  int detector = m_c->elecId->detector(elecHWID);
295  // check we are in EMEC
296  if (detector==2) {
297 
298 
299  unsigned int etaIndex=m_c->elecId->hv_eta(elecHWID);
300 
301  if ( (etaIndex>6 && m_c->iWheel==EMECHVModule::INNER) || (etaIndex<7 && m_c->iWheel==EMECHVModule::OUTER) ) {
302 
303  unsigned int sideIndex=1-m_c->elecId->zside(elecHWID);
304  unsigned int phiIndex=m_c->elecId->module(elecHWID); // 0 to 7
305 // rotation for C side
306  if (sideIndex==0) {
307  if (phiIndex<4) phiIndex=3-phiIndex;
308  else phiIndex=11-phiIndex;
309  }
310  unsigned int sectorIndex=m_c->elecId->hv_phi(elecHWID)-1; // 0 to 3 in Outer, 0 to 7 in Inner
311 // rotation for C side
312  if (sideIndex==0) {
313  if (m_c->iWheel==EMECHVModule::OUTER) sectorIndex=3-sectorIndex;
314  else sectorIndex=7-sectorIndex;
315  }
316  unsigned int electrodeIndex = m_c->iWheel==EMECHVModule::OUTER ?
317  m_c->elecId->electrode(elecHWID)%24:
318  m_c->elecId->electrode(elecHWID)%4;
319 // rotation for C side
320  if (sideIndex==0) {
321  if (m_c->iWheel==EMECHVModule::OUTER) electrodeIndex=23-electrodeIndex;
322  else electrodeIndex=3-electrodeIndex;
323  }
324 
325  unsigned int index = m_c->iWheel==EMECHVModule::OUTER ?
326  5376*sideIndex+768*etaIndex+96*phiIndex+24*sectorIndex+electrodeIndex:
327  512*sideIndex+256*(etaIndex-7)+32*phiIndex+4*sectorIndex+electrodeIndex;
328 
329  if (m_c->iWheel==EMECHVModule::OUTER && index>10752) {
330  MsgStream msg (Athena::getMessageSvc(), "EMECHVManager");
331  msg << MSG::ERROR << "invalid index outer " << index << " side,eta,phi,sector,electrode " << sideIndex << " " << etaIndex << " " << phiIndex <<
332  " " << sectorIndex << " " << electrodeIndex << endmsg;
333  continue;
334  }
335  if (m_c->iWheel==EMECHVModule::INNER && index>1024) {
336  MsgStream msg (Athena::getMessageSvc(), "EMECHVManager");
337  msg << MSG::ERROR << "invalid index inner " << index << " side,eta,phi,sector,electrode " << sideIndex << " " << etaIndex << " " << phiIndex <<
338  " " << sectorIndex << " " << electrodeIndex << endmsg;
339  continue;
340  }
341 
342  unsigned int gapIndex=m_c->elecId->gap(elecHWID);
343  if (gapIndex>1) {
344  MsgStream msg (Athena::getMessageSvc(), "EMECHVManager");
345  msg << MSG::ERROR << "invalid gapIndex " << gapIndex << endmsg;
346  continue;
347  }
348  if (sideIndex==0) gapIndex=1-gapIndex;
349 
350  float voltage = EMECHVData::INVALID;;
351  if (!((*citr).second)["R_VMEAS"].isNull()) voltage = ((*citr).second)["R_VMEAS"].data<float>();
352  float current = 0.;
353  if (!((*citr).second)["R_IMEAS"].isNull()) current = ((*citr).second)["R_IMEAS"].data<float>();
354 
355 
356  payload->m_payloadArray[index].voltage[gapIndex]=voltage;
357  payload->m_payloadArray[index].current[gapIndex]=current;
358  payload->m_payloadArray[index].hvLineNo[gapIndex]=chanID;
359  } // if etaIndex...
360  } // for (electrodeIdVec)
361  } // is EMEC
362  } // for (atrlistcol)
363  }
364 
365  return {std::move (payload)};
366 }
367 
368 
371 {
372  std::vector<const CondAttrListCollection*> attrLists;
373  ServiceHandle<StoreGateSvc> detStore ("DetectorStore", "EMBHVManager");
374  const CondAttrListCollection* atrlistcol = nullptr;
375  // Not a typo --- this folder has a lower-case l in the database...
376  if (detStore->retrieve(atrlistcol, "/LAR/DCS/HV/BARREl/I16").isSuccess()) {
377  attrLists.push_back (atrlistcol);
378  }
379  if (detStore->retrieve(atrlistcol, "/LAR/DCS/HV/BARREL/I8").isSuccess()) {
380  attrLists.push_back (atrlistcol);
381  }
382  return getData (SimIdFunc(), attrLists);
383 }
384 
385 
386 #if !(defined(SIMULATIONBASE) || defined(GENERATIONBASE))
389  const std::vector<const CondAttrListCollection*>& attrLists) const
390 {
391  auto idfunc = [&] (HWIdentifier id) { return hvIdMapping.getLArElectrodeIDvec(id); };
392  return getData (idfunc, attrLists);
393 }
394 
395 
397  , int gap
398  , const LArHVIdMapping* hvIdMapping) const
399 {
400  const EMECHVModule& module = electrode.getModule();
401  int etaIndex = module.getEtaIndex();
402  int phiIndex = module.getPhiIndex();
403  int sectorIndex = module.getSectorIndex();
404  int sideIndex = module.getSideIndex();
405  int electrodeIndex = electrode.getElectrodeIndex();
406 
407  // ________________________ Construct ElectrodeID ________________________________
408  int id_detector = 2;
409  int id_zside = 1-sideIndex;
410  int id_hv_eta = m_c->iWheel==EMECHVModule::OUTER ? etaIndex : etaIndex+7;
411 
412  int id_module{0};
413  if(sideIndex==0) {
414  if(phiIndex<4) {
415  id_module=3-phiIndex;
416  }
417  else {
418  id_module=11-phiIndex;
419  }
420  }
421  else {
422  id_module = phiIndex;
423  }
424 
425  int id_hv_phi{0};
426  if(sideIndex==0) {
427  if (m_c->iWheel==EMECHVModule::OUTER) {
428  id_hv_phi=4-sectorIndex;
429  }
430  else {
431  id_hv_phi=8-sectorIndex;
432  }
433  }
434  else {
435  id_hv_phi=sectorIndex+1;
436  }
437 
438  int tmpElec{0};
439  if(sideIndex==0) {
440  if (m_c->iWheel==EMECHVModule::OUTER) {
441  tmpElec = 23-electrodeIndex;
442  }
443  else {
444  tmpElec = 3 - electrodeIndex;
445  }
446  }
447  else {
448  tmpElec = electrodeIndex;
449  }
450  int id_electrode = m_c->iWheel==EMECHVModule::OUTER
451  ? (id_hv_phi-1)*24 + tmpElec
452  : (id_hv_phi-1)*4 + tmpElec;
453 
454  int id_gap = sideIndex==0 ? 1-gap : gap;
455 
456  HWIdentifier elecHWID = m_c->elecId->ElectrodeId(id_detector
457  , id_zside
458  , id_module
459  , id_hv_phi
460  , id_hv_eta
461  , id_gap
462  , id_electrode);
463  // ________________________ Construct ElectrodeID ________________________________
464 
465  // Get LArHVLineID corresponding to a given LArElectrodeId
466  HWIdentifier id = hvIdMapping->getLArHVLineID(elecHWID);
467 
468  // Extract HV Line No
469  return m_c->hvId->can_node(id)*1000 + m_c->hvId->hv_line(id);
470 }
471 #endif
fillPileUpNoiseLumi.current
current
Definition: fillPileUpNoiseLumi.py:52
EMECHVManager::EMECHVData::hvOn
bool hvOn(const EMECHVElectrode &electrode, const int &iGap) const
Definition: EMECHVManager.cxx:131
EMECHVManager::beginSideIndex
static unsigned int beginSideIndex()
Definition: EMECHVManager.cxx:230
EMECHVElectrode.h
checkFileSG.line
line
Definition: checkFileSG.py:75
EMECHVManager::getHVModule
const EMECHVModule & getHVModule(unsigned int iSide, unsigned int iEta, unsigned int iPhi, unsigned int iSector) const
Definition: EMECHVManager.cxx:222
CondAttrListCollection.h
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
getMessageSvc.h
singleton-like access to IMessageSvc via open function and helper
EMECHVManager::Clockwork::~Clockwork
~Clockwork()=default
LArElectrodeID
Helper for the Liquid Argon Calorimeter cell at the electrode level.
Definition: LArElectrodeID.h:101
index
Definition: index.py:1
EMECHVManager::Clockwork::iWheel
IOType iWheel
Definition: EMECHVManager.cxx:93
EMECHVPayload.h
EMECHVManager::getData
EMECHVData getData(const LArHVIdMapping &hvIdMapping, const std::vector< const CondAttrListCollection * > &attrLists) const
Definition: EMECHVManager.cxx:388
EMECHVManager::endSectorIndex
unsigned int endSectorIndex() const
Definition: EMECHVManager.cxx:245
EMECHVManager::EMECHVData::voltage
double voltage(const EMECHVElectrode &electrode, const int &iGap) const
Definition: EMECHVManager.cxx:137
EMECHVManager::endEtaIndex
unsigned int endEtaIndex() const
Definition: EMECHVManager.cxx:217
EMECHVManager.h
M_PI
#define M_PI
Definition: ActiveFraction.h:11
EMECHVManager::endPhiIndex
unsigned int endPhiIndex() const
Definition: EMECHVManager.cxx:207
LArHVIdMapping::getLArHVLineID
const HWIdentifier getLArHVLineID(HWIdentifier &electrodeId) const
Return the LArHVLineID corresponding to a given LArElectrodeId.
Definition: LArHVIdMapping.cxx:22
EMECHVManager::EMECHVData::operator=
EMECHVData & operator=(EMECHVData &&other) noexcept
Definition: EMECHVManager.cxx:118
LArHVLineID.h
HWIdentifier
Definition: HWIdentifier.h:13
CondAttrListCollection
This class is a collection of AttributeLists where each one is associated with a channel number....
Definition: CondAttrListCollection.h:52
CxxUtils::INVALID
@ INVALID
Definition: CachedValue.h:28
AthenaAttributeList.h
CaloSwCorrections.gap
def gap(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:212
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
EMECHVModule
Definition: EMECHVModule.h:20
TRT::Hit::detector
@ detector
Definition: HitInfo.h:78
EMECHVManager::getWheelIndex
EMECHVManager::IOType getWheelIndex() const
Definition: EMECHVManager.cxx:250
EMECHVManager::beginEtaIndex
unsigned int beginEtaIndex() const
Definition: EMECHVManager.cxx:212
python.PyAthena.module
module
Definition: PyAthena.py:134
EMECHVManager::EMECHVData::hvLineNo
int hvLineNo(const EMECHVElectrode &electrode, const int &iGap) const
Definition: EMECHVManager.cxx:149
EMECHVDescriptor
Definition: EMECHVDescriptor.h:11
EMECHVManager::m_c
std::unique_ptr< const Clockwork > m_c
Definition: EMECHVManager.h:105
EMECHVModule::INNER
@ INNER
Definition: EMECHVModule.h:22
EMECHVManager::EMECHVData::Payload::m_payloadArray
std::vector< EMECHVPayload > m_payloadArray
Definition: EMECHVManager.cxx:103
LArHVCablingSimTool
Mapping from HV lines to electrodes.
Definition: LArHVCablingSimTool.h:29
lumiFormat.i
int i
Definition: lumiFormat.py:92
EMECHVManager::EMECHVData
Definition: EMECHVManager.h:41
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
LArHVIdMapping.h
EMECHVManager::EMECHVData::INVALID
static constexpr double INVALID
Definition: EMECHVManager.h:43
EMECHVManager::EMECHVData::current
double current(const EMECHVElectrode &electrode, const int &iGap) const
Definition: EMECHVManager.cxx:143
EMECHVManager::Clockwork::elecId
const LArElectrodeID * elecId
Definition: EMECHVManager.cxx:95
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
EMECHVManager::idfunc_t
std::function< std::vector< HWIdentifier >(HWIdentifier)> idfunc_t
Definition: EMECHVManager.h:98
HWIdentifier.h
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:194
EMECHVManager::EMECHVData::~EMECHVData
~EMECHVData()
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:453
EMECHVManager::endSideIndex
static unsigned int endSideIndex()
Definition: EMECHVManager.cxx:235
EMECHVElectrode::getModule
const EMECHVModule & getModule() const
Definition: EMECHVElectrode.cxx:37
EMECHVManager::Clockwork
Definition: EMECHVManager.cxx:65
EMECHVManager::~EMECHVManager
~EMECHVManager()
PixelModuleFeMask_create_db.payload
string payload
Definition: PixelModuleFeMask_create_db.py:69
Trk::iPhi
@ iPhi
Definition: ParamDefs.h:53
eflowRec::phiIndex
unsigned int phiIndex(float phi, float binsize)
calculate phi index for a given phi
Definition: EtaPhiLUT.cxx:23
EMECHVModule::OUTER
@ OUTER
Definition: EMECHVModule.h:22
EMECHVManager::getDataSim
EMECHVData getDataSim() const
Definition: EMECHVManager.cxx:370
EMECHVManager::Clockwork::moduleArray
std::unique_ptr< const EMECHVModule > moduleArray[2][8][8][8]
Definition: EMECHVManager.cxx:94
DeMoScan.index
string index
Definition: DeMoScan.py:362
EMECHVManager::EMECHVManager
EMECHVManager(IOType wheel)
Definition: EMECHVManager.cxx:172
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
LArHVIdMapping
Definition: LArHVIdMapping.h:21
CondAttrListCollection::const_iterator
ChanAttrListMap::const_iterator const_iterator
Definition: CondAttrListCollection.h:63
EMECHVManager::beginPhiIndex
unsigned int beginPhiIndex() const
Definition: EMECHVManager.cxx:202
EMECHVModule::IOType
IOType
Definition: EMECHVModule.h:22
EMECHVManager::Clockwork::hvId
const LArHVLineID * hvId
Definition: EMECHVManager.cxx:96
EMECHVElectrode::getElectrodeIndex
unsigned int getElectrodeIndex() const
Definition: EMECHVElectrode.cxx:27
EMECHVManager::getDescriptor
const EMECHVDescriptor & getDescriptor() const
Definition: EMECHVManager.cxx:197
EMECHVManager::beginSectorIndex
unsigned int beginSectorIndex() const
Definition: EMECHVManager.cxx:240
LArHVCablingSimTool.h
EMECHVManager::hvLineNo
int hvLineNo(const EMECHVElectrode &electrode, int gap, const LArHVIdMapping *hvIdMapping) const
Definition: EMECHVManager.cxx:396
python.Logging.manager
manager
Definition: PhysicsAnalysis/D3PDTools/AnaAlgorithm/python/Logging.py:92
LArElectrodeID.h
EMECHVManager::Clockwork::Clockwork
Clockwork(const EMECHVManager *manager, IOType wheel, std::unique_ptr< EMECHVDescriptor > the_descriptor)
Definition: EMECHVManager.cxx:67
EMECHVManager::EMECHVData::index
static int index(const EMECHVElectrode &electrode)
Definition: EMECHVManager.cxx:155
EMECHVManager::EMECHVData::Payload
Definition: EMECHVManager.cxx:101
EMECHVElectrode
Definition: EMECHVElectrode.h:15
EMECHVManager
This class provides direct access to information on the HV electrodes within the EMEC....
Definition: EMECHVManager.h:36
EMECHVModule.h
EMECHVManager::EMECHVData::EMECHVData
EMECHVData()
xAOD::iEta
setScale setgFexType iEta
Definition: gFexJetRoI_v1.cxx:74
StoreGateSvc.h
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
LArHVIdMapping::getLArElectrodeIDvec
const std::vector< HWIdentifier > & getLArElectrodeIDvec(HWIdentifier &hvlineId) const
Return a vector of LArElectrodeID corresponding to a given LArHVLineID.
Definition: LArHVIdMapping.cxx:83
EMECHVManager::Clockwork::descriptor
std::unique_ptr< EMECHVDescriptor > descriptor
Definition: EMECHVManager.cxx:92
ServiceHandle< StoreGateSvc >
LArHVLineID
Helper for the Liquid Argon Calorimeter High-Voltage identifiers.
Definition: LArHVLineID.h:48