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