CMS 3D CMS Logo

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

#include <RootFile.h>

Public Types

typedef std::array< RootTree *, NumBranchTypesRootTreePtrArray
 

Public Member Functions

std::shared_ptr< BranchIDListHelper > & branchIDListHelper ()
 
std::shared_ptr< BranchIDListHelper const > branchIDListHelper () const
 
bool branchListIndexesUnchanged () const
 
void close ()
 
bool containsItem (RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
 
std::unique_ptr< FileBlockcreateFileBlock () const
 
EventAuxiliary const & eventAux () const
 
EventID const & eventID () const
 
RootTree const & eventTree () const
 
std::string const & file () const
 
FileFormatVersion fileFormatVersion () const
 
IndexIntoFile::EntryType getNextItemType (RunNumber_t &run, LuminosityBlockNumber_t &lumi, EventNumber_t &event)
 
bool goToEvent (EventID const &eventID)
 
std::array< bool, NumBranchTypes > const & hasNewlyDroppedBranch () const
 
IndexIntoFile::IndexIntoFileItr indexIntoFileIter () const
 
std::shared_ptr< IndexIntoFile > & indexIntoFileSharedPtr ()
 
std::shared_ptr< IndexIntoFile const > indexIntoFileSharedPtr () const
 
void initAssociationsFromSecondary (std::vector< BranchID > const &)
 
RootTree const & lumiTree () const
 
bool modifiedIDs () const
 
bool nextEventEntry ()
 
RootFileoperator= (RootFile const &)=delete
 
std::shared_ptr< ProductRegistry const > productRegistry () const
 
bool readCurrentEvent (EventPrincipal &cache)
 
void readEvent (EventPrincipal &cache)
 
void readFakeRun_ (RunPrincipal &runPrincipal)
 
std::shared_ptr< RunAuxiliaryreadFakeRunAuxiliary_ ()
 
void readLuminosityBlock_ (LuminosityBlockPrincipal &lumiPrincipal)
 
std::shared_ptr< LuminosityBlockAuxiliaryreadLuminosityBlockAuxiliary_ ()
 
void readRun_ (RunPrincipal &runPrincipal)
 
std::shared_ptr< RunAuxiliaryreadRunAuxiliary_ ()
 
void reportOpened (std::string const &inputType)
 
void rewind ()
 
 RootFile (RootFile const &)=delete
 
 RootFile (std::string const &fileName, ProcessConfiguration const &processConfiguration, std::string const &logicalFileName, std::shared_ptr< InputFile > filePtr, std::shared_ptr< EventSkipperByID > eventSkipperByID, bool skipAnyEvents, int remainingEvents, int remainingLumis, unsigned int nStreams, unsigned int treeCacheSize, int treeMaxVirtualSize, InputSource::ProcessingMode processingMode, RunHelperBase *runHelper, bool noEventSort, ProductSelectorRules const &productSelectorRules, InputType inputType, std::shared_ptr< BranchIDListHelper > branchIDListHelper, std::shared_ptr< ThinnedAssociationsHelper > thinnedAssociationsHelper, std::vector< BranchID > const *associationsFromSecondary, std::shared_ptr< DuplicateChecker > duplicateChecker, bool dropDescendantsOfDroppedProducts, ProcessHistoryRegistry &processHistoryRegistry, std::vector< std::shared_ptr< IndexIntoFile >> const &indexesIntoFiles, std::vector< std::shared_ptr< IndexIntoFile >>::size_type currentIndexIntoFile, std::vector< ProcessHistoryID > &orderedProcessHistoryIDs, bool bypassVersionCheck, bool labelRawDataLikeMC, bool usingGoToEvent, bool enablePrefetching, bool enforceGUIDInFileName)
 
 RootFile (std::string const &fileName, ProcessConfiguration const &processConfiguration, std::string const &logicalFileName, std::shared_ptr< InputFile > filePtr, unsigned int nStreams, int treeMaxVirtualSize, InputSource::ProcessingMode processingMode, RunHelperBase *runHelper, ProductSelectorRules const &productSelectorRules, InputType inputType, std::shared_ptr< BranchIDListHelper > branchIDListHelper, std::shared_ptr< ThinnedAssociationsHelper > thinnedAssociationsHelper, std::vector< BranchID > const *associationsFromSecondary, bool dropDescendantsOfDroppedProducts, ProcessHistoryRegistry &processHistoryRegistry, std::vector< std::shared_ptr< IndexIntoFile >> const &indexesIntoFiles, std::vector< std::shared_ptr< IndexIntoFile >>::size_type currentIndexIntoFile, std::vector< ProcessHistoryID > &orderedProcessHistoryIDs, bool bypassVersionCheck, bool labelRawDataLikeMC, bool enablePrefetching, bool enforceGUIDInFileName)
 
 RootFile (std::string const &fileName, ProcessConfiguration const &processConfiguration, std::string const &logicalFileName, std::shared_ptr< InputFile > filePtr, unsigned int nStreams, unsigned int treeCacheSize, int treeMaxVirtualSize, RunHelperBase *runHelper, ProductSelectorRules const &productSelectorRules, InputType inputType, ProcessHistoryRegistry &processHistoryRegistry, std::vector< std::shared_ptr< IndexIntoFile >> const &indexesIntoFiles, std::vector< std::shared_ptr< IndexIntoFile >>::size_type currentIndexIntoFile, std::vector< ProcessHistoryID > &orderedProcessHistoryIDs, bool bypassVersionCheck, bool enablePrefetching, bool enforceGUIDInFileName)
 
RootTree const & runTree () const
 
void setAtEventEntry (IndexIntoFile::EntryNumber_t entry)
 
bool setEntryAtEvent (RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event)
 
bool setEntryAtItem (RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event)
 
bool setEntryAtLumi (RunNumber_t run, LuminosityBlockNumber_t lumi)
 
bool setEntryAtNextEventInLumi (RunNumber_t run, LuminosityBlockNumber_t lumi)
 
bool setEntryAtRun (RunNumber_t run)
 
void setPosition (IndexIntoFile::IndexIntoFileItr const &position)
 
void setSignals (signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const *preEventReadSource, signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const *postEventReadSource)
 
void setToLastEntry ()
 
bool skipEntries (unsigned int &offset)
 
bool skipEvents (int &offset)
 
bool wasFirstEventJustRead () const
 
bool wasLastEventJustRead () const
 
int whyNotFastClonable () const
 
 ~RootFile ()
 

Private Member Functions

std::shared_ptr< BranchChildren > & branchChildren ()
 
std::shared_ptr< BranchChildren const > branchChildren () const
 
void dropOnInput (ProductRegistry &reg, ProductSelectorRules const &rules, bool dropDescendants, InputType inputType)
 
std::shared_ptr< ProductProvenanceRetriever > & eventProductProvenanceRetriever (size_t index)
 
std::shared_ptr< ProductProvenanceRetriever const > eventProductProvenanceRetriever (size_t index) const
 
bool fillEventAuxiliary (IndexIntoFile::EntryNumber_t entry)
 
void fillEventHistory ()
 
void fillIndexIntoFile ()
 
std::shared_ptr< LuminosityBlockAuxiliaryfillLumiAuxiliary ()
 
std::shared_ptr< RunAuxiliaryfillRunAuxiliary ()
 
void fillThisEventAuxiliary ()
 
void initializeDuplicateChecker (std::vector< std::shared_ptr< IndexIntoFile >> const &indexesIntoFiles, std::vector< std::shared_ptr< IndexIntoFile >>::size_type currentIndexIntoFile)
 
bool isDuplicateEvent ()
 
std::shared_ptr< ProductProvenanceRetrievermakeProductProvenanceRetriever (unsigned int iStreamIndex)
 
std::unique_ptr< MakeProvenanceReadermakeProvenanceReaderMaker (InputType inputType)
 
void markBranchToBeDropped (bool dropDescendants, BranchDescription const &branch, std::set< BranchID > &branchesToDrop, std::map< BranchID, BranchID > const &droppedToKeptAlias) const
 
std::string const & newBranchToOldBranch (std::string const &newBranch) const
 
void readEntryDescriptionTree (EntryDescriptionMap &entryDescriptionMap, InputType inputType)
 
void readEventHistoryTree ()
 
void readParentageTree (InputType inputType)
 
std::shared_ptr< RunAuxiliary > & savedRunAuxiliary ()
 
std::shared_ptr< RunAuxiliary const > savedRunAuxiliary () const
 
void setIfFastClonable (int remainingEvents, int remainingLumis)
 
bool skipThisEntry ()
 
RootTreePtrArraytreePointers ()
 
void validateFile (InputType inputType, bool usingGoToEvent)
 

Private Attributes

edm::propagate_const< std::shared_ptr< BranchChildren > > branchChildren_
 
edm::propagate_const< std::shared_ptr< BranchIDListHelper > > branchIDListHelper_
 
std::shared_ptr< BranchIDLists const > branchIDLists_
 
BranchListIndexes branchListIndexes_
 
bool branchListIndexesUnchanged_
 
edm::propagate_const< std::unique_ptr< DaqProvenanceHelper > > daqProvenanceHelper_
 
edm::propagate_const< std::shared_ptr< DuplicateChecker > > duplicateChecker_
 
edm::propagate_const< TClass * > edProductClass_
 
bool enforceGUIDInFileName_
 
EventAuxiliary eventAux_
 
edm::propagate_const< TTree * > eventHistoryTree_
 
std::vector< EventProcessHistoryIDeventProcessHistoryIDs_
 
std::vector< EventProcessHistoryID >::const_iterator eventProcessHistoryIter_
 
std::vector< edm::propagate_const< std::shared_ptr< ProductProvenanceRetriever > > > eventProductProvenanceRetrievers_
 
EventSelectionIDVector eventSelectionIDs_
 
edm::propagate_const< std::shared_ptr< EventSkipperByID > > eventSkipperByID_
 
RootTree eventTree_
 
FileID fid_
 
const std::string file_
 
FileFormatVersion fileFormatVersion_
 
edm::propagate_const< std::shared_ptr< InputFile > > filePtr_
 
edm::propagate_const< std::unique_ptr< ThinnedAssociationsHelper > > fileThinnedAssociationsHelper_
 
std::array< bool, NumBranchTypeshasNewlyDroppedBranch_
 
edm::propagate_const< std::unique_ptr< History > > history_
 
IndexIntoFileindexIntoFile_
 
IndexIntoFile::IndexIntoFileItr indexIntoFileBegin_
 
IndexIntoFile::IndexIntoFileItr indexIntoFileEnd_
 
IndexIntoFile::IndexIntoFileItr indexIntoFileIter_
 
edm::propagate_const< std::shared_ptr< IndexIntoFile > > indexIntoFileSharedPtr_
 
InputType inputType_
 
IndexIntoFile::EntryNumber_t lastEventEntryNumberRead_
 
const std::string logicalFile_
 
RootTree lumiTree_
 
std::map< std::string, std::string > newBranchToOldBranch_
 
bool noEventSort_
 
std::vector< ProcessHistoryID > & orderedProcessHistoryIDs_
 
std::vector< ParentageIDparentageIDLookup_
 
ProcessConfiguration const & processConfiguration_
 
edm::propagate_const< ProcessHistoryRegistry * > processHistoryRegistry_
 
InputSource::ProcessingMode processingMode_
 
std::shared_ptr< ProductRegistry const > productRegistry_
 
edm::propagate_const< std::unique_ptr< ProvenanceAdaptor > > provenanceAdaptor_
 
edm::propagate_const< std::unique_ptr< MakeProvenanceReader > > provenanceReaderMaker_
 
edm::propagate_const< RunHelperBase * > runHelper_
 
RootTree runTree_
 
edm::propagate_const< std::shared_ptr< RunAuxiliary > > savedRunAuxiliary_
 
bool skipAnyEvents_
 
edm::propagate_const< std::unique_ptr< StoredMergeableRunProductMetadata > > storedMergeableRunProductMetadata_
 
edm::propagate_const< std::shared_ptr< ThinnedAssociationsHelper > > thinnedAssociationsHelper_
 
RootTreePtrArray treePointers_
 
int whyNotFastClonable_
 

Detailed Description

Definition at line 63 of file RootFile.h.

Member Typedef Documentation

◆ RootTreePtrArray

Definition at line 65 of file RootFile.h.

Constructor & Destructor Documentation

◆ RootFile() [1/4]

edm::RootFile::RootFile ( std::string const &  fileName,
ProcessConfiguration const &  processConfiguration,
std::string const &  logicalFileName,
std::shared_ptr< InputFile filePtr,
std::shared_ptr< EventSkipperByID eventSkipperByID,
bool  skipAnyEvents,
int  remainingEvents,
int  remainingLumis,
unsigned int  nStreams,
unsigned int  treeCacheSize,
int  treeMaxVirtualSize,
InputSource::ProcessingMode  processingMode,
RunHelperBase runHelper,
bool  noEventSort,
ProductSelectorRules const &  productSelectorRules,
InputType  inputType,
std::shared_ptr< BranchIDListHelper branchIDListHelper,
std::shared_ptr< ThinnedAssociationsHelper thinnedAssociationsHelper,
std::vector< BranchID > const *  associationsFromSecondary,
std::shared_ptr< DuplicateChecker duplicateChecker,
bool  dropDescendantsOfDroppedProducts,
ProcessHistoryRegistry processHistoryRegistry,
std::vector< std::shared_ptr< IndexIntoFile >> const &  indexesIntoFiles,
std::vector< std::shared_ptr< IndexIntoFile >>::size_type  currentIndexIntoFile,
std::vector< ProcessHistoryID > &  orderedProcessHistoryIDs,
bool  bypassVersionCheck,
bool  labelRawDataLikeMC,
bool  usingGoToEvent,
bool  enablePrefetching,
bool  enforceGUIDInFileName 
)

Definition at line 141 of file RootFile.cc.

171  : file_(fileName),
172  logicalFile_(logicalFileName),
173  processConfiguration_(processConfiguration),
174  processHistoryRegistry_(&processHistoryRegistry),
175  filePtr_(filePtr),
176  eventSkipperByID_(eventSkipperByID),
178  fid_(),
179  indexIntoFileSharedPtr_(new IndexIntoFile),
181  orderedProcessHistoryIDs_(orderedProcessHistoryIDs),
186  storedMergeableRunProductMetadata_((inputType == InputType::Primary) ? new StoredMergeableRunProductMetadata
187  : nullptr),
191  skipAnyEvents_(skipAnyEvents),
193  enforceGUIDInFileName_(enforceGUIDInFileName),
197  eventAux_(),
198  eventTree_(filePtr,
199  InEvent,
200  nStreams,
201  treeMaxVirtualSize,
202  treeCacheSize,
204  enablePrefetching,
205  inputType),
206  lumiTree_(filePtr,
207  InLumi,
208  1,
209  treeMaxVirtualSize,
212  enablePrefetching,
213  inputType),
214  runTree_(filePtr,
215  InRun,
216  1,
217  treeMaxVirtualSize,
220  enablePrefetching,
221  inputType),
222  treePointers_(),
225  branchIDLists_(),
228  thinnedAssociationsHelper_(thinnedAssociationsHelper),
230  runHelper_(runHelper),
232  eventHistoryTree_(nullptr),
235  history_(),
236  branchChildren_(new BranchChildren),
237  duplicateChecker_(duplicateChecker),
243  edProductClass_(TypeWithDict::byName("edm::WrapperBase").getClass()),
244  inputType_(inputType) {
245  hasNewlyDroppedBranch_.fill(false);
246 
250 
251  // Read the metadata tree.
252  // We use a smart pointer so the tree will be deleted after use, and not kept for the life of the file.
253  std::unique_ptr<TTree> metaDataTree(dynamic_cast<TTree*>(filePtr_->Get(poolNames::metaDataTreeName().c_str())));
254  if (nullptr == metaDataTree.get()) {
256  << "Could not find tree " << poolNames::metaDataTreeName() << " in the input file.\n";
257  }
258 
259  // To keep things simple, we just read in every possible branch that exists.
260  // We don't pay attention to which branches exist in which file format versions
261 
262  FileFormatVersion* fftPtr = &fileFormatVersion_;
263  if (metaDataTree->FindBranch(poolNames::fileFormatVersionBranchName().c_str()) != nullptr) {
264  TBranch* fft = metaDataTree->GetBranch(poolNames::fileFormatVersionBranchName().c_str());
265  fft->SetAddress(&fftPtr);
266  roottree::getEntry(fft, 0);
267  metaDataTree->SetBranchAddress(poolNames::fileFormatVersionBranchName().c_str(), &fftPtr);
268  }
269 
270  FileID* fidPtr = &fid_;
271  if (metaDataTree->FindBranch(poolNames::fileIdentifierBranchName().c_str()) != nullptr) {
272  metaDataTree->SetBranchAddress(poolNames::fileIdentifierBranchName().c_str(), &fidPtr);
273  }
274 
275  IndexIntoFile* iifPtr = &indexIntoFile_;
276  if (metaDataTree->FindBranch(poolNames::indexIntoFileBranchName().c_str()) != nullptr) {
277  metaDataTree->SetBranchAddress(poolNames::indexIntoFileBranchName().c_str(), &iifPtr);
278  }
279 
280  StoredMergeableRunProductMetadata* smrc = nullptr;
281  if (inputType == InputType::Primary) {
283  if (metaDataTree->FindBranch(poolNames::mergeableRunProductMetadataBranchName().c_str()) != nullptr) {
284  metaDataTree->SetBranchAddress(poolNames::mergeableRunProductMetadataBranchName().c_str(), &smrc);
285  }
286  }
287 
288  // Need to read to a temporary registry so we can do a translation of the BranchKeys.
289  // This preserves backward compatibility against friendly class name algorithm changes.
290  ProductRegistry inputProdDescReg;
291  ProductRegistry* ppReg = &inputProdDescReg;
292  metaDataTree->SetBranchAddress(poolNames::productDescriptionBranchName().c_str(), (&ppReg));
293 
294  typedef std::map<ParameterSetID, ParameterSetBlob> PsetMap;
295  PsetMap psetMap;
296  PsetMap* psetMapPtr = &psetMap;
297  if (metaDataTree->FindBranch(poolNames::parameterSetMapBranchName().c_str()) != nullptr) {
298  //backward compatibility
299  assert(!fileFormatVersion().parameterSetsTree());
300  metaDataTree->SetBranchAddress(poolNames::parameterSetMapBranchName().c_str(), &psetMapPtr);
301  } else {
302  assert(fileFormatVersion().parameterSetsTree());
303  // We use a smart pointer so the tree will be deleted after use, and not kept for the life of the file.
304  std::unique_ptr<TTree> psetTree(dynamic_cast<TTree*>(filePtr_->Get(poolNames::parameterSetsTreeName().c_str())));
305  if (nullptr == psetTree.get()) {
307  << "Could not find tree " << poolNames::parameterSetsTreeName() << " in the input file.\n";
308  }
309 
310  typedef std::pair<ParameterSetID, ParameterSetBlob> IdToBlobs;
311  IdToBlobs idToBlob;
312  IdToBlobs* pIdToBlob = &idToBlob;
313  psetTree->SetBranchAddress(poolNames::idToParameterSetBlobsBranchName().c_str(), &pIdToBlob);
314 
315  std::unique_ptr<TTreeCache> psetTreeCache =
317  psetTreeCache->SetEnablePrefetching(false);
318  filePtr_->SetCacheRead(psetTreeCache.get());
319  for (Long64_t i = 0; i != psetTree->GetEntries(); ++i) {
320  psetTree->GetEntry(i);
321  psetMap.insert(idToBlob);
322  }
323  filePtr_->SetCacheRead(nullptr);
324  }
325 
326  // backward compatibility
328  ProcessHistoryRegistry::collection_type* pHistMapPtr = &pHistMap;
329  if (metaDataTree->FindBranch(poolNames::processHistoryMapBranchName().c_str()) != nullptr) {
330  metaDataTree->SetBranchAddress(poolNames::processHistoryMapBranchName().c_str(), &pHistMapPtr);
331  }
332 
334  ProcessHistoryRegistry::vector_type* pHistVectorPtr = &pHistVector;
335  if (metaDataTree->FindBranch(poolNames::processHistoryBranchName().c_str()) != nullptr) {
336  metaDataTree->SetBranchAddress(poolNames::processHistoryBranchName().c_str(), &pHistVectorPtr);
337  }
338 
339  // backward compatibility
340  ProcessConfigurationVector processConfigurations;
341  ProcessConfigurationVector* procConfigVectorPtr = &processConfigurations;
342  if (metaDataTree->FindBranch(poolNames::processConfigurationBranchName().c_str()) != nullptr) {
343  metaDataTree->SetBranchAddress(poolNames::processConfigurationBranchName().c_str(), &procConfigVectorPtr);
344  }
345 
346  auto branchIDListsAPtr = std::make_unique<BranchIDLists>();
347  BranchIDLists* branchIDListsPtr = branchIDListsAPtr.get();
348  if (metaDataTree->FindBranch(poolNames::branchIDListBranchName().c_str()) != nullptr) {
349  metaDataTree->SetBranchAddress(poolNames::branchIDListBranchName().c_str(), &branchIDListsPtr);
350  }
351 
352  if (inputType != InputType::SecondarySource) {
354  std::make_unique<ThinnedAssociationsHelper>(); // propagate_const<T> has no reset() function
355  ThinnedAssociationsHelper* thinnedAssociationsHelperPtr = fileThinnedAssociationsHelper_.get();
356  if (metaDataTree->FindBranch(poolNames::thinnedAssociationsHelperBranchName().c_str()) != nullptr) {
357  metaDataTree->SetBranchAddress(poolNames::thinnedAssociationsHelperBranchName().c_str(),
358  &thinnedAssociationsHelperPtr);
359  }
360  }
361 
362  BranchChildren* branchChildrenBuffer = branchChildren_.get();
363  if (metaDataTree->FindBranch(poolNames::productDependenciesBranchName().c_str()) != nullptr) {
364  metaDataTree->SetBranchAddress(poolNames::productDependenciesBranchName().c_str(), &branchChildrenBuffer);
365  }
366 
367  // backward compatibility
368  std::vector<EventProcessHistoryID>* eventHistoryIDsPtr = &eventProcessHistoryIDs_;
369  if (metaDataTree->FindBranch(poolNames::eventHistoryBranchName().c_str()) != nullptr) {
370  metaDataTree->SetBranchAddress(poolNames::eventHistoryBranchName().c_str(), &eventHistoryIDsPtr);
371  }
372 
373  if (metaDataTree->FindBranch(poolNames::moduleDescriptionMapBranchName().c_str()) != nullptr) {
374  if (metaDataTree->GetBranch(poolNames::moduleDescriptionMapBranchName().c_str())->GetSplitLevel() != 0) {
375  metaDataTree->SetBranchStatus((poolNames::moduleDescriptionMapBranchName() + ".*").c_str(), false);
376  } else {
377  metaDataTree->SetBranchStatus(poolNames::moduleDescriptionMapBranchName().c_str(), false);
378  }
379  }
380 
381  // Here we read the metadata tree
382  roottree::getEntry(metaDataTree.get(), 0);
383 
385 
386  // Here we read the event history tree, if we have one.
388 
390  if (!fileFormatVersion().triggerPathsTracked()) {
391  ParameterSetConverter converter(psetMap, psetIdConverter, fileFormatVersion().parameterSetsByReference());
392  } else {
393  // Merge into the parameter set registry.
394  pset::Registry& psetRegistry = *pset::Registry::instance();
395  for (auto const& psetEntry : psetMap) {
396  ParameterSet pset(psetEntry.second.pset());
397  pset.setID(psetEntry.first);
398  // For thread safety, don't update global registries when a secondary source opens a file.
399  if (inputType != InputType::SecondarySource) {
400  psetRegistry.insertMapped(pset);
401  }
402  }
403  }
404  if (!fileFormatVersion().splitProductIDs()) {
405  // Old provenance format input file. Create a provenance adaptor.
406  // propagate_const<T> has no reset() function
407  provenanceAdaptor_ = std::make_unique<ProvenanceAdaptor>(
408  inputProdDescReg, pHistMap, pHistVector, processConfigurations, psetIdConverter, true);
409  // Fill in the branchIDLists branch from the provenance adaptor
410  branchIDLists_ = provenanceAdaptor_->branchIDLists();
411  } else {
412  if (!fileFormatVersion().triggerPathsTracked()) {
413  // New provenance format, but change in ParameterSet Format. Create a provenance adaptor.
414  // propagate_const<T> has no reset() function
415  provenanceAdaptor_ = std::make_unique<ProvenanceAdaptor>(
416  inputProdDescReg, pHistMap, pHistVector, processConfigurations, psetIdConverter, false);
417  }
418  // New provenance format input file. The branchIDLists branch was read directly from the input file.
419  if (metaDataTree->FindBranch(poolNames::branchIDListBranchName().c_str()) == nullptr) {
420  throw Exception(errors::EventCorruption) << "Failed to find branchIDLists branch in metaData tree.\n";
421  }
422  branchIDLists_.reset(branchIDListsAPtr.release());
423  }
424 
426  if (metaDataTree->FindBranch(poolNames::thinnedAssociationsHelperBranchName().c_str()) == nullptr) {
428  << "Failed to find thinnedAssociationsHelper branch in metaData tree.\n";
429  }
430  }
431 
432  if (!bypassVersionCheck) {
433  checkReleaseVersion(pHistVector, file());
434  }
435 
436  if (labelRawDataLikeMC) {
437  std::string const rawData("FEDRawDataCollection");
438  std::string const source("source");
439  ProductRegistry::ProductList& pList = inputProdDescReg.productListUpdator();
440  BranchKey finder(rawData, source, "", "");
441  ProductRegistry::ProductList::iterator it = pList.lower_bound(finder);
442  if (it != pList.end() && it->first.friendlyClassName() == rawData && it->first.moduleLabel() == source) {
443  // We found raw data with a module label of source.
444  // We need to change the module label and process name.
445  // Create helper.
446  it->second.init();
447  // propagate_const<T> has no reset() function
448  daqProvenanceHelper_ = std::make_unique<DaqProvenanceHelper>(it->second.unwrappedTypeID());
449  // Create the new branch description
450  BranchDescription const& newBD = daqProvenanceHelper_->branchDescription();
451  // Save info from the old and new branch descriptions
452  daqProvenanceHelper_->saveInfo(it->second, newBD);
453  // Map the new branch name to the old branch name.
454  newBranchToOldBranch_.insert(std::make_pair(newBD.branchName(), it->second.branchName()));
455  // Remove the old branch description from the product Registry.
456  pList.erase(it);
457  // Check that there was only one.
458  it = pList.lower_bound(finder);
459  assert(!(it != pList.end() && it->first.friendlyClassName() == rawData && it->first.moduleLabel() == source));
460  // Insert the new branch description into the product registry.
461  inputProdDescReg.copyProduct(newBD);
462  // Fix up other per file metadata.
463  daqProvenanceHelper_->fixMetaData(processConfigurations, pHistVector);
464  daqProvenanceHelper_->fixMetaData(*branchIDLists_);
465  daqProvenanceHelper_->fixMetaData(*branchChildren_);
466  }
467  }
468 
469  for (auto const& history : pHistVector) {
470  processHistoryRegistry.registerProcessHistory(history);
471  }
472 
474 
475  // Update the branch id info. This has to be done before validateFile since
476  // depending on the file format, the branchIDListHelper_ may have its fixBranchListIndexes call made
477  if (inputType == InputType::Primary) {
479  }
480 
481  validateFile(inputType, usingGoToEvent);
482 
483  // Here, we make the class that will make the ProvenanceReader
484  // It reads whatever trees it needs.
485  // propagate_const<T> has no reset() function
486  provenanceReaderMaker_ = std::unique_ptr<MakeProvenanceReader>(makeProvenanceReaderMaker(inputType).release());
487 
488  // Merge into the hashed registries.
489  if (eventSkipperByID_ && eventSkipperByID_->somethingToSkip()) {
491  }
492 
493  initializeDuplicateChecker(indexesIntoFiles, currentIndexIntoFile);
500 
501  // Set product presence information in the product registry.
502  ProductRegistry::ProductList& pList = inputProdDescReg.productListUpdator();
503  for (auto& product : pList) {
504  BranchDescription& prod = product.second;
505  prod.init();
506  treePointers_[prod.branchType()]->setPresence(prod, newBranchToOldBranch(prod.branchName()));
507  }
508 
509  auto newReg = std::make_unique<ProductRegistry>();
510 
511  // Do the translation from the old registry to the new one
512  {
513  ProductRegistry::ProductList const& prodList = inputProdDescReg.productList();
514  for (auto const& product : prodList) {
515  BranchDescription const& prod = product.second;
516  std::string newFriendlyName = friendlyname::friendlyName(prod.className());
517  if (newFriendlyName == prod.friendlyClassName()) {
518  newReg->copyProduct(prod);
519  } else {
520  if (fileFormatVersion().splitProductIDs()) {
522  << "Cannot change friendly class name algorithm without more development work\n"
523  << "to update BranchIDLists and ThinnedAssociationsHelper. Contact the framework group.\n";
524  }
525  BranchDescription newBD(prod);
526  newBD.updateFriendlyClassName();
527  newReg->copyProduct(newBD);
528  newBranchToOldBranch_.insert(std::make_pair(newBD.branchName(), prod.branchName()));
529  }
530  }
531  dropOnInput(*newReg, productSelectorRules, dropDescendants, inputType);
532  if (inputType == InputType::SecondaryFile) {
533  thinnedAssociationsHelper->updateFromSecondaryInput(*fileThinnedAssociationsHelper_,
534  *associationsFromSecondary);
535  } else if (inputType == InputType::Primary) {
536  thinnedAssociationsHelper->updateFromPrimaryInput(*fileThinnedAssociationsHelper_);
537  }
538 
539  if (inputType == InputType::Primary) {
540  for (auto& product : newReg->productListUpdator()) {
541  setIsMergeable(product.second);
542  }
543  }
544 
545  // freeze the product registry
546  newReg->setFrozen(inputType != InputType::Primary);
547  productRegistry_.reset(newReg.release());
548  }
549 
550  // Set up information from the product registry.
551  ProductRegistry::ProductList const& prodList = productRegistry()->productList();
552 
553  {
554  std::array<size_t, NumBranchTypes> nBranches;
555  nBranches.fill(0);
556  for (auto const& product : prodList) {
557  ++nBranches[product.second.branchType()];
558  }
559 
560  int i = 0;
561  for (auto t : treePointers_) {
562  t->numberOfBranchesToAdd(nBranches[i]);
563  ++i;
564  }
565  }
566  for (auto const& product : prodList) {
567  BranchDescription const& prod = product.second;
568  treePointers_[prod.branchType()]->addBranch(prod, newBranchToOldBranch(prod.branchName()));
569  }
570 
571  // Determine if this file is fast clonable.
572  setIfFastClonable(remainingEvents, remainingLumis);
573 
574  // We are done with our initial reading of EventAuxiliary.
576 
577  // Tell the event tree to begin training at the next read.
579 
580  // Train the run and lumi trees.
581  runTree_.trainCache("*");
582  lumiTree_.trainCache("*");
583  }

