CMS 3D CMS Logo

RootInputFileSequence.h
Go to the documentation of this file.
1 #ifndef IOPool_Input_RootInputFileSequence_h
2 #define IOPool_Input_RootInputFileSequence_h
3 
4 /*----------------------------------------------------------------------
5 
6 RootInputFileSequence: This is an InputSource
7 
8 ----------------------------------------------------------------------*/
9 
10 #include "InputFile.h"
15 
16 #include <memory>
17 #include <string>
18 #include <unordered_map>
19 #include <vector>
20 
21 namespace edm {
22 
23  class FileCatalogItem;
24  class IndexIntoFile;
25  class InputFileCatalog;
27  class RootFile;
28 
30  public:
31  explicit RootInputFileSequence(ParameterSet const& pset,
32  InputFileCatalog const& catalog);
33  virtual ~RootInputFileSequence();
34 
35  RootInputFileSequence(RootInputFileSequence const&) = delete; // Disallow copying and moving
36  RootInputFileSequence& operator=(RootInputFileSequence const&) = delete; // Disallow copying and moving
37 
39  void readEvent(EventPrincipal& cache);
40  std::shared_ptr<LuminosityBlockAuxiliary> readLuminosityBlockAuxiliary_();
42  std::shared_ptr<RunAuxiliary> readRunAuxiliary_();
43  void readRun_(RunPrincipal& runPrincipal);
44  bool skipToItem(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event, size_t fileNameHash = 0U, bool currentFileFirst = true);
45  std::shared_ptr<ProductRegistry const> fileProductRegistry() const;
46  std::shared_ptr<BranchIDListHelper const> fileBranchIDListHelper() const;
47  protected:
48  typedef std::shared_ptr<RootFile> RootFileSharedPtr;
49  void initFile(bool skipBadFiles) {initFile_(skipBadFiles);}
50  void initTheFile(bool skipBadFiles, bool deleteIndexIntoFile, InputSource* input, char const* inputTypeName, InputType inputType);
52  bool skipToItemInNewFile(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event, size_t fileNameHash);
53 
54  bool atFirstFile() const {return fileIter_ == fileIterBegin_;}
55  bool atLastFile() const {return fileIter_ + 1 == fileIterEnd_;}
56  bool noMoreFiles() const {return fileIter_ == fileIterEnd_;}
57  bool noFiles() const {return fileIterBegin_ == fileIterEnd_;}
58  size_t sequenceNumberOfFile() const {return fileIter_ - fileIterBegin_;}
59  size_t numberOfFiles() const {return fileIterEnd_ - fileIterBegin_;}
60 
66 
67  std::string const& fileName() const {return fileIter_->fileName();}
68  std::string const& logicalFileName() const {return fileIter_->logicalFileName();}
69  std::string const& fallbackFileName() const {return fileIter_->fallbackFileName();}
70  std::string const& lfn() const {return lfn_;}
71  std::vector<FileCatalogItem> const& fileCatalogItems() const;
72 
73  std::vector<std::shared_ptr<IndexIntoFile> > const& indexesIntoFiles() const {return indexesIntoFiles_;}
74  void setIndexIntoFile(size_t index);
75  size_t lfnHash() const {return lfnHash_;}
76  bool usedFallback() const {return usedFallback_;}
77 
78  std::shared_ptr<RootFile const> rootFile() const {return get_underlying_safe(rootFile_);}
79  std::shared_ptr<RootFile>& rootFile() {return get_underlying_safe(rootFile_);}
80  private:
83  size_t lfnHash_;
86  std::vector<FileCatalogItem>::const_iterator const fileIterBegin_;
87  std::vector<FileCatalogItem>::const_iterator const fileIterEnd_;
88  std::vector<FileCatalogItem>::const_iterator fileIter_;
89  std::vector<FileCatalogItem>::const_iterator fileIterLastOpened_;
91  std::vector<std::shared_ptr<IndexIntoFile> > indexesIntoFiles_;
92 
93  private:
94  virtual RootFileSharedPtr makeRootFile(std::shared_ptr<InputFile> filePtr) = 0;
95  virtual void initFile_(bool skipBadFiles) = 0;
96  virtual void closeFile_() = 0;
97 
98  }; // class RootInputFileSequence
99 }
100 #endif
std::string const & logicalFileName() const
InputType
Definition: InputType.h:5
void initFile(bool skipBadFiles)
std::string const & fileName() const
void setAtFileSequenceNumber(size_t offset)
std::vector< FileCatalogItem >::const_iterator const fileIterEnd_
std::vector< FileCatalogItem >::const_iterator fileIter_
std::vector< FileCatalogItem >::const_iterator const fileIterBegin_
std::shared_ptr< BranchIDListHelper const > fileBranchIDListHelper() const
unsigned long long EventNumber_t
std::vector< std::shared_ptr< IndexIntoFile > > const & indexesIntoFiles() const
unsigned int LuminosityBlockNumber_t
static std::string const input
Definition: EdmProvDump.cc:44
std::shared_ptr< RootFile > RootFileSharedPtr
std::vector< FileCatalogItem >::const_iterator fileIterLastOpened_
std::vector< FileCatalogItem > const & fileCatalogItems() const
std::string const & lfn() const
void initTheFile(bool skipBadFiles, bool deleteIndexIntoFile, InputSource *input, char const *inputTypeName, InputType inputType)
virtual RootFileSharedPtr makeRootFile(std::shared_ptr< InputFile > filePtr)=0
std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
virtual void initFile_(bool skipBadFiles)=0
void readRun_(RunPrincipal &runPrincipal)
std::vector< std::shared_ptr< IndexIntoFile > > indexesIntoFiles_
void readLuminosityBlock_(LuminosityBlockPrincipal &lumiPrincipal)
std::shared_ptr< RootFile const > rootFile() const
bool skipToItem(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event, size_t fileNameHash=0U, bool currentFileFirst=true)
edm::propagate_const< RootFileSharedPtr > rootFile_
std::shared_ptr< RootFile > & rootFile()
bool containedInCurrentFile(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
bool skipToItemInNewFile(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event)
std::shared_ptr< RunAuxiliary > readRunAuxiliary_()
HLT enums.
std::shared_ptr< LuminosityBlockAuxiliary > readLuminosityBlockAuxiliary_()
RootInputFileSequence & operator=(RootInputFileSequence const &)=delete
virtual void closeFile_()=0
RootInputFileSequence(ParameterSet const &pset, InputFileCatalog const &catalog)
unsigned int RunNumber_t
void readEvent(EventPrincipal &cache)
std::shared_ptr< ProductRegistry const > fileProductRegistry() const
edm::propagate_const< std::unique_ptr< std::unordered_multimap< size_t, size_t > > > findFileForSpecifiedID_
Definition: event.py:1
std::string const & fallbackFileName() const
InputFileCatalog const & catalog_