ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Control
AthenaExamples
AthExMonitored
src
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
"
6
#include "
AthenaMonitoringKernel/Monitored.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
17
StatusCode
MonitoredAlg::initialize
()
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
37
StatusCode
MonitoredAlg::execute
(
const
EventContext&
/*ctx*/
)
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);
59
float
phi
=
Athena_test::randf_seed
(
m_seed
,
M_PI
, -
M_PI
);
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
M_PI
#define M_PI
Definition
ActiveFraction.h:14
eta
Scalar eta() const
pseudorapidity method
Definition
AmgMatrixBasePlugin.h:83
phi
Scalar phi() const
phi method
Definition
AmgMatrixBasePlugin.h:67
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition
Control/AthenaKernel/AthenaKernel/errorcheck.h:422
MonitoredAlg.h
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
AthAlgorithm::AthAlgorithm
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Definition
AthAlgorithm.cxx:10
MonitoredAlg::execute
StatusCode execute(const EventContext &ctx)
Execute method.
Definition
MonitoredAlg.cxx:37
MonitoredAlg::m_seed
uint32_t m_seed
Definition
MonitoredAlg.h:23
MonitoredAlg::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition
MonitoredAlg.h:22
MonitoredAlg::MonitoredAlg
MonitoredAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition
MonitoredAlg.cxx:12
MonitoredAlg::initialize
StatusCode initialize()
Definition
MonitoredAlg.cxx:17
Monitored::Group
Group of local monitoring quantities and retain correlation when filling histograms
Definition
MonitoredGroup.h:53
Monitored::Scalar
Declare a monitored scalar variable.
Definition
MonitoredScalar.h:34
Monitored::Timer
A monitored timer.
Definition
MonitoredTimer.h:32
Track::m_phi
double m_phi
Definition
MonitoredAlg.cxx:33
Track::eta
double eta() const
Definition
MonitoredAlg.cxx:29
Track::m_eta
double m_eta
Definition
MonitoredAlg.cxx:33
Track::m_pt
double m_pt
Definition
MonitoredAlg.cxx:33
Track::phi
double phi() const
Definition
MonitoredAlg.cxx:30
Track::Track
Track(double eta, double phi, double pt)
Definition
MonitoredAlg.cxx:28
Track::pt
double pt() const
Definition
MonitoredAlg.cxx:31
count
int count(std::string s, const std::string ®x)
count how many occurances of a regx are in a string
Definition
hcg.cxx:148
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
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
Monitored::Collection
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
Definition
MonitoredCollection.h:38
Track
Definition
TriggerChamberClusterOnTrackCreator.h:19
random.h
Very simple random numbers for regression testing.
Generated on
for ATLAS Offline Software by
1.17.0