CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
edm::RootPrimaryFileSequence Class Reference

#include <RootPrimaryFileSequence.h>

Inheritance diagram for edm::RootPrimaryFileSequence:
edm::RootInputFileSequence

Public Member Functions

void closeFile_ () override
 
void endJob ()
 
ProcessingController::ForwardState forwardState () const
 
InputSource::ItemType getNextItemType (RunNumber_t &run, LuminosityBlockNumber_t &lumi, EventNumber_t &event)
 
bool goToEvent (EventID const &eventID)
 
RootPrimaryFileSequenceoperator= (RootPrimaryFileSequence const &)=delete
 
std::unique_ptr< FileBlockreadFile_ ()
 
ProcessingController::ReverseState reverseState () const
 
void rewind_ ()
 
 RootPrimaryFileSequence (ParameterSet const &pset, PoolSource &input, InputFileCatalog const &catalog)
 
 RootPrimaryFileSequence (RootPrimaryFileSequence const &)=delete
 
bool skipEvents (int offset)
 
 ~RootPrimaryFileSequence () override
 
- Public Member Functions inherited from edm::RootInputFileSequence
bool containedInCurrentFile (RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
 
std::shared_ptr< BranchIDListHelper const > fileBranchIDListHelper () const
 
std::shared_ptr< ProductRegistry const > fileProductRegistry () const
 
RootInputFileSequenceoperator= (RootInputFileSequence const &)=delete
 
void readEvent (EventPrincipal &cache)
 
void readLuminosityBlock_ (LuminosityBlockPrincipal &lumiPrincipal)
 
std::shared_ptr< LuminosityBlockAuxiliaryreadLuminosityBlockAuxiliary_ ()
 
void readRun_ (RunPrincipal &runPrincipal)
 
std::shared_ptr< RunAuxiliaryreadRunAuxiliary_ ()
 
 RootInputFileSequence (ParameterSet const &pset, InputFileCatalog const &catalog)
 
 RootInputFileSequence (RootInputFileSequence const &)=delete
 
bool skipToItem (RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event, size_t fileNameHash=0U, bool currentFileFirst=true)
 
virtual ~RootInputFileSequence ()
 

Static Public Member Functions

static void fillDescription (ParameterSetDescription &desc)
 

Private Member Functions

std::shared_ptr< DuplicateChecker const > duplicateChecker () const
 
std::shared_ptr< DuplicateChecker > & duplicateChecker ()
 
std::shared_ptr< EventSkipperByID const > eventSkipperByID () const
 
std::shared_ptr< EventSkipperByID > & eventSkipperByID ()
 
void initFile_ (bool skipBadFiles) override
 
RootFileSharedPtr makeRootFile (std::shared_ptr< InputFile > filePtr) override
 
bool nextFile ()
 
bool previousFile ()
 
int remainingEvents () const
 
int remainingLuminosityBlocks () const
 
void rewindFile ()
 

Private Attributes

BranchDescription::MatchMode branchesMustMatch_
 
edm::propagate_const< std::shared_ptr< DuplicateChecker > > duplicateChecker_
 
bool enablePrefetching_
 
bool enforceGUIDInFileName_
 
edm::propagate_const< std::shared_ptr< EventSkipperByID > > eventSkipperByID_
 
bool firstFile_
 
int initialNumberOfEventsToSkip_
 
PoolSourceinput_
 
bool noEventSort_
 
std::vector< ProcessHistoryIDorderedProcessHistoryIDs_
 
unsigned int treeCacheSize_
 
bool usingGoToEvent_
 

Additional Inherited Members

- Protected Types inherited from edm::RootInputFileSequence
typedef std::shared_ptr< RootFileRootFileSharedPtr
 
- Protected Member Functions inherited from edm::RootInputFileSequence
bool atFirstFile () const
 
bool atLastFile () const
 
std::string const & fallbackFileName () const
 
std::vector< FileCatalogItem > const & fileCatalogItems () const
 
std::string const & fileName () const
 
std::vector< std::shared_ptr< IndexIntoFile > > const & indexesIntoFiles () const
 
void initFile (bool skipBadFiles)
 
void initTheFile (bool skipBadFiles, bool deleteIndexIntoFile, InputSource *input, char const *inputTypeName, InputType inputType)
 
std::string const & lfn () const
 
size_t lfnHash () const
 
std::string const & logicalFileName () const
 
bool noFiles () const
 
bool noMoreFiles () const
 
size_t numberOfFiles () const
 
std::shared_ptr< RootFile const > rootFile () const
 
std::shared_ptr< RootFile > & rootFile ()
 
size_t sequenceNumberOfFile () const
 
void setAtFileSequenceNumber (size_t offset)
 
void setAtFirstFile ()
 
void setAtNextFile ()
 
void setAtPreviousFile ()
 
void setIndexIntoFile (size_t index)
 
void setNoMoreFiles ()
 
bool skipToItemInNewFile (RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event)
 
bool skipToItemInNewFile (RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event, size_t fileNameHash)
 
bool usedFallback () const
 

Detailed Description

Definition at line 34 of file RootPrimaryFileSequence.h.

Constructor & Destructor Documentation

edm::RootPrimaryFileSequence::RootPrimaryFileSequence ( ParameterSet const &  pset,
PoolSource input,
InputFileCatalog const &  catalog 
)
explicit

Definition at line 21 of file RootPrimaryFileSequence.cc.

References branchesMustMatch_, enablePrefetching_, edm::RootInputFileSequence::fileName(), StorageFactory::get(), edm::ParameterSet::getUntrackedParameter(), edm::RootInputFileSequence::initFile(), initialNumberOfEventsToSkip_, input_, edm::Service< T >::isAvailable(), edm::RootInputFileSequence::noMoreFiles(), edm::InputSource::productRegistryUpdate(), edm::RootInputFileSequence::rootFile(), edm::RootInputFileSequence::setAtFirstFile(), edm::RootInputFileSequence::setAtNextFile(), edm::PoolSource::skipBadFiles(), skipEvents(), StorageFactory::stagein(), edm::BranchDescription::Strict, AlCaHLTBitMon_QueryRunRegistry::string, treeCacheSize_, mitigatedMETSequence_cff::U, and edm::ProductRegistry::updateFromInput().

24  :
26  input_(input),
27  firstFile_(true),
31  initialNumberOfEventsToSkip_(pset.getUntrackedParameter<unsigned int>("skipEvents")),
32  noEventSort_(pset.getUntrackedParameter<bool>("noEventSort")),
33  treeCacheSize_(noEventSort_ ? pset.getUntrackedParameter<unsigned int>("cacheSize") : 0U),
34  duplicateChecker_(new DuplicateChecker(pset)),
35  usingGoToEvent_(false),
36  enablePrefetching_(false),
37  enforceGUIDInFileName_(pset.getUntrackedParameter<bool>("enforceGUIDInFileName")) {
38 
39  // The SiteLocalConfig controls the TTreeCache size and the prefetching settings.
41  if(pSLC.isAvailable()) {
42  if(treeCacheSize_ != 0U && pSLC->sourceTTreeCacheSize()) {
43  treeCacheSize_ = *(pSLC->sourceTTreeCacheSize());
44  }
45  enablePrefetching_ = pSLC->enablePrefetching();
46  }
47 
48  std::string branchesMustMatch = pset.getUntrackedParameter<std::string>("branchesMustMatch", std::string("permissive"));
49  if(branchesMustMatch == std::string("strict")) branchesMustMatch_ = BranchDescription::Strict;
50 
51  // Prestage the files
54  }
55  // Open the first file.
58  if(rootFile()) break;
59  }
60  if(rootFile()) {
61  input_.productRegistryUpdate().updateFromInput(rootFile()->productRegistry()->productList());
64  }
65  }
66  }
void initFile(bool skipBadFiles)
ProductRegistry & productRegistryUpdate()
Definition: InputSource.h:339
std::string const & fileName() const
static std::unique_ptr< EventSkipperByID > create(ParameterSet const &pset)
edm::propagate_const< std::shared_ptr< EventSkipperByID > > eventSkipperByID_
static std::string const input
Definition: EdmProvDump.cc:44
static const StorageFactory * get(void)
void stagein(const std::string &url) const
std::vector< ProcessHistoryID > orderedProcessHistoryIDs_
std::shared_ptr< RootFile const > rootFile() const
bool skipBadFiles() const
Definition: PoolSource.h:40
edm::propagate_const< std::shared_ptr< DuplicateChecker > > duplicateChecker_
BranchDescription::MatchMode branchesMustMatch_
void updateFromInput(ProductList const &other)
RootInputFileSequence(ParameterSet const &pset, InputFileCatalog const &catalog)
edm::RootPrimaryFileSequence::~RootPrimaryFileSequence ( )
override

