CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
edm::RootOutputFile Class Reference

#include <RootOutputFile.h>

Public Types

using OutputItem = PoolOutputModule::OutputItem
 
using OutputItemList = PoolOutputModule::OutputItemList
 

Public Member Functions

void beginInputFile (FileBlock const &fb, int remainingEvents)
 
std::string const & fileName () const
 
void finishEndFile ()
 
void respondToCloseInputFile (FileBlock const &fb)
 
 RootOutputFile (PoolOutputModule *om, std::string const &fileName, std::string const &logicalFileName, std::vector< std::string > const &processesWithSelectedMergeableRunProducts)
 
bool shouldWeCloseFile () const
 
void writeBranchIDListRegistry ()
 
void writeEventAuxiliary ()
 
void writeFileFormatVersion ()
 
void writeFileIdentifier ()
 
void writeIndexIntoFile ()
 
void writeLuminosityBlock (LuminosityBlockForOutput const &lb)
 
void writeOne (EventForOutput const &e)
 
void writeParameterSetRegistry ()
 
void writeParentageRegistry ()
 
void writeProcessBlock (ProcessBlockForOutput const &)
 
void writeProcessBlockHelper ()
 
void writeProcessHistoryRegistry ()
 
void writeProductDependencies ()
 
void writeProductDescriptionRegistry ()
 
void writeRun (RunForOutput const &r)
 
void writeStoredMergeableRunProductMetadata ()
 
void writeThinnedAssociationsHelper ()
 
 ~RootOutputFile ()
 

Private Member Functions

std::shared_ptr< TFile > & filePtr ()
 
std::shared_ptr< TFile const > filePtr () const
 
void fillBranches (BranchType const &branchType, OccurrenceForOutput const &occurrence, unsigned int ttreeIndex, StoredProductProvenanceVector *productProvenanceVecPtr=nullptr, ProductProvenanceRetriever const *provRetriever=nullptr)
 
void insertAncestors (ProductProvenance const &iGetParents, ProductProvenanceRetriever const *iMapper, bool produced, std::set< BranchID > const &producedBranches, std::set< StoredProductProvenance > &oToFill)
 
bool insertProductProvenance (const ProductProvenance &, std::set< StoredProductProvenance > &oToInsert)
 
StoredProductProvenanceVector *& pEventEntryInfoVector ()
 
StoredProductProvenanceVector const * pEventEntryInfoVector () const
 
void setBranchAliases (TTree *tree, SelectedProducts const &branches, std::string const &processName) const
 

Private Attributes

std::set< BranchIDbranchesWithStoredHistory_
 
bool canFastCloneAux_
 
CompactEventAuxiliaryVector compactEventAuxiliary_
 
bool dataTypeReported_
 
StoredProductProvenanceVector eventEntryInfoVector_
 
IndexIntoFile::EntryNumber_t eventEntryNumber_
 
RootOutputTree eventTree_
 
FileID fid_
 
std::string file_
 
edm::propagate_const< std::shared_ptr< TFile > > filePtr_
 
IndexIntoFile indexIntoFile_
 
std::string logicalFile_
 
LuminosityBlockAuxiliary lumiAux_
 
IndexIntoFile::EntryNumber_t lumiEntryNumber_
 
RootOutputTree lumiTree_
 
edm::propagate_const< TTree * > metaDataTree_
 
unsigned long nEventsInLumi_
 
edm::propagate_const< PoolOutputModule * > om_
 
edm::propagate_const< TTree * > parameterSetsTree_
 
std::map< ParentageID, unsigned int > parentageIDs_
 
edm::propagate_const< TTree * > parentageTree_
 
BranchListIndexes const * pBranchListIndexes_
 
EventAuxiliary const * pEventAux_
 
edm::propagate_const< StoredProductProvenanceVector * > pEventEntryInfoVector_
 
EventSelectionIDVector const * pEventSelectionIDs_
 
EventToProcessBlockIndexes const * pEventToProcessBlockIndexes_
 
LuminosityBlockAuxiliary const * pLumiAux_
 
std::vector< edm::propagate_const< std::unique_ptr< RootOutputTree > > > processBlockTrees_
 
ProcessHistoryRegistry processHistoryRegistry_
 
RunAuxiliary const * pRunAux_
 
JobReport::Token reportToken_
 
RunAuxiliary runAux_
 
IndexIntoFile::EntryNumber_t runEntryNumber_
 
RootOutputTree runTree_
 
StoredMergeableRunProductMetadata storedMergeableRunProductMetadata_
 
std::vector< edm::propagate_const< RootOutputTree * > > treePointers_
 
int whyNotFastClonable_
 
edm::propagate_const< TClass * > wrapperBaseTClass_
 

Detailed Description

Definition at line 48 of file RootOutputFile.h.

Member Typedef Documentation

◆ OutputItem

Definition at line 50 of file RootOutputFile.h.

◆ OutputItemList

Definition at line 51 of file RootOutputFile.h.

Constructor & Destructor Documentation

◆ RootOutputFile()

edm::RootOutputFile::RootOutputFile ( PoolOutputModule om,
std::string const &  fileName,
std::string const &  logicalFileName,
std::vector< std::string > const &  processesWithSelectedMergeableRunProducts 
)
explicit

Definition at line 81 of file RootOutputFile.cc.

85  : file_(fileName),
86  logicalFile_(logicalFileName),
87  reportToken_(0),
88  om_(om),
89  whyNotFastClonable_(om_->whyNotFastClonable()),
90  canFastCloneAux_(false),
91  filePtr_(openTFile(file_.c_str(), om_->compressionLevel())),
92  fid_(),
97  storedMergeableRunProductMetadata_(processesWithSelectedMergeableRunProducts),
98  nEventsInLumi_(0),
99  metaDataTree_(nullptr),
100  parameterSetsTree_(nullptr),
101  parentageTree_(nullptr),
102  lumiAux_(),
103  runAux_(),
104  pEventAux_(nullptr),
106  pRunAux_(&runAux_),
109  pBranchListIndexes_(nullptr),
110  pEventSelectionIDs_(nullptr),
111  eventTree_(filePtr(), InEvent, om_->splitLevel(), om_->treeMaxVirtualSize()),
112  lumiTree_(filePtr(), InLumi, om_->splitLevel(), om_->treeMaxVirtualSize()),
113  runTree_(filePtr(), InRun, om_->splitLevel(), om_->treeMaxVirtualSize()),
114  dataTypeReported_(false),
116  parentageIDs_(),
118  wrapperBaseTClass_(TClass::GetClass("edm::WrapperBase")) {
119  std::vector<std::string> const& processesWithProcessBlockProducts =
120  om_->outputProcessBlockHelper().processesWithProcessBlockProducts();
121  for (auto const& processName : processesWithProcessBlockProducts) {
122  processBlockTrees_.emplace_back(std::make_unique<RootOutputTree>(
123  filePtr(), InProcess, om_->splitLevel(), om_->treeMaxVirtualSize(), processName));
124  }
125 
126  if (om_->compressionAlgorithm() == std::string("ZLIB")) {
127  filePtr_->SetCompressionAlgorithm(ROOT::kZLIB);
128  } else if (om_->compressionAlgorithm() == std::string("LZMA")) {
129  filePtr_->SetCompressionAlgorithm(ROOT::kLZMA);
130  } else if (om_->compressionAlgorithm() == std::string("ZSTD")) {
131  filePtr_->SetCompressionAlgorithm(ROOT::kZSTD);
132  } else {
134  << "PoolOutputModule configured with unknown compression algorithm '" << om_->compressionAlgorithm() << "'\n"
135  << "Allowed compression algorithms are ZLIB, LZMA, and ZSTD\n";
136  }
137  if (-1 != om->eventAutoFlushSize()) {
138  eventTree_.setAutoFlush(-1 * om->eventAutoFlushSize());
139  }
140  if (om_->compactEventAuxiliary()) {
141  eventTree_.addAuxiliary<EventAuxiliary>(
142  BranchTypeToAuxiliaryBranchName(InEvent), pEventAux_, om_->auxItems()[InEvent].basketSize_, false);
143  eventTree_.tree()->SetBranchStatus(BranchTypeToAuxiliaryBranchName(InEvent).c_str(),
144  false); // see writeEventAuxiliary
145  } else {
146  eventTree_.addAuxiliary<EventAuxiliary>(
147  BranchTypeToAuxiliaryBranchName(InEvent), pEventAux_, om_->auxItems()[InEvent].basketSize_);
148  }
149 
152  om_->auxItems()[InEvent].basketSize_);
154  poolNames::eventSelectionsBranchName(), pEventSelectionIDs_, om_->auxItems()[InEvent].basketSize_, false);
157 
158  if (om_->outputProcessBlockHelper().productsFromInputKept()) {
161  om_->auxItems()[InEvent].basketSize_);
162  }
163 
164  lumiTree_.addAuxiliary<LuminosityBlockAuxiliary>(
165  BranchTypeToAuxiliaryBranchName(InLumi), pLumiAux_, om_->auxItems()[InLumi].basketSize_);
166 
167  runTree_.addAuxiliary<RunAuxiliary>(
168  BranchTypeToAuxiliaryBranchName(InRun), pRunAux_, om_->auxItems()[InRun].basketSize_);
169 
170  treePointers_.emplace_back(&eventTree_);
171  treePointers_.emplace_back(&lumiTree_);
172  treePointers_.emplace_back(&runTree_);
173  for (auto& processBlockTree : processBlockTrees_) {
174  treePointers_.emplace_back(processBlockTree.get());
175  }
176 
177  for (unsigned int i = 0; i < treePointers_.size(); ++i) {
178  RootOutputTree* theTree = treePointers_[i];
179  for (auto& item : om_->selectedOutputItemList()[i]) {
180  item.setProduct(nullptr);
181  BranchDescription const& desc = *item.branchDescription();
182  theTree->addBranch(desc.branchName(),
183  desc.wrappedName(),
184  item.product(),
185  item.splitLevel(),
186  item.basketSize(),
187  item.branchDescription()->produced());
188  //make sure we always store product registry info for all branches we create
189  branchesWithStoredHistory_.insert(item.branchID());
190  }
191  }
192  // Don't split metadata tree or event description tree
196 
197  fid_ = FileID(createGlobalIdentifier());
198 
199  // For the Job Report, get a vector of branch names in the "Events" tree.
200  // Also create a hash of all the branch names in the "Events" tree
201  // in a deterministic order, except use the full class name instead of the friendly class name.
202  // To avoid extra string copies, we create a vector of pointers into the product registry,
203  // and use a custom comparison operator for sorting.
204  std::vector<std::string> branchNames;
205  std::vector<BranchDescription const*> branches;
206  branchNames.reserve(om_->selectedOutputItemList()[InEvent].size());
207  branches.reserve(om->selectedOutputItemList()[InEvent].size());
208  for (auto const& item : om_->selectedOutputItemList()[InEvent]) {
209  branchNames.push_back(item.branchDescription()->branchName());
210  branches.push_back(item.branchDescription());
211  }
212  // Now sort the branches for the hash.
213  sort_all(branches, sorterForJobReportHash);
214  // Now, make a concatenated string.
215  std::ostringstream oss;
216  char const underscore = '_';
217  for (auto const& branch : branches) {
218  BranchDescription const& bd = *branch;
219  oss << bd.fullClassName() << underscore << bd.moduleLabel() << underscore << bd.productInstanceName()
220  << underscore << bd.processName() << underscore;
221  }
222  std::string stringrep = oss.str();
223  cms::Digest md5alg(stringrep);
224 
225  // Register the output file with the JobReport service
226  // and get back the token for it.
227  std::string moduleName = "PoolOutputModule";
228  Service<JobReport> reportSvc;
229  reportToken_ = reportSvc->outputFileOpened(file_,
230  logicalFile_, // PFN and LFN
231  om_->catalog(), // catalog
232  moduleName, // module class name
233  om_->moduleLabel(), // module label
234  fid_.fid(), // file id (guid)
235  std::string(), // data type (not yet known, so string is empty).
236  md5alg.digest().toString(), // branch hash
237  branchNames); // branch names being written
238  }

