Files
Jungfraujoch/common/ROIMap.h
2024-11-22 21:25:20 +01:00

40 lines
1.2 KiB
C++

// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
// SPDX-License-Identifier: GPL-3.0-only
#ifndef JUNGFRAUJOCH_ROIMAP_H
#define JUNGFRAUJOCH_ROIMAP_H
#include <map>
#include <vector>
#include <cstdint>
#include <optional>
#include "DetectorSetup.h"
#include "ROIBox.h"
#include "ROICircle.h"
class ROIMap {
std::vector<ROIBox> boxes;
std::vector<ROICircle> circles;
std::vector<uint16_t> map;
std::map<std::string, uint16_t> roi_name_map;
int64_t xpixel;
int64_t ypixel;
static constexpr const size_t box_array_size = 32;
static constexpr const size_t circle_array_size = 32;
void UpdateMask();
public:
explicit ROIMap(const DetectorSetup& setup);
ROIMap(int64_t xpixel, int64_t ypixel);
void SetROIBox(const std::vector<ROIBox> &input);
void SetROICircle(const std::vector<ROICircle> &input);
[[nodiscard]] const std::vector<ROIBox>& GetROIBox() const;
[[nodiscard]] const std::vector<ROICircle>& GetROICircle() const;
[[nodiscard]] const std::vector<uint16_t>& GetROIMap() const;
[[nodiscard]] const std::map<std::string, uint16_t>& GetROINameMap() const;
};
#endif //JUNGFRAUJOCH_ROIMAP_H