46 for (
auto m : m_streamModules) {
53 for (
auto m : m_streamModules) {
56 m_streamModules.clear();
65 m_streamModules.resize(iPrealloc.
numberOfStreams(),
static_cast<T*
>(
nullptr));
73 auto firstMod = m_streamModules[0];
74 if (firstMod->registrationCallback() and m_streamModules.size() > 1) {
77 std::vector<std::function<void(BranchDescription const&)>>
callbacks;
78 callbacks.reserve(m_streamModules.size());
80 for (
auto mod : m_streamModules) {
91 firstMod->registerProducts(firstMod, reg, moduleDescription_);
96 std::vector<ProductResolverIndexAndSkipBit>& iIndices)
const {
97 assert(not m_streamModules.empty());
98 m_streamModules[0]->itemsToGet(iType, iIndices);
101 template <
typename T>
103 std::vector<ProductResolverIndexAndSkipBit>& iIndices)
const {
104 assert(not m_streamModules.empty());
105 m_streamModules[0]->itemsMayGet(iType, iIndices);
108 template <
typename T>
111 assert(not m_streamModules.empty());
112 return m_streamModules[0]->itemsToGetFrom(iType);
115 template <
typename T>
118 assert(not m_streamModules.empty());
119 return m_streamModules[0]->esGetTokenIndicesVector(iTrans);
122 template <
typename T>
125 assert(not m_streamModules.empty());
126 return m_streamModules[0]->esGetTokenRecordIndicesVector(iTrans);
129 template <
typename T>
132 std::vector<ModuleProcessName>& modulesInPreviousProcesses,
134 std::map<std::string, ModuleDescription const*>
const& labelsToDesc,
136 assert(not m_streamModules.empty());
137 return m_streamModules[0]->modulesWhoseProductsAreConsumed(
141 template <
typename T>
143 for (
auto mod : m_streamModules) {
148 template <
typename T>
150 assert(not m_streamModules.empty());
151 return m_streamModules[0]->consumesInfo();
154 template <
typename T>
157 bool iPrefetchMayGet) {
158 for (
auto mod : m_streamModules) {
159 mod->updateLookup(iType, iHelper, iPrefetchMayGet);
162 template <
typename T>
164 for (
auto mod : m_streamModules) {
165 mod->updateLookup(iPI);
169 template <
typename T>
173 for (
auto mod : m_streamModules) {
178 template <
typename T>
181 return m_streamModules[0]->indiciesForPutProducts(iBranchType);
184 template <
typename T>
186 m_streamModules[
id]->beginStream(
id);
188 template <
typename T>
190 m_streamModules[
id]->endStream();
193 template <
typename T>
198 auto mod = m_streamModules[
id];
201 Run r(rp, moduleDescription_, mcc,
false);
209 template <
typename T>
213 auto mod = m_streamModules[
id];
214 Run r(
info, moduleDescription_, mcc,
true);
220 streamEndRunSummary(
mod,
r,
c);
223 template <
typename T>
228 auto mod = m_streamModules[
id];
229 setupLuminosityBlock(
mod, lbp.
index());
238 mod->beginLuminosityBlock(lb,
c);
241 template <
typename T>
245 auto mod = m_streamModules[
id];
253 mod->endLuminosityBlock(lb,
c);
254 streamEndLuminosityBlockSummary(
mod, lb,
c);
257 template <
typename T>
260 assert(not m_streamModules.empty());
261 auto mod = m_streamModules[0];
262 mod->registerThinnedAssociations(registry,
helper);
void doStreamEndLuminosityBlock(StreamID, LumiTransitionInfo const &, ModuleCallingContext const *)
void setConsumer(EDConsumerBase const *iConsumer)
void doRegisterThinnedAssociations(ProductRegistry const &, ThinnedAssociationsHelper &)
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom(BranchType) const
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector(edm::Transition iTrans) const
void modulesWhoseProductsAreConsumed(std::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modules, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
void doPreallocate(PreallocationConfiguration const &)
virtual ~ProducingModuleAdaptorBase()
void registerProductsAndCallbacks(ProducingModuleAdaptorBase const *, ProductRegistry *reg)
void doStreamBeginRun(StreamID, RunTransitionInfo const &, ModuleCallingContext const *)
void updateLookup(BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
void itemsToGet(BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
unsigned int numberOfStreams() const
std::vector< ESProxyIndex > const & esGetTokenIndicesVector(edm::Transition iTrans) const
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
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts(BranchType iBranchType) const
void convertCurrentProcessAlias(std::string const &processName)
unsigned int numberOfLuminosityBlocks() const
void resolvePutIndicies(BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
void itemsMayGet(BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
LuminosityBlockIndex index() const
std::vector< ConsumesInfo > consumesInfo() const
void doStreamEndRun(StreamID, RunTransitionInfo const &, ModuleCallingContext const *)
T mod(const T &a, const T &b)
std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > > ModuleToResolverIndicies
void deleteModulesEarly()
void doStreamBeginLuminosityBlock(StreamID, LumiTransitionInfo const &, ModuleCallingContext const *)
void doEndStream(StreamID)
void doBeginStream(StreamID)