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 #include "TMath.h"
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(auto part : m_CoverageBarrelPartitions) coverageMap[code][part] = std::vector<LArChanHelp>(0);
166  for(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  noise = noiseCDO->getNoise(offlineID,m_highestGain[caloDetElement->getSubCalo()]);
256 
257  if(ctx.evt() == 0){ //first event
259  std::string cnGroup_toFill="";
261  int sampling = m_LArEM_IDHelper->sampling(offlineID);
262  if(sampling>=0 && sampling<m_Nsample) fill(m_tools[m_CaloNoiseGroupArrEM.at(sampling)],etaChan,noise);
263  else ATH_MSG_WARNING( "LAr IDhelper returned unexpected sampling: " << sampling << ". Group EM could not be filled.");
264  }
266  int sampling = m_LArHEC_IDHelper->sampling(offlineID);
267  if(sampling>=0 && sampling<m_Nsample) fill(m_tools[m_CaloNoiseGroupArrHEC.at(sampling)],etaChan,noise);
268  else ATH_MSG_WARNING( "LAr IDhelper returned unexpected sampling: " << sampling << ". Group HEC could not be filled.");
269  }
271  int sampling = m_LArFCAL_IDHelper->module(offlineID);
272  if(sampling>=0 && sampling<m_Nsample) fill(m_tools[m_CaloNoiseGroupArrFCAL.at(sampling)],etaChan,noise);
273  else ATH_MSG_WARNING( "LAr IDhelper returned unexpected sampling: " << sampling << ". Group FCAL could not be filled.");
274  }
275 
276 
278  flag = DBflag(id,bcCont);
279  if (flag!=0) {//only fill bad channels
280  std::string the_side= (etaChan >= 0 ? "A" : "C");
282  mon_FtSlot=ft*m_NslotEMB+slot;
283  fill(m_tools[m_BadChannelToolArrayBarrel.at(the_side)],mon_FtSlot,single_channel,flag);
284  }else{
285  mon_FtSlot=ft*m_NslotEMEC+slot;
286  fill(m_tools[m_BadChannelToolArrayEndcap.at(the_side)],mon_FtSlot,single_channel,flag);
287  }
288  }
289  } //end of 'if(ctx.evt() == 0)'
290 
291 
292  //
293  // Compute cells status
294  //
295 
296  int cellContent = 0;
297 
304  if (LArProv::test(provenanceChan,provPattern)) {
305  if(m_bcMask.cellShouldBeMasked(bcCont,id)) cellContent=2;
306  else if(energyChan != 0) cellContent=3;
307  }
308 
314  if(knownDeadFEBs.size()>0 && std::find(knownDeadFEBs.begin(), knownDeadFEBs.end(), febID.get_compact())!=knownDeadFEBs.end()) {
315  if(cellContent==0) cellContent=1;
316  else cellContent=4;
317  }
318  if(knownErrorFEBs.size()>0 && std::find(knownErrorFEBs.begin(), knownErrorFEBs.end(), febID.get_compact())!=knownErrorFEBs.end())cellContent=1;
319 
321  const auto cellStatusCodeItr = std::find(m_availableErrorCodes.begin(),
322  m_availableErrorCodes.end(),
323  cellContent);
324  if(cellStatusCodeItr!=m_availableErrorCodes.end()) {
325  std::string part;
326  int sampling=-1;
327  int i_ftslot=-1;
328  double etaFCal=0.;
329  double phiFCal=0.;
330  //set the variables for partition, sampling etc.
331 
334  part="EMB";
335  sampling = m_LArEM_IDHelper->sampling(offlineID);
336  i_ftslot=ft*m_NslotEMB+slot-1;
337  }
340  part="EMEC";
341  sampling = m_LArEM_IDHelper->sampling(offlineID);
342  i_ftslot=ft*m_NslotEMEC+slot-1;
343  }
346  part="HEC";
347  sampling = m_LArHEC_IDHelper->sampling(offlineID);
348  i_ftslot=ft*m_NslotHEC+slot-1;
349  }
352  part="FCal";
353  sampling = m_LArFCAL_IDHelper->module(offlineID);
354  i_ftslot=ft*m_NslotFCAL+slot-1;
355  etaFCal = m_LArFCAL_IDHelper->eta(offlineID);
356  phiFCal = m_LArFCAL_IDHelper->phi(offlineID);
357  }
358 
359  //set A-C side
360  if(etaChan >= 0) part+="A";
361  else part+="C";
362 
363  if(part.find("FCal") != std::string::npos) coverageMap[cellContent][part].push_back(LArChanHelp(single_channel,i_ftslot,sampling,etaFCal,phiFCal));
364  else coverageMap[cellContent][part].push_back(LArChanHelp(single_channel,i_ftslot,sampling,etaChan,phiChan));
365  }//end of 'if cellContent in availableErrors'
366  }// end Raw Channels Loop
367 
368 
371  ATH_MSG_DEBUG( "now fill coverage plots");
372 
373  for (const auto& chanStatusCodePair : m_availableErrorCodesPairs) {
374  //EMBA
375  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["EMBA"];
376  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);
377  //EMBC
378  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["EMBC"];
379  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);
380 
381  //EMECA
382  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["EMECA"];
383  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);
384 
385  //EMECC
386  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["EMECC"];
387  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);
388 
389  //HECA
390  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["HECA"];
391  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);
392 
393  //HECC
394  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["HECC"];
395  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);
396 
397  //FCalA
398  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["FCalA"];
399  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);
400 
401  //FCalC
402  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["FCalC"];
403  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);
404 
405  }
406 
407  return StatusCode::SUCCESS;
408 }
409 
410 
411 
412 
413 /*---------------------------------------------------------*/
414 int LArCoverageAlg::DBflag(HWIdentifier onID, const LArBadChannelCont* bcCont) const
415 {
416  if(!bcCont) {
417  ATH_MSG_WARNING( "Do not have Bad chan container " << m_BCKey.key() );
418  return -1;
419  }
420 
421  LArBadChannel bc = bcCont->status(onID);
422 
423  int flag = 0;
424  if(bc.deadCalib()) flag = 1;
425  if(bc.lowNoiseHG()||bc.lowNoiseMG()||bc.lowNoiseLG()) flag = 2;
426  if(bc.distorted()) flag = 3;
427  if(bc.unstable()) flag = 4;
428  if(bc.sporadicBurstNoise()) flag = 5;
429  if(bc.highNoiseHG()|| bc.highNoiseMG() || bc.highNoiseLG()) flag = 6;
430  if(bc.deadReadout()||bc.deadPhys()||bc.almostDead()||bc.shortProblem()) flag = 7;
431 
432  return flag;
433  }
434 
435 
436 
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:44
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:135
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:1961
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:1910
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:36
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:1657
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:1967
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:763
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:414
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
ReadBchFromCool.bch
bch
Definition: ReadBchFromCool.py:446
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:1483
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:1915
AthMonitorAlgorithm::m_tools
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
Definition: AthMonitorAlgorithm.h:338
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:1652
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
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:1948
CaloDetDescrManager
This class provides the client interface for accessing the detector description information common to...
Definition: CaloDetDescrManager.h:473
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
LArProvenance.h
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:723
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
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:1404
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