CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DQMProtobufReader.cc
Go to the documentation of this file.
1 #include "DQMProtobufReader.h"
2 
6 
7 using namespace dqmservices;
8 
10  edm::InputSourceDescription const& desc)
11  : InputSource(pset, desc), fiterator_(pset) {
12 
13  flagSkipFirstLumis_ = pset.getUntrackedParameter<bool>("skipFirstLumis");
14  flagEndOfRunKills_ = pset.getUntrackedParameter<bool>("endOfRunKills");
15  flagDeleteDatFiles_ = pset.getUntrackedParameter<bool>("deleteDatFiles");
16 }
17 
19 
21  typedef DQMFileIterator::State State;
22  typedef DQMFileIterator::LumiEntry LumiEntry;
23 
24  fiterator_.logFileAction("getNextItemType");
25 
26  for (;;) {
28 
29  // check for end of run file and force quit
30  if (flagEndOfRunKills_ && (fiterator_.state() != State::OPEN)) {
31  return InputSource::IsStop;
32  }
33 
34  // check for end of run and quit if everything has been processed.
35  // this is the clean exit
36  if ((!fiterator_.lumiReady()) && (fiterator_.state() == State::EOR)) {
37 
38  return InputSource::IsStop;
39  }
40 
41  // skip to the next file if we have no files openned yet
42  if (fiterator_.lumiReady()) {
43  return InputSource::IsLumi;
44  }
45 
46  fiterator_.delay();
47  // BUG: for an unknown reason it fails after a certain time if we use IsSynchronize state
48  // comment out in order to block at this level
49  // the only downside is that we cannot Ctrl+C :)
50  //return InputSource::IsSynchronize;
51  }
52 
53  // this is unreachable
54 }
55 
56 boost::shared_ptr<edm::RunAuxiliary> DQMProtobufReader::readRunAuxiliary_() {
57  fiterator_.logFileAction("readRunAuxiliary_");
58 
61  return boost::shared_ptr<edm::RunAuxiliary>(aux);
62 };
63 
64 boost::shared_ptr<edm::LuminosityBlockAuxiliary>
66  fiterator_.logFileAction("readLuminosityBlockAuxiliary_");
67 
70  edm::Timestamp());
71 
72  return boost::shared_ptr<edm::LuminosityBlockAuxiliary>(aux);
73 };
74 
76  fiterator_.logFileAction("readRun_");
78 
80  std::vector<MonitorElement*> allMEs = store->getAllContents("");
81  for (auto const& ME : allMEs) {
82  ME->Reset();
83  }
84 }
85 
88 
89  fiterator_.logFileAction("readLuminosityBlock_");
91 
93  jr->reportInputLumiSection(lbCache.id().run(),
94  lbCache.id().luminosityBlock());
96 
97  // clear the old lumi histograms
98  std::vector<MonitorElement*> allMEs = store->getAllContents("");
99  for (auto const& ME : allMEs) {
100  // We do not want to reset Run Products here!
101  if (ME->getLumiFlag()) {
102  ME->Reset();
103  }
104  }
105 
106  // load the new file
109  if (!boost::filesystem::exists(p)) {
110  fiterator_.logFileAction("Data file is missing ", p);
111  fiterator_.pop();
112  return;
113  }
114 
115  fiterator_.logFileAction("Initiating request to open file ", p);
116  fiterator_.logFileAction("Successfully opened file ", p);
117  store->load(p);
118  fiterator_.logFileAction("Closed file ", p);
119  fiterator_.pop();
120 };
121 
123 
125  edm::ConfigurationDescriptions& descriptions) {
127 
128  desc.setComment(
129  "Creates runs and lumis and fills the dqmstore from protocol buffer "
130  "files.");
132 
133  desc.addUntracked<bool>("skipFirstLumis", false)->setComment(
134  "Skip (and ignore the minEventsPerLumi parameter) for the files "
135  "which have been available at the begining of the processing. "
136  "If set to true, the reader will open last available file for "
137  "processing.");
138 
139  desc.addUntracked<bool>("deleteDatFiles", false)->setComment(
140  "Delete data files after they have been closed, in order to "
141  "save disk space.");
142 
143  desc.addUntracked<bool>("endOfRunKills", false)->setComment(
144  "Kill the processing as soon as the end-of-run file appears, even if "
145  "there are/will be unprocessed lumisections.");
146 
148  descriptions.add("source", desc);
149 }
150 
153 
T getUntrackedParameter(std::string const &, T const &) const
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
virtual void readEvent_(edm::EventPrincipal &) override
tuple lumi
Definition: fjr2json.py:35
void fillRunPrincipal(ProcessHistoryRegistry const &processHistoryRegistry, DelayedReader *reader=0)
Definition: RunPrincipal.cc:22
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
virtual void readRun_(edm::RunPrincipal &rpCache) override
virtual void readLuminosityBlock_(edm::LuminosityBlockPrincipal &lbCache) override
std::string make_path_data(const LumiEntry &lumi)
Definition: ME.h:11
void setComment(std::string const &value)
std::vector< MonitorElement * > getAllContents(const std::string &path, uint32_t runNumber=0, uint32_t lumi=0) const
Definition: DQMStore.cc:1909
virtual boost::shared_ptr< edm::RunAuxiliary > readRunAuxiliary_() override
virtual boost::shared_ptr< edm::LuminosityBlockAuxiliary > readLuminosityBlockAuxiliary_() override
void fillLuminosityBlockPrincipal(ProcessHistoryRegistry const &processHistoryRegistry, DelayedReader *reader=0)
#define DEFINE_FWK_INPUT_SOURCE(type)
void reportInputLumiSection(unsigned int run, unsigned int lumiSectId)
Definition: JobReport.cc:544
RunNumber_t run() const
void logFileAction(const std::string &msg, const std::string &fileName="") const
static void fillDescription(ParameterSetDescription &desc)
bool load(const std::string &filename, OpenRunDirs stripdirs=StripRunDirs, bool fileMustExist=true)
Definition: DQMStore.cc:2860
LuminosityBlockNumber_t luminosityBlock() const
void add(std::string const &label, ParameterSetDescription const &psetDescription)
ProcessHistoryRegistry & processHistoryRegistryForUpdate()
Non-const accessor for process history registry.
Definition: InputSource.h:174
virtual edm::InputSource::ItemType getNextItemType() override
static void fillDescription(edm::ParameterSetDescription &d)
DQMProtobufReader(edm::ParameterSet const &, edm::InputSourceDescription const &)
Helper class to handle FWLite file input sources.