21 beginEvents_(invalidEntry),
22 endEvents_(invalidEntry),
23 currentIndex_(invalidIndex),
24 currentRun_(invalidRun),
25 currentLumi_(invalidLumi),
31 unsortedEventNumbers_() {
116 <<
"In IndexIntoFile::addEntry. Entries were added in illegal order.\n" 117 <<
"This means the IndexIntoFile product in the output file will be corrupted.\n" 118 <<
"The output file will be unusable for most purposes.\n" 119 <<
"If this occurs after an unrelated exception was thrown in\n" 120 <<
"endLuminosityBlock or endRun then ignore this exception and fix\n" 121 <<
"the primary exception. This is an expected side effect.\n" 122 <<
"Otherwise please report this to the core framework developers\n";
128 std::pair<IndexRunKey, EntryNumber_t> keyAndOrder(
IndexRunKey(index, run), entry);
179 long long beginEventNumbers = 0;
181 std::vector<RunOrLumiIndexes>::iterator beginOfLumi =
runOrLumiIndexes().begin();
182 std::vector<RunOrLumiIndexes>::iterator endOfLumi = beginOfLumi;
185 while(beginOfLumi != iEnd && beginOfLumi->isRun()) {
188 if(beginOfLumi == iEnd)
break;
190 endOfLumi = beginOfLumi + 1;
191 while(endOfLumi != iEnd &&
192 beginOfLumi->processHistoryIDIndex() == endOfLumi->processHistoryIDIndex() &&
193 beginOfLumi->run() == endOfLumi->run() &&
194 beginOfLumi->lumi() == endOfLumi->lumi()) {
198 for(std::vector<RunOrLumiIndexes>::iterator iter = beginOfLumi;
201 if(runOrLumiEntries_[iter->indexToGetEntry()].beginEvents() !=
invalidEntry) {
202 nEvents += runOrLumiEntries_[iter->indexToGetEntry()].endEvents() -
203 runOrLumiEntries_[iter->indexToGetEntry()].beginEvents();
206 for(std::vector<RunOrLumiIndexes>::iterator iter = beginOfLumi;
209 iter->setBeginEventNumbers(beginEventNumbers);
210 iter->setEndEventNumbers(beginEventNumbers + nEvents);
213 beginOfLumi = endOfLumi;
235 needEventNumbers =
false;
239 needEventEntries =
false;
251 if(!needEventNumbers && !needEventEntries) {
257 if(needEventNumbers) {
260 if(needEventEntries) {
265 long long previousBeginEventNumbers = -1LL;
268 runOrLumi != runOrLumiEnd; ++runOrLumi) {
270 if(runOrLumi.isRun())
continue;
272 long long beginEventNumbers = 0;
273 long long endEventNumbers = 0;
276 runOrLumi.getRange(beginEventNumbers, endEventNumbers, beginEventEntry, endEventEntry);
280 if(beginEventNumbers != previousBeginEventNumbers) offset = 0;
283 if(needEventNumbers) {
286 if(needEventEntries) {
292 previousBeginEventNumbers = beginEventNumbers;
293 offset += endEventEntry - beginEventEntry;
295 if(needEventNumbers) {
299 if(needEventEntries) {
342 std::vector<ProcessHistoryID> reducedPHIDs;
344 std::map<ProcessHistoryID, int> reducedPHIDToIndex;
346 std::pair<std::map<ProcessHistoryID, int>::iterator,
bool> insertResult;
348 std::vector<int> phidIndexConverter;
352 mapEntry.first = reducedPHID;
353 insertResult = reducedPHIDToIndex.insert(mapEntry);
355 if(insertResult.second) {
356 insertResult.first->second = reducedPHIDs.size();
357 reducedPHIDs.push_back(reducedPHID);
359 phidIndexConverter.push_back(insertResult.first->second);
361 processHistoryIDs_.
swap(reducedPHIDs);
366 if(processHistoryIDs_.size() == reducedPHIDs.size()) {
370 std::map<IndexIntoFile::IndexRunKey, int> runOrderMap;
371 std::pair<std::map<IndexIntoFile::IndexRunKey, int>::iterator,
bool> runInsertResult;
373 std::map<IndexIntoFile::IndexRunLumiKey, int> lumiOrderMap;
374 std::pair<std::map<IndexIntoFile::IndexRunLumiKey, int>::iterator,
bool> lumiInsertResult;
380 item.setProcessHistoryIDIndex(phidIndexConverter.at(item.processHistoryIDIndex()));
384 runInsertResult = runOrderMap.insert(std::pair<IndexIntoFile::IndexRunKey, int>(runKey,0));
385 if(runInsertResult.second) {
386 runInsertResult.first->second = item.orderPHIDRun();
388 item.setOrderPHIDRun(runInsertResult.first->second);
392 if(item.lumi() != 0) {
394 lumiInsertResult = lumiOrderMap.insert(std::pair<IndexIntoFile::IndexRunLumiKey, int>(lumiKey,0));
395 if(lumiInsertResult.second) {
396 lumiInsertResult.first->second = item.orderPHIDRunLumi();
398 item.setOrderPHIDRunLumi(lumiInsertResult.first->second);
402 std::stable_sort(runOrLumiEntries_.begin(), runOrLumiEntries_.end());
408 std::map<int, int> oldToNewIndex;
413 std::vector<ProcessHistoryID>::const_iterator iterExisting =
414 std::find(processHistoryIDs.begin(), processHistoryIDs.end(), *iter);
415 if(iterExisting == processHistoryIDs.end()) {
417 processHistoryIDs.push_back(*iter);
419 oldToNewIndex[iter -
processHistoryIDs_.begin()] = iterExisting - processHistoryIDs.begin();
425 item.setProcessHistoryIDIndex(oldToNewIndex[item.processHistoryIDIndex()]);
431 std::map<IndexRunKey, EntryNumber_t>::const_iterator keyAndOrder =
435 <<
"In IndexIntoFile::sortVector_Run_Or_Lumi_Entries. A run entry is missing.\n" 436 <<
"This means the IndexIntoFile product in the output file will be corrupted.\n" 437 <<
"The output file will be unusable for most purposes.\n" 438 <<
"If this occurs after an unrelated exception was thrown in\n" 439 <<
"endLuminosityBlock or endRun then ignore this exception and fix\n" 440 <<
"the primary exception. This is an expected side effect.\n" 441 <<
"Otherwise please report this to the core framework developers\n";
443 item.setOrderPHIDRun(keyAndOrder->second);
450 std::vector<RunOrLumiIndexes>::iterator beginOfLumi =
runOrLumiIndexes().begin();
451 std::vector<RunOrLumiIndexes>::iterator endOfLumi = beginOfLumi;
454 while(beginOfLumi != iEnd && beginOfLumi->isRun()) {
457 if(beginOfLumi == iEnd)
break;
459 endOfLumi = beginOfLumi + 1;
460 while(endOfLumi != iEnd &&
461 beginOfLumi->processHistoryIDIndex() == endOfLumi->processHistoryIDIndex() &&
462 beginOfLumi->run() == endOfLumi->run() &&
463 beginOfLumi->lumi() == endOfLumi->lumi()) {
466 assert(beginOfLumi->endEventNumbers() >= 0);
467 assert(beginOfLumi->endEventNumbers() <=
static_cast<long long>(
eventNumbers().size()));
469 eventNumbers().begin() + beginOfLumi->endEventNumbers());
470 beginOfLumi = endOfLumi;
476 std::vector<RunOrLumiIndexes>::iterator beginOfLumi =
runOrLumiIndexes().begin();
477 std::vector<RunOrLumiIndexes>::iterator endOfLumi = beginOfLumi;
480 while(beginOfLumi != iEnd && beginOfLumi->isRun()) {
483 if(beginOfLumi == iEnd)
break;
485 endOfLumi = beginOfLumi + 1;
486 while(endOfLumi != iEnd &&
487 beginOfLumi->processHistoryIDIndex() == endOfLumi->processHistoryIDIndex() &&
488 beginOfLumi->run() == endOfLumi->run() &&
489 beginOfLumi->lumi() == endOfLumi->lumi()) {
492 assert(beginOfLumi->endEventNumbers() >= 0);
493 assert(beginOfLumi->endEventNumbers() <=
static_cast<long long>(
eventEntries().size()));
495 eventEntries().begin() + beginOfLumi->endEventNumbers());
496 beginOfLumi = endOfLumi;
502 return end(sortOrder);
530 if(it.getEntryType() ==
kEvent) {
531 if(it.entry() < maxEntry) {
534 maxEntry = it.entry();
548 bool lumiMissing = (lumi == 0 &&
event != 0);
550 std::vector<RunOrLumiIndexes>::const_iterator iEnd =
runOrLumiIndexes().end();
551 std::vector<RunOrLumiIndexes>::const_iterator phEnd;
559 phEnd = std::upper_bound(phBegin, iEnd, el,
Compare_Index());
561 std::vector<RunOrLumiIndexes>::const_iterator iRun = std::lower_bound(phBegin, phEnd, el,
Compare_Index_Run());
563 if(iRun == phEnd || iRun->run() !=
run)
continue;
578 std::vector<RunOrLumiIndexes>::const_iterator iRunEnd = std::upper_bound(iRun, phEnd, el,
Compare_Index_Run());
581 std::vector<RunOrLumiIndexes>::const_iterator iLumi = std::lower_bound(iRun, iRunEnd, el);
582 if(iLumi == iRunEnd || iLumi->lumi() !=
lumi)
continue;
597 long long beginEventNumbers = iLumi->beginEventNumbers();
598 long long endEventNumbers = iLumi->endEventNumbers();
599 if(beginEventNumbers >= endEventNumbers)
continue;
602 long long indexToEvent = 0;
604 std::vector<EventEntry>::const_iterator eventIter = std::lower_bound(
eventEntries().
begin() + beginEventNumbers,
608 eventIter->event() !=
event)
continue;
610 indexToEvent = eventIter -
eventEntries().begin() - beginEventNumbers;
613 std::vector<EventNumber_t>::const_iterator eventIter = std::lower_bound(
eventNumbers().
begin() + beginEventNumbers,
617 *eventIter != event)
continue;
619 indexToEvent = eventIter -
eventNumbers().begin() - beginEventNumbers;
636 endEventNumbers - beginEventNumbers);
640 std::vector<RunOrLumiIndexes>::const_iterator iLumi = iRun;
641 while(iLumi != iRunEnd && iLumi->lumi() ==
invalidLumi) {
644 if(iLumi == iRunEnd)
continue;
646 std::vector<RunOrLumiIndexes>::const_iterator lumiEnd;
652 lumiEnd = std::upper_bound(iLumi, iRunEnd, elWithLumi);
654 long long beginEventNumbers = iLumi->beginEventNumbers();
655 long long endEventNumbers = iLumi->endEventNumbers();
656 if(beginEventNumbers >= endEventNumbers)
continue;
658 long long indexToEvent = 0;
660 std::vector<EventEntry>::const_iterator eventIter = std::lower_bound(
eventEntries().
begin() + beginEventNumbers,
664 eventIter->event() !=
event)
continue;
665 indexToEvent = eventIter -
eventEntries().begin() - beginEventNumbers;
668 std::vector<EventNumber_t>::const_iterator eventIter = std::lower_bound(
eventNumbers().
begin() + beginEventNumbers,
672 *eventIter != event)
continue;
673 indexToEvent = eventIter -
eventNumbers().begin() - beginEventNumbers;
690 endEventNumbers - beginEventNumbers);
714 while(itr != itrEnd) {
729 if(eventNumber == event) {
814 while(iter1 != iEnd1 && iter1.
isRun()) ++iter1;
815 if(iter1 == iEnd1)
return;
818 while(iter2 != iEnd2 && iter2.
isRun()) ++iter2;
819 if(iter2 == iEnd2)
return;
825 while(iter1 != iEnd1 && iter2 != iEnd2) {
829 if(indexes1 < indexes2) {
831 }
else if(indexes2 < indexes1) {
836 if(indexes1.
isRun() ||
837 (previousIndexes && !(*previousIndexes < indexes1))) {
841 previousIndexes = &indexes1;
852 if((beginEventNumbers1 >= endEventNumbers1) ||
853 (beginEventNumbers2 >= endEventNumbers2)) {
860 std::vector<EventEntry> matchingEvents;
861 std::insert_iterator<std::vector<EventEntry> > insertIter(matchingEvents, matchingEvents.begin());
864 indexIntoFile.
eventEntries().begin() + beginEventNumbers2,
865 indexIntoFile.
eventEntries().begin() + endEventNumbers2,
876 std::vector<EventNumber_t> matchingEvents;
877 std::insert_iterator<std::vector<EventNumber_t> > insertIter(matchingEvents, matchingEvents.begin());
880 indexIntoFile.
eventNumbers().begin() + beginEventNumbers2,
881 indexIntoFile.
eventNumbers().begin() + endEventNumbers2,
901 iter != iEnd; ++iter) {
906 if(indexes.
isRun() ||
907 (previousIndexes && !(*previousIndexes < indexes))) {
910 previousIndexes = &indexes;
916 if(beginEventNumbers + 1 >= endEventNumbers)
continue;
919 std::vector<EventEntry>::iterator
last =
eventEntries().begin() + endEventNumbers;
920 if(std::adjacent_find(
eventEntries().
begin() + beginEventNumbers, last) != last) {
925 std::vector<EventNumber_t>::iterator
last =
eventNumbers().begin() + endEventNumbers;
926 if(std::adjacent_find(
eventNumbers().
begin() + beginEventNumbers, last) != last) {
966 int indexToGetEntry) :
970 indexToGetEntry_(indexToGetEntry),
971 beginEventNumbers_(-1),
977 indexIntoFile_(indexIntoFile), runOrLumi_(runOrLumi) {
1004 long long & endEventNumbers,
1024 int indexToEventRange,
1025 long long indexToEvent,
1030 indexToRun_(indexToRun),
1031 indexToLumi_(indexToLumi),
1032 indexToEventRange_(indexToEventRange),
1033 indexToEvent_(indexToEvent),
1077 }
else if(nextType ==
kRun) {
1089 if(nextType ==
kRun && sameRun) {
1091 }
else if(nextType ==
kRun && !sameRun) {
1094 }
else if(nextType ==
kLumi) {
1108 runOfSkippedEvent =
run();
1132 skipEventForward(phIndexOfSkippedEvent, runOfSkippedEvent, lumiOfSkippedEvent, skippedEventEntry);
1141 skipEventForward(phIndexOfSkippedEvent, runOfSkippedEvent, lumiOfSkippedEvent, skippedEventEntry);
1154 skipEventForward(phIndexOfSkippedEvent, runOfSkippedEvent, lumiOfSkippedEvent, skippedEventEntry);
1207 if(newLumi <= 0)
return false;
1210 for( ; newLumi > 0; --newLumi) {
1218 if(newLumi == 0)
return false;
1233 int newRun = newLumi;
1254 long long saveNEvents =
nEvents();
1281 long long saveNEvents =
nEvents();
1327 for(
int i = 1; startSearch +
i <
size_; ++
i) {
1343 for(
int i = 1; startSearch +
i <
size_; ++
i) {
1383 if(entryType ==
kRun) {
1401 auto oldLumi =
lumi();
1405 assert(oldLumi ==
lumi());
1605 if(index < 0 || index >=
size()) {
1614 if(index1 < 0 || index1 >=
size() || index2 < 0 || index2 >=
size()) {
1622 if(index1 < 0 || index1 >=
size() || index2 < 0 || index2 >=
size()) {
1677 long long eventNumberIndex =
1692 long long eventNumberIndex =
1720 long long nEventsInRange =
1723 if(nEventsInRange == 0) {
1731 assert(nEventsInRange ==
1764 if(index < 0 || index >=
size()) {
1773 if(index1 < 0 || index1 >=
size() || index2 < 0 || index2 >=
size()) {
1781 if(index1 < 0 || index1 >=
size() || index2 < 0 || index2 >=
size()) {
1831 entryType !=
kEnd && entryType !=
kLumi;
1844 return lh.
run() < rh.
run();
void initializeRun()
Should only be used internally and for tests.
void fillEventNumbersOrEntries(bool needEventNumbers, bool needEventEntries) const
RunNumber_t & currentRun() const
int processHistoryIDIndex() const
int processHistoryIDIndex() const
virtual bool isSameLumi(int index1, int index2) const =0
EntryNumber_t peekAheadAtEventEntry() const
int processHistoryIDIndex() const override
bool isSameLumi(int index1, int index2) const override
void setIndexToLumi(int value)
virtual void initializeLumi_()=0
EntryNumber_t endEvents() const
void doneFileInitialization() const
Clears the temporary vector of event numbers to reduce memory usage.
static constexpr int invalidIndex
bool skipLumiInRun() override
RunNumber_t run() const override
IndexIntoFile const * indexIntoFile() const
IndexIntoFileItrImpl * clone() const override
LuminosityBlockNumber_t currentLumi_
bool skipToNextEventInLumi()
bool isSameRun(int index1, int index2) const override
void addLumi(int index, RunNumber_t run, LuminosityBlockNumber_t lumi, EntryNumber_t entry)
virtual bool previousEventRange()=0
std::vector< EventEntry > & eventEntries() const
virtual bool nextEventRange()=0
EntryNumber_t beginEvents() const
void advanceToNextLumiOrRun()
EntryNumber_t entry() const override
std::vector< EventNumber_t > eventNumbers_
virtual bool setToLastEventInRange(int index)=0
SortedRunOrLumiItr beginRunOrLumi() const
EntryNumber_t orderPHIDRun_
bool empty() const
True if no runs, lumis, or events are in the file.
LuminosityBlockNumber_t & currentLumi() const
RunNumber_t run() const override
EntryType getEntryType() const
EntryNumber_t beginEvents_
bool isSameLumi(int index1, int index2) const override
bool nextEventRange() override
IndexIntoFile const * indexIntoFile_
bool operator==(SortedRunOrLumiItr const &right) const
unsigned long long EventNumber_t
std::vector< RunOrLumiIndexes > & runOrLumiIndexes() const
EntryNumber_t beginEvents_
void fillUnsortedEventNumbers() const
EntryNumber_t peekAheadAtEventEntry() const override
IndexIntoFileItr begin(SortOrder sortOrder) const
void initializeLumi_() override
bool previousEventRange() override
IndexIntoFile const * indexIntoFile_
void swap(Hash< I > &other)
LuminosityBlockNumber_t lumi() const
std::map< IndexRunLumiKey, EntryNumber_t > & lumiToOrder() const
std::vector< RunOrLumiEntry > const & runOrLumiEntries() const
Used internally and for test purposes.
LuminosityBlockNumber_t peekAheadAtLumi() const override
void stable_sort_all(RandomAccessSequence &s)
wrappers for std::stable_sort
EntryNumber_t orderPHIDRun() const
std::vector< EventNumber_t > unsortedEventNumbers_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
EntryNumber_t entry() const override
virtual LuminosityBlockNumber_t lumi() const =0
void setIndexToEventRange(int value)
virtual ~IndexIntoFileItrImpl()
unsigned int LuminosityBlockNumber_t
IndexIntoFileItr findRunPosition(RunNumber_t run) const
Same as findPosition.
std::vector< ProcessHistoryID > const & processHistoryIDs() const
static constexpr EventNumber_t invalidEvent
void swap(Association< C > &lhs, Association< C > &rhs)
long long beginEventNumbers() const
virtual bool lumiEntryValid(int index) const =0
std::map< IndexRunLumiKey, EntryNumber_t > lumiToOrder_
IndexIntoFileItr findPosition(RunNumber_t run, LuminosityBlockNumber_t lumi=0U, EventNumber_t event=0U) const
virtual bool isSameRun(int index1, int index2) const =0
int & previousAddedIndex() const
void sortVector_Run_Or_Lumi_Entries()
void setNEvents(long long value)
EntryType getRunOrLumiEntryType(int index) const override
size_t numberOfEvents() const
void reduceProcessHistoryIDs(ProcessHistoryRegistry const &processHistoryRegistry)
IndexIntoFile const * indexIntoFile() const
bool skipLumiInRun() override
int & currentIndex() const
bool setToLastEventInRange(int index) override
RunOrLumiIndexes(int processHistoryIDIndex, RunNumber_t run, LuminosityBlockNumber_t lumi, int indexToGetEntry)
long long indexToEvent() const
LuminosityBlockNumber_t lumi() const override
double intersection(double r12)
static constexpr RunNumber_t invalidRun
void setIndexToEvent(long long value)
int processHistoryIDIndex_
void skipEventBackward(int &phIndexOfEvent, RunNumber_t &runOfEvent, LuminosityBlockNumber_t &lumiOfEvent, EntryNumber_t &eventEntry)
EntryNumber_t orderPHIDRunLumi() const
int indexToEventRange() const
std::vector< RunOrLumiEntry > runOrLumiEntries_
std::map< IndexRunKey, EntryNumber_t > runToOrder_
void copyPosition(IndexIntoFileItr const &position)
Copy the position without modifying the pointer to the IndexIntoFile or size.
IndexIntoFileItr end(SortOrder sortOrder) const
Used to end an iteration over the Runs, Lumis, and Events in a file.
EntryNumber_t numberOfEvents_
void skipEventForward(int &phIndexOfSkippedEvent, RunNumber_t &runOfSkippedEvent, LuminosityBlockNumber_t &lumiOfSkippedEvent, EntryNumber_t &skippedEventEntry)
std::vector< ProcessHistoryID > processHistoryIDs_
LuminosityBlockNumber_t lumi_
bool isSameRun(int index1, int index2) const override
void fillEventEntries() const
IndexIntoFileItrImpl(IndexIntoFile const *indexIntoFile, EntryType entryType, int indexToRun, int indexToLumi, int indexToEventRange, long long indexToEvent, long long nEvents)
virtual bool skipLumiInRun()=0
EntryType getRunOrLumiEntryType(int index) const override
void fillRunOrLumiIndexes() const
bool operator==(IndexIntoFileItrImpl const &right) const
bool lumiEntryValid(int index) const override
bool previousLumiWithEvents()
void set_intersection(IndexIntoFile const &indexIntoFile, std::set< IndexRunLumiEventKey > &intersection) const
SortedRunOrLumiItr & operator++()
bool iterationWillBeInEntryOrder(SortOrder sortOrder) const
Used to determine whether or not to disable fast cloning.
ProcessHistoryID const & reducedProcessHistoryID(ProcessHistoryID const &fullID) const
virtual EntryType getRunOrLumiEntryType(int index) const =0
LuminosityBlockNumber_t lumi() const override
bool operator()(IndexIntoFile::RunOrLumiIndexes const &lh, IndexIntoFile::RunOrLumiIndexes const &rh)
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
bool operator!=(SortedRunOrLumiItr const &right) const
void addEntry(ProcessHistoryID const &processHistoryID, RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event, EntryNumber_t entry)
long long endEventNumbers() const
SortedRunOrLumiItr(IndexIntoFile const *indexIntoFile, unsigned runOrLumi)
EntryNumber_t firstEventEntryThisLumi()
Hash< ProcessHistoryType > ProcessHistoryID
void sortEventEntries() const
bool containsLumi(RunNumber_t run, LuminosityBlockNumber_t lumi) const
bool containsDuplicateEvents() const
Returns true if the IndexIntoFile contains 2 events with the same ProcessHistoryID index...
bool previousEventRange() override
bool containsItem(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
void inputFileClosed() const
void fixIndexes(std::vector< ProcessHistoryID > &processHistoryIDs)
bool setToLastEventInRange(int index) override
void resetEventFinder() const
bool nextEventRange() override
std::vector< EventNumber_t > & unsortedEventNumbers() const
static constexpr EntryNumber_t invalidEntry
EntryNumber_t peekAheadAtEventEntry() const override
IndexIntoFileItrSorted(IndexIntoFile const *indexIntoFile, EntryType entryType, int indexToRun, int indexToLumi, int indexToEventRange, long long indexToEvent, long long nEvents)
virtual RunNumber_t run() const =0
static constexpr LuminosityBlockNumber_t invalidLumi
IndexIntoFileItr findLumiPosition(RunNumber_t run, LuminosityBlockNumber_t lumi) const
unsigned runOrLumi() const
void initializeLumi()
Should only be used internally and for tests.
ProcessHistoryID const & processHistoryID(int i) const
std::map< IndexRunKey, EntryNumber_t > & runToOrder() const
EntryNumber_t firstEventEntryThisRun()
void copyPosition(IndexIntoFileItrImpl const &position)
IndexIntoFileItrImpl * clone() const override
std::vector< EventEntry > eventEntries_
EventNumber_t getEventNumberOfEntry(EntryNumber_t entry) const
bool lumiEntryValid(int index) const override
void fillEventNumbers() const
static int position[264][3]
LuminosityBlockNumber_t peekAheadAtLumi() const override
long long nEvents() const
void setNumberOfEvents(EntryNumber_t nevents) const
bool containsEvent(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
std::vector< EventNumber_t > & eventNumbers() const
std::vector< RunOrLumiIndexes > runOrLumiIndexes_
IndexIntoFileItr(IndexIntoFile const *indexIntoFile, SortOrder sortOrder, EntryType entryType, int indexToRun, int indexToLumi, int indexToEventRange, long long indexToEvent, long long nEvents)
virtual int processHistoryIDIndex() const =0
virtual LuminosityBlockNumber_t peekAheadAtLumi() const =0
SortedRunOrLumiItr endRunOrLumi() const
bool operator()(IndexIntoFile::RunOrLumiIndexes const &lh, IndexIntoFile::RunOrLumiIndexes const &rh)
bool skipToNextEventInLumi()
bool containsRun(RunNumber_t run) const
EntryNumber_t orderPHIDRunLumi_
IndexIntoFileItr findEventPosition(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
EntryNumber_t entry() const
void getRange(long long &beginEventNumbers, long long &endEventNumbers, EntryNumber_t &beginEventEntry, EntryNumber_t &endEventEntry)
EntryNumber_t & endEvents() const
LuminosityBlockNumber_t peekAheadAtLumi() const
EntryNumber_t & beginEvents() const
virtual EntryNumber_t peekAheadAtEventEntry() const =0
value_ptr< IndexIntoFileItrImpl > impl_
IndexIntoFileItrNoSort(IndexIntoFile const *indexIntoFile, EntryType entryType, int indexToRun, int indexToLumi, int indexToEventRange, long long indexToEvent, long long nEvents)
void initializeLumi_() override
int processHistoryIDIndex() const override
edm::propagate_const< std::shared_ptr< EventFinder > > eventFinder_
RunOrLumiIndexes const & runOrLumiIndexes() const