References edm::RootOutputTree::addAuxiliary(), edm::RootOutputTree::addBranch(), MicroEventContent_cff::branch, branchesWithStoredHistory_, edm::poolNames::branchListIndexesBranchName(), edm::BranchTypeToAuxiliaryBranchName(), edm::BranchTypeToProductProvenanceBranchName(), edm::errors::Configuration, edm::createGlobalIdentifier(), submitPVResolutionJobs::desc, cms::Digest::digest(), edm::PoolOutputModule::eventAutoFlushSize(), edm::poolNames::eventSelectionsBranchName(), edm::poolNames::eventToProcessBlockIndexesBranchName(), eventTree_, Exception, edm::FileID::fid(), fid_, file_, filePtr(), filePtr_, edm::propagate_const< T >::get(), mps_fire::i, edm::InEvent, edm::InLumi, edm::InProcess, edm::InRun, B2GTnPMonitor_cfi::item, logicalFile_, lumiTree_, edm::RootOutputTree::makeTTree(), metaDataTree_, edm::poolNames::metaDataTreeName(), edm::moduleName(), om_, parameterSetsTree_, edm::poolNames::parameterSetsTreeName(), parentageTree_, edm::poolNames::parentageTreeName(), pBranchListIndexes_, pEventAux_, pEventEntryInfoVector(), pEventSelectionIDs_, pEventToProcessBlockIndexes_, pLumiAux_, processBlockTrees_, SimL1EmulatorRepack_CalouGT_cff::processName, pRunAux_, reportToken_, runTree_, edm::PoolOutputModule::selectedOutputItemList(), edm::RootOutputTree::setAutoFlush(), edm::sort_all(), AlCaHLTBitMon_QueryRunRegistry::string, cms::MD5Result::toString(), edm::RootOutputTree::tree(), and treePointers_.

◆ ~RootOutputFile()

edm::RootOutputFile::~RootOutputFile ( )
inline

Definition at line 56 of file RootOutputFile.h.

56 {}

Member Function Documentation

◆ beginInputFile()

void edm::RootOutputFile::beginInputFile ( FileBlock const &  fb,
int  remainingEvents 
)

Definition at line 328 of file RootOutputFile.cc.

328  {
329  // Reset per input file information
330  whyNotFastClonable_ = om_->whyNotFastClonable();
331  canFastCloneAux_ = false;
332 
333  if (fb.tree() != nullptr) {
334  whyNotFastClonable_ |= fb.whyNotFastClonable();
335 
336  if (remainingEvents >= 0 && remainingEvents < fb.tree()->GetEntries()) {
338  }
339 
341  if (!match) {
342  if (om_->overrideInputFileSplitLevels()) {
343  // We may be fast copying. We must disable fast copying if the split levels
344  // or basket sizes do not match.
346  } else {
347  // We are using the input split levels and basket sizes from the first input file
348  // for copied output branches. In this case, we throw an exception if any branches
349  // have different split levels or basket sizes in a subsequent input file.
350  // If the mismatch is in the first file, there is a bug somewhere, so we assert.
351  assert(om_->inputFileCount() > 1);
352  throw Exception(errors::MismatchedInputFiles, "RootOutputFile::beginInputFile()")
353  << "Merge failure because input file " << file_ << " has different ROOT split levels or basket sizes\n"
354  << "than previous files. To allow merging in splite of this, use the configuration parameter\n"
355  << "overrideInputFileSplitLevels=cms.untracked.bool(True)\n"
356  << "in every PoolOutputModule.\n";
357  }
358  }
359 
360  // Since this check can be time consuming, we do it only if we would otherwise fast clone.
362  if (!eventTree_.checkIfFastClonable(fb.tree())) {
364  }
365  }
366  // We now check if we can fast copy the auxiliary branches.
367  // We can do so only if we can otherwise fast copy,
368  // the input file has the current format (these branches are in the Events Tree),
369  // there are no newly dropped or produced products,
370  // no metadata has been dropped,
371  // ID's have not been modified,
372  // and the branch list indexes do not need modification.
373 
374  // Note: Fast copy of the EventProductProvenance branch is unsafe
375  // unless we can enforce that the parentage information for a fully copied
376  // output file will be the same as for the input file, with nothing dropped.
377  // This has never been enforced, and, withthe EDAlias feature, it may no longer
378  // work by accident.
379  // So, for now, we do not enable fast cloning of the non-product branches.
380  /*
381  Service<ConstProductRegistry> reg;
382  canFastCloneAux_ = (whyNotFastClonable_ == FileBlock::CanFastClone) &&
383  fb.fileFormatVersion().noMetaDataTrees() &&
384  !om_->hasNewlyDroppedBranch()[InEvent] &&
385  !fb.hasNewlyDroppedBranch()[InEvent] &&
386  om_->dropMetaData() == PoolOutputModule::DropNone &&
387  !reg->anyProductProduced() &&
388  !fb.modifiedIDs() &&
389  fb.branchListIndexesUnchanged();
390 */
391 
392  // Report the fast copying status.
393  Service<JobReport> reportSvc;
394  reportSvc->reportFastCopyingStatus(reportToken_, fb.fileName(), whyNotFastClonable_ == FileBlock::CanFastClone);
395  } else {
397  }
398 
400  whyNotFastClonable_ == FileBlock::CanFastClone, canFastCloneAux_, fb.tree(), om_->basketOrder());
401 
402  // Possibly issue warning or informational message if we haven't fast cloned.
403  if (fb.tree() != nullptr && whyNotFastClonable_ != FileBlock::CanFastClone) {
404  maybeIssueWarning(whyNotFastClonable_, fb.fileName(), file_);
405  }
406 
407  if (om_->compactEventAuxiliary() &&
410  long long int reserve = remainingEvents;
411  if (fb.tree() != nullptr) {
412  reserve = reserve > 0 ? std::min(fb.tree()->GetEntries(), reserve) : fb.tree()->GetEntries();
413  }
414  if (reserve > 0) {
416  }
417  }
418  }

References cms::cuda::assert(), edm::FileBlock::BranchMismatch, edm::FileBlock::CanFastClone, canFastCloneAux_, edm::RootOutputTree::checkIfFastClonable(), edm::RootOutputTree::checkSplitLevelsAndBasketSizes(), compactEventAuxiliary_, edm::FileBlock::EventSelectionUsed, edm::FileBlock::EventsOrLumisSelectedByID, eventTree_, Exception, file_, edm::FileBlock::fileName(), edm::FileBlock::InitialEventsSkipped, edm::match(), edm::RootOutputTree::maybeFastCloneTree(), min(), edm::errors::MismatchedInputFiles, edm::FileBlock::NoRootInputSource, om_, edm::FileBlock::OutputMaxEventsTooSmall, reportToken_, edm::CompactEventAuxiliaryVector::reserve(), edm::CompactEventAuxiliaryVector::size(), edm::FileBlock::SplitLevelMismatch, edm::FileBlock::tree(), edm::FileBlock::whyNotFastClonable(), and whyNotFastClonable_.

◆ fileName()

std::string const& edm::RootOutputFile::fileName ( ) const
inline

Definition at line 81 of file RootOutputFile.h.

81 { return file_; }

References file_.

◆ filePtr() [1/2]

std::shared_ptr<TFile>& edm::RootOutputFile::filePtr ( )
inlineprivate

Definition at line 101 of file RootOutputFile.h.

101 { return get_underlying_safe(filePtr_); }

References filePtr_, and edm::get_underlying_safe().

◆ filePtr() [2/2]

std::shared_ptr<TFile const> edm::RootOutputFile::filePtr ( ) const
inlineprivate

Definition at line 100 of file RootOutputFile.h.

100 { return get_underlying_safe(filePtr_); }

References filePtr_, and edm::get_underlying_safe().

Referenced by RootOutputFile().

◆ fillBranches()

