Files
Jungfraujoch/common/ROIMask.h
2024-03-31 23:08:19 +02:00

39 lines
1.1 KiB
C++

// Copyright (2019-2024) Paul Scherrer Institute
#ifndef JUNGFRAUJOCH_ROIMASK_H
#define JUNGFRAUJOCH_ROIMASK_H
#include <map>
#include <vector>
#include <cstdint>
#include <optional>
#include "DetectorSetup.h"
#include "ROIBox.h"
#include "ROICircle.h"
class ROIMask {
std::vector<ROIBox> boxes;
std::vector<ROICircle> circles;
std::vector<uint16_t> mask;
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 ROIMask(const DetectorSetup& setup);
ROIMask(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>& GetMask() const;
[[nodiscard]] const std::map<std::string, uint16_t>& GetROINameMap() const;
};
#endif //JUNGFRAUJOCH_ROIMASK_H