References cms::cuda::assert(), edm::IndexIntoFile::begin(), branchChildren_, edm::poolNames::branchIDListBranchName(), branchIDListHelper_, branchIDLists_, branchListIndexesUnchanged_, edm::BranchDescription::branchName(), edm::BranchTypeToAuxiliaryBranchName(), edm::ProductRegistry::copyProduct(), daqProvenanceHelper_, edm::roottree::defaultNonEventCacheSize, edm::IndexIntoFile::doneFileInitialization(), dropOnInput(), edm::IndexIntoFile::end(), edm::errors::EventCorruption, edm::poolNames::eventHistoryBranchName(), eventProcessHistoryIDs_, eventProcessHistoryIter_, eventSkipperByID_, edm::FileBlock::EventsOrLumisSelectedByID, eventTree_, Exception, fid_, file(), fileFormatVersion(), fileFormatVersion_, edm::poolNames::fileFormatVersionBranchName(), edm::poolNames::fileIdentifierBranchName(), filePtr_, edm::errors::FileReadError, fileThinnedAssociationsHelper_, HLT_2018_cff::finder, edm::IndexIntoFile::firstAppearanceOrder, edm::friendlyname::friendlyName(), edm::roottree::getEntry(), hasNewlyDroppedBranch_, edm::FileFormatVersion::hasThinnedAssociations(), mps_fire::i, edm::poolNames::idToParameterSetBlobsBranchName(), indexIntoFile_, indexIntoFileBegin_, edm::poolNames::indexIntoFileBranchName(), indexIntoFileEnd_, indexIntoFileIter_, edm::InEvent, initializeDuplicateChecker(), edm::InLumi, edm::InRun, edm::pset::Registry::insertMapped(), edm::pset::Registry::instance(), lumiTree_, makeProvenanceReaderMaker(), edm::poolNames::mergeableRunProductMetadataBranchName(), edm::poolNames::metaDataTreeName(), edm::poolNames::moduleDescriptionMapBranchName(), newBranchToOldBranch(), newBranchToOldBranch_, benchmark-oval_cfg::noEventSort, edm::IndexIntoFile::numericalOrder, edm::poolNames::parameterSetMapBranchName(), edm::poolNames::parameterSetsTreeName(), edm::Primary, edm::poolNames::processConfigurationBranchName(), edm::poolNames::processHistoryBranchName(), edm::poolNames::processHistoryMapBranchName(), dumpMFGeometry_cfg::prod, edm::poolNames::productDependenciesBranchName(), edm::poolNames::productDescriptionBranchName(), edm::ProductRegistry::productList(), edm::ProductRegistry::productListUpdator(), productRegistry(), productRegistry_, provenanceAdaptor_, provenanceReaderMaker_, muonDTDigis_cfi::pset, l1tstage2_dqm_sourceclient-live_cfg::rawData, readEventHistoryTree(), edm::ProcessHistoryRegistry::registerProcessHistory(), fetchall_from_DQM_v2::release, edm::RootTree::resetTraining(), edm::IndexIntoFile::IndexIntoFileItr::run(), runHelper_, runTree_, edm::SecondaryFile, edm::SecondarySource, setIfFastClonable(), edm::setIsMergeable(), edm::source(), storedMergeableRunProductMetadata_, AlCaHLTBitMon_QueryRunRegistry::string, OrderedSet::t, edm::poolNames::thinnedAssociationsHelperBranchName(), edm::RootTree::trainCache(), edm::roottree::trainCache(), treePointers_, edm::errors::UnimplementedFeature, edm::BranchDescription::updateFriendlyClassName(), validateFile(), and whyNotFastClonable_.

◆ RootFile() [2/4]

edm::RootFile::RootFile ( std::string const &  fileName,
ProcessConfiguration const &  processConfiguration,
std::string const &  logicalFileName,
std::shared_ptr< InputFile filePtr,
unsigned int  nStreams,
int  treeMaxVirtualSize,
InputSource::ProcessingMode  processingMode,
RunHelperBase runHelper,
ProductSelectorRules const &  productSelectorRules,
InputType  inputType,
std::shared_ptr< BranchIDListHelper branchIDListHelper,
std::shared_ptr< ThinnedAssociationsHelper thinnedAssociationsHelper,
std::vector< BranchID > const *  associationsFromSecondary,
bool  dropDescendantsOfDroppedProducts,
ProcessHistoryRegistry processHistoryRegistry,
std::vector< std::shared_ptr< IndexIntoFile >> const &  indexesIntoFiles,
std::vector< std::shared_ptr< IndexIntoFile >>::size_type  currentIndexIntoFile,
std::vector< ProcessHistoryID > &  orderedProcessHistoryIDs,
bool  bypassVersionCheck,
bool  labelRawDataLikeMC,
bool  enablePrefetching,
bool  enforceGUIDInFileName 
)
inline

Definition at line 97 of file RootFile.h.

119  : RootFile(fileName,
120  processConfiguration,
121  logicalFileName,
122  filePtr,
123  nullptr,
124  false,
125  -1,
126  -1,
127  nStreams,
128  0U,
129  treeMaxVirtualSize,
131  runHelper,
132  false,
133  productSelectorRules,
134  inputType,
136  thinnedAssociationsHelper,
137  associationsFromSecondary,
138  nullptr,
139  dropDescendantsOfDroppedProducts,
140  processHistoryRegistry,
141  indexesIntoFiles,
142  currentIndexIntoFile,
143  orderedProcessHistoryIDs,
144  bypassVersionCheck,
145  labelRawDataLikeMC,
146  false,
147  enablePrefetching,
148  enforceGUIDInFileName) {}

◆ RootFile() [3/4]

edm::RootFile::RootFile ( std::string const &  fileName,
ProcessConfiguration const &  processConfiguration,
std::string const &  logicalFileName,
std::shared_ptr< InputFile filePtr,
unsigned int  nStreams,
unsigned int  treeCacheSize,
int  treeMaxVirtualSize,
RunHelperBase runHelper,
ProductSelectorRules const &  productSelectorRules,
InputType  inputType,
ProcessHistoryRegistry processHistoryRegistry,
std::vector< std::shared_ptr< IndexIntoFile >> const &  indexesIntoFiles,
std::vector< std::shared_ptr< IndexIntoFile >>::size_type  currentIndexIntoFile,
std::vector< ProcessHistoryID > &  orderedProcessHistoryIDs,
bool  bypassVersionCheck,
bool  enablePrefetching,
bool  enforceGUIDInFileName 
)
inline

Definition at line 150 of file RootFile.h.

167  : RootFile(fileName,
168  processConfiguration,
169  logicalFileName,
170  filePtr,
171  nullptr,
172  false,
173  -1,
174  -1,
175  nStreams,
176  treeCacheSize,
177  treeMaxVirtualSize,
179  runHelper,
180  false,
181  productSelectorRules,
182  inputType,
183  nullptr,
184  nullptr,
185  nullptr,
186  nullptr,
187  false,
188  processHistoryRegistry,
189  indexesIntoFiles,
190  currentIndexIntoFile,
191  orderedProcessHistoryIDs,
192  bypassVersionCheck,
193  false,
194  false,
195  enablePrefetching,
196  enforceGUIDInFileName) {}

◆ ~RootFile()

edm::RootFile::~RootFile ( )

Definition at line 585 of file RootFile.cc.

585 {}

◆ RootFile() [4/4]

edm::RootFile::RootFile ( RootFile const &  )
delete

Member Function Documentation

◆ branchChildren() [1/2]

std::shared_ptr<BranchChildren>& edm::RootFile::branchChildren ( )
inlineprivate

Definition at line 304 of file RootFile.h.

References branchChildren_, and edm::get_underlying_safe().

◆ branchChildren() [2/2]

std::shared_ptr<BranchChildren const> edm::RootFile::branchChildren ( ) const
inlineprivate

Definition at line 303 of file RootFile.h.

References branchChildren_, and edm::get_underlying_safe().

Referenced by createFileBlock().

◆ branchIDListHelper() [1/2]

std::shared_ptr<BranchIDListHelper>& edm::RootFile::branchIDListHelper ( )
inline

Definition at line 256 of file RootFile.h.

References branchIDListHelper_, and edm::get_underlying_safe().

◆ branchIDListHelper() [2/2]

std::shared_ptr<BranchIDListHelper const> edm::RootFile::branchIDListHelper ( ) const
inline

Definition at line 253 of file RootFile.h.

253  {
255  }

References branchIDListHelper_, and edm::get_underlying_safe().

◆ branchListIndexesUnchanged()

bool edm::RootFile::branchListIndexesUnchanged ( ) const
inline

Definition at line 227 of file RootFile.h.

227 { return branchListIndexesUnchanged_; }

References branchListIndexesUnchanged_.

Referenced by createFileBlock().

◆ close()

void edm::RootFile::close ( void  )

Definition at line 1199 of file RootFile.cc.

1199  {
1200  // Just to play it safe, zero all pointers to objects in the InputFile to be closed.
1201  eventHistoryTree_ = nullptr;
1202  for (auto& treePointer : treePointers_) {
1203  treePointer->close();
1204  treePointer = nullptr;
1205  }
1206  filePtr_->Close();
1207  filePtr_ = nullptr; // propagate_const<T> has no reset() function
1208  }

References eventHistoryTree_, filePtr_, and treePointers_.

Referenced by esMonitoring.AsyncLineReaderMixin::handle_close(), and esMonitoring.FDJsonServer::handle_close().

◆ containsItem()

bool edm::RootFile::containsItem ( RunNumber_t  run,
LuminosityBlockNumber_t  lumi,
EventNumber_t  event 
) const

Definition at line 797 of file RootFile.cc.

797  {
799  }

References edm::IndexIntoFile::containsItem(), indexIntoFile_, and writedatasetfile::run.

◆ createFileBlock()

std::unique_ptr< FileBlock > edm::RootFile::createFileBlock ( ) const

◆ dropOnInput()

void edm::RootFile::dropOnInput ( ProductRegistry reg,
ProductSelectorRules const &  rules,
bool  dropDescendants,
InputType  inputType 
)
private