void edm::RootOutputFile::fillBranches ( BranchType const &  branchType,
OccurrenceForOutput const &  occurrence,
unsigned int  ttreeIndex,
StoredProductProvenanceVector productProvenanceVecPtr = nullptr,
ProductProvenanceRetriever const *  provRetriever = nullptr 
)
private

Definition at line 810 of file RootOutputFile.cc.

814  {
815  std::vector<std::unique_ptr<WrapperBase> > dummies;
816 
817  OutputItemList& items = om_->selectedOutputItemList()[ttreeIndex];
818 
819  bool const doProvenance =
820  (productProvenanceVecPtr != nullptr) && (om_->dropMetaData() != PoolOutputModule::DropAll);
821  bool const keepProvenanceForPrior = doProvenance && om_->dropMetaData() != PoolOutputModule::DropPrior;
822 
823  bool const fastCloning = (branchType == InEvent) && (whyNotFastClonable_ == FileBlock::CanFastClone);
824  std::set<StoredProductProvenance> provenanceToKeep;
825  //
826  //If we are dropping some of the meta data we need to know
827  // which BranchIDs were produced in this process because
828  // we may be storing meta data for only those products
829  // We do this only for event products.
830  std::set<BranchID> producedBranches;
831  if (doProvenance && branchType == InEvent && om_->dropMetaData() != PoolOutputModule::DropNone) {
833  for (auto bd : preg->allBranchDescriptions()) {
834  if (bd->produced() && bd->branchType() == InEvent) {
835  producedBranches.insert(bd->branchID());
836  }
837  }
838  }
839 
840  // Loop over EDProduct branches, possibly fill the provenance, and write the branch.
841  for (auto& item : items) {
842  BranchID const& id = item.branchDescription()->branchID();
843  branchesWithStoredHistory_.insert(id);
844 
845  bool produced = item.branchDescription()->produced();
846  bool getProd =
847  (produced || !fastCloning || treePointers_[ttreeIndex]->uncloned(item.branchDescription()->branchName()));
848  bool keepProvenance = doProvenance && (produced || keepProvenanceForPrior);
849 
850  WrapperBase const* product = nullptr;
851  ProductProvenance const* productProvenance = nullptr;
852  if (getProd) {
853  BasicHandle result = occurrence.getByToken(item.token(), item.branchDescription()->unwrappedTypeID());
854  product = result.wrapper();
855  if (result.isValid() && keepProvenance) {
856  productProvenance = result.provenance()->productProvenance();
857  }
858  if (product == nullptr) {
859  // No product with this ID is in the event.
860  // Add a null product.
861  TClass* cp = item.branchDescription()->wrappedType().getClass();
862  assert(cp != nullptr);
863  int offset = cp->GetBaseClassOffset(wrapperBaseTClass_);
864  void* p = cp->New();
865  std::unique_ptr<WrapperBase> dummy = getWrapperBasePtr(p, offset);
866  product = dummy.get();
867  dummies.emplace_back(std::move(dummy));
868  }
869  item.setProduct(product);
870  }
871  if (keepProvenance && productProvenance == nullptr) {
872  productProvenance = provRetriever->branchIDToProvenance(item.branchDescription()->originalBranchID());
873  }
874  if (productProvenance) {
875  insertProductProvenance(*productProvenance, provenanceToKeep);
876  insertAncestors(*productProvenance, provRetriever, produced, producedBranches, provenanceToKeep);
877  }
878  }
879 
880  if (doProvenance)
881  productProvenanceVecPtr->assign(provenanceToKeep.begin(), provenanceToKeep.end());
882  treePointers_[ttreeIndex]->fillTree();
883  if (doProvenance)
884  productProvenanceVecPtr->clear();
885  }

References cms::cuda::assert(), branchesWithStoredHistory_, edm::ProductProvenanceLookup::branchIDToProvenance(), edm::FileBlock::CanFastClone, edm::PoolOutputModule::DropAll, edm::PoolOutputModule::DropNone, edm::PoolOutputModule::DropPrior, test_L1EGCrystalClusterEmulator_cfg::fastCloning, edm::OccurrenceForOutput::getByToken(), edm::getWrapperBasePtr(), edm::InEvent, insertAncestors(), insertProductProvenance(), B2GTnPMonitor_cfi::item, mps_monitormerge::items, eostools::move(), hltrates_dqm_sourceclient-live_cfg::offset, om_, AlCaHLTBitMon_ParallelJobs::p, mps_fire::result, treePointers_, whyNotFastClonable_, and wrapperBaseTClass_.

Referenced by writeLuminosityBlock(), writeOne(), writeProcessBlock(), and writeRun().

◆ finishEndFile()

void edm::RootOutputFile::finishEndFile ( )

Definition at line 726 of file RootOutputFile.cc.

726  {
727  metaDataTree_->SetEntries(-1);
730 
732 
733  // Create branch aliases for all the branches in the
734  // events/lumis/runs/processblock trees. The loop is over
735  // all types of data products.
736  for (unsigned int i = 0; i < treePointers_.size(); ++i) {
738  BranchType branchType = InProcess;
739  if (i < InProcess) {
740  branchType = static_cast<BranchType>(i);
741  } else {
742  processName = om_->outputProcessBlockHelper().processesWithProcessBlockProducts()[i - InProcess];
743  }
744  setBranchAliases(treePointers_[i]->tree(), om_->keptProducts()[branchType], processName);
745  treePointers_[i]->writeTree();
746  }
747 
748  // close the file -- mfp
749  // Just to play it safe, zero all pointers to objects in the TFile to be closed.
750  metaDataTree_ = parentageTree_ = nullptr;
751  for (auto& treePointer : treePointers_) {
752  treePointer->close();
753  treePointer = nullptr;
754  }
755  filePtr_->Close();
756  filePtr_ = nullptr; // propagate_const<T> has no reset() function
757 
758  // report that file has been closed
759  Service<JobReport> reportSvc;
760  reportSvc->outputFileClosed(reportToken_);
761  }

References filePtr_, mps_fire::i, edm::InProcess, metaDataTree_, om_, parameterSetsTree_, parentageTree_, SimL1EmulatorRepack_CalouGT_cff::processName, reportToken_, setBranchAliases(), AlCaHLTBitMon_QueryRunRegistry::string, MainPageGenerator::tree, treePointers_, and edm::RootOutputTree::writeTTree().

◆ insertAncestors()

void edm::RootOutputFile::insertAncestors ( ProductProvenance const &  iGetParents,
ProductProvenanceRetriever const *  iMapper,
bool  produced,
std::set< BranchID > const &  producedBranches,
std::set< StoredProductProvenance > &  oToFill 
)
private

Definition at line 785 of file RootOutputFile.cc.

789  {
790  assert(om_->dropMetaData() != PoolOutputModule::DropAll);
791  assert(produced || om_->dropMetaData() != PoolOutputModule::DropPrior);
792  if (om_->dropMetaData() == PoolOutputModule::DropDroppedPrior && !produced)
793  return;
794  std::vector<BranchID> const& parentIDs = iGetParents.parentage().parents();
795  for (auto const& parentID : parentIDs) {
796  branchesWithStoredHistory_.insert(parentID);
797  ProductProvenance const* info = iMapper->branchIDToProvenance(parentID);
798  if (info) {
799  if (om_->dropMetaData() == PoolOutputModule::DropNone ||
800  (iProducedIDs.end() != iProducedIDs.find(info->branchID()))) {
801  if (insertProductProvenance(*info, oToFill)) {
802  //haven't seen this one yet
803  insertAncestors(*info, iMapper, produced, iProducedIDs, oToFill);
804  }
805  }
806  }
807  }
808  }

References cms::cuda::assert(), branchesWithStoredHistory_, edm::ProductProvenanceLookup::branchIDToProvenance(), edm::PoolOutputModule::DropAll, edm::PoolOutputModule::DropDroppedPrior, edm::PoolOutputModule::DropNone, edm::PoolOutputModule::DropPrior, info(), insertProductProvenance(), om_, edm::ProductProvenance::parentage(), and edm::Parentage::parents().

Referenced by fillBranches().

◆ insertProductProvenance()

bool edm::RootOutputFile::insertProductProvenance ( const ProductProvenance ,
std::set< StoredProductProvenance > &  oToInsert 
)
private

Definition at line 887 of file RootOutputFile.cc.

888  {
889  StoredProductProvenance toStore;
890  toStore.branchID_ = iProv.branchID().id();
891  std::set<edm::StoredProductProvenance>::iterator itFound = oToInsert.find(toStore);
892  if (itFound == oToInsert.end()) {
893  //get the index to the ParentageID or insert a new value if not already present
894  std::pair<std::map<edm::ParentageID, unsigned int>::iterator, bool> i =
895  parentageIDs_.insert(std::make_pair(iProv.parentageID(), static_cast<unsigned int>(parentageIDs_.size())));
896  toStore.parentageIDIndex_ = i.first->second;
897  if (toStore.parentageIDIndex_ >= parentageIDs_.size()) {
899  << "RootOutputFile::insertProductProvenance\n"
900  << "The parentage ID index value " << toStore.parentageIDIndex_
901  << " is out of bounds. The maximum value is currently " << parentageIDs_.size() - 1 << ".\n"
902  << "This should never happen.\n"
903  << "Please report this to the framework hypernews forum 'hn-cms-edmFramework@cern.ch'.\n";
904  }
905 
906  oToInsert.insert(toStore);
907  return true;
908  }
909  return false;
910  }

References edm::ProductProvenance::branchID(), edm::StoredProductProvenance::branchID_, Exception, mps_fire::i, edm::BranchID::id(), edm::errors::LogicError, edm::ProductProvenance::parentageID(), edm::StoredProductProvenance::parentageIDIndex_, and parentageIDs_.

Referenced by fillBranches(), and insertAncestors().

◆ pEventEntryInfoVector() [1/2]

StoredProductProvenanceVector*& edm::RootOutputFile::pEventEntryInfoVector ( )
inlineprivate

◆ pEventEntryInfoVector() [2/2]

StoredProductProvenanceVector const* edm::RootOutputFile::pEventEntryInfoVector ( ) const
inlineprivate

