Files
Jungfraujoch/common/DetectorGeometry.h
2024-10-05 13:14:49 +02:00

36 lines
1.4 KiB
C++

// Copyright (2019-2023) Paul Scherrer Institute
#ifndef JUNGFRAUJOCH_DETECTORGEOMETRY_H
#define JUNGFRAUJOCH_DETECTORGEOMETRY_H
#include <cstdint>
#include <vector>
#include "Coord.h"
#include "DetectorModuleGeometry.h"
class DetectorGeometry {
int64_t width;
int64_t height;
std::vector<DetectorModuleGeometry> modules;
[[nodiscard]] int64_t GetDirectionStep(DetectorModuleGeometry::Direction direction) const;
[[nodiscard]] static Coord GetDirection(DetectorModuleGeometry::Direction direction) ;
public:
DetectorGeometry(const std::vector<DetectorModuleGeometry> &pixel_0, bool vertical_flip = false);
DetectorGeometry(int32_t nmodules,
int32_t horizontal_stacking = 1,
int32_t gap_x = 0,
int32_t gap_y = 0,
bool mirror_y = true); // regular geometry
[[nodiscard]] int64_t GetModulesNum() const;
[[nodiscard]] int64_t GetWidth() const;
[[nodiscard]] int64_t GetHeight() const;
[[nodiscard]] int64_t GetPixel0(int64_t module_number) const;
[[nodiscard]] int64_t GetFastDirectionStep(int64_t module_number) const;
[[nodiscard]] int64_t GetSlowDirectionStep(int64_t module_number) const;
[[nodiscard]] Coord GetFastDirection(int64_t module_number) const;
[[nodiscard]] Coord GetSlowDirection(int64_t module_number) const;
void VerticalFlip();
};
#endif //JUNGFRAUJOCH_DETECTORGEOMETRY_H