Definition at line 1701 of file RootFile.cc.

1704  {
1705  // This is the selector for drop on input.
1706  ProductSelector productSelector;
1707  productSelector.initialize(rules, reg.allBranchDescriptions());
1708 
1709  std::vector<BranchDescription const*> associationDescriptions;
1710 
1711  ProductRegistry::ProductList& prodList = reg.productListUpdator();
1712  // Do drop on input. On the first pass, just fill in a set of branches to be dropped.
1713  std::set<BranchID> branchesToDrop;
1714  std::map<BranchID, BranchID> droppedToKeptAlias;
1715  for (auto const& product : prodList) {
1716  BranchDescription const& prod = product.second;
1717  if (prod.branchID() != prod.originalBranchID() && prod.present()) {
1718  droppedToKeptAlias[prod.originalBranchID()] = prod.branchID();
1719  }
1720  }
1721  for (auto const& product : prodList) {
1722  BranchDescription const& prod = product.second;
1723  // Special handling for ThinnedAssociations
1724  if (prod.unwrappedType() == typeid(ThinnedAssociation) && prod.present()) {
1725  if (inputType != InputType::SecondarySource) {
1726  associationDescriptions.push_back(&prod);
1727  } else {
1728  markBranchToBeDropped(dropDescendants, prod, branchesToDrop, droppedToKeptAlias);
1729  }
1730  } else if (!productSelector.selected(prod)) {
1731  markBranchToBeDropped(dropDescendants, prod, branchesToDrop, droppedToKeptAlias);
1732  }
1733  }
1734 
1735  if (inputType != InputType::SecondarySource) {
1736  // Decide whether to keep the thinned associations and corresponding
1737  // entries in the helper. For secondary source they are all dropped,
1738  // but in other cases we look for thinned collections the associations
1739  // redirect a Ref or Ptr to when dereferencing them.
1740 
1741  // Need a list of kept products in order to determine which thinned associations
1742  // are kept.
1743  std::set<BranchID> keptProductsInEvent;
1744  for (auto const& product : prodList) {
1745  BranchDescription const& prod = product.second;
1746  if (branchesToDrop.find(prod.branchID()) == branchesToDrop.end() && prod.present() &&
1747  prod.branchType() == InEvent) {
1748  keptProductsInEvent.insert(prod.branchID());
1749  }
1750  }
1751 
1752  // Decide which ThinnedAssociations to keep and store the decision in keepAssociation
1753  std::map<BranchID, bool> keepAssociation;
1754  fileThinnedAssociationsHelper_->selectAssociationProducts(
1755  associationDescriptions, keptProductsInEvent, keepAssociation);
1756 
1757  for (auto association : associationDescriptions) {
1758  if (!keepAssociation[association->branchID()]) {
1759  markBranchToBeDropped(dropDescendants, *association, branchesToDrop, droppedToKeptAlias);
1760  }
1761  }
1762 
1763  // Also delete the dropped associations from the ThinnedAssociationsHelper
1764  auto temp = std::make_unique<ThinnedAssociationsHelper>();
1765  for (auto const& associationBranches : fileThinnedAssociationsHelper_->data()) {
1766  auto iter = keepAssociation.find(associationBranches.association());
1767  if (iter != keepAssociation.end() && iter->second) {
1768  temp->addAssociation(associationBranches);
1769  }
1770  }
1771  // propagate_const<T> has no reset() function
1772  fileThinnedAssociationsHelper_ = std::unique_ptr<ThinnedAssociationsHelper>(temp.release());
1773  }
1774 
1775  // On this pass, actually drop the branches.
1776  std::set<BranchID>::const_iterator branchesToDropEnd = branchesToDrop.end();
1777  for (ProductRegistry::ProductList::iterator it = prodList.begin(), itEnd = prodList.end(); it != itEnd;) {
1778  BranchDescription const& prod = it->second;
1779  bool drop = branchesToDrop.find(prod.branchID()) != branchesToDropEnd;
1780  if (drop) {
1781  if (!prod.dropped()) {
1782  if (productSelector.selected(prod) && prod.unwrappedType() != typeid(ThinnedAssociation)) {
1783  LogWarning("RootFile") << "Branch '" << prod.branchName() << "' is being dropped from the input\n"
1784  << "of file '" << file_ << "' because it is dependent on a branch\n"
1785  << "that was explicitly dropped.\n";
1786  }
1787  treePointers_[prod.branchType()]->dropBranch(newBranchToOldBranch(prod.branchName()));
1788  hasNewlyDroppedBranch_[prod.branchType()] = true;
1789  }
1790  ProductRegistry::ProductList::iterator icopy = it;
1791  ++it;
1792  prodList.erase(icopy);
1793  } else {
1794  ++it;
1795  }
1796  }
1797 
1798  // Drop on input mergeable run and lumi products, this needs to be invoked for secondary file input
1799  if (inputType == InputType::SecondaryFile) {
1800  TString tString;
1801  for (ProductRegistry::ProductList::iterator it = prodList.begin(), itEnd = prodList.end(); it != itEnd;) {
1802  BranchDescription const& prod = it->second;
1803  if (prod.branchType() != InEvent) {
1804  TClass* cp = prod.wrappedType().getClass();
1805  void* p = cp->New();
1806  int offset = cp->GetBaseClassOffset(edProductClass_);
1807  std::unique_ptr<WrapperBase> edp = getWrapperBasePtr(p, offset);
1808  if (edp->isMergeable()) {
1809  treePointers_[prod.branchType()]->dropBranch(newBranchToOldBranch(prod.branchName()));
1810  ProductRegistry::ProductList::iterator icopy = it;
1811  ++it;
1812  prodList.erase(icopy);
1813  } else {
1814  ++it;
1815  }
1816  } else
1817  ++it;
1818  }
1819  }
1820  }

References edm::ProductRegistry::allBranchDescriptions(), TrackValidation_cff::association, CommonMethods::cp(), drop, edProductClass_, file_, fileThinnedAssociationsHelper_, edm::getWrapperBasePtr(), hasNewlyDroppedBranch_, edm::InEvent, edm::ProductSelector::initialize(), markBranchToBeDropped(), newBranchToOldBranch(), hltrates_dqm_sourceclient-live_cfg::offset, AlCaHLTBitMon_ParallelJobs::p, dumpMFGeometry_cfg::prod, edm::ProductRegistry::productListUpdator(), cmsCodeRulesChecker::rules, edm::SecondaryFile, edm::SecondarySource, edm::ProductSelector::selected(), groupFilesInBlocks::temp, and treePointers_.

Referenced by RootFile().

◆ eventAux()

EventAuxiliary const& edm::RootFile::eventAux ( ) const
inline

◆ eventID()

EventID const& edm::RootFile::eventID ( ) const
inline

Definition at line 220 of file RootFile.h.

220 { return eventAux().id(); }

References eventAux(), and edm::EventAuxiliary::id().

Referenced by goToEvent().

◆ eventProductProvenanceRetriever() [1/2]

std::shared_ptr<ProductProvenanceRetriever>& edm::RootFile::eventProductProvenanceRetriever ( size_t  index)
inlineprivate

◆ eventProductProvenanceRetriever() [2/2]

std::shared_ptr<ProductProvenanceRetriever const> edm::RootFile::eventProductProvenanceRetriever ( size_t  index) const
inlineprivate

◆ eventTree()

RootTree const& edm::RootFile::eventTree ( ) const
inline

Definition at line 221 of file RootFile.h.

221 { return eventTree_; }

References eventTree_.

◆ file()

std::string const& edm::RootFile::file ( ) const
inline

Definition at line 214 of file RootFile.h.

214 { return file_; }

References file_.

Referenced by RootFile().

◆ fileFormatVersion()

FileFormatVersion edm::RootFile::fileFormatVersion ( ) const
inline

◆ fillEventAuxiliary()

bool edm::RootFile::fillEventAuxiliary ( IndexIntoFile::EntryNumber_t  entry)
private

◆ fillEventHistory()

void edm::RootFile::fillEventHistory ( )
private

Definition at line 1237 of file RootFile.cc.

1237  {
1238  // We could consider doing delayed reading, but because we have to
1239  // store this History object in a different tree than the event
1240  // data tree, this is too hard to do in this first version.
1241 
1242  if (fileFormatVersion().eventHistoryBranch()) {
1243  // Lumi block number was not in EventID for the relevant releases.
1244  EventID id(eventAux().id().run(), 0, eventAux().id().event());
1245  if (eventProcessHistoryIter_->eventID() != id) {
1246  EventProcessHistoryID target(id, ProcessHistoryID());
1248  assert(eventProcessHistoryIter_->eventID() == id);
1249  }
1252  } else if (fileFormatVersion().eventHistoryTree()) {
1253  // for backward compatibility.
1254  History* pHistory = history_.get();
1255  TBranch* eventHistoryBranch = eventHistoryTree_->GetBranch(poolNames::eventHistoryBranchName().c_str());
1256  if (!eventHistoryBranch) {
1257  throw Exception(errors::EventCorruption) << "Failed to find history branch in event history tree.\n";
1258  }
1259  eventHistoryBranch->SetAddress(&pHistory);
1261  eventAux_.setProcessHistoryID(history_->processHistoryID());
1262  eventSelectionIDs_.swap(history_->eventSelectionIDs());
1263  branchListIndexes_.swap(history_->branchListIndexes());
1264  } else if (fileFormatVersion().noMetaDataTrees()) {
1265  // Current format
1267  TBranch* eventSelectionIDBranch = eventTree_.tree()->GetBranch(poolNames::eventSelectionsBranchName().c_str());
1268  assert(eventSelectionIDBranch != nullptr);
1269  eventTree_.fillBranchEntry(eventSelectionIDBranch, pESV);
1271  TBranch* branchListIndexesBranch = eventTree_.tree()->GetBranch(poolNames::branchListIndexesBranchName().c_str());
1272  assert(branchListIndexesBranch != nullptr);
1273  eventTree_.fillBranchEntry(branchListIndexesBranch, pBLI);
1274  }
1275  if (provenanceAdaptor_) {
1276  eventAux_.setProcessHistoryID(provenanceAdaptor_->convertID(eventAux().processHistoryID()));
1277  for (auto& esID : eventSelectionIDs_) {
1278  esID = provenanceAdaptor_->convertID(esID);
1279  }
1280  }
1281  if (daqProvenanceHelper_) {
1283  }
1285  // old format. branchListIndexes_ must be filled in from the ProvenanceAdaptor.
1286  provenanceAdaptor_->branchListIndexes(branchListIndexes_);
1287  }
1288  if (branchIDListHelper_) {
1289  branchIDListHelper_->fixBranchListIndexes(branchListIndexes_);
1290  }
1291  }

References cms::cuda::assert(), branchIDListHelper_, branchListIndexes_, edm::poolNames::branchListIndexesBranchName(), daqProvenanceHelper_, edm::RootTree::entryNumber(), event(), eventAux(), eventAux_, edm::errors::EventCorruption, edm::poolNames::eventHistoryBranchName(), edm::FileFormatVersion::eventHistoryTree(), eventHistoryTree_, eventProcessHistoryIDs_, eventProcessHistoryIter_, eventSelectionIDs_, edm::poolNames::eventSelectionsBranchName(), eventTree_, Exception, fileFormatVersion(), edm::RootTree::fillBranchEntry(), edm::roottree::getEntry(), history_, triggerObjects_cff::id, edm::lower_bound_all(), edm::FileFormatVersion::noMetaDataTrees(), edm::EventAuxiliary::processHistoryID(), provenanceAdaptor_, writedatasetfile::run, edm::EventAuxiliary::setProcessHistoryID(), edm::FileFormatVersion::splitProductIDs(), filterCSVwithJSON::target, and edm::RootTree::tree().

Referenced by fillIndexIntoFile(), readCurrentEvent(), and readRunAuxiliary_().

◆ fillIndexIntoFile()

void edm::RootFile::fillIndexIntoFile ( )
private

Definition at line 913 of file RootFile.cc.

913  {
914  // This function is for backward compatibility.
915  // If reading a current format file, indexIntoFile_ is read from the input
916  // file and should always be there. Note that the algorithm below will work
917  // sometimes but often fail with the new format introduced in release 3_8_0.
918  // If it ever becomes necessary to rebuild IndexIntoFile from the new format,
919  // probably a separate function should be written to deal with the task.
920  // This is possible just not implemented yet.
921  assert(!fileFormatVersion().hasIndexIntoFile());
922 
923  typedef std::list<LumiItem> LumiList;
924  LumiList lumis; // (declare 1)
925 
926  typedef std::set<LuminosityBlockID> RunLumiSet;
927  RunLumiSet runLumiSet; // (declare 2)
928 
929  typedef std::list<RunItem> RunList;
930  RunList runs; // (declare 5)
931 
932  typedef std::set<RunNumber_t> RunSet;
933  RunSet runSet; // (declare 4)
934 
935  typedef std::set<RunItem, RunItemSortByRunPhid> RunItemSet;
936  RunItemSet runItemSet; // (declare 3)
937 
938  typedef std::map<RunNumber_t, ProcessHistoryID> PHIDMap;
939  PHIDMap phidMap;
940 
941  RunNumber_t prevRun = 0;
942  LuminosityBlockNumber_t prevLumi = 0;
943  ProcessHistoryID prevPhid;
944  bool iFirst = true;
945 
946  indexIntoFile_.unsortedEventNumbers().clear(); // should already be empty, just being careful
948 
949  // First, loop through the event tree.
950  while (eventTree_.next()) {
951  bool newRun = false;
952  bool newLumi = false;
955 
956  // Save the event numbers as we loop through the event auxiliary to avoid
957  // having to read through the event auxiliary again later. These event numbers
958  // are not actually used in this function, but could be needed elsewhere.
960 
961  ProcessHistoryID reducedPHID = processHistoryRegistry_->reducedProcessHistoryID(eventAux().processHistoryID());
962 
963  if (iFirst || prevPhid != reducedPHID || prevRun != eventAux().run()) {
964  iFirst = false;
965  newRun = newLumi = true;
966  } else if (prevLumi != eventAux().luminosityBlock()) {
967  newLumi = true;
968  }
969  prevPhid = reducedPHID;
970  prevRun = eventAux().run();
971  prevLumi = eventAux().luminosityBlock();
972  if (newLumi) {
973  lumis.emplace_back(
974  reducedPHID, eventAux().run(), eventAux().luminosityBlock(), eventTree_.entryNumber()); // (insert 1)
975  runLumiSet.insert(LuminosityBlockID(eventAux().run(), eventAux().luminosityBlock())); // (insert 2)
976  } else {
977  LumiItem& currentLumi = lumis.back();
978  assert(currentLumi.lastEventEntry_ == eventTree_.entryNumber());
979  ++currentLumi.lastEventEntry_;
980  }
981  if (newRun) {
982  // Insert run in list if it is not already there.
983  RunItem item(reducedPHID, eventAux().run());
984  if (runItemSet.insert(item).second) { // (check 3, insert 3)
985  runs.push_back(std::move(item)); // (insert 5)
986  runSet.insert(eventAux().run()); // (insert 4)
987  phidMap.insert(std::make_pair(eventAux().run(), reducedPHID));
988  }
989  }
990  }
991  // now clean up.
993  eventAux_ = EventAuxiliary();
995 
996  // Loop over run entries and fill information.
997 
998  typedef std::map<RunNumber_t, IndexIntoFile::EntryNumber_t> RunMap;
999  RunMap runMap; // (declare 11)
1000 
1001  typedef std::vector<RunItem> RunVector;
1002  RunVector emptyRuns; // (declare 12)
1003 
1004  if (runTree_.isValid()) {
1005  while (runTree_.next()) {
1006  // Note: adjacent duplicates will be skipped without an explicit check.
1007 
1008  std::shared_ptr<RunAuxiliary> runAux = fillRunAuxiliary();
1009  ProcessHistoryID reducedPHID = processHistoryRegistry_->reducedProcessHistoryID(runAux->processHistoryID());
1010 
1011  if (runSet.insert(runAux->run()).second) { // (check 4, insert 4)
1012  // This run was not associated with any events.
1013  emptyRuns.emplace_back(reducedPHID, runAux->run()); // (insert 12)
1014  }
1015  runMap.insert(std::make_pair(runAux->run(), runTree_.entryNumber())); // (insert 11)
1016  phidMap.insert(std::make_pair(runAux->run(), reducedPHID));
1017  }
1018  // now clean up.
1020  }
1021 
1022  // Insert the ordered empty runs into the run list.
1023  RunItemSortByRun runItemSortByRun;
1024  stable_sort_all(emptyRuns, runItemSortByRun);
1025 
1026  RunList::iterator itRuns = runs.begin(), endRuns = runs.end();
1027  for (auto const& emptyRun : emptyRuns) {
1028  for (; itRuns != endRuns; ++itRuns) {
1029  if (runItemSortByRun(emptyRun, *itRuns)) {
1030  break;
1031  }
1032  }
1033  runs.insert(itRuns, emptyRun);
1034  }
1035 
1036  // Loop over luminosity block entries and fill information.
1037 
1038  typedef std::vector<LumiItem> LumiVector;
1039  LumiVector emptyLumis; // (declare 7)
1040 
1041  typedef std::map<LuminosityBlockID, IndexIntoFile::EntryNumber_t> RunLumiMap;
1042  RunLumiMap runLumiMap; // (declare 6)
1043 
1044  if (lumiTree_.isValid()) {
1045  while (lumiTree_.next()) {
1046  // Note: adjacent duplicates will be skipped without an explicit check.
1047  std::shared_ptr<LuminosityBlockAuxiliary> lumiAux = fillLumiAuxiliary();
1048  LuminosityBlockID lumiID = LuminosityBlockID(lumiAux->run(), lumiAux->luminosityBlock());
1049  if (runLumiSet.insert(lumiID).second) { // (check 2, insert 2)
1050  // This lumi was not associated with any events.
1051  // Use the process history ID from the corresponding run. In cases of practical
1052  // importance, this should be the correct process history ID, but it is possible
1053  // to construct files where this is not the correct process history ID ...
1054  PHIDMap::const_iterator iPhidMap = phidMap.find(lumiAux->run());
1055  assert(iPhidMap != phidMap.end());
1056  emptyLumis.emplace_back(
1057  iPhidMap->second, lumiAux->run(), lumiAux->luminosityBlock(), IndexIntoFile::invalidEntry); // (insert 7)
1058  }
1059  runLumiMap.insert(std::make_pair(lumiID, lumiTree_.entryNumber()));
1060  }
1061  // now clean up.
1063  }
1064 
1065  // Insert the ordered empty lumis into the lumi list.
1066  LumiItemSortByRunLumi lumiItemSortByRunLumi;
1067  stable_sort_all(emptyLumis, lumiItemSortByRunLumi);
1068 
1069  LumiList::iterator itLumis = lumis.begin(), endLumis = lumis.end();
1070  for (auto const& emptyLumi : emptyLumis) {
1071  for (; itLumis != endLumis; ++itLumis) {
1072  if (lumiItemSortByRunLumi(emptyLumi, *itLumis)) {
1073  break;
1074  }
1075  }
1076  lumis.insert(itLumis, emptyLumi);
1077  }
1078 
1079  // Create a map of RunItems that gives the order of first appearance in the list.
1080  // Also fill in the vector of process history IDs
1081  typedef std::map<RunItem, int, RunItemSortByRunPhid> RunCountMap;
1082  RunCountMap runCountMap; // Declare (17)
1083  std::vector<ProcessHistoryID>& phids = indexIntoFile_.setProcessHistoryIDs();
1084  assert(phids.empty());
1085  std::vector<IndexIntoFile::RunOrLumiEntry>& entries = indexIntoFile_.setRunOrLumiEntries();
1086  assert(entries.empty());
1087  int rcount = 0;
1088  for (auto& run : runs) {
1089  RunCountMap::const_iterator countMapItem = runCountMap.find(run);
1090  if (countMapItem == runCountMap.end()) {
1091  countMapItem = runCountMap.insert(std::make_pair(run, rcount)).first; // Insert (17)
1092  assert(countMapItem != runCountMap.end());
1093  ++rcount;
1094  }
1095  std::vector<ProcessHistoryID>::const_iterator phidItem = find_in_all(phids, run.phid_);
1096  if (phidItem == phids.end()) {
1097  phids.push_back(run.phid_);
1098  phidItem = phids.end() - 1;
1099  }
1100  entries.emplace_back(countMapItem->second, // use (17)
1102  runMap[run.run_], // use (11)
1103  phidItem - phids.begin(),
1104  run.run_,
1105  0U,
1108  }
1109 
1110  // Create a map of LumiItems that gives the order of first appearance in the list.
1111  typedef std::map<LumiItem, int, LumiItemSortByRunLumiPhid> LumiCountMap;
1112  LumiCountMap lumiCountMap; // Declare (19)
1113  int lcount = 0;
1114  for (auto& lumi : lumis) {
1115  RunCountMap::const_iterator runCountMapItem = runCountMap.find(RunItem(lumi.phid_, lumi.run_));
1116  assert(runCountMapItem != runCountMap.end());
1117  LumiCountMap::const_iterator countMapItem = lumiCountMap.find(lumi);
1118  if (countMapItem == lumiCountMap.end()) {
1119  countMapItem = lumiCountMap.insert(std::make_pair(lumi, lcount)).first; // Insert (17)
1120  assert(countMapItem != lumiCountMap.end());
1121  ++lcount;
1122  }
1123  std::vector<ProcessHistoryID>::const_iterator phidItem = find_in_all(phids, lumi.phid_);
1124  assert(phidItem != phids.end());
1125  entries.emplace_back(runCountMapItem->second,
1126  countMapItem->second,
1127  runLumiMap[LuminosityBlockID(lumi.run_, lumi.lumi_)],
1128  phidItem - phids.begin(),
1129  lumi.run_,
1130  lumi.lumi_,
1131  lumi.firstEventEntry_,
1132  lumi.lastEventEntry_);
1133  }
1134  stable_sort_all(entries);
1135  }

References cms::cuda::assert(), edm::RootTree::entries(), edm::RootTree::entryNumber(), event(), eventAux(), eventAux_, eventTree_, fileFormatVersion(), fillEventHistory(), fillLumiAuxiliary(), fillRunAuxiliary(), fillThisEventAuxiliary(), edm::find_in_all(), indexIntoFile_, edm::IndexIntoFile::invalidEntry, edm::RootTree::isValid(), B2GTnPMonitor_cfi::item, lastEventEntryNumberRead_, edm::EventAuxiliary::luminosityBlock(), edmLumisInFiles::lumis, lumiTree_, eostools::move(), edm::RootTree::next(), processHistoryRegistry_, writedatasetfile::run, edm::EventAuxiliary::run(), writedatasetfile::runs, runTree_, edm::second(), edm::RootTree::setEntryNumber(), edm::IndexIntoFile::setProcessHistoryIDs(), edm::IndexIntoFile::setRunOrLumiEntries(), edm::stable_sort_all(), mitigatedMETSequence_cff::U, and edm::IndexIntoFile::unsortedEventNumbers().

Referenced by validateFile().

◆ fillLumiAuxiliary()

std::shared_ptr< LuminosityBlockAuxiliary > edm::RootFile::fillLumiAuxiliary ( )
private

Definition at line 1293 of file RootFile.cc.

1293  {
1294  auto lumiAuxiliary = std::make_shared<LuminosityBlockAuxiliary>();
1295  if (fileFormatVersion().newAuxiliary()) {
1296  LuminosityBlockAuxiliary* pLumiAux = lumiAuxiliary.get();
1297  lumiTree_.fillAux<LuminosityBlockAuxiliary>(pLumiAux);
1298  } else {
1299  LuminosityBlockAux lumiAux;
1300  LuminosityBlockAux* pLumiAux = &lumiAux;
1301  lumiTree_.fillAux<LuminosityBlockAux>(pLumiAux);
1302  conversion(lumiAux, *lumiAuxiliary);
1303  }
1304  if (provenanceAdaptor_) {
1305  lumiAuxiliary->setProcessHistoryID(provenanceAdaptor_->convertID(lumiAuxiliary->processHistoryID()));
1306  }
1307  if (daqProvenanceHelper_) {
1308  lumiAuxiliary->setProcessHistoryID(daqProvenanceHelper_->mapProcessHistoryID(lumiAuxiliary->processHistoryID()));
1309  }
1310  if (lumiAuxiliary->luminosityBlock() == 0 && !fileFormatVersion().runsAndLumis()) {
1311  lumiAuxiliary->id() = LuminosityBlockID(RunNumber_t(1), LuminosityBlockNumber_t(1));
1312  }
1313  return lumiAuxiliary;
1314  }

References edm::conversion(), daqProvenanceHelper_, fileFormatVersion(), edm::RootTree::fillAux(), lumiTree_, provenanceAdaptor_, and edm::FileFormatVersion::runsAndLumis().

Referenced by fillIndexIntoFile(), and readLuminosityBlockAuxiliary_().

◆ fillRunAuxiliary()

std::shared_ptr< RunAuxiliary > edm::RootFile::fillRunAuxiliary ( )
private

Definition at line 1316 of file RootFile.cc.

1316  {
1317  auto runAuxiliary = std::make_shared<RunAuxiliary>();
1318  if (fileFormatVersion().newAuxiliary()) {
1319  RunAuxiliary* pRunAux = runAuxiliary.get();
1320  runTree_.fillAux<RunAuxiliary>(pRunAux);
1321  } else {
1322  RunAux runAux;
1323  RunAux* pRunAux = &runAux;
1324  runTree_.fillAux<RunAux>(pRunAux);
1325  conversion(runAux, *runAuxiliary);
1326  }
1327  if (provenanceAdaptor_) {
1328  runAuxiliary->setProcessHistoryID(provenanceAdaptor_->convertID(runAuxiliary->processHistoryID()));
1329  }
1330  if (daqProvenanceHelper_) {
1331  runAuxiliary->setProcessHistoryID(daqProvenanceHelper_->mapProcessHistoryID(runAuxiliary->processHistoryID()));
1332  }
1333  return runAuxiliary;
1334  }

References edm::conversion(), daqProvenanceHelper_, fileFormatVersion(), edm::RootTree::fillAux(), provenanceAdaptor_, and runTree_.

Referenced by fillIndexIntoFile(), and readRunAuxiliary_().

◆ fillThisEventAuxiliary()

void edm::RootFile::fillThisEventAuxiliary ( )
private

Definition at line 1210 of file RootFile.cc.

1210  {
1212  // Already read.
1213  return;
1214  }
1215  if (fileFormatVersion().newAuxiliary()) {
1216  EventAuxiliary* pEvAux = &eventAux_;
1217  eventTree_.fillAux<EventAuxiliary>(pEvAux);
1218  } else {
1219  // for backward compatibility.
1220  EventAux eventAux;
1221  EventAux* pEvAux = &eventAux;
1222  eventTree_.fillAux<EventAux>(pEvAux);
1224  }
1226  }