Definition at line 68 of file RootPrimaryFileSequence.cc.

68  {
69  }
edm::RootPrimaryFileSequence::RootPrimaryFileSequence ( RootPrimaryFileSequence const &  )
delete

Member Function Documentation

void edm::RootPrimaryFileSequence::closeFile_ ( )
overridevirtual

Implements edm::RootInputFileSequence.

Definition at line 96 of file RootPrimaryFileSequence.cc.

References duplicateChecker_, input_, edm::RootInputFileSequence::lfn(), edm::RootInputFileSequence::rootFile(), and edm::RootInputFileSequence::usedFallback().

Referenced by endJob(), and rewind_().

96  {
97  // close the currently open file, if any, and delete the RootFile object.
98  if(rootFile()) {
99  auto sentry = std::make_unique<InputSource::FileCloseSentry>(input_, lfn(), usedFallback());
100  rootFile()->close();
101  if(duplicateChecker_) duplicateChecker_->inputFileClosed();
102  rootFile().reset();
103  }
104  }
std::string const & lfn() const
std::shared_ptr< RootFile const > rootFile() const
edm::propagate_const< std::shared_ptr< DuplicateChecker > > duplicateChecker_
std::shared_ptr<DuplicateChecker const> edm::RootPrimaryFileSequence::duplicateChecker ( ) const
inlineprivate

