The Gaudi Framework  v30r3 (a5ef0a68)
Gaudi::Accumulators Namespace Reference

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
 
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
 An 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 T >
using has_fetch_add = typename Gaudi::cpp17::is_detected< has_fetch_add_, T >::value_t
 
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

std::ostreamoperator<< (std::ostream &stream, const PrintableCounter &counter)
 external printout operator to std::ostream More...
 

Typedef Documentation

template<typename T >
using Gaudi::Accumulators::has_fetch_add = typedef typename Gaudi::cpp17::is_detected<has_fetch_add_, T>::value_t

Definition at line 190 of file Counters.h.

template<typename T , typename = int>
using 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 188 of file Counters.h.

template<typename Arithmetic , atomicity Atomicity = atomicity::full>
using 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 336 of file Counters.h.

template<typename Arithmetic , atomicity Atomicity = atomicity::full>
using 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 329 of file Counters.h.

template<typename Arithmetic , atomicity Atomicity = atomicity::full>
using 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

Definition at line 582 of file Counters.h.

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

Definition at line 703 of file Counters.h.

Enumeration Type Documentation

enum Gaudi::Accumulators::atomicity
strong

Defines atomicity of the accumulators.

Enumerator
none 
full 

Definition at line 148 of file Counters.h.

Function Documentation

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

external printout operator to std::ostream

Definition at line 639 of file Counters.h.

640  {
641  return counter.print( stream );
642  }