18 SimulationAreaIterator::SimulationAreaIterator(
const SimulationArea* area,
size_t start_at_index)
19 : m_area(area), m_index(start_at_index), m_element_index(0)
21 if (m_index > m_area->totalSize())
23 "-> Error. Invalid initial index");
25 if (m_index != m_area->totalSize() && m_area->isMasked(m_index))
26 m_index = nextIndex(m_index);
29 size_t SimulationAreaIterator::roiIndex()
const
34 size_t SimulationAreaIterator::detectorIndex()
const
41 size_t index = nextIndex(m_index);
42 if (index != m_index) {
56 size_t SimulationAreaIterator::nextIndex(
size_t currentIndex)
58 size_t result = ++currentIndex;
59 if (result < m_area->totalSize()) {
62 if (result == m_area->totalSize())
66 return m_area->totalSize();
Defines interface IDetector2D.
Defines class SimulationArea.
An iterator for SimulationArea.
SimulationAreaIterator & operator++()
prefix increment
Holds iteration logic over active detector channels in the presence of masked areas and RegionOfInter...
virtual bool isMasked(size_t index) const
returns true if given iterator index correspond to masked detector channel
size_t detectorIndex(size_t index) const
Return detector index from iterator index.
size_t roiIndex(size_t index) const
Return index in ROI map from iterator index.