ATLAS Offline Software
LArCoverageAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // ********************************************************************
6 //
7 // NAME: LArCoverageAlg.cxx
8 // PACKAGE: LArMonitoring
9 //
10 // AUTHOR: Margherita Spalla, migrated from LArCoverage by Jessica Leveque
11 //
12 // Class for monitoring : Detector cells in the readout
13 // Masked Channels from database
14 // Availability of calibration constants
15 // Bad calibration at FEB level
16 // ********************************************************************
17 
18 #include "LArCoverageAlg.h"
21 #include "CaloDetDescr/CaloDetDescrElement.h"
22 
23 
24 
25 #include <sstream>
26 #include <iomanip>
27 #include <fstream>
28 #include <string>
29 #include <vector>
30 #include <cstdlib>
31 #include <functional>
32 #include <map>
33 #include <utility>
34 
35 
36 
37 
38 using namespace std;
39 
40 /*---------------------------------------------------------*/
41 LArCoverageAlg::LArCoverageAlg(const std::string& name, ISvcLocator* pSvcLocator )
42  : AthMonitorAlgorithm(name,pSvcLocator)
43 {
44 
45  m_LArOnlineIDHelper = nullptr;
46  m_LArEM_IDHelper = nullptr;
47  m_LArFCAL_IDHelper = nullptr;
48  m_LArHEC_IDHelper = nullptr;
49  m_caloIdMgr = nullptr;
50  }
51 
52 /*---------------------------------------------------------*/
54 {}
55 
56 /*---------------------------------------------------------*/
59 {
60  ATH_MSG_INFO( "Initialize LArCoverageAlg" );
61 
63  TString warn_binning="";
64  if(m_NphiBinsEMB1!=256) warn_binning="NphiBinsEMB1!=256 ";
65  if(m_NphiBinsEMEC2!=256) warn_binning="NphiBinsEMEC2!=256 ";
66  if((int)(m_NphiBinsHEC.size())<m_Nsample) ATH_MSG_ERROR("NphiBinsHEC must contain " << m_Nsample << " elements");
67  if(m_NphiBinsHEC[0]!=64) warn_binning="NphiBinsHEC[0]!=64 ";
68  if(m_NphiBinsHEC[1]!=64) warn_binning="NphiBinsHEC[1]!=64 ";
69  if(m_NphiBinsHEC[2]!=64) warn_binning="NphiBinsHEC[2]!=64 ";
70  if(m_NphiBinsHEC[3]!=64) warn_binning="NphiBinsHEC[3]!=64 ";
71 
72 
78 
79  ATH_CHECK( detStore()->retrieve(m_LArOnlineIDHelper, "LArOnlineID") );
80  ATH_CHECK( m_BCKey.initialize() );
81  ATH_CHECK( m_BFKey.initialize() );
83 
86 
89 
90 
93 
96 
97  std::vector<std::string> availableErrorCodesStrs;
99  for (const auto& code : m_availableErrorCodes) {
100  availableErrorCodesStrs.emplace_back(Form("%d", code));
101  m_availableErrorCodesPairs.emplace_back(code, availableErrorCodesStrs.back());
102  }
103 
105  m_CaloNoiseGroupArrEM = Monitored::buildToolMap<int>(m_tools,m_CaloNoiseToolGroupName+"EM",m_Nsample);
106  m_CaloNoiseGroupArrHEC = Monitored::buildToolMap<int>(m_tools,m_CaloNoiseToolGroupName+"HEC",m_Nsample);
107  m_CaloNoiseGroupArrFCAL = Monitored::buildToolMap<int>(m_tools,m_CaloNoiseToolGroupName+"FCal",m_Nsample);
108 
109  m_CoverageToolArrayEMBA = Monitored::buildToolMap<int>(m_tools,m_CoverageHWGroupName+"EMBA",availableErrorCodesStrs);
110  m_CoverageToolArrayEMECA = Monitored::buildToolMap<int>(m_tools,m_CoverageHWGroupName+"EMECA",availableErrorCodesStrs);
111  m_CoverageToolArrayHECA = Monitored::buildToolMap<int>(m_tools,m_CoverageHWGroupName+"HECA",availableErrorCodesStrs);
112  m_CoverageToolArrayFCalA = Monitored::buildToolMap<int>(m_tools,m_CoverageHWGroupName+"FCalA",availableErrorCodesStrs);
113  m_CoverageToolArrayEMBC = Monitored::buildToolMap<int>(m_tools,m_CoverageHWGroupName+"EMBC",availableErrorCodesStrs);
114  m_CoverageToolArrayEMECC = Monitored::buildToolMap<int>(m_tools,m_CoverageHWGroupName+"EMECC",availableErrorCodesStrs);
115  m_CoverageToolArrayHECC = Monitored::buildToolMap<int>(m_tools,m_CoverageHWGroupName+"HECC",availableErrorCodesStrs);
116  m_CoverageToolArrayFCalC = Monitored::buildToolMap<int>(m_tools,m_CoverageHWGroupName+"FCalC",availableErrorCodesStrs);
117 
118  m_BadChannelToolArrayBarrel = Monitored::buildToolMap<int>(m_tools,m_BadChannelsGroupName+"Barrel",m_Sides);
119  m_BadChannelToolArrayEndcap = Monitored::buildToolMap<int>(m_tools,m_BadChannelsGroupName+"EndCap",m_Sides);
120 
123 }
124 
125 
126 
127 /*---------------------------------------------------------*/
128 StatusCode
129 LArCoverageAlg::fillHistograms( const EventContext& ctx ) const
130 {
131  ATH_MSG_DEBUG( "in fillHists()" );
132 
133  if(ctx.evt()+1 > m_nevents ) return StatusCode::SUCCESS; //ctx.evt() counts from 0
134 
135  auto noise = Monitored::Scalar<float>("noise",0.);
136  auto etaChan = Monitored::Scalar<float>("etaChan",1e3);
137  auto flag = Monitored::Scalar<int>("flag",0);
138  auto single_channel = Monitored::Scalar<int>("single_channel",-1);
139  auto lb1 = Monitored::Scalar<float>("lb1",0);
140  auto lb1_x = Monitored::Scalar<float>("lb1_x",0);
141 
143  auto mon_FtSlot = Monitored::Scalar<int>("mon_FtSlot",-1);
144  std::vector<LArChanHelp> the_coverageMap(0);
145  auto ref_the_coverageMap = std::ref(the_coverageMap);
146  //Note for when we'll have the proper histogram class: the feedthrough-slot coverage plot must be filled with the latest value, the eta-phi coverage plot must be filled with the maximum value
147  auto mon_ChanFtSlot = Monitored::Collection("mon_ChanFtSlot",ref_the_coverageMap,[](const LArChanHelp& ch){return ch.getChFtSlot();});
148  auto mon_Channels = Monitored::Collection("mon_Channels",ref_the_coverageMap,[](const LArChanHelp& ch){return ch.getChNumber();});
149  auto mon_Eta = Monitored::Collection("mon_Eta",ref_the_coverageMap,[](const LArChanHelp& ch){return ch.getChEta();});
150  auto mon_Phi = Monitored::Collection("mon_Phi",ref_the_coverageMap,[](const LArChanHelp& ch){return ch.getChPhi();});
151 
152  //cutmasks for filling the proper partition
153  auto mon_isSampling0 = Monitored::Collection("isSampl0",ref_the_coverageMap,[](const LArChanHelp& ch){return (ch.getChSampling()==0);});
154  auto mon_isSampling1 = Monitored::Collection("isSampl1",ref_the_coverageMap,[](const LArChanHelp& ch){return (ch.getChSampling()==1);});
155  auto mon_isSampling2 = Monitored::Collection("isSampl2",ref_the_coverageMap,[](const LArChanHelp& ch){return (ch.getChSampling()==2);});
156  auto mon_isSampling3 = Monitored::Collection("isSampl3",ref_the_coverageMap,[](const LArChanHelp& ch){return (ch.getChSampling()==3);});
157 
163  std::map<int,std::map<std::string,std::vector<LArChanHelp> > > coverageMap;
164  for(auto code : m_availableErrorCodes) {
165  for(const auto & part : m_CoverageBarrelPartitions) coverageMap[code][part] = std::vector<LArChanHelp>(0);
166  for(const auto & part : m_CoverageEndcapPartitions) coverageMap[code][part] = std::vector<LArChanHelp>(0);
167  }
168 
170  std::vector<long> knownDeadFEBs(0);
171  std::vector<long> knownErrorFEBs(0);
172 
175  ATH_CHECK(caloMgrHandle.isValid());
176  const CaloDetDescrManager* ddman = *caloMgrHandle;
177 
180  const LArOnOffIdMapping* larCabling{*cablingHdl};
181  if(!larCabling){
182  ATH_MSG_ERROR("Do not have mapping object " << m_cablingKey.key() );
183  return StatusCode::FAILURE;
184  }
185 
187  SG::ReadHandle<LArRawChannelContainer> pRawChannelsContainer(m_rawChannelsKey, ctx);
188  if(! pRawChannelsContainer.isValid() ) {
189  ATH_MSG_WARNING( "Can\'t retrieve LArRawChannelContainer with key " << m_rawChannelsKey );
190  return StatusCode::SUCCESS;
191  }
192 
195  const CaloNoise* noiseCDO=*noiseHdl;
196 
197  if(ctx.evt() == 0){ //first event
198  lb1 = (float)ctx.eventID().lumi_block();
200  }
201 
202 
205  const LArBadChannelCont* bcCont{*bch};
206 
207 
208  ATH_MSG_DEBUG( "collect known faulty FEBs" );
210  const LArBadFebCont* mfCont{*bf};
211  if(!mfCont) ATH_MSG_WARNING( "Do not have Missing FEBs container !!" );
212  else {
213  for (std::vector<HWIdentifier>::const_iterator allFeb = m_LArOnlineIDHelper->feb_begin();allFeb != m_LArOnlineIDHelper->feb_end(); ++allFeb) {
214  HWIdentifier febid = HWIdentifier(*allFeb);
215  const LArBadFeb febStatus = mfCont->status(febid);
216  if (febStatus.deadAll() || febStatus.deadReadout()) knownDeadFEBs.push_back(febid.get_compact());
217  if(febStatus.inError()) knownErrorFEBs.push_back(febid.get_compact());
218  }
219  }
220 
221 
222  ATH_MSG_DEBUG( "now loop on channels" );
224  for (const LArRawChannel& pRawChannel : *pRawChannelsContainer) {
225  uint16_t provenanceChan = pRawChannel.provenance();
226  float energyChan = pRawChannel.energy();
227  HWIdentifier id = pRawChannel.hardwareID();
228  Identifier offlineID = larCabling->cnvToIdentifier(id);
229 
231  if(!larCabling->isOnlineConnected(id)) continue;
232 
234  HWIdentifier febID = m_LArOnlineIDHelper->feb_Id(id);
235  HWIdentifier feedthroughID = m_LArOnlineIDHelper->feedthrough_Id(id);
236  single_channel = m_LArOnlineIDHelper->channel(id);
237  int slot = m_LArOnlineIDHelper->slot(febID);
238  int ft = m_LArOnlineIDHelper->feedthrough(feedthroughID);
239 
241  float phiChan = 0.;
242  const CaloDetDescrElement* caloDetElement = ddman->get_element(offlineID);
243  if(caloDetElement == 0 ){
244  ATH_MSG_ERROR( "Cannot retrieve (eta,phi) coordinates for raw channels" );
245  continue;
246  }else{
247  etaChan = caloDetElement->eta_raw();
248  phiChan = caloDetElement->phi_raw();
249  }
250 
252  if (m_LArOnlineIDHelper->isHECchannel(id)) phiChan = CaloPhiRange::fix(phiChan);
253 
255  const auto idx = caloDetElement->getSubCalo();
256  if (idx == CaloCell_ID::NOT_VALID){
257  ATH_MSG_ERROR( "Invalid calo cell index" );
258  continue;
259  }
260  noise = noiseCDO->getNoise(offlineID,m_highestGain[idx]);
261 
262  if(ctx.evt() == 0){ //first event
264  std::string cnGroup_toFill="";
266  int sampling = m_LArEM_IDHelper->sampling(offlineID);
267  if(sampling>=0 && sampling<m_Nsample) fill(m_tools[m_CaloNoiseGroupArrEM.at(sampling)],etaChan,noise);
268  else ATH_MSG_WARNING( "LAr IDhelper returned unexpected sampling: " << sampling << ". Group EM could not be filled.");
269  }
271  int sampling = m_LArHEC_IDHelper->sampling(offlineID);
272  if(sampling>=0 && sampling<m_Nsample) fill(m_tools[m_CaloNoiseGroupArrHEC.at(sampling)],etaChan,noise);
273  else ATH_MSG_WARNING( "LAr IDhelper returned unexpected sampling: " << sampling << ". Group HEC could not be filled.");
274  }
276  int sampling = m_LArFCAL_IDHelper->module(offlineID);
277  if(sampling>=0 && sampling<m_Nsample) fill(m_tools[m_CaloNoiseGroupArrFCAL.at(sampling)],etaChan,noise);
278  else ATH_MSG_WARNING( "LAr IDhelper returned unexpected sampling: " << sampling << ". Group FCAL could not be filled.");
279  }
280 
281 
283  flag = DBflag(id,bcCont);
284  if (flag!=0) {//only fill bad channels
285  std::string the_side= (etaChan >= 0 ? "A" : "C");
287  mon_FtSlot=ft*m_NslotEMB+slot;
288  fill(m_tools[m_BadChannelToolArrayBarrel.at(the_side)],mon_FtSlot,single_channel,flag);
289  }else{
290  mon_FtSlot=ft*m_NslotEMEC+slot;
291  fill(m_tools[m_BadChannelToolArrayEndcap.at(the_side)],mon_FtSlot,single_channel,flag);
292  }
293  }
294  } //end of 'if(ctx.evt() == 0)'
295 
296 
297  //
298  // Compute cells status
299  //
300 
301  int cellContent = 0;
302 
309  if (LArProv::test(provenanceChan,provPattern)) {
310  if(m_bcMask.cellShouldBeMasked(bcCont,id)) cellContent=2;
311  else if(energyChan != 0) cellContent=3;
312  }
313 
319  if(knownDeadFEBs.size()>0 && std::find(knownDeadFEBs.begin(), knownDeadFEBs.end(), febID.get_compact())!=knownDeadFEBs.end()) {
320  if(cellContent==0) cellContent=1;
321  else cellContent=4;
322  }
323  if(knownErrorFEBs.size()>0 && std::find(knownErrorFEBs.begin(), knownErrorFEBs.end(), febID.get_compact())!=knownErrorFEBs.end())cellContent=1;
324 
326  const auto cellStatusCodeItr = std::find(m_availableErrorCodes.begin(),
327  m_availableErrorCodes.end(),
328  cellContent);
329  if(cellStatusCodeItr!=m_availableErrorCodes.end()) {
330  std::string part;
331  int sampling=-1;
332  int i_ftslot=-1;
333  double etaFCal=0.;
334  double phiFCal=0.;
335  //set the variables for partition, sampling etc.
336 
339  part="EMB";
340  sampling = m_LArEM_IDHelper->sampling(offlineID);
341  i_ftslot=ft*m_NslotEMB+slot-1;
342  }
345  part="EMEC";
346  sampling = m_LArEM_IDHelper->sampling(offlineID);
347  i_ftslot=ft*m_NslotEMEC+slot-1;
348  }
351  part="HEC";
352  sampling = m_LArHEC_IDHelper->sampling(offlineID);
353  i_ftslot=ft*m_NslotHEC+slot-1;
354  }
357  part="FCal";
358  sampling = m_LArFCAL_IDHelper->module(offlineID);
359  i_ftslot=ft*m_NslotFCAL+slot-1;
360  etaFCal = m_LArFCAL_IDHelper->eta(offlineID);
361  phiFCal = m_LArFCAL_IDHelper->phi(offlineID);
362  }
363 
364  //set A-C side
365  if(etaChan >= 0) part+="A";
366  else part+="C";
367 
368  if(part.find("FCal") != std::string::npos) coverageMap[cellContent][part].push_back(LArChanHelp(single_channel,i_ftslot,sampling,etaFCal,phiFCal));
369  else coverageMap[cellContent][part].push_back(LArChanHelp(single_channel,i_ftslot,sampling,etaChan,phiChan));
370  }//end of 'if cellContent in availableErrors'
371  }// end Raw Channels Loop
372 
373 
376  ATH_MSG_DEBUG( "now fill coverage plots");
377 
378  for (const auto& chanStatusCodePair : m_availableErrorCodesPairs) {
379  //EMBA
380  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["EMBA"];
381  if(ref_the_coverageMap.get().size()!=0) fill(m_tools[m_CoverageToolArrayEMBA.at(chanStatusCodePair.second)],mon_Channels,mon_ChanFtSlot,mon_Eta,mon_Phi,mon_isSampling0,mon_isSampling1,mon_isSampling2,mon_isSampling3);
382  //EMBC
383  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["EMBC"];
384  if(ref_the_coverageMap.get().size()!=0) fill(m_tools[m_CoverageToolArrayEMBC.at(chanStatusCodePair.second)],mon_Channels,mon_ChanFtSlot,mon_Eta,mon_Phi,mon_isSampling0,mon_isSampling1,mon_isSampling2,mon_isSampling3);
385 
386  //EMECA
387  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["EMECA"];
388  if(ref_the_coverageMap.get().size()!=0) fill(m_tools[m_CoverageToolArrayEMECA.at(chanStatusCodePair.second)],mon_Channels,mon_ChanFtSlot,mon_Eta,mon_Phi,mon_isSampling0,mon_isSampling1,mon_isSampling2,mon_isSampling3);
389 
390  //EMECC
391  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["EMECC"];
392  if(ref_the_coverageMap.get().size()!=0) fill(m_tools[m_CoverageToolArrayEMECC.at(chanStatusCodePair.second)],mon_Channels,mon_ChanFtSlot,mon_Eta,mon_Phi,mon_isSampling0,mon_isSampling1,mon_isSampling2,mon_isSampling3);
393 
394  //HECA
395  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["HECA"];
396  if(ref_the_coverageMap.get().size()!=0) fill(m_tools[m_CoverageToolArrayHECA.at(chanStatusCodePair.second)],mon_Channels,mon_ChanFtSlot,mon_Eta,mon_Phi,mon_isSampling0,mon_isSampling1,mon_isSampling2,mon_isSampling3);
397 
398  //HECC
399  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["HECC"];
400  if(ref_the_coverageMap.get().size()!=0) fill(m_tools[m_CoverageToolArrayHECC.at(chanStatusCodePair.second)],mon_Channels,mon_ChanFtSlot,mon_Eta,mon_Phi,mon_isSampling0,mon_isSampling1,mon_isSampling2,mon_isSampling3);
401 
402  //FCalA
403  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["FCalA"];
404  if(ref_the_coverageMap.get().size()!=0) fill(m_tools[m_CoverageToolArrayFCalA.at(chanStatusCodePair.second)],mon_Channels,mon_ChanFtSlot,mon_Eta,mon_Phi,mon_isSampling0,mon_isSampling1,mon_isSampling2,mon_isSampling3);
405 
406  //FCalC
407  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["FCalC"];
408  if(ref_the_coverageMap.get().size()!=0) fill(m_tools[m_CoverageToolArrayFCalC.at(chanStatusCodePair.second)],mon_Channels,mon_ChanFtSlot,mon_Eta,mon_Phi,mon_isSampling0,mon_isSampling1,mon_isSampling2,mon_isSampling3);
409 
410  }
411 
412  return StatusCode::SUCCESS;
413 }
414 
415 
416 
417 
418 /*---------------------------------------------------------*/
419 int LArCoverageAlg::DBflag(HWIdentifier onID, const LArBadChannelCont* bcCont) const
420 {
421  if(!bcCont) {
422  ATH_MSG_WARNING( "Do not have Bad chan container " << m_BCKey.key() );
423  return -1;
424  }
425 
426  LArBadChannel bc = bcCont->status(onID);
427 
428  int flag = 0;
429  if(bc.deadCalib()) flag = 1;
430  if(bc.lowNoiseHG()||bc.lowNoiseMG()||bc.lowNoiseLG()) flag = 2;
431  if(bc.distorted()) flag = 3;
432  if(bc.unstable()) flag = 4;
433  if(bc.sporadicBurstNoise()) flag = 5;
434  if(bc.highNoiseHG()|| bc.highNoiseMG() || bc.highNoiseLG()) flag = 6;
435  if(bc.deadReadout()||bc.deadPhys()||bc.almostDead()||bc.shortProblem()) flag = 7;
436 
437  return flag;
438  }
439 
440 
441 
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
sendEI_SPB.ch
ch
Definition: sendEI_SPB.py:35
PlotCalibFromCool.ft
ft
Definition: PlotCalibFromCool.py:329
DeMoUpdate.lb1
def lb1
Definition: DeMoUpdate.py:1052
LArCoverageAlg::m_nevents
Gaudi::Property< EventContext::ContextEvt_t > m_nevents
Properties.
Definition: LArCoverageAlg.h:104
LArCoverageAlg::m_BadChannelToolArrayBarrel
std::map< std::string, int > m_BadChannelToolArrayBarrel
Definition: LArCoverageAlg.h:145
SG::ReadCondHandle
Definition: ReadCondHandle.h:40
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:138
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
LArCoverageAlg::m_BadChannelsGroupName
Gaudi::Property< std::string > m_BadChannelsGroupName
Definition: LArCoverageAlg.h:121
LArBadXCont
Conditions-Data class holding LAr Bad Channel or Bad Feb information.
Definition: LArBadChannelCont.h:28
LArCoverageAlg::m_CaloNoiseToolGroupName
Gaudi::Property< std::string > m_CaloNoiseToolGroupName
Definition: LArCoverageAlg.h:120
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
CaloIdManager::getEM_ID
const LArEM_ID * getEM_ID(void) const
Definition: CaloIdManager.cxx:80
CaloDetDescrManager_Base::get_element
const CaloDetDescrElement * get_element(const Identifier &cellId) const
get element by its identifier
Definition: CaloDetDescrManager.cxx:159
LArCoverageAlg::m_BCKey
SG::ReadCondHandleKey< LArBadChannelCont > m_BCKey
Definition: LArCoverageAlg.h:95
LArBadFeb::deadReadout
bool deadReadout() const
FEB is not sending readout data, but the L1 trigger path is working.
Definition: LArBadFeb.h:33
LArOnlineID_Base::slot
int slot(const HWIdentifier id) const
Return the slot number of a hardware cell identifier: slot = [1,15] Slot-ID in top part of the crat...
Definition: LArOnlineID_Base.cxx:1667
LArBadChannelMask::buildBitMask
StatusCode buildBitMask(const std::vector< std::string > &problemsToMask, MsgStream &msg)
Definition: LArBadChannelMask.cxx:10
LArFCAL_Base_ID::module
int module(const Identifier id) const
module [1,3]
LArCoverageAlg::m_LArEM_IDHelper
const LArEM_ID * m_LArEM_IDHelper
Definition: LArCoverageAlg.h:78
LArCoverageAlg::m_rawChannelsKey
SG::ReadHandleKey< LArRawChannelContainer > m_rawChannelsKey
Definition: LArCoverageAlg.h:94
LArEM_Base_ID::sampling
int sampling(const Identifier id) const
return sampling according to :
LArCoverageAlg::LArChanHelp
Definition: LArCoverageAlg.h:57
LArOnlineID_Base::feb_begin
id_iterator feb_begin() const
Returns an iterator pointing to a feb identifier collection.
Definition: LArOnlineID_Base.cxx:1616
LArCoverageAlg::m_CoverageToolArrayEMECA
std::map< std::string, int > m_CoverageToolArrayEMECA
Definition: LArCoverageAlg.h:137
LArCoverageAlg::m_CoverageToolArrayEMECC
std::map< std::string, int > m_CoverageToolArrayEMECC
Definition: LArCoverageAlg.h:141
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
LArCoverageAlg::m_problemsToMask
Gaudi::Property< std::vector< std::string > > m_problemsToMask
Handle to bad-channel tools.
Definition: LArCoverageAlg.h:91
CaloNoise::getNoise
float getNoise(const IdentifierHash h, const int gain) const
Accessor by IdentifierHash and gain.
Definition: CaloNoise.h:34
LArBadChannelMask::cellShouldBeMasked
bool cellShouldBeMasked(const LArBadChannelCont *bcCont, const HWIdentifier &hardwareId) const
Definition: LArBadChannelMask.h:42
LArBadXCont::status
LArBC_t status(const HWIdentifier channel) const
Query the status of a particular channel or FEB This is the main client access method.
LArCoverageAlg::LArCoverageAlg
LArCoverageAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: LArCoverageAlg.cxx:41
LArCoverageAlg::m_NphiBinsHEC
Gaudi::Property< std::vector< int > > m_NphiBinsHEC
Definition: LArCoverageAlg.h:117
LArFCAL_Base_ID::eta
int eta(const Identifier id) const
eta [0,63] module 1 ; [0,31] module 2 ; [0,15] module 3
CaloDetDescrElement::eta_raw
float eta_raw() const
cell eta_raw
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:350
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
Monitored::Collection
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
Definition: MonitoredCollection.h:38
LArCoverageAlg::m_NphiBinsEMB1
Gaudi::Property< int > m_NphiBinsEMB1
Definition: LArCoverageAlg.h:115
LArCoverageAlg::m_CoverageHWGroupName
Gaudi::Property< std::string > m_CoverageHWGroupName
Definition: LArCoverageAlg.h:122
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:39
CaloDetDescrElement::getSubCalo
CaloCell_ID::SUBCALO getSubCalo() const
cell subcalo
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:433
LArCoverageAlg::m_caloMgrKey
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloMgrKey
Definition: LArCoverageAlg.h:97
LArCoverageAlg::m_CaloNoiseGroupArrHEC
std::vector< int > m_CaloNoiseGroupArrHEC
Definition: LArCoverageAlg.h:133
LArCoverageAlg::m_availableErrorCodes
Gaudi::Property< std::vector< int > > m_availableErrorCodes
Definition: LArCoverageAlg.h:126
LArCoverageAlg::m_CoverageToolArrayEMBC
std::map< std::string, int > m_CoverageToolArrayEMBC
Definition: LArCoverageAlg.h:140
LArOnlineID_Base::isFCALchannel
bool isFCALchannel(const HWIdentifier id) const
Definition: LArOnlineID_Base.cxx:1363
LArFCAL_Base_ID::phi
int phi(const Identifier id) const
phi [0,15]
LArCoverageAlg::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Handle to LArOnOffIdMapping (former LArCablingService)
Definition: LArCoverageAlg.h:85
histSizes.code
code
Definition: histSizes.py:129
LArOnlineID_Base::channel
int channel(const HWIdentifier id) const
Return the channel number of a hardware cell identifier channel = [0,127] in all FEB.
Definition: LArOnlineID_Base.cxx:1673
CaloIdManager::getHEC_ID
const LArHEC_ID * getHEC_ID(void) const
Definition: CaloIdManager.cxx:95
LArOnlineID::isEMECchannel
bool isEMECchannel(const HWIdentifier id) const override final
Definition: LArOnlineID.cxx:573
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:93
LArCoverageAlg::m_LArHEC_IDHelper
const LArHEC_ID * m_LArHEC_IDHelper
Definition: LArCoverageAlg.h:80
LArRawChannel
Liquid Argon ROD output object base class.
Definition: LArRawChannel.h:40
LArCoverageAlg::m_CoverageBarrelPartitions
Gaudi::Property< std::vector< std::string > > m_CoverageBarrelPartitions
Definition: LArCoverageAlg.h:123
LArCoverageAlg::m_CaloNoiseGroupArrFCAL
std::vector< int > m_CaloNoiseGroupArrFCAL
Definition: LArCoverageAlg.h:134
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArCoverageAlg::m_CoverageToolArrayEMBA
std::map< std::string, int > m_CoverageToolArrayEMBA
Definition: LArCoverageAlg.h:136
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
LArBadFeb::deadAll
bool deadAll() const
FEB is completely missing, e.g. powered off.
Definition: LArBadFeb.h:30
LArCoverageAlg::m_Nsample
Gaudi::Property< int > m_Nsample
Definition: LArCoverageAlg.h:106
CaloIdManager::getFCAL_ID
const LArFCAL_ID * getFCAL_ID(void) const
Definition: CaloIdManager.cxx:85
master.flag
bool flag
Definition: master.py:29
LArCoverageAlg::m_BadChannelToolArrayEndcap
std::map< std::string, int > m_BadChannelToolArrayEndcap
Definition: LArCoverageAlg.h:146
LArCoverageAlg.h
LArCoverageAlg::DBflag
int DBflag(HWIdentifier, const LArBadChannelCont *) const
To retrieve bad channel DB keywords
Definition: LArCoverageAlg.cxx:419
LArCoverageAlg::m_noiseCDOKey
SG::ReadCondHandleKey< CaloNoise > m_noiseCDOKey
Key for CaloNoise.
Definition: LArCoverageAlg.h:88
LArCoverageAlg::m_availableErrorCodesPairs
std::vector< std::pair< int, std::string > > m_availableErrorCodesPairs
Definition: LArCoverageAlg.h:127
LArCoverageAlg::m_BFKey
SG::ReadCondHandleKey< LArBadFebCont > m_BFKey
Definition: LArCoverageAlg.h:96
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LArProv::DEFAULTRECO
@ DEFAULTRECO
Definition: LArProvenance.h:28
LArCoverageAlg::m_NphiBinsEMEC2
Gaudi::Property< int > m_NphiBinsEMEC2
Definition: LArCoverageAlg.h:116
AthMonitorAlgorithm::fill
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable >> &&variables) const
Fills a vector of variables to a group by reference.
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
CaloPhiRange::fix
static double fix(double phi)
Definition: CaloPhiRange.cxx:14
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
LArOnlineID_Base::feb_Id
HWIdentifier feb_Id(int barrel_ec, int pos_neg, int feedthrough, int slot) const
Create feb_Id from fields.
Definition: LArOnlineID_Base.cxx:1194
LArProv::DSPCALC
@ DSPCALC
Definition: LArProvenance.h:33
CaloNoise
Definition: CaloNoise.h:16
LArOnlineID_Base::feb_end
id_iterator feb_end() const
Definition: LArOnlineID_Base.cxx:1621
AthMonitorAlgorithm::m_tools
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
Definition: AthMonitorAlgorithm.h:341
LArCoverageAlg::m_NslotEMEC
Gaudi::Property< int > m_NslotEMEC
Definition: LArCoverageAlg.h:110
LArCoverageAlg::m_NslotHEC
Gaudi::Property< int > m_NslotHEC
Definition: LArCoverageAlg.h:112
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
LArProv::test
bool test(const uint16_t prov, const LArProvenance check)
Definition: LArProvenance.h:38
IdentifierHash.h
LArBadFeb
Definition: LArBadFeb.h:10
LArCoverageAlg::m_Sides
Gaudi::Property< std::vector< std::string > > m_Sides
Definition: LArCoverageAlg.h:125
LArCoverageAlg::m_caloIdMgr
const CaloIdManager * m_caloIdMgr
Definition: LArCoverageAlg.h:81
LArCoverageAlg::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
Called each event.
Definition: LArCoverageAlg.cxx:129
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
LArBadFeb::inError
bool inError() const
FEB has readout errors, cannot be used.
Definition: LArBadFeb.h:36
LArOnlineID_Base::isEMBchannel
bool isEMBchannel(const HWIdentifier id) const
Definition: LArOnlineID_Base.cxx:1358
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:22
LArCoverageAlg::m_LArOnlineIDHelper
const LArOnlineID * m_LArOnlineIDHelper
Definition: LArCoverageAlg.h:77
LArCoverageAlg::~LArCoverageAlg
virtual ~LArCoverageAlg()
Default destructor.
Definition: LArCoverageAlg.cxx:53
LArOnlineID_Base::feedthrough
int feedthrough(const HWIdentifier id) const
Return the feedthrough of a hardware cell identifier : feedthrough = [0,31] Barrel - A/C side or H/...
Definition: LArOnlineID_Base.cxx:1654
CaloDetDescrManager
This class provides the client interface for accessing the detector description information common to...
Definition: CaloDetDescrManager.h:469
LArCoverageAlg::m_CoverageToolArrayFCalC
std::map< std::string, int > m_CoverageToolArrayFCalC
Definition: LArCoverageAlg.h:143
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ref
const boost::regex ref(r_ef)
LArHEC_Base_ID::sampling
int sampling(const Identifier id) const
return sampling [0,3] (only 0 for supercells)
LArCoverageAlg::m_CoverageToolArrayFCalA
std::map< std::string, int > m_CoverageToolArrayFCalA
Definition: LArCoverageAlg.h:139
AthCommonMsg< Gaudi::Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
LArCoverageAlg::m_NslotFCAL
Gaudi::Property< int > m_NslotFCAL
Definition: LArCoverageAlg.h:114
LArCoverageAlg::m_LArFCAL_IDHelper
const LArFCAL_ID * m_LArFCAL_IDHelper
Definition: LArCoverageAlg.h:79
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
LArProvenance.h
ReadBchFromCrest.bch
bch
Definition: ReadBchFromCrest.py:384
LArCoverageAlg::m_CoverageToolArrayHECA
std::map< std::string, int > m_CoverageToolArrayHECA
Definition: LArCoverageAlg.h:138
LArOnlineID::isHECchannel
bool isHECchannel(const HWIdentifier id) const override final
Definition: LArOnlineID.cxx:533
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
LArCoverageAlg::m_highestGain
const std::array< CaloGain::CaloGain, CaloCell_Base_ID::NSUBCALO > m_highestGain
for CaloNoise
Definition: LArCoverageAlg.h:150
LArCoverageAlg::m_CoverageEndcapPartitions
Gaudi::Property< std::vector< std::string > > m_CoverageEndcapPartitions
Definition: LArCoverageAlg.h:124
CaloCell_Base_ID::NOT_VALID
@ NOT_VALID
Definition: CaloCell_Base_ID.h:45
LArProv::LArProvenance
LArProvenance
Definition: LArProvenance.h:13
LArCoverageAlg::m_NslotEMB
Gaudi::Property< int > m_NslotEMB
Definition: LArCoverageAlg.h:108
LArCoverageAlg::m_bcMask
LArBadChannelMask m_bcMask
Definition: LArCoverageAlg.h:92
WriteCellNoiseToCool.noise
noise
Definition: WriteCellNoiseToCool.py:380
LArCoverageAlg::m_CaloNoiseGroupArrEM
std::vector< int > m_CaloNoiseGroupArrEM
for tools array
Definition: LArCoverageAlg.h:132
LArOnlineID_Base::feedthrough_Id
HWIdentifier feedthrough_Id(int barrel_ec, int pos_neg, int feedthrough) const
Create a feedthrough identifier from fields.
Definition: LArOnlineID_Base.cxx:1115
LArCoverageAlg::m_CoverageToolArrayHECC
std::map< std::string, int > m_CoverageToolArrayHECC
Definition: LArCoverageAlg.h:142
CaloDetDescrElement::phi_raw
float phi_raw() const
cell phi_raw
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:352
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65
LArCoverageAlg::initialize
virtual StatusCode initialize() override
Overwrite dummy method from AlgTool.
Definition: LArCoverageAlg.cxx:58
Identifier
Definition: IdentifierFieldParser.cxx:14