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;
45 class ProducingModuleAdaptorBase;
48 namespace producerbasehelper {
80 callWhenNewProductsRegistered_ =
func;
84 std::unordered_multimap<std::string, std::tuple<edm::TypeID const*, const char*, edm::ProductResolverIndex>>;
85 void resolvePutIndicies(
BranchType iBranchType,
90 return putIndicies_[iBranchType];
94 return putTokenToResolverIndex_;
111 template <
typename T>
114 template <
typename P>
119 template <
typename P,
typename I>
BranchAliasSetterT< ProductType > produces()
declare what type of product will make and with which optional label
void commit_(P &iPrincipal, I *iID)
std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >> ModuleToResolverIndicies
ProductRegistryHelper::TypeLabelList TypeLabelList
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex() const
std::function< void(BranchDescription const &)> callWhenNewProductsRegistered_
std::array< std::vector< edm::ProductResolverIndex >, edm::NumBranchTypes > putIndicies_
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts(BranchType iBranchType) const
std::vector< TypeLabelItem > TypeLabelList
const std::complex< double > I
std::vector< edm::ProductResolverIndex > putTokenToResolverIndex_
std::pair< OmniClusterRef, TrackingParticleRef > P
void commit_(P &iPrincipal)