| The Gaudi Framework v29r0 (ff2e7097)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Types | Public Member Functions | Static Public Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ > Class Template Referenceabstract

`#include <GaudiAlg/SplittingTransformer.h>`

Inheritance diagram for Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >:
[legend]
Collaboration diagram for Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >:
[legend]

## Public Types
using | KeyValue = std::pair< std::string, std::string >
using | KeyValues = std::pair< std::string, std::vector< std::string >>
Public Types inherited from Gaudi::Functional::details::DataHandleMixin< void, std::tuple< In... >, Traits_ >
using | KeyValue = std::pair< std::string, std::string >

## Public Member Functions
| SplittingTransformer (const std::string &name, ISvcLocator *locator, const std::array< KeyValue, N > &inputs, const KeyValues &output)
| SplittingTransformer (const std::string &name, ISvcLocator *locator, const KeyValue &input, const KeyValues &output)
const std::string & | outputLocation (unsigned int n) const
unsigned int | outputLocationSize () const
StatusCode | execute () override final
virtual vector_of_< Out > | operator() (const In &...) const =0
Public Member Functions inherited from Gaudi::Functional::details::DataHandleMixin< void, std::tuple< In... >, Traits_ >
| DataHandleMixin (const std::string &name, ISvcLocator *pSvcLocator, const std::array< KeyValue, N_in > &inputs)
| DataHandleMixin (const std::string &name, ISvcLocator *locator, const KeyValue &input)
template<std::size_t N = 0>
const std::string & | inputLocation () const
unsigned int | inputLocationSize () const

## Static Public Attributes
static constexpr std::size_t | N = sizeof...( In )
Static Public Attributes inherited from Gaudi::Functional::details::DataHandleMixin< void, std::tuple< In... >, Traits_ >
static constexpr std::size_t | N_in = sizeof...( In )

## Private Types
using | base_class = details::DataHandleMixin< void, std::tuple< In... >, Traits_ >
template<typename T >
using | OutputHandle = details::OutputHandle_t< Traits_, details::remove_optional_t< T >>

## Private Member Functions
template<std::size_t... I>
StatusCode | invoke (std::index_sequence< I... >)

## Private Attributes
std::vector< std::string > | m_outputLocations
std::vector< OutputHandle< Out > > | m_outputs

## Additional Inherited Members
Protected Attributes inherited from Gaudi::Functional::details::DataHandleMixin< void, std::tuple< In... >, Traits_ >
std::tuple< details::InputHandle_t< Traits_, In >... > | m_inputs

## Detailed Description

### template<typename Out, typename... In, typename Traits_>
class Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >

Definition at line 26 of file SplittingTransformer.h.

## Member Typedef Documentation

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

using Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::base_class = details::DataHandleMixin<void, std::tuple<In...>, Traits_>
| private

Definition at line 29 of file SplittingTransformer.h.

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

using Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::KeyValue = std::pair<std::string, std::string>

Definition at line 33 of file SplittingTransformer.h.

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

using Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::KeyValues = std::pair<std::string, std::vector<std::string>>

Definition at line 34 of file SplittingTransformer.h.

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

using Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::OutputHandle = details::OutputHandle_t<Traits_, details::remove_optional_t<T>>
| private

Definition at line 79 of file SplittingTransformer.h.

## Constructor & Destructor Documentation

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

Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::SplittingTransformer | ( | const std::string & | name,
|  | ISvcLocator * | locator,
|  | const std::array< KeyValue, N > & | inputs,
|  | const KeyValues & | output
| ) |  |

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

Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::SplittingTransformer | ( | const std::string & | name,
|  | ISvcLocator * | locator,
|  | const KeyValue & | input,
|  | const KeyValues & | output
| ) |  |
| inline

Definition at line 39 of file SplittingTransformer.h.

41 : SplittingTransformer( name, locator, std::array<KeyValue, 1>{input}, output )
42 {
43 static_assert( N == 1, "single input argument requires single input signature" );
44 }
gaudirun.output
output
Definition: gaudirun.py:404
Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::N
static constexpr std::size_t N
Definition: SplittingTransformer.h:32
std::array
STL class.
Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::SplittingTransformer
SplittingTransformer(const std::string &name, ISvcLocator *locator, const std::array< KeyValue, N > &inputs, const KeyValues &output)

