29 orderedProcessHistoryIDs_(),
31 initialNumberOfEventsToSkip_(pset.getUntrackedParameter<unsigned int>(
"skipEvents")),
32 noEventSort_(pset.getUntrackedParameter<bool>(
"noEventSort")),
33 treeCacheSize_(noEventSort_ ? pset.getUntrackedParameter<unsigned int>(
"cacheSize") : 0U),
35 usingGoToEvent_(
false),
36 enablePrefetching_(
false) {
75 std::unique_ptr<FileBlock>
89 return std::unique_ptr<FileBlock>(
new FileBlock);
91 return rootFile()->createFileBlock();
98 std::unique_ptr<InputSource::FileCloseSentry>
118 return std::make_shared<RootFile>(
142 currentIndexIntoFile,
163 if(!mergeInfo.empty()) {
183 if(!mergeInfo.empty()) {
246 bool atEnd =
rootFile()->skipEvents(offset);
247 if((offset > 0 || atEnd) && !
nextFile()) {
271 bool closedOriginalFile =
false;
293 closedOriginalFile =
true;
302 if(closedOriginalFile) {
306 rootFile()->setPosition(originalPosition);
325 ->setComment(
"Skip the first 'skipEvents' events that otherwise would have been processed.");
327 ->setComment(
"True: Process runs, lumis and events in the order they appear in the file (but see notes 1 and 2).\n"
328 "False: Process runs, lumis and events in each file in numerical order (run#, lumi#, event#) (but see note 3).\n"
329 "Note 1: Events within the same lumi will always be processed contiguously.\n"
330 "Note 2: Lumis within the same run will always be processed contiguously.\n"
331 "Note 3: Any sorting occurs independently in each input file (no sorting across input files).");
333 ->setComment(
"Size of ROOT TTree prefetch cache. Affects performance.");
336 ->setComment(
"'strict': Branches in each input file must match those in the first file.\n"
337 "'permissive': Branches in each input file may be any subset of those in the first file.");
346 if(!
rootFile()->wasLastEventJustRead()) {
361 if(!
rootFile()->wasFirstEventJustRead()) {
EventNumber_t event() const
T getUntrackedParameter(std::string const &, T const &) const
unsigned int treeCacheSize_
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
InputSource::ItemType getNextItemType(RunNumber_t &run, LuminosityBlockNumber_t &lumi, EventNumber_t &event)
virtual void closeFile_() override
virtual void initFile_(bool skipBadFiles) override
ProcessingController::ForwardState forwardState() const
bool skipEvents(int offset)
unsigned long long EventNumber_t
static void fillDescription(ParameterSetDescription &desc)
static void fillDescription(ParameterSetDescription &desc)
std::unique_ptr< FileBlock > readFile_()
LuminosityBlockNumber_t luminosityBlock() const
unsigned int const defaultCacheSize
int initialNumberOfEventsToSkip_
unsigned int LuminosityBlockNumber_t
static std::string const input
virtual ~RootPrimaryFileSequence()
RunHelperBase * runHelper()
ProcessingController::ReverseState reverseState() const
bool goToEvent(EventID const &eventID)
static const StorageFactory * get(void)
void stagein(const std::string &url) const
virtual RootFileSharedPtr makeRootFile(std::shared_ptr< InputFile > filePtr) override
std::vector< ProcessHistoryID > orderedProcessHistoryIDs_
RootPrimaryFileSequence(ParameterSet const &pset, PoolSource &input, InputFileCatalog const &catalog)
std::string merge(ProductRegistry const &other, std::string const &fileName, BranchDescription::MatchMode branchesMustMatch=BranchDescription::Permissive)
unsigned int nStreams() const
bool dropDescendants() const
bool bypassVersionCheck() const
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
int treeMaxVirtualSize() const
bool skipBadFiles() const
std::shared_ptr< EventSkipperByID const > eventSkipperByID() const
bool labelRawDataLikeMC() const
edm::propagate_const< std::shared_ptr< DuplicateChecker > > duplicateChecker_
BranchDescription::MatchMode branchesMustMatch_
static void fillDescription(ParameterSetDescription &desc)
void updateFromInput(ProductList const &other)
int remainingEvents() const
volatile std::atomic< bool > shutdown_flag false
std::shared_ptr< DuplicateChecker const > duplicateChecker() const
tuple size
Write out results.
int remainingLuminosityBlocks() const
ProductSelectorRules const & productSelectorRules() const