References edm::conversion(), edm::RootTree::entryNumber(), eventAux(), eventAux_, eventTree_, fileFormatVersion(), edm::RootTree::fillAux(), lastEventEntryNumberRead_, and edm::FileFormatVersion::newAuxiliary().

Referenced by fillEventAuxiliary(), fillIndexIntoFile(), initializeDuplicateChecker(), and readCurrentEvent().

◆ getNextItemType()

IndexIntoFile::EntryType edm::RootFile::getNextItemType ( RunNumber_t run,
LuminosityBlockNumber_t lumi,
EventNumber_t event 
)

Definition at line 801 of file RootFile.cc.

803  {
804  // First, account for consecutive skipped entries.
805  while (skipThisEntry()) {
810  } else {
812  }
813  }
814  // OK, we have an entry that is not skipped.
816  if (entryType == IndexIntoFile::kEnd) {
817  return IndexIntoFile::kEnd;
818  }
819  if (entryType == IndexIntoFile::kRun) {
821  runHelper_->checkForNewRun(run, indexIntoFileIter_.peekAheadAtLumi());
822  return IndexIntoFile::kRun;
823  } else if (processingMode_ == InputSource::Runs) {
825  return getNextItemType(run, lumi, event);
826  }
827  if (entryType == IndexIntoFile::kLumi) {
830  return IndexIntoFile::kLumi;
833  return getNextItemType(run, lumi, event);
834  }
835  if (isDuplicateEvent()) {
837  return getNextItemType(run, lumi, event);
838  }
842  event = eventAux_.event();
843  return IndexIntoFile::kEvent;
844  }

References edm::IndexIntoFile::IndexIntoFileItr::advanceToNextLumiOrRun(), edm::IndexIntoFile::IndexIntoFileItr::advanceToNextRun(), edm::IndexIntoFile::IndexIntoFileItr::entry(), edm::EventAuxiliary::event(), eventAux_, fillEventAuxiliary(), edm::IndexIntoFile::IndexIntoFileItr::getEntryType(), indexIntoFileIter_, isDuplicateEvent(), edm::IndexIntoFile::kEnd, edm::IndexIntoFile::kEvent, edm::IndexIntoFile::kLumi, edm::IndexIntoFile::kRun, edm::IndexIntoFile::IndexIntoFileItr::lumi(), edm::IndexIntoFile::IndexIntoFileItr::peekAheadAtLumi(), processingMode_, writedatasetfile::run, edm::IndexIntoFile::IndexIntoFileItr::run(), runHelper_, edm::InputSource::Runs, edm::InputSource::RunsAndLumis, and skipThisEntry().

◆ goToEvent()

bool edm::RootFile::goToEvent ( EventID const &  eventID)

Definition at line 1392 of file RootFile.cc.

1392  {
1394 
1395  if (duplicateChecker_) {
1396  duplicateChecker_->disable();
1397  }
1398 
1400  if (noEventSort_)
1402 
1403  IndexIntoFile::IndexIntoFileItr iter =
1405 
1406  if (iter == indexIntoFile_.end(sortOrder)) {
1407  return false;
1408  }
1409  indexIntoFileIter_ = iter;
1410  return true;
1411  }

References duplicateChecker_, edm::IndexIntoFile::end(), edm::EventID::event(), eventID(), edm::IndexIntoFile::fillEventNumbers(), edm::IndexIntoFile::findPosition(), edm::IndexIntoFile::firstAppearanceOrder, indexIntoFile_, indexIntoFileIter_, edm::EventID::luminosityBlock(), noEventSort_, edm::IndexIntoFile::numericalOrder, and edm::EventID::run().

◆ hasNewlyDroppedBranch()

std::array<bool, NumBranchTypes> const& edm::RootFile::hasNewlyDroppedBranch ( ) const
inline

Definition at line 226 of file RootFile.h.

226 { return hasNewlyDroppedBranch_; }

References hasNewlyDroppedBranch_.

Referenced by createFileBlock().

◆ indexIntoFileIter()

IndexIntoFile::IndexIntoFileItr edm::RootFile::indexIntoFileIter ( ) const

Definition at line 736 of file RootFile.cc.

736 { return indexIntoFileIter_; }

References indexIntoFileIter_.

◆ indexIntoFileSharedPtr() [1/2]

std::shared_ptr<IndexIntoFile>& edm::RootFile::indexIntoFileSharedPtr ( )
inline

Definition at line 260 of file RootFile.h.

References edm::get_underlying_safe(), and indexIntoFileSharedPtr_.

◆ indexIntoFileSharedPtr() [2/2]

std::shared_ptr<IndexIntoFile const> edm::RootFile::indexIntoFileSharedPtr ( ) const
inline

Definition at line 257 of file RootFile.h.

257  {
259  }

References edm::get_underlying_safe(), and indexIntoFileSharedPtr_.

◆ initAssociationsFromSecondary()

void edm::RootFile::initAssociationsFromSecondary ( std::vector< BranchID > const &  associationsFromSecondary)

Definition at line 742 of file RootFile.cc.

