#include "aare/ROIGeometry.hpp" #include namespace aare { ROIGeometry::ROIGeometry(const ROI &roi, DetectorGeometry &geometry) : m_pixels_x(roi.width()), m_pixels_y(roi.height()), m_geometry(geometry) { m_module_indices_in_roi.reserve(m_geometry.n_modules()); // determine which modules are in the roi for (size_t i = 0; i < m_geometry.n_modules(); ++i) { auto &module_geometry = m_geometry.get_module_geometries(i); if (module_geometry.module_in_roi(roi)) { module_geometry.update_geometry_with_roi(roi); m_module_indices_in_roi.push_back(i); } } } ROIGeometry::ROIGeometry(DetectorGeometry &geometry) : m_pixels_x(geometry.pixels_x()), m_pixels_y(geometry.pixels_y()), m_geometry(geometry) { m_module_indices_in_roi.resize(m_geometry.n_modules()); std::iota(m_module_indices_in_roi.begin(), m_module_indices_in_roi.end(), 0); } size_t ROIGeometry::num_modules_in_roi() const { return m_module_indices_in_roi.size(); } const std::vector &ROIGeometry::module_indices_in_roi() const { return m_module_indices_in_roi; } size_t ROIGeometry::module_indices_in_roi(const size_t module_index) const { return m_module_indices_in_roi.at(module_index); } size_t ROIGeometry::pixels_x() const { return m_pixels_x; } size_t ROIGeometry::pixels_y() const { return m_pixels_y; } } // namespace aare