Definition at line 71 of file RootPrimaryFileSequence.h.

References duplicateChecker_, and edm::get_underlying_safe().

Referenced by makeRootFile().

std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
edm::propagate_const< std::shared_ptr< DuplicateChecker > > duplicateChecker_
std::shared_ptr<DuplicateChecker>& edm::RootPrimaryFileSequence::duplicateChecker ( )
inlineprivate

Definition at line 72 of file RootPrimaryFileSequence.h.

References duplicateChecker_, and edm::get_underlying_safe().

std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
edm::propagate_const< std::shared_ptr< DuplicateChecker > > duplicateChecker_
void edm::RootPrimaryFileSequence::endJob ( void  )

Definition at line 72 of file RootPrimaryFileSequence.cc.

References closeFile_().

72  {
73  closeFile_();
74  }
std::shared_ptr<EventSkipperByID const> edm::RootPrimaryFileSequence::eventSkipperByID ( ) const
inlineprivate

Definition at line 69 of file RootPrimaryFileSequence.h.

References eventSkipperByID_, and edm::get_underlying_safe().

Referenced by makeRootFile().

edm::propagate_const< std::shared_ptr< EventSkipperByID > > eventSkipperByID_
std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
std::shared_ptr<EventSkipperByID>& edm::RootPrimaryFileSequence::eventSkipperByID ( )
inlineprivate

Definition at line 70 of file RootPrimaryFileSequence.h.

References eventSkipperByID_, and edm::get_underlying_safe().

edm::propagate_const< std::shared_ptr< EventSkipperByID > > eventSkipperByID_
std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
void edm::RootPrimaryFileSequence::fillDescription ( ParameterSetDescription desc)
static

Definition at line 324 of file RootPrimaryFileSequence.cc.

