// Copyright (2019-2022) Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-or-later #ifndef JUNGFRAUJOCH_JFMODULEGAINCALIBRATION_H #define JUNGFRAUJOCH_JFMODULEGAINCALIBRATION_H #include #include #include #include #include "../common/Definitions.h" class JFModuleGainCalibration { std::vector gain; double *gain_g0; double *gain_g1; double *gain_g2; void SetPointers(); static double GetMean(const double *ptr) ; public: JFModuleGainCalibration(); explicit JFModuleGainCalibration(const std::string &filename); explicit JFModuleGainCalibration(const std::vector& vec); [[nodiscard]] const std::vector &GetGainCalibration() const; void ExportG0(uint16_t *output) const; void ExportG1(uint16_t* output) const; void ExportG2(uint16_t* output) const; double GetG0Mean() const; double GetG1Mean() const; double GetG2Mean() const; }; // Only to use in automated tests run from the default directory inline JFModuleGainCalibration GainCalibrationFromTestFile() { return JFModuleGainCalibration("../../tests/test_data/gainMaps_M049.bin"); } #endif //JUNGFRAUJOCH_JFMODULEGAINCALIBRATION_H