BornAgain  1.18.0
Simulate and fit neutron and x-ray scattering at grazing incidence
SimulationAreaIterator Class Reference
Collaboration diagram for SimulationAreaIterator:

Public Member Functions

 SimulationAreaIterator (const SimulationArea *area, size_t start_at_index)
 
size_t index () const
 
size_t elementIndex () const
 
size_t roiIndex () const
 
size_t detectorIndex () const
 
bool operator== (const SimulationAreaIterator &other) const
 
bool operator!= (const SimulationAreaIterator &other) const
 
SimulationAreaIteratoroperator++ ()
 
SimulationAreaIterator operator++ (int)
 

Private Member Functions

size_t nextIndex (size_t currentIndex)
 

Private Attributes

const SimulationAream_area
 
size_t m_index
 
size_t m_element_index
 

Detailed Description

An iterator for SimulationArea.

Definition at line 24 of file SimulationAreaIterator.h.

Constructor & Destructor Documentation

◆ SimulationAreaIterator()

SimulationAreaIterator::SimulationAreaIterator ( const SimulationArea area,
size_t  start_at_index 
)
explicit

Definition at line 18 of file SimulationAreaIterator.cpp.

19  : m_area(area), m_index(start_at_index), m_element_index(0)
20 {
21  if (m_index > m_area->totalSize())
22  throw Exceptions::RuntimeErrorException("SimulationAreaIterator::SimulationAreaIterator() "
23  "-> Error. Invalid initial index");
24 
27 }
size_t nextIndex(size_t currentIndex)
const SimulationArea * m_area
size_t m_index
global index in detector plane defined by its axes
size_t m_element_index
sequential number for SimulationElementVector
size_t totalSize() const
virtual bool isMasked(size_t index) const
returns true if given iterator index correspond to masked detector channel

References SimulationArea::isMasked(), m_area, m_index, nextIndex(), and SimulationArea::totalSize().

Here is the call graph for this function:

Member Function Documentation

◆ index()

size_t SimulationAreaIterator::index ( ) const
inline

Definition at line 29 of file SimulationAreaIterator.h.

29 { return m_index; }

References m_index.

Referenced by operator++().

◆ elementIndex()

size_t SimulationAreaIterator::elementIndex ( ) const
inline

Definition at line 30 of file SimulationAreaIterator.h.

30 { return m_element_index; }

References m_element_index.

Referenced by IDetector::setDataToDetectorMap().

◆ roiIndex()

size_t SimulationAreaIterator::roiIndex ( ) const

Definition at line 29 of file SimulationAreaIterator.cpp.

30 {
31  return m_area->roiIndex(m_index);
32 }
size_t roiIndex(size_t index) const
Return index in ROI map from iterator index.

References m_area, m_index, and SimulationArea::roiIndex().

Referenced by IDetector::applyDetectorResolution(), Simulation::convertData(), and IDetector::setDataToDetectorMap().

Here is the call graph for this function:

◆ detectorIndex()

size_t SimulationAreaIterator::detectorIndex ( ) const

Definition at line 34 of file SimulationAreaIterator.cpp.

35 {
36  return m_area->detectorIndex(m_index);
37 }
size_t detectorIndex(size_t index) const
Return detector index from iterator index.

References SimulationArea::detectorIndex(), m_area, and m_index.

Referenced by Simulation::convertData().

Here is the call graph for this function:

◆ operator==()

bool SimulationAreaIterator::operator== ( const SimulationAreaIterator other) const
inline

Definition at line 50 of file SimulationAreaIterator.h.

51 {
52  return m_area == other.m_area && m_index == other.m_index;
53 }

References m_area, and m_index.

◆ operator!=()

bool SimulationAreaIterator::operator!= ( const SimulationAreaIterator other) const
inline

Definition at line 55 of file SimulationAreaIterator.h.

56 {
57  return !(*this == right);
58 }

◆ operator++() [1/2]

SimulationAreaIterator & SimulationAreaIterator::operator++ ( )

prefix increment

Definition at line 39 of file SimulationAreaIterator.cpp.

40 {
41  size_t index = nextIndex(m_index);
42  if (index != m_index) {
44  m_index = index;
45  }
46  return *this;
47 }

References index(), m_element_index, m_index, and nextIndex().

Referenced by operator++().

Here is the call graph for this function:

◆ operator++() [2/2]

SimulationAreaIterator SimulationAreaIterator::operator++ ( int  )

postfix increment

Definition at line 49 of file SimulationAreaIterator.cpp.

50 {
51  SimulationAreaIterator result(*this);
52  this->operator++();
53  return result;
54 }
An iterator for SimulationArea.
SimulationAreaIterator & operator++()
prefix increment

References operator++().

Here is the call graph for this function:

◆ nextIndex()

size_t SimulationAreaIterator::nextIndex ( size_t  currentIndex)
private

Definition at line 56 of file SimulationAreaIterator.cpp.

57 {
58  size_t result = ++currentIndex;
59  if (result < m_area->totalSize()) {
60  while (m_area->isMasked(result)) {
61  ++result;
62  if (result == m_area->totalSize())
63  break;
64  }
65  } else {
66  return m_area->totalSize();
67  }
68  return result;
69 }

References SimulationArea::isMasked(), m_area, and SimulationArea::totalSize().

Referenced by operator++(), and SimulationAreaIterator().

Here is the call graph for this function:

Member Data Documentation

◆ m_area

const SimulationArea* SimulationAreaIterator::m_area
private

◆ m_index

size_t SimulationAreaIterator::m_index
private

global index in detector plane defined by its axes

Definition at line 46 of file SimulationAreaIterator.h.

Referenced by detectorIndex(), index(), operator++(), operator==(), roiIndex(), and SimulationAreaIterator().

◆ m_element_index

size_t SimulationAreaIterator::m_element_index
private

sequential number for SimulationElementVector

Definition at line 47 of file SimulationAreaIterator.h.

Referenced by elementIndex(), and operator++().


The documentation for this class was generated from the following files: