1 #ifndef FWCore_Framework_EDConsumerBase_h 2 #define FWCore_Framework_EDConsumerBase_h 48 class ModuleDescription;
49 class ProductResolverIndexHelper;
50 class ProductRegistry;
51 class ConsumesCollector;
88 bool iPrefetchMayGet);
95 std::map<std::string, ModuleDescription const*>
const& labelsToDesc,
109 template <
typename ProductType, BranchType B=InEvent>
111 TypeToGet tid=TypeToGet::make<ProductType>();
119 template <BranchType B>
124 template <
typename ProductType, BranchType B=InEvent>
126 TypeToGet tid=TypeToGet::make<ProductType>();
131 return mayConsume<InEvent>(
id,
tag);
134 template <BranchType B>
139 template <
typename ProductType, BranchType B=InEvent>
141 TypeToGet tid=TypeToGet::make<ProductType>();
142 consumesMany<B>(tid);
146 consumesMany<InEvent>(
id);
149 template <BranchType B>
155 template <
typename ESProduct,
typename ESRecord, Transition Tr = Transition::Event>
158 return esConsumes<ESProduct, ESRecord, Tr>(
ESInputTag{});
161 template <
typename ESProduct,
typename ESRecord, Transition Tr = Transition::Event>
167 template <
typename ESProduct, Transition Tr = Transition::Event>
187 bool skipCurrentProcess,
197 unsigned short iDeltaToProductInstance,
198 unsigned short iDeltaToProcessName):
199 m_startOfModuleLabel(iStartOfModuleLabel),
200 m_deltaToProductInstance(iDeltaToProductInstance),
201 m_deltaToProcessName(iDeltaToProcessName) {}
std::vector< ConsumesInfo > consumesInfo() const
unsigned int ProductResolverIndex
void updateLookup(BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
void consumesMany(const TypeToGet &id)
void throwTypeMismatch(edm::TypeID const &, EDGetToken) const
LabelPlacement(unsigned int iStartOfModuleLabel, unsigned short iDeltaToProductInstance, unsigned short iDeltaToProcessName)
void throwBadToken(edm::TypeID const &iType, EDGetToken iToken) const
bool containsCurrentProcessAlias_
unsigned short m_deltaToProcessName
void throwConsumesCallAfterFrozen(TypeToGet const &, InputTag const &) const
edm::SoATuple< TokenLookupInfo, bool, LabelPlacement, edm::KindOfType > m_tokenInfo
void modulesWhoseProductsAreConsumed(std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
unsigned int recordConsumes(BranchType iBranch, TypeToGet const &iType, edm::InputTag const &iTag, bool iAlwaysGets)
void consumesMany(const TypeToGet &id)
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom(BranchType iType) const
ProductResolverIndexAndSkipBit uncheckedIndexFrom(EDGetToken) const
EDGetToken mayConsume(const TypeToGet &id, edm::InputTag const &tag)
auto esConsumes(eventsetup::EventSetupRecordKey const &, ESInputTag const &tag)
ProductResolverIndexAndSkipBit indexFrom(EDGetToken, BranchType, TypeID const &) const
bool registeredToConsume(ProductResolverIndex, bool, BranchType) const
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
unsigned short m_deltaToProductInstance
void itemsToGet(BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
ProductResolverIndexAndSkipBit m_index
void throwBranchMismatch(BranchType, EDGetToken) const
EDGetToken mayConsume(const TypeToGet &id, edm::InputTag const &tag)
static const std::string B
std::vector< char > m_tokenLabels
edm::InputTag const & checkIfEmpty(edm::InputTag const &tag)
EDConsumerBase const & operator=(EDConsumerBase const &)=delete
EDGetToken consumes(TypeToGet const &id, edm::InputTag const &tag)
bool registeredToConsumeMany(TypeID const &, BranchType) const
void itemsMayGet(BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
void labelsForToken(EDGetToken iToken, Labels &oLabels) const
auto esConsumes(ESInputTag const &tag)
TokenLookupInfo(edm::TypeID const &iID, ProductResolverIndex iIndex, bool skipCurrentProcess, BranchType iBranch)
virtual ~EDConsumerBase() noexcept(false)
void convertCurrentProcessAlias(std::string const &processName)
Convert "@currentProcess" in InputTag process names to the actual current process name...
EDGetTokenT< ProductType > mayConsume(edm::InputTag const &tag)
std::array< std::vector< ProductResolverIndexAndSkipBit >, edm::NumBranchTypes > itemsToGetFromBranch_
unsigned int m_startOfModuleLabel
EDGetToken consumes(const TypeToGet &id, edm::InputTag const &tag)