ATLAS Offline Software
AthMonitorAlgorithm.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
17 #ifndef ATHMONITORALGORITHM_H
18 #define ATHMONITORALGORITHM_H
19 
21 
26 
34 
35 namespace Trig {
36 class TrigDecisionTool;
37 }
38 
40 public:
41 
45  AthMonitorAlgorithm(const std::string& name, ISvcLocator* pSvcLocator );
46 
47 
51  virtual ~AthMonitorAlgorithm();
52 
53 
59  virtual StatusCode initialize() override;
60 
61 
68  virtual StatusCode execute(const EventContext& ctx) const override;
69 
70 
80  virtual StatusCode fillHistograms(const EventContext& ctx) const = 0;
81 
100  void fill( const ToolHandle<GenericMonitoringTool>& groupHandle,
101  std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>&& variables ) const;
102 
116  void fill( const ToolHandle<GenericMonitoringTool>& groupHandle,
117  const std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>& variables ) const {
118  fill(groupHandle, std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>{variables});
119  };
120 
127  template <typename... T>
128  void fill( const ToolHandle<GenericMonitoringTool>& groupHandle, T&&... variables ) const {
129  fill(groupHandle, std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>{std::forward<T>(variables)...});
130  }
131 
140  void fill( const std::string& groupName,
141  std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>&& variables ) const;
142 
149  void fill( const std::string& groupName,
150  const std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>& variables ) const {
151  fill( getGroup(groupName), std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>{variables});
152  }
153 
160  template <typename... T>
161  void fill( const std::string& groupName, T&&... variables ) const {
162  fill(getGroup(groupName), std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>{std::forward<T>(variables)...});
163  } // end of fill group
165 
166 
175  enum class Environment_t {
176  user = 0,
177  online,
178  tier0,
179  tier0Raw,
180  tier0ESD,
181  AOD,
182  altprod,
183  };
184 
185 
194  enum class DataType_t {
195  userDefined = 0,
196  monteCarlo,
197  collisions,
198  cosmics,
200  };
201 
202 
209 
210 
216  Environment_t envStringToEnum( const std::string& str ) const;
217 
218 
224  DataType_t dataType() const { return m_dataType; }
225 
226 
232  DataType_t dataTypeStringToEnum( const std::string& str ) const;
233 
234 
245  const ToolHandle<GenericMonitoringTool>& getGroup( const std::string& name ) const;
246 
247 
256  const ToolHandle<Trig::TrigDecisionTool>& getTrigDecisionTool() const;
257 
268  bool trigChainsArePassed( const std::vector<std::string>& vTrigNames ) const;
269 
276  SG::ReadHandle<xAOD::EventInfo> GetEventInfo( const EventContext& ) const;
277 
286  virtual float lbAverageInteractionsPerCrossing( const EventContext& ctx = Gaudi::Hive::currentContext() ) const;
287 
291  virtual float lbInteractionsPerCrossing( const EventContext& ctx = Gaudi::Hive::currentContext() ) const;
292 
296  virtual float lbAverageLuminosity( const EventContext& ctx = Gaudi::Hive::currentContext() ) const;
297 
301  virtual float lbLuminosityPerBCID( const EventContext& ctx = Gaudi::Hive::currentContext() ) const;
302 
306  virtual double lbDuration( const EventContext& ctx = Gaudi::Hive::currentContext() ) const;
307 
311  virtual float lbAverageLivefraction( const EventContext& ctx = Gaudi::Hive::currentContext() ) const;
312 
316  virtual float livefractionPerBCID( const EventContext& ctx = Gaudi::Hive::currentContext() ) const;
317 
321  virtual double lbLumiWeight( const EventContext& ctx = Gaudi::Hive::currentContext() ) const;
322  // end of lumi group
324 
325 
336  virtual StatusCode parseList( const std::string& line, std::vector<std::string>& result ) const;
337 
338 
339 protected:
340  // Using the new way to declare JO properties: Gaudi::Property<int> m_myProperty {this,"MyProperty",0};
341  ToolHandleArray<GenericMonitoringTool> m_tools {this,"GMTools",{}};
342  // Keep TDT public until final decision from trigger on interface
343  // Initialization is in the ctor to avoid requiring a header
344  // dependency on TrigDecisionTool.h.
345  PublicToolHandle<Trig::TrigDecisionTool> m_trigDecTool;
346  ToolHandleArray<IDQFilterTool> m_DQFilterTools {this,"FilterTools",{}};
347 
349  {this,"LuminosityCondDataKey","LuminosityCondData","SG Key of LuminosityCondData object"};
351  {this,"LBDurationCondDataKey","LBDurationCondData","SG Key of LBDurationCondData object"};
353  {this,"TrigLiveFractionCondDataKey","TrigLiveFractionCondData", "SG Key of TrigLiveFractionCondData object"};
354 
357  Gaudi::Property<std::string> m_environmentStr {this,"Environment","user"};
358  Gaudi::Property<std::string> m_dataTypeStr {this,"DataType","userDefined"};
359 
360  Gaudi::Property<std::string> m_triggerChainString {this,"TriggerChain",""};
361  std::vector<std::string> m_vTrigChainNames;
362 
363  Gaudi::Property<std::string> m_fileKey {this,"FileKey",""};
364  Gaudi::Property<bool> m_useLumi {this,"EnableLumi",false};
365  Gaudi::Property<float> m_defaultLBDuration {this,"DefaultLBDuration",60.};
366  Gaudi::Property<int> m_detailLevel {this,"DetailLevel",0};
367  SG::ReadHandleKey<xAOD::EventInfo> m_EventInfoKey {this,"EventInfoKey","EventInfo"};
368 
369 private:
370  typedef std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> MonVarVec_t;
371  std::string m_name;
372  std::unordered_map<std::string, size_t> m_toolLookupMap;
373 
374  const ToolHandle<GenericMonitoringTool> m_dummy;
375 
376 
377  Gaudi::Property<bool> m_enforceExpressTriggers{this,
378  "EnforceExpressTriggers", false,
379  "Requires that matched triggers made the event enter the express stream"};
380 };
381 
382 #endif
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
IMonitorToolBase.h
AthMonitorAlgorithm::environment
Environment_t environment() const
Accessor functions for the environment.
Definition: AthMonitorAlgorithm.h:208
AthMonitorAlgorithm::livefractionPerBCID
virtual float livefractionPerBCID(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate the live fraction per bunch crossing ID.
Definition: AthMonitorAlgorithm.cxx:300
AthMonitorAlgorithm::Environment_t::tier0Raw
@ tier0Raw
AthMonitorAlgorithm::m_dataTypeStr
Gaudi::Property< std::string > m_dataTypeStr
DataType string pulled from the job option and converted to enum.
Definition: AthMonitorAlgorithm.h:358
AthMonitorAlgorithm::dataType
DataType_t dataType() const
Accessor functions for the data type.
Definition: AthMonitorAlgorithm.h:224
AthMonitorAlgorithm::lbInteractionsPerCrossing
virtual float lbInteractionsPerCrossing(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate instantaneous number of interactions, i.e.
Definition: AthMonitorAlgorithm.cxx:243
AthMonitorAlgorithm::lbLumiWeight
virtual double lbLumiWeight(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate the average integrated luminosity multiplied by the live fraction.
Definition: AthMonitorAlgorithm.cxx:317
AthMonitorAlgorithm::m_environmentStr
Gaudi::Property< std::string > m_environmentStr
Environment string pulled from the job option and converted to enum.
Definition: AthMonitorAlgorithm.h:357
AthMonitorAlgorithm::lbAverageLuminosity
virtual float lbAverageLuminosity(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate average luminosity (in ub-1 s-1 => 10^30 cm-2 s-1).
Definition: AthMonitorAlgorithm.cxx:259
get_generator_info.result
result
Definition: get_generator_info.py:21
checkCoolLatestUpdate.variables
variables
Definition: checkCoolLatestUpdate.py:12
AthMonitorAlgorithm::m_trigDecTool
PublicToolHandle< Trig::TrigDecisionTool > m_trigDecTool
Tool to tell whether a specific trigger is passed.
Definition: AthMonitorAlgorithm.h:345
AthMonitorAlgorithm::Environment_t::tier0
@ tier0
Trig
The common trigger namespace for trigger analysis tools.
Definition: LArCellMonAlg.h:33
AthMonitorAlgorithm::Environment_t::AOD
@ AOD
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
AthMonitorAlgorithm::m_triggerChainString
Gaudi::Property< std::string > m_triggerChainString
Trigger chain string pulled from the job option and parsed into a vector.
Definition: AthMonitorAlgorithm.h:360
RunTileMonitoring.groupName
groupName
Definition: RunTileMonitoring.py:158
AthMonitorAlgorithm::m_vTrigChainNames
std::vector< std::string > m_vTrigChainNames
Vector of trigger chain names parsed from trigger chain string.
Definition: AthMonitorAlgorithm.h:361
AthMonitorAlgorithm::m_EventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_EventInfoKey
Key for retrieving EventInfo from StoreGate.
Definition: AthMonitorAlgorithm.h:367
AthMonitorAlgorithm::getTrigDecisionTool
const ToolHandle< Trig::TrigDecisionTool > & getTrigDecisionTool() const
Get the trigger decision tool member.
Definition: AthMonitorAlgorithm.cxx:198
AthMonitorAlgorithm::m_toolLookupMap
std::unordered_map< std::string, size_t > m_toolLookupMap
Definition: AthMonitorAlgorithm.h:372
AthMonitorAlgorithm::m_environment
AthMonitorAlgorithm::Environment_t m_environment
Instance of the Environment_t enum.
Definition: AthMonitorAlgorithm.h:355
AthMonitorAlgorithm::m_detailLevel
Gaudi::Property< int > m_detailLevel
Sets the level of detail used in the monitoring.
Definition: AthMonitorAlgorithm.h:366
SG::ReadHandleKey< xAOD::EventInfo >
dq_defect_bulk_create_defects.line
line
Definition: dq_defect_bulk_create_defects.py:27
AthMonitorAlgorithm::fill
void fill(const std::string &groupName, const std::vector< std::reference_wrapper< Monitored::IMonitoredVariable >> &variables) const
Fills a vector of variables to a group by name.
Definition: AthMonitorAlgorithm.h:149
AthMonitorAlgorithm::trigChainsArePassed
bool trigChainsArePassed(const std::vector< std::string > &vTrigNames) const
Check whether triggers are passed.
Definition: AthMonitorAlgorithm.cxx:203
ReadCondHandle.h
AthMonitorAlgorithm::Environment_t::user
@ user
AthMonitorAlgorithm::m_dummy
const ToolHandle< GenericMonitoringTool > m_dummy
Definition: AthMonitorAlgorithm.h:374
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:74
AthMonitorAlgorithm::lbLuminosityPerBCID
virtual float lbLuminosityPerBCID(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate the instantaneous luminosity per bunch crossing.
Definition: AthMonitorAlgorithm.cxx:271
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:39
AthMonitorAlgorithm::fill
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, const std::vector< std::reference_wrapper< Monitored::IMonitoredVariable >> &variables) const
Fills a vector of variables to a group by reference.
Definition: AthMonitorAlgorithm.h:116
GenericMonitoringTool.h
TrigLiveFractionCondData.h
Hold live fraction data produced by TrigLiveFractionCondAlg.
AthMonitorAlgorithm::m_DQFilterTools
ToolHandleArray< IDQFilterTool > m_DQFilterTools
Array of Data Quality filter tools.
Definition: AthMonitorAlgorithm.h:346
AthMonitorAlgorithm::dataTypeStringToEnum
DataType_t dataTypeStringToEnum(const std::string &str) const
Convert the data type string from the python configuration to an enum object.
Definition: AthMonitorAlgorithm.cxx:144
AthMonitorAlgorithm::~AthMonitorAlgorithm
virtual ~AthMonitorAlgorithm()
Destructor.
Definition: AthMonitorAlgorithm.cxx:19
AthMonitorAlgorithm::DataType_t::heavyIonCollisions
@ heavyIonCollisions
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthMonitorAlgorithm::m_defaultLBDuration
Gaudi::Property< float > m_defaultLBDuration
Default duration of one lumi block.
Definition: AthMonitorAlgorithm.h:365
AthMonitorAlgorithm::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const =0
adds event to the monitoring histograms
AthMonitorAlgorithm::fill
void fill(const std::string &groupName, T &&... variables) const
Fills a variadic list of variables to a group by name.
Definition: AthMonitorAlgorithm.h:161
AthMonitorAlgorithm::DataType_t
DataType_t
Specifies what type of input data is being monitored.
Definition: AthMonitorAlgorithm.h:194
AthMonitorAlgorithm::execute
virtual StatusCode execute(const EventContext &ctx) const override
Applies filters and trigger requirements.
Definition: AthMonitorAlgorithm.cxx:77
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.
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:111
AthMonitorAlgorithm::Environment_t
Environment_t
Specifies the processing environment.
Definition: AthMonitorAlgorithm.h:175
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
LuminosityCondData.h
Hold luminosity data produced by LuminosityCondAlg.
AthMonitorAlgorithm::m_dataType
AthMonitorAlgorithm::DataType_t m_dataType
Instance of the DataType_t enum.
Definition: AthMonitorAlgorithm.h:356
ReadCondHandleKey.h
AthMonitorAlgorithm::DataType_t::cosmics
@ cosmics
AthReentrantAlgorithm.h
AthMonitorAlgorithm::m_tools
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
Definition: AthMonitorAlgorithm.h:341
AthMonitorAlgorithm::Environment_t::online
@ online
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
AthMonitorAlgorithm::lbAverageLivefraction
virtual float lbAverageLivefraction(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate the average luminosity livefraction.
Definition: AthMonitorAlgorithm.cxx:283
AthMonitorAlgorithm::Environment_t::tier0ESD
@ tier0ESD
AthMonitorAlgorithm::fill
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, T &&... variables) const
Fills a variadic list of variables to a group by reference.
Definition: AthMonitorAlgorithm.h:128
AthMonitorAlgorithm::Environment_t::altprod
@ altprod
LBDurationCondData.h
Hold luminosity block duration data produced from /TRIGGER/LUMI/LBLB.
AthMonitorAlgorithm::m_enforceExpressTriggers
Gaudi::Property< bool > m_enforceExpressTriggers
Definition: AthMonitorAlgorithm.h:377
AthMonitorAlgorithm::lbAverageInteractionsPerCrossing
virtual float lbAverageInteractionsPerCrossing(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate the average mu, i.e.
Definition: AthMonitorAlgorithm.cxx:231
EventInfo.h
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:22
SG::ReadCondHandleKey< LuminosityCondData >
AthMonitorAlgorithm::m_lumiDataKey
SG::ReadCondHandleKey< LuminosityCondData > m_lumiDataKey
Definition: AthMonitorAlgorithm.h:349
AthMonitorAlgorithm::DataType_t::collisions
@ collisions
AthMonitorAlgorithm::parseList
virtual StatusCode parseList(const std::string &line, std::vector< std::string > &result) const
Parse a string into a vector.
Definition: AthMonitorAlgorithm.cxx:345
AthMonitorAlgorithm::m_name
std::string m_name
Definition: AthMonitorAlgorithm.h:371
AthMonitorAlgorithm::fill
void fill(const std::string &groupName, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable >> &&variables) const
Fills a vector of variables to a group by name.
AthMonitorAlgorithm::envStringToEnum
Environment_t envStringToEnum(const std::string &str) const
Convert the environment string from the python configuration to an enum object.
Definition: AthMonitorAlgorithm.cxx:116
AthMonitorAlgorithm::AthMonitorAlgorithm
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Definition: AthMonitorAlgorithm.cxx:8
AthMonitorAlgorithm::MonVarVec_t
std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > MonVarVec_t
Definition: AthMonitorAlgorithm.h:370
str
Definition: BTagTrackIpAccessor.cxx:11
AthMonitorAlgorithm::m_fileKey
Gaudi::Property< std::string > m_fileKey
Internal Athena name for file.
Definition: AthMonitorAlgorithm.h:363
LArSCvsRawChannelConfig.TrigDecisionTool
TrigDecisionTool
Definition: LArSCvsRawChannelConfig.py:83
IDQFilterTool.h
AthMonitorAlgorithm::m_trigLiveFractionDataKey
SG::ReadCondHandleKey< TrigLiveFractionCondData > m_trigLiveFractionDataKey
Definition: AthMonitorAlgorithm.h:353
AthMonitorAlgorithm::lbDuration
virtual double lbDuration(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate the duration of the luminosity block (in seconds)
Definition: AthMonitorAlgorithm.cxx:328
AthMonitorAlgorithm::m_useLumi
Gaudi::Property< bool > m_useLumi
Allows use of various luminosity functions.
Definition: AthMonitorAlgorithm.h:364
AthMonitorAlgorithm::DataType_t::userDefined
@ userDefined
AthMonitorAlgorithm::m_lbDurationDataKey
SG::ReadCondHandleKey< LBDurationCondData > m_lbDurationDataKey
Definition: AthMonitorAlgorithm.h:351
AthMonitorAlgorithm::getGroup
const ToolHandle< GenericMonitoringTool > & getGroup(const std::string &name) const
Get a specific monitoring tool from the tool handle array.
Definition: AthMonitorAlgorithm.cxx:168
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
AthMonitorAlgorithm::DataType_t::monteCarlo
@ monteCarlo