#include <ProducerBase.h>
Public Member Functions | |
template<edm::Transition Tr = edm::Transition::Event> | |
auto | produces () noexcept |
template<edm::Transition Tr = edm::Transition::Event> | |
auto | produces (std::string instanceName) noexcept |
Static Public Member Functions | |
static void | prevalidate (edm::ConfigurationDescriptions &descriptions) |
Private Types | |
using | Base = BaseT< Args..., edm::Transformer > |
Private Member Functions | |
template<typename TProduct , typename TToken , edm::Transition Tr> | |
edm::EDPutTokenT< TToken > | deviceProduces (std::string instanceName) |
template<typename TProduct , edm::Transition Tr> | |
edm::EDPutTokenT< TProduct > | produces (std::string instanceName) |
Friends | |
template<typename TProducer , edm::Transition Tr> | |
class | ProducerBaseAdaptor |
The ProducerBase acts as a common base class for all Alpaka EDProducers. The main benefit is to have a single place for the definition of produces() functions.
The produces() functions return a custom ProducerBaseAdaptor in order to call the deviceProduces(). For device or asynchronous backends the deviceProduces() registers the automatic copy to host and a transformation from edm::DeviceProduct<T> to U, where U is the host-equivalent of T. The transformation from T to U is done by a specialization of cms::alpakatools::CopyToHost<T> class template, that should be provided in the same file where T is defined
TODO: add "override" for labelsForToken()
Definition at line 40 of file ProducerBase.h.
|
private |
Definition at line 44 of file ProducerBase.h.
|
inlineprivate |
Definition at line 80 of file ProducerBase.h.
|
inlinestatic |
Definition at line 57 of file ProducerBase.h.
|
inlinenoexcept |
Definition at line 48 of file ProducerBase.h.
|
inlinenoexcept |
Definition at line 53 of file ProducerBase.h.
|
inlineprivate |
Definition at line 71 of file ProducerBase.h.
|
friend |
Definition at line 64 of file ProducerBase.h.