Definition at line 102 of file RootOutputFile.h.

102  {
104  }

References edm::get_underlying_safe(), and pEventEntryInfoVector_.

Referenced by RootOutputFile().

◆ respondToCloseInputFile()

void edm::RootOutputFile::respondToCloseInputFile ( FileBlock const &  fb)

Definition at line 420 of file RootOutputFile.cc.

420  {
421  // We can't do setEntries() on the event tree if the EventAuxiliary branch is empty & disabled
422  if (not om_->compactEventAuxiliary()) {
424  }
427  }

References eventTree_, lumiTree_, om_, runTree_, and edm::RootOutputTree::setEntries().

◆ setBranchAliases()

void edm::RootOutputFile::setBranchAliases ( TTree *  tree,
SelectedProducts const &  branches,
std::string const &  processName 
) const
private

Definition at line 763 of file RootOutputFile.cc.

765  {
766  if (tree && tree->GetNbranches() != 0) {
767  for (auto const& selection : branches) {
768  BranchDescription const& pd = *selection.first;
769  if (pd.branchType() == InProcess && processName != pd.processName()) {
770  continue;
771  }
772  std::string const& full = pd.branchName() + "obj";
773  if (pd.branchAliases().empty()) {
774  std::string const& alias = (pd.productInstanceName().empty() ? pd.moduleLabel() : pd.productInstanceName());
775  tree->SetAlias(alias.c_str(), full.c_str());
776  } else {
777  for (auto const& alias : pd.branchAliases()) {
778  tree->SetAlias(alias.c_str(), full.c_str());
779  }
780  }
781  }
782  }
783  }

References SiStripOfflineCRack_cfg::alias, edm::BranchDescription::branchAliases(), edm::BranchDescription::branchName(), edm::BranchDescription::branchType(), full, edm::InProcess, edm::BranchDescription::moduleLabel(), SimL1EmulatorRepack_CalouGT_cff::processName, edm::BranchDescription::processName(), edm::BranchDescription::productInstanceName(), corrVsCorr::selection, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by finishEndFile().

◆ shouldWeCloseFile()

bool edm::RootOutputFile::shouldWeCloseFile ( ) const

Definition at line 429 of file RootOutputFile.cc.

429  {
430  unsigned int const oneK = 1024;
431  Long64_t size = filePtr_->GetSize() / oneK;
432  return (size >= om_->maxFileSize());
433  }

References filePtr_, om_, and findQualityFiles::size.

◆ writeBranchIDListRegistry()

void edm::RootOutputFile::writeBranchIDListRegistry ( )

Definition at line 616 of file RootOutputFile.cc.

616  {
617  BranchIDLists const* p = om_->branchIDLists();
618  TBranch* b = metaDataTree_->Branch(poolNames::branchIDListBranchName().c_str(), &p, om_->basketSize(), 0);
619  assert(b);
620  b->Fill();
621  }

References cms::cuda::assert(), b, edm::poolNames::branchIDListBranchName(), metaDataTree_, om_, and AlCaHLTBitMon_ParallelJobs::p.

◆ writeEventAuxiliary()

void edm::RootOutputFile::writeEventAuxiliary ( )

Definition at line 682 of file RootOutputFile.cc.

682  {
683  constexpr std::size_t maxEaBasketSize = 4 * 1024 * 1024;
684 
685  if (om_->compactEventAuxiliary()) {
686  auto tree = eventTree_.tree();
687  auto const& bname = BranchTypeToAuxiliaryBranchName(InEvent).c_str();
688 
689  tree->SetBranchStatus(bname, true);
690  auto basketsize =
691  std::min(maxEaBasketSize,
692  compactEventAuxiliary_.size() * (sizeof(EventAuxiliary) + 26)); // 26 is an empirical fudge factor
693  tree->SetBasketSize(bname, basketsize);
694  auto b = tree->GetBranch(bname);
695 
696  assert(b);
697 
698  LogDebug("writeEventAuxiliary") << "EventAuxiliary ratio extras/GUIDs/all = "
701 
702  for (auto const& aux : compactEventAuxiliary_) {
703  const auto ea = aux.eventAuxiliary();
704  pEventAux_ = &ea;
705  // Fill EventAuxiliary branch
706  b->Fill();
707  }
709  }
710  }

References cms::cuda::assert(), printConversionInfo::aux, b, edm::BranchTypeToAuxiliaryBranchName(), compactEventAuxiliary_, eventTree_, edm::CompactEventAuxiliaryVector::extrasSize(), edm::CompactEventAuxiliaryVector::guidsSize(), edm::InEvent, LogDebug, min(), om_, pEventAux_, edm::RootOutputTree::setEntries(), edm::CompactEventAuxiliaryVector::size(), and edm::RootOutputTree::tree().

◆ writeFileFormatVersion()

void edm::RootOutputFile::writeFileFormatVersion ( )

Definition at line 570 of file RootOutputFile.cc.

570  {
571  FileFormatVersion fileFormatVersion(getFileFormatVersion());
572  FileFormatVersion* pFileFmtVsn = &fileFormatVersion;
573  TBranch* b =
574  metaDataTree_->Branch(poolNames::fileFormatVersionBranchName().c_str(), &pFileFmtVsn, om_->basketSize(), 0);
575  assert(b);
576  b->Fill();
577  }

References cms::cuda::assert(), b, edm::poolNames::fileFormatVersionBranchName(), edm::getFileFormatVersion(), metaDataTree_, and om_.

◆ writeFileIdentifier()

void edm::RootOutputFile::writeFileIdentifier ( )

Definition at line 579 of file RootOutputFile.cc.

579  {
580  FileID* fidPtr = &fid_;
581  TBranch* b = metaDataTree_->Branch(poolNames::fileIdentifierBranchName().c_str(), &fidPtr, om_->basketSize(), 0);
582  assert(b);
583  b->Fill();
584  }

References cms::cuda::assert(), b, fid_, edm::poolNames::fileIdentifierBranchName(), metaDataTree_, and om_.

◆ writeIndexIntoFile()

void edm::RootOutputFile::writeIndexIntoFile ( )

Definition at line 586 of file RootOutputFile.cc.

586  {
589  ex << "The number of entries in at least one output TBranch whose entries\n"
590  "were copied from the input does not match the number of events\n"
591  "recorded in IndexIntoFile. This might (or might not) indicate a\n"
592  "problem related to fast copy.";
593  ex.addContext("Calling RootOutputFile::writeIndexIntoFile");
594  throw ex;
595  }
597  IndexIntoFile* iifPtr = &indexIntoFile_;
598  TBranch* b = metaDataTree_->Branch(poolNames::indexIntoFileBranchName().c_str(), &iifPtr, om_->basketSize(), 0);
599  assert(b);
600  b->Fill();
601  }

References cms::Exception::addContext(), cms::cuda::assert(), b, edm::RootOutputTree::checkEntriesInReadBranches(), eventEntryNumber_, eventTree_, indexIntoFile_, edm::poolNames::indexIntoFileBranchName(), metaDataTree_, om_, edm::errors::OtherCMS, and edm::IndexIntoFile::sortVector_Run_Or_Lumi_Entries().

◆ writeLuminosityBlock()

void edm::RootOutputFile::writeLuminosityBlock ( LuminosityBlockForOutput const &  lb)

Definition at line 490 of file RootOutputFile.cc.

490  {
491  // Auxiliary branch
492  // NOTE: lumiAux_ must be filled before calling fillBranches since it gets written out in that routine.
493  lumiAux_ = lb.luminosityBlockAuxiliary();
494  // Use the updated process historyID
495  lumiAux_.setProcessHistoryID(lb.processHistoryID());
496  // Store the process history.
497  processHistoryRegistry_.registerProcessHistory(lb.processHistory());
498  // Store the reduced ID in the IndexIntoFile
499  ProcessHistoryID reducedPHID = processHistoryRegistry_.reducedProcessHistoryID(lb.processHistoryID());
500  // Add lumi to index.
503  unsigned int ttreeIndex = InLumi;
504  fillBranches(InLumi, lb, ttreeIndex);
505  lumiTree_.optimizeBaskets(10ULL * 1024 * 1024);
506 
507  Service<JobReport> reportSvc;
508  reportSvc->reportLumiSection(reportToken_, lb.id().run(), lb.id().luminosityBlock(), nEventsInLumi_);
509  nEventsInLumi_ = 0;
510  }

References edm::IndexIntoFile::addEntry(), fillBranches(), edm::LuminosityBlockForOutput::id(), indexIntoFile_, edm::InLumi, lumiAux_, lumiEntryNumber_, edm::LuminosityBlockAuxiliary::luminosityBlock(), edm::LuminosityBlockID::luminosityBlock(), edm::LuminosityBlockForOutput::luminosityBlockAuxiliary(), lumiTree_, nEventsInLumi_, edm::RootOutputTree::optimizeBaskets(), edm::OccurrenceForOutput::processHistory(), edm::OccurrenceForOutput::processHistoryID(), processHistoryRegistry_, edm::ProcessHistoryRegistry::reducedProcessHistoryID(), edm::ProcessHistoryRegistry::registerProcessHistory(), reportToken_, edm::LuminosityBlockAuxiliary::run(), edm::LuminosityBlockID::run(), edm::LuminosityBlockAuxiliary::setProcessHistoryID(), and mitigatedMETSequence_cff::U.

◆ writeOne()

void edm::RootOutputFile::writeOne ( EventForOutput const &  e)

Definition at line 435 of file RootOutputFile.cc.