References edm::ParameterSetDescription::addUntracked(), edm::roottree::defaultCacheSize, edm::EventSkipperByID::fillDescription(), edm::DuplicateChecker::fillDescription(), AlCaHLTBitMon_QueryRunRegistry::string, and mitigatedMETSequence_cff::U.

Referenced by edm::PoolSource::fillDescriptions().

324  {
325  desc.addUntracked<unsigned int>("skipEvents", 0U)
326  ->setComment("Skip the first 'skipEvents' events that otherwise would have been processed.");
327  desc.addUntracked<bool>("noEventSort", true)
328  ->setComment("True: Process runs, lumis and events in the order they appear in the file (but see notes 1 and 2).\n"
329  "False: Process runs, lumis and events in each file in numerical order (run#, lumi#, event#) (but see note 3).\n"
330  "Note 1: Events within the same lumi will always be processed contiguously.\n"
331  "Note 2: Lumis within the same run will always be processed contiguously.\n"
332  "Note 3: Any sorting occurs independently in each input file (no sorting across input files).");
333  desc.addUntracked<unsigned int>("cacheSize", roottree::defaultCacheSize)
334  ->setComment("Size of ROOT TTree prefetch cache. Affects performance.");
335  std::string defaultString("permissive");
336  desc.addUntracked<std::string>("branchesMustMatch", defaultString)
337  ->setComment("'strict': Branches in each input file must match those in the first file.\n"
338  "'permissive': Branches in each input file may be any subset of those in the first file.");
339  desc.addUntracked<bool>("enforceGUIDInFileName", false)
340  ->setComment(
341  "True: file name part is required to be equal to the GUID of the file\n"
342  "False: file name can be anything");
343 
346  }
static void fillDescription(ParameterSetDescription &desc)
unsigned int const defaultCacheSize
Definition: RootTree.h:45
static void fillDescription(ParameterSetDescription &desc)
ProcessingController::ForwardState edm::RootPrimaryFileSequence::forwardState ( ) const
InputSource::ItemType edm::RootPrimaryFileSequence::getNextItemType ( RunNumber_t run,
LuminosityBlockNumber_t lumi,
EventNumber_t event 
)

Definition at line 193 of file RootPrimaryFileSequence.cc.

References edm::RootInputFileSequence::atLastFile(), firstFile_, edm::InputSource::IsEvent, edm::InputSource::IsFile, edm::InputSource::IsLumi, edm::InputSource::IsRun, edm::InputSource::IsStop, edm::IndexIntoFile::kEnd, edm::IndexIntoFile::kEvent, edm::IndexIntoFile::kLumi, edm::IndexIntoFile::kRun, edm::RootInputFileSequence::noMoreFiles(), and edm::RootInputFileSequence::rootFile().

193  {
194  if(noMoreFiles()) {
195  return InputSource::IsStop;
196  }
197  if(firstFile_) {
198  return InputSource::IsFile;
199  }
200  if(rootFile()) {
201  IndexIntoFile::EntryType entryType = rootFile()->getNextItemType(run, lumi, event);
202  if(entryType == IndexIntoFile::kEvent) {
203  return InputSource::IsEvent;
204  } else if(entryType == IndexIntoFile::kLumi) {
205  return InputSource::IsLumi;
206  } else if(entryType == IndexIntoFile::kRun) {
207  return InputSource::IsRun;
208  }
209  assert(entryType == IndexIntoFile::kEnd);
210  }
211  if(atLastFile()) {
212  return InputSource::IsStop;
213  }
214  return InputSource::IsFile;
215  }
std::shared_ptr< RootFile const > rootFile() const
Definition: event.py:1
bool edm::RootPrimaryFileSequence::goToEvent ( EventID const &  eventID)

Definition at line 260 of file RootPrimaryFileSequence.cc.

References begin, end, edm::EventID::event(), runEdmFileComparison::found, edm::RootInputFileSequence::indexesIntoFiles(), edm::RootInputFileSequence::initFile(), edm::EventID::luminosityBlock(), edm::RootInputFileSequence::rootFile(), edm::EventID::run(), edm::RootInputFileSequence::sequenceNumberOfFile(), edm::RootInputFileSequence::setAtFileSequenceNumber(), findQualityFiles::size, and usingGoToEvent_.

