45 for (
auto m : m_streamModules) {
52 for (
auto m : m_streamModules) {
55 m_streamModules.clear();
64 m_streamModules.resize(iPrealloc.
numberOfStreams(),
static_cast<T*
>(
nullptr));
72 auto firstMod = m_streamModules[0];
73 if (firstMod->registrationCallback() and m_streamModules.size() > 1) {
76 std::vector<std::function<void(BranchDescription const&)>>
callbacks;
77 callbacks.reserve(m_streamModules.size());
79 for (
auto mod : m_streamModules) {
80 callbacks.push_back(
mod->registrationCallback());
84 firstMod->callWhenNewProductsRegistered([callbacks](
BranchDescription const& iBD) {
85 for (
const auto&
c : callbacks) {
90 firstMod->registerProducts(firstMod, reg, moduleDescription_);
95 std::vector<ProductResolverIndexAndSkipBit>& iIndices)
const {
96 assert(not m_streamModules.empty());
97 m_streamModules[0]->itemsToGet(iType, iIndices);
100 template <
typename T>
102 std::vector<ProductResolverIndexAndSkipBit>& iIndices)
const {
103 assert(not m_streamModules.empty());
104 m_streamModules[0]->itemsMayGet(iType, iIndices);
107 template <
typename T>
110 assert(not m_streamModules.empty());
111 return m_streamModules[0]->itemsToGetFrom(iType);
114 template <
typename T>
117 assert(not m_streamModules.empty());
118 return m_streamModules[0]->esGetTokenIndicesVector(iTrans);
121 template <
typename T>
124 assert(not m_streamModules.empty());
125 return m_streamModules[0]->esGetTokenRecordIndicesVector(iTrans);
128 template <
typename T>
131 std::vector<ModuleProcessName>& modulesInPreviousProcesses,
133 std::map<std::string, ModuleDescription const*>
const& labelsToDesc,
135 assert(not m_streamModules.empty());
136 return m_streamModules[0]->modulesWhoseProductsAreConsumed(
137 modules, modulesInPreviousProcesses, preg, labelsToDesc, processName);
140 template <
typename T>
142 for (
auto mod : m_streamModules) {
143 mod->convertCurrentProcessAlias(processName);
147 template <
typename T>
149 assert(not m_streamModules.empty());
150 return m_streamModules[0]->consumesInfo();
153 template <
typename T>
156 bool iPrefetchMayGet) {
157 for (
auto mod : m_streamModules) {
158 mod->updateLookup(iType, iHelper, iPrefetchMayGet);
161 template <
typename T>
163 for (
auto mod : m_streamModules) {
164 mod->updateLookup(iPI);
168 template <
typename T>
172 for (
auto mod : m_streamModules) {
173 mod->resolvePutIndicies(iBranchType, iIndicies, moduleLabel);
177 template <
typename T>
180 return m_streamModules[0]->indiciesForPutProducts(iBranchType);
183 template <
typename T>
185 m_streamModules[
id]->beginStream(
id);
187 template <
typename T>
189 m_streamModules[
id]->endStream();
192 template <
typename T>
197 auto mod = m_streamModules[
id];
200 Run r(rp, moduleDescription_, mcc,
false);
211 template <
typename T>
215 auto mod = m_streamModules[
id];
216 Run r(info, moduleDescription_, mcc,
true);
225 streamEndRunSummary(
mod, r,
c);
228 template <
typename T>
233 auto mod = m_streamModules[
id];
234 setupLuminosityBlock(
mod, lbp.
index());
244 mod->beginLuminosityBlock(lb,
c);
247 template <
typename T>
251 auto mod = m_streamModules[
id];
260 mod->endLuminosityBlock(lb,
c);
261 streamEndLuminosityBlockSummary(
mod, lb,
c);
264 template <
typename T>
267 assert(not m_streamModules.empty());
268 auto mod = m_streamModules[0];
269 mod->registerThinnedAssociations(registry, helper);
void doStreamEndLuminosityBlock(StreamID, LumiTransitionInfo const &, ModuleCallingContext const *)
void setConsumer(EDConsumerBase const *iConsumer)
const edm::EventSetup & c
std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >> ModuleToResolverIndicies
void doRegisterThinnedAssociations(ProductRegistry const &, ThinnedAssociationsHelper &)
uint16_t *__restrict__ id
LuminosityBlockPrincipal & principal()
void itemsToGet(BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
LuminosityBlockIndex index() const
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom(BranchType) const
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
void doPreallocate(PreallocationConfiguration const &)
std::vector< ConsumesInfo > consumesInfo() 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 doStreamBeginRun(StreamID, RunTransitionInfo const &, ModuleCallingContext const *)
std::vector< ESProxyIndex > const & esGetTokenIndicesVector(edm::Transition iTrans) const
void updateLookup(BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector(edm::Transition iTrans) const
ProducingModuleAdaptorBase()
unsigned int numberOfLuminosityBlocks() const
void convertCurrentProcessAlias(std::string const &processName)
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
void resolvePutIndicies(BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
unsigned int numberOfStreams() const
void doStreamEndRun(StreamID, RunTransitionInfo const &, ModuleCallingContext const *)
void itemsMayGet(BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
T mod(const T &a, const T &b)
void setConsumer(EDConsumerBase const *iConsumer)
RunPrincipal & principal()
void deleteModulesEarly()
void doStreamBeginLuminosityBlock(StreamID, LumiTransitionInfo const &, ModuleCallingContext const *)
void doEndStream(StreamID)
void doBeginStream(StreamID)