CMS 3D CMS Logo

DQMRootSource.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: FwkIO
4 // Class : DQMRootSource
5 //
6 // Implementation:
7 // [Notes on implementation]
8 //
9 // Original Author: Chris Jones
10 // Created: Tue May 3 11:13:47 CDT 2011
11 //
12 
13 // system include files
14 #include <vector>
15 #include <string>
16 #include <map>
17 #include "TFile.h"
18 #include "TTree.h"
19 #include "TString.h"
20 
24 
30 
33 
39 
42 
45 
49 
50 #include "format.h"
51 
52 // class rather than namespace so we can make this a friend of the
53 // MonitorElement to get access to constructors etc.
54 struct DQMTTreeIO {
57 
58  // TODO: this should probably be moved somewhere else
60  public:
61  // Utility function to check the consistency of the axis labels
62  // Taken from TH1::CheckBinLabels which is not public
63  static bool CheckBinLabels(const TAxis* a1, const TAxis* a2) {
64  // Check that axis have same labels
65  THashList* l1 = (const_cast<TAxis*>(a1))->GetLabels();
66  THashList* l2 = (const_cast<TAxis*>(a2))->GetLabels();
67 
68  if (!l1 && !l2)
69  return true;
70  if (!l1 || !l2) {
71  return false;
72  }
73 
74  // Check now labels sizes are the same
75  if (l1->GetSize() != l2->GetSize()) {
76  return false;
77  }
78 
79  for (int i = 1; i <= a1->GetNbins(); ++i) {
80  std::string_view label1 = a1->GetBinLabel(i);
81  std::string_view label2 = a2->GetBinLabel(i);
82  if (label1 != label2) {
83  return false;
84  }
85  }
86 
87  return true;
88  }
89 
90  // NOTE: the merge logic comes from DataFormats/Histograms/interface/MEtoEDMFormat.h
91  static void mergeTogether(TH1* original, TH1* toAdd) {
92  if (original->CanExtendAllAxes() && toAdd->CanExtendAllAxes()) {
93  TList list;
94  list.Add(toAdd);
95  if (original->Merge(&list) == -1) {
96  edm::LogError("MergeFailure") << "Failed to merge DQM element " << original->GetName();
97  }
98  } else {
99  // TODO: Redo. This is both more strict than what ROOT checks for yet
100  // allows cases where ROOT fails with merging.
101  if (original->GetNbinsX() == toAdd->GetNbinsX() &&
102  original->GetXaxis()->GetXmin() == toAdd->GetXaxis()->GetXmin() &&
103  original->GetXaxis()->GetXmax() == toAdd->GetXaxis()->GetXmax() &&
104  original->GetNbinsY() == toAdd->GetNbinsY() &&
105  original->GetYaxis()->GetXmin() == toAdd->GetYaxis()->GetXmin() &&
106  original->GetYaxis()->GetXmax() == toAdd->GetYaxis()->GetXmax() &&
107  original->GetNbinsZ() == toAdd->GetNbinsZ() &&
108  original->GetZaxis()->GetXmin() == toAdd->GetZaxis()->GetXmin() &&
109  original->GetZaxis()->GetXmax() == toAdd->GetZaxis()->GetXmax() &&
110  CheckBinLabels(original->GetXaxis(), toAdd->GetXaxis()) &&
111  CheckBinLabels(original->GetYaxis(), toAdd->GetYaxis()) &&
112  CheckBinLabels(original->GetZaxis(), toAdd->GetZaxis())) {
113  original->Add(toAdd);
114  } else {
115  edm::LogError("MergeFailure") << "Found histograms with different axis limits or different labels '"
116  << original->GetName() << "' not merged.";
117  }
118  }
119  }
120  };
121 
122  // This struct allows to find all MEs belonging to a run-lumi pair
123  // All files will be open at once so m_file property indicates the file where data is saved.
124  struct FileMetadata {
125  unsigned int m_run;
126  unsigned int m_lumi;
127  ULong64_t m_beginTime;
128  ULong64_t m_endTime;
129  ULong64_t m_firstIndex;
130  ULong64_t m_lastIndex; // Last is inclusive
131  unsigned int m_type;
132  TFile* m_file;
133 
134  // This will be used when sorting a vector
135  bool operator<(const FileMetadata& obj) const {
136  if (m_run == obj.m_run)
137  return m_lumi < obj.m_lumi;
138  else
139  return m_run < obj.m_run;
140  }
141 
142  void describe() {
143  std::cout << "read r:" << m_run << " l:" << m_lumi << " bt:" << m_beginTime << " et:" << m_endTime
144  << " fi:" << m_firstIndex << " li:" << m_lastIndex << " type:" << m_type << " file: " << m_file
145  << std::endl;
146  }
147  };
148 
150  public:
152  : m_kind(kind), m_rescope(rescope) {}
153  virtual ~TreeReaderBase() {}
154 
155  MonitorElementData::Key makeKey(std::string const& fullname, int run, int lumi) {
157  key.kind_ = m_kind;
159  if (m_rescope == MonitorElementData::Scope::LUMI) {
160  // no rescoping
161  key.scope_ = lumi == 0 ? MonitorElementData::Scope::RUN : MonitorElementData::Scope::LUMI;
163  } else if (m_rescope == MonitorElementData::Scope::RUN) {
164  // everything becomes run, we'll never see Scope::JOB inside DQMIO files.
165  key.scope_ = MonitorElementData::Scope::RUN;
166  key.id_ = edm::LuminosityBlockID(run, 0);
167  } else if (m_rescope == MonitorElementData::Scope::JOB) {
168  // Everything is aggregated over the entire job.
169  key.scope_ = MonitorElementData::Scope::JOB;
170  key.id_ = edm::LuminosityBlockID(0, 0);
171  } else {
172  assert(!"Invalid Scope in rescope option.");
173  }
174  return key;
175  }
176  virtual void read(ULong64_t iIndex, DQMStore* dqmstore, int run, int lumi) = 0;
177  virtual void setTree(TTree* iTree) = 0;
178 
179  protected:
182  };
183 
184  template <class T>
186  public:
191  }
192 
193  void read(ULong64_t iIndex, DQMStore* dqmstore, int run, int lumi) override {
194  // This will populate the fields as defined in setTree method
195  m_tree->GetEntry(iIndex);
196 
197  auto key = makeKey(*m_fullName, run, lumi);
198  auto existing = dqmstore->findOrRecycle(key);
199  if (existing) {
200  // TODO: make sure there is sufficient locking here.
202  } else {
203  // We make our own MEs here, to avoid a round-trip through the booking API.
204  MonitorElementData meData;
205  meData.key_ = key;
206  meData.value_.object_ = std::unique_ptr<T>((T*)(m_buffer->Clone()));
207  auto me = new MonitorElement(std::move(meData));
208  dqmstore->putME(me);
209  }
210  }
211 
212  void setTree(TTree* iTree) override {
213  m_tree = iTree;
214  m_tree->SetBranchAddress(kFullNameBranch, &m_fullName);
215  m_tree->SetBranchAddress(kFlagBranch, &m_tag);
216  m_tree->SetBranchAddress(kValueBranch, &m_buffer);
217  }
218 
219  private:
220  TTree* m_tree = nullptr;
222  T* m_buffer = nullptr;
223  uint32_t m_tag = 0;
224  };
225 
227  public:
230  }
231 
232  void read(ULong64_t iIndex, DQMStore* dqmstore, int run, int lumi) override {
233  // This will populate the fields as defined in setTree method
234  m_tree->GetEntry(iIndex);
235 
236  auto key = makeKey(*m_fullName, run, lumi);
237  auto existing = dqmstore->findOrRecycle(key);
238 
239  if (existing) {
240  existing->Fill(*m_value);
241  } else {
242  // We make our own MEs here, to avoid a round-trip through the booking API.
243  MonitorElementData meData;
244  meData.key_ = key;
245  meData.value_.scalar_.str = *m_value;
246  auto me = new MonitorElement(std::move(meData));
247  dqmstore->putME(me);
248  }
249  }
250 
251  void setTree(TTree* iTree) override {
252  m_tree = iTree;
253  m_tree->SetBranchAddress(kFullNameBranch, &m_fullName);
254  m_tree->SetBranchAddress(kFlagBranch, &m_tag);
255  m_tree->SetBranchAddress(kValueBranch, &m_value);
256  }
257 
258  private:
259  TTree* m_tree = nullptr;
261  std::string* m_value = nullptr;
262  uint32_t m_tag = 0;
263  };
264 
265  template <class T>
267  public:
270  }
271 
272  void read(ULong64_t iIndex, DQMStore* dqmstore, int run, int lumi) override {
273  // This will populate the fields as defined in setTree method
274  m_tree->GetEntry(iIndex);
275 
276  auto key = makeKey(*m_fullName, run, lumi);
277  auto existing = dqmstore->findOrRecycle(key);
278 
279  if (existing) {
280  existing->Fill(m_buffer);
281  } else {
282  // We make our own MEs here, to avoid a round-trip through the booking API.
283  MonitorElementData meData;
284  meData.key_ = key;
286  meData.value_.scalar_.num = m_buffer;
288  meData.value_.scalar_.real = m_buffer;
289  auto me = new MonitorElement(std::move(meData));
290  dqmstore->putME(me);
291  }
292  }
293 
294  void setTree(TTree* iTree) override {
295  m_tree = iTree;
296  m_tree->SetBranchAddress(kFullNameBranch, &m_fullName);
297  m_tree->SetBranchAddress(kFlagBranch, &m_tag);
298  m_tree->SetBranchAddress(kValueBranch, &m_buffer);
299  }
300 
301  private:
302  TTree* m_tree = nullptr;
304  T m_buffer = 0;
305  uint32_t m_tag = 0;
306  };
307 };
308 
310 public:
312  ~DQMRootSource() override;
313 
314  // ---------- const member functions ---------------------
315 
316  // ---------- static member functions --------------------
317 
318  // ---------- member functions ---------------------------
319  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
320 
321 private:
322  DQMRootSource(const DQMRootSource&) = delete;
323 
325 
326  std::unique_ptr<edm::FileBlock> readFile_() override;
327  std::shared_ptr<edm::RunAuxiliary> readRunAuxiliary_() override;
328  std::shared_ptr<edm::LuminosityBlockAuxiliary> readLuminosityBlockAuxiliary_() override;
329  void readRun_(edm::RunPrincipal& rpCache) override;
330  void readLuminosityBlock_(edm::LuminosityBlockPrincipal& lbCache) override;
331  void readEvent_(edm::EventPrincipal&) override;
332 
333  // Read MEs from m_fileMetadatas to DQMStore till run or lumi transition
334  void readElements();
335  // True if m_currentIndex points to an element that has a different
336  // run or lumi than the previous element (a transition needs to happen).
337  // False otherwise.
338  bool isRunOrLumiTransition() const;
339  void readNextItemType();
340 
341  // These methods will be called by the framework.
342  // MEs in DQMStore will be put to products.
343  void beginRun(edm::Run& run) override;
345 
346  // If the run matches the filterOnRun configuration parameter, the run
347  // (and all its lumis) will be kept.
348  // Otherwise, check if a run and a lumi are in the range that needs to be processed.
349  // Range is retrieved from lumisToProcess configuration parameter.
350  // If at least one lumi of a run needs to be kept, per run MEs of that run will also be kept.
352  void logFileAction(char const* msg, char const* fileName) const;
353 
354  const DQMRootSource& operator=(const DQMRootSource&) = delete; // stop default
355 
356  // ---------- member data --------------------------------
357 
358  // Properties from python config
360  unsigned int m_filterOnRun;
362  std::vector<edm::LuminosityBlockRange> m_lumisToProcess;
364 
366  // Each ME type gets its own reader
367  std::vector<std::shared_ptr<TreeReaderBase>> m_treeReaders;
368 
369  // Index of currenlty processed row in m_fileMetadatas
370  unsigned int m_currentIndex;
371  // All open DQMIO files
372  std::vector<TFile*> m_openFiles;
373  // An item here is a row read from DQMIO indices (metadata) table
374  std::vector<FileMetadata> m_fileMetadatas;
375 };
376 
377 //
378 // constants, enums and typedefs
379 //
380 
381 //
382 // static data member definitions
383 //
384 
387  desc.addUntracked<std::vector<std::string>>("fileNames")->setComment("Names of files to be processed.");
388  desc.addUntracked<unsigned int>("filterOnRun", 0)->setComment("Just limit the process to the selected run.");
389  desc.addUntracked<std::string>("reScope", "JOB")
390  ->setComment(
391  "Accumulate histograms more coarsely."
392  " Options: \"\": keep unchanged, \"RUN\": turn LUMI histograms into RUN histograms, \"JOB\": turn everything "
393  "into JOB histograms.");
394  desc.addUntracked<bool>("skipBadFiles", false)->setComment("Skip the file if it is not valid");
395  desc.addUntracked<std::string>("overrideCatalog", std::string())
396  ->setComment("An alternate file catalog to use instead of the standard site one.");
397  std::vector<edm::LuminosityBlockRange> defaultLumis;
398  desc.addUntracked<std::vector<edm::LuminosityBlockRange>>("lumisToProcess", defaultLumis)
399  ->setComment("Skip any lumi inside the specified run:lumi range.");
400 
401  descriptions.addDefault(desc);
402 }
403 
404 //
405 // constructors and destructor
406 //
407 
409  : edm::PuttableSourceBase(iPSet, iDesc),
410  m_skipBadFiles(iPSet.getUntrackedParameter<bool>("skipBadFiles", false)),
411  m_filterOnRun(iPSet.getUntrackedParameter<unsigned int>("filterOnRun", 0)),
412  m_catalog(iPSet.getUntrackedParameter<std::vector<std::string>>("fileNames"),
413  iPSet.getUntrackedParameter<std::string>("overrideCatalog")),
414  m_lumisToProcess(iPSet.getUntrackedParameter<std::vector<edm::LuminosityBlockRange>>(
415  "lumisToProcess", std::vector<edm::LuminosityBlockRange>())),
416  m_rescope(std::map<std::string, MonitorElementData::Scope>{
417  {"", MonitorElementData::Scope::LUMI},
418  {"LUMI", MonitorElementData::Scope::LUMI},
419  {"RUN", MonitorElementData::Scope::RUN},
420  {"JOB", MonitorElementData::Scope::JOB}}[iPSet.getUntrackedParameter<std::string>("reScope", "JOB")]),
421  m_nextItemType(edm::InputSource::IsFile),
422  m_treeReaders(kNIndicies, std::shared_ptr<TreeReaderBase>()),
423  m_currentIndex(0),
424  m_openFiles(std::vector<TFile*>()),
425  m_fileMetadatas(std::vector<FileMetadata>()) {
426  edm::sortAndRemoveOverlaps(m_lumisToProcess);
427 
428  if (m_catalog.fileNames(0).empty()) {
429  m_nextItemType = edm::InputSource::IsStop;
430  } else {
431  m_treeReaders[kIntIndex].reset(new TreeSimpleReader<Long64_t>(MonitorElementData::Kind::INT, m_rescope));
432  m_treeReaders[kFloatIndex].reset(new TreeSimpleReader<double>(MonitorElementData::Kind::REAL, m_rescope));
433  m_treeReaders[kStringIndex].reset(new TreeStringReader(MonitorElementData::Kind::STRING, m_rescope));
434  m_treeReaders[kTH1FIndex].reset(new TreeObjectReader<TH1F>(MonitorElementData::Kind::TH1F, m_rescope));
435  m_treeReaders[kTH1SIndex].reset(new TreeObjectReader<TH1S>(MonitorElementData::Kind::TH1S, m_rescope));
436  m_treeReaders[kTH1DIndex].reset(new TreeObjectReader<TH1D>(MonitorElementData::Kind::TH1D, m_rescope));
437  m_treeReaders[kTH2FIndex].reset(new TreeObjectReader<TH2F>(MonitorElementData::Kind::TH2F, m_rescope));
438  m_treeReaders[kTH2SIndex].reset(new TreeObjectReader<TH2S>(MonitorElementData::Kind::TH2S, m_rescope));
439  m_treeReaders[kTH2DIndex].reset(new TreeObjectReader<TH2D>(MonitorElementData::Kind::TH2D, m_rescope));
440  m_treeReaders[kTH3FIndex].reset(new TreeObjectReader<TH3F>(MonitorElementData::Kind::TH3F, m_rescope));
441  m_treeReaders[kTProfileIndex].reset(new TreeObjectReader<TProfile>(MonitorElementData::Kind::TPROFILE, m_rescope));
442  m_treeReaders[kTProfile2DIndex].reset(
443  new TreeObjectReader<TProfile2D>(MonitorElementData::Kind::TPROFILE2D, m_rescope));
444  }
445 
446  produces<DQMToken, edm::Transition::BeginRun>("DQMGenerationRecoRun");
447  produces<DQMToken, edm::Transition::BeginLuminosityBlock>("DQMGenerationRecoLumi");
448 }
449 
451  for (auto& file : m_openFiles) {
452  if (file != nullptr && file->IsOpen()) {
453  file->Close();
454  logFileAction("Closed file", "");
455  }
456  }
457 }
458 
459 //
460 // member functions
461 //
462 
464 
465 // We will read the metadata of all files and fill m_fileMetadatas vector
466 std::unique_ptr<edm::FileBlock> DQMRootSource::readFile_() {
467  const int numFiles = m_catalog.fileNames(0).size();
468  m_openFiles.reserve(numFiles);
469 
470  for (auto& fileitem : m_catalog.fileCatalogItems()) {
471  TFile* file;
472  std::list<std::string> exInfo;
473  //loop over names of a file, each of them corresponds to a data catalog
474  bool isGoodFile(true);
475  //get all names of a file, each of them corresponds to a data catalog
476  const std::vector<std::string>& fNames = fileitem.fileNames();
477  for (std::vector<std::string>::const_iterator it = fNames.begin(); it != fNames.end(); ++it) {
478  // Try to open a file
479  try {
480  file = TFile::Open(it->c_str());
481 
482  // Exception will be trapped so we pull it out ourselves
483  std::exception_ptr e = edm::threadLocalException::getException();
484  if (e != std::exception_ptr()) {
485  edm::threadLocalException::setException(std::exception_ptr());
486  std::rethrow_exception(e);
487  }
488 
489  } catch (cms::Exception const& e) {
490  file = nullptr; // is there anything we need to free?
491  if (std::next(it) == fNames.end()) { //last name corresponding to the last data catalog to try
492  if (!m_skipBadFiles) {
494  ex.addContext("Opening DQM Root file");
495  ex << "\nInput file " << it->c_str() << " was not found, could not be opened, or is corrupted.\n";
496  //report previous exceptions when use other names to open file
497  for (auto const& s : exInfo)
498  ex.addAdditionalInfo(s);
499  throw ex;
500  }
501  isGoodFile = false;
502  }
503  // save in case of error when trying next name
504  for (auto const& s : e.additionalInfo())
505  exInfo.push_back(s);
506  }
507 
508  // Check if a file is usable
509  if (file && !file->IsZombie()) {
510  logFileAction("Successfully opened file ", it->c_str());
511  break;
512  } else {
513  if (std::next(it) == fNames.end()) {
514  if (!m_skipBadFiles) {
516  ex << "Input file " << it->c_str() << " could not be opened.\n";
517  ex.addContext("Opening DQM Root file");
518  //report previous exceptions when use other names to open file
519  for (auto const& s : exInfo)
520  ex.addAdditionalInfo(s);
521  throw ex;
522  }
523  isGoodFile = false;
524  }
525  if (file) {
526  delete file;
527  file = nullptr;
528  }
529  }
530  } //end loop over names of the file
531 
532  if (!isGoodFile && m_skipBadFiles)
533  continue;
534 
535  m_openFiles.insert(m_openFiles.begin(), file);
536 
537  // Check file format version, which is encoded in the Title of the TFile
538  if (strcmp(file->GetTitle(), "1") != 0) {
540  ex << "Input file " << fNames[0].c_str() << " does not appear to be a DQM Root file.\n";
541  }
542 
543  // Read metadata from the file
544  TTree* indicesTree = dynamic_cast<TTree*>(file->Get(kIndicesTree));
545  assert(indicesTree != nullptr);
546 
547  FileMetadata temp;
548  // Each line of metadata will be read into the coresponding fields of temp.
549  indicesTree->SetBranchAddress(kRunBranch, &temp.m_run);
550  indicesTree->SetBranchAddress(kLumiBranch, &temp.m_lumi);
551  indicesTree->SetBranchAddress(kBeginTimeBranch, &temp.m_beginTime);
552  indicesTree->SetBranchAddress(kEndTimeBranch, &temp.m_endTime);
553  indicesTree->SetBranchAddress(kTypeBranch, &temp.m_type);
554  indicesTree->SetBranchAddress(kFirstIndex, &temp.m_firstIndex);
555  indicesTree->SetBranchAddress(kLastIndex, &temp.m_lastIndex);
556 
557  for (Long64_t index = 0; index != indicesTree->GetEntries(); ++index) {
558  indicesTree->GetEntry(index);
559  temp.m_file = file;
560 
561  if (keepIt(temp.m_run, temp.m_lumi)) {
562  m_fileMetadatas.push_back(temp);
563  }
564  }
565 
566  } //end loop over files
567 
568  // Sort to make sure runs and lumis appear in sequential order
569  std::stable_sort(m_fileMetadatas.begin(), m_fileMetadatas.end());
570 
571  // If we have lumisections without matching runs, insert dummy runs here.
572  unsigned int run = 0;
573  auto toadd = std::vector<FileMetadata>();
574  for (auto& metadata : m_fileMetadatas) {
575  if (run < metadata.m_run && metadata.m_lumi != 0) {
576  // run transition and lumi transition at the same time!
577  FileMetadata dummy{}; // zero initialize
578  dummy.m_run = metadata.m_run;
579  dummy.m_lumi = 0;
580  dummy.m_type = kNoTypesStored;
581  toadd.push_back(dummy);
582  }
583  run = metadata.m_run;
584  }
585 
586  if (!toadd.empty()) {
587  // rather than trying to insert at the right places, just append and sort again.
588  m_fileMetadatas.insert(m_fileMetadatas.end(), toadd.begin(), toadd.end());
589  std::stable_sort(m_fileMetadatas.begin(), m_fileMetadatas.end());
590  }
591 
592  //for (auto& metadata : m_fileMetadatas)
593  // metadata.describe();
594 
595  // Stop if there's nothing to process. Otherwise start the run.
596  if (m_fileMetadatas.empty())
598  else
600 
601  // We have to return something but not sure why
602  return std::unique_ptr<edm::FileBlock>(new edm::FileBlock);
603 }
604 
605 std::shared_ptr<edm::RunAuxiliary> DQMRootSource::readRunAuxiliary_() {
606  FileMetadata metadata = m_fileMetadatas[m_currentIndex];
607  auto runAux =
608  edm::RunAuxiliary(metadata.m_run, edm::Timestamp(metadata.m_beginTime), edm::Timestamp(metadata.m_endTime));
609  return std::make_shared<edm::RunAuxiliary>(runAux);
610 }
611 
612 std::shared_ptr<edm::LuminosityBlockAuxiliary> DQMRootSource::readLuminosityBlockAuxiliary_() {
613  FileMetadata metadata = m_fileMetadatas[m_currentIndex];
615  edm::Timestamp(metadata.m_beginTime),
616  edm::Timestamp(metadata.m_endTime));
617  return std::make_shared<edm::LuminosityBlockAuxiliary>(lumiAux);
618 }
619 
621  // Read elements of a current run.
622  do {
623  FileMetadata metadata = m_fileMetadatas[m_currentIndex];
624  if (metadata.m_lumi == 0) {
625  readElements();
626  }
627  m_currentIndex++;
628  } while (!isRunOrLumiTransition());
629 
631 
633  jr->reportInputRunNumber(rpCache.id().run());
635 }
636 
638  // Read elements of a current lumi.
639  do {
640  readElements();
641  m_currentIndex++;
642  } while (!isRunOrLumiTransition());
643 
645 
647  jr->reportInputLumiSection(lbCache.id().run(), lbCache.id().luminosityBlock());
649 }
650 
652 
654  FileMetadata metadata = m_fileMetadatas[m_currentIndex];
655 
656  if (metadata.m_type != kNoTypesStored) {
657  std::shared_ptr<TreeReaderBase> reader = m_treeReaders[metadata.m_type];
658  TTree* tree = dynamic_cast<TTree*>(metadata.m_file->Get(kTypeNames[metadata.m_type]));
659  reader->setTree(tree);
660 
661  ULong64_t index = metadata.m_firstIndex;
662  ULong64_t endIndex = metadata.m_lastIndex + 1;
663 
664  for (; index != endIndex; ++index) {
665  reader->read(index, edm::Service<DQMStore>().operator->(), metadata.m_run, metadata.m_lumi);
666  }
667  }
668 }
669 
671  if (m_currentIndex == 0) {
672  return false;
673  }
674 
675  if (m_currentIndex > m_fileMetadatas.size() - 1) {
676  // We reached the end
677  return true;
678  }
679 
680  FileMetadata previousMetadata = m_fileMetadatas[m_currentIndex - 1];
681  FileMetadata metadata = m_fileMetadatas[m_currentIndex];
682 
683  return previousMetadata.m_run != metadata.m_run || previousMetadata.m_lumi != metadata.m_lumi;
684 }
685 
687  if (m_currentIndex == 0) {
689  } else if (m_currentIndex > m_fileMetadatas.size() - 1) {
690  // We reached the end
692  } else {
693  FileMetadata previousMetadata = m_fileMetadatas[m_currentIndex - 1];
694  FileMetadata metadata = m_fileMetadatas[m_currentIndex];
695 
696  if (previousMetadata.m_run != metadata.m_run) {
698  } else if (previousMetadata.m_lumi != metadata.m_lumi) {
700  }
701  }
702 }
703 
705  std::unique_ptr<DQMToken> product = std::make_unique<DQMToken>();
706  run.put(std::move(product), "DQMGenerationRecoRun");
707 }
708 
710  std::unique_ptr<DQMToken> product = std::make_unique<DQMToken>();
711  lumi.put(std::move(product), "DQMGenerationRecoLumi");
712 }
713 
715  if (m_filterOnRun != 0 && run != m_filterOnRun) {
716  return false;
717  }
718 
719  if (m_lumisToProcess.empty()) {
720  return true;
721  }
722 
723  for (edm::LuminosityBlockRange const& lumiToProcess : m_lumisToProcess) {
724  if (run >= lumiToProcess.startRun() && run <= lumiToProcess.endRun()) {
725  if (lumi >= lumiToProcess.startLumi() && lumi <= lumiToProcess.endLumi()) {
726  return true;
727  } else if (lumi == 0) {
728  return true;
729  }
730  }
731  }
732  return false;
733 }
734 
735 void DQMRootSource::logFileAction(char const* msg, char const* fileName) const {
736  edm::LogAbsolute("fileAction") << std::setprecision(0) << edm::TimeOfDay() << msg << fileName;
738 }
739 
740 //
741 // const member functions
742 //
743 
744 //
745 // static member functions
746 //
edm::RunPrincipal::id
RunID const & id() const
Definition: RunPrincipal.h:65
ConfigurationDescriptions.h
DQMRootSource::m_nextItemType
edm::InputSource::ItemType m_nextItemType
Definition: DQMRootSource.cc:365
kValueBranch
static const char *const kValueBranch
Definition: format.h:55
DQMTTreeIO::TreeObjectReader::read
void read(ULong64_t iIndex, DQMStore *dqmstore, int run, int lumi) override
Definition: DQMRootSource.cc:193
edm::LogAbsolute
Definition: MessageLogger.h:469
edm::RunNumber_t
unsigned int RunNumber_t
Definition: RunLumiEventNumber.h:14
kLastIndex
static const char *const kLastIndex
Definition: format.h:66
DQMTTreeIO::FileMetadata::m_beginTime
ULong64_t m_beginTime
Definition: DQMRootSource.cc:127
electrons_cff.bool
bool
Definition: electrons_cff.py:372
mps_fire.i
i
Definition: mps_fire.py:355
DQMRootSource::DQMRootSource
DQMRootSource(edm::ParameterSet const &, const edm::InputSourceDescription &)
Definition: DQMRootSource.cc:408
DQMRootSource::keepIt
bool keepIt(edm::RunNumber_t, edm::LuminosityBlockNumber_t) const
Definition: DQMRootSource.cc:714
dqm::implementation::DQMStore::findOrRecycle
MonitorElement * findOrRecycle(MonitorElementData::Key const &)
Definition: DQMStore.cc:317
kTProfileIndex
Definition: format.h:33
MessageLogger.h
funct::false
false
Definition: Factorize.h:34
MonitorElementData::Kind::INT
DQMTTreeIO::TreeObjectReader::m_fullName
std::string * m_fullName
Definition: DQMRootSource.cc:221
DQMRootSource::readRun_
void readRun_(edm::RunPrincipal &rpCache) override
Definition: DQMRootSource.cc:620
cms::Exception::addContext
void addContext(std::string const &context)
Definition: Exception.cc:165
DQMTTreeIO::TreeObjectReader::setTree
void setTree(TTree *iTree) override
Definition: DQMRootSource.cc:212
edm::TimeOfDay
Definition: TimeOfDay.h:9
DQMTTreeIO::FileMetadata::m_lumi
unsigned int m_lumi
Definition: DQMRootSource.cc:126
DQMTTreeIO::TreeSimpleReader::TreeSimpleReader
TreeSimpleReader(MonitorElementData::Kind kind, MonitorElementData::Scope rescope)
Definition: DQMRootSource.cc:268
MonitorElementData::Scalar::num
int64_t num
Definition: MonitorElementCollection.h:46
edm::LuminosityBlock
Definition: LuminosityBlock.h:50
edm::RunID::run
RunNumber_t run() const
Definition: RunID.h:36
MonitorElementData::Kind::TH1S
edm::Run
Definition: Run.h:45
MonitorElementData::Scalar::real
double real
Definition: MonitorElementCollection.h:47
DQMRootSource::operator=
const DQMRootSource & operator=(const DQMRootSource &)=delete
edm::JobReport::reportInputLumiSection
void reportInputLumiSection(unsigned int run, unsigned int lumiSectId)
Definition: JobReport.cc:465
LuminosityBlock.h
MonitorElementData::Kind::TH1F
edm
HLT enums.
Definition: AlignableModifier.h:19
DQMTTreeIO::FileMetadata::m_firstIndex
ULong64_t m_firstIndex
Definition: DQMRootSource.cc:129
DQMRootSource::m_skipBadFiles
bool m_skipBadFiles
Definition: DQMRootSource.cc:359
tree
Definition: tree.py:1
gather_cfg.cout
cout
Definition: gather_cfg.py:144
MonitorElementData::Kind::STRING
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
format.h
DQMTTreeIO::FileMetadata::m_run
unsigned int m_run
Definition: DQMRootSource.cc:125
edm::LuminosityBlockPrincipal
Definition: LuminosityBlockPrincipal.h:31
ExceptionPropagate.h
dqmPostProcessing_online.existing
existing
Definition: dqmPostProcessing_online.py:126
edm::InputSourceDescription
Definition: InputSourceDescription.h:20
DQMTTreeIO::TreeReaderBase::m_rescope
MonitorElementData::Scope m_rescope
Definition: DQMRootSource.cc:181
cms::cuda::assert
assert(be >=bs)
edm::InputFileCatalog::fileNames
std::vector< std::string > fileNames(unsigned iCatalog) const
Definition: InputFileCatalog.cc:26
edm::sortAndRemoveOverlaps
std::vector< EventRange > & sortAndRemoveOverlaps(std::vector< EventRange > &eventRange)
Definition: EventRange.cc:98
DQMStore.h
dqm::legacy::MonitorElement
Definition: MonitorElement.h:461
mps_check.msg
tuple msg
Definition: mps_check.py:285
ProcessHistoryRegistry.h
edm::InputFileCatalog
Definition: InputFileCatalog.h:32
edm::threadLocalException::getException
std::exception_ptr getException()
Definition: ExceptionPropagate.cc:7
PuttableSourceBase.h
kFullNameBranch
static const char *const kFullNameBranch
Definition: format.h:53
InputFileCatalog.h
MillePedeFileConverter_cfg.fileName
fileName
Definition: MillePedeFileConverter_cfg.py:32
kLumiBranch
static const char *const kLumiBranch
Definition: format.h:60
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
edm::LuminosityBlockNumber_t
unsigned int LuminosityBlockNumber_t
Definition: RunLumiEventNumber.h:13
MonitorElementData::key_
Key key_
Definition: MonitorElementCollection.h:245
DQMRootSource::~DQMRootSource
~DQMRootSource() override
Definition: DQMRootSource.cc:450
LuminosityBlockID.h
DQMTTreeIO::TreeSimpleReader::m_buffer
T m_buffer
Definition: DQMRootSource.cc:304
edm::InputSource::processHistoryRegistryForUpdate
ProcessHistoryRegistry & processHistoryRegistryForUpdate()
Definition: InputSource.h:327
MonitorElementData::Kind::TH2D
DQMTTreeIO::TreeReaderBase::makeKey
MonitorElementData::Key makeKey(std::string const &fullname, int run, int lumi)
Definition: DQMRootSource.cc:155
DQMTTreeIO::TreeSimpleReader
Definition: DQMRootSource.cc:266
edm::errors::FileOpenError
Definition: EDMException.h:49
Utilities.operator
operator
Definition: Utilities.py:24
testProducerWithPsetDescEmpty_cfi.a2
a2
Definition: testProducerWithPsetDescEmpty_cfi.py:35
edm::InputSource::IsRun
Definition: InputSource.h:78
edm::Exception
Definition: EDMException.h:77
edm::LuminosityBlockPrincipal::aux
LuminosityBlockAuxiliary const & aux() const
Definition: LuminosityBlockPrincipal.h:64
DQMTTreeIO::FileMetadata
Definition: DQMRootSource.cc:124
DQMTTreeIO::FileMetadata::m_file
TFile * m_file
Definition: DQMRootSource.cc:132
MonitorElementData::Kind::TH2F
edm::FileBlock
Definition: FileBlock.h:20
edm::LuminosityBlockAuxiliary
Definition: LuminosityBlockAuxiliary.h:15
DQMRootSource::readRunAuxiliary_
std::shared_ptr< edm::RunAuxiliary > readRunAuxiliary_() override
Definition: DQMRootSource.cc:605
DQMTTreeIO::FileMetadata::describe
void describe()
Definition: DQMRootSource.cc:142
DQMTTreeIO::TreeObjectReader::m_tree
TTree * m_tree
Definition: DQMRootSource.cc:220
DQMTTreeIO::TreeReaderBase::~TreeReaderBase
virtual ~TreeReaderBase()
Definition: DQMRootSource.cc:153
DQMTTreeIO::FileMetadata::m_endTime
ULong64_t m_endTime
Definition: DQMRootSource.cc:128
kTypeNames
static const char *const kTypeNames[]
Definition: format.h:39
alignCSCRings.s
s
Definition: alignCSCRings.py:92
DQMRootSource::isRunOrLumiTransition
bool isRunOrLumiTransition() const
Definition: DQMRootSource.cc:670
edm::EventPrincipal
Definition: EventPrincipal.h:46
dqm::legacy::DQMStore
Definition: DQMStore.h:727
MonitorElementData::Path::Type::DIR_AND_NAME
MonitorElementData::Key
Definition: MonitorElementCollection.h:224
DQMTTreeIO
Definition: DQMRootSource.cc:54
kNoTypesStored
Definition: format.h:36
DQMToken.h
DQM.reader
reader
Definition: DQM.py:105
bTagCommon_cff.label2
label2
Definition: bTagCommon_cff.py:168
DQMTTreeIO::TreeObjectReader::TreeObjectReader
TreeObjectReader(MonitorElementData::Kind kind, MonitorElementData::Scope rescope)
Definition: DQMRootSource.cc:187
Service.h
DQMTTreeIO::TreeReaderBase::read
virtual void read(ULong64_t iIndex, DQMStore *dqmstore, int run, int lumi)=0
DEFINE_FWK_INPUT_SOURCE
#define DEFINE_FWK_INPUT_SOURCE(type)
Definition: InputSourceMacros.h:8
MonitorElementData::Value::scalar_
Scalar scalar_
Definition: MonitorElementCollection.h:157
kTH3FIndex
Definition: format.h:32
edm::threadLocalException::setException
void setException(std::exception_ptr e)
Definition: ExceptionPropagate.cc:6
Run.h
MonitorElementData::Scope
Scope
Definition: MonitorElementCollection.h:152
DQMRootSource::beginRun
void beginRun(edm::Run &run) override
Definition: DQMRootSource.cc:704
DQMTTreeIO::DQMMergeHelper::CheckBinLabels
static bool CheckBinLabels(const TAxis *a1, const TAxis *a2)
Definition: DQMRootSource.cc:63
DQMRootSource::readLuminosityBlockAuxiliary_
std::shared_ptr< edm::LuminosityBlockAuxiliary > readLuminosityBlockAuxiliary_() override
Definition: DQMRootSource.cc:612
DQMTTreeIO::DQMMergeHelper::mergeTogether
static void mergeTogether(TH1 *original, TH1 *toAdd)
Definition: DQMRootSource.cc:91
ParameterSetDescription.h
edm::LuminosityBlockID
Definition: LuminosityBlockID.h:31
DQMTTreeIO::TreeSimpleReader::read
void read(ULong64_t iIndex, DQMStore *dqmstore, int run, int lumi) override
Definition: DQMRootSource.cc:272
TrackingMonitor_cfi.metadata
metadata
Definition: TrackingMonitor_cfi.py:71
DQMTTreeIO::FileMetadata::m_lastIndex
ULong64_t m_lastIndex
Definition: DQMRootSource.cc:130
MonitorElementData::value_
Value value_
Definition: MonitorElementCollection.h:246
edm::JobReport::reportInputRunNumber
void reportInputRunNumber(unsigned int run)
Definition: JobReport.cc:471
getGTfromDQMFile.obj
obj
Definition: getGTfromDQMFile.py:32
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
kTypeBranch
static const char *const kTypeBranch
Definition: format.h:64
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
DQMTTreeIO::TreeStringReader::TreeStringReader
TreeStringReader(MonitorElementData::Kind kind, MonitorElementData::Scope rescope)
Definition: DQMRootSource.cc:228
kFlagBranch
static const char *const kFlagBranch
Definition: format.h:54
edm::InputSource::IsFile
Definition: InputSource.h:78
dqm::implementation::DQMStore::putME
MonitorElement * putME(MonitorElement *me)
Definition: DQMStore.cc:148
DQMTTreeIO::FileMetadata::m_type
unsigned int m_type
Definition: DQMRootSource.cc:131
DQMTTreeIO::TreeObjectReader::m_buffer
T * m_buffer
Definition: DQMRootSource.cc:222
edm::LuminosityBlockAuxiliary::processHistoryID
ProcessHistoryID const & processHistoryID() const
Definition: LuminosityBlockAuxiliary.h:28
edm::ParameterSetDescription::addUntracked
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:100
edm::InputSource::processHistoryRegistry
ProcessHistoryRegistry const & processHistoryRegistry() const
Accessors for process history registry.
Definition: InputSource.h:155
edm::FlushMessageLog
void FlushMessageLog()
Definition: MessageLogger.cc:94
edm::ParameterSet
Definition: ParameterSet.h:36
edm::LogError
Definition: MessageLogger.h:183
DQMRootSource::m_fileMetadatas
std::vector< FileMetadata > m_fileMetadatas
Definition: DQMRootSource.cc:374
kIntIndex
Definition: format.h:23
cms::Exception::addAdditionalInfo
void addAdditionalInfo(std::string const &info)
Definition: Exception.cc:169
DQMTTreeIO::FileMetadata::operator<
bool operator<(const FileMetadata &obj) const
Definition: DQMRootSource.cc:135
edm::InputSource::IsLumi
Definition: InputSource.h:78
kTH1FIndex
Definition: format.h:26
edm::LuminosityBlockPrincipal::fillLuminosityBlockPrincipal
void fillLuminosityBlockPrincipal(ProcessHistory const *processHistory, DelayedReader *reader=nullptr)
Definition: LuminosityBlockPrincipal.cc:16
DQMRootSource::beginLuminosityBlock
void beginLuminosityBlock(edm::LuminosityBlock &lumi) override
Definition: DQMRootSource.cc:709
DQMRootSource::readEvent_
void readEvent_(edm::EventPrincipal &) override
Definition: DQMRootSource.cc:651
MonitorElementData::Kind
Kind
Definition: MonitorElementCollection.h:129
DQMTTreeIO::TreeSimpleReader::m_tree
TTree * m_tree
Definition: DQMRootSource.cc:302
RunPrincipal.h
definitions.original
original
Definition: definitions.py:57
DQMRootSource::m_treeReaders
std::vector< std::shared_ptr< TreeReaderBase > > m_treeReaders
Definition: DQMRootSource.cc:367
DQMRootSource::m_catalog
edm::InputFileCatalog m_catalog
Definition: DQMRootSource.cc:361
DQMRootSource::m_lumisToProcess
std::vector< edm::LuminosityBlockRange > m_lumisToProcess
Definition: DQMRootSource.cc:362
edm::Service
Definition: Service.h:30
createfilelist.int
int
Definition: createfilelist.py:10
DQMTTreeIO::TreeSimpleReader::setTree
void setTree(TTree *iTree) override
Definition: DQMRootSource.cc:294
DQMTTreeIO::DQMMergeHelper
Definition: DQMRootSource.cc:59
FrontierConditions_GlobalTag_cff.file
file
Definition: FrontierConditions_GlobalTag_cff.py:13
DQMTTreeIO::TreeReaderBase::TreeReaderBase
TreeReaderBase(MonitorElementData::Kind kind, MonitorElementData::Scope rescope)
Definition: DQMRootSource.cc:151
edm::LuminosityBlockID::luminosityBlock
LuminosityBlockNumber_t luminosityBlock() const
Definition: LuminosityBlockID.h:42
kStringIndex
Definition: format.h:25
kTH1SIndex
Definition: format.h:27
edm::InputSource::IsStop
Definition: InputSource.h:78
DQMRootSource::readFile_
std::unique_ptr< edm::FileBlock > readFile_() override
Definition: DQMRootSource.cc:466
kTH2SIndex
Definition: format.h:30
kTH2FIndex
Definition: format.h:29
DQMTTreeIO::TreeReaderBase
Definition: DQMRootSource.cc:149
kEndTimeBranch
static const char *const kEndTimeBranch
Definition: format.h:63
MonitorElementData::Kind::TH1D
CalibrationSummaryClient_cfi.kind
kind
Definition: CalibrationSummaryClient_cfi.py:37
LuminosityBlockPrincipal.h
DQMTTreeIO::TreeObjectReader
Definition: DQMRootSource.cc:185
InputSourceMacros.h
LuminosityBlockRange
FileBlock.h
DQMTTreeIO::TreeSimpleReader::m_fullName
std::string * m_fullName
Definition: DQMRootSource.cc:303
DQMRootSource::getNextItemType
edm::InputSource::ItemType getNextItemType() override
Definition: DQMRootSource.cc:463
DQMTTreeIO::TreeStringReader::m_tag
uint32_t m_tag
Definition: DQMRootSource.cc:262
DQMTTreeIO::TreeStringReader::m_tree
TTree * m_tree
Definition: DQMRootSource.cc:259
edm::InputSource::ItemType
ItemType
Definition: InputSource.h:78
kTH2DIndex
Definition: format.h:31
edm::RunPrincipal::fillRunPrincipal
void fillRunPrincipal(ProcessHistoryRegistry const &processHistoryRegistry, DelayedReader *reader=nullptr)
Definition: RunPrincipal.cc:26
DQMRootSource::readLuminosityBlock_
void readLuminosityBlock_(edm::LuminosityBlockPrincipal &lbCache) override
Definition: DQMRootSource.cc:637
kNIndicies
Definition: format.h:35
MonitorElementData::Kind::TH2S
MonitorElementData::Value::object_
edm::propagate_const< std::unique_ptr< TH1 > > object_
Definition: MonitorElementCollection.h:158
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
writedatasetfile.run
run
Definition: writedatasetfile.py:27
MonitorElementData::Kind::TPROFILE2D
MonitorElementData::Kind::TH3F
DQMTTreeIO::TreeStringReader::read
void read(ULong64_t iIndex, DQMStore *dqmstore, int run, int lumi) override
Definition: DQMRootSource.cc:232
DQMRootSource::m_openFiles
std::vector< TFile * > m_openFiles
Definition: DQMRootSource.cc:372
DQMTTreeIO::TreeStringReader::setTree
void setTree(TTree *iTree) override
Definition: DQMRootSource.cc:251
kBeginTimeBranch
static const char *const kBeginTimeBranch
Definition: format.h:62
bTagCommon_cff.label1
label1
Definition: bTagCommon_cff.py:167
edm::LuminosityBlockPrincipal::id
LuminosityBlockID id() const
Definition: LuminosityBlockPrincipal.h:53
DQMRootSource::readNextItemType
void readNextItemType()
Definition: DQMRootSource.cc:686
DQMTTreeIO::TreeObjectReader::m_tag
uint32_t m_tag
Definition: DQMRootSource.cc:223
InputSource.h
DQMRootSource::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: DQMRootSource.cc:385
T
long double T
Definition: Basic3DVectorLD.h:48
DQMRootSource::m_rescope
MonitorElementData::Scope m_rescope
Definition: DQMRootSource.cc:363
DQMTTreeIO::MonitorElement
dqm::harvesting::MonitorElement MonitorElement
Definition: DQMRootSource.cc:55
LuminosityBlockRange.h
MonitorElementData::Scalar::str
std::string str
Definition: MonitorElementCollection.h:48
MonitorElementData
Definition: MonitorElementCollection.h:43
edm::LuminosityBlockID::run
RunNumber_t run() const
Definition: LuminosityBlockID.h:41
DQMTTreeIO::TreeReaderBase::m_kind
MonitorElementData::Kind m_kind
Definition: DQMRootSource.cc:180
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
kFirstIndex
static const char *const kFirstIndex
Definition: format.h:65
DQMTTreeIO::TreeStringReader::m_fullName
std::string * m_fullName
Definition: DQMRootSource.cc:260
kTH1DIndex
Definition: format.h:28
HLT_2018_cff.toAdd
toAdd
Definition: HLT_2018_cff.py:50595
cms::Exception
Definition: Exception.h:70
list
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*", "!HLTx*" if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL. It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of "!*" before the partial wildcard feature was incorporated). Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run
JobReport.h
DQMTTreeIO::TreeSimpleReader::m_tag
uint32_t m_tag
Definition: DQMRootSource.cc:305
genParticles_cff.map
map
Definition: genParticles_cff.py:11
kFloatIndex
Definition: format.h:24
ParameterSet.h
dummy
Definition: DummySelector.h:38
edm::RunPrincipal
Definition: RunPrincipal.h:34
TimeOfDay.h
hlt_dqm_clientPB-live_cfg.me
me
Definition: hlt_dqm_clientPB-live_cfg.py:56
kIndicesTree
static const char *const kIndicesTree
Definition: format.h:58
edm::PuttableSourceBase
Definition: PuttableSourceBase.h:30
edm::ConfigurationDescriptions::addDefault
void addDefault(ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:99
crabWrapper.key
key
Definition: crabWrapper.py:19
DQMTTreeIO::DQMStore
dqm::harvesting::DQMStore DQMStore
Definition: DQMRootSource.cc:56
lumi
Definition: LumiSectionData.h:20
DQMRootSource
Definition: DQMRootSource.cc:309
edm::errors::FileReadError
Definition: EDMException.h:50
DQMTTreeIO::TreeReaderBase::setTree
virtual void setTree(TTree *iTree)=0
MonitorElementData::Kind::TPROFILE
DQMRootSource::m_currentIndex
unsigned int m_currentIndex
Definition: DQMRootSource.cc:370
edm::InputFileCatalog::fileCatalogItems
std::vector< FileCatalogItem > const & fileCatalogItems() const
Definition: InputFileCatalog.h:39
MonitorElementData::Kind::REAL
DQMRootSource::m_filterOnRun
unsigned int m_filterOnRun
Definition: DQMRootSource.cc:360
kTProfile2DIndex
Definition: format.h:34
GetRecoTauVFromDQM_MC_cff.next
next
Definition: GetRecoTauVFromDQM_MC_cff.py:31
edm::LuminosityBlockRange
Definition: LuminosityBlockRange.h:32
edm::RunAuxiliary
Definition: RunAuxiliary.h:15
edm::InputSource::run
RunNumber_t run() const
Accessor for current run number.
Definition: InputSource.cc:437
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
DQMRootSource::logFileAction
void logFileAction(char const *msg, char const *fileName) const
Definition: DQMRootSource.cc:735
DQMTTreeIO::TreeStringReader::m_value
std::string * m_value
Definition: DQMRootSource.cc:261
DQMRootSource::readElements
void readElements()
Definition: DQMRootSource.cc:653
PuttableSourceBase
kRunBranch
static const char *const kRunBranch
Definition: format.h:59
DQMTTreeIO::TreeStringReader
Definition: DQMRootSource.cc:226
edm::Timestamp
Definition: Timestamp.h:30