435  {
436  // Auxiliary branch
437  pEventAux_ = &e.eventAuxiliary();
438 
439  // Because getting the data may cause an exception to be thrown we want to do that
440  // first before writing anything to the file about this event
441  // NOTE: pEventAux_, pBranchListIndexes_, pEventSelectionIDs_, and pEventEntryInfoVector_
442  // must be set before calling fillBranches since they get written out in that routine.
443  assert(pEventAux_->processHistoryID() == e.processHistoryID());
444  pBranchListIndexes_ = &e.branchListIndexes();
445  pEventToProcessBlockIndexes_ = &e.eventToProcessBlockIndexes();
446 
447  // Note: The EventSelectionIDVector should have a one to one correspondence with the processes in the process history.
448  // Therefore, a new entry should be added if and only if the current process has been added to the process history,
449  // which is done if and only if there is a produced product.
451  EventSelectionIDVector esids = e.eventSelectionIDs();
452  if (reg->anyProductProduced() || !om_->wantAllEvents()) {
453  esids.push_back(om_->selectorConfig());
454  }
455  pEventSelectionIDs_ = &esids;
456  ProductProvenanceRetriever const* provRetriever = e.productProvenanceRetrieverPtr();
457  assert(provRetriever);
458  unsigned int ttreeIndex = InEvent;
459  fillBranches(InEvent, e, ttreeIndex, pEventEntryInfoVector_, provRetriever);
460 
461  // Add the dataType to the job report if it hasn't already been done
462  if (!dataTypeReported_) {
463  Service<JobReport> reportSvc;
464  std::string dataType("MC");
465  if (pEventAux_->isRealData())
466  dataType = "Data";
467  reportSvc->reportDataType(reportToken_, dataType);
468  dataTypeReported_ = true;
469  }
470 
471  // Store the process history.
473  // Store the reduced ID in the IndexIntoFile
474  ProcessHistoryID reducedPHID = processHistoryRegistry_.reducedProcessHistoryID(e.processHistoryID());
475  // Add event to index
479 
480  if (om_->compactEventAuxiliary()) {
482  }
483 
484  // Report event written
485  Service<JobReport> reportSvc;
486  reportSvc->eventWrittenToFile(reportToken_, e.id().run(), e.id().event());
487  ++nEventsInLumi_;
488  }

References edm::IndexIntoFile::addEntry(), cms::cuda::assert(), compactEventAuxiliary_, DTskim_cfg::dataType, dataTypeReported_, MillePedeFileConverter_cfg::e, edm::EventAuxiliary::event(), eventEntryNumber_, fillBranches(), indexIntoFile_, edm::InEvent, edm::EventAuxiliary::isRealData(), edm::EventAuxiliary::luminosityBlock(), nEventsInLumi_, om_, pBranchListIndexes_, pEventAux_, pEventEntryInfoVector_, pEventSelectionIDs_, pEventToProcessBlockIndexes_, edm::EventAuxiliary::processHistoryID(), processHistoryRegistry_, edm::CompactEventAuxiliaryVector::push_back(), edm::ProcessHistoryRegistry::reducedProcessHistoryID(), edm::ProcessHistoryRegistry::registerProcessHistory(), reportToken_, edm::EventAuxiliary::run(), and AlCaHLTBitMon_QueryRunRegistry::string.

◆ writeParameterSetRegistry()

void edm::RootOutputFile::writeParameterSetRegistry ( )

Definition at line 631 of file RootOutputFile.cc.

631  {
633  }

References edm::fillParameterSetBranch(), edm::propagate_const< T >::get(), om_, and parameterSetsTree_.

◆ writeParentageRegistry()

void edm::RootOutputFile::writeParentageRegistry ( )

Definition at line 548 of file RootOutputFile.cc.

548  {
549  Parentage const* desc(nullptr);
550 
551  if (!parentageTree_->Branch(poolNames::parentageBranchName().c_str(), &desc, om_->basketSize(), 0))
552  throw Exception(errors::FatalRootError) << "Failed to create a branch for Parentages in the output file";
553 
554  ParentageRegistry& ptReg = *ParentageRegistry::instance();
555 
556  std::vector<ParentageID> orderedIDs(parentageIDs_.size());
557  for (auto const& parentageID : parentageIDs_) {
558  orderedIDs[parentageID.second] = parentageID.first;
559  }
560  //now put them into the TTree in the correct order
561  for (auto const& orderedID : orderedIDs) {
562  desc = ptReg.getMapped(orderedID);
563  //NOTE: some old format files have missing Parentage info
564  // so a null value of desc can't be fatal.
565  // Root will default construct an object in that case.
566  parentageTree_->Fill();
567  }
568  }

References submitPVResolutionJobs::desc, Exception, edm::errors::FatalRootError, edm::ParentageRegistry::getMapped(), edm::ParentageRegistry::instance(), om_, edm::poolNames::parentageBranchName(), parentageIDs_, and parentageTree_.

◆ writeProcessBlock()

void edm::RootOutputFile::writeProcessBlock ( ProcessBlockForOutput const &  pb)

Definition at line 534 of file RootOutputFile.cc.

534  {
535  std::string const& processName = pb.processName();
536  std::vector<std::string> const& processesWithProcessBlockProducts =
537  om_->outputProcessBlockHelper().processesWithProcessBlockProducts();
538  std::vector<std::string>::const_iterator it =
539  std::find(processesWithProcessBlockProducts.cbegin(), processesWithProcessBlockProducts.cend(), processName);
540  if (it == processesWithProcessBlockProducts.cend()) {
541  return;
542  }
543  unsigned int ttreeIndex = InProcess + std::distance(processesWithProcessBlockProducts.cbegin(), it);
544  fillBranches(InProcess, pb, ttreeIndex);
545  treePointers_[ttreeIndex]->optimizeBaskets(10ULL * 1024 * 1024);
546  }

References HLT_FULL_cff::distance, fillBranches(), spr::find(), edm::InProcess, om_, SimL1EmulatorRepack_CalouGT_cff::processName, edm::ProcessBlockForOutput::processName(), AlCaHLTBitMon_QueryRunRegistry::string, and treePointers_.

◆ writeProcessBlockHelper()

void edm::RootOutputFile::writeProcessBlockHelper ( )

Definition at line 712 of file RootOutputFile.cc.

712  {
713  if (!om_->outputProcessBlockHelper().processesWithProcessBlockProducts().empty()) {
714  StoredProcessBlockHelper storedProcessBlockHelper(
715  om_->outputProcessBlockHelper().processesWithProcessBlockProducts());
716  om_->outputProcessBlockHelper().fillCacheIndices(storedProcessBlockHelper);
717 
718  StoredProcessBlockHelper* pStoredProcessBlockHelper = &storedProcessBlockHelper;
719  TBranch* b = metaDataTree_->Branch(
720  poolNames::processBlockHelperBranchName().c_str(), &pStoredProcessBlockHelper, om_->basketSize(), 0);
721  assert(b);
722  b->Fill();
723  }
724  }

References cms::cuda::assert(), b, metaDataTree_, om_, and edm::poolNames::processBlockHelperBranchName().

◆ writeProcessHistoryRegistry()

void edm::RootOutputFile::writeProcessHistoryRegistry ( )

◆ writeProductDependencies()

void edm::RootOutputFile::writeProductDependencies ( )

Definition at line 666 of file RootOutputFile.cc.

666  {
667  BranchChildren& pDeps = const_cast<BranchChildren&>(om_->branchChildren());
668  BranchChildren* ppDeps = &pDeps;
669  TBranch* b =
670  metaDataTree_->Branch(poolNames::productDependenciesBranchName().c_str(), &ppDeps, om_->basketSize(), 0);
671  assert(b);
672  b->Fill();
673  }

References cms::cuda::assert(), b, metaDataTree_, om_, and edm::poolNames::productDependenciesBranchName().

◆ writeProductDescriptionRegistry()

void edm::RootOutputFile::writeProductDescriptionRegistry ( )

Definition at line 635 of file RootOutputFile.cc.

635  {
636  // Make a local copy of the ProductRegistry, removing any transient or pruned products.
637  using ProductList = ProductRegistry::ProductList;
639  ProductRegistry pReg(reg->productList());
640  ProductList& pList = const_cast<ProductList&>(pReg.productList());
641  for (auto const& prod : pList) {
642  if (prod.second.branchID() != prod.second.originalBranchID()) {
643  if (branchesWithStoredHistory_.find(prod.second.branchID()) != branchesWithStoredHistory_.end()) {
644  branchesWithStoredHistory_.insert(prod.second.originalBranchID());
645  }
646  }
647  }
648  std::set<BranchID>::iterator end = branchesWithStoredHistory_.end();
649  for (ProductList::iterator it = pList.begin(); it != pList.end();) {
650  if (branchesWithStoredHistory_.find(it->second.branchID()) == end) {
651  // avoid invalidating iterator on deletion
652  ProductList::iterator itCopy = it;
653  ++it;
654  pList.erase(itCopy);
655 
656  } else {
657  ++it;
658  }
659  }
660 
661  ProductRegistry* ppReg = &pReg;
662  TBranch* b = metaDataTree_->Branch(poolNames::productDescriptionBranchName().c_str(), &ppReg, om_->basketSize(), 0);
663  assert(b);
664  b->Fill();
665  }

References cms::cuda::assert(), b, branchesWithStoredHistory_, mps_fire::end, metaDataTree_, om_, dumpMFGeometry_cfg::prod, and edm::poolNames::productDescriptionBranchName().

◆ writeRun()

void edm::RootOutputFile::writeRun ( RunForOutput const &  r)

Definition at line 512 of file RootOutputFile.cc.

512  {
513  // Auxiliary branch
514  // NOTE: runAux_ must be filled before calling fillBranches since it gets written out in that routine.
515  runAux_ = r.runAuxiliary();
516  // Use the updated process historyID
517  runAux_.setProcessHistoryID(r.processHistoryID());
518  // Store the process history.
520  // Store the reduced ID in the IndexIntoFile
521  ProcessHistoryID reducedPHID = processHistoryRegistry_.reducedProcessHistoryID(r.processHistoryID());
522  // Add run to index.
523  indexIntoFile_.addEntry(reducedPHID, runAux_.run(), 0U, 0U, runEntryNumber_);
524  r.mergeableRunProductMetadata()->addEntryToStoredMetadata(storedMergeableRunProductMetadata_);
525  ++runEntryNumber_;
526  unsigned int ttreeIndex = InRun;
527  fillBranches(InRun, r, ttreeIndex);
528  runTree_.optimizeBaskets(10ULL * 1024 * 1024);
529 
530  Service<JobReport> reportSvc;
531  reportSvc->reportRunNumber(reportToken_, r.run());
532  }