742  {
743  thinnedAssociationsHelper_->initAssociationsFromSecondary(associationsFromSecondary,
745  }

References fileThinnedAssociationsHelper_, and thinnedAssociationsHelper_.

◆ initializeDuplicateChecker()

void edm::RootFile::initializeDuplicateChecker ( std::vector< std::shared_ptr< IndexIntoFile >> const &  indexesIntoFiles,
std::vector< std::shared_ptr< IndexIntoFile >>::size_type  currentIndexIntoFile 
)
private

Definition at line 1677 of file RootFile.cc.

1679  {
1680  if (duplicateChecker_ && !duplicateChecker_->checkDisabled()) {
1681  if (eventTree_.next()) {
1683  duplicateChecker_->inputFileOpened(
1684  eventAux().isRealData(), indexIntoFile_, indexesIntoFiles, currentIndexIntoFile);
1685  }
1687  }
1688  }

References duplicateChecker_, eventAux(), eventTree_, fillThisEventAuxiliary(), indexIntoFile_, edm::IndexIntoFile::invalidEntry, edm::RootTree::next(), and edm::RootTree::setEntryNumber().

Referenced by RootFile().

◆ isDuplicateEvent()

bool edm::RootFile::isDuplicateEvent ( )
private

◆ lumiTree()

RootTree const& edm::RootFile::lumiTree ( ) const
inline

Definition at line 222 of file RootFile.h.

222 { return lumiTree_; }

References lumiTree_.

◆ makeProductProvenanceRetriever()

std::shared_ptr< ProductProvenanceRetriever > edm::RootFile::makeProductProvenanceRetriever ( unsigned int  iStreamIndex)
private

Definition at line 1844 of file RootFile.cc.

1844  {
1845  if (eventProductProvenanceRetrievers_.size() <= iStreamID) {
1846  eventProductProvenanceRetrievers_.resize(iStreamID + 1);
1847  }
1848  if (!eventProductProvenanceRetrievers_[iStreamID]) {
1849  // propagate_const<T> has no reset() function
1850  eventProductProvenanceRetrievers_[iStreamID] = std::make_shared<ProductProvenanceRetriever>(
1852  }
1853  eventProductProvenanceRetrievers_[iStreamID]->reset();
1854  return eventProductProvenanceRetriever(iStreamID);
1855  }

References daqProvenanceHelper_, eventProductProvenanceRetriever(), eventProductProvenanceRetrievers_, eventTree_, and provenanceReaderMaker_.

Referenced by readCurrentEvent().

◆ makeProvenanceReaderMaker()

std::unique_ptr< MakeProvenanceReader > edm::RootFile::makeProvenanceReaderMaker ( InputType  inputType)
private

Definition at line 1828 of file RootFile.cc.

1828  {
1830  readParentageTree(inputType);
1831  return std::make_unique<MakeReducedProvenanceReader>(parentageIDLookup_);
1832  } else if (fileFormatVersion_.splitProductIDs()) {
1833  readParentageTree(inputType);
1834  return std::make_unique<MakeFullProvenanceReader>();
1835  } else if (fileFormatVersion_.perEventProductIDs()) {
1836  auto entryDescriptionMap = std::make_unique<EntryDescriptionMap>();
1837  readEntryDescriptionTree(*entryDescriptionMap, inputType);
1838  return std::make_unique<MakeOldProvenanceReader>(std::move(entryDescriptionMap));
1839  } else {
1840  return std::make_unique<MakeDummyProvenanceReader>();
1841  }
1842  }

References fileFormatVersion_, eostools::move(), parentageIDLookup_, edm::FileFormatVersion::perEventProductIDs(), readEntryDescriptionTree(), readParentageTree(), edm::FileFormatVersion::splitProductIDs(), and edm::FileFormatVersion::storedProductProvenanceUsed().

Referenced by RootFile().

◆ markBranchToBeDropped()

void edm::RootFile::markBranchToBeDropped ( bool  dropDescendants,
BranchDescription const &  branch,
std::set< BranchID > &  branchesToDrop,
std::map< BranchID, BranchID > const &  droppedToKeptAlias 
) const
private

Definition at line 1690 of file RootFile.cc.

1693  {
1694  if (dropDescendants) {
1695  branchChildren_->appendToDescendants(branch, branchesToDrop, droppedToKeptAlias);
1696  } else {
1697  branchesToDrop.insert(branch.branchID());
1698  }
1699  }

References MicroEventContent_cff::branch, and branchChildren_.

Referenced by dropOnInput().

◆ modifiedIDs()

bool edm::RootFile::modifiedIDs ( ) const
inline

Definition at line 228 of file RootFile.h.

228 { return daqProvenanceHelper_.get() != nullptr; }

References daqProvenanceHelper_.

Referenced by createFileBlock().

◆ newBranchToOldBranch()

std::string const & edm::RootFile::newBranchToOldBranch ( std::string const &  newBranch) const
private

Definition at line 728 of file RootFile.cc.

728  {
729  std::map<std::string, std::string>::const_iterator it = newBranchToOldBranch_.find(newBranch);
730  if (it != newBranchToOldBranch_.end()) {
731  return it->second;
732  }
733  return newBranch;
734  }

References newBranchToOldBranch_.

Referenced by dropOnInput(), and RootFile().

◆ nextEventEntry()

bool edm::RootFile::nextEventEntry ( )
inline

Definition at line 251 of file RootFile.h.

251 { return eventTree_.nextWithCache(); }

References eventTree_, and edm::RootTree::nextWithCache().

◆ operator=()

RootFile& edm::RootFile::operator= ( RootFile const &  )
delete

◆ productRegistry()

std::shared_ptr<ProductRegistry const> edm::RootFile::productRegistry ( ) const
inline

Definition at line 215 of file RootFile.h.

215 { return productRegistry_; }

References productRegistry_.

Referenced by RootFile().

◆ readCurrentEvent()

bool edm::RootFile::readCurrentEvent ( EventPrincipal cache)

Definition at line 1449 of file RootFile.cc.

1449  {
1450  if (!eventTree_.current()) {
1451  return false;
1452  }
1454  if (!fileFormatVersion().lumiInEventID()) {
1455  //ugly, but will disappear when the backward compatibility is done with schema evolution.
1456  const_cast<EventID&>(eventAux_.id()).setLuminosityBlockNumber(eventAux_.oldLuminosityBlock());
1458  }
1459  fillEventHistory();
1460  runHelper_->overrideRunNumber(eventAux_.id(), eventAux().isRealData());
1461 
1462  // We're not done ... so prepare the EventPrincipal
1463  eventTree_.insertEntryForIndex(principal.transitionIndex());
1464  auto history = processHistoryRegistry_->getMapped(eventAux().processHistoryID());
1465  principal.fillEventPrincipal(eventAux(),
1466  history,
1469  *(makeProductProvenanceRetriever(principal.streamID().value())),
1471 
1472  // report event read from file
1473  filePtr_->eventReadFromFile();
1474  return true;
1475  }

References branchListIndexes_, edm::RootTree::current(), eventAux(), eventAux_, eventSelectionIDs_, eventTree_, fileFormatVersion(), filePtr_, fillEventHistory(), edm::EventPrincipal::fillEventPrincipal(), fillThisEventAuxiliary(), edm::EventAuxiliary::id(), edm::RootTree::insertEntryForIndex(), edm::EventAuxiliary::isRealData(), makeProductProvenanceRetriever(), eostools::move(), edm::EventAuxiliary::oldLuminosityBlock(), processHistoryRegistry_, edm::RootTree::resetAndGetRootDelayedReader(), edm::EventAuxiliary::resetObsoleteInfo(), runHelper_, edm::EventPrincipal::streamID(), edm::EDProductGetter::transitionIndex(), and edm::StreamID::value().

Referenced by readEvent().

◆ readEntryDescriptionTree()

void edm::RootFile::readEntryDescriptionTree ( EntryDescriptionMap entryDescriptionMap,
InputType  inputType 
)
private

Definition at line 587 of file RootFile.cc.

587  {
588  // Called only for old format files.
589  // We use a smart pointer so the tree will be deleted after use, and not kept for the life of the file.
590  std::unique_ptr<TTree> entryDescriptionTree(
591  dynamic_cast<TTree*>(filePtr_->Get(poolNames::entryDescriptionTreeName().c_str())));
592  if (nullptr == entryDescriptionTree.get()) {
594  << "Could not find tree " << poolNames::entryDescriptionTreeName() << " in the input file.\n";
595  }
596 
597  EntryDescriptionID idBuffer;
598  EntryDescriptionID* pidBuffer = &idBuffer;
599  entryDescriptionTree->SetBranchAddress(poolNames::entryDescriptionIDBranchName().c_str(), &pidBuffer);
600 
601  EventEntryDescription entryDescriptionBuffer;
602  EventEntryDescription* pEntryDescriptionBuffer = &entryDescriptionBuffer;
603  entryDescriptionTree->SetBranchAddress(poolNames::entryDescriptionBranchName().c_str(), &pEntryDescriptionBuffer);
604 
605  // Fill in the parentage registry.
606  ParentageRegistry& registry = *ParentageRegistry::instance();
607 
608  for (Long64_t i = 0, numEntries = entryDescriptionTree->GetEntries(); i < numEntries; ++i) {
609  roottree::getEntry(entryDescriptionTree.get(), i);
610  if (idBuffer != entryDescriptionBuffer.id()) {
611  throw Exception(errors::EventCorruption) << "Corruption of EntryDescription tree detected.\n";
612  }
613  entryDescriptionMap.insert(std::make_pair(entryDescriptionBuffer.id(), entryDescriptionBuffer));
614  Parentage parents;
615  parents.setParents(entryDescriptionBuffer.parents());
616  if (daqProvenanceHelper_) {
617  ParentageID const oldID = parents.id();
618  daqProvenanceHelper_->fixMetaData(parents.parentsForUpdate());
619  ParentageID newID = parents.id();
620  if (newID != oldID) {
621  daqProvenanceHelper_->setOldParentageIDToNew(oldID, newID);
622  }
623  }
624  // For thread safety, don't update global registries when a secondary source opens a file.
625  if (inputType != InputType::SecondarySource) {
626  registry.insertMapped(parents);
627  }
628  }
629  entryDescriptionTree->SetBranchAddress(poolNames::entryDescriptionIDBranchName().c_str(), nullptr);
630  entryDescriptionTree->SetBranchAddress(poolNames::entryDescriptionBranchName().c_str(), nullptr);
631  }

References daqProvenanceHelper_, edm::poolNames::entryDescriptionBranchName(), edm::poolNames::entryDescriptionIDBranchName(), edm::poolNames::entryDescriptionTreeName(), edm::errors::EventCorruption, Exception, filePtr_, edm::errors::FileReadError, edm::roottree::getEntry(), mps_fire::i, edm::EventEntryDescription::id(), edm::ParentageRegistry::insertMapped(), edm::ParentageRegistry::instance(), edm::numEntries(), parents, edm::EventEntryDescription::parents(), and edm::SecondarySource.

Referenced by makeProvenanceReaderMaker().

◆ readEvent()

void edm::RootFile::readEvent ( EventPrincipal cache)

Definition at line 1425 of file RootFile.cc.

1425  {
1428  // read the event auxiliary if not alrady read.
1430 
1431  // read the event
1432  readCurrentEvent(principal);
1433 
1434  runHelper_->checkRunConsistency(eventAux().run(), indexIntoFileIter_.run());
1435  runHelper_->checkLumiConsistency(eventAux().luminosityBlock(), indexIntoFileIter_.lumi());
1436 
1437  // If this next assert shows up in performance profiling or significantly affects memory, then these three lines should be deleted.
1438  // The IndexIntoFile should guarantee that it never fails.
1440  ? *daqProvenanceHelper_->oldProcessHistoryID()
1441  : eventAux().processHistoryID());
1442  ProcessHistoryID const& reducedPHID = processHistoryRegistry_->reducedProcessHistoryID(idToCheck);
1444 
1446  }

References cms::cuda::assert(), daqProvenanceHelper_, edm::IndexIntoFile::IndexIntoFileItr::entry(), eventAux(), fileFormatVersion(), fillEventAuxiliary(), edm::IndexIntoFile::IndexIntoFileItr::getEntryType(), indexIntoFile_, indexIntoFileEnd_, indexIntoFileIter_, edm::IndexIntoFile::kEvent, edm::IndexIntoFile::IndexIntoFileItr::lumi(), edm::EventAuxiliary::processHistoryID(), edm::IndexIntoFile::processHistoryID(), edm::IndexIntoFile::IndexIntoFileItr::processHistoryIDIndex(), processHistoryRegistry_, readCurrentEvent(), writedatasetfile::run, edm::IndexIntoFile::IndexIntoFileItr::run(), runHelper_, and edm::FileFormatVersion::useReducedProcessHistoryID().

◆ readEventHistoryTree()

void edm::RootFile::readEventHistoryTree ( )
private

Definition at line 1666 of file RootFile.cc.

1666  {
1667  // Read in the event history tree, if we have one...
1668  if (fileFormatVersion().eventHistoryTree()) {
1669  history_ = std::make_unique<History>(); // propagate_const<T> has no reset() function
1670  eventHistoryTree_ = dynamic_cast<TTree*>(filePtr_->Get(poolNames::eventHistoryTreeName().c_str()));
1671  if (!eventHistoryTree_) {
1672  throw Exception(errors::EventCorruption) << "Failed to find the event history tree.\n";
1673  }
1674  }
1675  }

References edm::errors::EventCorruption, eventHistoryTree_, edm::poolNames::eventHistoryTreeName(), Exception, fileFormatVersion(), filePtr_, and history_.

Referenced by RootFile().

◆ readFakeRun_()

void edm::RootFile::readFakeRun_ ( RunPrincipal runPrincipal)

◆ readFakeRunAuxiliary_()

std::shared_ptr<RunAuxiliary> edm::RootFile::readFakeRunAuxiliary_ ( )

◆ readLuminosityBlock_()

void edm::RootFile::readLuminosityBlock_ ( LuminosityBlockPrincipal lumiPrincipal)

Definition at line 1608 of file RootFile.cc.

1608  {
1611  // Begin code for backward compatibility before the existence of lumi trees.
1612  if (!lumiTree_.isValid()) {
1614  return;
1615  }
1616  // End code for backward compatibility before the existence of lumi trees.
1618  // NOTE: we use 0 for the index since do not do delayed reads for LuminosityBlockPrincipals
1620  auto history = processHistoryRegistry_->getMapped(lumiPrincipal.aux().processHistoryID());
1621  lumiPrincipal.fillLuminosityBlockPrincipal(history, lumiTree_.resetAndGetRootDelayedReader());
1622  // Read in all the products now.
1623  lumiPrincipal.readAllFromSourceAndMergeImmediately();
1625  }

References cms::cuda::assert(), edm::LuminosityBlockPrincipal::aux(), edm::IndexIntoFile::IndexIntoFileItr::entry(), edm::LuminosityBlockPrincipal::fillLuminosityBlockPrincipal(), edm::IndexIntoFile::IndexIntoFileItr::getEntryType(), indexIntoFileEnd_, indexIntoFileIter_, edm::RootTree::insertEntryForIndex(), edm::RootTree::isValid(), edm::IndexIntoFile::kLumi, lumiTree_, edm::LuminosityBlockAuxiliary::processHistoryID(), processHistoryRegistry_, edm::Principal::readAllFromSourceAndMergeImmediately(), edm::RootTree::resetAndGetRootDelayedReader(), and edm::RootTree::setEntryNumber().

◆ readLuminosityBlockAuxiliary_()

std::shared_ptr< LuminosityBlockAuxiliary > edm::RootFile::readLuminosityBlockAuxiliary_ ( )

Definition at line 1570 of file RootFile.cc.

1570  {
1573  // Begin code for backward compatibility before the existence of lumi trees.
1574  if (!lumiTree_.isValid()) {
1576  assert(eventEntry != IndexIntoFile::invalidEntry);
1577  assert(eventTree_.current(eventEntry));
1578  fillEventAuxiliary(eventEntry);
1579 
1580  LuminosityBlockID lumi = LuminosityBlockID(indexIntoFileIter_.run(), indexIntoFileIter_.lumi());
1581  runHelper_->overrideRunNumber(lumi);
1582  return std::make_shared<LuminosityBlockAuxiliary>(
1583  lumi.run(), lumi.luminosityBlock(), eventAux().time(), Timestamp::invalidTimestamp());
1584  }
1585  // End code for backward compatibility before the existence of lumi trees.
1587  std::shared_ptr<LuminosityBlockAuxiliary> lumiAuxiliary = fillLumiAuxiliary();
1588  assert(lumiAuxiliary->run() == indexIntoFileIter_.run());
1589  assert(lumiAuxiliary->luminosityBlock() == indexIntoFileIter_.lumi());
1590  runHelper_->overrideRunNumber(lumiAuxiliary->id());
1591  filePtr_->reportInputLumiSection(lumiAuxiliary->run(), lumiAuxiliary->luminosityBlock());
1592  if (lumiAuxiliary->beginTime() == Timestamp::invalidTimestamp()) {
1594  if (eventEntry != IndexIntoFile::invalidEntry) {
1595  assert(eventTree_.current(eventEntry));
1596  fillEventAuxiliary(eventEntry);
1597 
1598  lumiAuxiliary->setBeginTime(eventAux().time());
1599  }
1600  lumiAuxiliary->setEndTime(Timestamp::invalidTimestamp());
1601  }
1602  if (!fileFormatVersion().processHistorySameWithinRun() && savedRunAuxiliary_) {
1603  lumiAuxiliary->setProcessHistoryID(savedRunAuxiliary_->processHistoryID());
1604  }
1605  return lumiAuxiliary;
1606  }

References cms::cuda::assert(), edm::RootTree::current(), edm::IndexIntoFile::IndexIntoFileItr::entry(), eventAux(), eventTree_, fileFormatVersion(), filePtr_, fillEventAuxiliary(), fillLumiAuxiliary(), edm::IndexIntoFile::IndexIntoFileItr::firstEventEntryThisLumi(), edm::IndexIntoFile::IndexIntoFileItr::getEntryType(), indexIntoFileEnd_, indexIntoFileIter_, edm::IndexIntoFile::invalidEntry, edm::Timestamp::invalidTimestamp(), edm::RootTree::isValid(), edm::IndexIntoFile::kLumi, edm::IndexIntoFile::IndexIntoFileItr::lumi(), lumiTree_, edm::IndexIntoFile::IndexIntoFileItr::run(), runHelper_, savedRunAuxiliary_, edm::RootTree::setEntryNumber(), edm::EventAuxiliary::time(), and ntuplemaker::time.

◆ readParentageTree()

void edm::RootFile::readParentageTree ( InputType  inputType)
private

Definition at line 633 of file RootFile.cc.

633  {
634  // New format file
635  // We use a smart pointer so the tree will be deleted after use, and not kept for the life of the file.
636  std::unique_ptr<TTree> parentageTree(dynamic_cast<TTree*>(filePtr_->Get(poolNames::parentageTreeName().c_str())));
637  if (nullptr == parentageTree.get()) {
639  << "Could not find tree " << poolNames::parentageTreeName() << " in the input file.\n";
640  }
641 
642  Parentage parents;
643  Parentage* pParentageBuffer = &parents;
644  parentageTree->SetBranchAddress(poolNames::parentageBranchName().c_str(), &pParentageBuffer);
645 
646  ParentageRegistry& registry = *ParentageRegistry::instance();
647 
648  parentageIDLookup_.reserve(parentageTree->GetEntries());
649  for (Long64_t i = 0, numEntries = parentageTree->GetEntries(); i < numEntries; ++i) {
650  roottree::getEntry(parentageTree.get(), i);
651  if (daqProvenanceHelper_) {
652  ParentageID const oldID = parents.id();
653  daqProvenanceHelper_->fixMetaData(parents.parentsForUpdate());
654  ParentageID newID = parents.id();
655  if (newID != oldID) {
656  daqProvenanceHelper_->setOldParentageIDToNew(oldID, newID);
657  }
658  }
659  // For thread safety, don't update global registries when a secondary source opens a file.
660  if (inputType != InputType::SecondarySource) {
661  registry.insertMapped(parents);
662  }
663  parentageIDLookup_.push_back(parents.id());
664  }
665  parentageTree->SetBranchAddress(poolNames::parentageBranchName().c_str(), nullptr);
666  }

References daqProvenanceHelper_, Exception, filePtr_, edm::errors::FileReadError, edm::roottree::getEntry(), mps_fire::i, edm::ParentageRegistry::insertMapped(), edm::ParentageRegistry::instance(), edm::numEntries(), edm::poolNames::parentageBranchName(), parentageIDLookup_, edm::poolNames::parentageTreeName(), parents, and edm::SecondarySource.

Referenced by makeProvenanceReaderMaker().

◆ readRun_()

void edm::RootFile::readRun_ ( RunPrincipal runPrincipal)

Definition at line 1543 of file RootFile.cc.

1543  {
1544  MergeableRunProductMetadata* mergeableRunProductMetadata = nullptr;
1545  if (inputType_ == InputType::Primary) {
1546  mergeableRunProductMetadata = runPrincipal.mergeableRunProductMetadata();
1547  RootTree::EntryNumber const& entryNumber = runTree_.entryNumber();
1548  assert(entryNumber >= 0);
1549  mergeableRunProductMetadata->readRun(
1550  entryNumber, *storedMergeableRunProductMetadata_, IndexIntoFileItrHolder(indexIntoFileIter_));
1551  }
1552 
1553  if (!runHelper_->fakeNewRun()) {
1557  }
1558  // Begin code for backward compatibility before the existence of run trees.
1559  if (!runTree_.isValid()) {
1560  return;
1561  }
1562  // End code for backward compatibility before the existence of run trees.
1563  // NOTE: we use 0 for the index since do not do delayed reads for RunPrincipals
1565  runPrincipal.fillRunPrincipal(*processHistoryRegistry_, runTree_.resetAndGetRootDelayedReader());
1566  // Read in all the products now.
1567  runPrincipal.readAllFromSourceAndMergeImmediately(mergeableRunProductMetadata);
1568  }

References cms::cuda::assert(), edm::RootTree::entryNumber(), edm::RunPrincipal::fillRunPrincipal(), edm::IndexIntoFile::IndexIntoFileItr::getEntryType(), indexIntoFileEnd_, indexIntoFileIter_, inputType_, edm::RootTree::insertEntryForIndex(), edm::RootTree::isValid(), edm::IndexIntoFile::kRun, edm::RunPrincipal::mergeableRunProductMetadata(), edm::Primary, processHistoryRegistry_, edm::Principal::readAllFromSourceAndMergeImmediately(), edm::MergeableRunProductMetadata::readRun(), edm::RootTree::resetAndGetRootDelayedReader(), runHelper_, runTree_, and storedMergeableRunProductMetadata_.

◆ readRunAuxiliary_()

std::shared_ptr< RunAuxiliary > edm::RootFile::readRunAuxiliary_ ( )

Definition at line 1479 of file RootFile.cc.

1479  {
1480  if (runHelper_->fakeNewRun()) {
1481  auto runAuxiliary = std::make_shared<RunAuxiliary>(*savedRunAuxiliary());
1482  runHelper_->overrideRunNumber(runAuxiliary->id());
1483  return runAuxiliary;
1484  }
1487 
1488  // Begin code for backward compatibility before the existence of run trees.
1489  if (!runTree_.isValid()) {
1490  // prior to the support of run trees.
1491  // RunAuxiliary did not contain a valid timestamp. Take it from the next event.
1493  assert(eventEntry != IndexIntoFile::invalidEntry);
1494  assert(eventTree_.current(eventEntry));
1495  fillEventAuxiliary(eventEntry);
1496 
1497  RunID run = RunID(indexIntoFileIter_.run());
1498  runHelper_->overrideRunNumber(run);
1499  savedRunAuxiliary_ = std::make_shared<RunAuxiliary>(run.run(), eventAux().time(), Timestamp::invalidTimestamp());
1500  return savedRunAuxiliary();
1501  }
1502  // End code for backward compatibility before the existence of run trees.
1504  std::shared_ptr<RunAuxiliary> runAuxiliary = fillRunAuxiliary();
1505  assert(runAuxiliary->run() == indexIntoFileIter_.run());
1506  runHelper_->overrideRunNumber(runAuxiliary->id());
1507  filePtr_->reportInputRunNumber(runAuxiliary->run());
1508  // If RunAuxiliary did not contain a valid begin timestamp, invalidate any end timestamp.
1509  if (runAuxiliary->beginTime() == Timestamp::invalidTimestamp()) {
1510  runAuxiliary->setEndTime(Timestamp::invalidTimestamp());
1511  }
1512 
1513  // If RunAuxiliary did not contain a valid timestamp, or if this an old format file from
1514  // when the Run's ProcessHistory included only processes where products were added to the Run itself,
1515  // we attempt to read the first event in the run to get appropriate info.
1516  if (runAuxiliary->beginTime() == Timestamp::invalidTimestamp() ||
1519  // If we have a valid event, use its information.
1520  if (eventEntry != IndexIntoFile::invalidEntry) {
1521  assert(eventTree_.current(eventEntry));
1522  fillEventAuxiliary(eventEntry);
1523 
1524  // RunAuxiliary did not contain a valid timestamp. Take it from the next event in this run if there is one.
1525  if (runAuxiliary->beginTime() == Timestamp::invalidTimestamp()) {
1526  runAuxiliary->setBeginTime(eventAux().time());
1527  }
1528 
1529  // For backwards compatibility when the Run's ProcessHistory included only processes where products were added to the
1530  // Run, and then the Run and Event auxiliaries could be different. Use the event ProcessHistoryID if there is one. It should
1531  // almost always be correct by the current definition (processes included if any products are added. This makes the run, lumi,
1532  // and event ProcessHistory's always be the same if no file merging occurs).
1533  if (!fileFormatVersion().processHistorySameWithinRun()) {
1534  fillEventHistory();
1535  runAuxiliary->setProcessHistoryID(eventAux().processHistoryID());
1536  }
1537  }
1538  }
1539  savedRunAuxiliary_ = runAuxiliary;
1540  return runAuxiliary;
1541  }

References cms::cuda::assert(), edm::RootTree::current(), edm::IndexIntoFile::IndexIntoFileItr::entry(), eventAux(), eventTree_, fileFormatVersion(), filePtr_, fillEventAuxiliary(), fillEventHistory(), fillRunAuxiliary(), edm::IndexIntoFile::IndexIntoFileItr::firstEventEntryThisRun(), edm::IndexIntoFile::IndexIntoFileItr::getEntryType(), indexIntoFileEnd_, indexIntoFileIter_, edm::IndexIntoFile::invalidEntry, edm::Timestamp::invalidTimestamp(), edm::RootTree::isValid(), edm::IndexIntoFile::kRun, edm::FileFormatVersion::processHistorySameWithinRun(), writedatasetfile::run, edm::IndexIntoFile::IndexIntoFileItr::run(), runHelper_, runTree_, savedRunAuxiliary(), savedRunAuxiliary_, edm::RootTree::setEntryNumber(), edm::EventAuxiliary::time(), and ntuplemaker::time.

◆ reportOpened()

void edm::RootFile::reportOpened ( std::string const &  inputType)

Definition at line 1192 of file RootFile.cc.

1192  {
1193  // Report file opened.
1194  std::string const label = "source";
1195  std::string moduleName = "PoolSource";
1196  filePtr_->inputFileOpened(logicalFile_, inputType, moduleName, label, fid_.fid(), eventTree_.branchNames());
1197  }

References edm::RootTree::branchNames(), eventTree_, edm::FileID::fid(), fid_, filePtr_, label, logicalFile_, edm::moduleName(), and AlCaHLTBitMon_QueryRunRegistry::string.

◆ rewind()

void edm::RootFile::rewind ( )
inline

◆ runTree()

RootTree const& edm::RootFile::runTree ( ) const
inline

Definition at line 223 of file RootFile.h.

223 { return runTree_; }

References runTree_.

Referenced by validateFile().

◆ savedRunAuxiliary() [1/2]

std::shared_ptr<RunAuxiliary>& edm::RootFile::savedRunAuxiliary ( )
inlineprivate

Definition at line 301 of file RootFile.h.

References edm::get_underlying_safe(), and savedRunAuxiliary_.

◆ savedRunAuxiliary() [2/2]

std::shared_ptr<RunAuxiliary const> edm::RootFile::savedRunAuxiliary ( ) const
inlineprivate

Definition at line 300 of file RootFile.h.

References edm::get_underlying_safe(), and savedRunAuxiliary_.

Referenced by readRunAuxiliary_().

◆ setAtEventEntry()

void edm::RootFile::setAtEventEntry ( IndexIntoFile::EntryNumber_t  entry)

◆ setEntryAtEvent()

bool edm::RootFile::setEntryAtEvent ( RunNumber_t  run,
LuminosityBlockNumber_t  lumi,
EventNumber_t  event 
)

◆ setEntryAtItem()

bool edm::RootFile::setEntryAtItem ( RunNumber_t  run,
LuminosityBlockNumber_t  lumi,
EventNumber_t  event 
)
inline

Definition at line 230 of file RootFile.h.

230  {
232  }

References writedatasetfile::run, setEntryAtEvent(), setEntryAtLumi(), and setEntryAtRun().

◆ setEntryAtLumi()

bool edm::RootFile::setEntryAtLumi ( RunNumber_t  run,
LuminosityBlockNumber_t  lumi 
)

◆ setEntryAtNextEventInLumi()

bool edm::RootFile::setEntryAtNextEventInLumi ( RunNumber_t  run,
LuminosityBlockNumber_t  lumi 
)

◆ setEntryAtRun()

bool edm::RootFile::setEntryAtRun ( RunNumber_t  run)

◆ setIfFastClonable()

void edm::RootFile::setIfFastClonable ( int  remainingEvents,
int  remainingLumis 
)
private

Definition at line 668 of file RootFile.cc.

668  {
669  if (fileFormatVersion().noMetaDataTrees() and !fileFormatVersion().storedProductProvenanceUsed()) {
670  //we must avoid copying the old branch which stored the per product per event provenance
672  return;
673  }
674  if (!fileFormatVersion().splitProductIDs()) {
676  return;
677  }
680  return;
681  }
682  // Find entry for first event in file
683  IndexIntoFile::IndexIntoFileItr it = indexIntoFileBegin_;
684  while (it != indexIntoFileEnd_ && it.getEntryType() != IndexIntoFile::kEvent) {
685  ++it;
686  }
687  if (it == indexIntoFileEnd_) {
689  return;
690  }
691 
692  // From here on, record all reasons we can't fast clone.
693  IndexIntoFile::SortOrder sortOrder =
697  }
698  if (skipAnyEvents_) {
700  }
701  if (remainingEvents >= 0 && eventTree_.entries() > remainingEvents) {
703  }
704  if (remainingLumis >= 0 && lumiTree_.entries() > remainingLumis) {
706  }
707  if (duplicateChecker_ && !duplicateChecker_->checkDisabled() && !duplicateChecker_->noDuplicatesInFile()) {
709  }
710  }

