CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes
edm::FileIndex Class Reference

#include <FileIndex.h>

Classes

class  Element
 
struct  Transients
 

Public Types

typedef std::vector< Element >
::const_iterator 
const_iterator
 
typedef long long EntryNumber_t
 
enum  EntryType { kRun, kLumi, kEvent, kEnd }
 
typedef std::vector< Element >
::iterator 
iterator
 
enum  SortState { kNotSorted, kSorted_Run_Lumi_Event, kSorted_Run_Lumi_EventEntry }
 

Public Member Functions

void addEntry (RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event, EntryNumber_t entry)
 
bool allEventsInEntryOrder () const
 
const_iterator begin () const
 
iterator begin ()
 
bool containsEvent (RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
 
bool containsItem (RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
 
bool containsLumi (RunNumber_t run, LuminosityBlockNumber_t lumi) const
 
bool containsRun (RunNumber_t run) const
 
bool empty () const
 
const_iterator end () const
 
iterator end ()
 
iterator erase (iterator pos)
 
iterator erase (iterator begin, iterator end)
 
 FileIndex ()
 
const_iterator findEventEntryPosition (RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event, EntryNumber_t entry) const
 
const_iterator findEventPosition (RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
 
const_iterator findLumiOrRunPosition (RunNumber_t run, LuminosityBlockNumber_t lumi) const
 
const_iterator findLumiPosition (RunNumber_t run, LuminosityBlockNumber_t lumi) const
 
const_iterator findPosition (RunNumber_t run, LuminosityBlockNumber_t lumi=0U, EventNumber_t event=0U) const
 
const_iterator findRunPosition (RunNumber_t run) const
 
void initializeTransients () const
 
std::vector< Element >::size_type size () const
 
void sortBy_Run_Lumi_Event ()
 
void sortBy_Run_Lumi_EventEntry ()
 
 ~FileIndex ()
 

Private Member Functions

bool & allInEntryOrder () const
 
bool & resultCached () const
 
SortStatesortState () const
 

Private Attributes

std::vector< Elemententries_
 
Transients transient_
 

Detailed Description

Definition at line 20 of file FileIndex.h.

Member Typedef Documentation

Definition at line 53 of file FileIndex.h.

typedef long long edm::FileIndex::EntryNumber_t

Definition at line 23 of file FileIndex.h.

typedef std::vector<Element>::iterator edm::FileIndex::iterator

Definition at line 55 of file FileIndex.h.

Member Enumeration Documentation

Enumerator
kRun 
kLumi 
kEvent 
kEnd 

Definition at line 30 of file FileIndex.h.

Enumerator
kNotSorted 
kSorted_Run_Lumi_Event 
kSorted_Run_Lumi_EventEntry 

Definition at line 116 of file FileIndex.h.

Constructor & Destructor Documentation

edm::FileIndex::FileIndex ( )

Definition at line 10 of file FileIndex.cc.

10 : entries_(), transient_() {}
std::vector< Element > entries_
Definition: FileIndex.h:134
Transients transient_
Definition: FileIndex.h:135
edm::FileIndex::~FileIndex ( )
inline

Definition at line 26 of file FileIndex.h.

26 {}

Member Function Documentation

void edm::FileIndex::addEntry ( RunNumber_t  run,
LuminosityBlockNumber_t  lumi,
EventNumber_t  event,
EntryNumber_t  entry 
)

Definition at line 29 of file FileIndex.cc.

References entries_, kNotSorted, resultCached(), and sortState().

29  {
30  entries_.emplace_back(run, lumi, event, entry);
31  resultCached() = false;
33  }
tuple lumi
Definition: fjr2json.py:35
SortState & sortState() const
Definition: FileIndex.h:132
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
std::vector< Element > entries_
Definition: FileIndex.h:134
bool & resultCached() const
Definition: FileIndex.h:131
bool edm::FileIndex::allEventsInEntryOrder ( ) const

Definition at line 47 of file FileIndex.cc.

References allInEntryOrder(), entries_, edm::FileIndex::Element::invalidEntry, kEvent, and resultCached().

47  {
48  if(!resultCached()) {
49  resultCached() = true;
51  for(std::vector<FileIndex::Element>::const_iterator it = entries_.begin(), itEnd = entries_.end(); it != itEnd; ++it) {
52  if(it->getEntryType() == kEvent) {
53  if(it->entry_ < maxEntry) {
54  allInEntryOrder() = false;
55  return false;
56  }
57  maxEntry = it->entry_;
58  }
59  }
60  allInEntryOrder() = true;
61  return true;
62  }
63  return allInEntryOrder();
64  }
bool & allInEntryOrder() const
Definition: FileIndex.h:130
static EntryNumber_t const invalidEntry
Definition: FileIndex.h:34
long long EntryNumber_t
Definition: FileIndex.h:23
std::vector< Element > entries_
Definition: FileIndex.h:134
bool & resultCached() const
Definition: FileIndex.h:131
bool& edm::FileIndex::allInEntryOrder ( ) const
inlineprivate

Definition at line 130 of file FileIndex.h.

References edm::FileIndex::Transients::allInEntryOrder_, and transient_.

Referenced by allEventsInEntryOrder().

Transients transient_
Definition: FileIndex.h:135
const_iterator edm::FileIndex::begin ( void  ) const
inline

Definition at line 98 of file FileIndex.h.

References entries_.

Referenced by edm::operator<<(), and edm::preIndexIntoFilePrintEventsInLumis().

98 {return entries_.begin();}
std::vector< Element > entries_
Definition: FileIndex.h:134
iterator edm::FileIndex::begin ( void  )
inline

Definition at line 102 of file FileIndex.h.

References entries_.

102 {return entries_.begin();}
std::vector< Element > entries_
Definition: FileIndex.h:134
bool edm::FileIndex::containsEvent ( RunNumber_t  run,
LuminosityBlockNumber_t  lumi,
EventNumber_t  event 
) const
inline

Definition at line 84 of file FileIndex.h.

References entries_, and findEventPosition().

Referenced by containsItem().

84  {
85  return findEventPosition(run, lumi, event) != entries_.end();
86  }
tuple lumi
Definition: fjr2json.py:35
const_iterator findEventPosition(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
Definition: FileIndex.cc:91
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
std::vector< Element > entries_
Definition: FileIndex.h:134
bool edm::FileIndex::containsItem ( RunNumber_t  run,
LuminosityBlockNumber_t  lumi,
EventNumber_t  event 
) const
inline

Definition at line 79 of file FileIndex.h.

References containsEvent(), containsLumi(), and containsRun().

79  {
80  return event ? containsEvent(run, lumi, event) : (lumi ? containsLumi(run, lumi) : containsRun(run));
81  }
tuple lumi
Definition: fjr2json.py:35
bool containsRun(RunNumber_t run) const
Definition: FileIndex.h:94
bool containsLumi(RunNumber_t run, LuminosityBlockNumber_t lumi) const
Definition: FileIndex.h:89
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 containsEvent(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
Definition: FileIndex.h:84
bool edm::FileIndex::containsLumi ( RunNumber_t  run,
LuminosityBlockNumber_t  lumi 
) const
inline

Definition at line 89 of file FileIndex.h.

References entries_, and findLumiPosition().

Referenced by containsItem().

89  {
90  return findLumiPosition(run, lumi) != entries_.end();
91  }
tuple lumi
Definition: fjr2json.py:35
const_iterator findLumiPosition(RunNumber_t run, LuminosityBlockNumber_t lumi) const
Definition: FileIndex.cc:120
std::vector< Element > entries_
Definition: FileIndex.h:134
bool edm::FileIndex::containsRun ( RunNumber_t  run) const
inline

Definition at line 94 of file FileIndex.h.

References entries_, and findRunPosition().

Referenced by containsItem().

94  {
95  return findRunPosition(run) != entries_.end();
96  }
const_iterator findRunPosition(RunNumber_t run) const
Definition: FileIndex.cc:136
std::vector< Element > entries_
Definition: FileIndex.h:134
bool edm::FileIndex::empty ( ) const
inline

Definition at line 112 of file FileIndex.h.

References entries_.

Referenced by fwlite::EntryFinder::empty(), Vispa.Gui.VispaWidget.TextField::setAutosizeFont(), and Vispa.Gui.VispaWidget.TextField::setAutotruncate().

112 {return entries_.empty();}
std::vector< Element > entries_
Definition: FileIndex.h:134
const_iterator edm::FileIndex::end ( void  ) const
inline
iterator edm::FileIndex::end ( void  )
inline

Definition at line 104 of file FileIndex.h.

References entries_.

Referenced by Types.LuminosityBlockRange::cppID(), and Types.EventRange::cppID().

104 {return entries_.end();}
std::vector< Element > entries_
Definition: FileIndex.h:134
iterator edm::FileIndex::erase ( iterator  pos)
inline

Definition at line 106 of file FileIndex.h.

References entries_.

106 {return entries_.erase(pos);}
std::vector< Element > entries_
Definition: FileIndex.h:134
iterator edm::FileIndex::erase ( iterator  begin,
iterator  end 
)
inline

Definition at line 108 of file FileIndex.h.

References entries_.

108 {return entries_.erase(begin, end);}
const_iterator end() const
Definition: FileIndex.h:100
std::vector< Element > entries_
Definition: FileIndex.h:134
const_iterator begin() const
Definition: FileIndex.h:98
FileIndex::const_iterator edm::FileIndex::findEventEntryPosition ( RunNumber_t  run,
LuminosityBlockNumber_t  lumi,
EventNumber_t  event,
EntryNumber_t  entry 
) const

Definition at line 162 of file FileIndex.cc.

References entries_, findEventPosition(), kNotSorted, kSorted_Run_Lumi_EventEntry, edm::lower_bound_all(), and sortState().

162  {
163  assert(sortState() != kNotSorted);
164  const_iterator it;
165  const_iterator itEnd = entries_.end();
167  assert(lumi != 0U);
168  Element el(run, lumi, event, entry);
169  it = lower_bound_all(entries_, el, Compare_Run_Lumi_EventEntry());
170  } else {
172  while(it != itEnd && it->entry_ != entry && it->event_ == event) {
173  ++it;
174  }
175  }
176  if(it == itEnd) return itEnd;
177  if(lumi == 0) lumi = it->lumi_;
178  if(it->run_ != run || it->lumi_ != lumi || it->event_ != event || it->entry_ != entry) return itEnd;
179  return it;
180  }
ForwardSequence::const_iterator lower_bound_all(ForwardSequence const &s, Datum const &d)
wrappers for std::lower_bound
Definition: Algorithms.h:91
tuple lumi
Definition: fjr2json.py:35
SortState & sortState() const
Definition: FileIndex.h:132
std::vector< Element >::const_iterator const_iterator
Definition: FileIndex.h:53
const_iterator findEventPosition(RunNumber_t run, LuminosityBlockNumber_t lumi, EventNumber_t event) const
Definition: FileIndex.cc:91
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
std::vector< Element > entries_
Definition: FileIndex.h:134
FileIndex::const_iterator edm::FileIndex::findEventPosition ( RunNumber_t  run,
LuminosityBlockNumber_t  lumi,
EventNumber_t  event 
) const

Definition at line 91 of file FileIndex.cc.

References entries_, findPosition(), kEvent, kSorted_Run_Lumi_Event, and sortState().

Referenced by containsEvent(), fwlite::EntryFinder::findEvent(), and findEventEntryPosition().

91  {
92 
94  const_iterator itEnd = entries_.end();
95  while(it != itEnd && it->getEntryType() != FileIndex::kEvent) {
96  ++it;
97  }
98  if(it == itEnd) {
99  return itEnd;
100  }
101  if(lumi == 0) {
102  lumi = it->lumi_;
103  }
104  if(it->run_ != run || it->lumi_ != lumi || it->event_ != event) {
106  return itEnd;
107  }
108  // not sorted by event, so we need to do a linear search
109  while (it != itEnd && it->run_ == run && it->lumi_ == lumi && it->event_ != event) {
110  ++it;
111  }
112  if(it->run_ != run || it->lumi_ != lumi || it->event_ != event) {
113  return itEnd;
114  }
115  }
116  return it;
117  }
tuple lumi
Definition: fjr2json.py:35
SortState & sortState() const
Definition: FileIndex.h:132
std::vector< Element >::const_iterator const_iterator
Definition: FileIndex.h:53
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
std::vector< Element > entries_
Definition: FileIndex.h:134
const_iterator findPosition(RunNumber_t run, LuminosityBlockNumber_t lumi=0U, EventNumber_t event=0U) const
Definition: FileIndex.cc:67
FileIndex::const_iterator edm::FileIndex::findLumiOrRunPosition ( RunNumber_t  run,
LuminosityBlockNumber_t  lumi 
) const

Definition at line 152 of file FileIndex.cc.

References entries_, findPosition(), kLumi, and kRun.

152  {
153  const_iterator it = findPosition(run, lumi, 0U);
154  const_iterator itEnd = entries_.end();
155  while(it != itEnd && it->getEntryType() != FileIndex::kLumi && it->getEntryType() != FileIndex::kRun) {
156  ++it;
157  }
158  return it;
159  }
tuple lumi
Definition: fjr2json.py:35
std::vector< Element >::const_iterator const_iterator
Definition: FileIndex.h:53
std::vector< Element > entries_
Definition: FileIndex.h:134
const_iterator findPosition(RunNumber_t run, LuminosityBlockNumber_t lumi=0U, EventNumber_t event=0U) const
Definition: FileIndex.cc:67
FileIndex::const_iterator edm::FileIndex::findLumiPosition ( RunNumber_t  run,
LuminosityBlockNumber_t  lumi 
) const

Definition at line 120 of file FileIndex.cc.

References entries_, findPosition(), and kLumi.

Referenced by containsLumi(), and fwlite::EntryFinder::findLumi().

120  {
121  const_iterator it = findPosition(run, lumi, 0U);
122  const_iterator itEnd = entries_.end();
123  while(it != itEnd && it->getEntryType() != FileIndex::kLumi) {
124  ++it;
125  }
126  if(it == itEnd) {
127  return itEnd;
128  }
129  if(it->run_ != run || it->lumi_ != lumi) {
130  return itEnd;
131  }
132  return it;
133  }
tuple lumi
Definition: fjr2json.py:35
std::vector< Element >::const_iterator const_iterator
Definition: FileIndex.h:53
std::vector< Element > entries_
Definition: FileIndex.h:134
const_iterator findPosition(RunNumber_t run, LuminosityBlockNumber_t lumi=0U, EventNumber_t event=0U) const
Definition: FileIndex.cc:67
FileIndex::const_iterator edm::FileIndex::findPosition ( RunNumber_t  run,
LuminosityBlockNumber_t  lumi = 0U,
EventNumber_t  event = 0U 
) const

Definition at line 67 of file FileIndex.cc.

References entries_, kNotSorted, kSorted_Run_Lumi_Event, edm::lower_bound_all(), and sortState().

Referenced by findEventPosition(), findLumiOrRunPosition(), findLumiPosition(), and findRunPosition().

67  {
68  assert(sortState() != kNotSorted);
69 
70  const_iterator itEnd = entries_.end();
71  const_iterator it;
72  Element el(run, lumi, event);
74  it = lower_bound_all(entries_, el);
75  bool lumiMissing = (lumi == 0 && event != 0);
76  if(lumiMissing) {
77  while(it != itEnd && it->run_ < run) {
78  ++it;
79  }
80  while(it != itEnd && (it->run_ == run && it->event_ < event)) {
81  ++it;
82  }
83  }
84  } else {
85  it = lower_bound_all(entries_, el, Compare_Run_Lumi_EventEntry());
86  }
87  return it;
88  }
ForwardSequence::const_iterator lower_bound_all(ForwardSequence const &s, Datum const &d)
wrappers for std::lower_bound
Definition: Algorithms.h:91
tuple lumi
Definition: fjr2json.py:35
SortState & sortState() const
Definition: FileIndex.h:132
std::vector< Element >::const_iterator const_iterator
Definition: FileIndex.h:53
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
std::vector< Element > entries_
Definition: FileIndex.h:134
FileIndex::const_iterator edm::FileIndex::findRunPosition ( RunNumber_t  run) const

Definition at line 136 of file FileIndex.cc.

References entries_, findPosition(), and kRun.

Referenced by containsRun(), and fwlite::EntryFinder::findRun().

136  {
137  const_iterator it = findPosition(run, 0U, 0U);
138  const_iterator itEnd = entries_.end();
139  while(it != itEnd && it->getEntryType() != FileIndex::kRun) {
140  ++it;
141  }
142  if(it == itEnd) {
143  return itEnd;
144  }
145  if(it->run_ != run) {
146  return itEnd;
147  }
148  return it;
149  }
std::vector< Element >::const_iterator const_iterator
Definition: FileIndex.h:53
std::vector< Element > entries_
Definition: FileIndex.h:134
const_iterator findPosition(RunNumber_t run, LuminosityBlockNumber_t lumi=0U, EventNumber_t event=0U) const
Definition: FileIndex.cc:67
void edm::FileIndex::initializeTransients ( ) const
inline

Definition at line 118 of file FileIndex.h.

References edm::FileIndex::Transients::reset(), and transient_.

118 {transient_.reset();}
Transients transient_
Definition: FileIndex.h:135
bool& edm::FileIndex::resultCached ( ) const
inlineprivate
std::vector<Element>::size_type edm::FileIndex::size ( void  ) const
inline

Definition at line 110 of file FileIndex.h.

References entries_.

110 {return entries_.size();}
std::vector< Element > entries_
Definition: FileIndex.h:134
void edm::FileIndex::sortBy_Run_Lumi_Event ( )

Definition at line 35 of file FileIndex.cc.

References entries_, kSorted_Run_Lumi_Event, resultCached(), sortState(), and edm::stable_sort_all().

35  {
37  resultCached() = false;
39  }
SortState & sortState() const
Definition: FileIndex.h:132
void stable_sort_all(RandomAccessSequence &s)
wrappers for std::stable_sort
Definition: Algorithms.h:135
std::vector< Element > entries_
Definition: FileIndex.h:134
bool & resultCached() const
Definition: FileIndex.h:131
void edm::FileIndex::sortBy_Run_Lumi_EventEntry ( )

Definition at line 41 of file FileIndex.cc.

References entries_, kSorted_Run_Lumi_EventEntry, resultCached(), sortState(), and edm::stable_sort_all().

41  {
42  stable_sort_all(entries_, Compare_Run_Lumi_EventEntry());
43  resultCached() = false;
45  }
SortState & sortState() const
Definition: FileIndex.h:132
void stable_sort_all(RandomAccessSequence &s)
wrappers for std::stable_sort
Definition: Algorithms.h:135
std::vector< Element > entries_
Definition: FileIndex.h:134
bool & resultCached() const
Definition: FileIndex.h:131
SortState& edm::FileIndex::sortState ( ) const
inlineprivate

Member Data Documentation

std::vector<Element> edm::FileIndex::entries_
private
Transients edm::FileIndex::transient_
mutableprivate

Definition at line 135 of file FileIndex.h.

Referenced by allInEntryOrder(), initializeTransients(), resultCached(), and sortState().