ATLAS Offline Software
Loading...
Searching...
No Matches
CpmSimMonitorAlgorithm.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4#ifndef TRIGT1CALOMONITORING_CPMSIMMONITORALGORITHM_H
5#define TRIGT1CALOMONITORING_CPMSIMMONITORALGORITHM_H
6
18//
22//
24//
31
32#include "TrigConfData/L1Menu.h"
33
34#include <mutex>
35
36class IL1CPCMXTools;
37class IL1CPMTools;
38class ITrigT1CaloMonErrorTool;
39
41 public:CpmSimMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator );
42 virtual ~CpmSimMonitorAlgorithm()=default;
43 virtual StatusCode initialize() override;
44 virtual StatusCode fillHistograms( const EventContext& ctx ) const override;
45
46 private:
47
48 // to deal with L1 menu
49 ServiceHandle<TrigConf::ITrigConfigSvc> m_configSvc{this, "TrigConfigSvc", "TrigConf::xAODConfigSvc/xAODConfigSvc"};
50 const TrigConf::L1Menu* getL1Menu(const EventContext& ctx) const;
51
52 StringProperty m_packageName{this,"PackageName","CpmSimMonitor","group name for histograming"};
53
54 // Error vector StoreGate key
55 SG::WriteHandleKey<std::vector<int>> m_errorLocation{this,"ErrorLocation","L1CaloCPMMismatchVector","ErrorVector"};
56
57 Gaudi::Property<int> m_crates{this,"s_crates", 4, "Number of CPM crates"};
58 Gaudi::Property<int> m_modules{this,"s_modules", 14, "Number of modules per crate (modules numbered 1-14)"};
59 Gaudi::Property<int> m_maxSlices{this,"s_maxSlices", 5, "Maximum number of slices"};
60 Gaudi::Property<int> m_cmxs{this,"s_cmxs", 2, "Number of CMXs"};
61
62 Gaudi::Property<bool> m_legacyCpHadInputsDisabled{this,"s_legacyCpHadInputsDisabled", false, "Status of the L1Calo Legacy CP hadronic inputs"};
63
64 // CPM overlap tower container present
66
67 // Mismatch summary bins
72
73 typedef std::vector<int> ErrorVector;
74
75 // container keys including steering parameter and description
78 SG::ReadHandleKey<xAOD::CPMTowerContainer> m_cpmTowerLocationOverlap{this, "CPMTowerLocationOverlap",LVL1::TrigT1CaloDefs::CPMTowerLocation + "Overlap", "CPM Overlap container"};
83
84 SG::ReadHandleKey<TrigConf::L1Menu> m_L1MenuKey { this, "L1TriggerMenu", "DetectorStore+L1TriggerMenu", "L1 Menu" };
85
86
87 // CP-CMX simulation tool
88 ToolHandle<LVL1::IL1CPCMXTools> m_cpCmxTool;
89 // CP simulation tool
90 ToolHandle<LVL1::IL1CPMTools> m_cpmTool;
91 // Event veto error tool
92 ToolHandle<LVL1::ITrigT1CaloMonErrorTool> m_errorTool;
93
94 //typedef maps
95 typedef std::map<int, const xAOD::TriggerTower*> TriggerTowerMapEm;
96 typedef std::map<int, const xAOD::TriggerTower*> TriggerTowerMapHad;
98 typedef std::map<int, const xAOD::CMXCPTob*> CmxCpTobMap;
99 typedef std::map<int, const xAOD::CMXCPHits*> CmxCpHitsMap;
101
102 // Set up TriggerTower map
103 StatusCode setupMap(const xAOD::TriggerTowerContainer* coll,
104 TriggerTowerMapEm& emmap, TriggerTowerMapHad& hadmap) const;
105
106 // Set up CpmTower map
107 StatusCode setupMap(const xAOD::CPMTowerContainer* coll, CpmTowerMap& map) const;
108
109 // Set up CpmTobRoi map - one for read handles and one without?
110 StatusCode setupMap(const xAOD::CPMTobRoIContainer* coll, CpmTobRoiMap& map) const;
111
112 // Set up CmxCpTob map
113 StatusCode setupMap(const xAOD::CMXCPTobContainer* coll, CmxCpTobMap& map,
114 std::vector<int>* parityMap = 0) const;
115 // Set up CmxCpHits map
116 StatusCode setupMap(const xAOD::CMXCPHitsContainer* coll, CmxCpHitsMap& map) const;
117
118 // Compare Trigger Towers and CPM Towers
119 bool compareEm(const TriggerTowerMapEm& ttMap, const CpmTowerMap& cpMap,
120 ErrorVector& errors, bool overlap) const;
121 bool compareHad(const TriggerTowerMapHad& ttMap, const CpmTowerMap& cpMap,
122 ErrorVector& errors, bool overlap) const;
123
124 // Compare Simulated RoIs with data
125 void compare(const CpmTobRoiMap& roiSimMap, const CpmTobRoiMap& roiMap,
126 ErrorVector& errors,
127 const xAOD::RODHeaderContainer* rodTES) const;
128
129 // Compare simulated CMX TOBs with data
130 void compare(const CmxCpTobMap& simMap, const CmxCpTobMap& datMap,
131 const std::vector<int> & parityMap,
132 ErrorVector& errorsCPM, ErrorVector& errorsCMX,
133 const xAOD::RODHeaderContainer* rodTES) const;
134
135 // Compare Simulated CMX Hit Sums and Data CMX Hit Sums
136 void compare(const CmxCpHitsMap& cmxSimMap, const CmxCpHitsMap& cmxMap,
137 ErrorVector& errors, int selection) const;
138
139
140 // simulation
141 // Simulate CPM RoIs from CPM Towers
142 void simulate(const CpmTowerMap *towers, const CpmTowerMap *towersOv,
143 xAOD::CPMTobRoIContainer* rois, const EventContext& ctx) const;
144 // Simulate CPM RoIs from CPM Towers quick version
145 void simulate(const CpmTowerMap* towers, xAOD::CPMTobRoIContainer* rois, const EventContext& ctx) const;
146
147
148 // Simulate CMX-CP TOBs from CPM RoIs
149 void simulate(const xAOD::CPMTobRoIContainer* rois, xAOD::CMXCPTobContainer* tobs) const;
150
151 // Simulate CMX Hit sums from CMX TOBs
152 void simulate(const xAOD::CMXCPTobContainer* tobs,
154 const EventContext& ctx) const;
155
156 // Simulate CMX Total Hit sums from Remote/Local
157 void simulate(const xAOD::CMXCPHitsContainer* hitsIn,
158 xAOD::CMXCPHitsContainer* hitsOut) const;
159
160 // Return EM FPGA for given crate/phi
161 int fpga(int crate, double phi) const;
162
163 // Return a tower with zero energy if parity bit is set
164 CpmTowerMap::mapped_type ttCheck( CpmTowerMap::mapped_type tt, xAOD::CPMTowerContainer* coll) const;
165
166 // Check if LimitedRoISet bit is set
167 bool limitedRoiSet(int crate, SG::ReadHandle<xAOD::RODHeaderContainer> &rodTES) const;
168 bool limitedRoiSet(int crate, const xAOD::RODHeaderContainer* rodTES) const;
169
170 // Flag which threshold hit values are non-zero and the same
171 int thresholdsSame(int val1, int val2, int nThresh, int nBits) const;
172
173 // Flag which threshold hit values are different
174 int thresholdsDiff(int val1, int val2, int nThresh, int nBits) const;
175
178 int x, int val, int nThresh,
179 int nBits, int offset = 0) const;
180
181 // count number of error events per lumiblock across threads for each type of error
182 mutable std::mutex m_mutex{};
183 mutable std::map<uint32_t, int> m_errorLB_tt_counter ATLAS_THREAD_SAFE;
184 mutable std::map<uint32_t, int> m_errorLB_roi_counter ATLAS_THREAD_SAFE;
185 mutable std::map<uint32_t, int> m_errorLB_tob_counter ATLAS_THREAD_SAFE;
186 mutable std::map<uint32_t, int> m_errorLB_thresh_counter ATLAS_THREAD_SAFE;
187
188};
189#endif
Scalar phi() const
phi method
Header file to be included by clients of the Monitored infrastructure.
Property holding a SG store/key/clid from which a ReadHandle is made.
#define x
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Gaudi::Property< int > m_cmxs
Gaudi::Property< int > m_maxSlices
virtual ~CpmSimMonitorAlgorithm()=default
int thresholdsDiff(int val1, int val2, int nThresh, int nBits) const
SG::ReadHandleKey< xAOD::RODHeaderContainer > m_rodHeaderLocation
CpmTowerMap::mapped_type ttCheck(CpmTowerMap::mapped_type tt, xAOD::CPMTowerContainer *coll) const
Gaudi::Property< bool > m_legacyCpHadInputsDisabled
ServiceHandle< TrigConf::ITrigConfigSvc > m_configSvc
bool limitedRoiSet(int crate, SG::ReadHandle< xAOD::RODHeaderContainer > &rodTES) const
SG::ReadHandleKey< xAOD::TriggerTowerContainer > m_triggerTowerLocation
ToolHandle< LVL1::IL1CPMTools > m_cpmTool
Gaudi::Property< int > m_modules
int thresholdsSame(int val1, int val2, int nThresh, int nBits) const
void compare(const CpmTobRoiMap &roiSimMap, const CpmTobRoiMap &roiMap, ErrorVector &errors, const xAOD::RODHeaderContainer *rodTES) const
int fpga(int crate, double phi) const
void fillXVsThresholds(Monitored::Scalar< int > &xitem, Monitored::Scalar< int > &yitem, Monitored::Scalar< int > &witem, int x, int val, int nThresh, int nBits, int offset=0) const
xAOD::CPMTobRoIMap_t CpmTobRoiMap
ToolHandle< LVL1::ITrigT1CaloMonErrorTool > m_errorTool
xAOD::CPMTowerMap_t CpmTowerMap
SG::ReadHandleKey< xAOD::CPMTowerContainer > m_cpmTowerLocationOverlap
bool compareEm(const TriggerTowerMapEm &ttMap, const CpmTowerMap &cpMap, ErrorVector &errors, bool overlap) const
SG::ReadHandleKey< xAOD::CMXCPHitsContainer > m_cmxCpHitsLocation
std::map< int, const xAOD::TriggerTower * > TriggerTowerMapEm
std::map< int, const xAOD::TriggerTower * > TriggerTowerMapHad
std::map< uint32_t, int > m_errorLB_tt_counter ATLAS_THREAD_SAFE
Gaudi::Property< int > m_crates
StatusCode setupMap(const xAOD::TriggerTowerContainer *coll, TriggerTowerMapEm &emmap, TriggerTowerMapHad &hadmap) const
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
SG::ReadHandleKey< xAOD::CPMTobRoIContainer > m_cpmTobRoiLocation
std::map< int, const xAOD::CMXCPTob * > CmxCpTobMap
void simulate(const CpmTowerMap *towers, const CpmTowerMap *towersOv, xAOD::CPMTobRoIContainer *rois, const EventContext &ctx) const
SG::ReadHandleKey< xAOD::CPMTowerContainer > m_cpmTowerLocation
bool compareHad(const TriggerTowerMapHad &ttMap, const CpmTowerMap &cpMap, ErrorVector &errors, bool overlap) const
ToolHandle< LVL1::IL1CPCMXTools > m_cpCmxTool
SG::ReadHandleKey< TrigConf::L1Menu > m_L1MenuKey
SG::WriteHandleKey< std::vector< int > > m_errorLocation
SG::ReadHandleKey< xAOD::CMXCPTobContainer > m_cmxCpTobLocation
std::map< int, const xAOD::CMXCPHits * > CmxCpHitsMap
static const std::string CPMTobRoILocation
static const std::string RODHeaderLocation
static const std::string xAODTriggerTowerLocation
static const std::string CMXCPHitsLocation
static const std::string CPMTowerLocation
static const std::string CMXCPTobLocation
Declare a monitored scalar variable.
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
L1 menu configuration.
Definition L1Menu.h:28
STL class.
const std::string selection
RODHeaderContainer_v2 RODHeaderContainer
Define the latest version of the RODHeader container.
CMXCPTobContainer_v1 CMXCPTobContainer
Define the latest version of the CMXCPTob class.
CPMTowerContainer_v2 CPMTowerContainer
Define the latest version of the CPMHits container.
std::map< int, const CPMTobRoI * > CPMTobRoIMap_t
CMXCPHitsContainer_v1 CMXCPHitsContainer
Define the latest version of the CMXCPHits class.
TriggerTowerContainer_v2 TriggerTowerContainer
Define the latest version of the TriggerTower container.
std::map< int, const CPMTower * > CPMTowerMap_t
CPMTobRoIContainer_v1 CPMTobRoIContainer
Define the latest version of the CPMTobRoI class.
void initialize()