ATLAS Offline Software
LArCoverageAlg.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 // ********************************************************************
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 
22 #include "TMath.h"
23 
24 #include <sstream>
25 #include <iomanip>
26 #include <fstream>
27 #include <string>
28 #include <vector>
29 #include <cstdlib>
30 #include <functional>
31 #include <map>
32 #include <utility>
33 
34 
35 
36 
37 using namespace std;
38 
39 /*---------------------------------------------------------*/
40 LArCoverageAlg::LArCoverageAlg(const std::string& name, ISvcLocator* pSvcLocator )
41  : AthMonitorAlgorithm(name,pSvcLocator)
42 {
43 
44  m_LArOnlineIDHelper = nullptr;
45  m_LArEM_IDHelper = nullptr;
46  m_LArFCAL_IDHelper = nullptr;
47  m_LArHEC_IDHelper = nullptr;
48  m_caloIdMgr = nullptr;
49  }
50 
51 /*---------------------------------------------------------*/
53 {}
54 
55 /*---------------------------------------------------------*/
58 {
59  ATH_MSG_INFO( "Initialize LArCoverageAlg" );
60 
62  TString warn_binning="";
63  if(m_NphiBinsEMB1!=256) warn_binning="NphiBinsEMB1!=256 ";
64  if(m_NphiBinsEMEC2!=256) warn_binning="NphiBinsEMEC2!=256 ";
65  if((int)(m_NphiBinsHEC.size())<m_Nsample) ATH_MSG_ERROR("NphiBinsHEC must contain " << m_Nsample << " elements");
66  if(m_NphiBinsHEC[0]!=64) warn_binning="NphiBinsHEC[0]!=64 ";
67  if(m_NphiBinsHEC[1]!=64) warn_binning="NphiBinsHEC[1]!=64 ";
68  if(m_NphiBinsHEC[2]!=64) warn_binning="NphiBinsHEC[2]!=64 ";
69  if(m_NphiBinsHEC[3]!=64) warn_binning="NphiBinsHEC[3]!=64 ";
70 
71 
77 
78  ATH_CHECK( detStore()->retrieve(m_LArOnlineIDHelper, "LArOnlineID") );
79  ATH_CHECK( m_BCKey.initialize() );
80  ATH_CHECK( m_BFKey.initialize() );
82 
85 
88 
89 
92 
95 
96  std::vector<std::string> availableErrorCodesStrs;
98  for (const auto& code : m_availableErrorCodes) {
99  availableErrorCodesStrs.emplace_back(Form("%d", code));
100  m_availableErrorCodesPairs.emplace_back(code, availableErrorCodesStrs.back());
101  }
102 
104  m_CaloNoiseGroupArrEM = Monitored::buildToolMap<int>(m_tools,m_CaloNoiseToolGroupName+"EM",m_Nsample);
105  m_CaloNoiseGroupArrHEC = Monitored::buildToolMap<int>(m_tools,m_CaloNoiseToolGroupName+"HEC",m_Nsample);
106  m_CaloNoiseGroupArrFCAL = Monitored::buildToolMap<int>(m_tools,m_CaloNoiseToolGroupName+"FCal",m_Nsample);
107 
108  m_CoverageToolArrayEMBA = Monitored::buildToolMap<int>(m_tools,m_CoverageHWGroupName+"EMBA",availableErrorCodesStrs);
109  m_CoverageToolArrayEMECA = Monitored::buildToolMap<int>(m_tools,m_CoverageHWGroupName+"EMECA",availableErrorCodesStrs);
110  m_CoverageToolArrayHECA = Monitored::buildToolMap<int>(m_tools,m_CoverageHWGroupName+"HECA",availableErrorCodesStrs);
111  m_CoverageToolArrayFCalA = Monitored::buildToolMap<int>(m_tools,m_CoverageHWGroupName+"FCalA",availableErrorCodesStrs);
112  m_CoverageToolArrayEMBC = Monitored::buildToolMap<int>(m_tools,m_CoverageHWGroupName+"EMBC",availableErrorCodesStrs);
113  m_CoverageToolArrayEMECC = Monitored::buildToolMap<int>(m_tools,m_CoverageHWGroupName+"EMECC",availableErrorCodesStrs);
114  m_CoverageToolArrayHECC = Monitored::buildToolMap<int>(m_tools,m_CoverageHWGroupName+"HECC",availableErrorCodesStrs);
115  m_CoverageToolArrayFCalC = Monitored::buildToolMap<int>(m_tools,m_CoverageHWGroupName+"FCalC",availableErrorCodesStrs);
116 
117  m_BadChannelToolArrayBarrel = Monitored::buildToolMap<int>(m_tools,m_BadChannelsGroupName+"Barrel",m_Sides);
118  m_BadChannelToolArrayEndcap = Monitored::buildToolMap<int>(m_tools,m_BadChannelsGroupName+"EndCap",m_Sides);
119 
122 }
123 
124 
125 
126 /*---------------------------------------------------------*/
127 StatusCode
128 LArCoverageAlg::fillHistograms( const EventContext& ctx ) const
129 {
130  ATH_MSG_DEBUG( "in fillHists()" );
131 
132  if(ctx.evt()+1 > m_nevents ) return StatusCode::SUCCESS; //ctx.evt() counts from 0
133 
134  auto noise = Monitored::Scalar<float>("noise",0.);
135  auto etaChan = Monitored::Scalar<float>("etaChan",1e3);
136  auto flag = Monitored::Scalar<int>("flag",0);
137  auto single_channel = Monitored::Scalar<int>("single_channel",-1);
138  auto lb1 = Monitored::Scalar<float>("lb1",0);
139  auto lb1_x = Monitored::Scalar<float>("lb1_x",0);
140 
142  auto mon_FtSlot = Monitored::Scalar<int>("mon_FtSlot",-1);
143  std::vector<LArChanHelp> the_coverageMap(0);
144  auto ref_the_coverageMap = std::ref(the_coverageMap);
145  //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
146  auto mon_ChanFtSlot = Monitored::Collection("mon_ChanFtSlot",ref_the_coverageMap,[](const LArChanHelp& ch){return ch.getChFtSlot();});
147  auto mon_Channels = Monitored::Collection("mon_Channels",ref_the_coverageMap,[](const LArChanHelp& ch){return ch.getChNumber();});
148  auto mon_Eta = Monitored::Collection("mon_Eta",ref_the_coverageMap,[](const LArChanHelp& ch){return ch.getChEta();});
149  auto mon_Phi = Monitored::Collection("mon_Phi",ref_the_coverageMap,[](const LArChanHelp& ch){return ch.getChPhi();});
150 
151  //cutmasks for filling the proper partition
152  auto mon_isSampling0 = Monitored::Collection("isSampl0",ref_the_coverageMap,[](const LArChanHelp& ch){return (ch.getChSampling()==0);});
153  auto mon_isSampling1 = Monitored::Collection("isSampl1",ref_the_coverageMap,[](const LArChanHelp& ch){return (ch.getChSampling()==1);});
154  auto mon_isSampling2 = Monitored::Collection("isSampl2",ref_the_coverageMap,[](const LArChanHelp& ch){return (ch.getChSampling()==2);});
155  auto mon_isSampling3 = Monitored::Collection("isSampl3",ref_the_coverageMap,[](const LArChanHelp& ch){return (ch.getChSampling()==3);});
156 
162  std::map<int,std::map<std::string,std::vector<LArChanHelp> > > coverageMap;
163  for(auto code : m_availableErrorCodes) {
164  for(auto part : m_CoverageBarrelPartitions) coverageMap[code][part] = std::vector<LArChanHelp>(0);
165  for(auto part : m_CoverageEndcapPartitions) coverageMap[code][part] = std::vector<LArChanHelp>(0);
166  }
167 
169  std::vector<long> knownDeadFEBs(0);
170  std::vector<long> knownErrorFEBs(0);
171 
174  ATH_CHECK(caloMgrHandle.isValid());
175  const CaloDetDescrManager* ddman = *caloMgrHandle;
176 
179  const LArOnOffIdMapping* larCabling{*cablingHdl};
180  if(!larCabling){
181  ATH_MSG_ERROR("Do not have mapping object " << m_cablingKey.key() );
182  return StatusCode::FAILURE;
183  }
184 
186  SG::ReadHandle<LArRawChannelContainer> pRawChannelsContainer(m_rawChannelsKey, ctx);
187  if(! pRawChannelsContainer.isValid() ) {
188  ATH_MSG_WARNING( "Can\'t retrieve LArRawChannelContainer with key " << m_rawChannelsKey );
189  return StatusCode::SUCCESS;
190  }
191 
194  const CaloNoise* noiseCDO=*noiseHdl;
195 
196  if(ctx.evt() == 0){ //first event
197  lb1 = (float)ctx.eventID().lumi_block();
199  }
200 
201 
204  const LArBadChannelCont* bcCont{*bch};
205 
206 
207  ATH_MSG_DEBUG( "collect known faulty FEBs" );
209  const LArBadFebCont* mfCont{*bf};
210  if(!mfCont) ATH_MSG_WARNING( "Do not have Missing FEBs container !!" );
211  else {
212  for (std::vector<HWIdentifier>::const_iterator allFeb = m_LArOnlineIDHelper->feb_begin();allFeb != m_LArOnlineIDHelper->feb_end(); ++allFeb) {
213  HWIdentifier febid = HWIdentifier(*allFeb);
214  const LArBadFeb febStatus = mfCont->status(febid);
215  if (febStatus.deadAll() || febStatus.deadReadout()) knownDeadFEBs.push_back(febid.get_compact());
216  if(febStatus.inError()) knownErrorFEBs.push_back(febid.get_compact());
217  }
218  }
219 
220 
221  ATH_MSG_DEBUG( "now loop on channels" );
223  for (const LArRawChannel& pRawChannel : *pRawChannelsContainer) {
224  uint16_t provenanceChan = pRawChannel.provenance();
225  float energyChan = pRawChannel.energy();
226  HWIdentifier id = pRawChannel.hardwareID();
227  Identifier offlineID = larCabling->cnvToIdentifier(id);
228 
230  if(!larCabling->isOnlineConnected(id)) continue;
231 
233  HWIdentifier febID = m_LArOnlineIDHelper->feb_Id(id);
234  HWIdentifier feedthroughID = m_LArOnlineIDHelper->feedthrough_Id(id);
235  single_channel = m_LArOnlineIDHelper->channel(id);
236  int slot = m_LArOnlineIDHelper->slot(febID);
237  int ft = m_LArOnlineIDHelper->feedthrough(feedthroughID);
238 
240  float phiChan = 0.;
241  const CaloDetDescrElement* caloDetElement = ddman->get_element(offlineID);
242  if(caloDetElement == 0 ){
243  ATH_MSG_ERROR( "Cannot retrieve (eta,phi) coordinates for raw channels" );
244  continue;
245  }else{
246  etaChan = caloDetElement->eta_raw();
247  phiChan = caloDetElement->phi_raw();
248  }
249 
251  if (m_LArOnlineIDHelper->isHECchannel(id)) phiChan = CaloPhiRange::fix(phiChan);
252 
254  noise = noiseCDO->getNoise(offlineID,m_highestGain[caloDetElement->getSubCalo()]);
255 
256  if(ctx.evt() == 0){ //first event
258  std::string cnGroup_toFill="";
260  int sampling = m_LArEM_IDHelper->sampling(offlineID);
261  if(sampling>=0 && sampling<m_Nsample) fill(m_tools[m_CaloNoiseGroupArrEM.at(sampling)],etaChan,noise);
262  else ATH_MSG_WARNING( "LAr IDhelper returned unexpected sampling: " << sampling << ". Group EM could not be filled.");
263  }
265  int sampling = m_LArHEC_IDHelper->sampling(offlineID);
266  if(sampling>=0 && sampling<m_Nsample) fill(m_tools[m_CaloNoiseGroupArrHEC.at(sampling)],etaChan,noise);
267  else ATH_MSG_WARNING( "LAr IDhelper returned unexpected sampling: " << sampling << ". Group HEC could not be filled.");
268  }
270  int sampling = m_LArFCAL_IDHelper->module(offlineID);
271  if(sampling>=0 && sampling<m_Nsample) fill(m_tools[m_CaloNoiseGroupArrFCAL.at(sampling)],etaChan,noise);
272  else ATH_MSG_WARNING( "LAr IDhelper returned unexpected sampling: " << sampling << ". Group FCAL could not be filled.");
273  }
274 
275 
277  flag = DBflag(id,bcCont);
278  if (flag!=0) {//only fill bad channels
279  std::string the_side= (etaChan >= 0 ? "A" : "C");
281  mon_FtSlot=ft*m_NslotEMB+slot;
282  fill(m_tools[m_BadChannelToolArrayBarrel.at(the_side)],mon_FtSlot,single_channel,flag);
283  }else{
284  mon_FtSlot=ft*m_NslotEMEC+slot;
285  fill(m_tools[m_BadChannelToolArrayEndcap.at(the_side)],mon_FtSlot,single_channel,flag);
286  }
287  }
288  } //end of 'if(ctx.evt() == 0)'
289 
290 
291  //
292  // Compute cells status
293  //
294 
295  int cellContent = 0;
296 
303  if (LArProv::test(provenanceChan,provPattern)) {
304  if(m_bcMask.cellShouldBeMasked(bcCont,id)) cellContent=2;
305  else if(energyChan != 0) cellContent=3;
306  }
307 
313  if(knownDeadFEBs.size()>0 && std::find(knownDeadFEBs.begin(), knownDeadFEBs.end(), febID.get_compact())!=knownDeadFEBs.end()) {
314  if(cellContent==0) cellContent=1;
315  else cellContent=4;
316  }
317  if(knownErrorFEBs.size()>0 && std::find(knownErrorFEBs.begin(), knownErrorFEBs.end(), febID.get_compact())!=knownErrorFEBs.end())cellContent=1;
318 
320  const auto cellStatusCodeItr = std::find(m_availableErrorCodes.begin(),
321  m_availableErrorCodes.end(),
322  cellContent);
323  if(cellStatusCodeItr!=m_availableErrorCodes.end()) {
324  std::string part;
325  int sampling=-1;
326  int i_ftslot=-1;
327  double etaFCal=0.;
328  double phiFCal=0.;
329  //set the variables for partition, sampling etc.
330 
333  part="EMB";
334  sampling = m_LArEM_IDHelper->sampling(offlineID);
335  i_ftslot=ft*m_NslotEMB+slot-1;
336  }
339  part="EMEC";
340  sampling = m_LArEM_IDHelper->sampling(offlineID);
341  i_ftslot=ft*m_NslotEMEC+slot-1;
342  }
345  part="HEC";
346  sampling = m_LArHEC_IDHelper->sampling(offlineID);
347  i_ftslot=ft*m_NslotHEC+slot-1;
348  }
351  part="FCal";
352  sampling = m_LArFCAL_IDHelper->module(offlineID);
353  i_ftslot=ft*m_NslotFCAL+slot-1;
354  etaFCal = m_LArFCAL_IDHelper->eta(offlineID);
355  phiFCal = m_LArFCAL_IDHelper->phi(offlineID);
356  }
357 
358  //set A-C side
359  if(etaChan >= 0) part+="A";
360  else part+="C";
361 
362  if(part.find("FCal") != std::string::npos) coverageMap[cellContent][part].push_back(LArChanHelp(single_channel,i_ftslot,sampling,etaFCal,phiFCal));
363  else coverageMap[cellContent][part].push_back(LArChanHelp(single_channel,i_ftslot,sampling,etaChan,phiChan));
364  }//end of 'if cellContent in availableErrors'
365  }// end Raw Channels Loop
366 
367 
370  ATH_MSG_DEBUG( "now fill coverage plots");
371 
372  for (const auto& chanStatusCodePair : m_availableErrorCodesPairs) {
373  //EMBA
374  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["EMBA"];
375  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);
376  //EMBC
377  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["EMBC"];
378  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);
379 
380  //EMECA
381  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["EMECA"];
382  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);
383 
384  //EMECC
385  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["EMECC"];
386  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);
387 
388  //HECA
389  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["HECA"];
390  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);
391 
392  //HECC
393  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["HECC"];
394  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);
395 
396  //FCalA
397  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["FCalA"];
398  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);
399 
400  //FCalC
401  ref_the_coverageMap=coverageMap[chanStatusCodePair.first]["FCalC"];
402  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);
403 
404  }
405 
406  return StatusCode::SUCCESS;
407 }
408 
409 
410 
411 
412 /*---------------------------------------------------------*/
413 int LArCoverageAlg::DBflag(HWIdentifier onID, const LArBadChannelCont* bcCont) const
414 {
415  if(!bcCont) {
416  ATH_MSG_WARNING( "Do not have Bad chan container " << m_BCKey.key() );
417  return -1;
418  }
419 
420  LArBadChannel bc = bcCont->status(onID);
421 
422  int flag = 0;
423  if(bc.deadCalib()) flag = 1;
424  if(bc.lowNoiseHG()||bc.lowNoiseMG()||bc.lowNoiseLG()) flag = 2;
425  if(bc.distorted()) flag = 3;
426  if(bc.unstable()) flag = 4;
427  if(bc.sporadicBurstNoise()) flag = 5;
428  if(bc.highNoiseHG()|| bc.highNoiseMG() || bc.highNoiseLG()) flag = 6;
429  if(bc.deadReadout()||bc.deadPhys()||bc.almostDead()||bc.shortProblem()) flag = 7;
430 
431  return flag;
432  }
433 
434 
435 
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:70
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:1957
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:1906
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:40
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:1653
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:1963
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:413
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:1479
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:1911
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:228
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:128
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:1648
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:52
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:1944
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
readCCLHist.float
float
Definition: readCCLHist.py:83
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:1400
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
LArCoverageAlg::initialize
virtual StatusCode initialize() override
Overwrite dummy method from AlgTool.
Definition: LArCoverageAlg.cxx:57
Identifier
Definition: IdentifierFieldParser.cxx:14