260  {
261  usingGoToEvent_ = true;
262  if(rootFile()) {
263  if(rootFile()->goToEvent(eventID)) {
264  return true;
265  }
266  // If only one input file, give up now, to save time.
267  if(rootFile() && indexesIntoFiles().size() == 1) {
268  return false;
269  }
270  // Save the current file and position so that we can restore them
271  // if we fail to restore the desired event
272  bool closedOriginalFile = false;
273  size_t const originalFileSequenceNumber = sequenceNumberOfFile();
274  IndexIntoFile::IndexIntoFileItr originalPosition = rootFile()->indexIntoFileIter();
275 
276  // Look for item (run/lumi/event) in files previously opened without reopening unnecessary files.
277  for(auto it = indexesIntoFiles().begin(), itEnd = indexesIntoFiles().end(); it != itEnd; ++it) {
278  if(*it && (*it)->containsItem(eventID.run(), eventID.luminosityBlock(), eventID.event())) {
279  // We found it. Close the currently open file, and open the correct one.
281  initFile(false);
282  // Now get the item from the correct file.
283  assert(rootFile());
284  bool found = rootFile()->goToEvent(eventID);
285  assert(found);
286  return true;
287  }
288  }
289  // Look for item in files not yet opened.
290  for(auto it = indexesIntoFiles().begin(), itEnd = indexesIntoFiles().end(); it != itEnd; ++it) {
291  if(!*it) {
293  initFile(false);
294  closedOriginalFile = true;
295  if((*it)->containsItem(eventID.run(), eventID.luminosityBlock(), eventID.event())) {
296  assert(rootFile());
297  if(rootFile()->goToEvent(eventID)) {
298  return true;
299  }
300  }
301  }
302  }
303  if(closedOriginalFile) {
304  setAtFileSequenceNumber(originalFileSequenceNumber);
305  initFile(false);
306  assert(rootFile());
307  rootFile()->setPosition(originalPosition);
308  }
309  }
310  return false;
311  }
size
Write out results.
void initFile(bool skipBadFiles)
void setAtFileSequenceNumber(size_t offset)
std::vector< std::shared_ptr< IndexIntoFile > > const & indexesIntoFiles() const
bool goToEvent(EventID const &eventID)
#define end
Definition: vmac.h:37
std::shared_ptr< RootFile const > rootFile() const
#define begin
Definition: vmac.h:30
void edm::RootPrimaryFileSequence::initFile_ ( bool  skipBadFiles)
overrideprivatevirtual

Implements edm::RootInputFileSequence.

Definition at line 107 of file RootPrimaryFileSequence.cc.

References duplicateChecker_, edm::RootInputFileSequence::initTheFile(), input_, edm::Primary, and usingGoToEvent_.

107  {
108  // If we are not duplicate checking across files and we are not using random access to find events,
109  // then we can delete the IndexIntoFile for the file we are closing.
110  // If we can't delete all of it, then we can delete the parts we do not need.
111  bool deleteIndexIntoFile = !usingGoToEvent_ && !(duplicateChecker_ && duplicateChecker_->checkingAllFiles() && !duplicateChecker_->checkDisabled());
112  initTheFile(skipBadFiles, deleteIndexIntoFile, &input_, "primaryFiles", InputType::Primary);
113  }
void initTheFile(bool skipBadFiles, bool deleteIndexIntoFile, InputSource *input, char const *inputTypeName, InputType inputType)
edm::propagate_const< std::shared_ptr< DuplicateChecker > > duplicateChecker_
RootPrimaryFileSequence::RootFileSharedPtr edm::RootPrimaryFileSequence::makeRootFile ( std::shared_ptr< InputFile filePtr)
overrideprivatevirtual

Implements edm::RootInputFileSequence.

Definition at line 116 of file RootPrimaryFileSequence.cc.

