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