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