The Gaudi Framework  v33r1 (b1225454)
Gaudi::Gaudi::Accumulators Namespace Reference

Namespaces

 details
 

Classes

class  AccumulatorSet
 AccumulatorSet is an Accumulator that holds a set of Accumulators templated by same Arithmetic and Atomicity and increase them altogether. More...
 
struct  Adder
 An Adder ValueHandler operator(a, b) means a += b. More...
 
struct  Adder< Arithmetic, atomicity::full >
 Adder specialization in the case of atomicity full. More...
 
struct  Adder< Arithmetic, atomicity::none >
 Adder specialization in the case of atomicity none. More...
 
struct  AveragingAccumulator
 AveragingAccumulator. More...
 
struct  AveragingCounter
 A counter aiming at computing sum and average. More...
 
struct  BaseValueHandler
 Base type for all functors used as ValuesHandler. More...
 
struct  BaseValueHandler< Arithmetic, atomicity::full >
 BaseValueHandler specialization in the case of atomicity full. More...
 
struct  BaseValueHandler< Arithmetic, atomicity::none >
 BaseValueHandler specialization in the case of atomicity none. More...
 
struct  BinomialAccumulator
 BinomialAccumulator. More...
 
struct  BinomialCounter
 A counter dealing with binomial data. More...
 
class  Buffer
 Buffer is a non atomic Accumulator which, when it goes out-of-scope, updates the underlying thread-safe Accumulator for all previous updates in one go. More...
 
struct  BufferableCounter
 An empty ancester of all counters that provides a buffer method that returns a buffer on itself. More...
 
struct  Constant
 A functor always returning the value N. More...
 
struct  CountAccumulator
 CountAccumulator. More...
 
struct  Counter
 A basic counter counting input values. More...
 
struct  Extremum
 An Extremum ValueHandler, to be reused for Minimum and Maximum operator(a, b) means if (Compare(b,a)) a = b In case of full atomicity, compare_exchange_weak is used. More...
 
struct  Extremum< Arithmetic, atomicity::full, Compare, Initial >
 Extremum specialization in the case of atomicity full. More...
 
struct  Extremum< Arithmetic, atomicity::none, Compare, Initial >
 Extremum specialization in the case of atomicity none. More...
 
struct  FalseAccumulator
 FalseAccumulator. More...
 
struct  FalseTo1
 helper functor for the FalseAccumulator More...
 
class  GenericAccumulator
 Generic Accumulator, templated by. More...
 
struct  Identity
 An Identity functor. More...
 
struct  MaxAccumulator
 MaxAccumulator. More...
 
struct  MinAccumulator
 MinAccumulator. More...
 
struct  PrintableCounter
 An empty ancester of all counters that knows how to print themselves. More...
 
struct  SigmaAccumulator
 SigmaAccumulator. More...
 
struct  SigmaCounter
 A counter aiming at computing average and sum2 / variance / standard deviation. More...
 
struct  Square
 A Square functor. More...
 
struct  SquareAccumulator
 SquareAccumulator. More...
 
struct  StatCounter
 A counter aiming at computing average and sum2 / variance / standard deviation. More...
 
struct  SumAccumulator
 SumAccumulator. More...
 
struct  TrueAccumulator
 TrueAccumulator. More...
 
struct  TrueTo1
 helper functor for the TrueAccumulator More...
 

Typedefs

template<typename T , typename = int>
using has_fetch_add_ = decltype(std::atomic< T >{}.fetch_add(0))
 type_traits for checking the presence of fetch_add in std::atomic<T> More...
 
template<typename Arithmetic , typename Result = double>
using fp_result_type = std::conditional_t< std::is_integral_v< Arithmetic >, Result, Arithmetic >
 type_trait for the result type of a floating point operation on the type Arithmetic More...
 
template<typename Arithmetic , atomicity Atomicity = atomicity::full>
using Minimum = Extremum< Arithmetic, Atomicity, std::less< Arithmetic >, std::numeric_limits< Arithmetic >::max >
 A Minimun ValueHandler operator(a, b) means a = min(a, b) In case of full atomicity, compare_exchange_weak is used. More...
 
template<typename Arithmetic , atomicity Atomicity = atomicity::full>
using Maximum = Extremum< Arithmetic, Atomicity, std::greater< Arithmetic >, std::numeric_limits< Arithmetic >::lowest >
 An Maximum ValueHandler operator(a, b) means a = max(a, b) In case of full atomicity, compare_exchange_weak is used. More...
 