References edm::IndexIntoFile::addEntry(), fillBranches(), indexIntoFile_, edm::InRun, edm::RootOutputTree::optimizeBaskets(), processHistoryRegistry_, alignCSCRings::r, edm::ProcessHistoryRegistry::reducedProcessHistoryID(), edm::ProcessHistoryRegistry::registerProcessHistory(), reportToken_, edm::RunAuxiliary::run(), runAux_, runEntryNumber_, runTree_, edm::RunAuxiliary::setProcessHistoryID(), storedMergeableRunProductMetadata_, and mitigatedMETSequence_cff::U.

◆ writeStoredMergeableRunProductMetadata()

void edm::RootOutputFile::writeStoredMergeableRunProductMetadata ( )

◆ writeThinnedAssociationsHelper()

void edm::RootOutputFile::writeThinnedAssociationsHelper ( )

Definition at line 623 of file RootOutputFile.cc.

623  {
624  ThinnedAssociationsHelper const* p = om_->thinnedAssociationsHelper();
625  TBranch* b =
626  metaDataTree_->Branch(poolNames::thinnedAssociationsHelperBranchName().c_str(), &p, om_->basketSize(), 0);
627  assert(b);
628  b->Fill();
629  }

References cms::cuda::assert(), b, metaDataTree_, om_, AlCaHLTBitMon_ParallelJobs::p, and edm::poolNames::thinnedAssociationsHelperBranchName().

Member Data Documentation

◆ branchesWithStoredHistory_

std::set<BranchID> edm::RootOutputFile::branchesWithStoredHistory_
private

◆ canFastCloneAux_

bool edm::RootOutputFile::canFastCloneAux_
private

Definition at line 115 of file RootOutputFile.h.

Referenced by beginInputFile().

◆ compactEventAuxiliary_

CompactEventAuxiliaryVector edm::RootOutputFile::compactEventAuxiliary_
private

Definition at line 147 of file RootOutputFile.h.

Referenced by beginInputFile(), writeEventAuxiliary(), and writeOne().

◆ dataTypeReported_

bool edm::RootOutputFile::dataTypeReported_
private

Definition at line 142 of file RootOutputFile.h.

Referenced by writeOne().

◆ eventEntryInfoVector_

StoredProductProvenanceVector edm::RootOutputFile::eventEntryInfoVector_
private

Definition at line 132 of file RootOutputFile.h.

◆ eventEntryNumber_

IndexIntoFile::EntryNumber_t edm::RootOutputFile::eventEntryNumber_
private

Definition at line 118 of file RootOutputFile.h.

Referenced by writeIndexIntoFile(), and writeOne().

◆ eventTree_

RootOutputTree edm::RootOutputFile::eventTree_
private

◆ fid_

FileID edm::RootOutputFile::fid_
private

Definition at line 117 of file RootOutputFile.h.

Referenced by RootOutputFile(), and writeFileIdentifier().

◆ file_

std::string edm::RootOutputFile::file_
private

Definition at line 110 of file RootOutputFile.h.

Referenced by beginInputFile(), fileName(), and RootOutputFile().

◆ filePtr_

edm::propagate_const<std::shared_ptr<TFile> > edm::RootOutputFile::filePtr_
private

Definition at line 116 of file RootOutputFile.h.

Referenced by filePtr(), finishEndFile(), RootOutputFile(), and shouldWeCloseFile().

◆ indexIntoFile_

IndexIntoFile edm::RootOutputFile::indexIntoFile_
private

Definition at line 121 of file RootOutputFile.h.

Referenced by writeIndexIntoFile(), writeLuminosityBlock(), writeOne(), and writeRun().

◆ logicalFile_

std::string edm::RootOutputFile::logicalFile_
private

Definition at line 111 of file RootOutputFile.h.

Referenced by RootOutputFile().

◆ lumiAux_

LuminosityBlockAuxiliary edm::RootOutputFile::lumiAux_
private

Definition at line 127 of file RootOutputFile.h.

Referenced by writeLuminosityBlock().

◆ lumiEntryNumber_

IndexIntoFile::EntryNumber_t edm::RootOutputFile::lumiEntryNumber_
private

Definition at line 119 of file RootOutputFile.h.

Referenced by writeLuminosityBlock().

◆ lumiTree_

RootOutputTree edm::RootOutputFile::lumiTree_
private

Definition at line 138 of file RootOutputFile.h.

Referenced by respondToCloseInputFile(), RootOutputFile(), and writeLuminosityBlock().

◆ metaDataTree_

edm::propagate_const<TTree*> edm::RootOutputFile::metaDataTree_
private

◆ nEventsInLumi_

unsigned long edm::RootOutputFile::nEventsInLumi_
private

Definition at line 123 of file RootOutputFile.h.

Referenced by writeLuminosityBlock(), and writeOne().

◆ om_

edm::propagate_const<PoolOutputModule*> edm::RootOutputFile::om_
private

◆ parameterSetsTree_

edm::propagate_const<TTree*> edm::RootOutputFile::parameterSetsTree_
private

Definition at line 125 of file RootOutputFile.h.

Referenced by finishEndFile(), RootOutputFile(), and writeParameterSetRegistry().

◆ parentageIDs_

std::map<ParentageID, unsigned int> edm::RootOutputFile::parentageIDs_
private

Definition at line 144 of file RootOutputFile.h.

Referenced by insertProductProvenance(), and writeParentageRegistry().

◆ parentageTree_

edm::propagate_const<TTree*> edm::RootOutputFile::parentageTree_
private

Definition at line 126 of file RootOutputFile.h.

Referenced by finishEndFile(), RootOutputFile(), and writeParentageRegistry().

◆ pBranchListIndexes_

BranchListIndexes const* edm::RootOutputFile::pBranchListIndexes_
private

Definition at line 134 of file RootOutputFile.h.

Referenced by RootOutputFile(), and writeOne().

◆ pEventAux_

EventAuxiliary const* edm::RootOutputFile::pEventAux_
private

Definition at line 129 of file RootOutputFile.h.

Referenced by RootOutputFile(), writeEventAuxiliary(), and writeOne().

◆ pEventEntryInfoVector_

edm::propagate_const<StoredProductProvenanceVector*> edm::RootOutputFile::pEventEntryInfoVector_
private

Definition at line 133 of file RootOutputFile.h.

Referenced by pEventEntryInfoVector(), and writeOne().

◆ pEventSelectionIDs_

EventSelectionIDVector const* edm::RootOutputFile::pEventSelectionIDs_
private

Definition at line 136 of file RootOutputFile.h.

Referenced by RootOutputFile(), and writeOne().

◆ pEventToProcessBlockIndexes_

EventToProcessBlockIndexes const* edm::RootOutputFile::pEventToProcessBlockIndexes_
private

Definition at line 135 of file RootOutputFile.h.

Referenced by RootOutputFile(), and writeOne().

◆ pLumiAux_

LuminosityBlockAuxiliary const* edm::RootOutputFile::pLumiAux_
private

Definition at line 130 of file RootOutputFile.h.

Referenced by RootOutputFile().

◆ processBlockTrees_

std::vector<edm::propagate_const<std::unique_ptr<RootOutputTree> > > edm::RootOutputFile::processBlockTrees_
private

Definition at line 140 of file RootOutputFile.h.

Referenced by RootOutputFile().

◆ processHistoryRegistry_

ProcessHistoryRegistry edm::RootOutputFile::processHistoryRegistry_
private

◆ pRunAux_

RunAuxiliary const* edm::RootOutputFile::pRunAux_
private

Definition at line 131 of file RootOutputFile.h.

Referenced by RootOutputFile().

◆ reportToken_

JobReport::Token edm::RootOutputFile::reportToken_
private

◆ runAux_

RunAuxiliary edm::RootOutputFile::runAux_
private

Definition at line 128 of file RootOutputFile.h.

Referenced by writeRun().

◆ runEntryNumber_

IndexIntoFile::EntryNumber_t edm::RootOutputFile::runEntryNumber_
private

Definition at line 120 of file RootOutputFile.h.

Referenced by writeRun().

◆ runTree_

RootOutputTree edm::RootOutputFile::runTree_
private

Definition at line 139 of file RootOutputFile.h.

Referenced by respondToCloseInputFile(), RootOutputFile(), and writeRun().

◆ storedMergeableRunProductMetadata_

StoredMergeableRunProductMetadata edm::RootOutputFile::storedMergeableRunProductMetadata_
private

Definition at line 122 of file RootOutputFile.h.

Referenced by writeRun(), and writeStoredMergeableRunProductMetadata().

◆ treePointers_

std::vector<edm::propagate_const<RootOutputTree*> > edm::RootOutputFile::treePointers_
private

Definition at line 141 of file RootOutputFile.h.

Referenced by fillBranches(), finishEndFile(), RootOutputFile(), and writeProcessBlock().

◆ whyNotFastClonable_

int edm::RootOutputFile::whyNotFastClonable_
private

Definition at line 114 of file RootOutputFile.h.

Referenced by beginInputFile(), and fillBranches().

◆ wrapperBaseTClass_

edm::propagate_const<TClass*> edm::RootOutputFile::wrapperBaseTClass_
private

Definition at line 146 of file RootOutputFile.h.

Referenced by fillBranches().

