ATLAS Offline Software
LArNoisyROMonAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "LArNoisyROMonAlg.h"
6 
8 
9 #include <sstream>
10 #include <stdexcept>
11 #include <cmath>
12 
13 LArNoisyROMonAlg::LArNoisyROMonAlg(const std::string& name, ISvcLocator* pSvcLocator):
14  AthMonitorAlgorithm(name, pSvcLocator),
15  m_LArOnlineIDHelper(nullptr) {
16 
17 }
18 
19 
21 {
22  ATH_CHECK(detStore()->retrieve(m_LArOnlineIDHelper, "LArOnlineID" ));
24  ATH_CHECK(m_badFebKey.initialize());
25  ATH_CHECK(m_MNBFebKey.initialize());
27  ATH_CHECK( m_eventInfoDecorKey.initialize() );
28 
29  m_histoGroups.reserve(m_SubDetNames.size());
30  for (unsigned i=0; i<m_SubDetNames.size(); ++i) {
31  std::vector<std::string> part;
32  part.push_back(m_partitions[2*i]);
33  part.push_back(m_partitions[2*i+1]);
34  ATH_MSG_INFO(i<<" "<<m_SubDetNames[i]<<" "<<part[0] <<" " <<part[1]);
35  m_histoGroups.push_back(Monitored::buildToolMap<int>(m_tools,m_SubDetNames[i],part));
36  }
37 
39 }
40 
41 
42 void LArNoisyROMonAlg::fillHistogramsOnce(const EventContext& ctx, const bool isMC) const {
43 
45  const LArBadFebCont *badCont{*badHdl};
46  if(badCont) {
47  if( !isMC && badCont->size()==0) {
48  ATH_MSG_DEBUG("List of known Bad FEBs empty !? ");
49  } else {
50  auto sl=Monitored::Scalar<unsigned>("slotBad",0);
51  auto FT=Monitored::Scalar<unsigned>("FTBad",0);
52  for(LArBadFebCont::BadChanVec::const_iterator i = badCont->begin(); i!=badCont->end(); ++i) {
53  HWIdentifier chid(i->first);
54  sl = m_LArOnlineIDHelper->slot(chid);
56  unsigned sd = partitionNumber(chid)/2;
57  unsigned part = partitionNumber(chid);
58  ATH_MSG_DEBUG("Filled known Bad FEBs for " << sd << " and " << part<<": "<<sl<<" "<<FT);
60  }
61  }
62  } else {
63  ATH_MSG_WARNING("Known Bad FEBs container not existing !? ");
64  }
65 
67  const LArBadFebCont* mnbCont{*mnbHdl};
68  if(mnbCont) {
69  if( !isMC && mnbCont->size()==0) {
70  ATH_MSG_WARNING("List of known MNB FEBs empty !? ");
71  } else {
72  auto sl=Monitored::Scalar<unsigned>("slotMNB",0);
73  auto FT=Monitored::Scalar<unsigned>("FTMNB",0);
74  for(LArBadFebCont::BadChanVec::const_iterator i = mnbCont->begin(); i!=mnbCont->end(); ++i) {
75  HWIdentifier chid(i->first);
76  sl = m_LArOnlineIDHelper->slot(chid);
78  unsigned sd = partitionNumber(chid)/2;
79  unsigned part = partitionNumber(chid);
80  ATH_MSG_DEBUG("Filled known MNB FEBs for " << sd << " and " << m_partitions[part]<<": "<<sl<<" "<<FT);
82  }
83  }
84  } else {
85  ATH_MSG_WARNING("Known MNB FEBs container not existing !? ");
86  }
87  return;
88 }
89 
90 
91 StatusCode LArNoisyROMonAlg::fillHistograms(const EventContext& ctx) const {
92 
94  ATH_CHECK(eventInfo.isValid());
95  const bool isMC=eventInfo->eventType( xAOD::EventInfo::IS_SIMULATION);
96  std::call_once(m_onceFlag, &LArNoisyROMonAlg::fillHistogramsOnce, this, ctx, isMC);
97 
98 
99  // retrieve
101  if (!noisyRO.isValid())
102  {
103  ATH_MSG_WARNING( "Can't retrieve LArNoisyROSummary " );
104  return StatusCode::SUCCESS;
105  }
107  const LArHVIdMapping* hvid{*hvidHdl};
108  if(!hvid) {
109  ATH_MSG_WARNING( "Can't retrieve LArHVIdMapping, no per partition HVlines histograms ! " );
110  }
111 
112  unsigned int LBN = eventInfo->lumiBlock();
114 
115  const std::vector<HWIdentifier>& mnbtightFEB = noisyRO->get_MNBTight_febs();
116  const std::vector<HWIdentifier>& mnbtight_PsVetoFEB = noisyRO->get_MNBTight_PsVeto_febs();
117  const std::vector<HWIdentifier>& mnblooseFEB = noisyRO->get_MNBLoose_febs();
118 
119  // Filling Candidate MNB Tree
120  std::vector<int> v_candidate_MNBTightFEB;
121  std::vector<int> v_candidate_MNBTight_PsVetoFEB;
122  std::vector<int> v_candidate_MNBLooseFEB;
123 
124  for(unsigned int iFeb=0; iFeb<mnbtightFEB.size(); iFeb++)
125  v_candidate_MNBTightFEB.push_back(mnbtightFEB.at(iFeb).get_identifier32().get_compact());
126 
127  for(unsigned int iFeb=0; iFeb<mnbtight_PsVetoFEB.size(); iFeb++)
128  v_candidate_MNBTight_PsVetoFEB.push_back(mnbtight_PsVetoFEB.at(iFeb).get_identifier32().get_compact());
129 
130  if (m_storeLooseMNBFEBs){ // joboption - By default the FEB flagged as MNB-Loose are not stored in the TTree
131  for(unsigned int iFeb=0; iFeb<mnblooseFEB.size(); iFeb++)
132  v_candidate_MNBLooseFEB.push_back(mnblooseFEB.at(iFeb).get_identifier32().get_compact());
133  }
134 
135  if(v_candidate_MNBLooseFEB.size() > 0 || v_candidate_MNBTightFEB.size() > 0) {
136  auto candidate_MNB_time = Monitored::Scalar<unsigned int>("candidate_MNB_time", eventInfo->timeStamp());
137  auto candidate_MNB_time_ns = Monitored::Scalar<unsigned int>("candidate_MNB_time_ns", eventInfo->timeStampNSOffset());
138  auto n_candidate_MNBTight_FEB = Monitored::Scalar<unsigned int>("n_candidate_MNBTight_FEB", mnbtightFEB.size());
139  auto n_candidate_MNBTight_PsVeto_FEB = Monitored::Scalar<unsigned int>("n_candidate_MNBTight_PsVeto_FEB", mnbtightFEB.size());
140  auto n_candidate_MNBLoose_FEB = Monitored::Scalar<unsigned int>("n_candidate_MNBLoose_FEB", mnblooseFEB.size());
141 
142  auto mon_candidate_MNBTightFEB = Monitored::Collection("v_candidate_MNBTightFEB", v_candidate_MNBTightFEB);
143  auto mon_candidate_MNBTight_PsVetoFEB = Monitored::Collection("v_candidate_MNBTight_PsVetoFEB", v_candidate_MNBTight_PsVetoFEB);
144  auto mon_candidate_MNBLooseFEB = Monitored::Collection("v_candidate_MNBLooseFEB", v_candidate_MNBLooseFEB);
145 
146  ATH_MSG_DEBUG("Filling CandidateMNB tree");
147 
148  fill(m_MonGroupName,candidate_MNB_time,candidate_MNB_time_ns,n_candidate_MNBTight_FEB,n_candidate_MNBTight_PsVeto_FEB,n_candidate_MNBLoose_FEB,mon_candidate_MNBTightFEB,mon_candidate_MNBTight_PsVetoFEB,mon_candidate_MNBLooseFEB);
149  }
150 
151  // Fill the noise bursts timestamp ttree
152  auto time = Monitored::Scalar<int>("time",eventInfo->timeStamp());
153  auto time_ns = Monitored::Scalar<int>("time_ns",eventInfo->timeStampNSOffset());
154  auto algo = Monitored::Scalar<unsigned char>("algo",0);
156  {
157  algo |= 0x1;
158  }
160  {
161  algo |= 0x2;
162  }
164  {
165  algo |= 0x8;
166  }
168  {
169  algo |= 0x10;
170  }
172  {
173  algo |= 0x20;
174  }
176  {
177  algo |= 0x40;
178  }
180  {
181  algo |= 0x80;
182  }
183 
184  if ( algo != 0 ) {
185  if ( burstveto ) algo |= 0x4;
186  ATH_MSG_DEBUG("Filling LArNoise tree with algo: " << algo);
187  fill(m_MonGroupName,time,time_ns,algo);
188  } else {
189  ATH_MSG_DEBUG("Not a noisy event");
190  }
191 
192  // Triggers
193  unsigned long trigbits = 0;
194  unsigned long L1trigbits = 0;
195  if ( m_doTrigger ) {
196  for ( size_t i = 0; i < m_EF_NoiseBurst_Triggers.size(); i++) {
197  if ( m_trigDecTool->isPassed(m_EF_NoiseBurst_Triggers[i])) trigbits |= (0x1 << i);
198  }
199  for ( size_t i = 0; i < m_L1_NoiseBurst_Triggers.size(); i++) {
200  if ( m_trigDecTool->isPassed(m_L1_NoiseBurst_Triggers[i])) L1trigbits |= (0x1 << i);
201  }
202  ATH_MSG_DEBUG("Trigger words: " << std::hex << trigbits << " " << L1trigbits << std::dec);
203  }
204  if(!m_doHisto) return StatusCode::SUCCESS;
205 
206  // Fill the 2D map of noisy and mini-noisy FEBs
207  const std::vector<HWIdentifier>& noisyFEB = noisyRO->get_noisy_febs();
208 
209  // Loop on all FEBs noisy in Std definition (i.e >30 channels with q factor > 4000)
210  // And fill the 2D maps of fraction of fraction of noisy events
211  unsigned int NbNoisyFEB = 0;
213 
214  ATH_MSG_DEBUG("NoisyFEB vector size " << noisyFEB.size());
215 
216  auto slotN=Monitored::Scalar<unsigned>("slotNoisy",0);
217  auto FTN=Monitored::Scalar<unsigned>("FTNoisy",0);
218  for (size_t i = 0; i<noisyFEB.size(); i++) {
219  NbNoisyFEB++;
220  const HWIdentifier& febid = noisyFEB[i];
222  unsigned partition = partitionNumber(febid);
223  unsigned sd = partitionNumber(id)/2;
224 
225  if (partition<4){
226  FTN = m_LArOnlineIDHelper->feedthrough(id);
227  slotN = m_LArOnlineIDHelper->slot(id);
228  fill(m_tools[m_histoGroups.at(sd).at(m_partitions[partition])],slotN,FTN);
229  }
230  } // End of loop on all RNB - noisy FEB
231 
232  auto n_noisyFEB = Monitored::Scalar<int>("n_noisyFEBs",NbNoisyFEB);
233  auto lb = Monitored::Scalar<int>("LBN",LBN);
234 
235  const std::vector<HWIdentifier>& noisyHVlines = noisyRO->get_noisy_hvlines();
236  unsigned int NbNoisyHVlines = noisyHVlines.size();
237  auto n_noisyHVlines = Monitored::Scalar<int>("n_noisyHVlines",NbNoisyHVlines);
238 
239  fill(m_MonGroupName,n_noisyFEB,n_noisyHVlines,lb);
240 ;
241  // Loop on all FEBs noisy in MNB-tight definition
242  // And fill the 2D maps of fraction of fraction of noisy events
243  // Fill two histograms with veto cut and all events
244  ATH_MSG_DEBUG("MNBTight FEB vector size " << mnbtightFEB.size());
245  auto slotTightCan=Monitored::Scalar<unsigned>("slotTightCan",0);
246  auto FTTightCan=Monitored::Scalar<unsigned>("FTTightCan",0);
247  auto slotTight=Monitored::Scalar<unsigned>("slotTight",0);
248  auto FTTight=Monitored::Scalar<unsigned>("FTTight",0);
249  for (size_t i = 0; i<mnbtightFEB.size(); i++) {
250  const HWIdentifier& febid = mnbtightFEB[i];
252  unsigned partition = partitionNumber(febid);
253 
254  if (partition<4){
255  unsigned sd = partitionNumber(id)/2;
256  FTTightCan = m_LArOnlineIDHelper->feedthrough(id);
257  slotTightCan = m_LArOnlineIDHelper->slot(id);
258  // FIXME: could not this be done with cutmask ?
259  fill(m_tools[m_histoGroups.at(sd).at(m_partitions[partition])],slotTightCan,FTTightCan);
260  if((noisyRO->MNBTightFlaggedPartitions() & partMask[partition]) != 0){
261  slotTight = unsigned(slotTightCan);
262  FTTight = unsigned(FTTightCan);
263  fill(m_tools[m_histoGroups.at(sd).at(m_partitions[partition])],slotTight,FTTight);
264  }
265  }
266  }// End of loop on all MNB-Tight - noisy FEB
267 
268  // Loop on all FEBs noisy in MNB-tight-PsVeto definition
269  // And fill the 2D maps of fraction of fraction of noisy events
270  // Fill two histograms with veto cut and all events
271  auto slot_PsVetoTightCan=Monitored::Scalar<unsigned>("slot_PsVetoTightCan",0);
272  auto FT_PsVetoTightCan=Monitored::Scalar<unsigned>("FT_PsVetoTightCan",0);
273  auto slot_PsVetoTight=Monitored::Scalar<unsigned>("slot_PsVetoTight",0);
274  auto FT_PsVetoTight=Monitored::Scalar<unsigned>("FT_PsVetoTight",0);
275  ATH_MSG_DEBUG("MNBTight_PsVeto FEB vector size " << mnbtight_PsVetoFEB.size());
276  for (size_t i = 0; i<mnbtight_PsVetoFEB.size(); i++) {
277  const HWIdentifier& febid = mnbtight_PsVetoFEB[i];
279  int partition = partitionNumber(febid);
280 
281  if (partition<4){
282  unsigned sd = partitionNumber(id)/2;
283  FT_PsVetoTightCan = m_LArOnlineIDHelper->feedthrough(id);
284  slot_PsVetoTightCan = m_LArOnlineIDHelper->slot(id);
285  // FIXME: could not this be done with cutmask ?
286  fill(m_tools[m_histoGroups.at(sd).at(m_partitions[partition])],slot_PsVetoTightCan,FT_PsVetoTightCan);
287  if((noisyRO->MNBTight_PsVetoFlaggedPartitions() & partMask[partition]) != 0){
288  slot_PsVetoTight = unsigned(slot_PsVetoTightCan);
289  FT_PsVetoTight = unsigned(FT_PsVetoTightCan);
290  fill(m_tools[m_histoGroups.at(sd).at(m_partitions[partition])],slot_PsVetoTight,FT_PsVetoTight);
291  }
292  }
293  }// End of loop on all MNB-Tight-PsVeto - noisy FEB
294 
295  // Loop on all FEBs noisy in MNB-loose definition
296  // And fill the 2D maps of fraction of fraction of noisy events
297  // Fill two histograms with veto cut and all events
298  auto slotLooseCan=Monitored::Scalar<unsigned>("slotLooseCan",0);
299  auto FTLooseCan=Monitored::Scalar<unsigned>("FTLooseCan",0);
300  auto slotLoose=Monitored::Scalar<unsigned>("slotLoose",0);
301  auto FTLoose=Monitored::Scalar<unsigned>("FTLoose",0);
302  ATH_MSG_DEBUG("MNBLoose FEB vector size " << mnblooseFEB.size());
303  for (size_t i = 0; i<mnblooseFEB.size(); i++) {
304  const HWIdentifier& febid = mnblooseFEB[i];
305  // Will be used in next iteration:
307  int partition = partitionNumber(febid);
308 
309  if (partition<4){
310  unsigned sd = partitionNumber(id)/2;
311  FTLooseCan = m_LArOnlineIDHelper->feedthrough(id);
312  slotLooseCan = m_LArOnlineIDHelper->slot(id);
313  fill(m_tools[m_histoGroups.at(sd).at(m_partitions[partition])],slotLooseCan,FTLooseCan);
314  if((noisyRO->MNBLooseFlaggedPartitions() & partMask[partition]) != 0){
315  slotLoose = unsigned(slotLoose);
316  FTLoose = unsigned(FTLoose);
317  fill(m_tools[m_histoGroups.at(sd).at(m_partitions[partition])],slotLoose,FTLoose);
318  }
319  }
320  }// End of loop on all MNB-Loose - noisy FEB
321  // End of 2D map of FEB found as noisy (in any definition : Std, MNB-Tight, MNB-Tight-PsVeto or MNB-Loose)
322 
323  // Now fill 1D histograms of events found as noisy vetoed or not
324  // Event found noisy by Std method
325  uint8_t BadFEBPartitions = noisyRO->BadFEBFlaggedPartitions();
326  if ( BadFEBPartitions != 0) {
327  auto LBStd = Monitored::Scalar<unsigned>("LBStd",LBN);
328  auto LBStdV = Monitored::Scalar<unsigned>("LBStd_Veto",LBN);
329  for (size_t i= 0;i<m_partitions.size();i++){
330  if ( (BadFEBPartitions & partMask[i]) != 0 ) {
331  fill(m_tools[m_histoGroups.at(i/2).at(m_partitions[i])],LBStd);
332  if ( m_doTrigger ) {
333  fillTriggerHisto(i,trigbits,L1trigbits);
334  }
335  if ( ! burstveto ) {
336  fill(m_tools[m_histoGroups.at(i/2).at(m_partitions[i])],LBStdV);
337  }
338  }
339  }
340  } // End of test on RNB
341 
342  uint8_t BadHVPartitions = noisyRO->HVlineFlaggedPartitions();
343  if ( BadHVPartitions != 0) {
344  auto LBHV = Monitored::Scalar<unsigned>("LBHV",LBN);
345  auto LBHV_Veto = Monitored::Scalar<unsigned>("LBHV_Veto",LBN);
346  for (size_t i= 0;i<m_partitions.size();i++){
347  if ( (BadHVPartitions & partMask[i]) != 0 ) {
348  fill(m_tools[m_histoGroups.at(i/2).at(m_partitions[i])],LBHV);
349  if ( ! burstveto ) {
350  fill(m_tools[m_histoGroups.at(i/2).at(m_partitions[i])],LBHV_Veto);
351  }
352  }
353  }
354  } // End of test on HVlines
355 
356  // event flagged by # of saturated quality cells
357  uint8_t SatTightPartitions = noisyRO->SatTightFlaggedPartitions();
359  auto LBSat = Monitored::Scalar<unsigned>("LBSat",LBN);
360  auto LBSatV = Monitored::Scalar<unsigned>("LBSat_Veto",LBN);
361  for (size_t i= 0;i<m_partitions.size();i++){
362  if ( (SatTightPartitions & partMask[i]) != 0 ) {
363  fill(m_tools[m_histoGroups.at(i/2).at(m_partitions[i])],LBSat);
364  if ( ! burstveto ) {
365  fill(m_tools[m_histoGroups.at(i/2).at(m_partitions[i])],LBSatV);
366  }
367  }
368  }
369  } // end of test on RNB-Saturated
370 
371 
372  // event flagged by tight-MNB
373  uint8_t MNBTightPartitions = noisyRO->MNBTightFlaggedPartitions();
374  if ( MNBTightPartitions != 0) {
375  auto LBMTight = Monitored::Scalar<unsigned>("LBMNBTight",LBN);
376  auto LBMTightV = Monitored::Scalar<unsigned>("LBMNBTight_Veto",LBN);
377  for (size_t i= 0;i<m_partitions.size();i++){
378  if ( (MNBTightPartitions & partMask[i]) != 0 ) {
379  fill(m_tools[m_histoGroups.at(i/2).at(m_partitions[i])],LBMTight);
380  if ( ! burstveto ) {
381  fill(m_tools[m_histoGroups.at(i/2).at(m_partitions[i])],LBMTightV);
382  }
383  }
384  }
385  } // End of test on MNB-Tight
386 
387  // event flagged by tight-MNB-PsVeto
388  uint8_t MNBTight_PsVetoPartitions = noisyRO->MNBTight_PsVetoFlaggedPartitions();
389  if ( MNBTight_PsVetoPartitions != 0) {
390  auto LBMTight_PsVeto = Monitored::Scalar<unsigned>("LBMNBTight_PsVeto",LBN);
391  auto LBMTight_PsVetoV = Monitored::Scalar<unsigned>("LBMNBTight_PsVeto_Veto",LBN);
392  for (size_t i= 0;i<m_partitions.size();i++){
393  if ( (MNBTight_PsVetoPartitions & partMask[i]) != 0 ) {
394  fill(m_tools[m_histoGroups.at(i/2).at(m_partitions[i])],LBMTight_PsVeto);
395  if ( ! burstveto ) {
396  fill(m_tools[m_histoGroups.at(i/2).at(m_partitions[i])],LBMTight_PsVetoV);
397  }
398  }
399  }
400  } // End of test on MNB-Tight-PsVeto
401 
402  // event flagged by loose-MNB
403  uint8_t MNBLoosePartitions = noisyRO->MNBLooseFlaggedPartitions();
404  if ( MNBLoosePartitions != 0) {
405  auto LBMLoose = Monitored::Scalar<unsigned>("LBMNBLoose",LBN);
406  auto LBMLooseV = Monitored::Scalar<unsigned>("LBMNBLoose_Veto",LBN);
407  for (size_t i= 0;i<m_partitions.size();i++){
408  if ( (MNBLoosePartitions & partMask[i]) != 0 ) {
409  fill(m_tools[m_histoGroups.at(i/2).at(m_partitions[i])],LBMLoose);
410  if ( ! burstveto ) {
411  fill(m_tools[m_histoGroups.at(i/2).at(m_partitions[i])],LBMLooseV);
412  }
413  }
414  }
415  } // end fo test on MNB-Loose
416 
417  return StatusCode::SUCCESS;
418 }
419 
421  unsigned long triggerbits, unsigned long L1triggerbits) const{
422 
423  auto trig = Monitored::Scalar<unsigned>("Triggers",0);
424  if ( triggerbits ==0 ) {
425  trig = m_EF_NoiseBurst_Triggers.size()+1;
427  } else {
428  for ( size_t i = 0; i < m_EF_NoiseBurst_Triggers.size(); i++) {
429  if ( triggerbits & (0x1 << i) ) {
430  trig = i+1;
432  }
433  }
434  }
435 
436  auto l1trig = Monitored::Scalar<unsigned>("L1Triggers",0);
437  if ( L1triggerbits ==0 ) {
438  l1trig = m_L1_NoiseBurst_Triggers.size()+1;
440  } else {
441  for ( size_t i = 0; i < m_L1_NoiseBurst_Triggers.size(); i++) {
442  if ( L1triggerbits & (0x1 << i) ) {
443  l1trig = i+1;
445  }
446  }
447  }
448 }
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
LArNoisyROMonAlg::fillHistogramsOnce
void fillHistogramsOnce(const EventContext &ctx, const bool isMC) const
Definition: LArNoisyROMonAlg.cxx:42
LArNoisyROMonAlg::LArNoisyROMonAlg
LArNoisyROMonAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: LArNoisyROMonAlg.cxx:13
LArNoisyROSummary::EMBAMask
@ EMBAMask
Definition: LArNoisyROSummary.h:34
LArNoisyROSummary::EMECCMask
@ EMECCMask
Definition: LArNoisyROSummary.h:33
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:557
AthMonitorAlgorithm::m_trigDecTool
PublicToolHandle< Trig::TrigDecisionTool > m_trigDecTool
Tool to tell whether a specific trigger is passed.
Definition: AthMonitorAlgorithm.h:340
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
LArEventBitInfo::MININOISEBURSTTIGHT
@ MININOISEBURSTTIGHT
Definition: LArEventBitInfo.h:18
LArBadXCont
Conditions-Data class holding LAr Bad Channel or Bad Feb information.
Definition: LArBadChannelCont.h:28
LArEventBitInfo::BADHVLINES
@ BADHVLINES
Definition: LArEventBitInfo.h:20
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
LArEventBitInfo::BADFEBS
@ BADFEBS
Definition: LArEventBitInfo.h:10
LArNoisyROMonAlg::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override final
adds event to the monitoring histograms
Definition: LArNoisyROMonAlg.cxx:91
LArNoisyROMonAlg::partitionNumber
size_t partitionNumber(const HWIdentifier) const
Definition: LArNoisyROMonAlg.h:93
xAOD::EventInfo_v1::timeStampNSOffset
uint32_t timeStampNSOffset() const
Nanosecond time offset wrt. the time stamp.
HWIdentifier
Definition: HWIdentifier.h:13
xAOD::EventInfo_v1::IS_SIMULATION
@ IS_SIMULATION
true: simulation, false: data
Definition: EventInfo_v1.h:151
xAOD::EventInfo_v1::LAr
@ LAr
The LAr calorimeter.
Definition: EventInfo_v1.h:335
LArNoisyROSummary::EMECAMask
@ EMECAMask
Definition: LArNoisyROSummary.h:33
xAOD::unsigned
unsigned
Definition: RingSetConf_v1.cxx:662
LArEventBitInfo.h
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
LArNoisyROMonAlg.h
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:36
python.selector.AtlRunQuerySelectorLhcOlc.sd
sd
Definition: AtlRunQuerySelectorLhcOlc.py:612
LArEventBitInfo::NOISEBURSTVETO
@ NOISEBURSTVETO
Definition: LArEventBitInfo.h:13
LArNoisyROMonAlg::m_badFebKey
SG::ReadCondHandleKey< LArBadFebCont > m_badFebKey
Definition: LArNoisyROMonAlg.h:62
LArEventBitInfo::TIGHTSATURATEDQ
@ TIGHTSATURATEDQ
Definition: LArEventBitInfo.h:12
python.BunchSpacingUtils.lb
lb
Definition: BunchSpacingUtils.py:88
LArEventBitInfo::MININOISEBURSTTIGHT_PSVETO
@ MININOISEBURSTTIGHT_PSVETO
Definition: LArEventBitInfo.h:19
lumiFormat.i
int i
Definition: lumiFormat.py:85
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
LArNoisyROMonAlg::m_MonGroupName
Gaudi::Property< std::string > m_MonGroupName
Definition: LArNoisyROMonAlg.h:49
LArNoisyROMonAlg::m_eventInfoDecorKey
SG::ReadDecorHandleKey< xAOD::EventInfo > m_eventInfoDecorKey
Definition: LArNoisyROMonAlg.h:67
LArNoisyROMonAlg::m_EF_NoiseBurst_Triggers
Gaudi::Property< std::vector< std::string > > m_EF_NoiseBurst_Triggers
Definition: LArNoisyROMonAlg.h:55
LArNoisyROSummary::EMBCMask
@ EMBCMask
Definition: LArNoisyROSummary.h:34
LArEventBitInfo::BADFEBS_W
@ BADFEBS_W
Definition: LArEventBitInfo.h:16
LArNoisyROMonAlg::m_doHisto
Gaudi::Property< bool > m_doHisto
Definition: LArNoisyROMonAlg.h:58
LArOnlineID_Base::channel_Id
HWIdentifier channel_Id(int barrel_ec, int pos_neg, int feedthrough, int slot, int channel) const
create channel identifier from fields
Definition: LArOnlineID_Base.cxx:1565
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LArNoisyROMonAlg::m_L1_NoiseBurst_Triggers
Gaudi::Property< std::vector< std::string > > m_L1_NoiseBurst_Triggers
Definition: LArNoisyROMonAlg.h:56
LArNoisyROMonAlg::m_partitions
Gaudi::Property< std::vector< std::string > > m_partitions
Definition: LArNoisyROMonAlg.h:51
LArBadXCont::const_iterator
BadChanVec::const_iterator const_iterator
Definition: LArBadChannelCont.h:33
LArNoisyROMonAlg.isMC
isMC
Definition: LArNoisyROMonAlg.py:274
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
AthMonitorAlgorithm::GetEventInfo
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)
Definition: AthMonitorAlgorithm.cxx:107
LArNoisyROMonAlg::m_MNBFebKey
SG::ReadCondHandleKey< LArBadFebCont > m_MNBFebKey
Definition: LArNoisyROMonAlg.h:63
xAOD::EventInfo_v1::lumiBlock
uint32_t lumiBlock() const
The current event's luminosity block number.
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
LArEventBitInfo::MININOISEBURSTLOOSE
@ MININOISEBURSTLOOSE
Definition: LArEventBitInfo.h:17
AthMonitorAlgorithm::m_tools
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
Definition: AthMonitorAlgorithm.h:338
LArNoisyROMonAlg::m_inputKey
SG::ReadHandleKey< LArNoisyROSummary > m_inputKey
Definition: LArNoisyROMonAlg.h:60
LArNoisyROMonAlg::initialize
virtual StatusCode initialize() override final
initialize
Definition: LArNoisyROMonAlg.cxx:20
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
LArNewCalib_Delay_OFC_Cali.FT
FT
Definition: LArNewCalib_Delay_OFC_Cali.py:124
LArNoisyROMonAlg::m_histoGroups
std::vector< std::map< std::string, int > > m_histoGroups
Definition: LArNoisyROMonAlg.h:82
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
LArHVIdMapping
Definition: LArHVIdMapping.h:21
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
StateLessPT_NewConfig.partition
partition
Definition: StateLessPT_NewConfig.py:49
xAOD::EventInfo_v1::timeStamp
uint32_t timeStamp() const
POSIX time in seconds from 1970. January 1st.
EventInfoRead.isMC
isMC
Definition: EventInfoRead.py:11
xAOD::EventInfo_v1::isEventFlagBitSet
bool isEventFlagBitSet(EventFlagSubDet subDet, size_t bit) const
Check one particular bit of one particular sub-detector.
Definition: EventInfo_v1.cxx:703
LArNoisyROMonAlg::m_SubDetNames
Gaudi::Property< std::vector< std::string > > m_SubDetNames
Definition: LArNoisyROMonAlg.h:50
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
LArNoisyROMonAlg::m_storeLooseMNBFEBs
Gaudi::Property< bool > m_storeLooseMNBFEBs
Definition: LArNoisyROMonAlg.h:53
LArNoisyROMonAlg::m_doTrigger
Gaudi::Property< bool > m_doTrigger
Definition: LArNoisyROMonAlg.h:52
LArNoisyROMonAlg::m_hvMapKey
SG::ReadCondHandleKey< LArHVIdMapping > m_hvMapKey
Definition: LArNoisyROMonAlg.h:64
LArNoisyROMonAlg::m_LArOnlineIDHelper
const LArOnlineID * m_LArOnlineIDHelper
Definition: LArNoisyROMonAlg.h:47
xAOD::EventInfo_v1::eventType
bool eventType(EventType type) const
Check for one particular bitmask value.
LArNoisyROMonAlg::fillTriggerHisto
void fillTriggerHisto(size_t partition, unsigned long triggerbits, unsigned long L1triggerbits) const
Definition: LArNoisyROMonAlg.cxx:420