CMS 3D CMS Logo

PoolOutputModule.cc
Go to the documentation of this file.
2 
4 
24 
25 #include "TTree.h"
26 #include "TBranchElement.h"
27 #include "TObjArray.h"
28 #include "RVersion.h"
29 
30 #include <fstream>
31 #include <iomanip>
32 #include <sstream>
33 #include "boost/algorithm/string.hpp"
34 
35 namespace edm {
38  one::OutputModule<WatchInputFiles>(pset),
39  rootServiceChecker_(),
40  auxItems_(),
41  selectedOutputItemList_(),
42  fileName_(pset.getUntrackedParameter<std::string>("fileName")),
43  logicalFileName_(pset.getUntrackedParameter<std::string>("logicalFileName")),
44  catalog_(pset.getUntrackedParameter<std::string>("catalog")),
45  maxFileSize_(pset.getUntrackedParameter<int>("maxSize")),
46  compressionLevel_(pset.getUntrackedParameter<int>("compressionLevel")),
47  compressionAlgorithm_(pset.getUntrackedParameter<std::string>("compressionAlgorithm")),
48  basketSize_(pset.getUntrackedParameter<int>("basketSize")),
49  eventAuxBasketSize_(pset.getUntrackedParameter<int>("eventAuxiliaryBasketSize")),
50  eventAutoFlushSize_(pset.getUntrackedParameter<int>("eventAutoFlushCompressedSize")),
51  splitLevel_(std::min<int>(pset.getUntrackedParameter<int>("splitLevel") + 1, 99)),
52  basketOrder_(pset.getUntrackedParameter<std::string>("sortBaskets")),
53  treeMaxVirtualSize_(pset.getUntrackedParameter<int>("treeMaxVirtualSize")),
54  whyNotFastClonable_(pset.getUntrackedParameter<bool>("fastCloning") ? FileBlock::CanFastClone
55  : FileBlock::DisabledInConfigFile),
56  dropMetaData_(DropNone),
57  moduleLabel_(pset.getParameter<std::string>("@module_label")),
58  initializedFromInput_(false),
59  outputFileCount_(0),
60  inputFileCount_(0),
61  branchParents_(),
62  branchChildren_(),
63  overrideInputFileSplitLevels_(pset.getUntrackedParameter<bool>("overrideInputFileSplitLevels")),
64  compactEventAuxiliary_(pset.getUntrackedParameter<bool>("compactEventAuxiliary")),
65  rootOutputFile_(),
66  statusFileName_() {
67  if (pset.getUntrackedParameter<bool>("writeStatusFile")) {
68  std::ostringstream statusfilename;
69  statusfilename << moduleLabel_ << '_' << getpid();
70  statusFileName_ = statusfilename.str();
71  }
72 
73  std::string dropMetaData(pset.getUntrackedParameter<std::string>("dropMetaData"));
74  if (dropMetaData.empty())
76  else if (dropMetaData == std::string("NONE"))
78  else if (dropMetaData == std::string("DROPPED"))
80  else if (dropMetaData == std::string("PRIOR"))
82  else if (dropMetaData == std::string("ALL"))
84  else {
85  throw edm::Exception(errors::Configuration, "Illegal dropMetaData parameter value: ")
86  << dropMetaData << ".\n"
87  << "Legal values are 'NONE', 'DROPPED', 'PRIOR', and 'ALL'.\n";
88  }
89 
90  if (!wantAllEvents()) {
92  }
93 
94  auto const& specialSplit{pset.getUntrackedParameterSetVector("overrideBranchesSplitLevel")};
95 
96  specialSplitLevelForBranches_.reserve(specialSplit.size());
97  for (auto const& s : specialSplit) {
98  specialSplitLevelForBranches_.emplace_back(s.getUntrackedParameter<std::string>("branch"),
99  s.getUntrackedParameter<int>("splitLevel"));
100  }
101 
102  // We don't use this next parameter, but we read it anyway because it is part
103  // of the configuration of this module. An external parser creates the
104  // configuration by reading this source code.
105  pset.getUntrackedParameterSet("dataset");
106  }
107 
110  for (auto const& prod : reg->productList()) {
111  BranchDescription const& desc = prod.second;
112  if (desc.produced() && desc.branchType() == InEvent && !desc.isAlias()) {
113  producedBranches_.emplace_back(desc.branchID());
114  }
115  }
116  }
117 
118  std::string const& PoolOutputModule::currentFileName() const { return rootOutputFile_->fileName(); }
119 
120  PoolOutputModule::AuxItem::AuxItem() : basketSize_(BranchDescription::invalidBasketSize) {}
121 
123  : branchDescription_(nullptr),
124  token_(),
125  product_(nullptr),
126  splitLevel_(BranchDescription::invalidSplitLevel),
127  basketSize_(BranchDescription::invalidBasketSize) {}
128 
130  EDGetToken const& token,
131  int splitLevel,
132  int basketSize)
133  : branchDescription_(bd), token_(token), product_(nullptr), splitLevel_(splitLevel), basketSize_(basketSize) {}
134 
136  // Fill a map mapping branch names to an index specifying the order in the tree.
137  if (tree != nullptr) {
138  TObjArray* branches = tree->GetListOfBranches();
139  for (int i = 0; i < branches->GetEntries(); ++i) {
140  TBranchElement* br = (TBranchElement*)branches->At(i);
141  treeMap_->insert(std::make_pair(std::string(br->GetName()), i));
142  }
143  }
144  }
145 
147  // Provides a comparison for sorting branches according to the index values in treeMap_.
148  // Branches not found are always put at the end (i.e. not found > found).
149  if (treeMap_->empty())
150  return lh < rh;
151  std::string const& lstring = lh.branchDescription_->branchName();
152  std::string const& rstring = rh.branchDescription_->branchName();
153  std::map<std::string, int>::const_iterator lit = treeMap_->find(lstring);
154  std::map<std::string, int>::const_iterator rit = treeMap_->find(rstring);
155  bool lfound = (lit != treeMap_->end());
156  bool rfound = (rit != treeMap_->end());
157  if (lfound && rfound) {
158  return lit->second < rit->second;
159  } else if (lfound) {
160  return true;
161  } else if (rfound) {
162  return false;
163  }
164  return lh < rh;
165  }
166 
167  inline bool PoolOutputModule::SpecialSplitLevelForBranch::match(std::string const& iBranchName) const {
168  return std::regex_match(iBranchName, branch_);
169  }
170 
171  std::regex PoolOutputModule::SpecialSplitLevelForBranch::convert(std::string const& iGlobBranchExpression) const {
172  std::string tmp(iGlobBranchExpression);
173  boost::replace_all(tmp, "*", ".*");
174  boost::replace_all(tmp, "?", ".");
175  return std::regex(tmp);
176  }
177 
178  void PoolOutputModule::fillSelectedItemList(BranchType branchType, TTree* theInputTree) {
179  SelectedProducts const& keptVector = keptProducts()[branchType];
180  OutputItemList& outputItemList = selectedOutputItemList_[branchType];
181  AuxItem& auxItem = auxItems_[branchType];
182 
183  auto basketSize = (InEvent == branchType) ? eventAuxBasketSize_ : basketSize_;
184 
185  // Fill AuxItem
186  if (theInputTree != nullptr && !overrideInputFileSplitLevels_) {
187  TBranch* auxBranch = theInputTree->GetBranch(BranchTypeToAuxiliaryBranchName(branchType).c_str());
188  if (auxBranch) {
189  auxItem.basketSize_ = auxBranch->GetBasketSize();
190  } else {
191  auxItem.basketSize_ = basketSize;
192  }
193  } else {
194  auxItem.basketSize_ = basketSize;
195  }
196 
197  // Fill outputItemList with an entry for each branch.
198  for (auto const& kept : keptVector) {
201 
202  BranchDescription const& prod = *kept.first;
203  TBranch* theBranch = ((!prod.produced() && theInputTree != nullptr && !overrideInputFileSplitLevels_)
204  ? theInputTree->GetBranch(prod.branchName().c_str())
205  : nullptr);
206 
207  if (theBranch != nullptr) {
208  splitLevel = theBranch->GetSplitLevel();
209  basketSize = theBranch->GetBasketSize();
210  } else {
211  splitLevel = (prod.splitLevel() == BranchDescription::invalidSplitLevel ? splitLevel_ : prod.splitLevel());
212  for (auto const& b : specialSplitLevelForBranches_) {
213  if (b.match(prod.branchName())) {
214  splitLevel = b.splitLevel_;
215  }
216  }
217  basketSize = (prod.basketSize() == BranchDescription::invalidBasketSize ? basketSize_ : prod.basketSize());
218  }
219  outputItemList.emplace_back(&prod, kept.second, splitLevel, basketSize);
220  }
221 
222  // Sort outputItemList to allow fast copying.
223  // The branches in outputItemList must be in the same order as in the input tree, with all new branches at the end.
224  sort_all(outputItemList, OutputItem::Sorter(theInputTree));
225  }
226 
228  if (isFileOpen()) {
229  //Faster to read ChildrenBranches directly from input
230  // file than to build it every event
231  auto const& branchToChildMap = fb.branchChildren().childLookup();
232  for (auto const& parentToChildren : branchToChildMap) {
233  for (auto const& child : parentToChildren.second) {
234  branchChildren_.insertChild(parentToChildren.first, child);
235  }
236  }
237  rootOutputFile_->beginInputFile(fb, remainingEvents());
238  }
239  }
240 
242  if (!isFileOpen()) {
243  reallyOpenFile();
245  }
246  }
247 
249  if (!initializedFromInput_) {
250  for (int i = InEvent; i < NumBranchTypes; ++i) {
251  if (i == InProcess) {
252  // ProcessBlock output not implemented yet
253  continue;
254  }
255  BranchType branchType = static_cast<BranchType>(i);
256  TTree* theInputTree =
257  (branchType == InEvent ? fb.tree() : (branchType == InLumi ? fb.lumiTree() : fb.runTree()));
258  fillSelectedItemList(branchType, theInputTree);
259  }
260  initializedFromInput_ = true;
261  }
262  ++inputFileCount_;
264  }
265 
267  if (rootOutputFile_)
268  rootOutputFile_->respondToCloseInputFile(fb);
269  }
270 
273  }
274 
276 
279  rootOutputFile_->writeOne(e);
280  if (!statusFileName_.empty()) {
281  std::ofstream statusFile(statusFileName_.c_str());
282  statusFile << e.id() << " time: " << std::setprecision(3) << TimeOfDay() << '\n';
283  statusFile.close();
284  }
285  }
286 
288  rootOutputFile_->writeLuminosityBlock(lb);
289  }
290 
292 
296  branchParents_.clear();
297  startEndFile();
308  writeProductDependencies(); //branchChildren used here
310  finishEndFile();
311 
313  }
314 
315  // At some later date, we may move functionality from finishEndFile() to here.
317 
318  void PoolOutputModule::writeFileFormatVersion() { rootOutputFile_->writeFileFormatVersion(); }
319  void PoolOutputModule::writeFileIdentifier() { rootOutputFile_->writeFileIdentifier(); }
320  void PoolOutputModule::writeIndexIntoFile() { rootOutputFile_->writeIndexIntoFile(); }
322  rootOutputFile_->writeStoredMergeableRunProductMetadata();
323  }
324  void PoolOutputModule::writeProcessHistoryRegistry() { rootOutputFile_->writeProcessHistoryRegistry(); }
325  void PoolOutputModule::writeParameterSetRegistry() { rootOutputFile_->writeParameterSetRegistry(); }
326  void PoolOutputModule::writeProductDescriptionRegistry() { rootOutputFile_->writeProductDescriptionRegistry(); }
327  void PoolOutputModule::writeParentageRegistry() { rootOutputFile_->writeParentageRegistry(); }
328  void PoolOutputModule::writeBranchIDListRegistry() { rootOutputFile_->writeBranchIDListRegistry(); }
329  void PoolOutputModule::writeThinnedAssociationsHelper() { rootOutputFile_->writeThinnedAssociationsHelper(); }
330  void PoolOutputModule::writeProductDependencies() { rootOutputFile_->writeProductDependencies(); }
331  void PoolOutputModule::writeEventAuxiliary() { rootOutputFile_->writeEventAuxiliary(); }
333  rootOutputFile_->finishEndFile();
334  rootOutputFile_ = nullptr;
335  } // propagate_const<T> has no reset() function
337  bool PoolOutputModule::isFileOpen() const { return rootOutputFile_.get() != nullptr; }
338  bool PoolOutputModule::shouldWeCloseFile() const { return rootOutputFile_->shouldWeCloseFile(); }
339 
340  std::pair<std::string, std::string> PoolOutputModule::physicalAndLogicalNameForNewFile() {
341  if (inputFileCount_ == 0) {
342  throw edm::Exception(errors::LogicError) << "Attempt to open output file before input file. "
343  << "Please report this to the core framework developers.\n";
344  }
345  std::string suffix(".root");
347  bool ext = (offset == fileName().size() - suffix.size());
348  if (!ext)
349  suffix.clear();
350  std::string fileBase(ext ? fileName().substr(0, offset) : fileName());
351  std::ostringstream ofilename;
352  std::ostringstream lfilename;
353  ofilename << fileBase;
354  lfilename << logicalFileName();
355  if (outputFileCount_) {
356  ofilename << std::setw(3) << std::setfill('0') << outputFileCount_;
357  if (!logicalFileName().empty()) {
358  lfilename << std::setw(3) << std::setfill('0') << outputFileCount_;
359  }
360  }
361  ofilename << suffix;
363 
364  return std::make_pair(ofilename.str(), lfilename.str());
365  }
366 
369  rootOutputFile_ = std::make_unique<RootOutputFile>(
370  this,
371  names.first,
372  names.second,
373  processesWithSelectedMergeableRunProducts_); // propagate_const<T> has no reset() function
374  }
375 
377  BranchID const& branchID) {
378  ProductProvenance const* provenance = provRetriever->branchIDToProvenanceForProducedOnly(branchID);
379  if (provenance != nullptr) {
380  BranchParents::iterator it = branchParents_.find(branchID);
381  if (it == branchParents_.end()) {
382  it = branchParents_.insert(std::make_pair(branchID, std::set<ParentageID>())).first;
383  }
384  it->second.insert(provenance->parentageID());
385  }
386  }
387 
389  ProductProvenanceRetriever const* provRetriever = e.productProvenanceRetrieverPtr();
390  for (auto const& bid : producedBranches_) {
391  updateBranchParentsForOneBranch(provRetriever, bid);
392  }
394  if (helper) {
395  for (auto const& bid : subProcessParentageHelper()->producedProducts()) {
396  updateBranchParentsForOneBranch(provRetriever, bid);
397  }
398  }
399  }
400 
402  ModuleCallingContext const& iModuleCallingContext,
403  Principal const& iPrincipal) const {
404  if (DropAll != dropMetaData_) {
405  auto const* ep = dynamic_cast<EventPrincipal const*>(&iPrincipal);
406  if (ep) {
407  auto pr = ep->productProvenanceRetrieverPtr();
408  if (pr) {
409  pr->readProvenanceAsync(iTask, &iModuleCallingContext);
410  }
411  }
412  }
413  }
414 
416  for (auto const& branchParent : branchParents_) {
417  BranchID const& child = branchParent.first;
418  std::set<ParentageID> const& eIds = branchParent.second;
419  for (auto const& eId : eIds) {
420  Parentage entryDesc;
421  ParentageRegistry::instance()->getMapped(eId, entryDesc);
422  std::vector<BranchID> const& parents = entryDesc.parents();
423  for (auto const& parent : parents) {
425  }
426  }
427  }
428  }
429 
431  std::string defaultString;
432 
433  desc.setComment("Writes runs, lumis, and events into EDM/ROOT files.");
434  desc.addUntracked<std::string>("fileName")->setComment("Name of output file.");
435  desc.addUntracked<std::string>("logicalFileName", defaultString)
436  ->setComment("Passed to job report. Otherwise unused by module.");
437  desc.addUntracked<std::string>("catalog", defaultString)
438  ->setComment("Passed to job report. Otherwise unused by module.");
439  desc.addUntracked<int>("maxSize", 0x7f000000)
440  ->setComment(
441  "Maximum output file size, in kB.\n"
442  "If over maximum, new output file will be started at next input file transition.");
443  desc.addUntracked<int>("compressionLevel", 9)->setComment("ROOT compression level of output file.");
444  desc.addUntracked<std::string>("compressionAlgorithm", "ZLIB")
445  ->setComment("Algorithm used to compress data in the ROOT output file, allowed values are ZLIB and LZMA");
446  desc.addUntracked<int>("basketSize", 16384)->setComment("Default ROOT basket size in output file.");
447  desc.addUntracked<int>("eventAuxiliaryBasketSize", 16384)
448  ->setComment("Default ROOT basket size in output file for EventAuxiliary branch.");
449  desc.addUntracked<int>("eventAutoFlushCompressedSize", 20 * 1024 * 1024)
450  ->setComment(
451  "Set ROOT auto flush stored data size (in bytes) for event TTree. The value sets how large the compressed "
452  "buffer is allowed to get. The uncompressed buffer can be quite a bit larger than this depending on the "
453  "average compression ratio. The value of -1 just uses ROOT's default value. The value of 0 turns off this "
454  "feature.");
455  desc.addUntracked<int>("splitLevel", 99)->setComment("Default ROOT branch split level in output file.");
456  desc.addUntracked<std::string>("sortBaskets", std::string("sortbasketsbyoffset"))
457  ->setComment(
458  "Legal values: 'sortbasketsbyoffset', 'sortbasketsbybranch', 'sortbasketsbyentry'.\n"
459  "Used by ROOT when fast copying. Affects performance.");
460  desc.addUntracked<int>("treeMaxVirtualSize", -1)
461  ->setComment("Size of ROOT TTree TBasket cache. Affects performance.");
462  desc.addUntracked<bool>("fastCloning", true)
463  ->setComment(
464  "True: Allow fast copying, if possible.\n"
465  "False: Disable fast copying.");
466  desc.addUntracked<bool>("compactEventAuxiliary", false)
467  ->setComment(
468  "False: Write EventAuxiliary as we go like any other event metadata branch.\n"
469  "True: Optimize the file layout be deferring writing the EventAuxiliary branch until the output file is "
470  "closed.");
471  desc.addUntracked<bool>("overrideInputFileSplitLevels", false)
472  ->setComment(
473  "False: Use branch split levels and basket sizes from input file, if possible.\n"
474  "True: Always use specified or default split levels and basket sizes.");
475  desc.addUntracked<bool>("writeStatusFile", false)
476  ->setComment("Write a status file. Intended for use by workflow management.");
477  desc.addUntracked<std::string>("dropMetaData", defaultString)
478  ->setComment(
479  "Determines handling of per product per event metadata. Options are:\n"
480  "'NONE': Keep all of it.\n"
481  "'DROPPED': Keep it for products produced in current process and all kept products. Drop it for dropped "
482  "products produced in prior processes.\n"
483  "'PRIOR': Keep it for products produced in current process. Drop it for products produced in prior "
484  "processes.\n"
485  "'ALL': Drop all of it.");
486  {
488  dataSet.setAllowAnything();
489  desc.addUntracked<ParameterSetDescription>("dataset", dataSet)
490  ->setComment("PSet is only used by Data Operations and not by this module.");
491  }
492  {
493  ParameterSetDescription specialSplit;
494  specialSplit.addUntracked<std::string>("branch")->setComment(
495  "Name of branch needing a special split level. The name can contain wildcards '*' and '?'");
496  specialSplit.addUntracked<int>("splitLevel")->setComment("The special split level for the branch");
497  desc.addVPSetUntracked("overrideBranchesSplitLevel", specialSplit, std::vector<ParameterSet>());
498  }
499  OutputModule::fillDescription(desc);
500  }
501 
505  descriptions.add("edmOutput", desc);
506  }
507 } // namespace edm
edm::PoolOutputModule::~PoolOutputModule
~PoolOutputModule() override
Definition: PoolOutputModule.cc:275
ConfigurationDescriptions.h
ConstProductRegistry.h
edm::one::OutputModuleBase::remainingEvents
int remainingEvents() const
Definition: OutputModuleBase.h:89
edm::Parentage::parents
std::vector< BranchID > const & parents() const
Definition: Parentage.h:44
edm::PoolOutputModule::updateBranchParents
void updateBranchParents(EventForOutput const &e)
Definition: PoolOutputModule.cc:388
ext
Definition: memstream.h:15
edm::PoolOutputModule::branchChildren_
BranchChildren branchChildren_
Definition: PoolOutputModule.h:210
edm::PoolOutputModule::respondToOpenInputFile
void respondToOpenInputFile(FileBlock const &fb) override
Definition: PoolOutputModule.cc:248
PoolOutputModule.h
electrons_cff.bool
bool
Definition: electrons_cff.py:366
mps_fire.i
i
Definition: mps_fire.py:428
SiPixelPI::one
Definition: SiPixelPayloadInspectorHelper.h:39
edm::one::OutputModuleBase::subProcessParentageHelper
SubProcessParentageHelper const * subProcessParentageHelper() const
Definition: OutputModuleBase.h:123
edm::SubProcessParentageHelper
Definition: SubProcessParentageHelper.h:21
edm::PoolOutputModule::OutputItem::branchID
BranchID branchID() const
Definition: PoolOutputModule.h:96
funct::false
false
Definition: Factorize.h:29
edm::PoolOutputModule::OutputItem
Definition: PoolOutputModule.h:80
edm::PoolOutputModule::SpecialSplitLevelForBranch::convert
std::regex convert(std::string const &iGlobBranchExpression) const
Definition: PoolOutputModule.cc:171
edm::TimeOfDay
Definition: TimeOfDay.h:9
edm::PoolOutputModule::processesWithSelectedMergeableRunProducts_
std::vector< std::string > processesWithSelectedMergeableRunProducts_
Definition: PoolOutputModule.h:216
edm::PoolOutputModule::AuxItem::AuxItem
AuxItem()
Definition: PoolOutputModule.cc:120
edm::sort_all
void sort_all(RandomAccessSequence &s)
wrappers for std::sort
Definition: Algorithms.h:92
edm::errors::LogicError
Definition: EDMException.h:37
edm
HLT enums.
Definition: AlignableModifier.h:19
edm::PoolOutputModule::splitLevel
int splitLevel() const
Definition: PoolOutputModule.h:53
tree
Definition: tree.py:1
edm::PoolOutputModule::OutputItemList
std::vector< OutputItem > OutputItemList
Definition: PoolOutputModule.h:117
edm::min
EventID const & min(EventID const &lh, EventID const &rh)
Definition: EventID.h:116
deep_tau::DeepTauBase::BasicDiscriminator
BasicDiscriminator
Definition: DeepTauBase.h:115
edm::PoolOutputModule::rootOutputFile_
edm::propagate_const< std::unique_ptr< RootOutputFile > > rootOutputFile_
Definition: PoolOutputModule.h:214
edm::PoolOutputModule::openFile
void openFile(FileBlock const &fb) override
Definition: PoolOutputModule.cc:241
edm::PoolOutputModule::writeParameterSetRegistry
void writeParameterSetRegistry()
Definition: PoolOutputModule.cc:325
edm::ParentageRegistry::instance
static ParentageRegistry * instance()
Definition: ParentageRegistry.cc:4
EgammaPostProcessor_cfi.dataSet
dataSet
Definition: EgammaPostProcessor_cfi.py:6
edm::PoolOutputModule::currentFileName
std::string const & currentFileName() const
Definition: PoolOutputModule.cc:118
edm::PoolOutputModule::initializedFromInput_
bool initializedFromInput_
Definition: PoolOutputModule.h:206
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
RunForOutput.h
edm::PoolOutputModule::whyNotFastClonable_
int whyNotFastClonable_
Definition: PoolOutputModule.h:203
edm::BranchChildren::clear
void clear()
Definition: BranchChildren.cc:36
Algorithms.h
edm::PoolOutputModule::fillSelectedItemList
void fillSelectedItemList(BranchType branchtype, TTree *theInputTree)
Definition: PoolOutputModule.cc:178
edm::Principal
Definition: Principal.h:56
edm::PoolOutputModule::SpecialSplitLevelForBranch::match
bool match(std::string const &iBranchName) const
Definition: PoolOutputModule.cc:167
edm::PoolOutputModule::setProcessesWithSelectedMergeableRunProducts
void setProcessesWithSelectedMergeableRunProducts(std::set< std::string > const &) override
Definition: PoolOutputModule.cc:271
mathSSE::lh
bool int lh
Definition: SIMDVec.h:20
edm::PoolOutputModule::updateBranchParentsForOneBranch
void updateBranchParentsForOneBranch(ProductProvenanceRetriever const *provRetriever, BranchID const &branchID)
Definition: PoolOutputModule.cc:376
EventForOutput.h
edm::WatchInputFiles
Definition: moduleAbilities.h:112
edm::PoolOutputModule::OutputItem::branchDescription_
BranchDescription const * branchDescription_
Definition: PoolOutputModule.h:110
edm::PoolOutputModule::doExtrasAfterCloseFile
virtual void doExtrasAfterCloseFile()
Definition: PoolOutputModule.cc:336
edm::PoolOutputModule::inputFileCount_
int inputFileCount_
Definition: PoolOutputModule.h:208
Parentage.h
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
edm::BranchType
BranchType
Definition: BranchType.h:11
edm::BranchTypeToAuxiliaryBranchName
std::string const & BranchTypeToAuxiliaryBranchName(BranchType const &branchType)
Definition: BranchType.cc:109
edm::PoolOutputModule::OutputItem::Sorter::Sorter
Sorter(TTree *tree)
Definition: PoolOutputModule.cc:135
createPayload.suffix
suffix
Definition: createPayload.py:281
edm::NumBranchTypes
Definition: BranchType.h:11
edm::PoolOutputModule::specialSplitLevelForBranches_
std::vector< SpecialSplitLevelForBranch > specialSplitLevelForBranches_
Definition: PoolOutputModule.h:190
edm::SelectedProducts
std::vector< std::pair< BranchDescription const *, EDGetToken > > SelectedProducts
Definition: SelectedProducts.h:11
edm::LuminosityBlockForOutput
Definition: LuminosityBlockForOutput.h:40
edm::PoolOutputModule::OutputItem::Sorter
Definition: PoolOutputModule.h:81
edm::FileBlock
Definition: FileBlock.h:20
edm::PoolOutputModule::PoolOutputModule
PoolOutputModule(ParameterSet const &ps)
Definition: PoolOutputModule.cc:36
EDMException.h
edm::RunForOutput
Definition: RunForOutput.h:39
edm::InProcess
Definition: BranchType.h:11
ParentageRegistry.h
alignCSCRings.s
s
Definition: alignCSCRings.py:92
edm::PoolOutputModule::basketSize_
const int basketSize_
Definition: PoolOutputModule.h:197
trigger::size_type
uint16_t size_type
Definition: TriggerTypeDefs.h:18
edm::PoolOutputModule::preActionBeforeRunEventAsync
void preActionBeforeRunEventAsync(WaitingTaskHolder iTask, ModuleCallingContext const &iModuleCallingContext, Principal const &iPrincipal) const override
Definition: PoolOutputModule.cc:401
edm::PoolOutputModule::moduleLabel_
const std::string moduleLabel_
Definition: PoolOutputModule.h:205
edm::ProductProvenance
Definition: ProductProvenance.h:24
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
edm::PoolOutputModule::writeFileFormatVersion
void writeFileFormatVersion()
Definition: PoolOutputModule.cc:318
names
const std::string names[nVars_]
Definition: PhotonIDValueMapProducer.cc:124
edm::PoolOutputModule::OutputItem::Sorter::operator()
bool operator()(OutputItem const &lh, OutputItem const &rh) const
Definition: PoolOutputModule.cc:146
edm::PoolOutputModule::selectedOutputItemList_
OutputItemListArray selectedOutputItemList_
Definition: PoolOutputModule.h:189
ProductProvenance.h
Service.h
edm::PoolOutputModule::splitLevel_
const int splitLevel_
Definition: PoolOutputModule.h:200
edm::PoolOutputModule::producedBranches_
std::vector< BranchID > producedBranches_
Definition: PoolOutputModule.h:211
edm::PoolOutputModule::branchParents_
BranchParents branchParents_
Definition: PoolOutputModule.h:209
edm::BranchDescription::invalidSplitLevel
static const int invalidSplitLevel
Definition: BranchDescription.h:34
SubProcessParentageHelper.h
edm::BranchID
Definition: BranchID.h:14
edm::PoolOutputModule::dropMetaData
DropMetaData const & dropMetaData() const
Definition: PoolOutputModule.h:58
dumpMFGeometry_cfg.prod
prod
Definition: dumpMFGeometry_cfg.py:24
edm::PoolOutputModule::OutputItem::OutputItem
OutputItem()
Definition: PoolOutputModule.cc:122
edm::one::OutputModuleBase::wantAllEvents
bool wantAllEvents() const
Definition: OutputModuleBase.h:117
edm::PoolOutputModule::OutputItem::Sorter::treeMap_
std::shared_ptr< std::map< std::string, int > > treeMap_
Definition: PoolOutputModule.h:87
edm::InEvent
Definition: BranchType.h:11
edm::PoolOutputModule::overrideInputFileSplitLevels_
bool overrideInputFileSplitLevels_
Definition: PoolOutputModule.h:212
edm::PoolOutputModule::writeThinnedAssociationsHelper
void writeThinnedAssociationsHelper()
Definition: PoolOutputModule.cc:329
ParameterSetDescription.h
edm::PoolOutputModule::writeEventAuxiliary
void writeEventAuxiliary()
Definition: PoolOutputModule.cc:331
b
double b
Definition: hdecay.h:118
edm::PoolOutputModule::auxItems_
AuxItemArray auxItems_
Definition: PoolOutputModule.h:188
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::Parentage
Definition: Parentage.h:25
OutputModuleBase
edm::ParameterSetDescription::addUntracked
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:100
BranchDescription.h
edm::ParameterSet
Definition: ParameterSet.h:47
edm::PoolOutputModule::reallyOpenFile
void reallyOpenFile()
Definition: PoolOutputModule.cc:367
edm::PoolOutputModule::writeIndexIntoFile
void writeIndexIntoFile()
Definition: PoolOutputModule.cc:320
sipixeldigitoraw
Definition: SiPixelDigiToRaw.cc:39
edm::WaitingTaskHolder
Definition: WaitingTaskHolder.h:32
edm::InLumi
Definition: BranchType.h:11
edm::PoolOutputModule::OutputItem::splitLevel_
int splitLevel_
Definition: PoolOutputModule.h:113
edm::ParentageRegistry::getMapped
bool getMapped(key_type const &k, value_type &result) const
Definition: ParentageRegistry.cc:9
edm::one::OutputModuleBase::keptProducts
SelectedProductsForBranchType const & keptProducts() const
Definition: OutputModuleBase.h:95
helper
Definition: helper.py:1
edm::PoolOutputModule::writeProductDependencies
void writeProductDependencies()
Definition: PoolOutputModule.cc:330
beamvalidation.br
br
Definition: beamvalidation.py:398
edm::Service
Definition: Service.h:30
createfilelist.int
int
Definition: createfilelist.py:10
edm::PoolOutputModule::DropDroppedPrior
Definition: PoolOutputModule.h:41
edm::BranchDescription::branchName
std::string const & branchName() const
Definition: BranchDescription.h:120
edm::ProductProvenance::parentageID
ParentageID const & parentageID() const
Definition: ProductProvenance.h:39
edm::PoolOutputModule::OutputItem::basketSize_
int basketSize_
Definition: PoolOutputModule.h:114
edm::PoolOutputModule::isFileOpen
bool isFileOpen() const override
Definition: PoolOutputModule.cc:337
edm::EDGetToken
Definition: EDGetToken.h:35
edm::PoolOutputModule::writeStoredMergeableRunProductMetadata
void writeStoredMergeableRunProductMetadata()
Definition: PoolOutputModule.cc:321
edm::PoolOutputModule::OutputItem::splitLevel
int splitLevel() const
Definition: PoolOutputModule.h:106
edm::PoolOutputModule::AuxItem::basketSize_
int basketSize_
Definition: PoolOutputModule.h:75
edm::PoolOutputModule::outputFileCount_
int outputFileCount_
Definition: PoolOutputModule.h:207
FileBlock.h
edm::PoolOutputModule::writeRun
void writeRun(RunForOutput const &r) override
Definition: PoolOutputModule.cc:291
edm::PoolOutputModule::beginInputFile
void beginInputFile(FileBlock const &fb)
Definition: PoolOutputModule.cc:227
alignCSCRings.r
r
Definition: alignCSCRings.py:93
edm::PoolOutputModule::DropPrior
Definition: PoolOutputModule.h:41
edm::PoolOutputModule::fileName
std::string const & fileName() const
Definition: PoolOutputModule.h:46
ProductProvenanceRetriever.h
edm::PoolOutputModule::writeProductDescriptionRegistry
void writeProductDescriptionRegistry()
Definition: PoolOutputModule.cc:326
edm::EventForOutput
Definition: EventForOutput.h:50
edm::ProductProvenanceRetriever
Definition: ProductProvenanceRetriever.h:56
WrappedClassName.h
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
edm::PoolOutputModule::writeBranchIDListRegistry
void writeBranchIDListRegistry()
Definition: PoolOutputModule.cc:328
std
Definition: JetResolutionObject.h:76
edm::FileBlock::EventSelectionUsed
Definition: FileBlock.h:49
edm::PoolOutputModule::fillDependencyGraph
void fillDependencyGraph()
Definition: PoolOutputModule.cc:415
edm::PoolOutputModule::fillDescriptions
static void fillDescriptions(ConfigurationDescriptions &descriptions)
Definition: PoolOutputModule.cc:502
edm::PoolOutputModule::shouldWeCloseFile
bool shouldWeCloseFile() const override
allow inheriting classes to override but still be able to call this method in the overridden version
Definition: PoolOutputModule.cc:338
edm::PoolOutputModule::AuxItem
Definition: PoolOutputModule.h:72
edm::PoolOutputModule::beginJob
void beginJob() override
Definition: PoolOutputModule.cc:108
RootOutputFile.h
edm::PoolOutputModule::reallyCloseFile
void reallyCloseFile() override
Definition: PoolOutputModule.cc:293
edm::PoolOutputModule::statusFileName_
std::string statusFileName_
Definition: PoolOutputModule.h:215
edm::PoolOutputModule::logicalFileName
std::string const & logicalFileName() const
Definition: PoolOutputModule.h:47
relativeConstraints.empty
bool empty
Definition: relativeConstraints.py:46
Exception
Definition: hltDiff.cc:245
edm::PoolOutputModule::OutputItem::basketSize
int basketSize() const
Definition: PoolOutputModule.h:107
edm::PoolOutputModule::startEndFile
void startEndFile()
Definition: PoolOutputModule.cc:316
edm::BranchDescription::invalidBasketSize
static const int invalidBasketSize
Definition: BranchDescription.h:35
edm::ProductProvenanceRetriever::branchIDToProvenanceForProducedOnly
ProductProvenance const * branchIDToProvenanceForProducedOnly(BranchID const &bid) const
Definition: ProductProvenanceRetriever.cc:175
dqmiodatasetharvest.processes
processes
Definition: dqmiodatasetharvest.py:190
edm::PoolOutputModule::DropNone
Definition: PoolOutputModule.h:41
edm::PoolOutputModule::writeLuminosityBlock
void writeLuminosityBlock(LuminosityBlockForOutput const &lb) override
Definition: PoolOutputModule.cc:287
edm::PoolOutputModule::writeProcessHistoryRegistry
void writeProcessHistoryRegistry()
Definition: PoolOutputModule.cc:324
edm::BranchDescription
Definition: BranchDescription.h:32
edm::PoolOutputModule::respondToCloseInputFile
void respondToCloseInputFile(FileBlock const &fb) override
Definition: PoolOutputModule.cc:266
edm::PoolOutputModule::dropMetaData_
DropMetaData dropMetaData_
Definition: PoolOutputModule.h:204
genParticles_cff.map
map
Definition: genParticles_cff.py:11
ParameterSet.h
LuminosityBlockForOutput.h
TimeOfDay.h
parents
TPRegexp parents
Definition: eve_filter.cc:21
hltrates_dqm_sourceclient-live_cfg.offset
offset
Definition: hltrates_dqm_sourceclient-live_cfg.py:82
edm::PoolOutputModule::writeFileIdentifier
void writeFileIdentifier()
Definition: PoolOutputModule.cc:319
child
Definition: simpleInheritance.h:11
edm::PoolOutputModule::finishEndFile
void finishEndFile()
Definition: PoolOutputModule.cc:332
edm::PoolOutputModule::write
void write(EventForOutput const &e) override
Definition: PoolOutputModule.cc:277
edm::PoolOutputModule::DropAll
Definition: PoolOutputModule.h:41
edm::errors::Configuration
Definition: EDMException.h:36
class-composition.parent
parent
Definition: class-composition.py:88
SiStripBadComponentsDQMServiceTemplate_cfg.ep
ep
Definition: SiStripBadComponentsDQMServiceTemplate_cfg.py:86
benchmark_cfg.fb
fb
Definition: benchmark_cfg.py:14
edm::PoolOutputModule::writeParentageRegistry
void writeParentageRegistry()
Definition: PoolOutputModule.cc:327
edm::PoolOutputModule::fillDescription
static void fillDescription(ParameterSetDescription &desc)
Definition: PoolOutputModule.cc:430
edm::BranchChildren::insertChild
void insertChild(BranchID parent, BranchID child)
Definition: BranchChildren.cc:40
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
edm::PoolOutputModule::physicalAndLogicalNameForNewFile
virtual std::pair< std::string, std::string > physicalAndLogicalNameForNewFile()
Definition: PoolOutputModule.cc:340
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
edm::PoolOutputModule::basketSize
int basketSize() const
Definition: PoolOutputModule.h:50
edm::ModuleCallingContext
Definition: ModuleCallingContext.h:29
unpackBuffers-CaloStage2.token
token
Definition: unpackBuffers-CaloStage2.py:316
edm::PoolOutputModule::eventAuxBasketSize_
const int eventAuxBasketSize_
Definition: PoolOutputModule.h:198