## Member Function Documentation

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

StatusCode Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::execute | ( |  | ) |
| inline final override

Definition at line 51 of file SplittingTransformer.h.

51 { return invoke( std::index_sequence_for<In...>{} ); }
Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::invoke
StatusCode invoke(std::index_sequence< I... >)
Definition: SplittingTransformer.h:60
template<typename Out , typename... In, typename Traits_ >
template<std::size_t... I>

StatusCode Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::invoke | ( | std::index_sequence< I... > |  | ) |
| inline private

Definition at line 60 of file SplittingTransformer.h.

61 {
62 try {
63 // TODO:FIXME: how does operator() know the number and order of expected outputs?
64 using details::as_const;
65 auto out = as_const( *this )( as_const( *std::get<I>( this->m_inputs ).get() )... );
66 if ( out.size() != m_outputs.size() ) {
67 throw GaudiException( "Error during transform: expected " + std::to_string( m_outputs.size() ) +
68 " containers, got " + std::to_string( out.size() ) + " instead",
69 this->name(), StatusCode::FAILURE );
70 }
71 for ( unsigned i = 0; i != out.size(); ++i ) details::put( m_outputs[i], std::move( out[i] ) );
72 } catch ( GaudiException& e ) {
73 ( e.code() ? this->warning() : this->error() ) << e.message() << endmsg;
74 return e.code();
75 }
76 return StatusCode::SUCCESS;
77 }
StatusCode::SUCCESS
Definition: StatusCode.h:31
Gaudi::Functional::details::as_const
constexpr std::add_const< T >::type & as_const(T &t) noexcept
Definition: FunctionalDetails.h:104
GaudiException
Define general base for Gaudi exception.
Definition: GaudiException.h:22
gaudiComponentHelp.name
name
Definition: gaudiComponentHelp.py:32
StatusCode::FAILURE
Definition: StatusCode.h:31
std::to_string
T to_string(T...args)
GaudiException::code
virtual const StatusCode & code() const
StatusCode for Exception.
Definition: GaudiException.h:119
Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::m_outputs
std::vector< OutputHandle< Out > > m_outputs
Definition: SplittingTransformer.h:81
std::move
T move(T...args)
std::vector::size
T size(T...args)
Gaudi::Functional::details::DataHandleMixin< void, std::tuple< In... >, Traits_ >::m_inputs
std::tuple< details::InputHandle_t< Traits_, In >... > m_inputs
Definition: FunctionalDetails.h:537
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:209
Gaudi::Functional::details::put
Out1 * put(DataObjectHandle< Out1 > &out_handle, Out2 &&out)
Definition: FunctionalDetails.h:116
template<typename Out , typename... In, typename Traits_ >

virtual vector_of_<Out> Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::operator() | ( | const In & | ... | ) | const
| pure virtual

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

const std::string& Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::outputLocation | ( | unsigned int | n | ) | const
| inline

Definition at line 47 of file SplittingTransformer.h.

47 { return m_outputLocations[n]; }
GaudiPluginService.cpluginsvc.n
n
Definition: cpluginsvc.py:228
Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::m_outputLocations
std::vector< std::string > m_outputLocations
Definition: SplittingTransformer.h:80
template<typename Out , typename... In, typename Traits_ >

unsigned int Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::outputLocationSize | ( |  | ) | const
| inline

Definition at line 48 of file SplittingTransformer.h.

48 { return m_outputLocations.size(); }
Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::m_outputLocations
std::vector< std::string > m_outputLocations
Definition: SplittingTransformer.h:80
std::vector::size
T size(T...args)

## Member Data Documentation

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

std::vector<std::string> Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::m_outputLocations
| private

Definition at line 80 of file SplittingTransformer.h.

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

std::vector<OutputHandle<Out> > Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::m_outputs
| private

Definition at line 81 of file SplittingTransformer.h.

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

constexpr std::size_t Gaudi::Functional::SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >::N = sizeof...( In )
| static

Definition at line 32 of file SplittingTransformer.h.

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

- GaudiAlg/GaudiAlg/SplittingTransformer.h