ATLAS Offline Software
Loading...
Searching...
No Matches
Monitored::Scalar< T > Class Template Reference

Declare a monitored scalar variable. More...

#include <MonitoredScalar.h>

Inheritance diagram for Monitored::Scalar< T >:
Collaboration diagram for Monitored::Scalar< T >:

Public Member Functions

 Scalar (Scalar &&)=default
 Scalar (Scalar const &)=delete
Scalaroperator= (Scalar const &)=delete
operator= (T value)
 operator const T & () const
 operator T& ()
virtual double get (size_t) const override
virtual std::string getString (size_t) const override
virtual bool hasStringRepresentation () const override
 indcates that the stored content can be converted to strings
virtual size_t size () const override
 gives size of vector representation
const std::string & name () const
Client API
 Scalar (std::string name, const T &defaultValue={})
 Scalar with optional default value.
 Scalar (std::string name, const T &defaultValue, std::function< double(const T &)> valueTransform)
 Scalar with default value and optional transformation applied before filling.
 Scalar (std::string name, std::function< T()> generator)
 Scalar with generator function to retrieve the value.

Public Attributes

friend MonitoredGroup

Private Attributes

m_value {}
std::function< double(const T &)> m_valueTransform
std::function< T()> m_valueGenerator
const std::string m_name

Friends

std::string operator+ (const Scalar &lhs, const std::string &rhs)
std::string operator+ (const std::string &lhs, const Scalar &rhs)

Detailed Description

template<class T>
class Monitored::Scalar< T >

Declare a monitored scalar variable.

A monitored Scalar behaves similar to a regular builtin type:

Template Parameters
TType of scalar (convertable to double or string)

Examples:

auto eta = Monitored::Scalar( "Eta", -3. );
eta = 0.6;
auto count = Monitored::Scalar<float>( "Count", 0 );
bool comparisonResult = count == count;
count += 1;
count++;
--count;
count *= 3;

In case of std::string an alphanumeric histogram fill will be performed:

auto det = Monitored::Scalar<std::string>( "DetID", "SCT" );
Monitored::Group(monTool, det);
det = "PIX";
Monitored::Group(monTool, det);
See also
Monitored::Collection
Monitored::Timer

Definition at line 34 of file MonitoredScalar.h.

Constructor & Destructor Documentation

◆ Scalar() [1/5]

template<class T>
Monitored::Scalar< T >::Scalar ( std::string name,
const T & defaultValue = {} )
inline

Scalar with optional default value.

Parameters
nameName of monitored quantity
defaultValueOptional default value

Example

auto eta = Monitored::Scalar<double>( "Eta" ); //explicit double
auto phi = Monitored::Scalar( "Phi", -99.0 ); //deduced double
auto group = Monitored::Group( monTool, eta, phi );
phi = 0.1;
eta = -0.2;

Definition at line 50 of file MonitoredScalar.h.

50 {}) :
53 {}
const std::string & name() const
Declare a monitored scalar variable.

◆ Scalar() [2/5]

template<class T>
Monitored::Scalar< T >::Scalar ( std::string name,
const T & defaultValue,
std::function< double(const T &)> valueTransform )
inline

Scalar with default value and optional transformation applied before filling.

Parameters
nameName of monitored quantity
defaultValueDefault value assigned to the monitored scalar
valueTransformOptional transformation applied to value before filling

Example

// Take absolute value before filling
auto phi = Monitored::Scalar<double>( "Phi", -3.0, [](double d){ return fabs(d); } );

Definition at line 65 of file MonitoredScalar.h.

65 :
69 {}
std::function< double(const T &)> m_valueTransform

◆ Scalar() [3/5]

template<class T>
Monitored::Scalar< T >::Scalar ( std::string name,
std::function< T()> generator )
inline

Scalar with generator function to retrieve the value.

Parameters
nameName of monitored quantity
generatorFunction returning the monitored value

Example

