The Gaudi Framework  v41r0 (bdbe7744)
Loading...
Searching...
No Matches
Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler > Class Template Reference

Generic Accumulator, templated by. More...

#include </builds/gaudi/Gaudi/GaudiKernel/include/Gaudi/Accumulators.h>

Collaboration diagram for Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >:

Public Types

using InputType = InputTypeT
using OutputType = std::decay_t<std::invoke_result_t<OutputTransform, InnerType>>
using InternalType = InnerType
using JSONStringEntriesType = std::string

Public Member Functions

GenericAccumulator operator+= (const InputType by)
 GenericAccumulator ()=default
template<atomicity ato, typename VH>
 GenericAccumulator (construct_empty_t, const GenericAccumulator< InputType, InnerType, ato, InputTransform, OutputTransform, VH > &)
 constructor of an empty GenericAccumulator, copying the (non existent) config from another GenericAccumulator
template<typename... Args>
 GenericAccumulator (std::in_place_t, Args &&... args)
 GenericAccumulator (const GenericAccumulator &other)
GenericAccumulator & operator= (const GenericAccumulator &other)
OutputType value () const
void reset ()
template<atomicity ato, typename VH>
void mergeAndReset (GenericAccumulator< InputType, InnerType, ato, InputTransform, OutputTransform, VH > &other)
template<atomicity ato, typename VH>
void operator+ (GenericAccumulator< InputType, InnerType, ato, InputTransform, OutputTransform, VH > &&other)

Protected Member Functions

 GenericAccumulator (InnerType in)
auto rawValue () const
void reset (InnerType in)

Static Protected Member Functions

static InnerType extractJSONData (const nlohmann::json &j, const JSONStringEntriesType &entries)

Private Attributes

ValueHandler::InternalType m_value { ValueHandler::DefaultValue() }

Friends

template<typename, typename, atomicity, typename, typename, typename>
class GenericAccumulator

Detailed Description

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
class Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >

Generic Accumulator, templated by.

  • InputType : the type of input data coming to this Accumulator
  • InnerType : the type of the accumulated value. May be different from InputType, e.g. for a pure counter where InputType is double and InnerType is unsigned long
  • Atomicity : the desired atomicity : none or full
  • InputTransform : a function to be applied to the values pushed in
    • default to identity
    • other typical functions : square for a sumn of squares, constant 1 for a count
  • OutputTransform : a function to be applied to returned value
    • default to identity
    • one could think of sqrt for and RMS accumulator, InputTransform begin square
  • ValueHandler : the handler of the internal value, that is a functor providing :
    • the way to increment the internal value (e.g. +, min, max) as the operator()
    • the type of the internal value (typically Arithmetic or std::atomic<Arithmetic>)
    • the default value for the internal type

Definition at line 480 of file Accumulators.h.

Member Typedef Documentation

◆ InputType

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
using Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::InputType = InputTypeT

Definition at line 485 of file Accumulators.h.

◆ InternalType

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
using Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::InternalType = InnerType

Definition at line 487 of file Accumulators.h.

◆ JSONStringEntriesType

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
using Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::JSONStringEntriesType = std::string

Definition at line 488 of file Accumulators.h.

◆ OutputType

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
using Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::OutputType = std::decay_t<std::invoke_result_t<OutputTransform, InnerType>>

Definition at line 486 of file Accumulators.h.

Constructor & Destructor Documentation

◆ GenericAccumulator() [1/5]

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::GenericAccumulator ( )
default

◆ GenericAccumulator() [2/5]

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
template<atomicity ato, typename VH>
Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::GenericAccumulator ( construct_empty_t ,
const GenericAccumulator< InputType, InnerType, ato, InputTransform, OutputTransform, VH > &  )
inline

constructor of an empty GenericAccumulator, copying the (non existent) config from another GenericAccumulator

Definition at line 496 of file Accumulators.h.

◆ GenericAccumulator() [3/5]

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
template<typename... Args>
Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::GenericAccumulator ( std::in_place_t ,
Args &&... args )
inline

Definition at line 500 of file Accumulators.h.

500: m_value( std::forward<Args>( args )... ) {}
Generic Accumulator, templated by.
ValueHandler::InternalType m_value

◆ GenericAccumulator() [4/5]

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::GenericAccumulator ( const GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler > & other)
inline

Definition at line 501 of file Accumulators.h.

◆ GenericAccumulator() [5/5]

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::GenericAccumulator ( InnerType in)
inlineprotected

Definition at line 518 of file Accumulators.h.

518: m_value( std::move( in ) ) {}

Member Function Documentation

◆ extractJSONData()

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
InnerType Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::extractJSONData ( const nlohmann::json & j,
const JSONStringEntriesType & entries )
inlinestaticprotected

Definition at line 521 of file Accumulators.h.

521 {
522 return j.at( entries ).get<InnerType>();
523 }

◆ mergeAndReset()

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
template<atomicity ato, typename VH>
void Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::mergeAndReset ( GenericAccumulator< InputType, InnerType, ato, InputTransform, OutputTransform, VH > & other)
inline

Definition at line 509 of file Accumulators.h.

◆ operator+()

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
template<atomicity ato, typename VH>
void Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::operator+ ( GenericAccumulator< InputType, InnerType, ato, InputTransform, OutputTransform, VH > && other)
inline

Definition at line 513 of file Accumulators.h.

513 {
515 }

◆ operator+=()

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
GenericAccumulator Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::operator+= ( const InputType by)
inline

Definition at line 489 of file Accumulators.h.

489 {
491 return *this;
492 }

◆ operator=()

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
GenericAccumulator & Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::operator= ( const GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler > & other)
inline

Definition at line 502 of file Accumulators.h.

502 {
504 return *this;
505 }

◆ rawValue()

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
auto Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::rawValue ( ) const
inlineprotected

Definition at line 519 of file Accumulators.h.

519{ return ValueHandler::getValue( m_value ); }

◆ reset() [1/2]

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
void Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::reset ( )
inline

◆ reset() [2/2]

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
void Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::reset ( InnerType in)
inlineprotected

Definition at line 520 of file Accumulators.h.

520{ m_value = std::move( in ); }

◆ value()

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
OutputType Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::value ( ) const
inline

Definition at line 506 of file Accumulators.h.

◆ GenericAccumulator

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
template<typename, typename, atomicity, typename, typename, typename>
friend class GenericAccumulator
friend

Definition at line 482 of file Accumulators.h.

Member Data Documentation

◆ m_value

template<typename InputTypeT, typename InnerType, atomicity Atomicity = atomicity::full, typename InputTransform = Identity, typename OutputTransform = Identity, typename ValueHandler = Adder<InnerType, Atomicity>>
ValueHandler::InternalType Gaudi::Accumulators::GenericAccumulator< InputTypeT, InnerType, Atomicity, InputTransform, OutputTransform, ValueHandler >::m_value { ValueHandler::DefaultValue() }
private

Definition at line 526 of file Accumulators.h.


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