ATLAS Offline Software
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 
36 class IL1CPCMXTools;
37 class IL1CPMTools;
38 class 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
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
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,
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
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 
177  Monitored::Scalar<int> &witem,
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
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
CpmSimMonitorAlgorithm::EMTowerMismatch
@ EMTowerMismatch
Definition: CpmSimMonitorAlgorithm.h:68
CpmSimMonitorAlgorithm::HadTowerMismatch
@ HadTowerMismatch
Definition: CpmSimMonitorAlgorithm.h:68
CpmSimMonitorAlgorithm::CpmSimMonitorAlgorithm
CpmSimMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Definition: CpmSimMonitorAlgorithm.cxx:9
xAOD::CPMTobRoIMap_t
std::map< int, const CPMTobRoI * > CPMTobRoIMap_t
Definition: Event/xAOD/xAODTrigL1Calo/xAODTrigL1Calo/CPMTobRoI.h:19
CpmSimMonitorAlgorithm::simulate
void simulate(const CpmTowerMap *towers, const CpmTowerMap *towersOv, xAOD::CPMTobRoIContainer *rois, const EventContext &ctx) const
Definition: CpmSimMonitorAlgorithm.cxx:1884
CpmSimMonitorAlgorithm::m_cpmTool
ToolHandle< LVL1::IL1CPMTools > m_cpmTool
Definition: CpmSimMonitorAlgorithm.h:90
CpmSimMonitorAlgorithm::m_errorTool
ToolHandle< LVL1::ITrigT1CaloMonErrorTool > m_errorTool
Definition: CpmSimMonitorAlgorithm.h:92
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
CpmSimMonitorAlgorithm::NumberOfSummaryBins
@ NumberOfSummaryBins
Definition: CpmSimMonitorAlgorithm.h:71
LVL1::TrigT1CaloDefs::RODHeaderLocation
static const std::string RODHeaderLocation
Definition: TrigT1CaloDefs.h:68
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
CpmSimMonitorAlgorithm::TriggerTowerMapHad
std::map< int, const xAOD::TriggerTower * > TriggerTowerMapHad
Definition: CpmSimMonitorAlgorithm.h:96
CpmSimMonitorAlgorithm::thresholdsSame
int thresholdsSame(int val1, int val2, int nThresh, int nBits) const
Definition: CpmSimMonitorAlgorithm.cxx:1735
CpmSimMonitorAlgorithm::ATLAS_THREAD_SAFE
std::map< uint32_t, int > m_errorLB_thresh_counter ATLAS_THREAD_SAFE
Definition: CpmSimMonitorAlgorithm.h:186
CpmSimMonitorAlgorithm::m_packageName
StringProperty m_packageName
Definition: CpmSimMonitorAlgorithm.h:52
CpmSimMonitorAlgorithm::fillXVsThresholds
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
Definition: CpmSimMonitorAlgorithm.cxx:1714
CpmSimMonitorAlgorithm::fpga
int fpga(int crate, double phi) const
Definition: CpmSimMonitorAlgorithm.cxx:1980
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
CpmSimMonitorAlgorithm::~CpmSimMonitorAlgorithm
virtual ~CpmSimMonitorAlgorithm()=default
BeamSpot::mutex
std::mutex mutex
Definition: InDetBeamSpotVertex.cxx:18
CpmSimMonitorAlgorithm::m_mutex
std::mutex m_mutex
Definition: CpmSimMonitorAlgorithm.h:182
CpmSimMonitorAlgorithm::m_rodHeaderLocation
SG::ReadHandleKey< xAOD::RODHeaderContainer > m_rodHeaderLocation
Definition: CpmSimMonitorAlgorithm.h:82
IL1CPCMXTools.h
CpmSimMonitorAlgorithm::ATLAS_THREAD_SAFE
std::map< uint32_t, int > m_errorLB_tt_counter ATLAS_THREAD_SAFE
Definition: CpmSimMonitorAlgorithm.h:183
CPRoIDecoder.h
TriggerTowerKey.h
CpmSimMonitorAlgorithm::ATLAS_THREAD_SAFE
std::map< uint32_t, int > m_errorLB_roi_counter ATLAS_THREAD_SAFE
Definition: CpmSimMonitorAlgorithm.h:184
ITrigConfigSvc.h
TriggerTowerContainer.h
CpmSimMonitorAlgorithm::TotalSumMismatch
@ TotalSumMismatch
Definition: CpmSimMonitorAlgorithm.h:70
CPMTowerContainer.h
LVL1::TrigT1CaloDefs::CMXCPTobLocation
static const std::string CMXCPTobLocation
Definition: TrigT1CaloDefs.h:58
CPMTobRoIAuxContainer.h
CpmSimMonitorAlgorithm::thresholdsDiff
int thresholdsDiff(int val1, int val2, int nThresh, int nBits) const
Definition: CpmSimMonitorAlgorithm.cxx:1750
TrigConf::L1Menu
L1 menu configuration.
Definition: L1Menu.h:28
RODHeaderContainer.h
ITrigT1CaloMonErrorTool.h
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition: StoreGate/StoreGate/ReadHandleKey.h:39
CpmSimMonitorAlgorithm::m_cpCmxTool
ToolHandle< LVL1::IL1CPCMXTools > m_cpCmxTool
Definition: CpmSimMonitorAlgorithm.h:88
CpmSimMonitorAlgorithm::m_cmxCpTobLocation
SG::ReadHandleKey< xAOD::CMXCPTobContainer > m_cmxCpTobLocation
Definition: CpmSimMonitorAlgorithm.h:80
CpmSimMonitorAlgorithm::limitedRoiSet
bool limitedRoiSet(int crate, SG::ReadHandle< xAOD::RODHeaderContainer > &rodTES) const
Definition: CpmSimMonitorAlgorithm.cxx:2033
x
#define x
CMXCPTobContainer.h
WriteLumiToCool.val1
val1
Definition: WriteLumiToCool.py:184
CpmSimMonitorAlgorithm::CpmTowerMap
xAOD::CPMTowerMap_t CpmTowerMap
Definition: CpmSimMonitorAlgorithm.h:97
CpmSimMonitorAlgorithm::compareHad
bool compareHad(const TriggerTowerMapHad &ttMap, const CpmTowerMap &cpMap, ErrorVector &errors, bool overlap) const
Definition: CpmSimMonitorAlgorithm.cxx:605
CMXCPTobAuxContainer.h
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:36
CpmSimMonitorAlgorithm::m_overlapPresent
bool m_overlapPresent
Definition: CpmSimMonitorAlgorithm.h:65
CMXCPHitsContainer.h
CpmSimMonitorAlgorithm::m_cpmTowerLocation
SG::ReadHandleKey< xAOD::CPMTowerContainer > m_cpmTowerLocation
Definition: CpmSimMonitorAlgorithm.h:77
CpmSimMonitorAlgorithm::m_cpmTowerLocationOverlap
SG::ReadHandleKey< xAOD::CPMTowerContainer > m_cpmTowerLocationOverlap
Definition: CpmSimMonitorAlgorithm.h:78
CpmSimMonitorAlgorithm::compare
void compare(const CpmTobRoiMap &roiSimMap, const CpmTobRoiMap &roiMap, ErrorVector &errors, const xAOD::RODHeaderContainer *rodTES) const
Definition: CpmSimMonitorAlgorithm.cxx:834
CpmSimMonitorAlgorithm::m_errorLocation
SG::WriteHandleKey< std::vector< int > > m_errorLocation
Definition: CpmSimMonitorAlgorithm.h:55
SG::WriteHandleKey
Property holding a SG store/key/clid from which a WriteHandle is made.
Definition: StoreGate/StoreGate/WriteHandleKey.h:40
CpmSimMonitorAlgorithm::ErrorVector
std::vector< int > ErrorVector
Definition: CpmSimMonitorAlgorithm.h:73
CpmSimMonitorAlgorithm::CmxCpTobMap
std::map< int, const xAOD::CMXCPTob * > CmxCpTobMap
Definition: CpmSimMonitorAlgorithm.h:98
mergePhysValFiles.errors
list errors
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:42
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
WriteLumiToCool.val2
val2
Definition: WriteLumiToCool.py:185
AthMonitorAlgorithm.h
CpmSimMonitorAlgorithm::m_cpmTobRoiLocation
SG::ReadHandleKey< xAOD::CPMTobRoIContainer > m_cpmTobRoiLocation
Definition: CpmSimMonitorAlgorithm.h:79
CpmSimMonitorAlgorithm::ttCheck
CpmTowerMap::mapped_type ttCheck(CpmTowerMap::mapped_type tt, xAOD::CPMTowerContainer *coll) const
Definition: CpmSimMonitorAlgorithm.cxx:1991
CpmSimMonitorAlgorithm::TauRoIMismatch
@ TauRoIMismatch
Definition: CpmSimMonitorAlgorithm.h:69
CpmSimMonitorAlgorithm::TriggerTowerMapEm
std::map< int, const xAOD::TriggerTower * > TriggerTowerMapEm
Definition: CpmSimMonitorAlgorithm.h:95
xAOD::CPMTowerMap_t
std::map< int, const CPMTower * > CPMTowerMap_t
Definition: Event/xAOD/xAODTrigL1Calo/xAODTrigL1Calo/CPMTower.h:18
CpmSimMonitorAlgorithm::m_legacyCpHadInputsDisabled
Gaudi::Property< bool > m_legacyCpHadInputsDisabled
Definition: CpmSimMonitorAlgorithm.h:62
CpmSimMonitorAlgorithm::LocalSumMismatch
@ LocalSumMismatch
Definition: CpmSimMonitorAlgorithm.h:70
CpmSimMonitorAlgorithm::setupMap
StatusCode setupMap(const xAOD::TriggerTowerContainer *coll, TriggerTowerMapEm &emmap, TriggerTowerMapHad &hadmap) const
Definition: CpmSimMonitorAlgorithm.cxx:1767
CpmSimMonitorAlgorithm::m_cmxs
Gaudi::Property< int > m_cmxs
Definition: CpmSimMonitorAlgorithm.h:60
CpmSimMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: CpmSimMonitorAlgorithm.cxx:18
LVL1::TrigT1CaloDefs::CPMTowerLocation
static const std::string CPMTowerLocation
Definition: TrigT1CaloDefs.h:38
DataVector
Derived DataVector<T>.
Definition: DataVector.h:795
CpmSimMonitorAlgorithm::m_triggerTowerLocation
SG::ReadHandleKey< xAOD::TriggerTowerContainer > m_triggerTowerLocation
Definition: CpmSimMonitorAlgorithm.h:76
CpmSimMonitorAlgorithm::m_crates
Gaudi::Property< int > m_crates
Definition: CpmSimMonitorAlgorithm.h:57
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
CMXCPHitsAuxContainer.h
DataError.h
CpmSimMonitorAlgorithm::m_cmxCpHitsLocation
SG::ReadHandleKey< xAOD::CMXCPHitsContainer > m_cmxCpHitsLocation
Definition: CpmSimMonitorAlgorithm.h:81
CpmSimMonitorAlgorithm::m_configSvc
ServiceHandle< TrigConf::ITrigConfigSvc > m_configSvc
Definition: CpmSimMonitorAlgorithm.h:49
CpmSimMonitorAlgorithm::EMRoIMismatch
@ EMRoIMismatch
Definition: CpmSimMonitorAlgorithm.h:68
CpmSimMonitorAlgorithm::LeftCMXTobMismatch
@ LeftCMXTobMismatch
Definition: CpmSimMonitorAlgorithm.h:69
selection
const std::string selection
Definition: fbtTestBasics.cxx:75
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
CpmSimMonitorAlgorithm::m_modules
Gaudi::Property< int > m_modules
Definition: CpmSimMonitorAlgorithm.h:58
CpmSimMonitorAlgorithm::TopoMismatch
@ TopoMismatch
Definition: CpmSimMonitorAlgorithm.h:71
LVL1::TrigT1CaloDefs::xAODTriggerTowerLocation
static const std::string xAODTriggerTowerLocation
Definition: TrigT1CaloDefs.h:36
TrigT1CaloDefs.h
CpmSimMonitorAlgorithm::RightCMXTobMismatch
@ RightCMXTobMismatch
Definition: CpmSimMonitorAlgorithm.h:69
CpmSimMonitorAlgorithm::simulate
void simulate(const xAOD::CMXCPHitsContainer *hitsIn, xAOD::CMXCPHitsContainer *hitsOut) const
CpmSimMonitorAlgorithm::m_maxSlices
Gaudi::Property< int > m_maxSlices
Definition: CpmSimMonitorAlgorithm.h:59
CoordinateRange.h
RunTileMonitoring.towers
towers
Definition: RunTileMonitoring.py:133
CpmSimMonitorAlgorithm::ATLAS_THREAD_SAFE
std::map< uint32_t, int > m_errorLB_tob_counter ATLAS_THREAD_SAFE
Definition: CpmSimMonitorAlgorithm.h:185
CpmSimMonitorAlgorithm::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: CpmSimMonitorAlgorithm.cxx:59
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
IL1CPMTools.h
CPMTowerAuxContainer.h
TriggerTest.rois
rois
Definition: TriggerTest.py:23
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
CpmSimMonitorAlgorithm::getL1Menu
const TrigConf::L1Menu * getL1Menu(const EventContext &ctx) const
Definition: CpmSimMonitorAlgorithm.cxx:2051
CpmSimMonitorAlgorithm::SummaryErrors
SummaryErrors
Definition: CpmSimMonitorAlgorithm.h:68
LVL1::TrigT1CaloDefs::CPMTobRoILocation
static const std::string CPMTobRoILocation
Definition: TrigT1CaloDefs.h:62
CpmSimMonitorAlgorithm
Definition: CpmSimMonitorAlgorithm.py:1
CpmSimMonitorAlgorithm::compareEm
bool compareEm(const TriggerTowerMapEm &ttMap, const CpmTowerMap &cpMap, ErrorVector &errors, bool overlap) const
Definition: CpmSimMonitorAlgorithm.cxx:387
CpmSimMonitorAlgorithm::m_L1MenuKey
SG::ReadHandleKey< TrigConf::L1Menu > m_L1MenuKey
Definition: CpmSimMonitorAlgorithm.h:84
CpmSimMonitorAlgorithm::CmxCpHitsMap
std::map< int, const xAOD::CMXCPHits * > CmxCpHitsMap
Definition: CpmSimMonitorAlgorithm.h:99
CpmSimMonitorAlgorithm::CpmTobRoiMap
xAOD::CPMTobRoIMap_t CpmTobRoiMap
Definition: CpmSimMonitorAlgorithm.h:100
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
L1Menu.h
TileDCSDataPlotter.tt
tt
Definition: TileDCSDataPlotter.py:876
LVL1::TrigT1CaloDefs::CMXCPHitsLocation
static const std::string CMXCPHitsLocation
Definition: TrigT1CaloDefs.h:59
CpmSimMonitorAlgorithm::RemoteSumMismatch
@ RemoteSumMismatch
Definition: CpmSimMonitorAlgorithm.h:70
ServiceHandle< TrigConf::ITrigConfigSvc >