CMS 3D CMS Logo

DQMFileSaverBase.cc
Go to the documentation of this file.
11 
12 #include "DQMFileSaverBase.h"
13 
14 #include <sys/stat.h>
15 #include <sys/types.h>
16 #include <unistd.h>
17 #include <iostream>
18 #include <vector>
19 #include <string>
20 #include <fstream>
21 #include <utility>
22 #include <TString.h>
23 #include <TSystem.h>
24 
25 using namespace dqm;
26 
29 
30  fp.path_ = ps.getUntrackedParameter<std::string>("path");
31  fp.producer_ = ps.getUntrackedParameter<std::string>("producer");
32  fp.run_ = 0;
33  fp.tag_ = ps.getUntrackedParameter<std::string>("tag");
34  fp.lumi_ = 0;
35  fp.version_ = 1;
36  fp.child_ = "";
37 
39  // Check how we should save the references.
40  std::string refsave = ps.getUntrackedParameter<std::string>("referenceHandling", "all");
41  if (refsave == "skip") {
43  } else if (refsave == "all") {
45  } else if (refsave == "qtests") {
47  } else {
48  //edm::LogInfo("DQMFileSaverBase")
49  std::cerr << "Invalid 'referenceHandling' parameter '" << refsave << "'. Expected 'skip', 'all' or 'qtests'.";
50  }
51 
52  // Check minimum required quality test result for which reference is saved.
53  fp.saveReferenceQMin_ = ps.getUntrackedParameter<int>("referenceRequireStatus", dqm::qstatus::STATUS_OK);
54 
55  std::unique_lock<std::mutex> lck(initial_fp_lock_);
56  initial_fp_ = fp;
57 }
58 
60 
61 std::shared_ptr<NoCache> DQMFileSaverBase::globalBeginRun(const edm::Run &r, const edm::EventSetup &) const {
62  this->initRun();
63 
64  return nullptr;
65 }
66 
68  const edm::EventSetup &) const {
69  return nullptr;
70 }
71 
73  // not supported
74 }
75 
77  int ilumi = iLS.id().luminosityBlock();
78  int irun = iLS.id().run();
79 
80  std::unique_lock<std::mutex> lck(initial_fp_lock_);
82  lck.unlock();
83 
84  fp.lumi_ = ilumi;
85  fp.run_ = irun;
86 
87  this->saveLumi(fp);
88 
90  store->deleteUnusedLumiHistograms(store->mtEnabled() ? irun : 0, ilumi);
91 }
92 
93 void DQMFileSaverBase::globalEndRun(const edm::Run &iRun, const edm::EventSetup &) const {
94  std::unique_lock<std::mutex> lck(initial_fp_lock_);
96  lck.unlock();
97 
98  fp.run_ = iRun.id().run();
99 
100  // empty
101  this->saveRun(fp);
102 }
103 
105  char buf[256];
106  if (useLumi) {
107  snprintf(buf,
108  256,
109  "%s_V%04d_%s_R%09ld_L%09ld%s",
110  fp.producer_.c_str(),
111  fp.version_,
112  fp.tag_.c_str(),
113  fp.run_,
114  fp.lumi_,
115  fp.child_.c_str());
116  } else {
117  snprintf(buf,
118  256,
119  "%s_V%04d_%s_R%09ld%s",
120  fp.producer_.c_str(),
121  fp.version_,
122  fp.tag_.c_str(),
123  fp.run_,
124  fp.child_.c_str());
125  }
126  buf[255] = 0;
127 
128  namespace fs = boost::filesystem;
129  fs::path path(fp.path_);
130  fs::path file(buf);
131 
132  return (path / file).string();
133 }
134 
136  // Report the file to job report service.
138  if (jr.isAvailable()) {
139  std::map<std::string, std::string> info;
140  info["Source"] = "DQMStore";
141  info["FileClass"] = "DQM";
142  jr->reportAnalysisFile(filename, info);
143  }
144 }
145 
147  edm::LogAbsolute("fileAction") << std::setprecision(0) << edm::TimeOfDay() << " " << msg << fileName;
149 }
150 
152  desc.addUntracked<std::string>("tag", "UNKNOWN")->setComment("File tag, DQM_V000_<TAG>*, usually a subsytem name.");
153 
154  desc.addUntracked<std::string>("producer", "DQM")
155  ->setComment("Base prefix for files, <BASE>_V000_**, either 'DQM' or 'Playback'.");
156 
157  desc.addUntracked<std::string>("referenceHandling", "all")->setComment("saveReference_, passed to the DQMStore");
158 
159  desc.addUntracked<int>("referenceRequireStatus", dqm::qstatus::STATUS_OK)
160  ->setComment("saveReference_, passed to the DQMStore");
161 
162  desc.addUntracked<std::string>("path", "./")->setComment("Output path prefix.");
163 }
DQMFileSaverBase(const edm::ParameterSet &ps)
LuminosityBlockID id() const
T getUntrackedParameter(std::string const &, T const &) const
static const TGPicture * info(bool iBackgroundIsBlack)
void saveJobReport(const std::string &filename) const
RunID const & id() const
Definition: RunBase.h:39
virtual void saveRun(const FileParameters &fp) const
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
RunNumber_t run() const
Definition: RunID.h:36
void FlushMessageLog()
~DQMFileSaverBase() override
static const std::string filename(const FileParameters &fp, bool useLumi=false)
virtual void saveLumi(const FileParameters &fp) const
void deleteUnusedLumiHistograms(uint32_t run, uint32_t lumi)
Definition: DQMStore.cc:1836
virtual void initRun() const
bool isAvailable() const
Definition: Service.h:40
std::shared_ptr< NoCache > globalBeginRun(const edm::Run &, const edm::EventSetup &) const final
RunNumber_t run() const
void analyze(edm::StreamID, const edm::Event &e, const edm::EventSetup &) const final
std::shared_ptr< NoCache > globalBeginLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) const final
void logFileAction(const std::string &msg, const std::string &fileName) const
void globalEndRun(const edm::Run &, const edm::EventSetup &) const final
DQMStore::SaveReferenceTag saveReference_
LuminosityBlockNumber_t luminosityBlock() const
tuple msg
Definition: mps_check.py:285
FileParameters initial_fp_
void reportAnalysisFile(std::string const &fileName, std::map< std::string, std::string > const &fileData)
Definition: JobReport.cc:473
static const int STATUS_OK
static void fillDescription(edm::ParameterSetDescription &d)
void globalEndLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) const final
Definition: Run.h:45