Go to the documentation of this file. 1 #ifndef FWCore_Framework_ProducerBase_h
2 #define FWCore_Framework_ProducerBase_h
15 #include <unordered_map>
21 class BranchDescription;
22 class ModuleDescription;
23 class ProducesCollector;
24 class ProductRegistry;
46 class ProducingModuleAdaptorBase;
49 namespace producerbasehelper {
58 static constexpr
int kBranchType =
InRun;
62 static constexpr
int kBranchType =
InLumi;
66 static constexpr
int kBranchType =
InEvent;
89 std::unordered_multimap<std::string, std::tuple<edm::TypeID const*, const char*, edm::ProductResolverIndex>>;
116 template <
typename T>
119 template <
typename P>
124 template <
typename P,
typename I>
std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > > ModuleToResolverIndicies
std::array< std::vector< edm::ProductResolverIndex >, edm::NumBranchTypes > putIndicies_
ProductRegistryHelper::TypeLabelList TypeLabelList
void commit_(P &iPrincipal)
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts(BranchType iBranchType) const
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex() const
void callWhenNewProductsRegistered(std::function< void(BranchDescription const &)> const &func)
const std::complex< double > I
std::vector< bool > const & recordProvenanceList() const
TypeLabelList const & typeLabelList() const
used by the fwk to register the list of products of this module
void commit_(P &iPrincipal, I *iID)
std::function< void(BranchDescription const &)> registrationCallback() const
used by the fwk to register list of products
std::vector< TypeLabelItem > TypeLabelList
std::vector< edm::ProductResolverIndex > putTokenToResolverIndex_
~ProducerBase() noexcept(false) override
BranchAliasSetterT< ProductType > produces()
declare what type of product will make and with which optional label
std::function< void(BranchDescription const &)> callWhenNewProductsRegistered_
void resolvePutIndicies(BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
TEMPL(T2) struct Divides void
void registerProducts(ProducerBase *, ProductRegistry *, ModuleDescription const &)
std::pair< OmniClusterRef, TrackingParticleRef > P
ProducesCollector producesCollector()