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 {
22  ParameterSet const& pset,
24  InputFileCatalog const& catalog) :
25  RootInputFileSequence(pset, catalog),
26  input_(input),
27  orderedProcessHistoryIDs_(),
28  enablePrefetching_(false) {
29 
30  // The SiteLocalConfig controls the TTreeCache size and the prefetching settings.
32  if(pSLC.isAvailable()) {
33  enablePrefetching_ = pSLC->enablePrefetching();
34  }
35 
36  // Prestage the files
37  //NOTE: we do not want to stage in all secondary files since we can be given a list of
38  // thousands of files and prestaging all those files can cause a site to fail.
39  // So, we stage in the first secondary file only.
42 
43  // Open the first file.
46  if(rootFile()) break;
47  }
48  if(rootFile()) {
49  input_.productRegistryUpdate().updateFromInput(rootFile()->productRegistry()->productList());
50  }
51  }
52 
54  }
55 
56  void
58  closeFile_();
59  }
60 
61  void
63  // close the currently open file, if any, and delete the RootFile object.
64  if(rootFile()) {
65  rootFile()->close();
66  rootFile().reset();
67  }
68  }
69 
71  initTheFile(skipBadFiles, false, nullptr, "secondaryFiles", InputType::SecondaryFile);
72  }
73 
75  RootSecondaryFileSequence::makeRootFile(std::shared_ptr<InputFile> filePtr) {
76  size_t currentIndexIntoFile = sequenceNumberOfFile();
77  return std::make_shared<RootFile>(
78  fileName(),
81  filePtr,
82  input_.nStreams(),
85  input_.runHelper(),
94  currentIndexIntoFile,
99  }
100 
101  void
102  RootSecondaryFileSequence::initAssociationsFromSecondary(std::set<BranchID> const& associationsFromSecondary) {
103  for(auto const& branchID : associationsFromSecondary) {
104  associationsFromSecondary_.push_back(branchID);
105  }
106  rootFile()->initAssociationsFromSecondary(associationsFromSecondary_);
107  }
108 }
std::string const & logicalFileName() const
void initFile(bool skipBadFiles)
void initAssociationsFromSecondary(std::set< BranchID > const &)
ProductRegistry & productRegistryUpdate()
Definition: InputSource.h:356
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:258
std::vector< BranchID > associationsFromSecondary_
static std::string const input
Definition: EdmProvDump.cc:44
RunHelperBase * runHelper()
Definition: PoolSource.h:47
std::shared_ptr< RootFile > RootFileSharedPtr
virtual 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:46
virtual 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:180
bool labelRawDataLikeMC() const
Definition: PoolSource.h:43
RootSecondaryFileSequence(ParameterSet const &pset, PoolSource &input, InputFileCatalog const &catalog)
ProcessHistoryRegistry & processHistoryRegistryForUpdate()
Definition: InputSource.h:357
HLT enums.
std::shared_ptr< ThinnedAssociationsHelper const > thinnedAssociationsHelper() const
Accessors for thinnedAssociationsHelper.
Definition: InputSource.h:184
void updateFromInput(ProductList const &other)
std::vector< ProcessHistoryID > orderedProcessHistoryIDs_
ProcessConfiguration const & processConfiguration() const
Accessor for Process Configuration.
Definition: InputSource.h:216
ProductSelectorRules const & productSelectorRules() const
Definition: PoolSource.h:46