template<typename Arithmetic , atomicity Atomicity = atomicity::full>
using StatAccumulator = AccumulatorSet< Arithmetic, Atomicity, SigmaAccumulator, MinAccumulator, MaxAccumulator >
 StatAccumulator. More...
 
template<typename Arithmetic = double, atomicity Atomicity = atomicity::full>
using SummingCounter = AveragingCounter< Arithmetic, Atomicity >
 

Enumerations

enum  atomicity { atomicity::none, atomicity::full }
 Defines atomicity of the accumulators. More...
 

Functions

template<class T >
auto sqrt (T d)
 forward declaration of sqrt for custom types More...
 
std::ostreamoperator<< (std::ostream &s, const PrintableCounter &counter)
 external printout operator to a stream type More...
 
MsgStreamoperator<< (MsgStream &s, const PrintableCounter &counter)
 

Variables

template<typename T >
constexpr bool has_fetch_add_v = Gaudi::cpp17::is_detected_v<has_fetch_add_, T>
 

Typedef Documentation

◆ fp_result_type

template<typename Arithmetic , typename Result = double>
using Gaudi::Gaudi::Accumulators::fp_result_type = typedef std::conditional_t<std::is_integral_v<Arithmetic>, Result, Arithmetic>

type_trait for the result type of a floating point operation on the type Arithmetic

Definition at line 217 of file Accumulators.h.

◆ has_fetch_add_

template<typename T , typename = int>
using Gaudi::Gaudi::Accumulators::has_fetch_add_ = typedef decltype( std::atomic<T>{}.fetch_add( 0 ) )

type_traits for checking the presence of fetch_add in std::atomic<T>

Definition at line 209 of file Accumulators.h.

◆ Maximum

template<typename Arithmetic , atomicity Atomicity = atomicity::full>
using Gaudi::Gaudi::Accumulators::Maximum = typedef Extremum<Arithmetic, Atomicity, std::greater<Arithmetic>, std::numeric_limits<Arithmetic>::lowest>

An Maximum ValueHandler operator(a, b) means a = max(a, b) In case of full atomicity, compare_exchange_weak is used.

Definition at line 334 of file Accumulators.h.

◆ Minimum

template<typename Arithmetic , atomicity Atomicity = atomicity::full>
using Gaudi::Gaudi::Accumulators::Minimum = typedef Extremum<Arithmetic, Atomicity, std::less<Arithmetic>, std::numeric_limits<Arithmetic>::max>

A Minimun ValueHandler operator(a, b) means a = min(a, b) In case of full atomicity, compare_exchange_weak is used.

Definition at line 327 of file Accumulators.h.

◆ StatAccumulator

template<typename Arithmetic , atomicity Atomicity = atomicity::full>
using Gaudi::Gaudi::Accumulators::StatAccumulator = typedef AccumulatorSet<Arithmetic, Atomicity, SigmaAccumulator, MinAccumulator, MaxAccumulator>

StatAccumulator.

A StatAccumulator is an Accumulator able to compute an average, variance/rms and min/max

See also
Gaudi::Accumulators for detailed documentation

Definition at line 604 of file Accumulators.h.

◆ SummingCounter

template<typename Arithmetic = double, atomicity Atomicity = atomicity::full>
using Gaudi::Gaudi::Accumulators::SummingCounter = typedef AveragingCounter<Arithmetic, Atomicity>

Definition at line 737 of file Accumulators.h.

Enumeration Type Documentation

◆ atomicity

enum Gaudi::Gaudi::Accumulators::atomicity
strong

Defines atomicity of the accumulators.

Enumerator
none 
full 

Definition at line 168 of file Accumulators.h.

Function Documentation

◆ operator<<() [1/2]

std::ostream& Gaudi::Gaudi::Accumulators::operator<< ( std::ostream s,
const PrintableCounter counter 
)
inline

external printout operator to a stream type

Definition at line 668 of file Accumulators.h.

668 { return counter.print( s ); }
string s
Definition: gaudirun.py:328

◆ operator<<() [2/2]

MsgStream& Gaudi::Gaudi::Accumulators::operator<< ( MsgStream s,
const PrintableCounter counter 
)
inline

Definition at line 669 of file Accumulators.h.

669 { return counter.print( s ); }
string s
Definition: gaudirun.py:328

◆ sqrt()

template<class T >
auto Gaudi::Gaudi::Accumulators::sqrt ( d)

forward declaration of sqrt for custom types

Variable Documentation

◆ has_fetch_add_v

template<typename T >
constexpr bool Gaudi::Gaudi::Accumulators::has_fetch_add_v = Gaudi::cpp17::is_detected_v<has_fetch_add_, T>
inline

Definition at line 211 of file Accumulators.h.