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]->itemsToGetFrom(iType);
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>
120 for(
auto mod: m_streamModules) {
121 mod->convertCurrentProcessAlias(processName);
125 template<
typename T>
126 std::vector<edm::ConsumesInfo>
128 assert(not m_streamModules.empty());
129 return m_streamModules[0]->consumesInfo();
132 template<
typename T>
136 bool iPrefetchMayGet) {
137 for(
auto mod: m_streamModules) {
138 mod->updateLookup(iType,iHelper,iPrefetchMayGet);
142 template<
typename T>
147 for(
auto mod: m_streamModules) {
148 mod->resolvePutIndicies(iBranchType,iIndicies,moduleLabel);
153 template<
typename T>
154 std::vector<edm::ProductResolverIndex>
const&
156 return m_streamModules[0]->indiciesForPutProducts(iBranchType);
159 template<
typename T>
165 template<
typename T>
168 m_streamModules[
id]->beginStream(
id);
170 template<
typename T>
173 m_streamModules[
id]->endStream();
176 template<
typename T>
183 auto mod = m_streamModules[
id];
186 Run r(rp, moduleDescription_, mcc);
191 template<
typename T>
198 auto mod = m_streamModules[
id];
199 Run r(rp, moduleDescription_, mcc);
202 streamEndRunSummary(
mod,r,c);
205 template<
typename T>
211 auto mod = m_streamModules[
id];
212 setupLuminosityBlock(
mod,lbp.
index());
216 mod->beginLuminosityBlock(lb, c);
219 template<
typename T>
226 auto mod = m_streamModules[
id];
229 mod->endLuminosityBlock(lb, c);
230 streamEndLuminosityBlockSummary(
mod,lb, c);
233 template<
typename T>
236 template<
typename T>
240 template<
typename T>
244 assert(not m_streamModules.empty());
245 auto mod = m_streamModules[0];
246 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
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 *)