CMS 3D CMS Logo

RootSecondaryFileSequence.cc
Go to the documentation of this file.
1 /*----------------------------------------------------------------------
2 ----------------------------------------------------------------------*/
3 #include "DuplicateChecker.h"
4 #include "PoolSource.h"
5 #include "InputFile.h"
6 #include "RootFile.h"
8 #include "RootTree.h"
9 
19 
20 namespace edm {
24  : RootInputFileSequence(pset, catalog), input_(input), orderedProcessHistoryIDs_(), enablePrefetching_(false) {
25  // The SiteLocalConfig controls the TTreeCache size and the prefetching settings.
27  if (pSLC.isAvailable()) {
28  enablePrefetching_ = pSLC->enablePrefetching();
29  }
30 
31  // Prestage the files
32  //NOTE: we do not want to stage in all secondary files since we can be given a list of
33  // thousands of files and prestaging all those files can cause a site to fail.
34  // So, we stage in the first secondary file only.
37 
38  // Open the first file.
41  if (rootFile())
42  break;
43  }
44  if (rootFile()) {
45  input_.productRegistryUpdate().updateFromInput(rootFile()->productRegistry()->productList());
46  }
47  }
48 
50 
52 
54  // close the currently open file, if any, and delete the RootFile object.
55  if (rootFile()) {
56  rootFile()->close();
57  rootFile().reset();
58  }
59  }
60 
62  initTheFile(skipBadFiles, false, nullptr, "secondaryFiles", InputType::SecondaryFile);
63  }
64 
66  std::shared_ptr<InputFile> filePtr) {
67  size_t currentIndexIntoFile = sequenceNumberOfFile();
68  return std::make_shared<RootFile>(fileName(),
71  filePtr,
72  input_.nStreams(),
75  input_.runHelper(),
84  currentIndexIntoFile,
89  }
90 
91  void RootSecondaryFileSequence::initAssociationsFromSecondary(std::set<BranchID> const& associationsFromSecondary) {
92  for (auto const& branchID : associationsFromSecondary) {
93  associationsFromSecondary_.push_back(branchID);
94  }
95  rootFile()->initAssociationsFromSecondary(associationsFromSecondary_);
96  }
97 } // namespace edm
std::string const & logicalFileName() const
void initFile(bool skipBadFiles)
void initAssociationsFromSecondary(std::set< BranchID > const &)
ProductRegistry & productRegistryUpdate()
Definition: InputSource.h:326
std::string const & fileName() const
std::vector< std::shared_ptr< IndexIntoFile > > const & indexesIntoFiles() const
ProcessingMode processingMode() const
RunsLumisAndEvents (default), RunsAndLumis, or Runs.
Definition: InputSource.h:233
std::vector< BranchID > associationsFromSecondary_
static std::string const input
Definition: EdmProvDump.cc:48
RunHelperBase * runHelper()
Definition: PoolSource.h:47
std::shared_ptr< RootFile > RootFileSharedPtr
void initFile_(bool skipBadFiles) override
static const StorageFactory * get(void)
void stagein(const std::string &url) const
void initTheFile(bool skipBadFiles, bool deleteIndexIntoFile, InputSource *input, char const *inputTypeName, InputType inputType)
bool isAvailable() const
Definition: Service.h:40
RootFileSharedPtr makeRootFile(std::shared_ptr< InputFile > filePtr) override
unsigned int nStreams() const
Definition: PoolSource.h:44
bool dropDescendants() const
Definition: PoolSource.h:41
bool bypassVersionCheck() const
Definition: PoolSource.h:42
std::shared_ptr< RootFile const > rootFile() const
int treeMaxVirtualSize() const
Definition: PoolSource.h:45
bool skipBadFiles() const
Definition: PoolSource.h:40
std::shared_ptr< BranchIDListHelper const > branchIDListHelper() const
Accessors for branchIDListHelper.
Definition: InputSource.h:159
bool labelRawDataLikeMC() const
Definition: PoolSource.h:43
RootSecondaryFileSequence(ParameterSet const &pset, PoolSource &input, InputFileCatalog const &catalog)
ProcessHistoryRegistry & processHistoryRegistryForUpdate()
Definition: InputSource.h:327
HLT enums.
std::shared_ptr< ThinnedAssociationsHelper const > thinnedAssociationsHelper() const
Accessors for thinnedAssociationsHelper.
Definition: InputSource.h:165
void updateFromInput(ProductList const &other)
std::vector< ProcessHistoryID > orderedProcessHistoryIDs_
ProcessConfiguration const & processConfiguration() const
Accessor for Process Configuration.
Definition: InputSource.h:201
ProductSelectorRules const & productSelectorRules() const
Definition: PoolSource.h:46