00001 #include "StiSortedHitIterator.h"
00002
00004 StiSortedHitIterator::StiSortedHitIterator()
00005 : _currentHit(0),
00006 _hitContainer(0),
00007 _currentDet(),
00008 _firstDet(),
00009 _lastDet(),
00010 _currentDetHit(),
00011 _lastDetHit()
00012 { }
00013
00014
00016 StiSortedHitIterator::StiSortedHitIterator(StiHitContainer * hitContainer,
00017 vector<StiDetector*>::iterator firstDet,
00018 vector<StiDetector*>::iterator lastDet): _currentHit(0)
00019 {
00020 _hitContainer = hitContainer;
00021 _lastDet = lastDet;
00022 for ( _currentDet = firstDet; _currentDet<_lastDet; ++_currentDet) {
00023 if (_hitContainer->hasDetector(*_currentDet) ) {
00024 _currentDetHit = _hitContainer->hitsBegin(*_currentDet);
00025 _lastDetHit = _hitContainer->hitsEnd(*_currentDet);
00026 if (_currentDetHit<_lastDetHit) {
00027 _currentHit = *_currentDetHit;
00028 break;
00029 }
00030 }
00031 _currentHit = 0;
00032 _currentDetHit = _lastDetHit;
00033 }
00034 if (! _currentHit) _currentDet = _lastDet;
00035 }
00036
00038 StiSortedHitIterator::StiSortedHitIterator(const StiSortedHitIterator&iter)
00039 : _currentHit(iter._currentHit),
00040 _hitContainer(iter._hitContainer),
00041 _currentDet(iter._currentDet),
00042 _firstDet(iter._firstDet),
00043 _lastDet(iter._lastDet),
00044 _currentDetHit(iter._currentDetHit),
00045 _lastDetHit(iter._lastDetHit)
00046 {}