edm::LuminosityBlockAuxiliary::run
RunNumber_t run() const
Definition: LuminosityBlockAuxiliary.h:35
edm::RootOutputFile::dataTypeReported_
bool dataTypeReported_
Definition: RootOutputFile.h:142
edm::RootOutputFile::treePointers_
std::vector< edm::propagate_const< RootOutputTree * > > treePointers_
Definition: RootOutputFile.h:141
edm::FileBlock::BranchMismatch
Definition: FileBlock.h:56
edm::EventAuxiliary::event
EventNumber_t event() const
Definition: EventAuxiliary.h:72
edm::poolNames::branchIDListBranchName
std::string const & branchIDListBranchName()
Definition: BranchType.cc:183
edm::RootOutputTree::optimizeBaskets
void optimizeBaskets(ULong64_t size)
Definition: RootOutputTree.h:99
edm::errors::MismatchedInputFiles
Definition: EDMException.h:52
edm::ProcessHistoryRegistry::registerProcessHistory
bool registerProcessHistory(ProcessHistory const &processHistory)
Definition: ProcessHistoryRegistry.cc:11
mps_fire.i
i
Definition: mps_fire.py:428
edm::poolNames::fileFormatVersionBranchName
std::string const & fileFormatVersionBranchName()
Definition: BranchType.cc:189
edm::RootOutputFile::indexIntoFile_
IndexIntoFile indexIntoFile_
Definition: RootOutputFile.h:121
edm::RootOutputFile::pRunAux_
RunAuxiliary const * pRunAux_
Definition: RootOutputFile.h:131
edm::RootOutputFile::runEntryNumber_
IndexIntoFile::EntryNumber_t runEntryNumber_
Definition: RootOutputFile.h:120
edm::FileBlock::OutputMaxEventsTooSmall
Definition: FileBlock.h:54
edm::getWrapperBasePtr
std::unique_ptr< WrapperBase > getWrapperBasePtr(void *p, int offset)
Definition: getWrapperBasePtr.h:8
edm::RootOutputFile::filePtr
std::shared_ptr< TFile const > filePtr() const
Definition: RootOutputFile.h:100
edm::RootOutputFile::parentageIDs_
std::map< ParentageID, unsigned int > parentageIDs_
Definition: RootOutputFile.h:144
edm::IndexIntoFile::addEntry
void addEntry(ProcessHistoryID const &processHistoryID, RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event, EntryNumber_t entry)
Definition: IndexIntoFile.cc:75
edm::RootOutputFile::pEventToProcessBlockIndexes_
EventToProcessBlockIndexes const * pEventToProcessBlockIndexes_
Definition: RootOutputFile.h:135
edm::sort_all
void sort_all(RandomAccessSequence &s)
wrappers for std::sort
Definition: Algorithms.h:92
edm::errors::LogicError
Definition: EDMException.h:37
edm::FileID::fid
std::string const & fid() const
Definition: FileID.h:19
min
T min(T a, T b)
Definition: MathUtil.h:58
MicroEventContent_cff.branch
branch
Definition: MicroEventContent_cff.py:174
tree
Definition: tree.py:1
deep_tau::DeepTauBase::BasicDiscriminator
BasicDiscriminator
Definition: DeepTauBase.h:115
edm::FileBlock::NoRootInputSource
Definition: FileBlock.h:29
edm::ParentageRegistry::instance
static ParentageRegistry * instance()
Definition: ParentageRegistry.cc:5
edm::moduleName
std::string moduleName(StableProvenance const &provenance, ProcessHistory const &history)
Definition: Provenance.cc:27
edm::poolNames::parameterSetsTreeName
std::string const & parameterSetsTreeName()
Definition: BranchType.cc:216
edm::BranchListIndexes
std::vector< BranchListIndex > BranchListIndexes
Definition: BranchListIndex.h:18
edm::RootOutputFile::whyNotFastClonable_
int whyNotFastClonable_
Definition: RootOutputFile.h:114
cms::cuda::assert
assert(be >=bs)
edm::propagate_const::get
constexpr element_type const * get() const
Definition: propagate_const.h:64
edm::RootOutputFile::fid_
FileID fid_
Definition: RootOutputFile.h:117
edm::poolNames::indexIntoFileBranchName
std::string const & indexIntoFileBranchName()
Definition: BranchType.cc:198
info
static const TGPicture * info(bool iBackgroundIsBlack)
Definition: FWCollectionSummaryWidget.cc:153
edm::RootOutputFile::lumiEntryNumber_
IndexIntoFile::EntryNumber_t lumiEntryNumber_
Definition: RootOutputFile.h:119
edm::RootOutputFile::lumiTree_
RootOutputTree lumiTree_
Definition: RootOutputFile.h:138
edm::RootOutputFile::fillBranches
void fillBranches(BranchType const &branchType, OccurrenceForOutput const &occurrence, unsigned int ttreeIndex, StoredProductProvenanceVector *productProvenanceVecPtr=nullptr, ProductProvenanceRetriever const *provRetriever=nullptr)
Definition: RootOutputFile.cc:810
hgcal_conditions::parameters
Definition: HGCConditions.h:86
edm::get_underlying_safe
constexpr std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
Definition: get_underlying_safe.h:41
full
Definition: GenABIO.cc:168
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
edm::RootOutputFile::file_
std::string file_
Definition: RootOutputFile.h:110
edm::RootOutputTree::writeTTree
static void writeTTree(TTree *tree)
Definition: RootOutputTree.cc:279
DTskim_cfg.dataType
dataType
Definition: DTskim_cfg.py:56
edm::poolNames::branchListIndexesBranchName
std::string const & branchListIndexesBranchName()
Definition: BranchType.cc:212
edm::InRun
Definition: BranchType.h:11
edm::BranchType
BranchType
Definition: BranchType.h:11
edm::BranchTypeToAuxiliaryBranchName
std::string const & BranchTypeToAuxiliaryBranchName(BranchType const &branchType)
Definition: BranchType.cc:116
edm::RootOutputTree::checkSplitLevelsAndBasketSizes
bool checkSplitLevelsAndBasketSizes(TTree *inputTree) const
Definition: RootOutputTree.cc:135
mps_monitormerge.items
list items
Definition: mps_monitormerge.py:29
edm::poolNames::mergeableRunProductMetadataBranchName
std::string const & mergeableRunProductMetadataBranchName()
Definition: BranchType.cc:201
edm::RootOutputFile::fileName
std::string const & fileName() const
Definition: RootOutputFile.h:81
edm::EventAuxiliary::run
RunNumber_t run() const
Definition: EventAuxiliary.h:73
edm::InProcess
Definition: BranchType.h:11
edm::RootOutputFile::pLumiAux_
LuminosityBlockAuxiliary const * pLumiAux_
Definition: RootOutputFile.h:130
edm::FileBlock::CanFastClone
Definition: FileBlock.h:26
edm::RootOutputFile::metaDataTree_
edm::propagate_const< TTree * > metaDataTree_
Definition: RootOutputFile.h:124
edm::poolNames::parentageBranchName
std::string const & parentageBranchName()
Definition: BranchType.cc:156
edm::RootOutputFile::nEventsInLumi_
unsigned long nEventsInLumi_
Definition: RootOutputFile.h:123
edm::RootOutputFile::pEventEntryInfoVector_
edm::propagate_const< StoredProductProvenanceVector * > pEventEntryInfoVector_
Definition: RootOutputFile.h:133
edm::RootOutputFile::processHistoryRegistry_
ProcessHistoryRegistry processHistoryRegistry_
Definition: RootOutputFile.h:143
edm::RootOutputFile::filePtr_
edm::propagate_const< std::shared_ptr< TFile > > filePtr_
Definition: RootOutputFile.h:116
cms::Digest
Definition: Digest.h:46
edm::RootOutputTree::maybeFastCloneTree
void maybeFastCloneTree(bool canFastClone, bool canFastCloneAux, TTree *tree, std::string const &option)
Definition: RootOutputTree.cc:295
edm::errors::FatalRootError
Definition: EDMException.h:51
edm::RootOutputTree::setAutoFlush
void setAutoFlush(Long64_t size)
Definition: RootOutputTree.h:101
edm::fillParameterSetBranch
void fillParameterSetBranch(TTree *parameterSetsTree, int basketSize)
Definition: CommonProvenanceFiller.cc:18
mps_fire.end
end
Definition: mps_fire.py:242
dumpMFGeometry_cfg.prod
prod
Definition: dumpMFGeometry_cfg.py:24
corrVsCorr.selection
selection
main part
Definition: corrVsCorr.py:100
edm::RootOutputFile::insertProductProvenance
bool insertProductProvenance(const ProductProvenance &, std::set< StoredProductProvenance > &oToInsert)
Definition: RootOutputFile.cc:887
edm::poolNames::eventToProcessBlockIndexesBranchName
std::string const & eventToProcessBlockIndexesBranchName()
Definition: BranchType.cc:214
Service
edm::RootOutputFile::branchesWithStoredHistory_
std::set< BranchID > branchesWithStoredHistory_
Definition: RootOutputFile.h:145
edm::RootOutputTree::checkIfFastClonable
bool checkIfFastClonable(TTree *inputTree) const
Definition: RootOutputTree.cc:183
edm::CompactEventAuxiliaryVector::guidsSize
size_type guidsSize() const
Definition: CompactEventAuxiliaryVector.h:142
edm::RootOutputFile::compactEventAuxiliary_
CompactEventAuxiliaryVector compactEventAuxiliary_
Definition: RootOutputFile.h:147
edm::InEvent
Definition: BranchType.h:11
edm::RootOutputFile::wrapperBaseTClass_
edm::propagate_const< TClass * > wrapperBaseTClass_
Definition: RootOutputFile.h:146
edm::RootOutputFile::canFastCloneAux_
bool canFastCloneAux_
Definition: RootOutputFile.h:115
b
double b
Definition: hdecay.h:118
edm::poolNames::parentageTreeName
std::string const & parentageTreeName()
Definition: BranchType.cc:154
edm::BranchIDLists
std::vector< BranchIDList > BranchIDLists
Definition: BranchIDList.h:19
edm::RootOutputFile::insertAncestors
void insertAncestors(ProductProvenance const &iGetParents, ProductProvenanceRetriever const *iMapper, bool produced, std::set< BranchID > const &producedBranches, std::set< StoredProductProvenance > &oToFill)
Definition: RootOutputFile.cc:785
mitigatedMETSequence_cff.U
U
Definition: mitigatedMETSequence_cff.py:36
edm::poolNames::eventSelectionsBranchName
std::string const & eventSelectionsBranchName()
Definition: BranchType.cc:210
edm::RootOutputFile::eventTree_
RootOutputTree eventTree_
Definition: RootOutputFile.h:137
edm::RootOutputTree::makeTTree
static TTree * makeTTree(TFile *filePtr, std::string const &name, int splitLevel)
Definition: RootOutputTree.cc:124
edm::ProductRegistry::ProductList
std::map< BranchKey, BranchDescription > ProductList
Definition: ProductRegistry.h:39
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
edm::getFileFormatVersion
int getFileFormatVersion()
Definition: GetFileFormatVersion.cc:4
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
edm::CompactEventAuxiliaryVector::extrasSize
size_type extrasSize() const
Definition: CompactEventAuxiliaryVector.h:141
edm::InLumi
Definition: BranchType.h:11
edm::poolNames::productDescriptionBranchName
std::string const & productDescriptionBranchName()
Definition: BranchType.cc:162
MainPageGenerator.tree
tree
Definition: MainPageGenerator.py:264
edm::RootOutputFile::pBranchListIndexes_
BranchListIndexes const * pBranchListIndexes_
Definition: RootOutputFile.h:134
edm::EventAuxiliary::luminosityBlock
LuminosityBlockNumber_t luminosityBlock() const
Definition: EventAuxiliary.h:67
edm::CompactEventAuxiliaryVector::push_back
void push_back(const EventAuxiliary &ea)
Definition: CompactEventAuxiliaryVector.h:144
edm::RootOutputFile::runTree_
RootOutputTree runTree_
Definition: RootOutputFile.h:139
Exception
edm::RootOutputFile::eventEntryInfoVector_
StoredProductProvenanceVector eventEntryInfoVector_
Definition: RootOutputFile.h:132
edm::FileBlock::EventsOrLumisSelectedByID
Definition: FileBlock.h:39
printConversionInfo.aux
aux
Definition: printConversionInfo.py:19
edm::RootOutputTree::checkEntriesInReadBranches
bool checkEntriesInReadBranches(Long64_t expectedNumberOfEntries) const
Definition: RootOutputTree.cc:205
edm::createGlobalIdentifier
std::string createGlobalIdentifier(bool binary=false)
Definition: GlobalIdentifier.cc:5
edm::RootOutputFile::parentageTree_
edm::propagate_const< TTree * > parentageTree_
Definition: RootOutputFile.h:126
edm::PoolOutputModule::DropDroppedPrior
Definition: PoolOutputModule.h:43
edm::RootOutputFile::logicalFile_
std::string logicalFile_
Definition: RootOutputFile.h:111
edm::RootOutputFile::reportToken_
JobReport::Token reportToken_
Definition: RootOutputFile.h:112
B2GTnPMonitor_cfi.item
item
Definition: B2GTnPMonitor_cfi.py:147
edm::ProcessHistoryRegistry::reducedProcessHistoryID
ProcessHistoryID const & reducedProcessHistoryID(ProcessHistoryID const &fullID) const
Definition: ProcessHistoryRegistry.cc:23
edm::RootOutputFile::runAux_
RunAuxiliary runAux_
Definition: RootOutputFile.h:128
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
SimL1EmulatorRepack_CalouGT_cff.processName
processName
Definition: SimL1EmulatorRepack_CalouGT_cff.py:17
edm::RootOutputTree::tree
TTree const * tree() const
Definition: RootOutputTree.h:84
alignCSCRings.r
r
Definition: alignCSCRings.py:93
edm::PoolOutputModule::DropPrior
Definition: PoolOutputModule.h:43
L1DTConfigBti_cff.LL
LL
Definition: L1DTConfigBti_cff.py:25
edm::RootOutputTree::setEntries
void setEntries()
Definition: RootOutputTree.h:88
edm::BranchTypeToProductProvenanceBranchName
std::string const & BranchTypeToProductProvenanceBranchName(BranchType const &BranchType)
Definition: BranchType.cc:139
edm::CompactEventAuxiliaryVector::reserve
void reserve(std::size_t size)
Definition: CompactEventAuxiliaryVector.h:135
edm::RootOutputFile::om_
edm::propagate_const< PoolOutputModule * > om_
Definition: RootOutputFile.h:113
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
eostools.move
def move(src, dest)
Definition: eostools.py:511
edm::FileBlock::EventSelectionUsed
Definition: FileBlock.h:51
edm::match
std::string match(BranchDescription const &a, BranchDescription const &b, std::string const &fileName)
Definition: BranchDescription.cc:351
edm::LuminosityBlockAuxiliary::luminosityBlock
LuminosityBlockNumber_t luminosityBlock() const
Definition: LuminosityBlockAuxiliary.h:34
edm::ProcessHistoryID
Hash< ProcessHistoryType > ProcessHistoryID
Definition: ProcessHistoryID.h:8
edm::RootOutputFile::eventEntryNumber_
IndexIntoFile::EntryNumber_t eventEntryNumber_
Definition: RootOutputFile.h:118
edm::RunAuxiliary::setProcessHistoryID
void setProcessHistoryID(ProcessHistoryID const &phid)
Definition: RunAuxiliary.h:26
edm::poolNames::metaDataTreeName
std::string const & metaDataTreeName()
Definition: BranchType.cc:159
edm::EventAuxiliary::processHistoryID
ProcessHistoryID const & processHistoryID() const
Definition: EventAuxiliary.h:61
edm::RootOutputFile::processBlockTrees_
std::vector< edm::propagate_const< std::unique_ptr< RootOutputTree > > > processBlockTrees_
Definition: RootOutputFile.h:140
SiStripOfflineCRack_cfg.alias
alias
Definition: SiStripOfflineCRack_cfg.py:128
Exception
Definition: hltDiff.cc:245
edm::StoredMergeableRunProductMetadata::optimizeBeforeWrite
void optimizeBeforeWrite()
Definition: StoredMergeableRunProductMetadata.cc:31
edm::RunAuxiliary::run
RunNumber_t run() const
Definition: RunAuxiliary.h:31
edm::RootOutputTree::addAuxiliary
void addAuxiliary(std::string const &branchName, T const *&pAux, int bufSize, bool allowCloning=true)
Definition: RootOutputTree.h:38
edm::CompactEventAuxiliaryVector::size
size_type size() const
Definition: CompactEventAuxiliaryVector.h:134
edm::errors::OtherCMS
Definition: EDMException.h:27
edm::fillProcessHistoryBranch
void fillProcessHistoryBranch(TTree *metaDataTree, int basketSize, ProcessHistoryRegistry const &processHistoryRegistry)
Definition: CommonProvenanceFiller.cc:32
edm::poolNames::thinnedAssociationsHelperBranchName
std::string const & thinnedAssociationsHelperBranchName()
Definition: BranchType.cc:186
edm::RootOutputFile::setBranchAliases
void setBranchAliases(TTree *tree, SelectedProducts const &branches, std::string const &processName) const
Definition: RootOutputFile.cc:763
StoredProductProvenance
edm::PoolOutputModule::DropNone
Definition: PoolOutputModule.h:43
test_L1EGCrystalClusterEmulator_cfg.fastCloning
fastCloning
Definition: test_L1EGCrystalClusterEmulator_cfg.py:60
edm::IndexIntoFile::sortVector_Run_Or_Lumi_Entries
void sortVector_Run_Or_Lumi_Entries()
Definition: IndexIntoFile.cc:392
edm::LuminosityBlockAuxiliary::setProcessHistoryID
void setProcessHistoryID(ProcessHistoryID const &phid)
Definition: LuminosityBlockAuxiliary.h:33
edm::poolNames::productDependenciesBranchName
std::string const & productDependenciesBranchName()
Definition: BranchType.cc:165
mps_fire.result
result
Definition: mps_fire.py:311
edm::poolNames::processBlockHelperBranchName
std::string const & processBlockHelperBranchName()
Definition: BranchType.cc:204
edm::EventAuxiliary::isRealData
bool isRealData() const
Definition: EventAuxiliary.h:74
dummy
Definition: DummySelector.h:38
edm::RootOutputFile::OutputItemList
PoolOutputModule::OutputItemList OutputItemList
Definition: RootOutputFile.h:51
edm::poolNames::fileIdentifierBranchName
std::string const & fileIdentifierBranchName()
Definition: BranchType.cc:192
edm::RootOutputFile::pEventAux_
EventAuxiliary const * pEventAux_
Definition: RootOutputFile.h:129
edm::RootOutputFile::pEventEntryInfoVector
StoredProductProvenanceVector const * pEventEntryInfoVector() const
Definition: RootOutputFile.h:102
hltrates_dqm_sourceclient-live_cfg.offset
offset
Definition: hltrates_dqm_sourceclient-live_cfg.py:82
edm::EventSelectionIDVector
std::vector< EventSelectionID > EventSelectionIDVector
Definition: EventSelectionID.h:16
HLT_FULL_cff.distance
distance
Definition: HLT_FULL_cff.py:7746
edm::RootOutputFile::lumiAux_
LuminosityBlockAuxiliary lumiAux_
Definition: RootOutputFile.h:127
edm::RootOutputFile::pEventSelectionIDs_
EventSelectionIDVector const * pEventSelectionIDs_
Definition: RootOutputFile.h:136
edm::PoolOutputModule::DropAll
Definition: PoolOutputModule.h:43
edm::errors::Configuration
Definition: EDMException.h:36
edm::RootOutputFile::parameterSetsTree_
edm::propagate_const< TTree * > parameterSetsTree_
Definition: RootOutputFile.h:125
edm::RootOutputFile::storedMergeableRunProductMetadata_
StoredMergeableRunProductMetadata storedMergeableRunProductMetadata_
Definition: RootOutputFile.h:122
edm::StoredProductProvenanceVector
std::vector< StoredProductProvenance > StoredProductProvenanceVector
Definition: StoredProductProvenance.h:34
edm::FileBlock::SplitLevelMismatch
Definition: FileBlock.h:55
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
edm::FileBlock::InitialEventsSkipped
Definition: FileBlock.h:40