1 #ifndef FWCore_Framework_ProducerBase_h 2 #define FWCore_Framework_ProducerBase_h 15 #include <unordered_map> 21 class BranchDescription;
22 class ModuleDescription;
23 class ProductRegistry;
43 template<
typename T>
class ProducingModuleAdaptorBase;
46 namespace producerbasehelper{
66 std::function<void(BranchDescription const&)> registrationCallback()
const;
77 callWhenNewProductsRegistered_ =
func;
81 std::tuple<edm::TypeID const*, const char*, edm::ProductResolverIndex>>;
82 void resolvePutIndicies(
BranchType iBranchType,
84 std::string
const& moduleLabel);
87 return putIndicies_[iBranchType];
90 std::vector<edm::ProductResolverIndex>
const&
92 return putTokenToResolverIndex_;
106 template<
typename P>
111 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)
void callWhenNewProductsRegistered(std::function< void(BranchDescription const &)> const &func)
std::vector< bool > const & recordProvenanceList() const
TypeLabelList const & typeLabelList() const
used by the fwk to register the list of products of this module
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)