Files
Jungfraujoch/common/ROIMap.h

39 lines
1.1 KiB
C++

// Copyright (2019-2024) Paul Scherrer Institute
#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