6 #include "cetlib/container_algorithms.h" 85 std::vector<FileIndex::Element>::size_type
171 if (
e.getEntryType() ==
kEvent) {
172 if (
e.entry < maxEntry) {
197 while (it->getEntryType() !=
kEvent) {
203 auto itPrevious = it;
209 while (it->getEntryType() !=
kEvent) {
215 for (; it != itEnd; ++it) {
216 if (it->getEntryType() ==
kEvent) {
217 if (it->eventID <= itPrevious->eventID) {
231 return lower_bound_all(
entries_, el);
238 if (subRunUnspecified(eID)) {
249 if (exact && (*it != eID)) {
274 if (exact && (it->eventID.subRunID() != srID)) {
299 if (exact && (it->eventID.runID() != rID)) {
327 os <<
"\nPrinting the list of Runs, SubRuns, and Events stored in the root " 329 os << setw(15) <<
"Run" << setw(15) <<
"SubRun" << setw(15) <<
"Event" 333 os << setw(15) <<
e.eventID.run() << setw(15) <<
e.eventID.subRun()
334 << setw(15) <<
e.eventID.event() <<
"\n";
336 os << setw(15) <<
e.eventID.run() << setw(15) <<
e.eventID.subRun()
340 os << setw(15) <<
e.eventID.run() << setw(15) <<
" " << setw(15) <<
" " 353 auto const firstEvent =
367 while ((it != itEnd) && (it->eventID.runID() == runID) &&
368 (it->eventID.event() <
event)) {
369 last_subRunID = it->eventID.subRunID();
375 if ((it != itEnd) && (it->eventID.runID() == runID) &&
376 (it->eventID.event() ==
event)) {
379 }
else if (last_subRunID.
isValid()) {
383 if (result == itEnd) {
386 <<
"Could not find incompletely specified event " << eID
387 <<
" with smart algorithm:\n" 388 <<
"Assuming pathological file structure (event selection?) and\n" 389 <<
"trying again (inefficient).\n" 390 <<
"NOTE: this will find only the event with matching event number " 392 <<
" lowest subrun number: any others are inaccessible via this " 397 SubRunID lastSubRunInRun{trySubRun};
398 for (; findIt != itEnd && findIt->eventID.runID() == runID;
401 lastSubRunInRun = findIt->eventID.subRunID();
406 trySubRun < lastSubRunInRun) {
407 trySubRun = trySubRun.
next();
441 return !(lh < rh || rh < lh);
489 os <<
"\nPrinting FileIndex contents. This includes a list of all Runs, " 491 <<
"and Events stored in the root file.\n\n";
492 os << setw(15) <<
"Run" << setw(15) <<
"SubRun" << setw(15) <<
"Event" 493 << setw(15) <<
"TTree Entry" 495 for (
auto const&
e : fileIndex) {
497 os << setw(15) <<
e.eventID.run() << setw(15) <<
e.eventID.subRun()
498 << setw(15) <<
e.eventID.event() << setw(15) <<
e.entry <<
"\n";
500 os << setw(15) <<
e.eventID.run() << setw(15) <<
e.eventID.subRun()
501 << setw(15) <<
" " << setw(15) <<
e.entry <<
" (SubRun)" 504 os << setw(15) <<
e.eventID.run() << setw(15) <<
" " << setw(15) <<
" " 505 << setw(15) <<
e.entry <<
" (Run)"
RunID const & runID() const
SubRunID const & subRunID() const
void addEntryOnLoad(EventID const &eID, EntryNumber_t entry)
Transient< Transients > transients_
std::vector< Element >::iterator iterator
bool operator>(ScheduleID const left, ScheduleID const right) noexcept
const_iterator findSubRunOrRunPosition(SubRunID const &srID) const
art::FileIndex::EntryNumber_t EntryNumber_t
friend bool operator==(FileIndex const &, FileIndex const &)
bool allEventsInEntryOrder() const
SortState & sortState() const
bool operator()(FileIndex::Element const &lh, FileIndex::Element const &rh)
void sortBy_Run_SubRun_EventEntry()
bool & allInEntryOrder() const
bool operator!=(ScheduleID const left, ScheduleID const right) noexcept
std::vector< Element >::size_type size() const
std::ostream & operator<<(std::ostream &os, const GroupSelector &gs)
bool operator<(ProductInfo const &a, ProductInfo const &b)
bool operator<=(ScheduleID const left, ScheduleID const right) noexcept
void print_event_list(std::ostream &os) const
const_iterator findEventForUnspecifiedSubRun(EventID const &eID, bool exact) const
const_iterator cbegin() const
void sortBy_Run_SubRun_Event()
const_iterator findPosition(EventID const &eID) const
void addEntry(EventID const &eID, EntryNumber_t entry)
static SubRunID firstSubRun()
bool eventsUniqueAndOrdered() const
EntryType getEntryType() const
std::vector< Element >::const_iterator const_iterator
bool contains(EventID const &id, bool exact) const
static constexpr EntryNumber_t invalid
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
static constexpr EventID invalidEvent() noexcept
IDNumber_t< Level::Event > EventNumber_t
EventNumber_t event() const
bool operator>=(ScheduleID const left, ScheduleID const right) noexcept
const_iterator cend() const
static EventID firstEvent()
std::vector< Element > entries_
Event finding and building.
bool & resultCached() const