47 for (
auto m : m_streamModules) {
54 for (
auto m : m_streamModules) {
57 m_streamModules.clear();
66 m_streamModules.resize(iPrealloc.
numberOfStreams(),
static_cast<T*
>(
nullptr));
75 auto firstMod = m_streamModules[0];
76 if (firstMod->registrationCallback() and m_streamModules.size() > 1) {
79 std::vector<std::function<void(BranchDescription const&)>>
callbacks;
80 callbacks.reserve(m_streamModules.size());
82 for (
auto mod : m_streamModules) {
93 firstMod->registerProducts(firstMod, reg, moduleDescription_);
98 std::vector<ProductResolverIndexAndSkipBit>& iIndices)
const {
99 assert(not m_streamModules.empty());
100 m_streamModules[0]->itemsToGet(iType, iIndices);
103 template <
typename T>
105 std::vector<ProductResolverIndexAndSkipBit>& iIndices)
const {
106 assert(not m_streamModules.empty());
107 m_streamModules[0]->itemsMayGet(iType, iIndices);
110 template <
typename T>
113 assert(not m_streamModules.empty());
114 return m_streamModules[0]->itemsToGetFrom(iType);
117 template <
typename T>
120 assert(not m_streamModules.empty());
121 return m_streamModules[0]->esGetTokenIndicesVector(iTrans);
124 template <
typename T>
127 assert(not m_streamModules.empty());
128 return m_streamModules[0]->esGetTokenRecordIndicesVector(iTrans);
131 template <
typename T>
134 std::vector<ModuleProcessName>& modulesInPreviousProcesses,
136 std::map<std::string, ModuleDescription const*>
const& labelsToDesc,
138 assert(not m_streamModules.empty());
139 return m_streamModules[0]->modulesWhoseProductsAreConsumed(
143 template <
typename T>
145 for (
auto mod : m_streamModules) {
150 template <
typename T>
152 assert(not m_streamModules.empty());
153 return m_streamModules[0]->consumesInfo();
156 template <
typename T>
159 bool iPrefetchMayGet) {
160 for (
auto mod : m_streamModules) {
161 mod->updateLookup(iType, iHelper, iPrefetchMayGet);
164 template <
typename T>
166 for (
auto mod : m_streamModules) {
167 mod->updateLookup(iPI);
171 template <
typename T>
175 for (
auto mod : m_streamModules) {
180 template <
typename T>
183 return m_streamModules[0]->indiciesForPutProducts(iBranchType);
186 template <
typename T>
190 template <
typename T>
194 template <
typename T>
196 size_t iTransformIndex,
202 template <
typename T>
204 m_streamModules[
id]->beginStream(
id);
206 template <
typename T>
208 m_streamModules[
id]->endStream();
211 template <
typename T>
216 auto mod = m_streamModules[
id];
219 Run r(rp, moduleDescription_, mcc,
false);
227 template <
typename T>
231 auto mod = m_streamModules[
id];
232 Run r(
info, moduleDescription_, mcc,
true);
238 streamEndRunSummary(
mod, r,
c);
241 template <
typename T>
246 auto mod = m_streamModules[
id];
247 setupLuminosityBlock(
mod, lbp.
index());
256 mod->beginLuminosityBlock(lb,
c);
259 template <
typename T>
263 auto mod = m_streamModules[
id];
271 mod->endLuminosityBlock(lb,
c);
272 streamEndLuminosityBlockSummary(
mod, lb,
c);
275 template <
typename T>
278 assert(not m_streamModules.empty());
279 auto mod = m_streamModules[0];
280 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
unsigned int ProductResolverIndex
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 doTransformAsync(WaitingTaskHolder iTask, size_t iTransformIndex, EventPrincipal const &iEvent, ActivityRegistry *, ModuleCallingContext, ServiceWeakToken const &) noexcept
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
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 numberOfRuns() const
ProductResolverIndex transformPrefetch_(size_t iTransformIndex) const noexcept
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
size_t transformIndex_(edm::BranchDescription const &iBranch) const noexcept
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 *)
std::vector< ESResolverIndex > const & esGetTokenIndicesVector(edm::Transition iTrans) const
void doEndStream(StreamID)
void doBeginStream(StreamID)