ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Control
AthenaMonitoringKernel
AthenaMonitoringKernel
MonitoredScalar.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef AthenaMonitoringKernel_MonitoredScalar_h
6
#define AthenaMonitoringKernel_MonitoredScalar_h
7
8
9
#include <vector>
10
11
#include "
AthenaMonitoringKernel/IMonitoredVariable.h
"
12
13
14
namespace
Monitored
{
15
34
template
<
class
T>
class
Scalar
:
public
IMonitoredVariable
{
35
public
:
36
static_assert
(std::is_convertible<T, double>::value or std::is_constructible<std::string, T>::value,
"Conversion of scalar template type to double or string is impossible"
);
37
40
50
Scalar
(std::string
name
,
const
T& defaultValue = {}) :
51
IMonitoredVariable
(
std
::move(
name
)),
52
m_value
(defaultValue)
53
{}
54
65
Scalar
(std::string
name
,
const
T& defaultValue, std::function<
double
(
const
T&)> valueTransform) :
66
IMonitoredVariable
(
std
::move(
name
)),
67
m_value
(defaultValue),
68
m_valueTransform
(
std
::move(valueTransform))
69
{}
70
80
Scalar
(std::string
name
, std::function<T()> generator) :
81
IMonitoredVariable
(
std
::move(
name
)),
82
m_valueGenerator
(
std
::move(generator))
83
{}
84
86
87
Scalar
(
Scalar
&&) =
default
;
88
Scalar
(
Scalar
const
&) =
delete
;
89
90
Scalar
&
operator=
(
Scalar
const
&) =
delete
;
91
// cppcheck-suppress passedByValue
92
T
operator=
(T value)
93
{
94
m_value
= value;
95
return
value;
96
}
97
98
operator
const
T&()
const
{
return
m_value
; }
99
operator
T&() {
return
m_value
; }
100
101
// string concatenation
102
friend
std::string
operator+
(
const
Scalar
& lhs,
const
std::string& rhs) {
103
return
lhs.
m_value
+ rhs;
104
}
105
106
friend
std::string
operator+
(
const
std::string& lhs,
const
Scalar
& rhs) {
107
return
lhs + rhs.
m_value
;
108
}
109
110
virtual
double
get
(
size_t
)
const override
{
111
if
constexpr
(std::is_convertible_v<double, T>) {
112
return
(
m_valueGenerator
?
static_cast<
double
>
(
m_valueGenerator
()) :
113
m_valueTransform
?
m_valueTransform
(
m_value
) :
static_cast<
double
>
(
m_value
));
114
}
115
else
return
0;
116
}
117
118
virtual
std::string
getString
(
size_t
)
const override
{
119
if
constexpr
(std::is_constructible_v<std::string, T>) {
120
return
(
m_valueGenerator
?
m_valueGenerator
() :
m_value
);
121
}
122
else
return
{};
123
}
124
125
virtual
bool
hasStringRepresentation
()
const override
{
126
return
std::is_constructible<std::string, T>::value;
127
}
128
129
virtual
size_t
size
()
const override
{
130
return
1;
131
}
132
133
private
:
134
T
m_value
{};
135
std::function<double(
const
T&)>
m_valueTransform
;
136
std::function<T()>
m_valueGenerator
;
137
};
138
139
}
// namespace Monitored
140
141
#endif
/* AthenaMonitoringKernel_MonitoredScalar_h */
IMonitoredVariable.h
Monitored::IMonitoredVariable
Definition
IMonitoredVariable.h:14
Monitored::IMonitoredVariable::name
const std::string & name() const
Definition
IMonitoredVariable.h:19
Monitored::IMonitoredVariable::IMonitoredVariable
IMonitoredVariable(std::string name)
Definition
IMonitoredVariable.h:27
Monitored::Scalar::m_value
T m_value
Definition
MonitoredScalar.h:134
Monitored::Scalar::operator+
friend std::string operator+(const std::string &lhs, const Scalar &rhs)
Definition
MonitoredScalar.h:106
Monitored::Scalar::Scalar
Scalar(std::string name, std::function< T()> generator)
Scalar with generator function to retrieve the value.
Definition
MonitoredScalar.h:80
Monitored::Scalar::size
virtual size_t size() const override
gives size of vector representation
Definition
MonitoredScalar.h:129
Monitored::Scalar::Scalar
Scalar(Scalar &&)=default
Monitored::Scalar::m_valueGenerator
std::function< T()> m_valueGenerator
Definition
MonitoredScalar.h:136
Monitored::Scalar::operator+
friend std::string operator+(const Scalar &lhs, const std::string &rhs)
Definition
MonitoredScalar.h:102
Monitored::Scalar::operator=
T operator=(T value)
Definition
MonitoredScalar.h:92
Monitored::Scalar::m_valueTransform
std::function< double(const T &)> m_valueTransform
Definition
MonitoredScalar.h:135
Monitored::Scalar::getString
virtual std::string getString(size_t) const override
Definition
MonitoredScalar.h:118
Monitored::Scalar::Scalar
Scalar(std::string name, const T &defaultValue, std::function< double(const T &)> valueTransform)
Scalar with default value and optional transformation applied before filling.
Definition
MonitoredScalar.h:65
Monitored::Scalar::get
virtual double get(size_t) const override
Definition
MonitoredScalar.h:110
Monitored::Scalar::operator=
Scalar & operator=(Scalar const &)=delete
Monitored::Scalar::Scalar
Scalar(std::string name, const T &defaultValue={})
Scalar with optional default value.
Definition
MonitoredScalar.h:50
Monitored::Scalar::hasStringRepresentation
virtual bool hasStringRepresentation() const override
indcates that the stored content can be converted to strings
Definition
MonitoredScalar.h:125
Monitored::Scalar::Scalar
Scalar(Scalar const &)=delete
Monitored
Generic monitoring tool for athena components.
Definition
GenericMonitoringTool.h:28
std
STL namespace.
Generated on
for ATLAS Offline Software by
1.17.0