ATLAS Offline Software
L1CaloCTPMonitorAlgorithm.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 #include <map>
5 #include <utility>
6 #include <set>
7 #include <tuple>
8 #include <algorithm>
9 #include <vector>
10 #include <iomanip>
11 #include <sstream>
12 
14 
15 L1CaloCTPMonitorAlgorithm::L1CaloCTPMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator )
16  : AthMonitorAlgorithm(name,pSvcLocator),
17  m_errorTool("LVL1::TrigT1CaloMonErrorTool/TrigT1CaloMonErrorTool")
18 {
19 }
20 
22 
23  ATH_MSG_DEBUG("L1CaloCTPMonitorAlgorith::initialize");
24  ATH_MSG_DEBUG("Package Name "<< m_packageName);
25 
26  // we initialise all the containers that we need
28  ATH_CHECK(m_cmxJetHitsLocation.initialize());
29  ATH_CHECK(m_cmxEtSumsLocation.initialize());
30  ATH_CHECK(m_cmxCpHitsLocation.initialize());
31 
33  renounce(m_L1MenuKey); // Detector Store data - hide this Data Dependency from the MT Scheduler
34 
35 
36  ATH_CHECK(m_errorTool.retrieve());
37 
39 }
40 
41 StatusCode L1CaloCTPMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const {
42 
43  ATH_MSG_DEBUG("L1CaloCTPMonitorAlgorithm::fillHistograms");
44  ATH_MSG_DEBUG("m_ctpRdoKey=" << m_ctpRdoKey);
45  ATH_MSG_DEBUG("m_cmxJetHitsLocation=" << m_cmxJetHitsLocation);
46  ATH_MSG_DEBUG("m_cmxEtSumsLocation=" << m_cmxEtSumsLocation);
47  ATH_MSG_DEBUG("m_cmxCpHitsLocation=" << m_cmxCpHitsLocation);
48 
49  // monitored variables
50  std::vector<int> errors;
51  std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> variables;
52 
53  // 1D
54  auto run = Monitored::Scalar<int>("run",GetEventInfo(ctx)->runNumber());
55 
56  // read all objects needed
57  ATH_MSG_DEBUG("Begin to fetch store gate objects ..");
58 
59  //--------------------------------------------------------------------------
60  //---------------- get information sent from CP CMXs to CTP ----------------
61  //--------------------------------------------------------------------------
62 
63  // Retrieve CMX CP hits from StoreGate
65  ATH_CHECK(cmxCpHitsTES.isValid());
66 
67  uint32_t EMHits0 = 0;
68  uint32_t EMHits1 = 0;
69  uint32_t TauHits0 = 0;
70  uint32_t TauHits1 = 0;
71 
72  // CMX information for transmission check: System CMX -> CTP
73  if (cmxCpHitsTES.isValid()) {
74  xAOD::CMXCPHitsContainer::const_iterator cmxIterator = cmxCpHitsTES->begin();
75  xAOD::CMXCPHitsContainer::const_iterator cmxIteratorEnd = cmxCpHitsTES->end();
76 
77  for (; cmxIterator != cmxIteratorEnd; ++cmxIterator) {
78 
79  const uint8_t source = (*cmxIterator)->sourceComponent();
80  const uint8_t crate = (*cmxIterator)->crate();
81  const uint8_t cmx = (*cmxIterator)->cmx();
82 
83  if (source == xAOD::CMXCPHits::TOTAL && crate == 3) {
84  if (cmx == 1) {
85  EMHits0 = (*cmxIterator)->hits0();
86  EMHits1 = (*cmxIterator)->hits1();
87  }
88  else {
89  TauHits0 = (*cmxIterator)->hits0();
90  TauHits1 = (*cmxIterator)->hits1();
91  }
92  }
93  }
94  }
95 
96 
97  //--------------------------------------------------------------------------
98  //----------------- get information sent from JEP CMXs to CTP --------------
99  //--------------------------------------------------------------------------
100 
101  // Retrieve CMX Jet Hits from Storegate
103  ATH_CHECK(cmxJetHitsTES.isValid());
104 
105  if(!cmxJetHitsTES.isValid()){
106  ATH_MSG_ERROR("No Jet Hits found in TES "<< m_cmxJetHitsLocation);
107  return StatusCode::FAILURE;
108  }
109 
110  int Jet3BitHits = 0; // 3-bit multiplicities, thresholds 0-9, cable JET1
111  int Jet2BitHits = 0; // 2-bit multiplicities, thresholds 10-24, cable JET2
112 
113  int Jet3BitHits0 = 0; // 3-bit multiplicities, thresholds 0-4, cable JET1
114  int Jet3BitHits1 = 0; // 3-bit multiplicities, thresholds 5-9, cable JET1
115  int Jet2BitHits0 = 0; // 2-bit multiplicities, thresholds 10-17, cable JET2
116  int Jet2BitHits1 = 0; // 2-bit multiplicities, thresholds 18-24, cable JET2
117 
118  xAOD::CMXJetHitsContainer::const_iterator cmxJetIterator = cmxJetHitsTES->begin();
119  xAOD::CMXJetHitsContainer::const_iterator cmxJetIteratorEnd = cmxJetHitsTES->end();
120 
121  // Transmission check: system CMX -> CTP
122  for (; cmxJetIterator != cmxJetIteratorEnd; ++cmxJetIterator) {
123  const uint32_t source = (*cmxJetIterator)->sourceComponent();
124  const uint32_t crate = (*cmxJetIterator)->crate();
125 
126  if (source == xAOD::CMXJetHits::TOTAL_MAIN && crate == 1) {
127  Jet3BitHits0 = (*cmxJetIterator)->hits0();
128  Jet3BitHits1 = (*cmxJetIterator)->hits1();
129  Jet3BitHits = Jet3BitHits0 + (Jet3BitHits1<<15);
130  }
131  if (source == xAOD::CMXJetHits::TOTAL_FORWARD && crate == 1) {
132  Jet2BitHits0 = (*cmxJetIterator)->hits0();
133  Jet2BitHits1 = (*cmxJetIterator)->hits1();
134  Jet2BitHits = Jet2BitHits0 + (Jet2BitHits1<<16);
135  }
136  }
137 
138  // Retrieve CMX Et sums from Storegate
140  ATH_CHECK(cmxEtHitsTES.isValid());
141 
142  if(!cmxEtHitsTES.isValid()){
143  ATH_MSG_ERROR("No Et Hits found in TES "<< m_cmxEtSumsLocation);
144  return StatusCode::FAILURE;
145  }
146 
147  int TEHits = 0; // Cable EN1 (full eta)
148  int XEHits = 0;
149  int XSHits = 0;
150  int TERestHits = 0; // Cable EN2 (restricted eta)
151  int XERestHits = 0;
152 
153  xAOD::CMXEtSumsContainer::const_iterator cmxEtSumsIterator = cmxEtHitsTES->begin();
154  xAOD::CMXEtSumsContainer::const_iterator cmxEtSumsIteratorEnd = cmxEtHitsTES->end();
155 
156  for (; cmxEtSumsIterator != cmxEtSumsIteratorEnd; ++ cmxEtSumsIterator) {
157  const uint32_t source = (*cmxEtSumsIterator)->sourceComponent();
158  const uint32_t crate = (*cmxEtSumsIterator)->crate();
159 
160  // Sum Et hits
161  if (source == xAOD::CMXEtSums::SUM_ET_STANDARD && crate == 1) { // KW crate check might not be needed here...
162  TEHits = (*cmxEtSumsIterator)->et();
163  }
164 
165  // Missing Et hits
166  if (source == xAOD::CMXEtSums::MISSING_ET_STANDARD && crate == 1) {
167  XEHits = (*cmxEtSumsIterator)->et();
168  }
169 
170  // Missing Et significance hits
171  if (source == xAOD::CMXEtSums::MISSING_ET_SIG_STANDARD && crate == 1) {
172  XSHits = (*cmxEtSumsIterator)->et();
173  }
174 
175  // Sum Et hits (restricted eta)
176  if (source == xAOD::CMXEtSums::SUM_ET_RESTRICTED && crate == 1) {
177  TERestHits = (*cmxEtSumsIterator)->et();
178  }
179 
180  // Missing Et hits (restricted eta)
181  if (source == xAOD::CMXEtSums::MISSING_ET_RESTRICTED && crate == 1) {
182  XERestHits = (*cmxEtSumsIterator)->et();
183  }
184  }
185 
186 //--------------------------------------------------------------------------
187 //----------------------- get the TIPs (input for CTP) ---------------------
188 //--------------------------------------------------------------------------
189 
190  SG::ReadHandle<CTP_RDO> const_ctpRdo(m_ctpRdoKey,ctx);
191  ATH_CHECK(const_ctpRdo.isValid());
192 
193  if(!const_ctpRdo.isValid()){
194  ATH_MSG_ERROR("No CTP_RDO found in TES "<< m_ctpRdoKey);
195  return StatusCode::FAILURE;
196  }
197 
198 
199  // Make a writable copy and Set CTP version number to 4 when reading persistified data
200  std::vector<uint32_t> ctp_data=const_ctpRdo->getDataWords();
201  CTP_RDO ctpRdo(4,std::move(ctp_data));
202  ctpRdo.setL1AcceptBunchPosition(const_ctpRdo->getL1AcceptBunchPosition());
203  ctpRdo.setTurnCounter(const_ctpRdo->getTurnCounter());
204 
205  if (ctpRdo.getCTPVersionNumber()==0) {
206  ATH_MSG_DEBUG("CTP version number not set, skipping CTP test");
207  }
208 
210  ctp.setRDO(&ctpRdo);
211 
212  const uint16_t l1aPos = ctpRdo.getL1AcceptBunchPosition();
213  if (l1aPos >= ctp.getBunchCrossings().size()) {
214  ATH_MSG_DEBUG("CTP_RDO gave Invalid l1aPos");;
215  return StatusCode::SUCCESS;
216  }
217 
218  ATH_MSG_DEBUG("CTP l1aPos, size : " << l1aPos << ", " << ctp.getBunchCrossings().size());
219  const CTP_BC& bunch = ctp.getBunchCrossings().at(l1aPos);
220 
221 //std::cout<<"CTP Confg = "<<getL1Menu(ctx)->thresholds().size()<<std::endl;
222 
223  //--------------------------------------------------------------------------
224  //---------------------- compare L1Calo data with CTP ----------------------
225  //--------------------------------------------------------------------------
226 
227  const int max_JET_2bit_Threshold_Number = 15;
228  const int max_JET_3bit_Threshold_Number = 10;
229  const int max_XE_Threshold_Number = 16;
230  const int max_TE_Threshold_Number = 16;
231  const int max_XS_Threshold_Number = 8;
232 
234 
235 
236  //------------------------ EM Hits (3 bits / thresh) -----------------------
237  int offset = 0;
238  int threshBits = 3;
239  int totalBits = threshBits*def.max_EM_Threshold_Number()/2;
240  ATH_MSG_DEBUG("totalBits = " << totalBits);
241 
242  compare(bunch, EMHits0, totalBits, offset, EM1Type, ctx); // Cable EM1
243 
244  offset += totalBits;
245  compare(bunch, EMHits1, totalBits, offset, EM2Type, ctx); // Cable EM2
246 
247  //----------------------- Tau Hits (3 bits / thresh) ---------------------
248  offset += totalBits;
249  compare(bunch, TauHits0, totalBits, offset, Tau1Type, ctx); // Cable TAU1
250 
251  offset += totalBits;
252  compare(bunch, TauHits1, totalBits, offset, Tau2Type, ctx); // Cable TAU2
253 
254  //------------------------ Jet Hits (3 bits / thresh) ---------------------
255  offset += totalBits;
257  compare(bunch, Jet3BitHits, totalBits, offset, Jet3BitType, ctx); // Cable JET1
258 
259  //----------------------- Jet Hits (2 bits / thresh) -------------------
260  offset += totalBits;
261  threshBits--;
263  compare(bunch, Jet2BitHits, totalBits, offset, Jet2BitType, ctx); // Cable JET2
264 
265  //---------------------- TE Hits (1 bit / thresh) ------------------
266  offset += totalBits;
267  threshBits--;
268  totalBits = threshBits*max_TE_Threshold_Number/2; // Cable EN1
269  compare(bunch, TEHits, totalBits, offset, TEFullEtaType, ctx);
270 
271  //------------------------ XE Hits (1 bit / thresh) --------------------
272  offset += totalBits;
273  totalBits = threshBits*max_XE_Threshold_Number/2;
274  compare(bunch, XEHits, totalBits, offset, XEFullEtaType, ctx);
275 
276  //---------------------- XS Hits (1 bit / thresh) ------------------
277  offset += totalBits;
278  totalBits = threshBits*max_XS_Threshold_Number;
279  compare(bunch, XSHits, totalBits, offset, XSType, ctx);
280 
281  //------------------------ Restricted Eta TE Hits (1 bit / thresh) --------------------
282  offset += totalBits;
283  totalBits = threshBits*max_TE_Threshold_Number/2; // Cable EN2
284  compare(bunch, TERestHits, totalBits, offset, TERestrictedEtaType, ctx);
285 
286  //---------------------- Restricted Eta XE Hits (1 bit / thresh) ------------------
287  offset += totalBits;
288  totalBits = threshBits*max_XE_Threshold_Number/2;
289  compare(bunch, XERestHits, totalBits, offset, XERestrictedEtaType, ctx);
290 
291  variables.push_back(run);
293  variables.clear();
294 
295  return StatusCode::SUCCESS;
296 }
297 
298 // *********************************************************************
299 // Private Methods
300 // *********************************************************************
301 
303  int offset, L1CaloCTPHitTypes type, const EventContext& ctx ) const
304 {
305 
306 
307  const int max_JET_2bit_Threshold_Number = 15;
308  const int max_JET_3bit_Threshold_Number = 10;
309  const int max_TAU_3bit_Threshold_Number = 16;
310  const int max_XE_Threshold_Number = 16;
311  const int max_TE_Threshold_Number = 16;
312  const int max_XS_Threshold_Number = 8;
313 
315 
316  std::map<std::string, int> threshMap;
317 
318  const std::vector<std::shared_ptr<TrigConf::L1Threshold>>& thresholds = getL1Menu(ctx)->thresholds();
319  ATH_MSG_DEBUG("Size of thresholds vector: " << thresholds.size());
320 
321  for (const auto& it : thresholds) {
322  int offset = 0;
323  int nbits = 3;
324  const int threshNumber = it->mapping();
325  int fixedThreshNumber = threshNumber;
326 
327  while (true) {
328  if ( it->type() == def.emType() ) {
329  if (threshNumber >= (int)def.max_EM_Threshold_Number()/2) { // Cable EM2; else cable EM1
330  offset += nbits*def.max_EM_Threshold_Number()/2;
331  fixedThreshNumber -= def.max_EM_Threshold_Number()/2;
332  }
333  break;
334  }
335  offset += nbits*def.max_EM_Threshold_Number();
336  if ( it->type() == def.tauType() ) {
337  if (threshNumber >= (int)max_TAU_3bit_Threshold_Number/2) { // Cable TAU2; else cable TAU1
338  offset += nbits*max_TAU_3bit_Threshold_Number/2;
339  fixedThreshNumber -= max_TAU_3bit_Threshold_Number/2;
340  }
341  break;
342  }
343  offset += nbits*max_TAU_3bit_Threshold_Number;
344  if ( it->type() == def.jetType() ) {
345  if (threshNumber >= (int)max_JET_3bit_Threshold_Number) { // Cable JET2 (2-bit thresholds); else JET1 (3-bit)
347  fixedThreshNumber -= max_JET_3bit_Threshold_Number;
348  nbits--;
349  }
350  break;
351  }
353  nbits--;
355  nbits--;
356  if ( it->type() == def.teType()) {
357  if (threshNumber >= (int)max_TE_Threshold_Number/2) { // Restricted eta TE threshold: jump to cable EN2
358  offset += nbits*max_TE_Threshold_Number/2 + nbits*max_XE_Threshold_Number/2 + nbits*max_XS_Threshold_Number; // 8+8+8 bits on cable EN1
359  fixedThreshNumber -= max_TE_Threshold_Number/2;
360  }
361  break; // Full eta & restricted eta thresholds separated on two cables
362  }
363  offset += nbits*max_TE_Threshold_Number/2;
364  if ( it->type() == def.xeType() ) {
365  if (threshNumber >= (int)max_XE_Threshold_Number/2) { // Restricted eta XE threshold: jump to cable EN2
366  offset += nbits*max_TE_Threshold_Number/2 + nbits*max_XE_Threshold_Number/2 + nbits*max_XS_Threshold_Number;
367  fixedThreshNumber -= max_XE_Threshold_Number/2;
368  }
369  break;
370  }
371  offset += nbits*max_XE_Threshold_Number/2;
372  if ( it->type() == def.xsType() ) break;
373  offset += nbits*max_XS_Threshold_Number;
374  nbits--;
375  break;
376  }
377  if (nbits == 0) continue;
378  if (threshNumber < 0) continue;
379  threshMap.insert(std::make_pair(it->name(),
380  offset + fixedThreshNumber*nbits));
381  ATH_MSG_DEBUG("threshMap: name, offset, threshNumber, nbits " << it->name() << " " << offset << " " << fixedThreshNumber << " " << nbits);
382  } // End loop over thresholds vector
383 
384  ATH_MSG_DEBUG("Size of threshMap = " << threshMap.size());
385 
386  std::vector<std::pair<std::string, int>> newMap;
387  newMap.clear();
388 
389  for (const auto& entry : threshMap) {
390 
391  //int numBits = getNumBits(entry.first, ctx);
392  TrigConf::TriggerLine trigger_line = getL1Menu(ctx)->connector(getL1Menu(ctx)->connectorNameFromThreshold(entry.first)).triggerLine(entry.first);
393  int numBits = trigger_line.nbits();
394 
395  for (int bit = 0; bit < numBits; ++bit) {
396  int newValue = entry.second + bit;
397 
398  // Add the entry to the new map
399  newMap.push_back(std::make_pair(entry.first, newValue));
400  }
401  }
402 
403  // Sort the newMap based on the second position values
404  std::sort(newMap.begin(), newMap.end(), [](const auto& lhs, const auto& rhs) {
405  return lhs.second < rhs.second;
406  });
407 
408  ATH_MSG_DEBUG("Size of new threshMap = " << newMap.size());
409 
410  // 1D
411  auto ctp_1d_L1CaloNeCTPSummary = Monitored::Scalar<float>("ctp_1d_L1CaloNeCTPSummary",0);
412  auto ctp_1d_L1CaloEqCTPSummary = Monitored::Scalar<float>("ctp_1d_L1CaloEqCTPSummary",0);
413  auto ctp_1d_TIPMatches = Monitored::Scalar<float>("ctp_1d_TIPMatches",0);
414  auto ctp_1d_HitNoTIPMismatch = Monitored::Scalar<float>("ctp_1d_HitNoTIPMismatch",0);
415  auto ctp_1d_TIPNoHitMismatch = Monitored::Scalar<float>("ctp_1d_TIPNoHitMismatch",0);
416 
417  ATH_MSG_DEBUG("offset: " << offset << " totalBits: " << totalBits);
418  //std::string name(ctp_1d_L1CaloNeCTPSummary->GetXaxis()->GetBinLabel(1+type));
419  //std::string subdet((type == EM1Type || type == EM2Type || type == Tau1Type || type == Tau2Type) ? " CP: " : " JEP: ");
420 
421  int mask = 0;
422  int tipHits = 0;
423 
424  for (int bit = 0; bit < totalBits; ++bit) {
425  const int TIPid = (newMap[offset + bit]).second;
426 
427  ATH_MSG_DEBUG("TIPid = " << TIPid);
428  if (TIPid < 0){ //|| TIPid > 511) {
429  continue;
430  }
431  const int HITbit= ((hits >> bit) & 0x1);
432  const int TIPbit = bunch.getTIP().test( TIPid );
433 
434  ATH_MSG_DEBUG(TIPbit << " ");
435  tipHits |= (TIPbit << bit);
436  mask |= (1 << bit);
437  if (HITbit && HITbit == TIPbit){
438  ctp_1d_TIPMatches = TIPid;
439  fill(m_packageName,ctp_1d_TIPMatches);
440  }
441  else if (HITbit != TIPbit) {
442  if (HITbit){
443  ctp_1d_HitNoTIPMismatch = TIPid;
444  fill(m_packageName,ctp_1d_HitNoTIPMismatch);
445  }
446  else{
447  ctp_1d_TIPNoHitMismatch = TIPid;
448  fill(m_packageName,ctp_1d_TIPNoHitMismatch);
449  }
450  }
451  }
452 
453 
454  if (tipHits != (hits&mask)) {
455  ctp_1d_L1CaloNeCTPSummary = type;
456  fill(m_packageName, ctp_1d_L1CaloNeCTPSummary);
457  }
458  else if (tipHits){
459  ctp_1d_L1CaloEqCTPSummary = type;
460  fill(m_packageName,ctp_1d_L1CaloEqCTPSummary);
461  }
462 }
463 
464 const TrigConf::L1Menu* L1CaloCTPMonitorAlgorithm::getL1Menu(const EventContext& ctx) const {
465  const TrigConf::L1Menu* menu = nullptr;
466  if (detStore()->contains<TrigConf::L1Menu>(m_L1MenuKey.key())) {
468  if( l1MenuHandle.isValid() ){
469  menu=l1MenuHandle.cptr();
470  }
471  } else {
472  menu = &(m_configSvc->l1Menu(ctx));
473  }
474 
475  return menu;
476 }
477 
478 /*void L1CaloCTPMon::setLabels(LWHist* hist, bool xAxis)
479 {
480  LWHist::LWHistAxis* axis = (xAxis) ? hist->GetXaxis() : hist->GetYaxis();
481  axis->SetBinLabel(1+EM1Type, "EM1");
482  axis->SetBinLabel(1+EM2Type, "EM2");
483  axis->SetBinLabel(1+Tau1Type, "Tau1");
484  axis->SetBinLabel(1+Tau2Type, "Tau2");
485  axis->SetBinLabel(1+Jet3BitType, "Jet1 (3-bit)");
486  axis->SetBinLabel(1+Jet2BitType, "Jet2 (2-bit)");
487  axis->SetBinLabel(1+TEFullEtaType, "TE (full eta)");
488  axis->SetBinLabel(1+XEFullEtaType, "XE (full eta)");
489  axis->SetBinLabel(1+XSType, "XS");
490  axis->SetBinLabel(1+TERestrictedEtaType, "TE (restr. eta)");
491  axis->SetBinLabel(1+XERestrictedEtaType, "XE (restr. eta)");
492 }*/
493 
494 
495 
496 
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
xAOD::CMXEtSums_v1::MISSING_ET_RESTRICTED
@ MISSING_ET_RESTRICTED
Definition: CMXEtSums_v1.h:34
checkCoolLatestUpdate.variables
variables
Definition: checkCoolLatestUpdate.py:13
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
TrigConf::L1Connector::triggerLine
const TrigConf::TriggerLine & triggerLine(const std::string &lineName) const
Definition: L1Connector.cxx:181
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
xAOD::CMXJetHits_v1::TOTAL_MAIN
@ TOTAL_MAIN
Definition: CMXJetHits_v1.h:35
L1CaloCTPMonitorAlgorithm::m_cmxCpHitsLocation
SG::ReadHandleKey< xAOD::CMXCPHitsContainer > m_cmxCpHitsLocation
Definition: L1CaloCTPMonitorAlgorithm.h:70
L1CaloCTPMonitorAlgorithm::m_L1MenuKey
SG::ReadHandleKey< TrigConf::L1Menu > m_L1MenuKey
Definition: L1CaloCTPMonitorAlgorithm.h:72
L1CaloCTPMonitorAlgorithm::m_cmxJetHitsLocation
SG::ReadHandleKey< xAOD::CMXJetHitsContainer > m_cmxJetHitsLocation
Definition: L1CaloCTPMonitorAlgorithm.h:68
python.TriggerConfig.menu
menu
Definition: TriggerConfig.py:836
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
Definition: AthCommonDataStore.h:380
L1CaloCTPMonitorAlgorithm::TERestrictedEtaType
@ TERestrictedEtaType
Definition: L1CaloCTPMonitorAlgorithm.h:56
L1CaloCTPMonitorAlgorithm::XSType
@ XSType
Definition: L1CaloCTPMonitorAlgorithm.h:55
skel.it
it
Definition: skel.GENtoEVGEN.py:423
L1CaloCTPMonitorAlgorithm::m_ctpRdoKey
SG::ReadHandleKey< CTP_RDO > m_ctpRdoKey
Definition: L1CaloCTPMonitorAlgorithm.h:67
TrigConf::L1Menu
L1 menu configuration.
Definition: L1Menu.h:28
CTP_RDO::getCTPVersionNumber
unsigned int getCTPVersionNumber() const
Definition: CTP_RDO.h:64
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
L1CaloCTPMonitorAlgorithm::compare
void compare(const CTP_BC &bunch, int hits, int totalBits, int offset, L1CaloCTPHitTypes type, const EventContext &ctx) const
Compare L1Calo hits with corresponding TIP hits.
Definition: L1CaloCTPMonitorAlgorithm.cxx:302
CTP_RDO::getDataWords
const std::vector< uint32_t > & getDataWords() const
Definition: CTP_RDO.h:39
L1CaloCTPMonitorAlgorithm::Jet2BitType
@ Jet2BitType
Definition: L1CaloCTPMonitorAlgorithm.h:54
L1CaloCTPMonitorAlgorithm::TEFullEtaType
@ TEFullEtaType
Definition: L1CaloCTPMonitorAlgorithm.h:55
python.utils.AtlRunQueryLookup.mask
string mask
Definition: AtlRunQueryLookup.py:460
CTP_Decoder
Definition: CTP_Decoder.h:142
L1CaloCTPMonitorAlgorithm::Tau2Type
@ Tau2Type
Definition: L1CaloCTPMonitorAlgorithm.h:53
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
L1CaloCTPMonitorAlgorithm::XERestrictedEtaType
@ XERestrictedEtaType
Definition: L1CaloCTPMonitorAlgorithm.h:56
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:36
CTP_BC::getTIP
const std::bitset< 512 > & getTIP() const
get bitset of TIP words
Definition: CTP_Decoder.h:81
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
L1CaloCTPMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: L1CaloCTPMonitorAlgorithm.cxx:21
MCTruthPartClassifier::totalBits
@ totalBits
Definition: TruthClassifiers.h:148
menu
make the sidebar many part of the config
Definition: hcg.cxx:551
TrigConf::L1DataDef
Definition: L1DataDef.h:27
TrigConf::TriggerLine
a TriggerLine entry describes the location of a threshold multiplicity on a cable (connector)
Definition: L1Connector.h:21
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
xAOD::CMXCPHits_v1::TOTAL
@ TOTAL
Definition: CMXCPHits_v1.h:29
xAOD::CMXEtSums_v1::MISSING_ET_STANDARD
@ MISSING_ET_STANDARD
Definition: CMXEtSums_v1.h:34
L1CaloCTPMonitorAlgorithm::m_configSvc
ServiceHandle< TrigConf::ITrigConfigSvc > m_configSvc
Definition: L1CaloCTPMonitorAlgorithm.h:47
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
LArG4ShowerLibProcessing.hits
hits
Definition: LArG4ShowerLibProcessing.py:136
CTP_BC
Definition: CTP_Decoder.h:17
L1CaloCTPMonitorAlgorithm::getL1Menu
const TrigConf::L1Menu * getL1Menu(const EventContext &ctx) const
Definition: L1CaloCTPMonitorAlgorithm.cxx:464
TrigConf::L1Menu::thresholds
std::vector< std::shared_ptr< TrigConf::L1Threshold > > thresholds() const
Access to list of all L1Thresholds.
Definition: L1Menu.cxx:267
CTP_RDO::setL1AcceptBunchPosition
void setL1AcceptBunchPosition(const uint8_t)
Definition: CTP_RDO.cxx:141
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
L1CaloCTPMonitorAlgorithm::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: L1CaloCTPMonitorAlgorithm.cxx:41
run
Definition: run.py:1
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
L1CaloCTPMonitorAlgorithm::m_cmxEtSumsLocation
SG::ReadHandleKey< xAOD::CMXEtSumsContainer > m_cmxEtSumsLocation
Definition: L1CaloCTPMonitorAlgorithm.h:69
xAOD::CMXEtSums_v1::MISSING_ET_SIG_STANDARD
@ MISSING_ET_SIG_STANDARD
Definition: CMXEtSums_v1.h:35
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
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
L1CaloCTPMonitorAlgorithm::EM2Type
@ EM2Type
Definition: L1CaloCTPMonitorAlgorithm.h:52
mergePhysValFiles.errors
list errors
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:43
L1CaloCTPMonitorAlgorithm::EM1Type
@ EM1Type
Definition: L1CaloCTPMonitorAlgorithm.h:52
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
LVL1::max_JET_3bit_Threshold_Number
const int max_JET_3bit_Threshold_Number
Definition: L1CaloCTPMon.cxx:53
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
xAOD::CMXEtSums_v1::SUM_ET_STANDARD
@ SUM_ET_STANDARD
Definition: CMXEtSums_v1.h:33
CTP_RDO::setTurnCounter
void setTurnCounter(const uint32_t)
Definition: CTP_RDO.cxx:148
L1CaloCTPMonitorAlgorithm::Tau1Type
@ Tau1Type
Definition: L1CaloCTPMonitorAlgorithm.h:53
L1CaloCTPMonitorAlgorithm::Jet3BitType
@ Jet3BitType
Definition: L1CaloCTPMonitorAlgorithm.h:54
TrigConf::L1Menu::connector
const TrigConf::L1Connector & connector(const std::string &connectorName) const
Access to connector by name.
Definition: L1Menu.cxx:335
L1CaloCTPMonitorAlgorithm.h
L1CaloCTPMonitorAlgorithm::m_packageName
StringProperty m_packageName
Bin labels for summary plots.
Definition: L1CaloCTPMonitorAlgorithm.h:64
TrigConf::TriggerLine::nbits
unsigned int nbits() const
Definition: L1Connector.h:30
CTP_RDO::getL1AcceptBunchPosition
uint32_t getL1AcceptBunchPosition() const
Definition: CTP_RDO.cxx:94
TriggerTest.ctp
ctp
Retrieve trigger EDM objects.
Definition: TriggerTest.py:14
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
DeMoAtlasDataLoss.runNumber
string runNumber
Definition: DeMoAtlasDataLoss.py:64
CTP_RDO
Definition: CTP_RDO.h:20
CTP_RDO::getTurnCounter
uint32_t getTurnCounter() const
Definition: CTP_RDO.cxx:106
L1CaloCTPMonitorAlgorithm::L1CaloCTPMonitorAlgorithm
L1CaloCTPMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Definition: L1CaloCTPMonitorAlgorithm.cxx:15
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
L1CaloCTPMonitorAlgorithm::L1CaloCTPHitTypes
L1CaloCTPHitTypes
Hit types for binning.
Definition: L1CaloCTPMonitorAlgorithm.h:52
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
xAOD::CMXJetHits_v1::TOTAL_FORWARD
@ TOTAL_FORWARD
Definition: CMXJetHits_v1.h:38
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
xAOD::CMXEtSums_v1::SUM_ET_RESTRICTED
@ SUM_ET_RESTRICTED
Definition: CMXEtSums_v1.h:33
L1CaloCTPMonitorAlgorithm::XEFullEtaType
@ XEFullEtaType
Definition: L1CaloCTPMonitorAlgorithm.h:55
LVL1::max_JET_2bit_Threshold_Number
const int max_JET_2bit_Threshold_Number
Definition: L1CaloCTPMon.cxx:52
L1CaloCTPMonitorAlgorithm::m_errorTool
ToolHandle< LVL1::ITrigT1CaloMonErrorTool > m_errorTool
Definition: L1CaloCTPMonitorAlgorithm.h:75
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.