45 for(
auto m: m_streamModules) {
58 static_cast<T*
>(
nullptr));
67 auto firstMod = m_streamModules[0];
68 if(firstMod->registrationCallback() and m_streamModules.size()>1) {
71 std::vector<std::function<void(BranchDescription const&)>>
callbacks;
72 callbacks.reserve(m_streamModules.size());
74 for(
auto mod: m_streamModules) {
75 callbacks.push_back(
mod->registrationCallback());
79 firstMod->callWhenNewProductsRegistered([callbacks](
BranchDescription const& iBD) {
80 for(
auto c: callbacks) {
85 firstMod->registerProducts(firstMod,reg,moduleDescription_);
91 assert(not m_streamModules.empty());
92 m_streamModules[0]->itemsToGet(iType,iIndices);
98 assert(not m_streamModules.empty());
99 m_streamModules[0]->itemsMayGet(iType,iIndices);
103 std::vector<edm::ProductResolverIndexAndSkipBit>
const&
105 assert(not m_streamModules.empty());
106 return m_streamModules[0]->itemsToGetFrom(iType);
109 template<
typename T>
113 std::map<std::string, ModuleDescription const*>
const& labelsToDesc,
115 assert(not m_streamModules.empty());
116 return m_streamModules[0]->modulesWhoseProductsAreConsumed(modules, preg, labelsToDesc, processName);
119 template<
typename T>
122 for(
auto mod: m_streamModules) {
123 mod->convertCurrentProcessAlias(processName);
127 template<
typename T>
128 std::vector<edm::ConsumesInfo>
130 assert(not m_streamModules.empty());
131 return m_streamModules[0]->consumesInfo();
134 template<
typename T>
138 bool iPrefetchMayGet) {
139 for(
auto mod: m_streamModules) {
140 mod->updateLookup(iType,iHelper,iPrefetchMayGet);
144 template<
typename T>
149 for(
auto mod: m_streamModules) {
150 mod->resolvePutIndicies(iBranchType,iIndicies,moduleLabel);
155 template<
typename T>
156 std::vector<edm::ProductResolverIndex>
const&
158 return m_streamModules[0]->indiciesForPutProducts(iBranchType);
161 template<
typename T>
167 template<
typename T>
170 m_streamModules[
id]->beginStream(
id);
172 template<
typename T>
175 m_streamModules[
id]->endStream();
178 template<
typename T>
185 auto mod = m_streamModules[
id];
188 Run r(rp, moduleDescription_, mcc,
false);
193 template<
typename T>
200 auto mod = m_streamModules[
id];
201 Run r(rp, moduleDescription_, mcc,
true);
204 streamEndRunSummary(
mod,r,c);
207 template<
typename T>
213 auto mod = m_streamModules[
id];
214 setupLuminosityBlock(
mod,lbp.
index());
218 mod->beginLuminosityBlock(lb, c);
221 template<
typename T>
228 auto mod = m_streamModules[
id];
231 mod->endLuminosityBlock(lb, c);
232 streamEndLuminosityBlockSummary(
mod,lb, c);
235 template<
typename T>
238 template<
typename T>
242 template<
typename T>
246 assert(not m_streamModules.empty());
247 auto mod = m_streamModules[0];
248 mod->registerThinnedAssociations(registry, helper);
void doStreamBeginRun(StreamID id, RunPrincipal const &ep, EventSetup const &c, ModuleCallingContext const *)
void setConsumer(EDConsumerBase const *iConsumer)
std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >> ModuleToResolverIndicies
void doRegisterThinnedAssociations(ProductRegistry const &, ThinnedAssociationsHelper &)
void doRespondToOpenInputFile(FileBlock const &fb)
void itemsToGet(BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
LuminosityBlockIndex index() const
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom(BranchType) const
void doPreallocate(PreallocationConfiguration const &)
std::vector< ConsumesInfo > consumesInfo() const
void doStreamEndLuminosityBlock(StreamID id, LuminosityBlockPrincipal const &ep, EventSetup const &c, ModuleCallingContext const *)
virtual ~ProducingModuleAdaptorBase()
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts(BranchType iBranchType) const
void registerProductsAndCallbacks(ProducingModuleAdaptorBase const *, ProductRegistry *reg)
void doEndStream(StreamID id)
void updateLookup(BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
ProducingModuleAdaptorBase()
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those callbacks
unsigned int numberOfLuminosityBlocks() const
void doStreamEndRun(StreamID id, RunPrincipal const &ep, EventSetup const &c, ModuleCallingContext const *)
void doBeginStream(StreamID id)
void convertCurrentProcessAlias(std::string const &processName)
void resolvePutIndicies(BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
void modulesWhoseProductsAreConsumed(std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
unsigned int numberOfStreams() const
void doRespondToCloseInputFile(FileBlock const &fb)
void itemsMayGet(BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
T mod(const T &a, const T &b)
void setConsumer(EDConsumerBase const *iConsumer)
void doStreamBeginLuminosityBlock(StreamID id, LuminosityBlockPrincipal const &ep, EventSetup const &c, ModuleCallingContext const *)