ATLAS Offline Software
L1TopoOnlineMonitor.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef L1TOPOONLINEMONITORING_L1TopoOnlineMonitor_h
6 #define L1TOPOONLINEMONITORING_L1TopoOnlineMonitor_h
7 
8 // Trigger includes
13 #include "TrigT1Result/CTP_RDO.h"
14 #include "TrigConfData/L1Menu.h"
15 
16 
17 // Athena includes
22 
23 #include "GaudiKernel/LockedHandle.h"
24 
25 // System includes
26 #include <bitset>
27 #include <optional>
28 
39 public:
40  L1TopoOnlineMonitor(const std::string& name, ISvcLocator* svcLoc);
41 
42  // ------------------------- AthReentrantAlgorithm methods -------------------
43  virtual StatusCode initialize() override;
44  virtual StatusCode start() override;
45  virtual StatusCode fillHistograms( const EventContext& ctx ) const override;
46 
47 private:
48  // ------------------------- Private types and constants ---------------------
50  static constexpr size_t s_nTopoCTPOutputs{128};
51 
53  struct DecisionBits {
54  std::optional<std::bitset<s_nTopoCTPOutputs>> triggerBits;
55  std::optional<std::bitset<s_nTopoCTPOutputs>> overflowBits;
56  std::optional<std::bitset<s_nTopoCTPOutputs>> triggerBitsSim;
57  std::optional<std::bitset<s_nTopoCTPOutputs>> overflowBitsSim;
58  std::optional<std::bitset<s_nTopoCTPOutputs>> ambiguityBitsSim;
59  std::optional<std::bitset<s_nTopoCTPOutputs>> triggerBitsCtp;
61  static std::bitset<s_nTopoCTPOutputs>& createBits(std::optional<std::bitset<s_nTopoCTPOutputs>>& opt) {
62  opt = std::bitset<s_nTopoCTPOutputs>{};
63  return opt.value();
64  }
65  };
66 
67  std::vector<std::string> m_TopoAlgTriggerNames;
68  std::vector<bool> m_TopoAlgTriggerNotVetoed;
69  std::vector<std::string> m_TopoMultTriggerNames;
70  std::vector<bool> m_TopoMultTriggerNotVetoed;
71 
72  std::unique_ptr<float[]> m_rateHdwNotSim;
73  std::unique_ptr<float[]> m_rateSimNotHdw;
74  std::unique_ptr<float[]> m_rateHdwAndSim;
75  std::unique_ptr<float[]> m_rateHdwSim;
76  std::unique_ptr<float[]> m_countHdwNotSim;
77  std::unique_ptr<float[]> m_countSimNotHdw;
78  std::unique_ptr<float[]> m_countHdwSim;
79  std::unique_ptr<float[]> m_countHdw;
80  std::unique_ptr<float[]> m_countSim;
81  std::unique_ptr<float[]> m_countAny;
82  std::unique_ptr<float[]> m_overflow_rateHdwNotSim;
83  std::unique_ptr<float[]> m_overflow_rateSimNotHdw;
84  std::unique_ptr<float[]> m_overflow_rateHdwAndSim;
85  std::unique_ptr<float[]> m_overflow_rateHdwSim;
86  std::unique_ptr<float[]> m_overflow_countHdwNotSim;
87  std::unique_ptr<float[]> m_overflow_countSimNotHdw;
88  std::unique_ptr<float[]> m_overflow_countHdwSim;
89  std::unique_ptr<float[]> m_overflow_countHdw;
90  std::unique_ptr<float[]> m_overflow_countSim;
91  std::unique_ptr<float[]> m_overflow_countAny;
92 
93  std::unique_ptr<float[]> m_currentHdwBit;
94  std::unique_ptr<float[]> m_currentSimBit;
95 
96  std::vector<unsigned> m_ctpIds;
97 
98  std::vector<std::vector<std::pair<unsigned,unsigned>>> m_startbit;
99 
100  //RateVars m_rateVars{};
101  // ------------------------- Properties and handles --------------------------
102  ToolHandle<GenericMonitoringTool> m_monTool {
103  this, "MonTool", "" ,
104  "Monitoring tool to create online histograms"};
106  this, "ErrorFlagsKey", "L1TopoErrorFlags",
107  "Key of the output TrigCompositeContainer with L1Topo error flags"};
108  Gaudi::Property<bool> m_doSimMon {
109  this, "doSimMon", true, "Enable L1Topo simulation decision monitoring"};
110  Gaudi::Property<bool> m_doHwMonCTP {
111  this, "doHwMonCTP", true, "Enable L1Topo HW readout from CTP"};
112  Gaudi::Property<bool> m_doHwMon {
113  this, "doHwMon", true, "Enable L1Topo HW readout from RAW"};
114  Gaudi::Property<bool> m_doHwErrorMon {
115  this, "doHwErrorMon", false, "Enable L1Topo HW Error monitoring"};
116  Gaudi::Property<bool> m_doComp {
117  this, "doComp", true, "Enable L1Topo HW/Sim comparison"};
118  Gaudi::Property<bool> m_doMultComp {
119  this, "doMultComp", false, "Enable L1Topo Multiplicity HW/Sim comparison"};
120  Gaudi::Property<bool> m_forceCTPasHdw {
121  this, "forceCTPasHdw", false, "Force to CTP monitoring as primary in Sim/Hdw comparison"};
122  Gaudi::Property<std::vector<std::string>> m_AlgorithmVetoList {
123  this, "AlgorithmVetoList", {}, "List of L1Topo algorithm items Vetoed for monitoring in L1CaloDQ package due to known Sim/Hdw mismatches"};
124  Gaudi::Property<std::vector<std::string>> m_MultiplicityVetoList {
125  this, "MultiplicityVetoList", {}, "List of multiplicity items Vetoed for monitoring in L1CaloDQ package due to known Sim/Hdw mismatches"};
126 
127  ServiceHandle<StoreGateSvc> m_detStore { this, "DetectorStore", "StoreGateSvc/DetectorStore", "Detector store to get the menu" };
128 
129 
131  this, "L1_TopoKey", "L1_TopoSimResults", "l1topo EDM"};
132 
134  this, "L1_TopoRawDataKey", "L1_Phase1L1TopoRAWData", "l1topo Raw Data"};
135 
136 
138  this, "CTPRDOLocation", LVL1CTP::DEFAULT_RDOOutputLocation,
139  "Key of the CTP RDO object"};
140 
141  // ------------------------- Private methods ---------------------------------
142 
144  StatusCode doSimMon(DecisionBits& decisionBits, std::vector<std::vector<unsigned>> &multWeights, const EventContext& ctx) const;
145 
147  StatusCode doHwMonCTP(DecisionBits& decisionBits, const EventContext& ctx) const;
148 
150  StatusCode doHwMon(DecisionBits& decisionBits, std::vector<std::vector<unsigned>> &multWeights, const EventContext& ctx) const;
151 
153  StatusCode doComp(DecisionBits& decisionBits, const EventContext& ctx) const;
154 
156  StatusCode doMultComp(std::vector<std::vector<unsigned>> &multWeightsSim, std::vector<std::vector<unsigned>> &multWeightsHdw, const EventContext& ctx) const;
157 
159  std::vector<unsigned> getCtpIds(const TrigConf::L1Menu& l1menu);
160 
161  std::vector<std::vector<std::pair<unsigned,unsigned>>> getStartBits(const TrigConf::L1Menu& l1menu);
162 
163  // Define and set all error flags to false (Now only TrivialFlag set to true)
164  void resetFlags(xAOD::TrigComposite& errorFlags) const;
165 
166 };
167 
168 #endif // L1TOPOONLINEMONITORING_L1TopoOnlineMonitor_h
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
L1TopoOnlineMonitor::m_l1topoKey
SG::ReadHandleKey< xAOD::L1TopoSimResultsContainer > m_l1topoKey
Definition: L1TopoOnlineMonitor.h:130
L1TopoOnlineMonitor::m_MultiplicityVetoList
Gaudi::Property< std::vector< std::string > > m_MultiplicityVetoList
Definition: L1TopoOnlineMonitor.h:124
L1TopoOnlineMonitor::doHwMonCTP
StatusCode doHwMonCTP(DecisionBits &decisionBits, const EventContext &ctx) const
Monitor the Hw bits from CTP.
Definition: L1TopoOnlineMonitor.cxx:383
L1TopoOnlineMonitor::m_overflow_rateHdwNotSim
std::unique_ptr< float[]> m_overflow_rateHdwNotSim
Definition: L1TopoOnlineMonitor.h:82
L1TopoOnlineMonitor::DecisionBits::overflowBits
std::optional< std::bitset< s_nTopoCTPOutputs > > overflowBits
Definition: L1TopoOnlineMonitor.h:55
L1TopoOnlineMonitor::m_countSimNotHdw
std::unique_ptr< float[]> m_countSimNotHdw
Definition: L1TopoOnlineMonitor.h:77
L1TopoOnlineMonitor::DecisionBits::createBits
static std::bitset< s_nTopoCTPOutputs > & createBits(std::optional< std::bitset< s_nTopoCTPOutputs >> &opt)
Helper method to create a new bitset and get a reference to it.
Definition: L1TopoOnlineMonitor.h:61
L1TopoOnlineMonitor::m_doHwMonCTP
Gaudi::Property< bool > m_doHwMonCTP
Definition: L1TopoOnlineMonitor.h:110
L1TopoOnlineMonitor::getStartBits
std::vector< std::vector< std::pair< unsigned, unsigned > > > getStartBits(const TrigConf::L1Menu &l1menu)
Definition: L1TopoOnlineMonitor.cxx:776
L1TopoOnlineMonitor::start
virtual StatusCode start() override
Definition: L1TopoOnlineMonitor.cxx:209
L1TopoOnlineMonitor::m_AlgorithmVetoList
Gaudi::Property< std::vector< std::string > > m_AlgorithmVetoList
Definition: L1TopoOnlineMonitor.h:122
make_coralServer_rep.opt
opt
Definition: make_coralServer_rep.py:19
L1TopoOnlineMonitor::resetFlags
void resetFlags(xAOD::TrigComposite &errorFlags) const
Definition: L1TopoOnlineMonitor.cxx:832
L1TopoOnlineMonitor::m_doHwErrorMon
Gaudi::Property< bool > m_doHwErrorMon
Definition: L1TopoOnlineMonitor.h:114
L1TopoOnlineMonitor::m_overflow_countHdwNotSim
std::unique_ptr< float[]> m_overflow_countHdwNotSim
Definition: L1TopoOnlineMonitor.h:86
L1TopoOnlineMonitor::m_doSimMon
Gaudi::Property< bool > m_doSimMon
Definition: L1TopoOnlineMonitor.h:108
L1TopoOnlineMonitor::m_startbit
std::vector< std::vector< std::pair< unsigned, unsigned > > > m_startbit
Definition: L1TopoOnlineMonitor.h:98
L1TopoOnlineMonitor::m_currentHdwBit
std::unique_ptr< float[]> m_currentHdwBit
Definition: L1TopoOnlineMonitor.h:93
TrigConf::L1Menu
L1 menu configuration.
Definition: L1Menu.h:28
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition: StoreGate/StoreGate/ReadHandleKey.h:39
L1TopoOnlineMonitor::m_overflow_countHdwSim
std::unique_ptr< float[]> m_overflow_countHdwSim
Definition: L1TopoOnlineMonitor.h:88
L1TopoOnlineMonitor::m_countSim
std::unique_ptr< float[]> m_countSim
Definition: L1TopoOnlineMonitor.h:80
TrigT1StoreGateKeys.h
L1TopoOnlineMonitor::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: L1TopoOnlineMonitor.h:102
L1TopoOnlineMonitor::m_overflow_countHdw
std::unique_ptr< float[]> m_overflow_countHdw
Definition: L1TopoOnlineMonitor.h:89
L1TopoOnlineMonitor::initialize
virtual StatusCode initialize() override
initialize
Definition: L1TopoOnlineMonitor.cxx:46
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:36
L1TopoOnlineMonitor::DecisionBits::triggerBits
std::optional< std::bitset< s_nTopoCTPOutputs > > triggerBits
Definition: L1TopoOnlineMonitor.h:54
L1TopoOnlineMonitor::m_rateHdwSim
std::unique_ptr< float[]> m_rateHdwSim
Definition: L1TopoOnlineMonitor.h:75
L1TopoRawDataContainer.h
L1TopoOnlineMonitor
Algorithm to monitor L1Topo transmission and simulation errors for the (Run-3) L1Topo boards.
Definition: L1TopoOnlineMonitor.h:38
L1TopoOnlineMonitor::m_rateHdwAndSim
std::unique_ptr< float[]> m_rateHdwAndSim
Definition: L1TopoOnlineMonitor.h:74
SG::WriteHandleKey
Property holding a SG store/key/clid from which a WriteHandle is made.
Definition: StoreGate/StoreGate/WriteHandleKey.h:40
L1TopoOnlineMonitor::m_countAny
std::unique_ptr< float[]> m_countAny
Definition: L1TopoOnlineMonitor.h:81
L1TopoOnlineMonitor::m_ctpIds
std::vector< unsigned > m_ctpIds
Definition: L1TopoOnlineMonitor.h:96
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
L1TopoOnlineMonitor::m_rateSimNotHdw
std::unique_ptr< float[]> m_rateSimNotHdw
Definition: L1TopoOnlineMonitor.h:73
AthMonitorAlgorithm.h
L1TopoOnlineMonitor::s_nTopoCTPOutputs
static constexpr size_t s_nTopoCTPOutputs
Number of CTP outputs, used for histogram ranges and loops.
Definition: L1TopoOnlineMonitor.h:50
L1TopoOnlineMonitor::m_overflow_rateSimNotHdw
std::unique_ptr< float[]> m_overflow_rateSimNotHdw
Definition: L1TopoOnlineMonitor.h:83
L1TopoOnlineMonitor::DecisionBits::triggerBitsSim
std::optional< std::bitset< s_nTopoCTPOutputs > > triggerBitsSim
Definition: L1TopoOnlineMonitor.h:56
L1TopoOnlineMonitor::doHwMon
StatusCode doHwMon(DecisionBits &decisionBits, std::vector< std::vector< unsigned >> &multWeights, const EventContext &ctx) const
Monitor the Hw bits from RAW data.
Definition: L1TopoOnlineMonitor.cxx:424
L1TopoOnlineMonitor::m_doMultComp
Gaudi::Property< bool > m_doMultComp
Definition: L1TopoOnlineMonitor.h:118
L1TopoOnlineMonitor::m_rateHdwNotSim
std::unique_ptr< float[]> m_rateHdwNotSim
Definition: L1TopoOnlineMonitor.h:72
L1TopoOnlineMonitor::doSimMon
StatusCode doSimMon(DecisionBits &decisionBits, std::vector< std::vector< unsigned >> &multWeights, const EventContext &ctx) const
Monitor the simulated bits.
Definition: L1TopoOnlineMonitor.cxx:289
L1TopoOnlineMonitor::m_countHdwNotSim
std::unique_ptr< float[]> m_countHdwNotSim
Definition: L1TopoOnlineMonitor.h:76
L1TopoOnlineMonitor::m_detStore
ServiceHandle< StoreGateSvc > m_detStore
Definition: L1TopoOnlineMonitor.h:127
xAOD::TrigComposite_v1
Class used to describe composite objects in the HLT.
Definition: TrigComposite_v1.h:49
L1TopoOnlineMonitor::doComp
StatusCode doComp(DecisionBits &decisionBits, const EventContext &ctx) const
Compare hardware and simulation.
Definition: L1TopoOnlineMonitor.cxx:582
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
TrigCompositeContainer.h
WriteHandleKey.h
Property holding a SG store/key/clid from which a WriteHandle is made.
L1TopoOnlineMonitor::m_overflow_countSim
std::unique_ptr< float[]> m_overflow_countSim
Definition: L1TopoOnlineMonitor.h:90
L1TopoOnlineMonitor::m_overflow_countSimNotHdw
std::unique_ptr< float[]> m_overflow_countSimNotHdw
Definition: L1TopoOnlineMonitor.h:87
L1TopoOnlineMonitor::m_currentSimBit
std::unique_ptr< float[]> m_currentSimBit
Definition: L1TopoOnlineMonitor.h:94
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
L1TopoOnlineMonitor::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: L1TopoOnlineMonitor.cxx:222
L1TopoOnlineMonitor::m_overflow_rateHdwAndSim
std::unique_ptr< float[]> m_overflow_rateHdwAndSim
Definition: L1TopoOnlineMonitor.h:84
L1TopoOnlineMonitor::DecisionBits::ambiguityBitsSim
std::optional< std::bitset< s_nTopoCTPOutputs > > ambiguityBitsSim
Definition: L1TopoOnlineMonitor.h:58
L1TopoOnlineMonitor::m_forceCTPasHdw
Gaudi::Property< bool > m_forceCTPasHdw
Definition: L1TopoOnlineMonitor.h:120
L1TopoOnlineMonitor::DecisionBits
Helper structure holding decision bitsets, passed between the monitoring methods.
Definition: L1TopoOnlineMonitor.h:53
L1TopoOnlineMonitor::m_doComp
Gaudi::Property< bool > m_doComp
Definition: L1TopoOnlineMonitor.h:116
CTP_RDO.h
L1TopoOnlineMonitor::DecisionBits::overflowBitsSim
std::optional< std::bitset< s_nTopoCTPOutputs > > overflowBitsSim
Definition: L1TopoOnlineMonitor.h:57
L1TopoOnlineMonitor::m_TopoMultTriggerNames
std::vector< std::string > m_TopoMultTriggerNames
Definition: L1TopoOnlineMonitor.h:69
L1TopoOnlineMonitor::m_overflow_countAny
std::unique_ptr< float[]> m_overflow_countAny
Definition: L1TopoOnlineMonitor.h:91
L1TopoOnlineMonitor::m_TopoAlgTriggerNotVetoed
std::vector< bool > m_TopoAlgTriggerNotVetoed
Definition: L1TopoOnlineMonitor.h:68
L1TopoOnlineMonitor::m_TopoMultTriggerNotVetoed
std::vector< bool > m_TopoMultTriggerNotVetoed
Definition: L1TopoOnlineMonitor.h:70
L1TopoOnlineMonitor::m_TopoAlgTriggerNames
std::vector< std::string > m_TopoAlgTriggerNames
Definition: L1TopoOnlineMonitor.h:67
python.XMLReader.l1menu
l1menu
Definition: XMLReader.py:73
L1TopoOnlineMonitor::L1TopoOnlineMonitor
L1TopoOnlineMonitor(const std::string &name, ISvcLocator *svcLoc)
Definition: L1TopoOnlineMonitor.cxx:38
L1TopoOnlineMonitor::DecisionBits::triggerBitsCtp
std::optional< std::bitset< s_nTopoCTPOutputs > > triggerBitsCtp
Definition: L1TopoOnlineMonitor.h:59
L1TopoOnlineMonitor::getCtpIds
std::vector< unsigned > getCtpIds(const TrigConf::L1Menu &l1menu)
Get CTP ids from menu.
Definition: L1TopoOnlineMonitor.cxx:794
L1Menu.h
L1TopoOnlineMonitor::m_ctpRdoKey
SG::ReadHandleKey< CTP_RDO > m_ctpRdoKey
Definition: L1TopoOnlineMonitor.h:137
L1TopoOnlineMonitor::m_l1topoRawDataKey
SG::ReadHandleKey< xAOD::L1TopoRawDataContainer > m_l1topoRawDataKey
Definition: L1TopoOnlineMonitor.h:133
L1TopoOnlineMonitor::m_countHdw
std::unique_ptr< float[]> m_countHdw
Definition: L1TopoOnlineMonitor.h:79
L1TopoOnlineMonitor::doMultComp
StatusCode doMultComp(std::vector< std::vector< unsigned >> &multWeightsSim, std::vector< std::vector< unsigned >> &multWeightsHdw, const EventContext &ctx) const
Compare hardware and simulation for the multiplicity algorithms.
Definition: L1TopoOnlineMonitor.cxx:743
L1TopoOnlineMonitor::m_doHwMon
Gaudi::Property< bool > m_doHwMon
Definition: L1TopoOnlineMonitor.h:112
L1TopoSimResultsContainer.h
L1TopoOnlineMonitor::m_countHdwSim
std::unique_ptr< float[]> m_countHdwSim
Definition: L1TopoOnlineMonitor.h:78
L1TopoOnlineMonitor::m_overflow_rateHdwSim
std::unique_ptr< float[]> m_overflow_rateHdwSim
Definition: L1TopoOnlineMonitor.h:85
ServiceHandle< StoreGateSvc >
L1TopoOnlineMonitor::m_errorFlagsKey
SG::WriteHandleKey< xAOD::TrigCompositeContainer > m_errorFlagsKey
Definition: L1TopoOnlineMonitor.h:105