CMS 3D CMS Logo

NanoAODOutputModule.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: PhysicsTools/NanoAODOutput
4 // Class : NanoAODOutputModule
5 //
6 // Implementation:
7 // [Notes on implementation]
8 //
9 // Original Author: Christopher Jones
10 // Created: Mon, 07 Aug 2017 14:21:41 GMT
11 //
12 
13 // system include files
14 #include <algorithm>
15 #include <memory>
16 
17 #include "Compression.h"
18 #include "TFile.h"
19 #include "TObjString.h"
20 #include "TROOT.h"
21 #include "TTree.h"
22 #include <string>
23 
24 // user include files
45 
46 #include <iostream>
47 
49 public:
51  ~NanoAODOutputModule() override;
52 
53  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
54 
55 private:
56  void write(edm::EventForOutput const& e) override;
58  void writeRun(edm::RunForOutput const&) override;
59  bool isFileOpen() const override;
60  void openFile(edm::FileBlock const&) override;
61  void reallyCloseFile() override;
62 
69  bool m_fakeName; //crab workaround, remove after crab is fixed
73  std::unique_ptr<TFile> m_file;
75 
76  static constexpr int m_firstFlush{1000};
77 
79  public:
80  void branch(TTree& tree) {
81  tree.Branch("run", &m_run, "run/i");
82  tree.Branch("luminosityBlock", &m_luminosityBlock, "luminosityBlock/i");
83  tree.Branch("event", &m_event, "event/l");
84  }
85  void fill(const edm::EventID& id) {
86  m_run = id.run();
87  m_luminosityBlock = id.luminosityBlock();
88  m_event = id.event();
89  }
90 
91  private:
92  UInt_t m_run;
94  ULong64_t m_event;
96 
98  public:
99  void branch(TTree& tree) {
100  tree.Branch("run", &m_run, "run/i");
101  tree.Branch("luminosityBlock", &m_luminosityBlock, "luminosityBlock/i");
102  }
103  void fill(const edm::LuminosityBlockID& id) {
104  m_run = id.run();
105  m_luminosityBlock = id.value();
106  }
107 
108  private:
109  UInt_t m_run;
112 
114  public:
115  void branch(TTree& tree) { tree.Branch("run", &m_run, "run/i"); }
116  void fill(const edm::RunID& id) { m_run = id.run(); }
117 
118  private:
119  UInt_t m_run;
121 
122  std::vector<TableOutputBranches> m_tables;
123  std::vector<TriggerOutputBranches> m_triggers;
124  bool m_triggers_areSorted = false;
125  std::vector<EventStringOutputBranches> m_evstrings;
126 
127  std::vector<SummaryTableOutputBranches> m_runTables;
128  std::vector<SummaryTableOutputBranches> m_lumiTables;
129 
130  std::vector<std::pair<std::string, edm::EDGetToken>> m_nanoMetadata;
131 };
132 
133 //
134 // constants, enums and typedefs
135 //
136 
137 //
138 // static data member definitions
139 //
140 
141 //
142 // constructors and destructor
143 //
146  edm::one::OutputModule<>(pset),
147  m_fileName(pset.getUntrackedParameter<std::string>("fileName")),
148  m_logicalFileName(pset.getUntrackedParameter<std::string>("logicalFileName")),
149  m_compressionLevel(pset.getUntrackedParameter<int>("compressionLevel")),
150  m_compressionAlgorithm(pset.getUntrackedParameter<std::string>("compressionAlgorithm")),
151  m_writeProvenance(pset.getUntrackedParameter<bool>("saveProvenance", true)),
152  m_fakeName(pset.getUntrackedParameter<bool>("fakeNameForCrab", false)),
153  m_autoFlush(pset.getUntrackedParameter<int>("autoFlush", -10000000)),
154  m_processHistoryRegistry() {}
155 
157 
159  //Get data from 'e' and write it to the file
161  jr->eventWrittenToFile(m_jrToken, iEvent.id().run(), iEvent.id().event());
162 
163  if (m_autoFlush) {
164  int64_t events = m_tree->GetEntriesFast();
165  if (events == m_firstFlush) {
166  m_tree->FlushBaskets();
167  float maxMemory;
168  if (m_autoFlush > 0) {
169  // Estimate the memory we'll be using at the first full flush by
170  // linearly scaling the number of events.
171  float percentClusterDone = m_firstFlush / static_cast<float>(m_autoFlush);
172  maxMemory = static_cast<float>(m_tree->GetTotBytes()) / percentClusterDone;
173  } else if (m_tree->GetZipBytes() == 0) {
174  maxMemory = 100 * 1024 * 1024; // Degenerate case of no information in the tree; arbitrary value
175  } else {
176  // Estimate the memory we'll be using by scaling the current compression ratio.
177  float cxnRatio = m_tree->GetTotBytes() / static_cast<float>(m_tree->GetZipBytes());
178  maxMemory = -m_autoFlush * cxnRatio;
179  float percentBytesDone = -m_tree->GetZipBytes() / static_cast<float>(m_autoFlush);
180  m_autoFlush = m_firstFlush / percentBytesDone;
181  }
182  //std::cout << "OptimizeBaskets: total bytes " << m_tree->GetTotBytes() << std::endl;
183  //std::cout << "OptimizeBaskets: zip bytes " << m_tree->GetZipBytes() << std::endl;
184  //std::cout << "OptimizeBaskets: autoFlush " << m_autoFlush << std::endl;
185  //std::cout << "OptimizeBaskets: maxMemory " << static_cast<uint32_t>(maxMemory) << std::endl;
186  //m_tree->OptimizeBaskets(static_cast<uint32_t>(maxMemory), 1, "d");
187  m_tree->OptimizeBaskets(static_cast<uint32_t>(maxMemory), 1, "");
188  }
190  m_tree->FlushBaskets();
191  m_eventsSinceFlush = 0;
192  }
194  }
195 
197  // fill all tables, starting from main tables and then doing extension tables
198  for (unsigned int extensions = 0; extensions <= 1; ++extensions) {
199  for (auto& t : m_tables)
200  t.fill(iEvent, *m_tree, extensions);
201  }
202  if (!m_triggers_areSorted) { // sort triggers/flags in inverse processHistory order, to save without any special label the most recent ones
203  std::vector<std::string> pnames;
204  for (auto& p : iEvent.processHistory())
205  pnames.push_back(p.processName());
207  return ((std::find(pnames.begin(), pnames.end(), a.processName()) - pnames.begin()) >
208  (std::find(pnames.begin(), pnames.end(), b.processName()) - pnames.begin()));
209  });
210  m_triggers_areSorted = true;
211  }
212  // fill triggers
213  for (auto& t : m_triggers)
214  t.fill(iEvent, *m_tree);
215  // fill event branches
216  for (auto& t : m_evstrings)
217  t.fill(iEvent, *m_tree);
218  m_tree->Fill();
219 
221 }
222 
225  jr->reportLumiSection(m_jrToken, iLumi.id().run(), iLumi.id().value());
226 
227  m_commonLumiBranches.fill(iLumi.id());
228 
229  for (auto& t : m_lumiTables)
230  t.fill(iLumi, *m_lumiTree);
231 
232  m_lumiTree->Fill();
233 
235 }
236 
239  jr->reportRunNumber(m_jrToken, iRun.id().run());
240 
241  m_commonRunBranches.fill(iRun.id());
242 
243  for (auto& t : m_runTables)
244  t.fill(iRun, *m_runTree);
245 
247  for (const auto& p : m_nanoMetadata) {
248  iRun.getByToken(p.second, hstring);
249  TObjString* tos = dynamic_cast<TObjString*>(m_file->Get(p.first.c_str()));
250  if (tos) {
251  if (hstring->str() != tos->GetString())
252  throw cms::Exception("LogicError", "Inconsistent nanoMetadata " + p.first + " (" + hstring->str() + ")");
253  } else {
254  auto ostr = std::make_unique<TObjString>(hstring->str().c_str());
255  m_file->WriteTObject(ostr.release(), p.first.c_str());
256  }
257  }
258 
259  m_runTree->Fill();
260 
262 }
263 
264 bool NanoAODOutputModule::isFileOpen() const { return nullptr != m_file.get(); }
265 
267  m_file = std::make_unique<TFile>(m_fileName.c_str(), "RECREATE", "", m_compressionLevel);
269  cms::Digest branchHash;
270  m_jrToken = jr->outputFileOpened(m_fileName,
272  std::string(),
273  m_fakeName ? "PoolOutputModule" : "NanoAODOutputModule",
276  std::string(),
277  branchHash.digest().toString(),
278  std::vector<std::string>());
279 
280  if (m_compressionAlgorithm == std::string("ZLIB")) {
281  m_file->SetCompressionAlgorithm(ROOT::kZLIB);
282  } else if (m_compressionAlgorithm == std::string("LZMA")) {
283  m_file->SetCompressionAlgorithm(ROOT::kLZMA);
284  } else {
285  throw cms::Exception("Configuration")
286  << "NanoAODOutputModule configured with unknown compression algorithm '" << m_compressionAlgorithm << "'\n"
287  << "Allowed compression algorithms are ZLIB and LZMA\n";
288  }
289  /* Setup file structure here */
290  m_tables.clear();
291  m_triggers.clear();
292  m_triggers_areSorted = false;
293  m_evstrings.clear();
294  m_runTables.clear();
295  m_lumiTables.clear();
296  const auto& keeps = keptProducts();
297  for (const auto& keep : keeps[edm::InEvent]) {
298  if (keep.first->className() == "nanoaod::FlatTable")
299  m_tables.emplace_back(keep.first, keep.second);
300  else if (keep.first->className() == "edm::TriggerResults") {
301  m_triggers.emplace_back(keep.first, keep.second);
302  } else if (keep.first->className() == "std::basic_string<char,std::char_traits<char> >" &&
303  keep.first->productInstanceName() == "genModel") { // friendlyClassName == "String"
304  m_evstrings.emplace_back(keep.first, keep.second, true); // update only at lumiBlock transitions
305  } else
306  throw cms::Exception("Configuration", "NanoAODOutputModule cannot handle class " + keep.first->className());
307  }
308 
309  for (const auto& keep : keeps[edm::InLumi]) {
310  if (keep.first->className() == "nanoaod::MergeableCounterTable")
311  m_lumiTables.push_back(SummaryTableOutputBranches(keep.first, keep.second));
312  else if (keep.first->className() == "nanoaod::UniqueString" && keep.first->moduleLabel() == "nanoMetadata")
313  m_nanoMetadata.emplace_back(keep.first->productInstanceName(), keep.second);
314  else
315  throw cms::Exception(
316  "Configuration",
317  "NanoAODOutputModule cannot handle class " + keep.first->className() + " in LuminosityBlock branch");
318  }
319 
320  for (const auto& keep : keeps[edm::InRun]) {
321  if (keep.first->className() == "nanoaod::MergeableCounterTable")
322  m_runTables.push_back(SummaryTableOutputBranches(keep.first, keep.second));
323  else if (keep.first->className() == "nanoaod::UniqueString" && keep.first->moduleLabel() == "nanoMetadata")
324  m_nanoMetadata.emplace_back(keep.first->productInstanceName(), keep.second);
325  else
326  throw cms::Exception("Configuration",
327  "NanoAODOutputModule cannot handle class " + keep.first->className() + " in Run branch");
328  }
329 
330  // create the trees
331  m_tree = std::make_unique<TTree>("Events", "Events");
332  m_tree->SetAutoSave(0);
333  m_tree->SetAutoFlush(0);
335 
336  m_lumiTree = std::make_unique<TTree>("LuminosityBlocks", "LuminosityBlocks");
337  m_lumiTree->SetAutoSave(0);
339 
340  m_runTree = std::make_unique<TTree>("Runs", "Runs");
341  m_runTree->SetAutoSave(0);
343 
344  if (m_writeProvenance) {
345  m_metaDataTree = std::make_unique<TTree>(edm::poolNames::metaDataTreeName().c_str(), "Job metadata");
346  m_metaDataTree->SetAutoSave(0);
347  m_parameterSetsTree = std::make_unique<TTree>(edm::poolNames::parameterSetsTreeName().c_str(), "Parameter sets");
348  m_parameterSetsTree->SetAutoSave(0);
349  }
350 }
352  if (m_writeProvenance) {
353  int basketSize = 16384; // fixme configurable?
356  if (m_metaDataTree->GetNbranches() != 0) {
357  m_metaDataTree->SetEntries(-1);
358  }
359  if (m_parameterSetsTree->GetNbranches() != 0) {
360  m_parameterSetsTree->SetEntries(-1);
361  }
362  }
363  m_file->Write();
364  m_file->Close();
365  m_file.reset();
366  m_tree.release(); // apparently root has ownership
367  m_lumiTree.release(); //
368  m_runTree.release(); //
369  m_metaDataTree.release(); //
370  m_parameterSetsTree.release(); //
373 }
374 
377 
378  desc.addUntracked<std::string>("fileName");
379  desc.addUntracked<std::string>("logicalFileName", "");
380 
381  desc.addUntracked<int>("compressionLevel", 9)->setComment("ROOT compression level of output file.");
382  desc.addUntracked<std::string>("compressionAlgorithm", "ZLIB")
383  ->setComment("Algorithm used to compress data in the ROOT output file, allowed values are ZLIB and LZMA");
384  desc.addUntracked<bool>("saveProvenance", true)
385  ->setComment("Save process provenance information, e.g. for edmProvDump");
386  desc.addUntracked<bool>("fakeNameForCrab", false)
387  ->setComment(
388  "Change the OutputModule name in the fwk job report to fake PoolOutputModule. This is needed to run on cran "
389  "(and publish) till crab is fixed");
390  desc.addUntracked<int>("autoFlush", -10000000)->setComment("Autoflush parameter for ROOT file");
391 
392  //replace with whatever you want to get from the EDM by default
393  const std::vector<std::string> keep = {"drop *",
394  "keep nanoaodFlatTable_*Table_*_*",
395  "keep edmTriggerResults_*_*_*",
396  "keep String_*_genModel_*",
397  "keep nanoaodMergeableCounterTable_*Table_*_*",
398  "keep nanoaodUniqueString_nanoMetadata_*_*"};
400 
401  //Used by Workflow management for their own meta data
403  dataSet.setAllowAnything();
404  desc.addUntracked<edm::ParameterSetDescription>("dataset", dataSet)
405  ->setComment("PSet is only used by Data Operations and not by this module.");
406 
408  branchSet.setAllowAnything();
409  desc.add<edm::ParameterSetDescription>("branches", branchSet);
410 
411  descriptions.addDefault(desc);
412 }
413 
edm::one::OutputModule
Definition: OutputModule.h:30
NanoAODOutputModule::CommonEventBranches::fill
void fill(const edm::EventID &id)
Definition: NanoAODOutputModule.cc:85
NanoAODOutputModule::m_tree
std::unique_ptr< TTree > m_tree
Definition: NanoAODOutputModule.cc:74
NanoAODOutputModule::CommonRunBranches
Definition: NanoAODOutputModule.cc:113
edm::ProcessHistoryRegistry::registerProcessHistory
bool registerProcessHistory(ProcessHistory const &processHistory)
Definition: ProcessHistoryRegistry.cc:11
electrons_cff.bool
bool
Definition: electrons_cff.py:366
SiPixelPI::one
Definition: SiPixelPayloadInspectorHelper.h:39
funct::false
false
Definition: Factorize.h:29
OutputModule.h
edm::RunID
Definition: RunID.h:28
NanoAODOutputModule::m_jrToken
edm::JobReport::Token m_jrToken
Definition: NanoAODOutputModule.cc:72
edm::RunForOutput::id
RunID const & id() const
Definition: RunForOutput.h:54
cms::Digest::digest
MD5Result digest()
Definition: Digest.cc:171
NanoAODOutputModule::m_runTables
std::vector< SummaryTableOutputBranches > m_runTables
Definition: NanoAODOutputModule.cc:127
NanoAODOutputModule::writeLuminosityBlock
void writeLuminosityBlock(edm::LuminosityBlockForOutput const &) override
Definition: NanoAODOutputModule.cc:223
NanoAODOutputModule::m_commonRunBranches
class NanoAODOutputModule::CommonRunBranches m_commonRunBranches
edm::RunID::run
RunNumber_t run() const
Definition: RunID.h:36
SummaryTableOutputBranches.h
edm
HLT enums.
Definition: AlignableModifier.h:19
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
tree
Definition: tree.py:1
edm::JobReport::Token
std::size_t Token
Definition: JobReport.h:106
NanoAODOutputModule::m_lumiTree
std::unique_ptr< TTree > m_lumiTree
Definition: NanoAODOutputModule.cc:74
NanoAODOutputModule::m_autoFlush
int m_autoFlush
Definition: NanoAODOutputModule.cc:70
NanoAODOutputModule::CommonEventBranches::branch
void branch(TTree &tree)
Definition: NanoAODOutputModule.cc:80
NanoAODOutputModule::m_commonLumiBranches
class NanoAODOutputModule::CommonLumiBranches m_commonLumiBranches
EgammaPostProcessor_cfi.dataSet
dataSet
Definition: EgammaPostProcessor_cfi.py:6
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
RunForOutput.h
edm::poolNames::parameterSetsTreeName
std::string const & parameterSetsTreeName()
Definition: BranchType.cc:204
NanoAODOutputModule::isFileOpen
bool isFileOpen() const override
Definition: NanoAODOutputModule.cc:264
NanoAODOutputModule::m_logicalFileName
std::string m_logicalFileName
Definition: NanoAODOutputModule.cc:64
NanoAODOutputModule::m_compressionLevel
int m_compressionLevel
Definition: NanoAODOutputModule.cc:65
ProcessHistoryRegistry.h
NanoAODOutputModule::CommonEventBranches::m_event
ULong64_t m_event
Definition: NanoAODOutputModule.cc:94
edm::JobReport::eventWrittenToFile
void eventWrittenToFile(Token fileToken, RunNumber_t run, EventNumber_t event)
Definition: JobReport.cc:428
CommonProvenanceFiller.h
TriggerOutputBranches
Definition: TriggerOutputBranches.h:13
EventForOutput.h
NanoAODOutputModule::CommonRunBranches::m_run
UInt_t m_run
Definition: NanoAODOutputModule.cc:119
patZpeak.events
events
Definition: patZpeak.py:20
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
NanoAODOutputModule::m_evstrings
std::vector< EventStringOutputBranches > m_evstrings
Definition: NanoAODOutputModule.cc:125
edm::Handle
Definition: AssociativeIterator.h:50
NanoAODOutputModule::openFile
void openFile(edm::FileBlock const &) override
Definition: NanoAODOutputModule.cc:266
edm::InRun
Definition: BranchType.h:11
NanoAODOutputModule::m_tables
std::vector< TableOutputBranches > m_tables
Definition: NanoAODOutputModule.cc:122
NanoAODOutputModule::m_commonBranches
class NanoAODOutputModule::CommonEventBranches m_commonBranches
edm::LuminosityBlockForOutput
Definition: LuminosityBlockForOutput.h:40
edm::FileBlock
Definition: FileBlock.h:20
edm::RunForOutput
Definition: RunForOutput.h:39
NanoAODOutputModule::CommonRunBranches::branch
void branch(TTree &tree)
Definition: NanoAODOutputModule.cc:115
MakerMacros.h
NanoAODOutputModule::m_processHistoryRegistry
edm::ProcessHistoryRegistry m_processHistoryRegistry
Definition: NanoAODOutputModule.cc:71
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
cms::Digest
Definition: Digest.h:46
Service.h
edm::fillParameterSetBranch
void fillParameterSetBranch(TTree *parameterSetsTree, int basketSize)
Definition: CommonProvenanceFiller.cc:18
NanoAODOutputModule::CommonLumiBranches::fill
void fill(const edm::LuminosityBlockID &id)
Definition: NanoAODOutputModule.cc:103
NanoAODOutputModule::CommonLumiBranches::m_run
UInt_t m_run
Definition: NanoAODOutputModule.cc:109
edm::JobReport::outputFileClosed
void outputFileClosed(Token fileToken)
Definition: JobReport.cc:433
NanoAODOutputModule::m_runTree
std::unique_ptr< TTree > m_runTree
Definition: NanoAODOutputModule.cc:74
NanoAODOutputModule::m_firstFlush
static constexpr int m_firstFlush
Definition: NanoAODOutputModule.cc:76
edm::InEvent
Definition: BranchType.h:11
NanoAODOutputModule::reallyCloseFile
void reallyCloseFile() override
Definition: NanoAODOutputModule.cc:351
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
edm::LuminosityBlockID
Definition: LuminosityBlockID.h:31
NanoAODOutputModule::m_eventsSinceFlush
int m_eventsSinceFlush
Definition: NanoAODOutputModule.cc:66
b
double b
Definition: hdecay.h:118
NanoAODOutputModule::NanoAODOutputModule
NanoAODOutputModule(edm::ParameterSet const &pset)
Definition: NanoAODOutputModule.cc:144
EventStringOutputBranches.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
NanoAODOutputModule::CommonLumiBranches
Definition: NanoAODOutputModule.cc:97
NanoAODOutputModule::m_compressionAlgorithm
std::string m_compressionAlgorithm
Definition: NanoAODOutputModule.cc:67
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::OccurrenceForOutput::getByToken
BasicHandle getByToken(EDGetToken token, TypeID const &typeID) const
Definition: OccurrenceForOutput.cc:44
OutputModuleBase
funct::true
true
Definition: Factorize.h:173
NanoAODOutputModule::CommonLumiBranches::branch
void branch(TTree &tree)
Definition: NanoAODOutputModule.cc:99
BranchDescription.h
NanoAODOutputModule::writeRun
void writeRun(edm::RunForOutput const &) override
Definition: NanoAODOutputModule.cc:237
edm::ParameterSet
Definition: ParameterSet.h:47
NanoAODOutputModule::CommonEventBranches::m_run
UInt_t m_run
Definition: NanoAODOutputModule.cc:92
a
double a
Definition: hdecay.h:119
edm::JobReport::reportLumiSection
void reportLumiSection(JobReport::Token token, unsigned int run, unsigned int lumiSectId, unsigned long nEvents=0)
Definition: JobReport.cc:458
NanoAODOutputModule
Definition: NanoAODOutputModule.cc:48
edm::InLumi
Definition: BranchType.h:11
NanoAODOutputModule::CommonEventBranches::m_luminosityBlock
UInt_t m_luminosityBlock
Definition: NanoAODOutputModule.cc:93
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
edm::one::OutputModuleBase::keptProducts
SelectedProductsForBranchType const & keptProducts() const
Definition: OutputModuleBase.h:95
GlobalIdentifier.h
NanoAODOutputModule::m_parameterSetsTree
std::unique_ptr< TTree > m_parameterSetsTree
Definition: NanoAODOutputModule.cc:74
edm::Service
Definition: Service.h:30
createfilelist.int
int
Definition: createfilelist.py:10
edm::createGlobalIdentifier
std::string createGlobalIdentifier(bool binary=false)
Definition: GlobalIdentifier.cc:5
iEvent
int iEvent
Definition: GenABIO.cc:224
UniqueString.h
edm::LuminosityBlockForOutput::id
LuminosityBlockID const & id() const
Definition: LuminosityBlockForOutput.h:53
BranchType.h
edm::JobReport::reportRunNumber
void reportRunNumber(JobReport::Token token, unsigned int run)
Definition: JobReport.cc:469
edm::ParameterSetDescription::setAllowAnything
void setAllowAnything()
allow any parameter label/value pairs
Definition: ParameterSetDescription.cc:37
edm::LuminosityBlockID::value
uint64_t value() const
Definition: LuminosityBlockID.cc:13
NanoAODOutputModule::m_fakeName
bool m_fakeName
Definition: NanoAODOutputModule.cc:69
FlatTable.h
NanoAODOutputModule::m_nanoMetadata
std::vector< std::pair< std::string, edm::EDGetToken > > m_nanoMetadata
Definition: NanoAODOutputModule.cc:130
NanoAODOutputModule::m_fileName
std::string m_fileName
Definition: NanoAODOutputModule.cc:63
NanoAODOutputModule::m_writeProvenance
bool m_writeProvenance
Definition: NanoAODOutputModule.cc:68
TableOutputBranches.h
Digest.h
edm::EventForOutput
Definition: EventForOutput.h:50
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
edm::one::OutputModuleBase::description
ModuleDescription const & description() const
Definition: OutputModuleBase.cc:340
NanoAODOutputModule::m_lumiTables
std::vector< SummaryTableOutputBranches > m_lumiTables
Definition: NanoAODOutputModule.cc:128
std
Definition: JetResolutionObject.h:76
NanoAODOutputModule::CommonLumiBranches::m_luminosityBlock
UInt_t m_luminosityBlock
Definition: NanoAODOutputModule.cc:110
NanoAODOutputModule::m_file
std::unique_ptr< TFile > m_file
Definition: NanoAODOutputModule.cc:73
NanoAODOutputModule::m_triggers
std::vector< TriggerOutputBranches > m_triggers
Definition: NanoAODOutputModule.cc:123
edm::poolNames::metaDataTreeName
std::string const & metaDataTreeName()
Definition: BranchType.cc:152
Exception
Definition: hltDiff.cc:245
NanoAODOutputModule::CommonEventBranches
Definition: NanoAODOutputModule.cc:78
TriggerOutputBranches.h
edm::fillProcessHistoryBranch
void fillProcessHistoryBranch(TTree *metaDataTree, int basketSize, ProcessHistoryRegistry const &processHistoryRegistry)
Definition: CommonProvenanceFiller.cc:32
edm::LuminosityBlockID::run
RunNumber_t run() const
Definition: LuminosityBlockID.h:41
edm::ProcessHistoryRegistry
Definition: ProcessHistoryRegistry.h:18
SummaryTableOutputBranches
Definition: SummaryTableOutputBranches.h:12
NanoAODOutputModule::m_metaDataTree
std::unique_ptr< TTree > m_metaDataTree
Definition: NanoAODOutputModule.cc:74
NanoAODOutputModule::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: NanoAODOutputModule.cc:375
cms::Exception
Definition: Exception.h:70
JobReport.h
ParameterSet.h
HerwigMaxPtPartonFilter_cfi.moduleLabel
moduleLabel
Definition: HerwigMaxPtPartonFilter_cfi.py:4
LuminosityBlockForOutput.h
NanoAODOutputModule::~NanoAODOutputModule
~NanoAODOutputModule() override
Definition: NanoAODOutputModule.cc:156
NanoAODOutputModule::write
void write(edm::EventForOutput const &e) override
Definition: NanoAODOutputModule.cc:158
cms::MD5Result::toString
std::string toString() const
Definition: Digest.cc:95
edm::EventID
Definition: EventID.h:31
submitPVValidationJobs.t
string t
Definition: submitPVValidationJobs.py:644
edm::ConfigurationDescriptions::addDefault
void addDefault(ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:99
keep
const int keep
Definition: GenParticlePruner.cc:48
NanoAODOutputModule::m_triggers_areSorted
bool m_triggers_areSorted
Definition: NanoAODOutputModule.cc:124
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
NanoAODOutputModule::CommonRunBranches::fill
void fill(const edm::RunID &id)
Definition: NanoAODOutputModule.cc:116
nanoaod::UniqueString::str
const std::string & str() const
Definition: UniqueString.h:12
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37