References edm::InputSource::branchIDListHelper(), edm::PoolSource::bypassVersionCheck(), edm::PoolSource::dropDescendants(), duplicateChecker(), enablePrefetching_, enforceGUIDInFileName_, eventSkipperByID(), edm::RootInputFileSequence::fileName(), edm::RootInputFileSequence::indexesIntoFiles(), initialNumberOfEventsToSkip_, input_, edm::PoolSource::labelRawDataLikeMC(), edm::RootInputFileSequence::logicalFileName(), noEventSort_, edm::PoolSource::nStreams(), orderedProcessHistoryIDs_, edm::Primary, edm::InputSource::processConfiguration(), edm::InputSource::processHistoryRegistryForUpdate(), edm::InputSource::processingMode(), edm::PoolSource::productSelectorRules(), remainingEvents(), remainingLuminosityBlocks(), edm::PoolSource::runHelper(), edm::RootInputFileSequence::sequenceNumberOfFile(), edm::InputSource::thinnedAssociationsHelper(), treeCacheSize_, edm::PoolSource::treeMaxVirtualSize(), and usingGoToEvent_.

116  {
117  size_t currentIndexIntoFile = sequenceNumberOfFile();
118  return std::make_shared<RootFile>(
119  fileName(),
121  logicalFileName(),
122  filePtr,
125  remainingEvents(),
127  input_.nStreams(),
131  input_.runHelper(),
132  noEventSort_,
137  nullptr, // associationsFromSecondary
142  currentIndexIntoFile,
149  }
std::string const & logicalFileName() const
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:244
RunHelperBase * runHelper()
Definition: PoolSource.h:47
std::vector< ProcessHistoryID > orderedProcessHistoryIDs_
unsigned int nStreams() const
Definition: PoolSource.h:44
bool dropDescendants() const
Definition: PoolSource.h:41
bool bypassVersionCheck() const
Definition: PoolSource.h:42
int treeMaxVirtualSize() const
Definition: PoolSource.h:45
std::shared_ptr< EventSkipperByID const > eventSkipperByID() const
std::shared_ptr< BranchIDListHelper const > branchIDListHelper() const
Accessors for branchIDListHelper.
Definition: InputSource.h:170
bool labelRawDataLikeMC() const
Definition: PoolSource.h:43
ProcessHistoryRegistry & processHistoryRegistryForUpdate()
Definition: InputSource.h:340
std::shared_ptr< ThinnedAssociationsHelper const > thinnedAssociationsHelper() const
Accessors for thinnedAssociationsHelper.
Definition: InputSource.h:174
ProcessConfiguration const & processConfiguration() const
Accessor for Process Configuration.
Definition: InputSource.h:206
std::shared_ptr< DuplicateChecker const > duplicateChecker() const
ProductSelectorRules const & productSelectorRules() const
Definition: PoolSource.h:46
bool edm::RootPrimaryFileSequence::nextFile ( )
private

Definition at line 151 of file RootPrimaryFileSequence.cc.

References branchesMustMatch_, Exception, edm::RootInputFileSequence::fileName(), edm::RootInputFileSequence::initFile(), input_, edm::ProductRegistry::merge(), edm::errors::MismatchedInputFiles, edm::RootInputFileSequence::noMoreFiles(), edm::InputSource::productRegistryUpdate(), edm::RootInputFileSequence::rootFile(), edm::RootInputFileSequence::setAtNextFile(), edm::PoolSource::skipBadFiles(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by readFile_(), and skipEvents().

151  {
152  if(!noMoreFiles()) setAtNextFile();
153  if(noMoreFiles()) {
154  return false;
155  }
156 
158 
159  if(rootFile()) {
160  // make sure the new product registry is compatible with the main one
161  std::string mergeInfo = input_.productRegistryUpdate().merge(*rootFile()->productRegistry(),
162  fileName(),
164  if(!mergeInfo.empty()) {
165  throw Exception(errors::MismatchedInputFiles,"RootPrimaryFileSequence::nextFile()") << mergeInfo;
166  }
167  }
168  return true;
169  }
void initFile(bool skipBadFiles)
ProductRegistry & productRegistryUpdate()
Definition: InputSource.h:339
std::string const & fileName() const
std::string merge(ProductRegistry const &other, std::string const &fileName, BranchDescription::MatchMode branchesMustMatch=BranchDescription::Permissive)
std::shared_ptr< RootFile const > rootFile() const
bool skipBadFiles() const
Definition: PoolSource.h:40
BranchDescription::MatchMode branchesMustMatch_
RootPrimaryFileSequence& edm::RootPrimaryFileSequence::operator= ( RootPrimaryFileSequence const &  )
delete
bool edm::RootPrimaryFileSequence::previousFile ( )
private

Definition at line 171 of file RootPrimaryFileSequence.cc.

References edm::RootInputFileSequence::atFirstFile(), branchesMustMatch_, Exception, edm::RootInputFileSequence::fileName(), edm::RootInputFileSequence::initFile(), input_, edm::ProductRegistry::merge(), edm::errors::MismatchedInputFiles, edm::InputSource::productRegistryUpdate(), edm::RootInputFileSequence::rootFile(), edm::RootInputFileSequence::setAtPreviousFile(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by skipEvents().

171  {
172  if(atFirstFile()) {
173  return false;
174  }
176 
177  initFile(false);
178 
179  if(rootFile()) {
180  // make sure the new product registry is compatible to the main one
181  std::string mergeInfo = input_.productRegistryUpdate().merge(*rootFile()->productRegistry(),
182  fileName(),
184  if(!mergeInfo.empty()) {
185  throw Exception(errors::MismatchedInputFiles,"RootPrimaryFileSequence::previousEvent()") << mergeInfo;
186  }
187  }
188  if(rootFile()) rootFile()->setToLastEntry();
189  return true;
190  }
void initFile(bool skipBadFiles)
ProductRegistry & productRegistryUpdate()
Definition: InputSource.h:339
std::string const & fileName() const
std::string merge(ProductRegistry const &other, std::string const &fileName, BranchDescription::MatchMode branchesMustMatch=BranchDescription::Permissive)
std::shared_ptr< RootFile const > rootFile() const
BranchDescription::MatchMode branchesMustMatch_
std::unique_ptr< FileBlock > edm::RootPrimaryFileSequence::readFile_ ( )

Definition at line 77 of file RootPrimaryFileSequence.cc.

References firstFile_, edm::RootInputFileSequence::initFile(), input_, nextFile(), edm::RootInputFileSequence::rootFile(), and edm::PoolSource::skipBadFiles().

77  {
78  if(firstFile_) {
79  // The first input file has already been opened.
80  firstFile_ = false;
81  if(!rootFile()) {
83  }
84  } else {
85  if(!nextFile()) {
86  assert(0);
87  }
88  }
89  if(!rootFile()) {
90  return std::make_unique<FileBlock>();
91  }
92  return rootFile()->createFileBlock();
93  }
void initFile(bool skipBadFiles)
std::shared_ptr< RootFile const > rootFile() const
bool skipBadFiles() const
Definition: PoolSource.h:40
int edm::RootPrimaryFileSequence::remainingEvents ( ) const
private

Definition at line 314 of file RootPrimaryFileSequence.cc.

References input_, and edm::InputSource::remainingEvents().

Referenced by makeRootFile().

314  {
315  return input_.remainingEvents();
316  }
int remainingEvents() const
Definition: InputSource.h:192
int edm::RootPrimaryFileSequence::remainingLuminosityBlocks ( ) const
private

Definition at line 319 of file RootPrimaryFileSequence.cc.

References input_, and edm::InputSource::remainingLuminosityBlocks().

Referenced by makeRootFile().

319  {
321  }
int remainingLuminosityBlocks() const
Definition: InputSource.h:200
ProcessingController::ReverseState edm::RootPrimaryFileSequence::reverseState ( ) const
void edm::RootPrimaryFileSequence::rewind_ ( )

Definition at line 219 of file RootPrimaryFileSequence.cc.

References edm::RootInputFileSequence::atFirstFile(), closeFile_(), firstFile_, edm::RootInputFileSequence::initFile(), initialNumberOfEventsToSkip_, rewindFile(), edm::RootInputFileSequence::rootFile(), edm::RootInputFileSequence::setAtFirstFile(), and skipEvents().

219  {
220  if(!atFirstFile()) {
221  closeFile_();
222  setAtFirstFile();
223  }
224  if(!rootFile()) {
225  initFile(false);
226  }
227  rewindFile();
228  firstFile_ = true;
229  if(rootFile()) {
232  }
233  }
234  }
void initFile(bool skipBadFiles)
std::shared_ptr< RootFile const > rootFile() const
void edm::RootPrimaryFileSequence::rewindFile ( )
private

Definition at line 238 of file RootPrimaryFileSequence.cc.

References edm::RootInputFileSequence::rootFile().

Referenced by rewind_().

238  {
239  if(rootFile()) rootFile()->rewind();
240  }
std::shared_ptr< RootFile const > rootFile() const
bool edm::RootPrimaryFileSequence::skipEvents ( int  offset)

Definition at line 244 of file RootPrimaryFileSequence.cc.

References nextFile(), previousFile(), edm::RootInputFileSequence::rootFile(), and edm::RootInputFileSequence::setNoMoreFiles().

Referenced by rewind_(), and RootPrimaryFileSequence().

244  {
245  assert(rootFile());
246  while(offset != 0) {
247  bool atEnd = rootFile()->skipEvents(offset);
248  if((offset > 0 || atEnd) && !nextFile()) {
249  return false;
250  }
251  if(offset < 0 && !previousFile()) {
252  setNoMoreFiles();
253  return false;
254  }
255  }
256  return true;
257  }
std::shared_ptr< RootFile const > rootFile() const

Member Data Documentation

BranchDescription::MatchMode edm::RootPrimaryFileSequence::branchesMustMatch_
private

Definition at line 66 of file RootPrimaryFileSequence.h.

Referenced by nextFile(), previousFile(), and RootPrimaryFileSequence().

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

Definition at line 78 of file RootPrimaryFileSequence.h.

Referenced by closeFile_(), duplicateChecker(), and initFile_().

bool edm::RootPrimaryFileSequence::enablePrefetching_
private

Definition at line 80 of file RootPrimaryFileSequence.h.

Referenced by makeRootFile(), and RootPrimaryFileSequence().

bool edm::RootPrimaryFileSequence::enforceGUIDInFileName_
private

Definition at line 81 of file RootPrimaryFileSequence.h.

Referenced by makeRootFile().

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

Definition at line 74 of file RootPrimaryFileSequence.h.

Referenced by eventSkipperByID().

bool edm::RootPrimaryFileSequence::firstFile_
private

Definition at line 65 of file RootPrimaryFileSequence.h.

Referenced by getNextItemType(), readFile_(), and rewind_().

int edm::RootPrimaryFileSequence::initialNumberOfEventsToSkip_
private

Definition at line 75 of file RootPrimaryFileSequence.h.

Referenced by makeRootFile(), rewind_(), and RootPrimaryFileSequence().

PoolSource& edm::RootPrimaryFileSequence::input_
private
bool edm::RootPrimaryFileSequence::noEventSort_
private

Definition at line 76 of file RootPrimaryFileSequence.h.

Referenced by makeRootFile().

std::vector<ProcessHistoryID> edm::RootPrimaryFileSequence::orderedProcessHistoryIDs_
private

Definition at line 67 of file RootPrimaryFileSequence.h.

Referenced by makeRootFile().

unsigned int edm::RootPrimaryFileSequence::treeCacheSize_
private

Definition at line 77 of file RootPrimaryFileSequence.h.

Referenced by makeRootFile(), and RootPrimaryFileSequence().

bool edm::RootPrimaryFileSequence::usingGoToEvent_
private

Definition at line 79 of file RootPrimaryFileSequence.h.

Referenced by goToEvent(), initFile_(), and makeRootFile().