1 #ifndef FWCore_Framework_limited_OutputModuleBase_h 2 #define FWCore_Framework_limited_OutputModuleBase_h 48 class MergeableRunProductMetadata;
49 class ModuleCallingContext;
50 class PreallocationConfiguration;
52 class ProductRegistry;
53 class ThinnedAssociationsHelper;
56 template <
typename T>
class OutputModuleCommunicatorT;
59 template<
typename T>
class ModuleHolderT;
67 template <
typename T>
friend class ::edm::WorkerT;
68 template <
typename T>
friend class ::edm::OutputModuleCommunicatorT;
104 return moduleDescription_;
110 virtual bool wantsStreamRuns()
const =0;
111 virtual bool wantsStreamLuminosityBlocks()
const =0;
139 void doStreamBeginLuminosityBlock(
StreamID id,
143 void doStreamEndLuminosityBlock(
StreamID id,
163 void setEventSelectionInfo(
std::map<
std::string, std::vector<std::pair<std::string, int> > >
const& outputModulePathPositions,
164 bool anyProductProduced);
169 return droppedBranchIDToKeptBranchID_;
201 std::vector<detail::TriggerResultsBasedEventSelector>
selectors_;
221 void updateBranchIDListsWithKeptAliases();
226 void doRespondToOpenInputFile(
FileBlock const&
fb);
227 void doRespondToCloseInputFile(
FileBlock const&
fb);
238 bool needToRunSelection()
const;
239 std::vector<ProductResolverIndexAndSkipBit> productsUsedBySelection()
const;
244 virtual void reallyCloseFile();
287 std::map<BranchID, BranchDescription const*>& trueBranchIDToKeptBranchDesc,
288 std::set<BranchID>& keptProductsInEvent);
291 moduleDescription_ = md;
virtual void doStreamBeginRun_(StreamID, RunForOutput const &, EventSetup const &)
virtual void doBeginRunSummary_(RunForOutput const &, EventSetup const &)
virtual void doEndRunSummary_(RunForOutput const &, EventSetup const &)
std::atomic< int > remainingEvents_
edm::propagate_const< std::unique_ptr< ThinnedAssociationsHelper > > thinnedAssociationsHelper_
std::map< BranchID, bool > keepAssociation_
virtual void setProcessesWithSelectedMergeableRunProducts(std::set< std::string > const &)
virtual bool isFileOpen() const
std::vector< BranchIDList > BranchIDLists
std::string workerType() const
virtual bool shouldWeCloseFile() const
Ask the OutputModule if we should end the current file.
virtual void doRespondToOpenInputFile_(FileBlock const &)
std::array< SelectedProducts, NumBranchTypes > SelectedProductsForBranchType
BranchIDLists const * origBranchIDLists_
virtual void doEndStream_(StreamID)
virtual void doBeginLuminosityBlock_(LuminosityBlockForOutput const &)
ParameterSetID selector_config_id_
ParameterSetID selectorConfig() const
void setModuleDescription(ModuleDescription const &md)
edm::propagate_const< std::unique_ptr< BranchIDLists > > branchIDLists_
SelectedProductsForBranchType const & keptProducts() const
bool limitReached() const
virtual void doBeginStream_(StreamID)
const ModuleDescription & moduleDescription() const
virtual void openFile(FileBlock const &) const
bool hasAccumulator() const
virtual void doEndRun_(RunForOutput const &)
bool wantsGlobalRuns() const
void doRegisterThinnedAssociations(ProductRegistry const &, ThinnedAssociationsHelper &)
virtual void doBeginRun_(RunForOutput const &)
std::array< bool, NumBranchTypes > const & hasNewlyDroppedBranch() const
virtual void preallocate(PreallocationConfiguration const &)
int remainingEvents() const
ParameterSet selectEvents_
bool wantsGlobalLuminosityBlocks() const
virtual void doBeginLuminosityBlockSummary_(LuminosityBlockForOutput const &, EventSetup const &)
void preActionBeforeRunEventAsync(WaitingTask *iTask, ModuleCallingContext const &iModuleCallingContext, Principal const &iPrincipal) const
virtual void doStreamEndRunSummary_(StreamID, RunForOutput const &, EventSetup const &)
virtual void doStreamEndLuminosityBlock_(StreamID, LuminosityBlockForOutput const &, EventSetup const &)
std::string const & processName() const
ProductSelectorRules productSelectorRules_
virtual void preallocStreams(unsigned int)
virtual void doStreamEndLuminosityBlockSummary_(StreamID, LuminosityBlockForOutput const &, EventSetup const &)
LimitedTaskQueue & queue()
unsigned int concurrencyLimit() const
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
virtual void doEndLuminosityBlock_(LuminosityBlockForOutput const &)
std::vector< detail::TriggerResultsBasedEventSelector > selectors_
std::array< bool, NumBranchTypes > hasNewlyDroppedBranch_
virtual void doStreamEndRun_(StreamID, RunForOutput const &, EventSetup const &)
virtual void doStreamBeginLuminosityBlock_(StreamID, LuminosityBlockForOutput const &, EventSetup const &)
ModuleDescription moduleDescription_
virtual void doRespondToCloseInputFile_(FileBlock const &)
virtual void doEndLuminosityBlockSummary_(LuminosityBlockForOutput const &, EventSetup const &)
std::map< BranchID::value_type, BranchID::value_type > droppedBranchIDToKeptBranchID_
virtual void preallocLumis(unsigned int)
std::map< BranchID::value_type, BranchID::value_type > const & droppedBranchIDToKeptBranchID()
ProductSelector productSelector_
SelectedProductsForBranchType keptProducts_
bool wantAllEvents() const
std::string process_name_
OutputModuleBase ModuleType
void registerProductsAndCallbacks(OutputModuleBase const *, ProductRegistry const *)