References duplicateChecker_, edm::FileBlock::DuplicateEventsRemoved, edm::RootTree::entries(), edm::FileBlock::EventsToBeSorted, eventTree_, fileFormatVersion(), edm::FileBlock::FileTooOld, edm::IndexIntoFile::firstAppearanceOrder, edm::IndexIntoFile::IndexIntoFileItr::getEntryType(), indexIntoFile_, indexIntoFileBegin_, indexIntoFileEnd_, edm::FileBlock::InitialEventsSkipped, edm::IndexIntoFile::iterationWillBeInEntryOrder(), edm::IndexIntoFile::kEvent, lumiTree_, edm::FileBlock::MaxEventsTooSmall, edm::FileBlock::MaxLumisTooSmall, edm::FileBlock::NoEventsInFile, noEventSort_, edm::FileBlock::NotProcessingEvents, edm::IndexIntoFile::numericalOrder, processingMode_, edm::FileBlock::RunOrLumiNotContiguous, edm::InputSource::RunsLumisAndEvents, skipAnyEvents_, and whyNotFastClonable_.

Referenced by RootFile().

◆ setPosition()

void edm::RootFile::setPosition ( IndexIntoFile::IndexIntoFileItr const &  position)

◆ setSignals()

void edm::RootFile::setSignals ( signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const *  preEventReadSource,
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const *  postEventReadSource 
)

Definition at line 1822 of file RootFile.cc.

1824  {
1825  eventTree_.setSignals(preEventReadSource, postEventReadSource);
1826  }

References eventTree_, and edm::RootTree::setSignals().

◆ setToLastEntry()

void edm::RootFile::setToLastEntry ( )
inline

Definition at line 246 of file RootFile.h.

References indexIntoFileEnd_, and indexIntoFileIter_.

◆ skipEntries()

bool edm::RootFile::skipEntries ( unsigned int &  offset)
inline

◆ skipEvents()

bool edm::RootFile::skipEvents ( int &  offset)

Definition at line 1336 of file RootFile.cc.

1336  {
1337  while (offset > 0 && indexIntoFileIter_ != indexIntoFileEnd_) {
1338  int phIndexOfSkippedEvent = IndexIntoFile::invalidIndex;
1339  RunNumber_t runOfSkippedEvent = IndexIntoFile::invalidRun;
1342 
1344  phIndexOfSkippedEvent, runOfSkippedEvent, lumiOfSkippedEvent, skippedEventEntry);
1345 
1346  // At the end of the file and there were no more events to skip
1347  if (skippedEventEntry == IndexIntoFile::invalidEntry)
1348  break;
1349 
1350  if (eventSkipperByID_ && eventSkipperByID_->somethingToSkip()) {
1351  fillEventAuxiliary(skippedEventEntry);
1352  if (eventSkipperByID_->skipIt(runOfSkippedEvent, lumiOfSkippedEvent, eventAux_.id().event())) {
1353  continue;
1354  }
1355  }
1356  if (duplicateChecker_ && !duplicateChecker_->checkDisabled() && !duplicateChecker_->noDuplicatesInFile()) {
1357  fillEventAuxiliary(skippedEventEntry);
1358  if (duplicateChecker_->isDuplicateAndCheckActive(
1359  phIndexOfSkippedEvent, runOfSkippedEvent, lumiOfSkippedEvent, eventAux_.id().event(), file_)) {
1360  continue;
1361  }
1362  }
1363  --offset;
1364  }
1365 
1366  while (offset < 0) {
1367  if (duplicateChecker_) {
1368  duplicateChecker_->disable();
1369  }
1370 
1371  int phIndexOfEvent = IndexIntoFile::invalidIndex;
1375 
1376  indexIntoFileIter_.skipEventBackward(phIndexOfEvent, runOfEvent, lumiOfEvent, eventEntry);
1377 
1378  if (eventEntry == IndexIntoFile::invalidEntry)
1379  break;
1380 
1381  if (eventSkipperByID_ && eventSkipperByID_->somethingToSkip()) {
1382  fillEventAuxiliary(eventEntry);
1383  if (eventSkipperByID_->skipIt(runOfEvent, lumiOfEvent, eventAux_.id().event())) {
1384  continue;
1385  }
1386  }
1387  ++offset;
1388  }
1390  }

References duplicateChecker_, edm::EventID::event(), eventAux_, eventSkipperByID_, file_, fillEventAuxiliary(), edm::EventAuxiliary::id(), indexIntoFileEnd_, indexIntoFileIter_, edm::IndexIntoFile::invalidEntry, edm::IndexIntoFile::invalidIndex, edm::IndexIntoFile::invalidLumi, edm::IndexIntoFile::invalidRun, hltrates_dqm_sourceclient-live_cfg::offset, edm::IndexIntoFile::IndexIntoFileItr::skipEventBackward(), and edm::IndexIntoFile::IndexIntoFileItr::skipEventForward().

◆ skipThisEntry()

bool edm::RootFile::skipThisEntry ( )
private

Definition at line 747 of file RootFile.cc.

747  {
749  return false;
750  }
751 
752  if (eventSkipperByID_ && eventSkipperByID_->somethingToSkip()) {
753  // See first if the entire lumi or run is skipped, so we won't have to read the event Auxiliary in that case.
755  return true;
756  }
757 
758  // The Lumi is not skipped. If this is an event, see if the event is skipped.
762  return true;
763  }
764  }
765 
766  // Skip runs with no lumis if either lumisToSkip or lumisToProcess have been set to select lumis
768  // There are no lumis in this run, not even ones we will skip
770  return true;
771  }
772  // If we get here there are lumis in the run, check to see if we are skipping all of them
773  do {
775  return false;
776  }
777  } while (indexIntoFileIter_.skipLumiInRun());
778  return true;
779  }
780  }
781  return false;
782  }

References edm::IndexIntoFile::IndexIntoFileItr::entry(), edm::EventID::event(), eventAux_, eventSkipperByID_, fillEventAuxiliary(), edm::IndexIntoFile::IndexIntoFileItr::getEntryType(), edm::EventAuxiliary::id(), indexIntoFileEnd_, indexIntoFileIter_, edm::IndexIntoFile::invalidLumi, edm::IndexIntoFile::kEvent, edm::IndexIntoFile::kRun, edm::IndexIntoFile::IndexIntoFileItr::lumi(), edm::IndexIntoFile::IndexIntoFileItr::peekAheadAtLumi(), edm::IndexIntoFile::IndexIntoFileItr::run(), edm::IndexIntoFile::IndexIntoFileItr::skipLumiInRun(), and mitigatedMETSequence_cff::U.

Referenced by getNextItemType().

◆ treePointers()

RootTreePtrArray& edm::RootFile::treePointers ( )
inlineprivate

Definition at line 272 of file RootFile.h.

272 { return treePointers_; }

References treePointers_.

◆ validateFile()

void edm::RootFile::validateFile ( InputType  inputType,
bool  usingGoToEvent 
)
private

Definition at line 1137 of file RootFile.cc.

1137  {
1138  if (!fid_.isValid()) {
1139  fid_ = FileID(createGlobalIdentifier());
1140  }
1141  if (!eventTree_.isValid()) {
1142  throw Exception(errors::EventCorruption) << "'Events' tree is corrupted or not present\n"
1143  << "in the input file.\n";
1144  }
1145  if (enforceGUIDInFileName_) {
1146  auto guidFromName = stemFromPath(file_);
1147  if (guidFromName != fid_.fid()) {
1149  << "GUID " << guidFromName << " extracted from file name " << file_
1150  << " is inconsistent with the GUID read from the file " << fid_.fid();
1151  }
1152  }
1153 
1154  if (fileFormatVersion().hasIndexIntoFile()) {
1155  if (runTree().entries() > 0) {
1157  }
1159  if (daqProvenanceHelper_) {
1160  std::vector<ProcessHistoryID>& phidVec = indexIntoFile_.setProcessHistoryIDs();
1161  for (auto& phid : phidVec) {
1162  phid = daqProvenanceHelper_->mapProcessHistoryID(phid);
1163  }
1164  }
1166  }
1167  } else {
1170  }
1171 
1175  std::shared_ptr<IndexIntoFile::EventFinder>(std::make_shared<RootFileEventFinder>(eventTree_)));
1176  // We fill the event numbers explicitly if we need to find events in closed files,
1177  // such as for secondary files (or secondary sources) or if duplicate checking across files.
1178  bool needEventNumbers = false;
1179  bool needIndexesForDuplicateChecker =
1180  duplicateChecker_ && duplicateChecker_->checkingAllFiles() && !duplicateChecker_->checkDisabled();
1181  if (inputType != InputType::Primary || needIndexesForDuplicateChecker || usingGoToEvent) {
1182  needEventNumbers = true;
1183  }
1184  bool needEventEntries = false;
1185  if (inputType != InputType::Primary || !noEventSort_) {
1186  // We need event entries for sorting or for secondary files or sources.
1187  needEventEntries = true;
1188  }
1189  indexIntoFile_.fillEventNumbersOrEntries(needEventNumbers, needEventEntries);
1190  }

References cms::cuda::assert(), edm::createGlobalIdentifier(), daqProvenanceHelper_, duplicateChecker_, edm::IndexIntoFile::empty(), enforceGUIDInFileName_, edm::RootTree::entries(), edm::errors::EventCorruption, eventTree_, Exception, edm::FileID::fid(), fid_, file_, fileFormatVersion(), edm::errors::FileNameInconsistentWithGUID, edm::IndexIntoFile::fillEventNumbersOrEntries(), fillIndexIntoFile(), edm::IndexIntoFile::fixIndexes(), indexIntoFile_, edm::FileID::isValid(), edm::RootTree::isValid(), noEventSort_, orderedProcessHistoryIDs_, edm::Primary, processHistoryRegistry_, edm::IndexIntoFile::reduceProcessHistoryIDs(), runTree(), edm::IndexIntoFile::setEventFinder(), edm::IndexIntoFile::setNumberOfEvents(), edm::IndexIntoFile::setProcessHistoryIDs(), edm::stemFromPath(), and edm::FileFormatVersion::useReducedProcessHistoryID().

Referenced by RootFile().

◆ wasFirstEventJustRead()

bool edm::RootFile::wasFirstEventJustRead ( ) const

Definition at line 852 of file RootFile.cc.

852  {
853  IndexIntoFile::IndexIntoFileItr itr(indexIntoFileIter_);
854  int phIndex;
857  IndexIntoFile::EntryNumber_t eventEntry;
858  itr.skipEventBackward(phIndex, run, lumi, eventEntry);
859  itr.skipEventBackward(phIndex, run, lumi, eventEntry);
860  return eventEntry == IndexIntoFile::invalidEntry;
861  }

References indexIntoFileIter_, edm::IndexIntoFile::invalidEntry, BXlumiParameters_cfi::lumi, and writedatasetfile::run.

◆ wasLastEventJustRead()

bool edm::RootFile::wasLastEventJustRead ( ) const

Definition at line 846 of file RootFile.cc.

846  {
847  IndexIntoFile::IndexIntoFileItr itr(indexIntoFileIter_);
848  itr.advanceToEvent();
849  return itr.getEntryType() == IndexIntoFile::kEnd;
850  }

References indexIntoFileIter_, and edm::IndexIntoFile::kEnd.

◆ whyNotFastClonable()

int edm::RootFile::whyNotFastClonable ( ) const
inline

Definition at line 225 of file RootFile.h.

225 { return whyNotFastClonable_; }

References whyNotFastClonable_.

Referenced by createFileBlock().

Member Data Documentation

◆ branchChildren_

edm::propagate_const<std::shared_ptr<BranchChildren> > edm::RootFile::branchChildren_
private

Definition at line 355 of file RootFile.h.

Referenced by branchChildren(), markBranchToBeDropped(), and RootFile().

◆ branchIDListHelper_

edm::propagate_const<std::shared_ptr<BranchIDListHelper> > edm::RootFile::branchIDListHelper_
private

Definition at line 345 of file RootFile.h.

Referenced by branchIDListHelper(), fillEventHistory(), and RootFile().

◆ branchIDLists_

std::shared_ptr<BranchIDLists const> edm::RootFile::branchIDLists_
private

Definition at line 344 of file RootFile.h.

Referenced by RootFile().

◆ branchListIndexes_

BranchListIndexes edm::RootFile::branchListIndexes_
private

Definition at line 353 of file RootFile.h.

Referenced by fillEventHistory(), and readCurrentEvent().

◆ branchListIndexesUnchanged_

bool edm::RootFile::branchListIndexesUnchanged_
private

Definition at line 336 of file RootFile.h.

Referenced by branchListIndexesUnchanged(), and RootFile().

◆ daqProvenanceHelper_

edm::propagate_const<std::unique_ptr<DaqProvenanceHelper> > edm::RootFile::daqProvenanceHelper_
private

◆ duplicateChecker_

edm::propagate_const<std::shared_ptr<DuplicateChecker> > edm::RootFile::duplicateChecker_
private

◆ edProductClass_

edm::propagate_const<TClass*> edm::RootFile::edProductClass_
private

Definition at line 362 of file RootFile.h.

Referenced by dropOnInput().

◆ enforceGUIDInFileName_

bool edm::RootFile::enforceGUIDInFileName_
private

Definition at line 333 of file RootFile.h.

Referenced by validateFile().

◆ eventAux_

EventAuxiliary edm::RootFile::eventAux_
private

◆ eventHistoryTree_

edm::propagate_const<TTree*> edm::RootFile::eventHistoryTree_
private

Definition at line 351 of file RootFile.h.

Referenced by close(), fillEventHistory(), and readEventHistoryTree().

◆ eventProcessHistoryIDs_

std::vector<EventProcessHistoryID> edm::RootFile::eventProcessHistoryIDs_
private

Definition at line 328 of file RootFile.h.

Referenced by fillEventHistory(), and RootFile().

◆ eventProcessHistoryIter_

std::vector<EventProcessHistoryID>::const_iterator edm::RootFile::eventProcessHistoryIter_
private

Definition at line 329 of file RootFile.h.

Referenced by fillEventHistory(), and RootFile().

◆ eventProductProvenanceRetrievers_

std::vector<edm::propagate_const<std::shared_ptr<ProductProvenanceRetriever> > > edm::RootFile::eventProductProvenanceRetrievers_
private

Definition at line 359 of file RootFile.h.

Referenced by eventProductProvenanceRetriever(), and makeProductProvenanceRetriever().

◆ eventSelectionIDs_

EventSelectionIDVector edm::RootFile::eventSelectionIDs_
private

Definition at line 352 of file RootFile.h.

Referenced by fillEventHistory(), and readCurrentEvent().

◆ eventSkipperByID_

edm::propagate_const<std::shared_ptr<EventSkipperByID> > edm::RootFile::eventSkipperByID_
private

Definition at line 318 of file RootFile.h.

Referenced by RootFile(), skipEvents(), and skipThisEntry().

◆ eventTree_

RootTree edm::RootFile::eventTree_
private

◆ fid_

FileID edm::RootFile::fid_
private

Definition at line 320 of file RootFile.h.

Referenced by reportOpened(), RootFile(), and validateFile().

◆ file_

const std::string edm::RootFile::file_
private

◆ fileFormatVersion_

FileFormatVersion edm::RootFile::fileFormatVersion_
private

Definition at line 319 of file RootFile.h.

Referenced by fileFormatVersion(), makeProvenanceReaderMaker(), and RootFile().

◆ filePtr_

edm::propagate_const<std::shared_ptr<InputFile> > edm::RootFile::filePtr_
private

◆ fileThinnedAssociationsHelper_

edm::propagate_const<std::unique_ptr<ThinnedAssociationsHelper> > edm::RootFile::fileThinnedAssociationsHelper_
private

Definition at line 346 of file RootFile.h.

Referenced by dropOnInput(), initAssociationsFromSecondary(), and RootFile().

◆ hasNewlyDroppedBranch_

std::array<bool, NumBranchTypes> edm::RootFile::hasNewlyDroppedBranch_
private

Definition at line 335 of file RootFile.h.

Referenced by dropOnInput(), hasNewlyDroppedBranch(), and RootFile().

◆ history_

edm::propagate_const<std::unique_ptr<History> > edm::RootFile::history_
private

Definition at line 354 of file RootFile.h.

Referenced by fillEventHistory(), and readEventHistoryTree().

◆ indexIntoFile_

IndexIntoFile& edm::RootFile::indexIntoFile_
private

◆ indexIntoFileBegin_

IndexIntoFile::IndexIntoFileItr edm::RootFile::indexIntoFileBegin_
private

Definition at line 324 of file RootFile.h.

Referenced by rewind(), RootFile(), and setIfFastClonable().

◆ indexIntoFileEnd_

IndexIntoFile::IndexIntoFileItr edm::RootFile::indexIntoFileEnd_
private

◆ indexIntoFileIter_

IndexIntoFile::IndexIntoFileItr edm::RootFile::indexIntoFileIter_
private

◆ indexIntoFileSharedPtr_

edm::propagate_const<std::shared_ptr<IndexIntoFile> > edm::RootFile::indexIntoFileSharedPtr_
private

Definition at line 321 of file RootFile.h.

Referenced by indexIntoFileSharedPtr().

◆ inputType_

InputType edm::RootFile::inputType_
private

Definition at line 363 of file RootFile.h.

Referenced by readRun_().

◆ lastEventEntryNumberRead_

IndexIntoFile::EntryNumber_t edm::RootFile::lastEventEntryNumberRead_
private

Definition at line 342 of file RootFile.h.

Referenced by fillIndexIntoFile(), and fillThisEventAuxiliary().

◆ logicalFile_

const std::string edm::RootFile::logicalFile_
private

Definition at line 314 of file RootFile.h.

Referenced by reportOpened().

◆ lumiTree_

RootTree edm::RootFile::lumiTree_
private

◆ newBranchToOldBranch_

std::map<std::string, std::string> edm::RootFile::newBranchToOldBranch_
private

Definition at line 350 of file RootFile.h.

Referenced by newBranchToOldBranch(), and RootFile().

◆ noEventSort_

bool edm::RootFile::noEventSort_
private

Definition at line 332 of file RootFile.h.

Referenced by goToEvent(), setIfFastClonable(), and validateFile().

◆ orderedProcessHistoryIDs_

std::vector<ProcessHistoryID>& edm::RootFile::orderedProcessHistoryIDs_
private

Definition at line 323 of file RootFile.h.

Referenced by validateFile().

◆ parentageIDLookup_

std::vector<ParentageID> edm::RootFile::parentageIDLookup_
private

Definition at line 360 of file RootFile.h.

Referenced by makeProvenanceReaderMaker(), and readParentageTree().

◆ processConfiguration_

ProcessConfiguration const& edm::RootFile::processConfiguration_
private

Definition at line 315 of file RootFile.h.

◆ processHistoryRegistry_

edm::propagate_const<ProcessHistoryRegistry*> edm::RootFile::processHistoryRegistry_
private

◆ processingMode_

InputSource::ProcessingMode edm::RootFile::processingMode_
private

Definition at line 348 of file RootFile.h.

Referenced by getNextItemType(), and setIfFastClonable().

◆ productRegistry_

std::shared_ptr<ProductRegistry const> edm::RootFile::productRegistry_
private

Definition at line 343 of file RootFile.h.

