00001 #ifndef MCEVENTSELECTOR_MCITERAROR_H 00002 #define MCEVENTSELECTOR_MCITERATOR_H 1 00003 00004 #include "GaudiKernel/IEvtSelector.h" 00005 00006 class McAddress; 00007 00008 class McIterator : virtual public IEvtSelector::Iterator 00009 { 00010 public: 00011 McIterator (const IEvtSelector* selector) : 00012 m_evtSelector(selector), 00013 m_runNo(0), m_eventNo(0), 00014 m_eventsP(1000000) {} 00015 McIterator (const McIterator &it) : m_evtSelector(it.m_evtSelector), 00016 m_runNo(it.m_runNo), 00017 m_eventNo(it.m_eventNo), 00018 m_eventsP(1000000) {} 00019 // McIterator () : m_evtSelector(0), m_runNo(0), m_eventNo(0) {} 00020 virtual ~McIterator (void) {} 00021 00022 virtual IOpaqueAddress* operator*() const; 00023 virtual IOpaqueAddress* operator->() const; 00024 virtual Iterator& operator++(); 00025 virtual Iterator& operator--(); 00026 virtual Iterator& operator++(int); 00027 virtual Iterator& operator--(int); 00028 virtual bool operator==(const Iterator& it) const; 00029 virtual bool operator!=(const Iterator& it) const; 00030 00031 unsigned int runNumber() const { return m_runNo; } 00032 unsigned int eventNumber() const { return m_eventNo; } 00033 00034 void setRunNumber( unsigned int runNo ) { m_runNo = runNo; } 00035 void setEventNumber( unsigned int eventNo ) { m_eventNo = eventNo ; } 00036 void setEventsPerRun( unsigned int eventsP) { m_eventsP = eventsP ; } 00037 00038 private: 00039 McAddress* dereference() const; 00040 00041 const IEvtSelector* m_evtSelector; 00042 00043 unsigned int m_runNo; 00044 unsigned int m_eventNo; 00045 unsigned int m_eventsP; 00046 }; 00047 #endif /* MCEVENTSELECTOR_MCITERATOR_H */ 00048 00049