ATLAS Offline Software
MonitoredAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "MonitoredAlg.h"
7 #include "TestTools/random.h"
8 
9 #include <vector>
10 #include <cmath>
11 
12 MonitoredAlg::MonitoredAlg(const std::string& name, ISvcLocator* pSvcLocator) :
13  AthAlgorithm(name, pSvcLocator)
14 {
15 }
16 
18 {
19  // Only try to retrieve the tool if one has been set
20  if (!m_monTool.empty()) CHECK(m_monTool.retrieve());
21 
22  return StatusCode::SUCCESS;
23 }
24 
26 class Track {
27 public:
28  Track(double eta, double phi, double pt) : m_eta(eta), m_phi(phi), m_pt(pt) {}
29  double eta() const { return m_eta; }
30  double phi() const { return m_phi; }
31  double pt() const { return m_pt; }
32 private:
33  double m_eta{0}, m_phi{0}, m_pt{0};
34 };
35 
36 
38 {
39  std::vector<Track> tracks;
40 
41  // In case you want to measure the execution time
42  auto timer = Monitored::Timer("TIME_execute");
43 
44  auto count = Monitored::Scalar<int>("nTracks", 0); // explicit type
45 
46  // Access via member
47  auto eta = Monitored::Collection("eta", tracks, &Track::eta);
48 
49  // Access via function/lambda
50  auto absphi = Monitored::Collection("AbsPhi", tracks, []( const Track& t ) { return abs(t.phi()); });
51 
52  auto mon = Monitored::Group(m_monTool, count, eta, absphi, timer);
53 
54  count = Athena_test::randi_seed (m_seed, 11, 1); // random number of tracks
55 
56  // Creating some random tracks
57  for (int i=0; i<count; ++i) {
58  float eta = Athena_test::randf_seed (m_seed, 3.0, -3.0);
60  float pt = Athena_test::randf_seed (m_seed, 100);
61  tracks.push_back(Track(eta, phi, pt));
62  }
63 
64  return StatusCode::SUCCESS;
65 }
66 
67 
68 
MonitoredAlg::initialize
StatusCode initialize()
Definition: MonitoredAlg.cxx:17
TrigDefs::Group
Group
Properties of a chain group.
Definition: GroupProperties.h:13
Track::m_eta
double m_eta
Definition: MonitoredAlg.cxx:33
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
Athena_test::randi_seed
int randi_seed(uint32_t &seed, int rmax, int rmin=0)
Generate an integer random number between rmin and rmax.
Definition: random.h:61
xAOD::JetInput::Track
@ Track
Definition: JetContainerInfo.h:61
test_pyathena.pt
pt
Definition: test_pyathena.py:11
M_PI
#define M_PI
Definition: ActiveFraction.h:11
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
XMLtoHeader.count
count
Definition: XMLtoHeader.py:84
python.utils.AtlRunQueryTimer.timer
def timer(name, disabled=False)
Definition: AtlRunQueryTimer.py:85
Track::m_phi
double m_phi
Definition: MonitoredAlg.cxx:33
Monitored::Collection
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
Definition: MonitoredCollection.h:38
MonitoredAlg::MonitoredAlg
MonitoredAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: MonitoredAlg.cxx:12
random.h
Very simple random numbers for regression testing.
lumiFormat.i
int i
Definition: lumiFormat.py:85
Track::m_pt
double m_pt
Definition: MonitoredAlg.cxx:33
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Track::Track
Track(double eta, double phi, double pt)
Definition: MonitoredAlg.cxx:28
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
AthAlgorithm
Definition: AthAlgorithm.h:47
Track::phi
double phi() const
Definition: MonitoredAlg.cxx:30
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
MonitoredAlg::execute
StatusCode execute()
Definition: MonitoredAlg.cxx:37
MonitoredAlg.h
plotBeamSpotMon.mon
mon
Definition: plotBeamSpotMon.py:66
MonitoredAlg::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: MonitoredAlg.h:22
Track::eta
double eta() const
Definition: MonitoredAlg.cxx:29
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
MonitoredAlg::m_seed
uint32_t m_seed
Definition: MonitoredAlg.h:23
Monitored::Timer
A monitored timer.
Definition: MonitoredTimer.h:32
Track::pt
double pt() const
Definition: MonitoredAlg.cxx:31
Athena_test::randf_seed
float randf_seed(uint32_t &seed, float rmax, float rmin=0)
Generate a floating-point random number between rmin and rmax.
Definition: random.h:53