45 for(
auto m: m_streamModules) {
58 static_cast<T*
>(
nullptr));
65 auto firstMod = m_streamModules[0];
66 if(firstMod->registrationCallback() and m_streamModules.size()>1) {
69 std::vector<std::function<void(BranchDescription const&)>>
callbacks;
70 callbacks.reserve(m_streamModules.size());
72 for(
auto mod: m_streamModules) {
73 callbacks.push_back(
mod->registrationCallback());
77 firstMod->callWhenNewProductsRegistered([callbacks](
BranchDescription const& iBD) {
78 for(
auto c: callbacks) {
83 firstMod->registerProducts(firstMod,reg,moduleDescription_);
89 assert(not m_streamModules.empty());
90 m_streamModules[0]->itemsToGet(iType,iIndices);
96 assert(not m_streamModules.empty());
97 m_streamModules[0]->itemsMayGet(iType,iIndices);
101 std::vector<edm::ProductResolverIndexAndSkipBit>
const&
103 assert(not m_streamModules.empty());
104 return m_streamModules[0]->itemsToGetFromEvent();
107 template<
typename T>
111 std::map<std::string, ModuleDescription const*>
const& labelsToDesc,
113 assert(not m_streamModules.empty());
114 return m_streamModules[0]->modulesWhoseProductsAreConsumed(modules, preg, labelsToDesc, processName);
117 template<
typename T>
118 std::vector<edm::ConsumesInfo>
120 assert(not m_streamModules.empty());
121 return m_streamModules[0]->consumesInfo();
124 template<
typename T>
128 bool iPrefetchMayGet) {
129 for(
auto mod: m_streamModules) {
130 mod->updateLookup(iType,iHelper,iPrefetchMayGet);
134 template<
typename T>
137 std::unordered_multimap<std::string, edm::ProductResolverIndex>
const& iIndicies,
139 m_streamModules[0]->resolvePutIndicies(iBranchType,iIndicies,moduleLabel);
143 template<
typename T>
144 std::vector<edm::ProductResolverIndex>
const&
146 return m_streamModules[0]->indiciesForPutProducts(iBranchType);
149 template<
typename T>
155 template<
typename T>
158 m_streamModules[id]->beginStream(
id);
160 template<
typename T>
163 m_streamModules[id]->endStream();
166 template<
typename T>
173 auto mod = m_streamModules[id];
176 Run r(rp, moduleDescription_, mcc);
181 template<
typename T>
188 auto mod = m_streamModules[id];
189 Run r(rp, moduleDescription_, mcc);
192 streamEndRunSummary(
mod,r,c);
195 template<
typename T>
201 auto mod = m_streamModules[id];
202 setupLuminosityBlock(
mod,lbp.
index());
206 mod->beginLuminosityBlock(lb, c);
209 template<
typename T>
216 auto mod = m_streamModules[id];
219 mod->endLuminosityBlock(lb, c);
220 streamEndLuminosityBlockSummary(
mod,lb, c);
223 template<
typename T>
226 template<
typename T>
229 template<
typename T>
232 for(
auto m: m_streamModules) {
233 m->preForkReleaseResources();
236 template<
typename T>
239 for(
auto m: m_streamModules) {
240 m->postForkReacquireResources(iChildIndex,iNumberOfChildren);
244 template<
typename T>
248 assert(not m_streamModules.empty());
249 auto mod = m_streamModules[0];
250 mod->registerThinnedAssociations(registry, helper);
void doStreamBeginRun(StreamID id, RunPrincipal const &ep, EventSetup const &c, ModuleCallingContext const *)
void setConsumer(EDConsumerBase const *iConsumer)
void doRegisterThinnedAssociations(ProductRegistry const &, ThinnedAssociationsHelper &)
void resolvePutIndicies(BranchType iBranchType, std::unordered_multimap< std::string, edm::ProductResolverIndex > const &iIndicies, std::string const &moduleLabel)
void doRespondToOpenInputFile(FileBlock const &fb)
void itemsToGet(BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
LuminosityBlockIndex index() const
void doPreallocate(PreallocationConfiguration const &)
void doPreForkReleaseResources()
std::vector< ConsumesInfo > consumesInfo() const
void doStreamEndLuminosityBlock(StreamID id, LuminosityBlockPrincipal const &ep, EventSetup const &c, ModuleCallingContext const *)
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::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those callbacks
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()
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFromEvent() const
void doStreamEndRun(StreamID id, RunPrincipal const &ep, EventSetup const &c, ModuleCallingContext const *)
void doBeginStream(StreamID id)
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 *)
void doPostForkReacquireResources(unsigned int iChildIndex, unsigned int iNumberOfChildren)