| The Gaudi Framework v32r1 (f65d50dc)

Public Member Functions | Private Member Functions | List of all members
Gaudi::Functional::MultiScalarTransformer< ScalarOp, std::tuple< Out... >(const In &...), Traits_ > Class Template Reference

`#include <GaudiAlg/ScalarTransformer.h>`

Inheritance diagram for Gaudi::Functional::MultiScalarTransformer< ScalarOp, std::tuple< Out... >(const In &...), Traits_ >:
[legend]
Collaboration diagram for Gaudi::Functional::MultiScalarTransformer< ScalarOp, std::tuple< Out... >(const In &...), Traits_ >:
[legend]

## Public Member Functions
std::tuple< Out... > | operator() (const In &... in) const override final
| The main operator. More...

## Private Member Functions
const ScalarOp & | scalarOp () const
| Access the scalar operator. More...

## Detailed Description

### template<typename ScalarOp, typename... Out, typename... In, typename Traits_>
class Gaudi::Functional::MultiScalarTransformer< ScalarOp, std::tuple< Out... >(const In &...), Traits_ >

Definition at line 41 of file ScalarTransformer.h.

## Member Function Documentation

## ◆ operator()()

template<typename ScalarOp , typename... Out, typename... In, typename Traits_ >

std::tuple<Out...> Gaudi::Functional::MultiScalarTransformer< ScalarOp, std::tuple< Out... >(const In &...), Traits_ >::operator() | ( | const In &... | in | ) | const
| inline final override

The main operator.

Call the scalar operator with the objects obtained from the given indata, and invoke insert with it (unless the resulting type is an optional, and the optional is not engaged)

Definition at line 51 of file ScalarTransformer.h.

51 {
52 const auto inrange = details::zip::const_range( in... );
53 std::tuple<Out...> out;
54 std::apply( [sz = inrange.size()]( auto&&... o ) { ( o.reserve( sz ), ... ); }, out );
55 auto& scalar = scalarOp();
56 for ( const auto&& indata : inrange ) {
57 std::apply(
58 [&scalar, &indata]( auto&... out ) {
62 details::invoke_optionally(
63 [&out...]( auto&& outdata ) {
64 std::apply(
65 [&out...]( auto&&... outdata1 ) {
66 ( details::insert( out, std::forward<decltype( outdata1 )>( outdata1 ) ), ... );
67 },
68 std::forward<decltype( outdata )>( outdata ) );
69 },
70 std::apply( [&scalar]( const auto&... args ) { return scalar( details::deref( args )... ); },
71 indata ) );
72 },
73 out );
74 }
75 details::applyPostProcessing( scalar, out );
76 return out;
77 }
Gaudi::Functional::MultiScalarTransformer< ScalarOp, std::tuple< Out... >(const In &...), Traits_ >::scalarOp
const ScalarOp & scalarOp() const
Access the scalar operator.
Definition: ScalarTransformer.h:45
Gaudi::Functional::details::deref
constexpr struct Gaudi::Functional::details::deref_t deref
Gaudi::Functional::details::invoke_optionally
constexpr struct Gaudi::Functional::details::invoke_optionally_t invoke_optionally
gaudirun.args
args
Definition: gaudirun.py:307
Gaudi::Functional::details::applyPostProcessing
constexpr void applyPostProcessing(const Fun &, Container &, Args...)
Definition: FunctionalDetails.h:560
Gaudi::Functional::details::zip::const_range
decltype(auto) const_range(Args &&... args)
Zips multiple containers together to form a single const range.
Definition: FunctionalDetails.h:80
std::tuple
std::forward
T forward(T... args)

## ◆ scalarOp()

template<typename ScalarOp , typename... Out, typename... In, typename Traits_ >

const ScalarOp& Gaudi::Functional::MultiScalarTransformer< ScalarOp, std::tuple< Out... >(const In &...), Traits_ >::scalarOp | ( |  | ) | const
| inline private

Access the scalar operator.

Definition at line 45 of file ScalarTransformer.h.

45 { return static_cast<const ScalarOp&>( *this ); }

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

- GaudiAlg/GaudiAlg/ScalarTransformer.h