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