File indexing completed on 2023-03-17 10:59:04
0001 #ifndef DQMSERVICES_COMPONENTS_DQMFILESAVERBASE_H
0002 #define DQMSERVICES_COMPONENTS_DQMFILESAVERBASE_H
0003
0004 #include "FWCore/Framework/interface/global/EDAnalyzer.h"
0005 #include "DQMServices/Core/interface/DQMStore.h"
0006
0007 #include "EventFilter/Utilities/interface/FastMonitoringService.h"
0008 #include "EventFilter/Utilities/interface/EvFDaqDirector.h"
0009
0010 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0011 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0012 #include "FWCore/Framework/interface/GetterOfProducts.h"
0013 #include "FWCore/Framework/interface/ProcessMatch.h"
0014
0015 #include "DataFormats/Histograms/interface/DQMToken.h"
0016
0017 #include <sys/time.h>
0018 #include <string>
0019 #include <mutex>
0020
0021 #include <boost/property_tree/ptree.hpp>
0022
0023 namespace dqm {
0024
0025 struct NoCache {};
0026
0027 class DQMFileSaverBase : public edm::global::EDAnalyzer<edm::RunCache<NoCache>, edm::LuminosityBlockCache<NoCache> > {
0028 public:
0029 typedef dqm::legacy::MonitorElement MonitorElement;
0030 typedef dqm::legacy::DQMStore DQMStore;
0031
0032 DQMFileSaverBase(const edm::ParameterSet &ps);
0033 ~DQMFileSaverBase() override;
0034
0035 protected:
0036
0037 struct FileParameters {
0038 std::string path_;
0039 std::string producer_;
0040 int version_;
0041 std::string tag_;
0042 long run_;
0043 long lumi_;
0044 std::string child_;
0045 };
0046
0047 protected:
0048
0049
0050
0051 std::shared_ptr<NoCache> globalBeginRun(const edm::Run &, const edm::EventSetup &) const final;
0052
0053 std::shared_ptr<NoCache> globalBeginLuminosityBlock(const edm::LuminosityBlock &,
0054 const edm::EventSetup &) const final;
0055
0056 void analyze(edm::StreamID, const edm::Event &e, const edm::EventSetup &) const final;
0057
0058 void globalEndLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) const final;
0059 void globalEndRun(const edm::Run &, const edm::EventSetup &) const final;
0060
0061
0062
0063 virtual void initRun() const {};
0064 virtual void saveLumi(const FileParameters &fp) const {};
0065 virtual void saveRun(const FileParameters &fp) const {};
0066
0067 static const std::string filename(const FileParameters &fp, bool useLumi = false);
0068
0069
0070 void logFileAction(const std::string &msg, const std::string &fileName) const;
0071 void saveJobReport(const std::string &filename) const;
0072
0073
0074 mutable std::mutex initial_fp_lock_;
0075 FileParameters initial_fp_;
0076 int runNumber_;
0077
0078 edm::GetterOfProducts<DQMToken> lumigetter_;
0079 edm::GetterOfProducts<DQMToken> rungetter_;
0080
0081 public:
0082 static void fillDescription(edm::ParameterSetDescription &d);
0083 };
0084 }
0085
0086 #endif