Referenced by productRegistry(), and RootFile().

◆ provenanceAdaptor_

edm::propagate_const<std::unique_ptr<ProvenanceAdaptor> > edm::RootFile::provenanceAdaptor_
private

Definition at line 357 of file RootFile.h.

Referenced by fillEventHistory(), fillLumiAuxiliary(), fillRunAuxiliary(), and RootFile().

◆ provenanceReaderMaker_

edm::propagate_const<std::unique_ptr<MakeProvenanceReader> > edm::RootFile::provenanceReaderMaker_
private

Definition at line 358 of file RootFile.h.

Referenced by makeProductProvenanceRetriever(), and RootFile().

◆ runHelper_

edm::propagate_const<RunHelperBase*> edm::RootFile::runHelper_
private

◆ runTree_

RootTree edm::RootFile::runTree_
private

◆ savedRunAuxiliary_

edm::propagate_const<std::shared_ptr<RunAuxiliary> > edm::RootFile::savedRunAuxiliary_
private

Definition at line 330 of file RootFile.h.

Referenced by readLuminosityBlockAuxiliary_(), readRunAuxiliary_(), and savedRunAuxiliary().

◆ skipAnyEvents_

bool edm::RootFile::skipAnyEvents_
private

Definition at line 331 of file RootFile.h.

Referenced by setIfFastClonable().

◆ storedMergeableRunProductMetadata_

edm::propagate_const<std::unique_ptr<StoredMergeableRunProductMetadata> > edm::RootFile::storedMergeableRunProductMetadata_
private

Definition at line 327 of file RootFile.h.

Referenced by readRun_(), and RootFile().

◆ thinnedAssociationsHelper_

edm::propagate_const<std::shared_ptr<ThinnedAssociationsHelper> > edm::RootFile::thinnedAssociationsHelper_
private

Definition at line 347 of file RootFile.h.

Referenced by initAssociationsFromSecondary().

◆ treePointers_

RootTreePtrArray edm::RootFile::treePointers_
private

Definition at line 341 of file RootFile.h.

Referenced by close(), dropOnInput(), RootFile(), and treePointers().

◆ whyNotFastClonable_

int edm::RootFile::whyNotFastClonable_
private

Definition at line 334 of file RootFile.h.

Referenced by RootFile(), setIfFastClonable(), and whyNotFastClonable().

