ATLAS Offline Software
LArDigitalTriggMonAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
6 // ********************************************************************
7 //
8 // NAME: LArDigitalTriggMonAlg.cxx
9 // PACKAGE: LArMonitoring
10 //
11 // AUTHOR: Pavol Strizenec (pavol@mail.cern.ch)
12 // Ljiljana Morvaj (ljiljana.morvaj@cern.ch)
13 // Yesenia Hernadez (yesenia@cern.ch)
14 // Based on LAtDigitMon tool by L. Hellary and LArOddCellsMonTool.cxx by Benjamin Trocme
15 //
16 // Monitor a few things in the LArDigit...
17 //
18 // 1) Check that the highest value of the LArDigit is contained in an interval.
19 // If it is not the case increment 3 histograms for each subdetector:
20 // a) Out of range histograms
21 // b) The average histograms: give the average value of the highest digit sample
22 // c) Channel VS FEB histograms: gives wich slot on wich FEB has his highest digit sample ou of the range
23 // 2) Check if a digits samples are in saturation. If it's the case increment the saturation histograms.
24 //
25 // Available cuts in the jo file:
26 //
27 // a) SampleRangeLow-SampleRangeUp: range to check the digit sample.
28 // b) ADCcut : To select Digits Samples with signal.
29 // c) ADCsature: lowest value to check if a Digit sample is in saturation.
30 // ********************************************************************
31 
32 #include "LArDigitalTriggMonAlg.h"
33 
34 //Histograms
35 //LAr infos:
38 #include "LArRawEvent/LArDigit.h"
39 #include "CaloGeoHelpers/CaloSampling.h"
40 #include "LArRawEvent/LArSCDigit.h"
43 #include "LArTrigStreamMatching.h"
44 
46 
47 //STL:
48 #include <sstream>
49 #include <iomanip>
50 #include <cmath>
51 #include <vector>
52 #include <algorithm>
53 #include <set>
54 
55 
56 /*---------------------------------------------------------*/
58 {
59 }
60 
61 /*---------------------------------------------------------*/
63 {
64  ATH_MSG_INFO( "Initialize LArDigitalTriggMonAlg" );
65 
67  ATH_CHECK(detStore()->retrieve( m_LArOnlineIDHelper, "LArOnline_SuperCellID" ));
68 
70  ATH_CHECK(detStore()->retrieve( m_SCID_helper, "CaloCell_SuperCell_ID" ).isSuccess());
71 
72  ATH_MSG_INFO("Building tool map");
73  m_toolmapLayerNames_digi = Monitored::buildToolMap<int>( m_tools, "LArDigitalTriggerMon_digi", m_layerNames);
74  m_toolmapLayerNames_sc = Monitored::buildToolMap<int>( m_tools, "LArDigitalTriggerMon_sc", m_layerNames);
75 
76  ATH_MSG_INFO("Done building tool map");
77 
79  ATH_CHECK(m_bcContKey.initialize());
81 
88  ATH_CHECK(m_actualMuKey.initialize());
90 
91  // Property check:
92  constexpr unsigned expSize=MAXLYRNS*2+1;
93  if (m_layerNames.size() != expSize) {
94  ATH_MSG_ERROR("Unexpected size of LayerNames property. Expect "<< expSize << " entries, found "<< m_layerNames.size() << " entries");
95  return StatusCode::FAILURE;
96  }
97 
98  if (m_isADCBaseline) {
99  ATH_MSG_INFO("IsADCBas set to true");
100  }
102 }
103 
104 
106  float digi_eta;
107  float digi_phi;
111  int digi_adc;
120  unsigned int digi_lb;
123 
124 };
125 
126 
127 struct SC_MonValues {
128  float sc_eta;
129  float sc_phi;
130  int sc_ieta;
131  int sc_iphi;
133  float sc_et_ofl;
135  float sc_et_onl;
137  float sc_time;
138  int sc_bcid;
139  unsigned int sc_lb;
148 };
149 
150 
151 StatusCode LArDigitalTriggMonAlg::fillHistograms(const EventContext& ctx) const
152 {
153 
154  ATH_MSG_DEBUG("in fillHists()" );
155 
156  // General Monitored variables
157  auto lumi_block = Monitored::Scalar<unsigned int>("lumi_block", 0);
158  auto time_stamp = Monitored::Scalar<unsigned int>("time_stamp", 0);
159  auto BCID = Monitored::Scalar<int>("BCID",0);
160  auto Pedestal = Monitored::Scalar<float>("Pedestal",0.0);
161  auto PedestalRMS = Monitored::Scalar<float>("PedestalRMS",0.0);
162 
163  // From digi loop
164  auto Digi_Nsamples = Monitored::Scalar<int>("Digi_Nsamples",-1); // MNsamples
165  auto Digi_SCChannel = Monitored::Scalar<int>("Digi_SCChannel",-1); // MSCChannel
166  auto Digi_latomeSourceId = Monitored::Scalar<int>("Digi_latomeSourceId",-1); // MlatomeSourceId
167  auto Digi_latomeSourceIdBIN = Monitored::Scalar<int>("Digi_latomeSourceIdBIN",1); // MlatomeSourceIdBIN
168  auto Digi_phi = Monitored::Scalar<float>("Digi_phi",0.0); // MSCphi
169  auto Digi_eta = Monitored::Scalar<float>("Digi_eta",0.0); // MSCeta
170  auto Digi_iphi = Monitored::Scalar<int>("Digi_iphi",0.0);
171  auto Digi_ieta = Monitored::Scalar<int>("Digi_ieta",0.0);
172  auto Digi_maxpos = Monitored::Scalar<int>("Digi_maxpos",-1); // Mmaxpos
173  auto Digi_partition = Monitored::Scalar<int>("Digi_partition",-1); // Mpartition
174  auto Digi_sampos = Monitored::Scalar<int>("Digi_sampos",-1); // Msampos
175  auto Digi_ADC = Monitored::Scalar<int>("Digi_ADC",-1); // MADC
176  auto Digi_Diff_ADC_Ped = Monitored::Scalar<float>("Digi_Diff_ADC_Ped", -999); // Diff_ADC_Pedestal
177  auto Digi_Diff_ADC0_Ped = Monitored::Scalar<float>("Digi_Diff_ADC0_Ped", -999); // Pedestal diff
178  auto Digi_Diff_ADC_Ped_Norm = Monitored::Scalar<float>("Digi_Diff_ADC_Ped_Norm",-999); // Diff_ADC_Pedestal_Norm
179  // cuts
180  auto notBadQual = Monitored::Scalar<bool>("notBadQual",false);
181  auto ADCped10RMS = Monitored::Scalar<bool>("ADCped10RMS",false);
182  auto passDigiNom = Monitored::Scalar<bool>("passDigiNom",false);
183  auto badNotMasked = Monitored::Scalar<bool>("badNotMasked",false);
184 
185  // cuts which are used in both loops
186  auto notMasked = Monitored::Scalar<bool>("notMasked",false);
187 
188  // From SC loop
189  auto SC_SCChannel = Monitored::Scalar<int>("SC_SCChannel",-1); // MSCChannel
190  auto SC_latomeSourceId = Monitored::Scalar<int>("SC_latomeSourceId",-1); // MlatomeSourceId
191  auto SC_partition = Monitored::Scalar<int>("SC_partition",-1); // Mpartition
192  auto SC_phi = Monitored::Scalar<float>("SC_phi",0.0); // MSCphi
193  auto SC_eta = Monitored::Scalar<float>("SC_eta",0.0); // MSCeta
194  auto SC_iphi = Monitored::Scalar<int>("SC_iphi",0.0);
195  auto SC_ieta = Monitored::Scalar<int>("SC_ieta",0.0);
196  auto SC_energy_onl = Monitored::Scalar<int>("SC_energy_onl",0.0); // Menergy_onl
197  auto SC_ET_onl = Monitored::Scalar<float>("SC_ET_onl",0.0); // Menergy_onl
198  auto SC_ET_onl_muscaled = Monitored::Scalar<float>("SC_ET_onl_muscaled",0.0); // Menergy_onl
199  auto SC_energy_ofl = Monitored::Scalar<int>("SC_energy_ofl",0.0); // Menergy_ofl
200  auto SC_ET_ofl = Monitored::Scalar<float>("SC_ET_ofl",0.0); // Menergy_onl
201  auto SC_ET_diff = Monitored::Scalar<int>("SC_ET_diff",0.0); // MSCEt_diff
202  auto SC_time = Monitored::Scalar<float>("SC_time",0.0); // MSCtime
203  auto SC_latomeSourceIdBIN = Monitored::Scalar<int>("SC_latomeSourceIdBIN",1); // MlatomeSourceIdBIN
204  auto SC_AvEnergyOverMu = Monitored::Scalar<float>("SC_AvEnergyOverMu",0); // LMAvEnergyOverMu
205  // cuts
206  auto passTauSel = Monitored::Scalar<bool>("passTauSel",false);
207  auto nonZeroET = Monitored::Scalar<bool>("nonZeroET",false); // eTgt0GeV
208  auto nonZeroETofl = Monitored::Scalar<bool>("nonZeroETofl",false); // eTgt0GeV
209  auto onlofflEmismatch = Monitored::Scalar<bool>("onlofflEmismatch",false);
210  auto notSatur = Monitored::Scalar<bool>("notSatur",false);
211  auto notOFCbOF = Monitored::Scalar<bool>("notOFCbOF",false);
212  auto tauGt3 = Monitored::Scalar<bool>("tauGt3",false);
213  auto nonZeroEtau = Monitored::Scalar<bool>("nonZeroEtau",false);
214  auto eTgt1GeV = Monitored::Scalar<bool>("eTgt1GeV",false);
215  auto eTgt10GeV = Monitored::Scalar<bool>("eTgt10GeV",false);
216  auto eToflGt1GeV = Monitored::Scalar<bool>("eToflGt1GeV",false);
217 
218 
219  auto passSCNom = Monitored::Scalar<bool>("passSCNom",false); // pass tau, not satur, not OFCb OF, not masked nonZeroET
220  auto passSCNom1 = Monitored::Scalar<bool>("passSCNom1",false); // pass tau, not satur, not OFCb OF, not masked eTgt1GeV
221  auto passSCNom10 = Monitored::Scalar<bool>("passSCNom10",false); // pass tau, not satur, not OFCb OF, not masked eTgt10GeV
222  auto passSCNom10tauGt3 = Monitored::Scalar<bool>("passSCNom10tauGt3",false); // pass tau, not satur, not OFCb OF, not masked eTgt10GeV tauGt3
223  auto saturNotMasked = Monitored::Scalar<bool>("saturNotMasked",false); // notSatur is false, notMasked is false
224  auto OFCbOFNotMasked = Monitored::Scalar<bool>("OFCbOFNotMasked",false); // notOFCbOF is false, notMasked is false
225  auto notMaskedEoflNe0 = Monitored::Scalar<bool>("notMaskedEoflNe0",false); // not masked OSUM, not satur, not OFCb OF, ET ofl != 0
226  auto notMaskedEoflGt1 = Monitored::Scalar<bool>("notMaskedEoflGt1",false); // not masked OSUM, not satur, not OFCb OF, ET ofl > 1
227 
228  // From LATOME header loop
229  auto thisEvent=this->GetEventInfo(ctx);
230 
231  const std::vector<unsigned> streamsThisEvent=LArMon::trigStreamMatching(m_streams,thisEvent->streamTags());
232 
234  const LArOnOffIdMapping* cabling=*cablingHdl;
235 
236  SG::ReadHandle<LArDigitContainer> hLArDigitContainer{m_digitContainerKey,ctx}; //"SC"
237  if (!hLArDigitContainer.isValid()) {
238  ATH_MSG_WARNING("The requested digit container key could not be retrieved. Was there a problem retrieving information from the run logger?");
239  }else{
240  ATH_MSG_DEBUG("hLArDigitContainer.size() " << hLArDigitContainer->size());
241  }
242  SG::ReadHandle<LArRawSCContainer > hSCetContainer{m_rawSCContainerKey,ctx}; //"SC_ET"
243  if (!hSCetContainer.isValid()) {
244  ATH_MSG_WARNING("The requested SC ET container key could not be retrieved. Was there a problem retrieving information from the run logger?");
245  }else{
246  ATH_MSG_DEBUG("hSCetContainer.size() " << hSCetContainer->size());
247  }
248  SG::ReadHandle<LArRawSCContainer > hSCetRecoContainer{m_rawSCEtRecoContainerKey,ctx}; //"SC_ET_RECO"
249  if (!hSCetRecoContainer.isValid()) {
250  ATH_MSG_WARNING("The requested SC ET reco container key could not be retrieved. Was there a problem retrieving information from the run logger?");
251  }else{
252  ATH_MSG_DEBUG("hSCetRecoContainer.size() " << hSCetRecoContainer->size());
253  }
254 
255 
256  SG::ReadHandle<LArLATOMEHeaderContainer> hLArLATOMEHeaderContainer{m_LATOMEHeaderContainerKey,ctx}; //"SC_LATOME_HEADER"
257  if (!hLArLATOMEHeaderContainer.isValid()) {
258  ATH_MSG_WARNING("The requested LATOME header container key could not be retrieved. Was there a problem retrieving information from the run logger?");
259  }else{
260  ATH_MSG_DEBUG("hLArLATOMEHeaderContainer.size() " << hLArLATOMEHeaderContainer->size());
261  }
262 
263  if ( hLArDigitContainer->size() == 0 && hSCetContainer->size() == 0 && hSCetRecoContainer->size() == 0 && hLArLATOMEHeaderContainer->size() == 0){
264  //Make this only warning, come CI tests use the runs without DT info
265  ATH_MSG_WARNING("All of the requested containers are empty. Was there a problem retrieving information from the run logger?");
266  return StatusCode::SUCCESS;
267  }
268 
269  BCID = thisEvent->bcid();// - 88)%((36+7)*4 + 36 + 31);
270  lumi_block = thisEvent->lumiBlock();
271  time_stamp = thisEvent->timeStamp();
272 
273  float mu = lbInteractionsPerCrossing(ctx);
274  float event_mu = lbLuminosityPerBCID(ctx);
275 
276  ATH_MSG_DEBUG("mu (LB): "<<mu);
277  ATH_MSG_DEBUG("mu (BCID): "<<event_mu);
278  ATH_MSG_DEBUG("Event number: "<<thisEvent->eventNumber());
279  ATH_MSG_DEBUG("LB number: "<<thisEvent->lumiBlock());
280  ATH_MSG_DEBUG("BCID: "<<thisEvent->bcid());
282  const ILArPedestal* pedestals=*pedestalHdl;
283 
285  const CaloSuperCellDetDescrManager* ddman = *caloSuperCellMgrHandle;
286 
287  //retrieve BadChannel info:
288  const LArBadChannelCont* bcCont=nullptr;
290  bcCont=(*bcContHdl);
291 
292 
293  if ( (hLArDigitContainer.isValid()) ){
294  std::vector<std::vector<Digi_MonValues>> digiMonValueVec(m_layerNames.size());
295  for (auto& innerVec : digiMonValueVec) {
296  innerVec.reserve(1600); // (m_layerNcells[ilayer]) * nsamples;
297  }
298 
299  // Loop over digits
300  for (const LArDigit* pLArDigit : *hLArDigitContainer) {
301  HWIdentifier id = pLArDigit->hardwareID(); //gives online ID
302  //skip disconnected channels:
303  if(!cabling->isOnlineConnected(id)) continue;
304 
305  const unsigned trueNSamples = pLArDigit->nsamples();
306  Digi_Nsamples = trueNSamples; // Fill the monitored variable
307  const int cgain = pLArDigit->gain();
308 
309  const Identifier offlineID=cabling->cnvToIdentifier(id);
310  const CaloDetDescrElement* caloDetElement = ddman->get_element(offlineID);
311  if(caloDetElement == 0 ){
312  ATH_MSG_ERROR( "Cannot retrieve caloDetElement" );
313  continue;
314  }
315  Digi_eta = caloDetElement->eta_raw();
316  Digi_phi = caloDetElement->phi_raw();
317 
318  Digi_ieta = m_SCID_helper->eta(offlineID);
319  Digi_iphi = m_SCID_helper->phi(offlineID);
320 
321  const int calosample=caloDetElement->getSampling();
322 
323  const unsigned iLyrNS=m_caloSamplingToLyrNS[calosample];
324  const int side = m_LArOnlineIDHelper->pos_neg(id);
325  const unsigned iLyr=iLyrNS*2+side;
326  auto& lvaluemap_digi = digiMonValueVec[iLyr];
327  auto& lvaluemap_digi_ALL = digiMonValueVec.back();
328 
329 
330  // Determine to which partition this channel belongs to
331  const int ThisPartition=whatPartition(id,side);
332  Digi_partition = ThisPartition; // Fill the monitored variable
333 
334  fill(m_scMonGroupName, Digi_Nsamples);
335 
336  // Check if this is a maskedOSUM SC
337  notMasked = true;
338  if ( m_bcMask.cellShouldBeMasked(bcCont,id)) {
339  notMasked = false;
340  }
341 
342  if(pedestals){
343  Pedestal = pedestals->pedestal(id,cgain);
344  PedestalRMS = pedestals->pedestalRMS(id,cgain);
345  }
346  else
347  ATH_MSG_INFO( "Pedestal values not received");
348 
349  const LArSCDigit* scdigi = dynamic_cast<const LArSCDigit*>(pLArDigit);
350  if(!scdigi){ ATH_MSG_DEBUG(" CAN'T CAST ");
351  }else{
352  Digi_SCChannel = scdigi->Channel();
353  Digi_latomeSourceId = scdigi->SourceId();
354  Digi_latomeSourceIdBIN=getXbinFromSourceID(Digi_latomeSourceId);
355  }
356  // Retrieve samples
357  const std::vector<short>* digito = &pLArDigit->samples();
358 
359  //retrieve the max sample digit ie digitot.back().
360  std::vector<short>::const_iterator maxSam = std::max_element(digito->begin(), digito->end());
361  int thismaxPos = std::distance(digito->begin(), maxSam);
362  Digi_maxpos=thismaxPos+1; //count samples [1,5]
363  float ADC_max = pLArDigit->samples().at(Digi_maxpos-1);
364 
365  float ADC_0 = pLArDigit->samples().at(0);
366  if (m_isADCBaseline) { //SC_ADC_BAS, have to divide by 8
367  ADC_0 = ADC_0/8;
368  }
369 
370  // Start Loop over samples
371  Digi_Diff_ADC0_Ped = ADC_0 - Pedestal;
372  for(unsigned i=0; i<trueNSamples;++i) {
373  badNotMasked = false;
374  notBadQual = false;
375  ADCped10RMS = false;
376  passDigiNom = false;
377  Digi_sampos=i+1;
378  Digi_ADC = pLArDigit->samples().at(i);
379  if (m_isADCBaseline) { //SC_ADC_BAS, have to divide by 8
380  Digi_ADC=Digi_ADC/8;
381  }
382 
383  Digi_Diff_ADC_Ped = Digi_ADC - Pedestal;
384  if ( ADC_max != Pedestal ){
385  Digi_Diff_ADC_Ped_Norm = (Digi_ADC - Pedestal) / std::abs(ADC_max - Pedestal);
386  }
387 
388  // Some selections
389  if(Digi_ADC!=-1){
390  notBadQual = true;
391  }else{
392  if ( notMasked ){
393  badNotMasked = true;
394  }
395  }
396  if(ADC_max - Pedestal > 10*PedestalRMS) {
397  ADCped10RMS = true;
398  }
399  if ( notMasked && notBadQual && ADCped10RMS ){
400  passDigiNom = true;
401  }
402 
403  lvaluemap_digi.emplace_back(Digi_eta, Digi_phi, Digi_ieta, Digi_iphi, Digi_sampos, Digi_ADC, Digi_latomeSourceIdBIN, Pedestal, Digi_maxpos, Digi_partition, Digi_Diff_ADC_Ped_Norm, Digi_Diff_ADC_Ped, Digi_Diff_ADC0_Ped, BCID, lumi_block, passDigiNom, badNotMasked);
404  lvaluemap_digi_ALL.emplace_back(Digi_eta, Digi_phi, Digi_ieta, Digi_iphi, Digi_sampos, Digi_ADC, Digi_latomeSourceIdBIN, Pedestal, Digi_maxpos, Digi_partition, Digi_Diff_ADC_Ped_Norm, Digi_Diff_ADC_Ped, Digi_Diff_ADC0_Ped, BCID, lumi_block, passDigiNom, badNotMasked);
405 
406  } // End loop over samples
407 
408  } // End of loop on LArDigit
409 
410 
411  // fill, for every layer/threshold
412  for (size_t ilayer = 0; ilayer < digiMonValueVec.size(); ++ilayer) {
413  const auto& tool = digiMonValueVec[ilayer];
414  auto digi_part_eta = Monitored::Collection("Digi_part_eta",tool,[](const auto& v){return v.digi_eta;});
415  auto digi_part_phi = Monitored::Collection("Digi_part_phi",tool,[](const auto& v){return v.digi_phi;});
416  auto digi_part_ieta = Monitored::Collection("Digi_part_ieta",tool,[](const auto& v){return v.digi_ieta;});
417  auto digi_part_iphi = Monitored::Collection("Digi_part_iphi",tool,[](const auto& v){return v.digi_iphi;});
418  auto digi_part_sampos = Monitored::Collection("Digi_part_sampos",tool,[](const auto& v){return v.digi_sampos;});
419  auto digi_part_adc = Monitored::Collection("Digi_part_adc",tool,[](const auto& v){return v.digi_adc;});
420  auto digi_part_latomesourceidbin = Monitored::Collection("Digi_part_latomesourceidbin",tool,[](const auto& v){return v.digi_latomesourceidbin;});
421  auto digi_part_pedestal = Monitored::Collection("Digi_part_pedestal",tool,[](const auto& v){return v.digi_pedestal;});
422  auto digi_part_maxpos = Monitored::Collection("Digi_part_maxpos",tool,[](const auto& v){return v.digi_maxpos;});
423  auto digi_part_partition = Monitored::Collection("Digi_part_partition",tool,[](const auto& v){return v.digi_partition;});
424  auto digi_part_diff_adc_ped_norm = Monitored::Collection("Digi_part_diff_adc_ped_norm",tool,[](const auto& v){return v.digi_diff_adc_ped_norm;});
425  auto digi_part_diff_adc_ped = Monitored::Collection("Digi_part_diff_adc_ped",tool,[](const auto& v){return v.digi_diff_adc_ped;});
426  auto digi_part_diff_adc0_ped = Monitored::Collection("Digi_part_diff_adc0_ped",tool,[](const auto& v){return v.digi_diff_adc0_ped;});
427  auto digi_part_bcid = Monitored::Collection("Digi_part_BCID",tool,[](const auto& v){return v.digi_bcid;});
428  auto digi_part_lb = Monitored::Collection("Digi_part_LB",tool,[](const auto& v){return v.digi_lb;});
429  auto digi_part_passDigiNom = Monitored::Collection("Digi_part_passDigiNom",tool,[](const auto& v){return v.digi_passDigiNom;});
430  auto digi_part_badNotMasked = Monitored::Collection("Digi_part_badNotMasked",tool,[](const auto& v){return v.digi_badNotMasked;});
431 
433  digi_part_eta, digi_part_phi, digi_part_ieta, digi_part_iphi, digi_part_sampos, digi_part_adc, digi_part_latomesourceidbin, digi_part_pedestal, digi_part_maxpos, digi_part_diff_adc_ped_norm, digi_part_diff_adc_ped, digi_part_diff_adc0_ped, digi_part_bcid, digi_part_lb, digi_part_passDigiNom, digi_part_badNotMasked);
434  }
435 
436 
437  } // End if(LArDigitContainer is valid)
438 
439 
440  if ( hSCetContainer.isValid() && hSCetRecoContainer.isValid() ){
441  LArRawSCContainer::const_iterator itSC = hSCetContainer->begin();
442  LArRawSCContainer::const_iterator itSC_e= hSCetContainer->end();
443  LArRawSCContainer::const_iterator itSCReco = hSCetRecoContainer->begin();
444  const LArRawSC* rawSC = 0;
445  const LArRawSC* rawSCReco = 0;
446 
447  std::vector<std::vector<SC_MonValues>> scMonValueVec(m_layerNames.size());
448  for (auto& innerVec : scMonValueVec) {
449  innerVec.reserve(1600); // (m_layerNcells[ilayer]) * nsamples;
450  }
451 
452  // Loop over SCs
453  for ( ; itSC!=itSC_e;++itSC,++itSCReco) {
454  rawSC = *itSC;
455  if ( itSCReco < hSCetRecoContainer->end() ){
456  rawSCReco = *itSCReco;
457  }else{
458  ATH_MSG_WARNING("Looping SC ET container, but we have reached the end of the SC ET Reco iterator. Check the sizes of these containers. Is SC ET Reco size zero? Is there a problem with the digit container name sent by the run logger?");
459  rawSCReco = 0;
460  }
461  SC_SCChannel = rawSC->chan();
462  HWIdentifier id = rawSC->hardwareID(); // gives online ID
463  //skip disconnected channels:
464  if(!cabling->isOnlineConnected(id)) continue;
465 
466  const Identifier offlineID=cabling->cnvToIdentifier(id); //converts online to offline ID
467  // Get Physical Coordinates
468  const CaloDetDescrElement* caloDetElement = ddman->get_element(offlineID);
469  if (caloDetElement == 0) {
470  ATH_MSG_ERROR("Cannot retrieve (eta,phi) coordinates for raw channels");
471  ATH_MSG_ERROR(" ==============> " << std::hex << "; offlineID = " << offlineID<< "online ID =" << m_LArOnlineIDHelper->channel_name(id) << "; rawSC->SourceId() = " << rawSC->SourceId());
472  continue;
473  }
474  SC_eta = caloDetElement->eta_raw();
475  SC_phi = caloDetElement->phi_raw();
476 
477  SC_ieta = m_SCID_helper->eta(offlineID);
478  SC_iphi = m_SCID_helper->phi(offlineID);
479  int calosample=caloDetElement->getSampling();
480 
481  const unsigned iLyrNS=m_caloSamplingToLyrNS[calosample];
482  const unsigned side = m_LArOnlineIDHelper->pos_neg(id);
483  const unsigned iLyr=iLyrNS*2+side;
484 
485  auto& lvaluemap_sc = scMonValueVec[iLyr];
486  auto& lvaluemap_sc_ALL = scMonValueVec.back();
487 
488  SC_latomeSourceIdBIN=getXbinFromSourceID(rawSC->SourceId());
489 
490  // initialise cuts
491  notMasked = false;
492  passTauSel = false;
493  nonZeroET = false;
494  notSatur = false;
495  nonZeroEtau = false;
496  eTgt1GeV = false;
497  eTgt10GeV = false;
498  notOFCbOF = false;
499  tauGt3 = false;
500  onlofflEmismatch=false;
501  passSCNom = false;
502  passSCNom1 = false;
503  passSCNom10 = false;
504  passSCNom10tauGt3 = false;
505  saturNotMasked = false;
506  OFCbOFNotMasked = false;
507  notMaskedEoflNe0 = false;
508  notMaskedEoflGt1 = false;
509  nonZeroETofl = false;
510  eToflGt1GeV = false;
511  // Check if this is a maskedOSUM SC
512  if ( ! m_bcMask.cellShouldBeMasked(bcCont,id)) {
513  notMasked = true;
514  }
515  // popopopo
516  if ( rawSCReco != 0 && rawSCReco->passTauSelection().size()>0){ //only compare Et if tau selection is passed
517  if (rawSCReco->passTauSelection().at(0) == true) passTauSel = true;
518  }
519  unsigned int bcid_ind = 0;
520  if (rawSC->energies().size()>0){
521  for ( auto & SCe : rawSC->bcids() ){
522  if ( SCe == BCID ) break;
523  bcid_ind++;
524  }
525  if ( bcid_ind >= rawSC->bcids().size() ){
526  ATH_MSG_WARNING("BCID not found in SC bcids list!! "<<BCID<<" BCIDs size: "<<rawSC->bcids().size()<<", proposed index: "<<bcid_ind);
527  } else if ( rawSC->bcids().at(bcid_ind) != BCID ){
528  ATH_MSG_WARNING("BCID not found in SC bcids list!! "<<BCID<<" "<<rawSC->bcids().at(bcid_ind));
529  }
530 
531  if (rawSC->energies().size() > bcid_ind){
532  SC_energy_onl = rawSC->energies().at(bcid_ind);
533  }else{
534  ATH_MSG_WARNING("rawSC energies vector is too small for the requested BCID index "<<bcid_ind<<" (size is "<<rawSC->energies().size()<<", bcid vec size is "<<rawSC->bcids().size()<<")");
535  SC_energy_onl = 0;
536  }
537  }else{
538  ATH_MSG_WARNING("rawSC energies vector is empty!");
539  SC_energy_onl = 0;
540  }
541 
542  if ( rawSCReco != 0 ){
543  if ( rawSCReco->energies().size()>0 ){
544  SC_energy_ofl = rawSCReco->energies().at(0); // algorithm already selects the correct energy
545  }else{
546  ATH_MSG_WARNING("rawSCReco energies vector is empty!");
547  SC_energy_ofl = 0;
548  }
549  }
550  SC_ET_diff = SC_energy_onl - SC_energy_ofl;
551  SC_ET_onl = ( SC_energy_onl* 12.5 ) / 1000; // Converted to GeV
552  SC_ET_ofl = ( SC_energy_ofl* 12.5 ) / 1000; // Converted to GeV
553  SC_ET_onl_muscaled = event_mu > 0. ? SC_ET_onl / event_mu : SC_ET_onl;
554  int Etau = 0;
555  if ( rawSCReco != 0 ){
556  if ( rawSCReco->tauEnergies().size()>0 ){ Etau = rawSCReco->tauEnergies().at(0); }
557  }
558  SC_time = (SC_energy_ofl != 0) ? (float)Etau / (float)SC_energy_ofl : Etau;
559 
560  ATH_MSG_DEBUG("Energy onl - Energy ofl: "<<SC_energy_onl<<", "<<SC_energy_ofl<<std::endl);
561  if (SC_ET_onl != 0 ){
562  nonZeroET = true;
563  }
564  if (SC_ET_onl > 1){
565  eTgt1GeV = true;
566  }
567  if (SC_ET_onl > 10){
568  eTgt10GeV = true;
569  }
570  if (SC_ET_ofl != 0 ) {
571  nonZeroETofl = true;
572  }
573  if (SC_ET_ofl > 1){
574  eToflGt1GeV = true;
575  }
576  if ( rawSC->satur().size()>bcid_ind ){
577  if ( rawSC->satur().at(bcid_ind) ){
578  if ( notMasked ){
579  saturNotMasked = true;
580  }
581  }else{
582  notSatur = true;
583  }
584  }
585  if (Etau != 0){
586  nonZeroEtau = true;
587  }
588  if ( rawSCReco != 0 && rawSCReco->ofcbOverflow() == false ){
589  notOFCbOF = true;
590  }else{
591  if ( notMasked ){
592  OFCbOFNotMasked = true;
593  }
594  }
595  if ( std::abs(SC_time) > 3 ){
596  tauGt3 = true;
597  }
598 
599  if ( notMasked && notSatur && notOFCbOF ){
600  if(nonZeroETofl){
601  notMaskedEoflNe0 = true;
602  }
603  if(eToflGt1GeV) {
604  notMaskedEoflGt1 = true;
605  }
606 
607  if ( passTauSel ){
608  if ( nonZeroET ){
609  passSCNom = true;
610  }
611  if ( eTgt1GeV ){
612  passSCNom1 = true;
613  }
614  if (eTgt10GeV ){
615  passSCNom10 = true;
616  if ( tauGt3 ){
617  passSCNom10tauGt3 = true;
618  }
619  }
620  if (SC_energy_onl != SC_energy_ofl){
621  onlofflEmismatch = true;
622  }
623  }
624  } // end nominal selections
625 
626  lvaluemap_sc.emplace_back(SC_eta, SC_phi, SC_ieta, SC_iphi, SC_latomeSourceIdBIN, SC_ET_ofl, SC_ET_diff, SC_ET_onl, SC_ET_onl_muscaled, SC_time, BCID, lumi_block, passSCNom, passSCNom1, passSCNom10, passSCNom10tauGt3, saturNotMasked, OFCbOFNotMasked, notMaskedEoflNe0, notMaskedEoflGt1);
627  lvaluemap_sc_ALL.emplace_back(SC_eta, SC_phi, SC_ieta, SC_iphi, SC_latomeSourceIdBIN, SC_ET_ofl, SC_ET_diff, SC_ET_onl, SC_ET_onl_muscaled, SC_time, BCID, lumi_block, passSCNom, passSCNom1, passSCNom10, passSCNom10tauGt3, saturNotMasked, OFCbOFNotMasked, notMaskedEoflNe0, notMaskedEoflGt1);
628 
629 
630  } //end loop over SCs
631 
632  // fill, for every layer/threshold
633  for (size_t ilayer = 0; ilayer < scMonValueVec.size(); ++ilayer) {
634  const auto& tool = scMonValueVec[ilayer];
635  auto sc_part_eta = Monitored::Collection("SC_part_eta",tool,[](const auto& v){return v.sc_eta;});
636  auto sc_part_phi = Monitored::Collection("SC_part_phi",tool,[](const auto& v){return v.sc_phi;});
637  auto sc_part_ieta = Monitored::Collection("SC_part_ieta",tool,[](const auto& v){return v.sc_ieta;});
638  auto sc_part_iphi = Monitored::Collection("SC_part_iphi",tool,[](const auto& v){return v.sc_iphi;});
639  auto sc_part_latomesourceidbin = Monitored::Collection("SC_part_latomesourceidbin",tool,[](const auto& v){return v.sc_latomesourceidbin;});
640  auto sc_part_et_ofl = Monitored::Collection("SC_part_et_ofl",tool,[](const auto& v){return v.sc_et_ofl;});
641  auto sc_part_et_diff = Monitored::Collection("SC_part_et_diff",tool,[](const auto& v){return v.sc_et_diff;});
642  auto sc_part_et_onl = Monitored::Collection("SC_part_et_onl",tool,[](const auto& v){return v.sc_et_onl;});
643  auto sc_part_et_onl_muscaled = Monitored::Collection("SC_part_et_onl_muscaled",tool,[](const auto& v){return v.sc_et_onl_muscaled;});
644  auto sc_part_time = Monitored::Collection("SC_part_time",tool,[](const auto& v){return v.sc_time;});
645  auto sc_part_bcid = Monitored::Collection("SC_part_BCID",tool,[](const auto& v){return v.sc_bcid;});
646  auto sc_part_lb = Monitored::Collection("SC_part_LB",tool,[](const auto& v){return v.sc_lb;});
647  auto sc_part_passSCNom = Monitored::Collection("SC_part_passSCNom",tool,[](const auto& v){return v.sc_passSCNom;});
648  auto sc_part_passSCNom1 = Monitored::Collection("SC_part_passSCNom1",tool,[](const auto& v){return v.sc_passSCNom1;});
649  auto sc_part_passSCNom10 = Monitored::Collection("SC_part_passSCNom10",tool,[](const auto& v){return v.sc_passSCNom10;});
650  auto sc_part_passSCNom10tauGt3 = Monitored::Collection("SC_part_passSCNom10tauGt3",tool,[](const auto& v){return v.sc_passSCNom10tauGt3;});
651  auto sc_part_saturNotMasked = Monitored::Collection("SC_part_saturNotMasked",tool,[](const auto& v){return v.sc_saturNotMasked;});
652  auto sc_part_OFCbOFNotMasked = Monitored::Collection("SC_part_OFCbOFNotMasked",tool,[](const auto& v){return v.sc_OFCbOFNotMasked;});
653  auto sc_part_notMaskedEoflNe0 = Monitored::Collection("SC_part_notMaskedEoflNe0",tool,[](const auto& v){return v.sc_notMaskedEoflNe0;});
654  auto sc_part_notMaskedEoflGt1 = Monitored::Collection("SC_part_notMaskedEoflGt1",tool,[](const auto& v){return v.sc_notMaskedEoflGt1;});
655 
656 
658  sc_part_eta, sc_part_phi, sc_part_ieta, sc_part_iphi, sc_part_latomesourceidbin, sc_part_et_ofl, sc_part_et_diff, sc_part_et_onl, sc_part_et_onl_muscaled, sc_part_time, sc_part_bcid, sc_part_lb, sc_part_passSCNom, sc_part_passSCNom1, sc_part_passSCNom10, sc_part_passSCNom10tauGt3, sc_part_saturNotMasked, sc_part_OFCbOFNotMasked, sc_part_notMaskedEoflNe0, sc_part_notMaskedEoflGt1);
659  }
660 
661 
662  } // End if(LArSCContainer is valid)
663 
664 
665 
666  //LATOME event size
667  if ( (hLArLATOMEHeaderContainer.isValid()) ){
668  auto event_size = Monitored::Scalar<float>("event_size",0);
669  for (const LArLATOMEHeader* pLArLATOMEHeader : *hLArLATOMEHeaderContainer) {
670  event_size += pLArLATOMEHeader->ROBFragSize() + 48; //48 is the offset between rod_ndata and ROB fragment size
671  }
672  event_size /= (1024*1024/4);
673  fill(m_scMonGroupName,lumi_block,event_size);
674  }
675 
676 
677  //end LATOME event size
678 
679 
680  return StatusCode::SUCCESS;
681 }
682 
683 
684 /*---------------------------------------------------------*/
688 {
690  if(side==0) return 0;
691  else return 1;
692  } else if (m_LArOnlineIDHelper->isEMECchannel(id)) {
693  if(side==0) return 2;
694  else return 3;
695  } else if (m_LArOnlineIDHelper->isHECchannel(id)) {
696  if(side==0) return 4;
697  else return 5;
698  } else {
699  if(side==0) return 6;
700  else return 7;
701  }
702 }
703 
704 
705 
706 unsigned LArDigitalTriggMonAlg::getXbinFromSourceID(const unsigned sourceID) const
707 {
708  // int NLatomeBins = 117;
709  int detStartingBin=m_NLatomeBins;
710  const unsigned detID = sourceID >> 16;
711  const unsigned value = sourceID & 0xF;
712  auto mapit=m_LatomeDetBinMappingQ.find(detID);
713  if (mapit!=m_LatomeDetBinMappingQ.end()) {
714  detStartingBin=mapit->second;
715  }
716 
717  unsigned binx = detStartingBin+value;
718  if (binx>m_NLatomeBins){
719  ATH_MSG_WARNING("something wrong with binning, filling overflowbin");
720  binx=m_NLatomeBins;
721  }
722 
723  return binx;
724 }
725 
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
LArRawSC
Liquid Argon SuperCell raw data.
Definition: LArRawSC.h:19
ILArPedestal::pedestal
virtual float pedestal(const HWIdentifier &id, int gain) const =0
SC_MonValues::sc_bcid
int sc_bcid
Definition: LArDigitalTriggMonAlg.cxx:138
SC_MonValues::sc_et_diff
int sc_et_diff
Definition: LArDigitalTriggMonAlg.cxx:134
LArDigitalTriggMonAlg::m_bcContKey
SG::ReadCondHandleKey< LArBadChannelCont > m_bcContKey
Definition: LArDigitalTriggMonAlg.h:76
AthMonitorAlgorithm::lbInteractionsPerCrossing
virtual float lbInteractionsPerCrossing(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate instantaneous number of interactions, i.e.
Definition: AthMonitorAlgorithm.cxx:234
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
LArDigitalTriggMonAlg::whatPartition
int whatPartition(HWIdentifier id, int side) const
private methods:
Definition: LArDigitalTriggMonAlg.cxx:687
SC_MonValues::sc_iphi
int sc_iphi
Definition: LArDigitalTriggMonAlg.cxx:131
LArDigitalTriggMonAlg::m_caloSamplingToLyrNS
const std::array< unsigned, CaloSampling::Unknown > m_caloSamplingToLyrNS
Definition: LArDigitalTriggMonAlg.h:99
SC_MonValues::sc_et_onl_muscaled
float sc_et_onl_muscaled
Definition: LArDigitalTriggMonAlg.cxx:136
LArDigitalTriggMonAlg::m_isADCBaseline
Gaudi::Property< bool > m_isADCBaseline
Definition: LArDigitalTriggMonAlg.h:56
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
LArDigitalTriggMonAlg::m_LArOnlineIDHelper
const LArOnline_SuperCellID * m_LArOnlineIDHelper
Definition: LArDigitalTriggMonAlg.h:149
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
LArRawSC::SourceId
unsigned int SourceId() const
Definition: LArRawSC.h:95
ILArPedestal
Definition: ILArPedestal.h:12
LArBadXCont
Conditions-Data class holding LAr Bad Channel or Bad Feb information.
Definition: LArBadChannelCont.h:28
LArRawSC::hardwareID
const HWIdentifier & hardwareID() const
Definition: LArRawSC.h:89
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
LArPedestalSC.h
CaloDetDescrManager_Base::get_element
const CaloDetDescrElement * get_element(const Identifier &cellId) const
get element by its identifier
Definition: CaloDetDescrManager.cxx:159
ReadCellNoiseFromCool.cabling
cabling
Definition: ReadCellNoiseFromCool.py:154
Digi_MonValues::digi_bcid
int digi_bcid
Definition: LArDigitalTriggMonAlg.cxx:119
LArLATOMEHeaderContainer.h
LArBadChannelMask::buildBitMask
StatusCode buildBitMask(const std::vector< std::string > &problemsToMask, MsgStream &msg)
Definition: LArBadChannelMask.cxx:10
Digi_MonValues::digi_phi
float digi_phi
Definition: LArDigitalTriggMonAlg.cxx:107
athena.value
value
Definition: athena.py:122
LArDigitalTriggMonAlg::m_problemsToMask
Gaudi::Property< std::vector< std::string > > m_problemsToMask
Definition: LArDigitalTriggMonAlg.h:77
SC_MonValues::sc_latomesourceidbin
int sc_latomesourceidbin
Definition: LArDigitalTriggMonAlg.cxx:132
HWIdentifier
Definition: HWIdentifier.h:13
LArBadChannelMask::cellShouldBeMasked
bool cellShouldBeMasked(const LArBadChannelCont *bcCont, const HWIdentifier &hardwareId) const
Definition: LArBadChannelMask.h:42
LArSCDigit::SourceId
unsigned int SourceId() const
Definition: LArSCDigit.h:45
Digi_MonValues::digi_iphi
int digi_iphi
Definition: LArDigitalTriggMonAlg.cxx:109
LArDigitalTriggMonAlg::m_toolmapLayerNames_sc
std::map< std::string, int > m_toolmapLayerNames_sc
Definition: LArDigitalTriggMonAlg.h:146
LArRawSC::satur
const std::vector< bool > & satur() const
Definition: LArRawSC.h:107
LArRawSC::tauEnergies
const std::vector< int > & tauEnergies() const
Definition: LArRawSC.h:110
LArDigitalTriggMonAlg::m_layerNames
StringArrayProperty m_layerNames
Definition: LArDigitalTriggMonAlg.h:91
CaloDetDescrElement::eta_raw
float eta_raw() const
cell eta_raw
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:350
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
LArTrigStreamMatching.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
Digi_MonValues::digi_diff_adc0_ped
float digi_diff_adc0_ped
Definition: LArDigitalTriggMonAlg.cxx:118
LArDigitalTriggMonAlg::MAXLYRNS
@ MAXLYRNS
Definition: LArDigitalTriggMonAlg.h:96
CaloSuperCellDetDescrManager
Definition: CaloDetDescrManager.h:490
Digi_MonValues::digi_passDigiNom
bool digi_passDigiNom
Definition: LArDigitalTriggMonAlg.cxx:121
AthMonitorAlgorithm::lbLuminosityPerBCID
virtual float lbLuminosityPerBCID(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate the instantaneous luminosity per bunch crossing.
Definition: AthMonitorAlgorithm.cxx:262
TRT::Hit::side
@ side
Definition: HitInfo.h:83
PixelByteStreamErrors::BCID
@ BCID
Definition: PixelByteStreamErrors.h:13
SC_MonValues::sc_passSCNom1
bool sc_passSCNom1
Definition: LArDigitalTriggMonAlg.cxx:141
SC_MonValues::sc_saturNotMasked
bool sc_saturNotMasked
Definition: LArDigitalTriggMonAlg.cxx:144
Digi_MonValues::digi_eta
float digi_eta
Definition: LArDigitalTriggMonAlg.cxx:106
LArDigitalTriggMonAlg::m_actualMuKey
SG::ReadDecorHandleKey< xAOD::EventInfo > m_actualMuKey
Definition: LArDigitalTriggMonAlg.h:88
SC_MonValues::sc_notMaskedEoflNe0
bool sc_notMaskedEoflNe0
Definition: LArDigitalTriggMonAlg.cxx:146
LArDigitalTriggMonAlg::m_NLatomeBins
Gaudi::Property< unsigned > m_NLatomeBins
Definition: LArDigitalTriggMonAlg.h:55
LArDigitalTriggMonAlg::m_keyPedestalSC
SG::ReadCondHandleKey< ILArPedestal > m_keyPedestalSC
Handle to pedestal.
Definition: LArDigitalTriggMonAlg.h:80
LArDigitalTriggMonAlg::m_LatomeDetBinMappingQ
const std::map< unsigned, unsigned > m_LatomeDetBinMappingQ
Definition: LArDigitalTriggMonAlg.h:132
LArOnline_SuperCellID::isHECchannel
bool isHECchannel(const HWIdentifier id) const override final
Definition: LArOnline_SuperCellID.cxx:363
Digi_MonValues::digi_sampos
int digi_sampos
Definition: LArDigitalTriggMonAlg.cxx:110
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LArDigit.h
LArDigitalTriggMonAlg::~LArDigitalTriggMonAlg
virtual ~LArDigitalTriggMonAlg()
Default destructor.
Definition: LArDigitalTriggMonAlg.cxx:57
LArDigit
Liquid Argon digit base class.
Definition: LArDigit.h:25
lumiFormat.i
int i
Definition: lumiFormat.py:92
LArDigitalTriggMonAlg::m_bcMask
LArBadChannelMask m_bcMask
Handle to bad-channel mask.
Definition: LArDigitalTriggMonAlg.h:75
LArDigitalTriggMonAlg::m_SCID_helper
const CaloCell_SuperCell_ID * m_SCID_helper
Definition: LArDigitalTriggMonAlg.h:150
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
LArDigitalTriggMonAlg.h
LArOnline_SuperCellID::isEMECchannel
bool isEMECchannel(const HWIdentifier id) const override final
Definition: LArOnline_SuperCellID.cxx:406
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
LArDigitalTriggMonAlg::getXbinFromSourceID
unsigned getXbinFromSourceID(const unsigned sourceID) const
Definition: LArDigitalTriggMonAlg.cxx:706
LArRawSC::chan
short chan() const
Definition: LArRawSC.h:92
LArSCDigit.h
LArOnlineID_Base::pos_neg
int pos_neg(const HWIdentifier id) const
Return the side of a hardware cell identifier pos_neg = [0,1] positive-side or negative-side Barrel...
Definition: LArOnlineID_Base.cxx:1954
CaloCell_SuperCell_ID.h
Helper class for offline supercell identifiers.
CaloCell_Base_ID::eta
int eta(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SC_MonValues::sc_et_onl
float sc_et_onl
Definition: LArDigitalTriggMonAlg.cxx:135
LArDigitalTriggMonAlg::m_LATOMEHeaderContainerKey
SG::ReadHandleKey< LArLATOMEHeaderContainer > m_LATOMEHeaderContainerKey
Definition: LArDigitalTriggMonAlg.h:72
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
LArSCDigit::Channel
short Channel() const
Definition: LArSCDigit.h:42
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
Digi_MonValues::digi_diff_adc_ped_norm
float digi_diff_adc_ped_norm
Definition: LArDigitalTriggMonAlg.cxx:116
LArDigitalTriggMonAlg::m_streams
Gaudi::Property< std::vector< std::string > > m_streams
Give the name of the streams you want to monitor:
Definition: LArDigitalTriggMonAlg.h:60
LArSCDigit
Base class for LArDigits taken by LATOME.
Definition: LArSCDigit.h:19
SC_MonValues::sc_notMaskedEoflGt1
bool sc_notMaskedEoflGt1
Definition: LArDigitalTriggMonAlg.cxx:147
Digi_MonValues::digi_badNotMasked
bool digi_badNotMasked
Definition: LArDigitalTriggMonAlg.cxx:122
Digi_MonValues::digi_partition
int digi_partition
Definition: LArDigitalTriggMonAlg.cxx:115
LArDigitalTriggMonAlg::m_toolmapLayerNames_digi
std::map< std::string, int > m_toolmapLayerNames_digi
Definition: LArDigitalTriggMonAlg.h:145
AthMonitorAlgorithm::m_tools
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
Definition: AthMonitorAlgorithm.h:338
LArDigitalTriggMonAlg::m_caloSuperCellMgrKey
SG::ReadCondHandleKey< CaloSuperCellDetDescrManager > m_caloSuperCellMgrKey
Handle to Super Cell DD Manager.
Definition: LArDigitalTriggMonAlg.h:83
SC_MonValues::sc_phi
float sc_phi
Definition: LArDigitalTriggMonAlg.cxx:129
Digi_MonValues::digi_diff_adc_ped
float digi_diff_adc_ped
Definition: LArDigitalTriggMonAlg.cxx:117
Digi_MonValues::digi_maxpos
int digi_maxpos
Definition: LArDigitalTriggMonAlg.cxx:114
Digi_MonValues::digi_ieta
int digi_ieta
Definition: LArDigitalTriggMonAlg.cxx:108
HWIdentifier.h
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:453
SC_MonValues::sc_time
float sc_time
Definition: LArDigitalTriggMonAlg.cxx:137
SC_MonValues::sc_lb
unsigned int sc_lb
Definition: LArDigitalTriggMonAlg.cxx:139
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
LArRawSC::passTauSelection
const std::vector< bool > & passTauSelection() const
Definition: LArRawSC.h:113
CaloCell_Base_ID::phi
int phi(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
Digi_MonValues::digi_lb
unsigned int digi_lb
Definition: LArDigitalTriggMonAlg.cxx:120
LArOnlineID_Base::isEMBchannel
bool isEMBchannel(const HWIdentifier id) const
Definition: LArOnlineID_Base.cxx:1652
SC_MonValues
Definition: LArDigitalTriggMonAlg.cxx:127
LArRawSC::bcids
const std::vector< unsigned short > & bcids() const
Definition: LArRawSC.h:104
Digi_MonValues::digi_latomesourceidbin
int digi_latomesourceidbin
Definition: LArDigitalTriggMonAlg.cxx:112
SC_MonValues::sc_ieta
int sc_ieta
Definition: LArDigitalTriggMonAlg.cxx:130
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
python.PyAthena.v
v
Definition: PyAthena.py:157
LArLATOMEHeader
Holds information from the LATOME Header.
Definition: LArLATOMEHeader.h:19
SC_MonValues::sc_eta
float sc_eta
Definition: LArDigitalTriggMonAlg.cxx:128
CaloDetDescrElement::getSampling
CaloCell_ID::CaloSample getSampling() const
cell sampling
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:395
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
SC_MonValues::sc_et_ofl
float sc_et_ofl
Definition: LArDigitalTriggMonAlg.cxx:133
AthCommonMsg< Gaudi::Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
Digi_MonValues
Definition: LArDigitalTriggMonAlg.cxx:105
SC_MonValues::sc_passSCNom10
bool sc_passSCNom10
Definition: LArDigitalTriggMonAlg.cxx:142
LArDigitalTriggMonAlg::m_rawSCEtRecoContainerKey
SG::ReadHandleKey< LArRawSCContainer > m_rawSCEtRecoContainerKey
Definition: LArDigitalTriggMonAlg.h:71
SC_MonValues::sc_OFCbOFNotMasked
bool sc_OFCbOFNotMasked
Definition: LArDigitalTriggMonAlg.cxx:145
Digi_MonValues::digi_adc
int digi_adc
Definition: LArDigitalTriggMonAlg.cxx:111
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
LArRawSC::ofcbOverflow
bool ofcbOverflow() const
Definition: LArRawSC.h:120
LArMon::trigStreamMatching
std::vector< unsigned > trigStreamMatching(const std::vector< std::string > &streamsFromJobO, const std::vector< xAOD::EventInfo::StreamTag > &streamInEvent)
Definition: LArTrigStreamMatching.cxx:7
LArOnlineID_Base::channel_name
std::string channel_name(const HWIdentifier id) const
Return a string corresponding to a feedthrough name given an identifier.
Definition: LArOnlineID_Base.cxx:218
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:53
ILArPedestal::pedestalRMS
virtual float pedestalRMS(const HWIdentifier &id, int gain) const =0
access to RMS of Pedestal index by Identifier, and gain setting
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
LArDigitalTriggMonAlg::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition: LArDigitalTriggMonAlg.h:66
SC_MonValues::sc_passSCNom10tauGt3
bool sc_passSCNom10tauGt3
Definition: LArDigitalTriggMonAlg.cxx:143
LArDigitalTriggMonAlg::m_digitContainerKey
SG::ReadHandleKey< LArDigitContainer > m_digitContainerKey
Handle to EventData (input)
Definition: LArDigitalTriggMonAlg.h:69
readCCLHist.float
float
Definition: readCCLHist.py:83
LArDigitalTriggMonAlg::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: LArDigitalTriggMonAlg.cxx:151
LArDigitalTriggMonAlg::initialize
virtual StatusCode initialize() override
initialize
Definition: LArDigitalTriggMonAlg.cxx:62
SC_MonValues::sc_passSCNom
bool sc_passSCNom
Definition: LArDigitalTriggMonAlg.cxx:140
LArDigitalTriggMonAlg::m_scMonGroupName
Gaudi::Property< std::string > m_scMonGroupName
Definition: LArDigitalTriggMonAlg.h:63
Digi_MonValues::digi_pedestal
float digi_pedestal
Definition: LArDigitalTriggMonAlg.cxx:113
LArOnlineID.h
CaloDetDescrElement::phi_raw
float phi_raw() const
cell phi_raw
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:352
LArOnOffIdMapping
Definition: LArOnOffIdMapping.h:20
LArRawSC::energies
const std::vector< int > & energies() const
Definition: LArRawSC.h:101
LArDigitalTriggMonAlg::m_rawSCContainerKey
SG::ReadHandleKey< LArRawSCContainer > m_rawSCContainerKey
Definition: LArDigitalTriggMonAlg.h:70