/
githubmirror
/
cmssw
Обзор
Документация
Войти
/
githubmirror
/
cmssw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
FWCore/Framework/interface/OutputModuleCommunicatorT.h
84 строки
3 KB
Chris Jones
Removed support for thinning
09 мар 2026, 22:07
09 мар 2026, 22:07
2bcf291
Код
Авторство
О чём код?
#ifndef FWCore_Framework_OutputModuleCommunicatorT_h #define FWCore_Framework_OutputModuleCommunicatorT_h /*---------------------------------------------------------------------- ----------------------------------------------------------------------*/ #include "FWCore/Framework/interface/OutputModuleCommunicator.h" #include "FWCore/Common/interface/FWCoreCommonFwd.h" namespace edm { class ActivityRegistry; class MergeableRunProductMetadata; namespace one { class OutputModuleBase; } namespace global { class OutputModuleBase; } namespace limited { class OutputModuleBase; } namespace impl { std::unique_ptr<edm::OutputModuleCommunicator> createCommunicatorIfNeeded(void*); std::unique_ptr<edm::OutputModuleCommunicator> createCommunicatorIfNeeded(::edm::one::OutputModuleBase*); std::unique_ptr<edm::OutputModuleCommunicator> createCommunicatorIfNeeded(::edm::global::OutputModuleBase*); std::unique_ptr<edm::OutputModuleCommunicator> createCommunicatorIfNeeded(::edm::limited::OutputModuleBase*); } // namespace impl template <typename T> class OutputModuleCommunicatorT : public edm::OutputModuleCommunicator { public: OutputModuleCommunicatorT(T* iModule) : module_(iModule) {} void closeFile() override; ///\return true if output module wishes to close its file bool shouldWeCloseFile() const override; ///\return true if no event filtering is applied to OutputModule bool wantAllEvents() const override; void openFile(edm::FileBlock const& fb) override; void writeProcessBlockAsync(WaitingTaskHolder iTask, ProcessBlockPrincipal const&, ProcessContext const*, ActivityRegistry*) noexcept override; void writeRunAsync(WaitingTaskHolder iTask, edm::RunPrincipal const& rp, ProcessContext const*, ActivityRegistry*, MergeableRunProductMetadata const*) noexcept override; void writeLumiAsync(WaitingTaskHolder iTask, edm::LuminosityBlockPrincipal const& lbp, ProcessContext const*, ActivityRegistry*) noexcept override; ///\return true if OutputModule has reached its limit on maximum number of events it wants to see bool limitReached() const override; void configure(edm::OutputModuleDescription const& desc) override; edm::SelectedProductsForBranchType const& keptProducts() const override; void selectProducts(edm::ProductRegistry const& preg, ProcessBlockHelperBase const&) override; void setEventSelectionInfo( std::map<std::string, std::vector<std::pair<std::string, int> > > const& outputModulePathPositions, bool anyProductProduced) override; ModuleDescription const& description() const override; static std::unique_ptr<edm::OutputModuleCommunicator> createIfNeeded(T* iMod) { return impl::createCommunicatorIfNeeded(iMod); } private: inline T& module() const noexcept { return *module_; } T* module_; }; } // namespace edm #endif