std::vector<float> v{1,2,3};
auto eta = Monitored::Scalar<int>( "Eta", [&](){ return v.size(); } );

Definition at line 80 of file MonitoredScalar.h.

◆ Scalar() [4/5]

template<class T>
Monitored::Scalar< T >::Scalar ( Scalar< T > && )
default

◆ Scalar() [5/5]

template<class T>
Monitored::Scalar< T >::Scalar ( Scalar< T > const & )
delete

Member Function Documentation

◆ get()

template<class T>
virtual double Monitored::Scalar< T >::get ( size_t ) const
inlineoverridevirtual

Implements Monitored::IMonitoredVariable.

Definition at line 110 of file MonitoredScalar.h.

110 {
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 }

◆ getString()

template<class T>
virtual std::string Monitored::Scalar< T >::getString ( size_t ) const
inlineoverridevirtual

Implements Monitored::IMonitoredVariable.

Definition at line 118 of file MonitoredScalar.h.

118 {
121 }
122 else return {};
123 }

◆ hasStringRepresentation()

template<class T>
virtual bool Monitored::Scalar< T >::hasStringRepresentation ( ) const
inlineoverridevirtual

indcates that the stored content can be converted to strings

Implements Monitored::IMonitoredVariable.

Definition at line 125 of file MonitoredScalar.h.

◆ name()

const std::string & Monitored::IMonitoredVariable::name ( ) const
inlineinherited

Definition at line 19 of file IMonitoredVariable.h.

19{ return m_name; }

◆ operator const T &()

template<class T>
Monitored::Scalar< T >::operator const T & ( ) const
inline

Definition at line 98 of file MonitoredScalar.h.

98{ return m_value; }

◆ operator T&()

template<class T>
Monitored::Scalar< T >::operator T& ( )
inline

Definition at line 99 of file MonitoredScalar.h.

99{ return m_value; }

◆ operator=() [1/2]

template<class T>
Scalar & Monitored::Scalar< T >::operator= ( Scalar< T > const & )
delete

◆ operator=() [2/2]

template<class T>
T Monitored::Scalar< T >::operator= ( T value)
inline

Definition at line 92 of file MonitoredScalar.h.

93 {
94 m_value = value;
95 return value;
96 }

◆ size()

template<class T>
virtual size_t Monitored::Scalar< T >::size ( ) const
inlineoverridevirtual

gives size of vector representation

Implements Monitored::IMonitoredVariable.

Definition at line 129 of file MonitoredScalar.h.

129 {
130 return 1;
131 }

◆ operator+ [1/2]

template<class T>
std::string operator+ ( const Scalar< T > & lhs,
const std::string & rhs )
friend

Definition at line 102 of file MonitoredScalar.h.

102 {
103 return lhs.m_value + rhs;
104 }

◆ operator+ [2/2]

template<class T>
std::string operator+ ( const std::string & lhs,
const Scalar< T > & rhs )
friend

Definition at line 106 of file MonitoredScalar.h.

106 {
107 return lhs + rhs.m_value;
108 }

Member Data Documentation

◆ m_name

const std::string Monitored::IMonitoredVariable::m_name
privateinherited

Definition at line 31 of file IMonitoredVariable.h.

◆ m_value

template<class T>
T Monitored::Scalar< T >::m_value {}
private

Definition at line 134 of file MonitoredScalar.h.

134{};

◆ m_valueGenerator

template<class T>
std::function<T()> Monitored::Scalar< T >::m_valueGenerator
private

Definition at line 136 of file MonitoredScalar.h.

◆ m_valueTransform

template<class T>
std::function<double(const T&)> Monitored::Scalar< T >::m_valueTransform
private

Definition at line 135 of file MonitoredScalar.h.

◆ MonitoredGroup

friend Monitored::IMonitoredVariable::MonitoredGroup
inherited

Definition at line 16 of file IMonitoredVariable.h.


The documentation for this class was generated from the following file: