CMS 3D CMS Logo

DQMRootOutputModule.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: FwkIO
4 // Class : DQMRootOutputModule
5 //
6 // Implementation:
7 // [Notes on implementation]
8 //
9 // Original Author: Chris Jones
10 // Created: Fri Apr 29 13:26:29 CDT 2011
11 //
12 
13 // system include files
14 #include <algorithm>
15 #include <iostream>
16 #include <string>
17 #include <map>
18 #include <memory>
19 #include <vector>
20 
21 #include <boost/filesystem.hpp>
22 #include "TFile.h"
23 #include "TTree.h"
24 #include "TString.h"
25 #include "TH1.h"
26 #include "TH2.h"
27 #include "TProfile.h"
28 
29 // user include files
38 
43 
45 
46 #include "format.h"
47 
48 namespace {
51 
52  class TreeHelperBase {
53  public:
54  TreeHelperBase() : m_wasFilled(false), m_firstIndex(0), m_lastIndex(0) {}
55  virtual ~TreeHelperBase() {}
56  void fill(MonitorElement* iElement) {
57  doFill(iElement);
58  if (m_wasFilled) {
59  ++m_lastIndex;
60  }
61  m_wasFilled = true;
62  }
63  bool wasFilled() const { return m_wasFilled; }
64  void getRangeAndReset(ULong64_t& iFirstIndex, ULong64_t& iLastIndex) {
65  iFirstIndex = m_firstIndex;
66  iLastIndex = m_lastIndex;
67  m_wasFilled = false;
68  m_firstIndex = m_lastIndex + 1;
69  m_lastIndex = m_firstIndex;
70  }
71 
72  private:
73  virtual void doFill(MonitorElement*) = 0;
74  bool m_wasFilled;
75  ULong64_t m_firstIndex;
76  ULong64_t m_lastIndex;
77  };
78 
79  template <class T>
80  class TreeHelper : public TreeHelperBase {
81  public:
82  TreeHelper(TTree* iTree, std::string* iFullNameBufferPtr)
83  : m_tree(iTree), m_flagBuffer(0), m_fullNameBufferPtr(iFullNameBufferPtr) {
84  setup();
85  }
86  void doFill(MonitorElement* iElement) override {
87  *m_fullNameBufferPtr = iElement->getFullname();
88  m_flagBuffer = 0;
89  m_bufferPtr = dynamic_cast<T*>(iElement->getRootObject());
90  assert(nullptr != m_bufferPtr);
91  //std::cout <<"#entries: "<<m_bufferPtr->GetEntries()<<std::endl;
92  m_tree->Fill();
93  }
94 
95  private:
96  void setup() {
97  m_tree->Branch(kFullNameBranch, &m_fullNameBufferPtr);
98  m_tree->Branch(kFlagBranch, &m_flagBuffer);
99 
100  m_bufferPtr = nullptr;
101  m_tree->Branch(kValueBranch, &m_bufferPtr, 128 * 1024, 0);
102  }
103  TTree* m_tree;
104  uint32_t m_flagBuffer;
105  std::string* m_fullNameBufferPtr;
106  T* m_bufferPtr;
107  };
108 
109  class IntTreeHelper : public TreeHelperBase {
110  public:
111  IntTreeHelper(TTree* iTree, std::string* iFullNameBufferPtr)
112  : m_tree(iTree), m_flagBuffer(0), m_fullNameBufferPtr(iFullNameBufferPtr) {
113  setup();
114  }
115 
116  void doFill(MonitorElement* iElement) override {
117  *m_fullNameBufferPtr = iElement->getFullname();
118  m_flagBuffer = 0;
119  m_buffer = iElement->getIntValue();
120  m_tree->Fill();
121  }
122 
123  private:
124  void setup() {
125  m_tree->Branch(kFullNameBranch, &m_fullNameBufferPtr);
126  m_tree->Branch(kFlagBranch, &m_flagBuffer);
127  m_tree->Branch(kValueBranch, &m_buffer);
128  }
129  TTree* m_tree;
130  uint32_t m_flagBuffer;
131  std::string* m_fullNameBufferPtr;
132  Long64_t m_buffer;
133  };
134 
135  class FloatTreeHelper : public TreeHelperBase {
136  public:
137  FloatTreeHelper(TTree* iTree, std::string* iFullNameBufferPtr)
138  : m_tree(iTree), m_flagBuffer(0), m_fullNameBufferPtr(iFullNameBufferPtr) {
139  setup();
140  }
141  void doFill(MonitorElement* iElement) override {
142  *m_fullNameBufferPtr = iElement->getFullname();
143  m_flagBuffer = 0;
144  m_buffer = iElement->getFloatValue();
145  m_tree->Fill();
146  }
147 
148  private:
149  void setup() {
150  m_tree->Branch(kFullNameBranch, &m_fullNameBufferPtr);
151  m_tree->Branch(kFlagBranch, &m_flagBuffer);
152  m_tree->Branch(kValueBranch, &m_buffer);
153  }
154 
155  TTree* m_tree;
156  uint32_t m_flagBuffer;
157  std::string* m_fullNameBufferPtr;
158  double m_buffer;
159  };
160 
161  class StringTreeHelper : public TreeHelperBase {
162  public:
163  StringTreeHelper(TTree* iTree, std::string* iFullNameBufferPtr)
164  : m_tree(iTree), m_flagBuffer(0), m_fullNameBufferPtr(iFullNameBufferPtr), m_bufferPtr(&m_buffer) {
165  setup();
166  }
167  void doFill(MonitorElement* iElement) override {
168  *m_fullNameBufferPtr = iElement->getFullname();
169  m_flagBuffer = 0;
170  m_buffer = iElement->getStringValue();
171  m_tree->Fill();
172  }
173 
174  private:
175  void setup() {
176  m_tree->Branch(kFullNameBranch, &m_fullNameBufferPtr);
177  m_tree->Branch(kFlagBranch, &m_flagBuffer);
178  m_tree->Branch(kValueBranch, &m_bufferPtr);
179  }
180 
181  TTree* m_tree;
182  uint32_t m_flagBuffer;
183  std::string* m_fullNameBufferPtr;
184  std::string m_buffer;
185  std::string* m_bufferPtr;
186  };
187 
188 } // namespace
189 
190 namespace edm {
191  class ModuleCallingContext;
192 }
193 
195 public:
196  explicit DQMRootOutputModule(edm::ParameterSet const& pset);
197  void beginJob() override;
198  ~DQMRootOutputModule() override;
199  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
200 
201 private:
202  void write(edm::EventForOutput const& e) override;
204  void writeRun(edm::RunForOutput const&) override;
205  bool isFileOpen() const override;
206  void openFile(edm::FileBlock const&) override;
207  void reallyCloseFile() override;
208 
209  void startEndFile();
210  void finishEndFile();
213  std::unique_ptr<TFile> m_file;
214  std::vector<std::shared_ptr<TreeHelperBase> > m_treeHelpers;
215 
216  unsigned int m_run;
217  unsigned int m_lumi;
218  unsigned int m_type;
219  unsigned int m_presentHistoryIndex;
220  ULong64_t m_beginTime;
221  ULong64_t m_endTime;
222  ULong64_t m_firstIndex;
223  ULong64_t m_lastIndex;
224  unsigned int m_filterOnRun;
225 
228  std::map<unsigned int, unsigned int> m_dqmKindToTypeIndex;
230 
231  std::vector<edm::ProcessHistoryID> m_seenHistories;
234 };
235 
236 //
237 // constants, enums and typedefs
238 //
239 
240 static TreeHelperBase* makeHelper(unsigned int iTypeIndex, TTree* iTree, std::string* iFullNameBufferPtr) {
241  switch (iTypeIndex) {
242  case kIntIndex:
243  return new IntTreeHelper(iTree, iFullNameBufferPtr);
244  case kFloatIndex:
245  return new FloatTreeHelper(iTree, iFullNameBufferPtr);
246  case kStringIndex:
247  return new StringTreeHelper(iTree, iFullNameBufferPtr);
248  case kTH1FIndex:
249  return new TreeHelper<TH1F>(iTree, iFullNameBufferPtr);
250  case kTH1SIndex:
251  return new TreeHelper<TH1S>(iTree, iFullNameBufferPtr);
252  case kTH1DIndex:
253  return new TreeHelper<TH1D>(iTree, iFullNameBufferPtr);
254  case kTH2FIndex:
255  return new TreeHelper<TH2F>(iTree, iFullNameBufferPtr);
256  case kTH2SIndex:
257  return new TreeHelper<TH2S>(iTree, iFullNameBufferPtr);
258  case kTH2DIndex:
259  return new TreeHelper<TH2D>(iTree, iFullNameBufferPtr);
260  case kTH3FIndex:
261  return new TreeHelper<TH3F>(iTree, iFullNameBufferPtr);
262  case kTProfileIndex:
263  return new TreeHelper<TProfile>(iTree, iFullNameBufferPtr);
264  case kTProfile2DIndex:
265  return new TreeHelper<TProfile2D>(iTree, iFullNameBufferPtr);
266  }
267  assert(false);
268  return nullptr;
269 }
270 
271 //
272 // static data member definitions
273 //
274 
275 //
276 // constructors and destructor
277 //
280  edm::one::OutputModule<>(pset),
281  m_fileName(pset.getUntrackedParameter<std::string>("fileName")),
282  m_logicalFileName(pset.getUntrackedParameter<std::string>("logicalFileName")),
283  m_file(nullptr),
284  m_treeHelpers(kNIndicies, std::shared_ptr<TreeHelperBase>()),
285  m_presentHistoryIndex(0),
286  m_filterOnRun(pset.getUntrackedParameter<unsigned int>("filterOnRun")),
287  m_fullNameBufferPtr(&m_fullNameBuffer),
288  m_indicesTree(nullptr) {
289  // Declare dependencies for all Lumi and Run tokens here. In
290  // principle could use the keep statements, but then DQMToken would
291  // have to be made persistent (transient products are ignored),
292  // which would lead to a need to (finally) remove underscores from
293  // DQM module labels.
294  consumesMany<DQMToken, edm::InLumi>();
295  consumesMany<DQMToken, edm::InRun>();
296 }
297 
298 // DQMRootOutputModule::DQMRootOutputModule(const DQMRootOutputModule& rhs)
299 // {
300 // // do actual copying here;
301 // }
302 
304 
306 
307 //
308 // assignment operators
309 //
310 // const DQMRootOutputModule& DQMRootOutputModule::operator=(const DQMRootOutputModule& rhs)
311 // {
312 // //An exception safe implementation is
313 // DQMRootOutputModule temp(rhs);
314 // swap(rhs);
315 //
316 // return *this;
317 // }
318 
319 //
320 // member functions
321 //
322 bool DQMRootOutputModule::isFileOpen() const { return nullptr != m_file.get(); }
323 
325  //NOTE: I need to also set the I/O performance settings
326 
327  m_file = std::unique_ptr<TFile>(new TFile(m_fileName.c_str(),
328  "RECREATE",
329  "1" //This is the file format version number
330  ));
331 
333  cms::Digest branchHash;
334  std::string guid{m_file->GetUUID().AsString()};
335  std::transform(guid.begin(), guid.end(), guid.begin(), (int (*)(int))std::toupper);
338  std::string(),
339  "DQMRootOutputModule",
341  std::move(guid),
342  std::string(),
343  branchHash.digest().toString(),
344  std::vector<std::string>());
345 
347  m_indicesTree->Branch(kRunBranch, &m_run);
348  m_indicesTree->Branch(kLumiBranch, &m_lumi);
352  m_indicesTree->Branch(kTypeBranch, &m_type);
355  m_indicesTree->SetDirectory(m_file.get());
356 
357  unsigned int i = 0;
358  for (std::vector<std::shared_ptr<TreeHelperBase> >::iterator it = m_treeHelpers.begin(), itEnd = m_treeHelpers.end();
359  it != itEnd;
360  ++it, ++i) {
361  //std::cout <<"making "<<kTypeNames[i]<<std::endl;
362  TTree* tree = new TTree(kTypeNames[i], kTypeNames[i]);
363  *it = std::shared_ptr<TreeHelperBase>(makeHelper(i, tree, m_fullNameBufferPtr));
364  tree->SetDirectory(m_file.get()); //TFile takes ownership
365  }
366 
379 }
380 
382 
384  //std::cout << "DQMRootOutputModule::writeLuminosityBlock"<< std::endl;
385  edm::Service<DQMStore> dstore;
386  m_run = iLumi.id().run();
387  m_lumi = iLumi.id().value();
388  m_beginTime = iLumi.beginTime().value();
389  m_endTime = iLumi.endTime().value();
390  bool shouldWrite = (m_filterOnRun == 0 || (m_filterOnRun != 0 && m_filterOnRun == m_run));
391 
392  if (!shouldWrite)
393  return;
394  std::vector<MonitorElement*> items(dstore->getAllContents("", m_run, m_lumi));
395  for (std::vector<MonitorElement*>::iterator it = items.begin(), itEnd = items.end(); it != itEnd; ++it) {
396  assert((*it)->getScope() == MonitorElementData::Scope::LUMI);
397  std::map<unsigned int, unsigned int>::iterator itFound = m_dqmKindToTypeIndex.find((int)(*it)->kind());
398  assert(itFound != m_dqmKindToTypeIndex.end());
399  m_treeHelpers[itFound->second]->fill(*it);
400  }
401 
402  const edm::ProcessHistoryID& id = iLumi.processHistoryID();
403  std::vector<edm::ProcessHistoryID>::iterator itFind = std::find(m_seenHistories.begin(), m_seenHistories.end(), id);
404  if (itFind == m_seenHistories.end()) {
407  m_seenHistories.push_back(id);
408  } else {
409  m_presentHistoryIndex = itFind - m_seenHistories.begin();
410  }
411 
412  //Now store the relationship between run/lumi and indices in the other TTrees
413  bool storedLumiIndex = false;
414  unsigned int typeIndex = 0;
415  for (std::vector<std::shared_ptr<TreeHelperBase> >::iterator it = m_treeHelpers.begin(), itEnd = m_treeHelpers.end();
416  it != itEnd;
417  ++it, ++typeIndex) {
418  if ((*it)->wasFilled()) {
419  m_type = typeIndex;
420  (*it)->getRangeAndReset(m_firstIndex, m_lastIndex);
421  storedLumiIndex = true;
422  m_indicesTree->Fill();
423  }
424  }
425  if (not storedLumiIndex) {
426  //need to record lumis even if we stored no MonitorElements since some later DQM modules
427  // look to see what lumis were processed
429  m_firstIndex = 0;
430  m_lastIndex = 0;
431  m_indicesTree->Fill();
432  }
433 
436 }
437 
439  //std::cout << "DQMRootOutputModule::writeRun"<< std::endl;
440  edm::Service<DQMStore> dstore;
441  m_run = iRun.id().run();
442  m_lumi = 0;
443  m_beginTime = iRun.beginTime().value();
444  m_endTime = iRun.endTime().value();
445  bool shouldWrite = (m_filterOnRun == 0 || (m_filterOnRun != 0 && m_filterOnRun == m_run));
446 
447  if (!shouldWrite)
448  return;
449 
450  std::vector<MonitorElement*> items(dstore->getAllContents("", m_run, 0));
451  for (std::vector<MonitorElement*>::iterator it = items.begin(), itEnd = items.end(); it != itEnd; ++it) {
452  assert((*it)->getScope() == MonitorElementData::Scope::RUN);
453  std::map<unsigned int, unsigned int>::iterator itFound = m_dqmKindToTypeIndex.find((int)(*it)->kind());
454  assert(itFound != m_dqmKindToTypeIndex.end());
455  m_treeHelpers[itFound->second]->fill(*it);
456  }
457 
458  const edm::ProcessHistoryID& id = iRun.processHistoryID();
459  std::vector<edm::ProcessHistoryID>::iterator itFind = std::find(m_seenHistories.begin(), m_seenHistories.end(), id);
460  if (itFind == m_seenHistories.end()) {
463  m_seenHistories.push_back(id);
464  } else {
465  m_presentHistoryIndex = itFind - m_seenHistories.begin();
466  }
467 
468  //Now store the relationship between run/lumi and indices in the other TTrees
469  unsigned int typeIndex = 0;
470  for (std::vector<std::shared_ptr<TreeHelperBase> >::iterator it = m_treeHelpers.begin(), itEnd = m_treeHelpers.end();
471  it != itEnd;
472  ++it, ++typeIndex) {
473  if ((*it)->wasFilled()) {
474  m_type = typeIndex;
475  (*it)->getRangeAndReset(m_firstIndex, m_lastIndex);
476  m_indicesTree->Fill();
477  }
478  }
479 
482 }
483 
485  startEndFile();
486  finishEndFile();
487 }
488 
490  //std::cout << "DQMRootOutputModule::startEndFile"<< std::endl;
491  //fill in the meta data
492  m_file->cd();
493  TDirectory* metaDataDirectory = m_file->mkdir(kMetaDataDirectory);
494 
495  //Write out the Process History
496  TTree* processHistoryTree = new TTree(kProcessHistoryTree, kProcessHistoryTree);
497  processHistoryTree->SetDirectory(metaDataDirectory);
498 
499  unsigned int index = 0;
500  processHistoryTree->Branch(kPHIndexBranch, &index);
502  processHistoryTree->Branch(kProcessConfigurationProcessNameBranch, &processName);
503  std::string parameterSetID;
504  processHistoryTree->Branch(kProcessConfigurationParameterSetIDBranch, &parameterSetID);
505  std::string releaseVersion;
506  processHistoryTree->Branch(kProcessConfigurationReleaseVersion, &releaseVersion);
507  std::string passID;
508  processHistoryTree->Branch(kProcessConfigurationPassID, &passID);
509 
510  for (std::vector<edm::ProcessHistoryID>::iterator it = m_seenHistories.begin(), itEnd = m_seenHistories.end();
511  it != itEnd;
512  ++it) {
514  assert(nullptr != history);
515  index = 0;
516  for (edm::ProcessHistory::collection_type::const_iterator itPC = history->begin(), itPCEnd = history->end();
517  itPC != itPCEnd;
518  ++itPC, ++index) {
519  processName = itPC->processName();
520  releaseVersion = itPC->releaseVersion();
521  passID = itPC->passID();
522  parameterSetID = itPC->parameterSetID().compactForm();
523  processHistoryTree->Fill();
524  }
525  }
526 
527  //Store the ParameterSets
528  TTree* parameterSetsTree = new TTree(kParameterSetTree, kParameterSetTree);
529  parameterSetsTree->SetDirectory(metaDataDirectory);
530  std::string blob;
531  parameterSetsTree->Branch(kParameterSetBranch, &blob);
532 
534  assert(nullptr != psr);
535  for (edm::pset::Registry::const_iterator it = psr->begin(), itEnd = psr->end(); it != itEnd; ++it) {
536  blob.clear();
537  it->second.toString(blob);
538  parameterSetsTree->Fill();
539  }
540 }
541 
543  //std::cout << "DQMRootOutputModule::finishEndFile"<< std::endl;
544  m_file->Write();
545  m_file->Close();
548 }
549 
550 //
551 // const member functions
552 //
553 
554 //
555 // static member functions
556 //
559 
560  desc.addUntracked<std::string>("fileName");
561  desc.addUntracked<std::string>("logicalFileName", "");
562  desc.addUntracked<unsigned int>("filterOnRun", 0)
563  ->setComment("Only write the run with this run number. 0 means write all runs.");
564  desc.addOptionalUntracked<int>("splitLevel", 99)
565  ->setComment("UNUSED Only here to allow older configurations written for PoolOutputModule to work.");
566  const std::vector<std::string> keep = {"drop *", "keep DQMToken_*_*_*"};
568 
570  dataSet.setAllowAnything();
572  ->setComment("PSet is only used by Data Operations and not by this module.");
573 
574  descriptions.addDefault(desc);
575 }
576 
edm::one::OutputModule
Definition: OutputModule.h:30
DQMRootOutputModule::m_presentHistoryIndex
unsigned int m_presentHistoryIndex
Definition: DQMRootOutputModule.cc:219
edm::pset::Registry::instance
static Registry * instance()
Definition: Registry.cc:12
kValueBranch
static const char *const kValueBranch
Definition: format.h:55
DQMRootOutputModule::~DQMRootOutputModule
~DQMRootOutputModule() override
Definition: DQMRootOutputModule.cc:305
ProcessHistoryID.h
DQMRootOutputModule::write
void write(edm::EventForOutput const &e) override
Definition: DQMRootOutputModule.cc:381
kLastIndex
static const char *const kLastIndex
Definition: format.h:66
edm::ProcessHistoryRegistry::registerProcessHistory
bool registerProcessHistory(ProcessHistory const &processHistory)
Definition: ProcessHistoryRegistry.cc:11
DQMRootOutputModule::m_processHistoryRegistry
edm::ProcessHistoryRegistry m_processHistoryRegistry
Definition: DQMRootOutputModule.cc:232
mps_fire.i
i
Definition: mps_fire.py:355
kTProfileIndex
Definition: format.h:33
funct::false
false
Definition: Factorize.h:34
MonitorElementData::Kind::INT
DQMRootOutputModule::m_endTime
ULong64_t m_endTime
Definition: DQMRootOutputModule.cc:221
OutputModule.h
edm::RunForOutput::id
RunID const & id() const
Definition: RunForOutput.h:49
cms::Digest::digest
MD5Result digest()
Definition: Digest.cc:171
edm::RunID::run
RunNumber_t run() const
Definition: RunID.h:36
MonitorElementData::Kind::TH1S
kParameterSetBranch
static const char *const kParameterSetBranch
Definition: format.h:80
MonitorElementData::Kind::TH1F
edm
HLT enums.
Definition: AlignableModifier.h:19
tree
Definition: tree.py:1
edm::JobReport::Token
std::size_t Token
Definition: JobReport.h:106
MonitorElementData::Kind::STRING
EgammaPostProcessor_cfi.dataSet
dataSet
Definition: EgammaPostProcessor_cfi.py:6
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
DQMRootOutputModule::m_fullNameBufferPtr
std::string * m_fullNameBufferPtr
Definition: DQMRootOutputModule.cc:227
RunForOutput.h
format.h
cms::cuda::assert
assert(be >=bs)
DQMStore.h
dqm::legacy::MonitorElement
Definition: MonitorElement.h:461
ProcessHistoryRegistry.h
edm::Timestamp::value
TimeValue_t value() const
Definition: Timestamp.h:45
kFullNameBranch
static const char *const kFullNameBranch
Definition: format.h:53
DQMRootOutputModule::m_type
unsigned int m_type
Definition: DQMRootOutputModule.cc:218
kLumiBranch
static const char *const kLumiBranch
Definition: format.h:60
DQMRootOutputModule::finishEndFile
void finishEndFile()
Definition: DQMRootOutputModule.cc:542
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
MonitorElementData::Kind::TH2D
edm::ParameterSetDescription::addOptionalUntracked
ParameterDescriptionBase * addOptionalUntracked(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:110
kProcessHistoryTree
static const char *const kProcessHistoryTree
Definition: format.h:72
mps_monitormerge.items
list items
Definition: mps_monitormerge.py:29
DQMRootOutputModule::reallyCloseFile
void reallyCloseFile() override
Definition: DQMRootOutputModule.cc:484
edm::LuminosityBlockForOutput
Definition: LuminosityBlockForOutput.h:40
MonitorElementData::Kind::TH2F
edm::FileBlock
Definition: FileBlock.h:20
kProcessConfigurationParameterSetIDBranch
static const char *const kProcessConfigurationParameterSetIDBranch
Definition: format.h:75
edm::RunForOutput
Definition: RunForOutput.h:39
kTypeNames
static const char *const kTypeNames[]
Definition: format.h:39
MakerMacros.h
DQMRootOutputModule::m_lumi
unsigned int m_lumi
Definition: DQMRootOutputModule.cc:217
makeHelper
static TreeHelperBase * makeHelper(unsigned int iTypeIndex, TTree *iTree, std::string *iFullNameBufferPtr)
Definition: DQMRootOutputModule.cc:240
DQMRootOutputModule::m_fileName
std::string m_fileName
Definition: DQMRootOutputModule.cc:211
DQMRootOutputModule::openFile
void openFile(edm::FileBlock const &) override
Definition: DQMRootOutputModule.cc:324
dqm::reco::DQMStore
dqm::legacy::DQMStore DQMStore
Definition: DQMStore.h:736
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
dqm::legacy::DQMStore
Definition: DQMStore.h:727
kNoTypesStored
Definition: format.h:36
ProcessHistory.h
DQMToken.h
edm::OccurrenceForOutput::processHistoryID
ProcessHistoryID const & processHistoryID() const
Definition: OccurrenceForOutput.cc:26
dqm::legacy::MonitorElement::getRootObject
TObject * getRootObject() const override
Definition: MonitorElement.h:469
cms::Digest
Definition: Digest.h:46
Service.h
DQMRootOutputModule::m_dqmKindToTypeIndex
std::map< unsigned int, unsigned int > m_dqmKindToTypeIndex
Definition: DQMRootOutputModule.cc:228
edm::pset::Registry::end
const_iterator end() const
Definition: Registry.h:65
DQMRootOutputModule::isFileOpen
bool isFileOpen() const override
Definition: DQMRootOutputModule.cc:322
kTH3FIndex
Definition: format.h:32
kProcessConfigurationProcessNameBranch
static const char *const kProcessConfigurationProcessNameBranch
Definition: format.h:74
edm::Hash< ProcessHistoryType >
edm::JobReport::outputFileClosed
void outputFileClosed(Token fileToken)
Definition: JobReport.cc:433
HcalDetIdTransform::transform
unsigned transform(const HcalDetId &id, unsigned transformCode)
Definition: HcalDetIdTransform.cc:7
edm::one::OutputModuleBase::fillDescription
static void fillDescription(ParameterSetDescription &desc, std::vector< std::string > const &iDefaultOutputCommands=ProductSelectorRules::defaultSelectionStrings())
Definition: OutputModuleBase.cc:350
edm::OccurrenceForOutput::processHistory
virtual ProcessHistory const & processHistory() const
Definition: OccurrenceForOutput.cc:40
kParameterSetTree
static const char *const kParameterSetTree
Definition: format.h:79
DQMRootOutputModule::m_lastIndex
ULong64_t m_lastIndex
Definition: DQMRootOutputModule.cc:223
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
kFlagBranch
static const char *const kFlagBranch
Definition: format.h:54
dqm::impl::MonitorElement::getFloatValue
virtual double getFloatValue() const
Definition: MonitorElement.cc:917
OutputModuleBase
DQMRootOutputModule::beginJob
void beginJob() override
Definition: DQMRootOutputModule.cc:303
DQMRootOutputModule::m_fullNameBuffer
std::string m_fullNameBuffer
Definition: DQMRootOutputModule.cc:226
ntuplemaker.fill
fill
Definition: ntuplemaker.py:304
edm::ParameterSetDescription::addUntracked
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:100
edm::ParameterSet
Definition: ParameterSet.h:36
edm::JobReport::reportLumiSection
void reportLumiSection(JobReport::Token token, unsigned int run, unsigned int lumiSectId, unsigned long nEvents=0)
Definition: JobReport.cc:458
edm::RunForOutput::endTime
Timestamp const & endTime() const
Definition: RunForOutput.h:52
kIntIndex
Definition: format.h:23
DQMRootOutputModule::m_filterOnRun
unsigned int m_filterOnRun
Definition: DQMRootOutputModule.cc:224
DQMRootOutputModule::DQMRootOutputModule
DQMRootOutputModule(edm::ParameterSet const &pset)
Definition: DQMRootOutputModule.cc:278
kTH1FIndex
Definition: format.h:26
DQMRootOutputModule::m_firstIndex
ULong64_t m_firstIndex
Definition: DQMRootOutputModule.cc:222
kMetaDataDirectory
static const char *const kMetaDataDirectory
Definition: format.h:70
DQMRootOutputModule::writeLuminosityBlock
void writeLuminosityBlock(edm::LuminosityBlockForOutput const &) override
Definition: DQMRootOutputModule.cc:383
kProcessConfigurationReleaseVersion
static const char *const kProcessConfigurationReleaseVersion
Definition: format.h:76
edm::Service
Definition: Service.h:30
createfilelist.int
int
Definition: createfilelist.py:10
edm::ProcessHistory::end
const_iterator end() const
Definition: ProcessHistory.h:63
edm::LuminosityBlockForOutput::id
LuminosityBlockID const & id() const
Definition: LuminosityBlockForOutput.h:49
kStringIndex
Definition: format.h:25
kPHIndexBranch
static const char *const kPHIndexBranch
Definition: format.h:73
kTH1SIndex
Definition: format.h:27
edm::JobReport::reportRunNumber
void reportRunNumber(JobReport::Token token, unsigned int run)
Definition: JobReport.cc:469
kTH2SIndex
Definition: format.h:30
kTH2FIndex
Definition: format.h:29
edm::LuminosityBlockID::value
uint64_t value() const
Definition: LuminosityBlockID.cc:13
kProcessConfigurationPassID
static const char *const kProcessConfigurationPassID
Definition: format.h:77
DQMRootOutputModule::m_file
std::unique_ptr< TFile > m_file
Definition: DQMRootOutputModule.cc:213
MonitorElementData::Kind::TH1D
kEndTimeBranch
static const char *const kEndTimeBranch
Definition: format.h:63
edm::one::OutputModuleBase::processName
std::string const & processName() const
Definition: OutputModuleBase.h:95
DQMRootOutputModule
Definition: DQMRootOutputModule.cc:194
DQMRootOutputModule::m_seenHistories
std::vector< edm::ProcessHistoryID > m_seenHistories
Definition: DQMRootOutputModule.cc:231
dqm::impl::MonitorElement::getFullname
std::string getFullname() const
get full name of ME including Pathname
Definition: MonitorElement.h:256
Registry.h
Digest.h
edm::EventForOutput
Definition: EventForOutput.h:50
DQMRootOutputModule::m_run
unsigned int m_run
Definition: DQMRootOutputModule.cc:216
kTH2DIndex
Definition: format.h:31
kNIndicies
Definition: format.h:35
MonitorElementData::Kind::TH2S
DQMRootOutputModule::m_indicesTree
TTree * m_indicesTree
Definition: DQMRootOutputModule.cc:229
edm::one::OutputModuleBase::description
ModuleDescription const & description() const
Definition: OutputModuleBase.cc:340
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
DQMRootOutputModule::m_treeHelpers
std::vector< std::shared_ptr< TreeHelperBase > > m_treeHelpers
Definition: DQMRootOutputModule.cc:214
MonitorElementData::Kind::TPROFILE2D
MonitorElementData::Kind::TH3F
DQMRootOutputModule::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: DQMRootOutputModule.cc:557
kBeginTimeBranch
static const char *const kBeginTimeBranch
Definition: format.h:62
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
T
long double T
Definition: Basic3DVectorLD.h:48
DQMRootOutputModule::writeRun
void writeRun(edm::RunForOutput const &) override
Definition: DQMRootOutputModule.cc:438
edm::ProcessHistoryRegistry::getMapped
bool getMapped(ProcessHistoryID const &key, ProcessHistory &value) const
Definition: ProcessHistoryRegistry.cc:29
dqm::impl::MonitorElement::getStringValue
virtual const std::string & getStringValue() const
Definition: MonitorElement.cc:922
edm::LuminosityBlockID::run
RunNumber_t run() const
Definition: LuminosityBlockID.h:41
MonitorElement
dqm::legacy::MonitorElement MonitorElement
Definition: SiPixelSCurveCalibrationAnalysis.h:55
edm::ProcessHistoryRegistry
Definition: ProcessHistoryRegistry.h:18
edm::LuminosityBlockForOutput::endTime
Timestamp const & endTime() const
Definition: LuminosityBlockForOutput.h:53
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
kFirstIndex
static const char *const kFirstIndex
Definition: format.h:65
edm::ProcessHistory::begin
const_iterator begin() const
Definition: ProcessHistory.h:62
cuy.doFill
doFill
Definition: cuy.py:576
kTH1DIndex
Definition: format.h:28
DQMRootOutputModule::startEndFile
void startEndFile()
Definition: DQMRootOutputModule.cc:489
JobReport.h
edm::ProcessHistory
Definition: ProcessHistory.h:13
kFloatIndex
Definition: format.h:24
kProcessHistoryIndexBranch
static const char *const kProcessHistoryIndexBranch
Definition: format.h:61
edm::pset::Registry::begin
const_iterator begin() const
Definition: Registry.h:63
HerwigMaxPtPartonFilter_cfi.moduleLabel
moduleLabel
Definition: HerwigMaxPtPartonFilter_cfi.py:4
DQMRootOutputModule::m_jrToken
edm::JobReport::Token m_jrToken
Definition: DQMRootOutputModule.cc:233
LuminosityBlockForOutput.h
edm::LuminosityBlockForOutput::beginTime
Timestamp const & beginTime() const
Definition: LuminosityBlockForOutput.h:52
edm::pset::Registry::const_iterator
map_type::const_iterator const_iterator
Definition: Registry.h:61
cms::MD5Result::toString
std::string toString() const
Definition: Digest.cc:95
kIndicesTree
static const char *const kIndicesTree
Definition: format.h:58
edm::JobReport::outputFileOpened
Token outputFileOpened(std::string const &physicalFileName, std::string const &logicalFileName, std::string const &catalog, std::string const &outputModuleClassName, std::string const &moduleLabel, std::string const &guid, std::string const &dataType, std::string const &branchHash, std::vector< std::string > const &branchNames)
Definition: JobReport.cc:389
DQMRootOutputModule::m_beginTime
ULong64_t m_beginTime
Definition: DQMRootOutputModule.cc:220
edm::ConfigurationDescriptions::addDefault
void addDefault(ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:99
MonitorElementData::Kind::TPROFILE
keep
const int keep
Definition: GenParticlePruner.cc:48
DQMRootOutputModule::m_logicalFileName
std::string m_logicalFileName
Definition: DQMRootOutputModule.cc:212
dqm::impl::MonitorElement::getIntValue
virtual int64_t getIntValue() const
Definition: MonitorElement.cc:912
edm::RunForOutput::beginTime
Timestamp const & beginTime() const
Definition: RunForOutput.h:51
MonitorElementData::Kind::REAL
kTProfile2DIndex
Definition: format.h:34
edm::pset::Registry
Definition: Registry.h:26
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
kRunBranch
static const char *const kRunBranch
Definition: format.h:59