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 
264  auto isEmptyCont=[](auto& c) {return (!c.isValid() || c->empty()); };
265  if (isEmptyCont(hLArDigitContainer) && isEmptyCont(hSCetContainer) && isEmptyCont(hSCetRecoContainer) && isEmptyCont(hLArLATOMEHeaderContainer)) {
266  //Make this only warning, come CI tests use the runs without DT info
267  ATH_MSG_WARNING("All of the requested containers are empty. Was there a problem retrieving information from the run logger?");
268  return StatusCode::SUCCESS;
269  }
270 
271  BCID = thisEvent->bcid();// - 88)%((36+7)*4 + 36 + 31);
272  lumi_block = thisEvent->lumiBlock();
273  time_stamp = thisEvent->timeStamp();
274 
275  float mu = lbInteractionsPerCrossing(ctx);
276  float event_mu = lbLuminosityPerBCID(ctx);
277 
278  ATH_MSG_DEBUG("mu (LB): "<<mu);
279  ATH_MSG_DEBUG("mu (BCID): "<<event_mu);
280  ATH_MSG_DEBUG("Event number: "<<thisEvent->eventNumber());
281  ATH_MSG_DEBUG("LB number: "<<thisEvent->lumiBlock());
282  ATH_MSG_DEBUG("BCID: "<<thisEvent->bcid());
284  const ILArPedestal* pedestals=*pedestalHdl;
285 
287  const CaloSuperCellDetDescrManager* ddman = *caloSuperCellMgrHandle;
288 
289  //retrieve BadChannel info:
290  const LArBadChannelCont* bcCont=nullptr;
292  bcCont=(*bcContHdl);
293 
294 
295  if ( (hLArDigitContainer.isValid()) ){
296  std::vector<std::vector<Digi_MonValues>> digiMonValueVec(m_layerNames.size());
297  for (auto& innerVec : digiMonValueVec) {
298  innerVec.reserve(1600); // (m_layerNcells[ilayer]) * nsamples;
299  }
300 
301  // Loop over digits
302  for (const LArDigit* pLArDigit : *hLArDigitContainer) {
303  HWIdentifier id = pLArDigit->hardwareID(); //gives online ID
304  //skip disconnected channels:
305  if(!cabling->isOnlineConnected(id)) continue;
306 
307  const unsigned trueNSamples = pLArDigit->nsamples();
308  if(trueNSamples==0) continue;
309  Digi_Nsamples = trueNSamples; // Fill the monitored variable
310  const int cgain = pLArDigit->gain();
311 
312  const Identifier offlineID=cabling->cnvToIdentifier(id);
313  const CaloDetDescrElement* caloDetElement = ddman->get_element(offlineID);
314  if(caloDetElement == 0 ){
315  ATH_MSG_ERROR( "Cannot retrieve caloDetElement" );
316  continue;
317  }
318  Digi_eta = caloDetElement->eta_raw();
319  Digi_phi = caloDetElement->phi_raw();
320 
321  Digi_ieta = m_SCID_helper->eta(offlineID);
322  Digi_iphi = m_SCID_helper->phi(offlineID);
323 
324  const int calosample=caloDetElement->getSampling();
325 
326  const unsigned iLyrNS=m_caloSamplingToLyrNS[calosample];
327  const int side = m_LArOnlineIDHelper->pos_neg(id);
328  const unsigned iLyr=iLyrNS*2+side;
329  auto& lvaluemap_digi = digiMonValueVec[iLyr];
330  auto& lvaluemap_digi_ALL = digiMonValueVec.back();
331 
332 
333  // Determine to which partition this channel belongs to
334  const int ThisPartition=whatPartition(id,side);
335  Digi_partition = ThisPartition; // Fill the monitored variable
336 
337  fill(m_scMonGroupName, Digi_Nsamples);
338 
339  // Check if this is a maskedOSUM SC
340  notMasked = true;
341  if ( m_bcMask.cellShouldBeMasked(bcCont,id)) {
342  notMasked = false;
343  }
344 
345  if(pedestals){
346  Pedestal = pedestals->pedestal(id,cgain);
347  PedestalRMS = pedestals->pedestalRMS(id,cgain);
348  }
349  else
350  ATH_MSG_INFO( "Pedestal values not received");
351 
352  const LArSCDigit* scdigi = dynamic_cast<const LArSCDigit*>(pLArDigit);
353  if(!scdigi){ ATH_MSG_DEBUG(" CAN'T CAST ");
354  }else{
355  Digi_SCChannel = scdigi->Channel();
356  Digi_latomeSourceId = scdigi->SourceId();
357  Digi_latomeSourceIdBIN=getXbinFromSourceID(Digi_latomeSourceId);
358  }
359  // Retrieve samples
360  const std::vector<short>* digito = &pLArDigit->samples();
361 
362  //retrieve the max sample digit ie digitot.back().
363  std::vector<short>::const_iterator maxSam = std::max_element(digito->begin(), digito->end());
364  int thismaxPos = std::distance(digito->begin(), maxSam);
365  Digi_maxpos=thismaxPos+1; //count samples [1,5]
366  float ADC_max = pLArDigit->samples().at(Digi_maxpos-1);
367 
368  float ADC_0 = pLArDigit->samples().at(0);
369  if (m_isADCBaseline) { //SC_ADC_BAS, have to divide by 8
370  ADC_0 = ADC_0/8;
371  }
372 
373  // Start Loop over samples
374  Digi_Diff_ADC0_Ped = ADC_0 - Pedestal;
375  for(unsigned i=0; i<trueNSamples;++i) {
376  badNotMasked = false;
377  notBadQual = false;
378  ADCped10RMS = false;
379  passDigiNom = false;
380  Digi_sampos=i+1;
381  Digi_ADC = pLArDigit->samples().at(i);
382  if (m_isADCBaseline) { //SC_ADC_BAS, have to divide by 8
383  Digi_ADC=Digi_ADC/8;
384  }
385 
386  Digi_Diff_ADC_Ped = Digi_ADC - Pedestal;
387  if ( ADC_max != Pedestal ){
388  Digi_Diff_ADC_Ped_Norm = (Digi_ADC - Pedestal) / std::abs(ADC_max - Pedestal);
389  }
390 
391  // Some selections
392  if(Digi_ADC!=-1){
393  notBadQual = true;
394  }else{
395  if ( notMasked ){
396  badNotMasked = true;
397  }
398  }
399  if(ADC_max - Pedestal > 10*PedestalRMS) {
400  ADCped10RMS = true;
401  }
402  if ( notMasked && notBadQual && ADCped10RMS ){
403  passDigiNom = true;
404  }
405 
406  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);
407  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);
408 
409  } // End loop over samples
410 
411  } // End of loop on LArDigit
412 
413 
414  // fill, for every layer/threshold
415  for (size_t ilayer = 0; ilayer < digiMonValueVec.size(); ++ilayer) {
416  const auto& tool = digiMonValueVec[ilayer];
417  auto digi_part_eta = Monitored::Collection("Digi_part_eta",tool,[](const auto& v){return v.digi_eta;});
418  auto digi_part_phi = Monitored::Collection("Digi_part_phi",tool,[](const auto& v){return v.digi_phi;});
419  auto digi_part_ieta = Monitored::Collection("Digi_part_ieta",tool,[](const auto& v){return v.digi_ieta;});
420  auto digi_part_iphi = Monitored::Collection("Digi_part_iphi",tool,[](const auto& v){return v.digi_iphi;});
421  auto digi_part_sampos = Monitored::Collection("Digi_part_sampos",tool,[](const auto& v){return v.digi_sampos;});
422  auto digi_part_adc = Monitored::Collection("Digi_part_adc",tool,[](const auto& v){return v.digi_adc;});
423  auto digi_part_latomesourceidbin = Monitored::Collection("Digi_part_latomesourceidbin",tool,[](const auto& v){return v.digi_latomesourceidbin;});
424  auto digi_part_pedestal = Monitored::Collection("Digi_part_pedestal",tool,[](const auto& v){return v.digi_pedestal;});
425  auto digi_part_maxpos = Monitored::Collection("Digi_part_maxpos",tool,[](const auto& v){return v.digi_maxpos;});
426  auto digi_part_partition = Monitored::Collection("Digi_part_partition",tool,[](const auto& v){return v.digi_partition;});
427  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;});
428  auto digi_part_diff_adc_ped = Monitored::Collection("Digi_part_diff_adc_ped",tool,[](const auto& v){return v.digi_diff_adc_ped;});
429  auto digi_part_diff_adc0_ped = Monitored::Collection("Digi_part_diff_adc0_ped",tool,[](const auto& v){return v.digi_diff_adc0_ped;});
430  auto digi_part_bcid = Monitored::Collection("Digi_part_BCID",tool,[](const auto& v){return v.digi_bcid;});
431  auto digi_part_lb = Monitored::Collection("Digi_part_LB",tool,[](const auto& v){return v.digi_lb;});
432  auto digi_part_passDigiNom = Monitored::Collection("Digi_part_passDigiNom",tool,[](const auto& v){return v.digi_passDigiNom;});
433  auto digi_part_badNotMasked = Monitored::Collection("Digi_part_badNotMasked",tool,[](const auto& v){return v.digi_badNotMasked;});
434 
436  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);
437  }
438 
439 
440  } // End if(LArDigitContainer is valid)
441 
442 
443  if ( hSCetContainer.isValid() && hSCetRecoContainer.isValid() ){
444  LArRawSCContainer::const_iterator itSC = hSCetContainer->begin();
445  LArRawSCContainer::const_iterator itSC_e= hSCetContainer->end();
446  LArRawSCContainer::const_iterator itSCReco = hSCetRecoContainer->begin();
447  const LArRawSC* rawSC = 0;
448  const LArRawSC* rawSCReco = 0;
449 
450  std::vector<std::vector<SC_MonValues>> scMonValueVec(m_layerNames.size());
451  for (auto& innerVec : scMonValueVec) {
452  innerVec.reserve(1600); // (m_layerNcells[ilayer]) * nsamples;
453  }
454 
455  // Loop over SCs
456  for ( ; itSC!=itSC_e;++itSC,++itSCReco) {
457  rawSC = *itSC;
458  if ( itSCReco < hSCetRecoContainer->end() ){
459  rawSCReco = *itSCReco;
460  }else{
461  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?");
462  rawSCReco = 0;
463  }
464  SC_SCChannel = rawSC->chan();
465  HWIdentifier id = rawSC->hardwareID(); // gives online ID
466  //skip disconnected channels:
467  if(!cabling->isOnlineConnected(id)) continue;
468 
469  const Identifier offlineID=cabling->cnvToIdentifier(id); //converts online to offline ID
470  // Get Physical Coordinates
471  const CaloDetDescrElement* caloDetElement = ddman->get_element(offlineID);
472  if (caloDetElement == 0) {
473  ATH_MSG_ERROR("Cannot retrieve (eta,phi) coordinates for raw channels");
474  ATH_MSG_ERROR(" ==============> " << std::hex << "; offlineID = " << offlineID<< "online ID =" << m_LArOnlineIDHelper->channel_name(id) << "; rawSC->SourceId() = " << rawSC->SourceId());
475  continue;
476  }
477  SC_eta = caloDetElement->eta_raw();
478  SC_phi = caloDetElement->phi_raw();
479 
480  SC_ieta = m_SCID_helper->eta(offlineID);
481  SC_iphi = m_SCID_helper->phi(offlineID);
482  int calosample=caloDetElement->getSampling();
483 
484  const unsigned iLyrNS=m_caloSamplingToLyrNS[calosample];
485  const unsigned side = m_LArOnlineIDHelper->pos_neg(id);
486  const unsigned iLyr=iLyrNS*2+side;
487 
488  auto& lvaluemap_sc = scMonValueVec[iLyr];
489  auto& lvaluemap_sc_ALL = scMonValueVec.back();
490 
491  SC_latomeSourceIdBIN=getXbinFromSourceID(rawSC->SourceId());
492 
493  // initialise cuts
494  notMasked = false;
495  passTauSel = false;
496  nonZeroET = false;
497  notSatur = false;
498  nonZeroEtau = false;
499  eTgt1GeV = false;
500  eTgt10GeV = false;
501  notOFCbOF = false;
502  tauGt3 = false;
503  onlofflEmismatch=false;
504  passSCNom = false;
505  passSCNom1 = false;
506  passSCNom10 = false;
507  passSCNom10tauGt3 = false;
508  saturNotMasked = false;
509  OFCbOFNotMasked = false;
510  notMaskedEoflNe0 = false;
511  notMaskedEoflGt1 = false;
512  nonZeroETofl = false;
513  eToflGt1GeV = false;
514  // Check if this is a maskedOSUM SC
515  if ( ! m_bcMask.cellShouldBeMasked(bcCont,id)) {
516  notMasked = true;
517  }
518  // popopopo
519  if ( rawSCReco != 0 && rawSCReco->passTauSelection().size()>0){ //only compare Et if tau selection is passed
520  if (rawSCReco->passTauSelection().at(0) == true) passTauSel = true;
521  }
522  unsigned int bcid_ind = 0;
523  if (rawSC->energies().size()>0){
524  for ( auto & SCe : rawSC->bcids() ){
525  if ( SCe == BCID ) break;
526  bcid_ind++;
527  }
528  if ( bcid_ind >= rawSC->bcids().size() ){
529  ATH_MSG_WARNING("BCID not found in SC bcids list!! "<<BCID<<" BCIDs size: "<<rawSC->bcids().size()<<", proposed index: "<<bcid_ind);
530  } else if ( rawSC->bcids().at(bcid_ind) != BCID ){
531  ATH_MSG_WARNING("BCID not found in SC bcids list!! "<<BCID<<" "<<rawSC->bcids().at(bcid_ind));
532  }
533 
534  if (rawSC->energies().size() > bcid_ind){
535  SC_energy_onl = rawSC->energies().at(bcid_ind);
536  }else{
537  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()<<")");
538  SC_energy_onl = 0;
539  }
540  }else{
541  ATH_MSG_WARNING("rawSC energies vector is empty!");
542  SC_energy_onl = 0;
543  }
544 
545  if ( rawSCReco != 0 ){
546  if ( rawSCReco->energies().size()>0 ){
547  SC_energy_ofl = rawSCReco->energies().at(0); // algorithm already selects the correct energy
548  }else{
549  ATH_MSG_WARNING("rawSCReco energies vector is empty!");
550  SC_energy_ofl = 0;
551  }
552  }
553  SC_ET_diff = SC_energy_onl - SC_energy_ofl;
554  SC_ET_onl = ( SC_energy_onl* 12.5 ) / 1000; // Converted to GeV
555  SC_ET_ofl = ( SC_energy_ofl* 12.5 ) / 1000; // Converted to GeV
556  SC_ET_onl_muscaled = event_mu > 0. ? SC_ET_onl / event_mu : SC_ET_onl;
557  int Etau = 0;
558  if ( rawSCReco != 0 ){
559  if ( rawSCReco->tauEnergies().size()>0 ){ Etau = rawSCReco->tauEnergies().at(0); }
560  }
561  SC_time = (SC_energy_ofl != 0) ? (float)Etau / (float)SC_energy_ofl : Etau;
562 
563  ATH_MSG_DEBUG("Energy onl - Energy ofl: "<<SC_energy_onl<<", "<<SC_energy_ofl<<std::endl);
564  if (SC_ET_onl != 0 ){
565  nonZeroET = true;
566  }
567  if (SC_ET_onl > 1){
568  eTgt1GeV = true;
569  }
570  if (SC_ET_onl > 10){
571  eTgt10GeV = true;
572  }
573  if (SC_ET_ofl != 0 ) {
574  nonZeroETofl = true;
575  }
576  if (SC_ET_ofl > 1){
577  eToflGt1GeV = true;
578  }
579  if ( rawSC->satur().size()>bcid_ind ){
580  if ( rawSC->satur().at(bcid_ind) ){
581  if ( notMasked ){
582  saturNotMasked = true;
583  }
584  }else{
585  notSatur = true;
586  }
587  }
588  if (Etau != 0){
589  nonZeroEtau = true;
590  }
591  if ( rawSCReco != 0 && rawSCReco->ofcbOverflow() == false ){
592  notOFCbOF = true;
593  }else{
594  if ( notMasked ){
595  OFCbOFNotMasked = true;
596  }
597  }
598  if ( std::abs(SC_time) > 3 ){
599  tauGt3 = true;
600  }
601 
602  if ( notMasked && notSatur && notOFCbOF ){
603  if(nonZeroETofl){
604  notMaskedEoflNe0 = true;
605  }
606  if(eToflGt1GeV) {
607  notMaskedEoflGt1 = true;
608  }
609 
610  if ( passTauSel ){
611  if ( nonZeroET ){
612  passSCNom = true;
613  }
614  if ( eTgt1GeV ){
615  passSCNom1 = true;
616  }
617  if (eTgt10GeV ){
618  passSCNom10 = true;
619  if ( tauGt3 ){
620  passSCNom10tauGt3 = true;
621  }
622  }
623  if (SC_energy_onl != SC_energy_ofl){
624  onlofflEmismatch = true;
625  }
626  }
627  } // end nominal selections
628 
629  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);
630  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);
631 
632 
633  } //end loop over SCs
634 
635  // fill, for every layer/threshold
636  for (size_t ilayer = 0; ilayer < scMonValueVec.size(); ++ilayer) {
637  const auto& tool = scMonValueVec[ilayer];
638  auto sc_part_eta = Monitored::Collection("SC_part_eta",tool,[](const auto& v){return v.sc_eta;});
639  auto sc_part_phi = Monitored::Collection("SC_part_phi",tool,[](const auto& v){return v.sc_phi;});
640  auto sc_part_ieta = Monitored::Collection("SC_part_ieta",tool,[](const auto& v){return v.sc_ieta;});
641  auto sc_part_iphi = Monitored::Collection("SC_part_iphi",tool,[](const auto& v){return v.sc_iphi;});
642  auto sc_part_latomesourceidbin = Monitored::Collection("SC_part_latomesourceidbin",tool,[](const auto& v){return v.sc_latomesourceidbin;});
643  auto sc_part_et_ofl = Monitored::Collection("SC_part_et_ofl",tool,[](const auto& v){return v.sc_et_ofl;});
644  auto sc_part_et_diff = Monitored::Collection("SC_part_et_diff",tool,[](const auto& v){return v.sc_et_diff;});
645  auto sc_part_et_onl = Monitored::Collection("SC_part_et_onl",tool,[](const auto& v){return v.sc_et_onl;});
646  auto sc_part_et_onl_muscaled = Monitored::Collection("SC_part_et_onl_muscaled",tool,[](const auto& v){return v.sc_et_onl_muscaled;});
647  auto sc_part_time = Monitored::Collection("SC_part_time",tool,[](const auto& v){return v.sc_time;});
648  auto sc_part_bcid = Monitored::Collection("SC_part_BCID",tool,[](const auto& v){return v.sc_bcid;});
649  auto sc_part_lb = Monitored::Collection("SC_part_LB",tool,[](const auto& v){return v.sc_lb;});
650  auto sc_part_passSCNom = Monitored::Collection("SC_part_passSCNom",tool,[](const auto& v){return v.sc_passSCNom;});
651  auto sc_part_passSCNom1 = Monitored::Collection("SC_part_passSCNom1",tool,[](const auto& v){return v.sc_passSCNom1;});
652  auto sc_part_passSCNom10 = Monitored::Collection("SC_part_passSCNom10",tool,[](const auto& v){return v.sc_passSCNom10;});
653  auto sc_part_passSCNom10tauGt3 = Monitored::Collection("SC_part_passSCNom10tauGt3",tool,[](const auto& v){return v.sc_passSCNom10tauGt3;});
654  auto sc_part_saturNotMasked = Monitored::Collection("SC_part_saturNotMasked",tool,[](const auto& v){return v.sc_saturNotMasked;});
655  auto sc_part_OFCbOFNotMasked = Monitored::Collection("SC_part_OFCbOFNotMasked",tool,[](const auto& v){return v.sc_OFCbOFNotMasked;});
656  auto sc_part_notMaskedEoflNe0 = Monitored::Collection("SC_part_notMaskedEoflNe0",tool,[](const auto& v){return v.sc_notMaskedEoflNe0;});
657  auto sc_part_notMaskedEoflGt1 = Monitored::Collection("SC_part_notMaskedEoflGt1",tool,[](const auto& v){return v.sc_notMaskedEoflGt1;});
658 
659 
661  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);
662  }
663 
664 
665  } // End if(LArSCContainer is valid)
666 
667 
668 
669  //LATOME event size
670  if ( (hLArLATOMEHeaderContainer.isValid()) ){
671  auto event_size = Monitored::Scalar<float>("event_size",0);
672  for (const LArLATOMEHeader* pLArLATOMEHeader : *hLArLATOMEHeaderContainer) {
673  event_size += pLArLATOMEHeader->ROBFragSize() + 48; //48 is the offset between rod_ndata and ROB fragment size
674  }
675  event_size /= (1024*1024/4);
676  fill(m_scMonGroupName,lumi_block,event_size);
677  }
678 
679 
680  //end LATOME event size
681 
682 
683  return StatusCode::SUCCESS;
684 }
685 
686 
687 /*---------------------------------------------------------*/
691 {
693  if(side==0) return 0;
694  else return 1;
695  } else if (m_LArOnlineIDHelper->isEMECchannel(id)) {
696  if(side==0) return 2;
697  else return 3;
698  } else if (m_LArOnlineIDHelper->isHECchannel(id)) {
699  if(side==0) return 4;
700  else return 5;
701  } else {
702  if(side==0) return 6;
703  else return 7;
704  }
705 }
706 
707 
708 
709 unsigned LArDigitalTriggMonAlg::getXbinFromSourceID(const unsigned sourceID) const
710 {
711  // int NLatomeBins = 117;
712  int detStartingBin=m_NLatomeBins;
713  const unsigned detID = sourceID >> 16;
714  const unsigned value = sourceID & 0xF;
715  auto mapit=m_LatomeDetBinMappingQ.find(detID);
716  if (mapit!=m_LatomeDetBinMappingQ.end()) {
717  detStartingBin=mapit->second;
718  }
719 
720  unsigned binx = detStartingBin+value;
721  if (binx>m_NLatomeBins){
722  ATH_MSG_WARNING("something wrong with binning, filling overflowbin");
723  binx=m_NLatomeBins;
724  }
725 
726  return binx;
727 }
728 
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:690
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:100
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:150
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:124
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:147
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:133
LArOnline_SuperCellID::isHECchannel
bool isHECchannel(const HWIdentifier id) const override final
Definition: LArOnline_SuperCellID.cxx:362
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:85
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:151
LArDigitalTriggMonAlg.h
LArOnline_SuperCellID::isEMECchannel
bool isEMECchannel(const HWIdentifier id) const override final
Definition: LArOnline_SuperCellID.cxx:405
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:709
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:1950
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:146
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:1648
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:154
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:219
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
python.compressB64.c
def c
Definition: compressB64.py:93
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
Identifier
Definition: IdentifierFieldParser.cxx:14