edm::poolNames::idToParameterSetBlobsBranchName
std::string const & idToParameterSetBlobsBranchName()
Definition: BranchType.cc:216
edm::IndexIntoFile::IndexIntoFileItr::copyPosition
void copyPosition(IndexIntoFileItr const &position)
Copy the position without modifying the pointer to the IndexIntoFile or size.
Definition: IndexIntoFile.cc:1760
edm::pset::Registry::instance
static Registry * instance()
Definition: Registry.cc:12
edm::IndexIntoFile::doneFileInitialization
void doneFileInitialization()
Clears the temporary vector of event numbers to reduce memory usage.
Definition: IndexIntoFile.cc:306
edm::RootTree::tree
TTree const * tree() const
Definition: RootTree.h:182
edm::FileFormatVersion::hasThinnedAssociations
bool hasThinnedAssociations() const
Definition: FileFormatVersion.cc:45
edm::IndexIntoFile::IndexIntoFileItr::run
RunNumber_t run() const
Definition: IndexIntoFile.h:702
edm::RunNumber_t
unsigned int RunNumber_t
Definition: RunLumiEventNumber.h:14
edm::source
static const std::string source("source")
edm::EventAuxiliary::event
EventNumber_t event() const
Definition: EventAuxiliary.h:72
edm::IndexIntoFile::kLumi
Definition: IndexIntoFile.h:238
edm::IndexIntoFile::IndexIntoFileItr::firstEventEntryThisLumi
EntryNumber_t firstEventEntryThisLumi()
Definition: IndexIntoFile.h:720
edm::RootFile::eventSkipperByID_
edm::propagate_const< std::shared_ptr< EventSkipperByID > > eventSkipperByID_
Definition: RootFile.h:318
edm::TypeWithDict::byName
static TypeWithDict byName(std::string const &name)
Definition: TypeWithDict.cc:74
edm::poolNames::branchIDListBranchName
std::string const & branchIDListBranchName()
Definition: BranchType.cc:186
edm::RootTree::trainCache
void trainCache(char const *branchNames)
Definition: RootTree.cc:461
edm::FileID::isValid
bool isValid() const
Definition: FileID.h:18
benchmark-oval_cfg.noEventSort
noEventSort
Definition: benchmark-oval_cfg.py:19
mps_fire.i
i
Definition: mps_fire.py:355
edm::IndexIntoFile::IndexIntoFileItr::lumi
LuminosityBlockNumber_t lumi() const
Definition: IndexIntoFile.h:703
edm::RootTree::setEntryNumber
void setEntryNumber(EntryNumber theEntryNumber)
Definition: RootTree.cc:202
edm::RootFile::eventProductProvenanceRetrievers_
std::vector< edm::propagate_const< std::shared_ptr< ProductProvenanceRetriever > > > eventProductProvenanceRetrievers_
Definition: RootFile.h:359
edm::FileFormatVersion::useReducedProcessHistoryID
bool useReducedProcessHistoryID() const
Definition: FileFormatVersion.cc:43
edm::RootFile::eventProcessHistoryIter_
std::vector< EventProcessHistoryID >::const_iterator eventProcessHistoryIter_
Definition: RootFile.h:329
edm::RootFile::makeProductProvenanceRetriever
std::shared_ptr< ProductProvenanceRetriever > makeProductProvenanceRetriever(unsigned int iStreamIndex)
Definition: RootFile.cc:1844
edm::RootTree::EntryNumber
roottree::EntryNumber EntryNumber
Definition: RootTree.h:106
edm::poolNames::fileFormatVersionBranchName
std::string const & fileFormatVersionBranchName()
Definition: BranchType.cc:192
edm::FileFormatVersion::splitProductIDs
bool splitProductIDs() const
Definition: FileFormatVersion.cc:21
edm::find_in_all
ForwardSequence::const_iterator find_in_all(ForwardSequence const &s, Datum const &d)
wrappers for std::find
Definition: Algorithms.h:26
edm::RootFile::indexIntoFileSharedPtr_
edm::propagate_const< std::shared_ptr< IndexIntoFile > > indexIntoFileSharedPtr_
Definition: RootFile.h:321
edm::conversion
void conversion(EventAux const &from, EventAuxiliary &to)
Definition: EventAux.cc:9
edm::roottree::trainCache
std::unique_ptr< TTreeCache > trainCache(TTree *tree, InputFile &file, unsigned int cacheSize, char const *branchNames)
Definition: RootTree.cc:516
edm::getWrapperBasePtr
std::unique_ptr< WrapperBase > getWrapperBasePtr(void *p, int offset)
Definition: getWrapperBasePtr.h:8
edm::roottree::defaultNonEventLearningEntries
unsigned const int defaultNonEventLearningEntries
Definition: RootTree.h:50
edm::IndexIntoFile::iterationWillBeInEntryOrder
bool iterationWillBeInEntryOrder(SortOrder sortOrder) const
Used to determine whether or not to disable fast cloning.
Definition: IndexIntoFile.cc:474
edm::RootFile::productRegistry
std::shared_ptr< ProductRegistry const > productRegistry() const
Definition: RootFile.h:215
edm::RootFile::lumiTree_
RootTree lumiTree_
Definition: RootFile.h:339
edm::RootFile::processHistoryRegistry_
edm::propagate_const< ProcessHistoryRegistry * > processHistoryRegistry_
Definition: RootFile.h:316
edm::RootFile::indexIntoFileEnd_
IndexIntoFile::IndexIntoFileItr indexIntoFileEnd_
Definition: RootFile.h:325
edm::RootFile::daqProvenanceHelper_
edm::propagate_const< std::unique_ptr< DaqProvenanceHelper > > daqProvenanceHelper_
Definition: RootFile.h:361
edm::IndexIntoFile::findRunPosition
IndexIntoFileItr findRunPosition(RunNumber_t run) const
Same as findPosition.
Definition: IndexIntoFile.cc:692
edm::RootFile::runHelper_
edm::propagate_const< RunHelperBase * > runHelper_
Definition: RootFile.h:349
LumiList
Definition: LumiList.py:1
edm::RootFile::readParentageTree
void readParentageTree(InputType inputType)
Definition: RootFile.cc:633
edm::setIsMergeable
void setIsMergeable(BranchDescription &)
Definition: setIsMergeable.cc:15
RunList
Definition: RunList.h:16
edm::RootFile::eventHistoryTree_
edm::propagate_const< TTree * > eventHistoryTree_
Definition: RootFile.h:351
edm::FileID::fid
std::string const & fid() const
Definition: FileID.h:19
edm::RootFile::branchListIndexesUnchanged
bool branchListIndexesUnchanged() const
Definition: RootFile.h:227
edm::IndexIntoFile::kEvent
Definition: IndexIntoFile.h:238
converter
Definition: CandidateProducer.h:25
edm::IndexIntoFile::setNumberOfEvents
void setNumberOfEvents(EntryNumber_t nevents)
Definition: IndexIntoFile.h:945
edm::IndexIntoFile::IndexIntoFileItr::peekAheadAtLumi
LuminosityBlockNumber_t peekAheadAtLumi() const
Definition: IndexIntoFile.h:708
edm::IndexIntoFile::numericalOrder
Definition: IndexIntoFile.h:266
MicroEventContent_cff.branch
branch
Definition: MicroEventContent_cff.py:152
edm::RootFile::runTree
RootTree const & runTree() const
Definition: RootFile.h:223
mps_splice.entry
entry
Definition: mps_splice.py:68
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
edm::RootFile::indexIntoFileIter_
IndexIntoFile::IndexIntoFileItr indexIntoFileIter_
Definition: RootFile.h:326
edm::errors::EventCorruption
Definition: EDMException.h:43
edm::ParentageRegistry::instance
static ParentageRegistry * instance()
Definition: ParentageRegistry.cc:4
edm::IndexIntoFile::invalidEntry
static constexpr EntryNumber_t invalidEntry
Definition: IndexIntoFile.h:236
edm::RootFile::readCurrentEvent
bool readCurrentEvent(EventPrincipal &cache)
Definition: RootFile.cc:1449
l1tstage2_dqm_sourceclient-live_cfg.rawData
rawData
Definition: l1tstage2_dqm_sourceclient-live_cfg.py:162
edm::IndexIntoFile::processHistoryID
ProcessHistoryID const & processHistoryID(int i) const
Definition: IndexIntoFile.cc:55
edm::poolNames::parameterSetsTreeName
std::string const & parameterSetsTreeName()
Definition: BranchType.cc:214
edm::EventAuxiliary::oldLuminosityBlock
LuminosityBlockNumber_t oldLuminosityBlock() const
Definition: EventAuxiliary.h:70
edm::FileBlock::NotProcessingEvents
Definition: FileBlock.h:29
writedatasetfile.runs
runs
Definition: writedatasetfile.py:27
edm::RootFile::eventAux_
EventAuxiliary eventAux_
Definition: RootFile.h:337
edm::IndexIntoFile::unsortedEventNumbers
std::vector< EventNumber_t > & unsortedEventNumbers()
Definition: IndexIntoFile.h:994
edm::BranchListIndexes
std::vector< BranchListIndex > BranchListIndexes
Definition: BranchListIndex.h:18
cms::cuda::assert
assert(be >=bs)
edm::FileBlock::RunOrLumiNotContiguous
Definition: FileBlock.h:36
edm::RootFile::branchIDListHelper_
edm::propagate_const< std::shared_ptr< BranchIDListHelper > > branchIDListHelper_
Definition: RootFile.h:345
edm::second
U second(std::pair< T, U > const &p)
Definition: ParameterSet.cc:215
edm::poolNames::indexIntoFileBranchName
std::string const & indexIntoFileBranchName()
Definition: BranchType.cc:201
edm::InputType::SecondaryFile
edm::RootFile::eventTree_
RootTree eventTree_
Definition: RootFile.h:338
edm::stemFromPath
std::string_view stemFromPath(std::string_view path)
Definition: stemFromPath.cc:4
edm::RootFile::readEntryDescriptionTree
void readEntryDescriptionTree(EntryDescriptionMap &entryDescriptionMap, InputType inputType)
Definition: RootFile.cc:587
edm::RootFile::eventID
EventID const & eventID() const
Definition: RootFile.h:220
MillePedeFileConverter_cfg.fileName
fileName
Definition: MillePedeFileConverter_cfg.py:32
edm::RootFile::isDuplicateEvent
bool isDuplicateEvent()
Definition: RootFile.cc:784
edm::RootFile::enforceGUIDInFileName_
bool enforceGUIDInFileName_
Definition: RootFile.h:333
edm::FileBlock::EventsToBeSorted
Definition: FileBlock.h:35
edm::RootFile::skipThisEntry
bool skipThisEntry()
Definition: RootFile.cc:747
edm::IndexIntoFile::findPosition
IndexIntoFileItr findPosition(RunNumber_t run, LuminosityBlockNumber_t lumi=0U, EventNumber_t event=0U) const
Definition: IndexIntoFile.cc:489
edm::EventID::luminosityBlock
LuminosityBlockNumber_t luminosityBlock() const
Definition: EventID.h:39
edm::RootFile::fileFormatVersion
FileFormatVersion fileFormatVersion() const
Definition: RootFile.h:224
edm::FileFormatVersion::perEventProductIDs
bool perEventProductIDs() const
Definition: FileFormatVersion.cc:19
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
edm::LuminosityBlockNumber_t
unsigned int LuminosityBlockNumber_t
Definition: RunLumiEventNumber.h:13
edm::RootFile::eventProcessHistoryIDs_
std::vector< EventProcessHistoryID > eventProcessHistoryIDs_
Definition: RootFile.h:328
edm::poolNames::branchListIndexesBranchName
std::string const & branchListIndexesBranchName()
Definition: BranchType.cc:212
edm::InRun
Definition: BranchType.h:11
edm::IndexIntoFile::empty
bool empty() const
True if no runs, lumis, or events are in the file.
Definition: IndexIntoFile.cc:487
edm::BranchTypeToAuxiliaryBranchName
std::string const & BranchTypeToAuxiliaryBranchName(BranchType const &branchType)
Definition: BranchType.cc:115
edm::RootFile::setEntryAtLumi
bool setEntryAtLumi(RunNumber_t run, LuminosityBlockNumber_t lumi)
Definition: RootFile.cc:1635
edm::RootFile::dropOnInput
void dropOnInput(ProductRegistry &reg, ProductSelectorRules const &rules, bool dropDescendants, InputType inputType)
Definition: RootFile.cc:1701
edm::RootFile::file
std::string const & file() const
Definition: RootFile.h:214
edm::RootFile::setEntryAtRun
bool setEntryAtRun(RunNumber_t run)
Definition: RootFile.cc:1643
edm::RootTree::resetTraining
void resetTraining()
Definition: RootTree.h:194
edm::poolNames::mergeableRunProductMetadataBranchName
std::string const & mergeableRunProductMetadataBranchName()
Definition: BranchType.cc:204
edm::EventAuxiliary::run
RunNumber_t run() const
Definition: EventAuxiliary.h:73
edm::RootFile::inputType_
InputType inputType_
Definition: RootFile.h:363
edm::RootFile::RootFile
RootFile(std::string const &fileName, ProcessConfiguration const &processConfiguration, std::string const &logicalFileName, std::shared_ptr< InputFile > filePtr, std::shared_ptr< EventSkipperByID > eventSkipperByID, bool skipAnyEvents, int remainingEvents, int remainingLumis, unsigned int nStreams, unsigned int treeCacheSize, int treeMaxVirtualSize, InputSource::ProcessingMode processingMode, RunHelperBase *runHelper, bool noEventSort, ProductSelectorRules const &productSelectorRules, InputType inputType, std::shared_ptr< BranchIDListHelper > branchIDListHelper, std::shared_ptr< ThinnedAssociationsHelper > thinnedAssociationsHelper, std::vector< BranchID > const *associationsFromSecondary, std::shared_ptr< DuplicateChecker > duplicateChecker, bool dropDescendantsOfDroppedProducts, ProcessHistoryRegistry &processHistoryRegistry, std::vector< std::shared_ptr< IndexIntoFile >> const &indexesIntoFiles, std::vector< std::shared_ptr< IndexIntoFile >>::size_type currentIndexIntoFile, std::vector< ProcessHistoryID > &orderedProcessHistoryIDs, bool bypassVersionCheck, bool labelRawDataLikeMC, bool usingGoToEvent, bool enablePrefetching, bool enforceGUIDInFileName)
Definition: RootFile.cc:141
edm::RootFile::fileThinnedAssociationsHelper_
edm::propagate_const< std::unique_ptr< ThinnedAssociationsHelper > > fileThinnedAssociationsHelper_
Definition: RootFile.h:346
BXlumiParameters_cfi.lumi
lumi
Definition: BXlumiParameters_cfi.py:6
edm::FileFormatVersion::noMetaDataTrees
bool noMetaDataTrees() const
Definition: FileFormatVersion.cc:39
edm::poolNames::parentageBranchName
std::string const & parentageBranchName()
Definition: BranchType.cc:159
edm::IndexIntoFile::IndexIntoFileItr::advanceToNextRun
void advanceToNextRun()
Definition: IndexIntoFile.h:774
edm::RootTree::skipEntries
bool skipEntries(unsigned int &offset)
Definition: RootTree.cc:381
edm::RootFile::eventSelectionIDs_
EventSelectionIDVector eventSelectionIDs_
Definition: RootFile.h:352
edm::IndexIntoFile::setEventFinder
void setEventFinder(std::shared_ptr< EventFinder > ptr)
Definition: IndexIntoFile.h:952
edm::FileFormatVersion::runsAndLumis
bool runsAndLumis() const
Definition: FileFormatVersion.cc:13
edm::IndexIntoFile::invalidIndex
static constexpr int invalidIndex
Definition: IndexIntoFile.h:232
edm::EventAuxiliary::resetObsoleteInfo
void resetObsoleteInfo()
Definition: EventAuxiliary.h:71
edm::RootTree::metaTree
TTree const * metaTree() const
Definition: RootTree.h:184
edm::RootFile::provenanceAdaptor_
edm::propagate_const< std::unique_ptr< ProvenanceAdaptor > > provenanceAdaptor_
Definition: RootFile.h:357
edm::IndexIntoFile::kRun
Definition: IndexIntoFile.h:238
edm::FileFormatVersion::eventHistoryTree
bool eventHistoryTree() const
Definition: FileFormatVersion.cc:17
edm::RootFile::modifiedIDs
bool modifiedIDs() const
Definition: RootFile.h:228
edm::poolNames::processHistoryBranchName
std::string const & processHistoryBranchName()
Definition: BranchType.cc:180
edm::RootFile::fillRunAuxiliary
std::shared_ptr< RunAuxiliary > fillRunAuxiliary()
Definition: RootFile.cc:1316
edm::RootFile::branchChildren_
edm::propagate_const< std::shared_ptr< BranchChildren > > branchChildren_
Definition: RootFile.h:355
edmLumisInFiles.lumis
lumis
Definition: edmLumisInFiles.py:31
edm::RootFile::fillEventHistory
void fillEventHistory()
Definition: RootFile.cc:1237
dumpMFGeometry_cfg.prod
prod
Definition: dumpMFGeometry_cfg.py:24
edm::RootTree::fillAux
void fillAux(T *&pAux)
Definition: RootTree.h:144
edm::RootFile::getNextItemType
IndexIntoFile::EntryType getNextItemType(RunNumber_t &run, LuminosityBlockNumber_t &lumi, EventNumber_t &event)
Definition: RootFile.cc:801
edm::RootFile::branchListIndexes_
BranchListIndexes branchListIndexes_
Definition: RootFile.h:353
edm::EventAuxiliary::id
EventID const & id() const
Definition: EventAuxiliary.h:63
edm::RootTree::fillBranchEntry
void fillBranchEntry(TBranch *branch, T *&pbuf)
Definition: RootTree.h:160
edm::RootFile::savedRunAuxiliary
std::shared_ptr< RunAuxiliary const > savedRunAuxiliary() const
Definition: RootFile.h:300
edm::ProcessHistoryRegistry::vector_type
ProcessHistoryVector vector_type
Definition: ProcessHistoryRegistry.h:22
edm::IndexIntoFile::IndexIntoFileItr::processHistoryIDIndex
int processHistoryIDIndex() const
Definition: IndexIntoFile.h:701
edm::InEvent
Definition: BranchType.h:11
edm::poolNames::parameterSetMapBranchName
std::string const & parameterSetMapBranchName()
Definition: BranchType.cc:171
edm::RootFile::whyNotFastClonable_
int whyNotFastClonable_
Definition: RootFile.h:334
edm::RootFile::thinnedAssociationsHelper_
edm::propagate_const< std::shared_ptr< ThinnedAssociationsHelper > > thinnedAssociationsHelper_
Definition: RootFile.h:347
OrderedSet.t
t
Definition: OrderedSet.py:90
edm::InputSource::RunsAndLumis
Definition: InputSource.h:80
edm::RootFile::hasNewlyDroppedBranch
std::array< bool, NumBranchTypes > const & hasNewlyDroppedBranch() const
Definition: RootFile.h:226
edm::poolNames::entryDescriptionIDBranchName
std::string const & entryDescriptionIDBranchName()
Definition: BranchType.cc:152
edm::RootTree::resetAndGetRootDelayedReader
DelayedReader * resetAndGetRootDelayedReader() const
Definition: RootTree.cc:123
edm::RootFile::fillIndexIntoFile
void fillIndexIntoFile()
Definition: RootFile.cc:913
edm::IndexIntoFile::invalidLumi
static constexpr LuminosityBlockNumber_t invalidLumi
Definition: IndexIntoFile.h:234
edm::poolNames::parentageTreeName
std::string const & parentageTreeName()
Definition: BranchType.cc:157
edm::FileFormatVersion::newAuxiliary
bool newAuxiliary() const
Definition: FileFormatVersion.cc:11
edm::EventID::run
RunNumber_t run() const
Definition: EventID.h:38
edm::BranchIDLists
std::vector< BranchIDList > BranchIDLists
Definition: BranchIDList.h:19
mitigatedMETSequence_cff.U
U
Definition: mitigatedMETSequence_cff.py:36
edm::RootFile::treePointers_
RootTreePtrArray treePointers_
Definition: RootFile.h:341
edm::RootFile::indexIntoFile_
IndexIntoFile & indexIntoFile_
Definition: RootFile.h:322
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::numEntries
Long64_t numEntries(TFile *hdl, std::string const &trname)
Definition: CollUtil.cc:50
edm::IndexIntoFile::IndexIntoFileItr::skipEventForward
void skipEventForward(int &phIndexOfSkippedEvent, RunNumber_t &runOfSkippedEvent, LuminosityBlockNumber_t &lumiOfSkippedEvent, EntryNumber_t &skippedEventEntry)
Definition: IndexIntoFile.h:745
edm::IndexIntoFile::begin
IndexIntoFileItr begin(SortOrder sortOrder) const
Definition: IndexIntoFile.cc:461
edm::RootFile::newBranchToOldBranch
std::string const & newBranchToOldBranch(std::string const &newBranch) const
Definition: RootFile.cc:728
edm::IndexIntoFile::IndexIntoFileItr::skipLumiInRun
bool skipLumiInRun()
Definition: IndexIntoFile.h:768
edm::RootFile::fid_
FileID fid_
Definition: RootFile.h:320
edm::RootFile::orderedProcessHistoryIDs_
std::vector< ProcessHistoryID > & orderedProcessHistoryIDs_
Definition: RootFile.h:323
edm::get_underlying_safe
std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
Definition: get_underlying_safe.h:40
edm::poolNames::eventSelectionsBranchName
std::string const & eventSelectionsBranchName()
Definition: BranchType.cc:210
edm::ProductRegistry::ProductList
std::map< BranchKey, BranchDescription > ProductList
Definition: ProductRegistry.h:36
edm::RootFile::savedRunAuxiliary_
edm::propagate_const< std::shared_ptr< RunAuxiliary > > savedRunAuxiliary_
Definition: RootFile.h:330
edm::RootFile::storedMergeableRunProductMetadata_
edm::propagate_const< std::unique_ptr< StoredMergeableRunProductMetadata > > storedMergeableRunProductMetadata_
Definition: RootFile.h:327
edm::RootFile::hasNewlyDroppedBranch_
std::array< bool, NumBranchTypes > hasNewlyDroppedBranch_
Definition: RootFile.h:335
edm::RootFile::makeProvenanceReaderMaker
std::unique_ptr< MakeProvenanceReader > makeProvenanceReaderMaker(InputType inputType)
Definition: RootFile.cc:1828
edm::IndexIntoFile::firstAppearanceOrder
Definition: IndexIntoFile.h:266
fetchall_from_DQM_v2.release
release
Definition: fetchall_from_DQM_v2.py:92
ParameterSet
Definition: Functions.h:16
edm::InLumi
Definition: BranchType.h:11
edm::IndexIntoFile::SortOrder
SortOrder
Definition: IndexIntoFile.h:266
edm::poolNames::productDescriptionBranchName
std::string const & productDescriptionBranchName()
Definition: BranchType.cc:165
edm::RootFile::setEntryAtEvent
bool setEntryAtEvent(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event)
Definition: RootFile.cc:1627
edm::EventAuxiliary::luminosityBlock
LuminosityBlockNumber_t luminosityBlock() const
Definition: EventAuxiliary.h:67
edm::RootFile::setIfFastClonable
void setIfFastClonable(int remainingEvents, int remainingLumis)
Definition: RootFile.cc:668
edm::RootFile::logicalFile_
const std::string logicalFile_
Definition: RootFile.h:314
edm::errors::FileNameInconsistentWithGUID
Definition: EDMException.h:68
edm::RootFile::initializeDuplicateChecker
void initializeDuplicateChecker(std::vector< std::shared_ptr< IndexIntoFile >> const &indexesIntoFiles, std::vector< std::shared_ptr< IndexIntoFile >>::size_type currentIndexIntoFile)
Definition: RootFile.cc:1677
edm::RootFile::processingMode_
InputSource::ProcessingMode processingMode_
Definition: RootFile.h:348
edm::friendlyname::friendlyName
std::string friendlyName(std::string const &iFullName)
Definition: FriendlyName.cc:233
edm::RootFile::validateFile
void validateFile(InputType inputType, bool usingGoToEvent)
Definition: RootFile.cc:1137
edm::FileBlock::FileTooOld
Definition: FileBlock.h:33
edm::RootFile::markBranchToBeDropped
void markBranchToBeDropped(bool dropDescendants, BranchDescription const &branch, std::set< BranchID > &branchesToDrop, std::map< BranchID, BranchID > const &droppedToKeptAlias) const
Definition: RootFile.cc:1690
edm::RootFile::filePtr_
edm::propagate_const< std::shared_ptr< InputFile > > filePtr_
Definition: RootFile.h:317
edm::IndexIntoFile::IndexIntoFileItr::firstEventEntryThisRun
EntryNumber_t firstEventEntryThisRun()
Definition: IndexIntoFile.h:719
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
edm::poolNames::entryDescriptionTreeName
std::string const & entryDescriptionTreeName()
Definition: BranchType.cc:150
edm::IndexIntoFile::findLumiPosition
IndexIntoFileItr findLumiPosition(RunNumber_t run, LuminosityBlockNumber_t lumi) const
Definition: IndexIntoFile.cc:685
edm::ProcessConfigurationVector
std::vector< ProcessConfiguration > ProcessConfigurationVector
Definition: ProcessConfiguration.h:62
edm::FileBlock::EventsOrLumisSelectedByID
Definition: FileBlock.h:37
edm::EventID::event
EventNumber_t event() const
Definition: EventID.h:40
edm::RootFile::branchChildren
std::shared_ptr< BranchChildren const > branchChildren() const
Definition: RootFile.h:303
edm::poolNames::processHistoryMapBranchName
std::string const & processHistoryMapBranchName()
Definition: BranchType.cc:177
edm::FileBlock::NoEventsInFile
Definition: FileBlock.h:34
edm::RootFile::skipAnyEvents_
bool skipAnyEvents_
Definition: RootFile.h:331
edm::RootFile::fillEventAuxiliary
bool fillEventAuxiliary(IndexIntoFile::EntryNumber_t entry)
Definition: RootFile.cc:1228
edm::roottree::defaultLearningEntries
unsigned const int defaultLearningEntries
Definition: RootTree.h:49
edm::RootFile::edProductClass_
edm::propagate_const< TClass * > edProductClass_
Definition: RootFile.h:362
edm::RootFile::fileFormatVersion_
FileFormatVersion fileFormatVersion_
Definition: RootFile.h:319
edm::EventAuxiliary::time
Timestamp const & time() const
Definition: EventAuxiliary.h:66
B2GTnPMonitor_cfi.item
item
Definition: B2GTnPMonitor_cfi.py:147
edm::IndexIntoFile::end
IndexIntoFileItr end(SortOrder sortOrder) const
Used to end an iteration over the Runs, Lumis, and Events in a file.
Definition: IndexIntoFile.cc:470
edm::FileFormatVersion::processHistorySameWithinRun
bool processHistorySameWithinRun() const
Definition: FileFormatVersion.cc:33
edm::RootFile::readEventHistoryTree
void readEventHistoryTree()
Definition: RootFile.cc:1666
edm::lower_bound_all
ForwardSequence::const_iterator lower_bound_all(ForwardSequence const &s, Datum const &d)
wrappers for std::lower_bound
Definition: Algorithms.h:69
itr
std::vector< std::pair< float, float > >::iterator itr
Definition: HGCDigitizer.cc:28
edm::RootTree::branchNames
std::vector< std::string > const & branchNames() const
Definition: RootTree.h:140
edm::RootTree::insertEntryForIndex
void insertEntryForIndex(unsigned int index)
Definition: RootTree.cc:105
edm::IndexIntoFile::findEventPosition
IndexIntoFileItr findEventPosition(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
Definition: IndexIntoFile.cc:676
TrackValidation_cff.association
association
Definition: TrackValidation_cff.py:286
edm::FileFormatVersion::storedProductProvenanceUsed
bool storedProductProvenanceUsed() const
Definition: FileFormatVersion.cc:41
edm::IndexIntoFile::containsItem
bool containsItem(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
Definition: IndexIntoFile.cc:696
edm::InputSource::Runs
Definition: InputSource.h:80
edm::EntryDescriptionID
Hash< EntryDescriptionType > EntryDescriptionID
Definition: EntryDescriptionID.h:8
edm::IndexIntoFile::IndexIntoFileItr::getEntryType
EntryType getEntryType() const
Definition: IndexIntoFile.h:700
edm::roottree::defaultNonEventCacheSize
unsigned const int defaultNonEventCacheSize
Definition: RootTree.h:48
edm::RootFile::history_
edm::propagate_const< std::unique_ptr< History > > history_
Definition: RootFile.h:354
edm::Timestamp::invalidTimestamp
static Timestamp invalidTimestamp()
Definition: Timestamp.h:82
HLT_2018_cff.finder
finder
Definition: HLT_2018_cff.py:50398
edm::RootFile::noEventSort_
bool noEventSort_
Definition: RootFile.h:332
edm::RootTree::current
bool current() const
Definition: RootTree.h:130
edm::RootTree::isValid
bool isValid() const
Definition: RootTree.cc:110
edm::RootFile::provenanceReaderMaker_
edm::propagate_const< std::unique_ptr< MakeProvenanceReader > > provenanceReaderMaker_
Definition: RootFile.h:358
eostools.move
def move(src, dest)
Definition: eostools.py:511
edm::RootFile::eventAux
EventAuxiliary const & eventAux() const
Definition: RootFile.h:216
writedatasetfile.run
run
Definition: writedatasetfile.py:27
edm::RootFile::parentageIDLookup_
std::vector< ParentageID > parentageIDLookup_
Definition: RootFile.h:360
edm::ProcessHistoryID
Hash< ProcessHistoryType > ProcessHistoryID
Definition: ProcessHistoryID.h:8
edm::RootTree::entryNumber
EntryNumber const & entryNumber() const
Definition: RootTree.h:135
edm::RootTree::rewind
void rewind()
Definition: RootTree.h:132
edm::RootFile::lastEventEntryNumberRead_
IndexIntoFile::EntryNumber_t lastEventEntryNumberRead_
Definition: RootFile.h:342
edm::RootTree::entries
EntryNumber const & entries() const
Definition: RootTree.h:137
edm::IndexIntoFile::IndexIntoFileItr::advanceToNextLumiOrRun
void advanceToNextLumiOrRun()
Definition: IndexIntoFile.h:775
edm::poolNames::metaDataTreeName
std::string const & metaDataTreeName()
Definition: BranchType.cc:162
edm::ProcessHistoryRegistry::collection_type
ProcessHistoryMap collection_type
Definition: ProcessHistoryRegistry.h:21
edm::EventAuxiliary::processHistoryID
ProcessHistoryID const & processHistoryID() const
Definition: EventAuxiliary.h:61
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
edm::InputType::Primary
edm::ParentageID
Hash< ParentageType > ParentageID
Definition: ParentageID.h:8
Exception
Definition: hltDiff.cc:246
edm::IndexIntoFile::fillEventNumbersOrEntries
void fillEventNumbersOrEntries(bool needEventNumbers, bool needEventEntries) const
Definition: IndexIntoFile.cc:202
edm::RootFile::productRegistry_
std::shared_ptr< ProductRegistry const > productRegistry_
Definition: RootFile.h:343
edm::RootFile::whyNotFastClonable
int whyNotFastClonable() const
Definition: RootFile.h:225
edm::IndexIntoFile::reduceProcessHistoryIDs
void reduceProcessHistoryIDs(ProcessHistoryRegistry const &processHistoryRegistry)
Definition: IndexIntoFile.cc:308
edm::InputType::SecondarySource
edm::poolNames::thinnedAssociationsHelperBranchName
std::string const & thinnedAssociationsHelperBranchName()
Definition: BranchType.cc:189
edm::IndexIntoFile::EntryNumber_t
long long EntryNumber_t
Definition: IndexIntoFile.h:231
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
edm::poolNames::productDependenciesBranchName
std::string const & productDependenciesBranchName()
Definition: BranchType.cc:168
filterCSVwithJSON.target
target
Definition: filterCSVwithJSON.py:32
edm::RootFile::newBranchToOldBranch_
std::map< std::string, std::string > newBranchToOldBranch_
Definition: RootFile.h:350
edm::poolNames::eventHistoryTreeName
std::string const & eventHistoryTreeName()
Definition: BranchType.cc:222
drop
const int drop
Definition: GenParticlePruner.cc:48
DTskim_cfg.processingMode
processingMode
Definition: DTskim_cfg.py:82
edm::IndexIntoFile::kEnd
Definition: IndexIntoFile.h:238
edm::RootFile::indexIntoFileBegin_
IndexIntoFile::IndexIntoFileItr indexIntoFileBegin_
Definition: RootFile.h:324
edm::roottree::getEntry
Int_t getEntry(TBranch *branch, EntryNumber entryNumber)
Definition: RootTree.cc:496
cmsCodeRulesChecker.rules
rules
Definition: cmsCodeRulesChecker.py:152
edm::IndexIntoFile::fixIndexes
void fixIndexes(std::vector< ProcessHistoryID > &processHistoryIDs)
Definition: IndexIntoFile.cc:370
edm::stable_sort_all
void stable_sort_all(RandomAccessSequence &s)
wrappers for std::stable_sort
Definition: Algorithms.h:103
edm::EventAuxiliary::isRealData
bool isRealData() const
Definition: EventAuxiliary.h:74
edm::IndexIntoFile::setRunOrLumiEntries
std::vector< RunOrLumiEntry > & setRunOrLumiEntries()
Definition: IndexIntoFile.h:1007
edm::FileBlock::MaxEventsTooSmall
Definition: FileBlock.h:39
edm::poolNames::fileIdentifierBranchName
std::string const & fileIdentifierBranchName()
Definition: BranchType.cc:195
edm::moduleName
std::string moduleName(Provenance const &provenance, ProcessHistory const &history)
Definition: Provenance.cc:27
edm::RootFile::branchListIndexesUnchanged_
bool branchListIndexesUnchanged_
Definition: RootFile.h:336
parents
TPRegexp parents
Definition: eve_filter.cc:21
ntuplemaker.time
time
Definition: ntuplemaker.py:310
event
Definition: event.py:1
edm::RootTree::setSignals
void setSignals(signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const *preEventReadSource, signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const *postEventReadSource)
Definition: RootTree.cc:489
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
edm::poolNames::entryDescriptionBranchName
std::string const & entryDescriptionBranchName()
Definition: BranchType.cc:154
CommonMethods.cp
def cp(fromDir, toDir, listOfFiles, overwrite=False, smallList=False)
Definition: CommonMethods.py:192
edm::IndexIntoFile::IndexIntoFileItr::skipEventBackward
void skipEventBackward(int &phIndexOfEvent, RunNumber_t &runOfEvent, LuminosityBlockNumber_t &lumiOfEvent, EntryNumber_t &eventEntry)
Definition: IndexIntoFile.h:759
lumi
Definition: LumiSectionData.h:20
event
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of "!*" before the partial wildcard feature was incorporated). The per-event "cost" of each negative criterion with multiple relevant triggers is about the same as ! *was in the past
edm::RootFile::runTree_
RootTree runTree_
Definition: RootFile.h:340
edm::errors::FileReadError
Definition: EDMException.h:50
edm::RootTree::nextWithCache
bool nextWithCache()
Definition: RootTree.cc:194
edm::EventAuxiliary::setProcessHistoryID
void setProcessHistoryID(ProcessHistoryID const &phid)
Definition: EventAuxiliary.h:62
edm::poolNames::processConfigurationBranchName
std::string const & processConfigurationBranchName()
Definition: BranchType.cc:183
edm::RootFile::eventProductProvenanceRetriever
std::shared_ptr< ProductProvenanceRetriever const > eventProductProvenanceRetriever(size_t index) const
Definition: RootFile.h:306
edm::errors::UnimplementedFeature
Definition: EDMException.h:38
edm::FileBlock::MaxLumisTooSmall
Definition: FileBlock.h:40
label
const char * label
Definition: PFTauDecayModeTools.cc:11
edm::InputSource::RunsLumisAndEvents
Definition: InputSource.h:80
edm::RootFile::branchIDLists_
std::shared_ptr< BranchIDLists const > branchIDLists_
Definition: RootFile.h:344
edm::IndexIntoFile::setProcessHistoryIDs
std::vector< ProcessHistoryID > & setProcessHistoryIDs()
Definition: IndexIntoFile.h:1012
edm::RootFile::branchIDListHelper
std::shared_ptr< BranchIDListHelper const > branchIDListHelper() const
Definition: RootFile.h:253
edm::poolNames::moduleDescriptionMapBranchName
std::string const & moduleDescriptionMapBranchName()
Definition: BranchType.cc:174
edm::RootTree::next
bool next()
Definition: RootTree.h:127
edm::RootFile::duplicateChecker_
edm::propagate_const< std::shared_ptr< DuplicateChecker > > duplicateChecker_
Definition: RootFile.h:356
edm::FileBlock::DuplicateEventsRemoved
Definition: FileBlock.h:42
edm::ParameterSetConverter::ParameterSetIdConverter
std::map< ParameterSetID, ParameterSetID > ParameterSetIdConverter
Definition: ParameterSetConverter.h:46
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
edm::RootFile::fillLumiAuxiliary
std::shared_ptr< LuminosityBlockAuxiliary > fillLumiAuxiliary()
Definition: RootFile.cc:1293
edm::IndexIntoFile::IndexIntoFileItr::entry
EntryNumber_t entry() const
Definition: IndexIntoFile.h:704
edm::IndexIntoFile::invalidRun
static constexpr RunNumber_t invalidRun
Definition: IndexIntoFile.h:233
edm::poolNames::eventHistoryBranchName
std::string const & eventHistoryBranchName()
Definition: BranchType.cc:207
edm::IndexIntoFile::IndexIntoFileItr::advanceToEvent
void advanceToEvent()
Definition: IndexIntoFile.cc:1748
edm::IndexIntoFile::fillEventNumbers
void fillEventNumbers() const
Definition: IndexIntoFile.cc:198
edm::IndexIntoFile::EntryType
EntryType
Definition: IndexIntoFile.h:238
edm::FileBlock::InitialEventsSkipped
Definition: FileBlock.h:38
edm::createGlobalIdentifier
std::string createGlobalIdentifier()
Definition: GlobalIdentifier.cc:5
edm::RootFile::processConfiguration_
ProcessConfiguration const & processConfiguration_
Definition: RootFile.h:315
edm::RootFile::fillThisEventAuxiliary
void fillThisEventAuxiliary()
Definition: RootFile.cc:1210
edm::RootFile::file_
const std::string file_
Definition: RootFile.h:313