Files
Jungfraujoch/broker/gen/model/Detector_settings.h
2024-10-23 19:03:09 +02:00

213 lines
7.4 KiB
C++

/**
* Jungfraujoch
* API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates.
*
* The version of the OpenAPI document: 1.0.0-rc.23
* Contact: filip.leonarski@psi.ch
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/*
* Detector_settings.h
*
*
*/
#ifndef Detector_settings_H_
#define Detector_settings_H_
#include "Detector_timing.h"
#include <nlohmann/json.hpp>
namespace org::openapitools::server::model
{
/// <summary>
///
/// </summary>
class Detector_settings
{
public:
Detector_settings();
virtual ~Detector_settings() = default;
/// <summary>
/// Validate the current data in the model. Throws a ValidationException on failure.
/// </summary>
void validate() const;
/// <summary>
/// Validate the current data in the model. Returns false on error and writes an error
/// message into the given stringstream.
/// </summary>
bool validate(std::stringstream& msg) const;
/// <summary>
/// Helper overload for validate. Used when one model stores another model and calls it's validate.
/// Not meant to be called outside that case.
/// </summary>
bool validate(std::stringstream& msg, const std::string& pathPrefix) const;
bool operator==(const Detector_settings& rhs) const;
bool operator!=(const Detector_settings& rhs) const;
/////////////////////////////////////////////
/// Detector_settings members
/// <summary>
/// Interval between consecutive frames.
/// </summary>
int64_t getFrameTimeUs() const;
void setFrameTimeUs(int64_t const value);
/// <summary>
/// Integration time of the detector. If not provided count time will be set to maximum value for a given frame time.
/// </summary>
int64_t getCountTimeUs() const;
void setCountTimeUs(int64_t const value);
bool countTimeUsIsSet() const;
void unsetCount_time_us();
/// <summary>
/// Use internal frame generator in FPGA instead of getting data from a real detector
/// </summary>
bool isInternalFrameGenerator() const;
void setInternalFrameGenerator(bool const value);
bool internalFrameGeneratorIsSet() const;
void unsetInternal_frame_generator();
/// <summary>
///
/// </summary>
int64_t getInternalFrameGeneratorImages() const;
void setInternalFrameGeneratorImages(int64_t const value);
bool internalFrameGeneratorImagesIsSet() const;
void unsetInternal_frame_generator_images();
/// <summary>
/// Delay between TTL trigger and acquisition start [ns]
/// </summary>
int64_t getDetectorTriggerDelayNs() const;
void setDetectorTriggerDelayNs(int64_t const value);
bool detectorTriggerDelayNsIsSet() const;
void unsetDetector_trigger_delay_ns();
/// <summary>
///
/// </summary>
org::openapitools::server::model::Detector_timing getTiming() const;
void setTiming(org::openapitools::server::model::Detector_timing const& value);
bool timingIsSet() const;
void unsetTiming();
/// <summary>
///
/// </summary>
float getEigerThresholdKeV() const;
void setEigerThresholdKeV(float const value);
bool eigerThresholdKeVIsSet() const;
void unsetEiger_threshold_keV();
/// <summary>
///
/// </summary>
int64_t getJungfrauPedestalG0Frames() const;
void setJungfrauPedestalG0Frames(int64_t const value);
bool jungfrauPedestalG0FramesIsSet() const;
void unsetJungfrau_pedestal_g0_frames();
/// <summary>
///
/// </summary>
int64_t getJungfrauPedestalG1Frames() const;
void setJungfrauPedestalG1Frames(int64_t const value);
bool jungfrauPedestalG1FramesIsSet() const;
void unsetJungfrau_pedestal_g1_frames();
/// <summary>
///
/// </summary>
int64_t getJungfrauPedestalG2Frames() const;
void setJungfrauPedestalG2Frames(int64_t const value);
bool jungfrauPedestalG2FramesIsSet() const;
void unsetJungfrau_pedestal_g2_frames();
/// <summary>
/// Pixels with pedestal G0 RMS above the threshold are marked as masked pixels
/// </summary>
int64_t getJungfrauPedestalG0RmsLimit() const;
void setJungfrauPedestalG0RmsLimit(int64_t const value);
bool jungfrauPedestalG0RmsLimitIsSet() const;
void unsetJungfrau_pedestal_g0_rms_limit();
/// <summary>
/// Minimum number of collected images for pedestal to consider it viable
/// </summary>
int64_t getJungfrauPedestalMinImageCount() const;
void setJungfrauPedestalMinImageCount(int64_t const value);
bool jungfrauPedestalMinImageCountIsSet() const;
void unsetJungfrau_pedestal_min_image_count();
/// <summary>
///
/// </summary>
int64_t getJungfrauStorageCellCount() const;
void setJungfrauStorageCellCount(int64_t const value);
bool jungfrauStorageCellCountIsSet() const;
void unsetJungfrau_storage_cell_count();
/// <summary>
/// Delay between two storage cells [ns]
/// </summary>
int64_t getJungfrauStorageCellDelayNs() const;
void setJungfrauStorageCellDelayNs(int64_t const value);
bool jungfrauStorageCellDelayNsIsSet() const;
void unsetJungfrau_storage_cell_delay_ns();
/// <summary>
/// Fix gain to G1 (can be useful for storage cells)
/// </summary>
bool isJungfrauFixedGainG1() const;
void setJungfrauFixedGainG1(bool const value);
bool jungfrauFixedGainG1IsSet() const;
void unsetJungfrau_fixed_gain_g1();
/// <summary>
/// Use high G0 (for low energy applications)
/// </summary>
bool isJungfrauUseGainHg0() const;
void setJungfrauUseGainHg0(bool const value);
bool jungfrauUseGainHg0IsSet() const;
void unsetJungfrau_use_gain_hg0();
friend void to_json(nlohmann::json& j, const Detector_settings& o);
friend void from_json(const nlohmann::json& j, Detector_settings& o);
protected:
int64_t m_Frame_time_us;
int64_t m_Count_time_us;
bool m_Count_time_usIsSet;
bool m_Internal_frame_generator;
bool m_Internal_frame_generatorIsSet;
int64_t m_Internal_frame_generator_images;
bool m_Internal_frame_generator_imagesIsSet;
int64_t m_Detector_trigger_delay_ns;
bool m_Detector_trigger_delay_nsIsSet;
org::openapitools::server::model::Detector_timing m_Timing;
bool m_TimingIsSet;
float m_Eiger_threshold_keV;
bool m_Eiger_threshold_keVIsSet;
int64_t m_Jungfrau_pedestal_g0_frames;
bool m_Jungfrau_pedestal_g0_framesIsSet;
int64_t m_Jungfrau_pedestal_g1_frames;
bool m_Jungfrau_pedestal_g1_framesIsSet;
int64_t m_Jungfrau_pedestal_g2_frames;
bool m_Jungfrau_pedestal_g2_framesIsSet;
int64_t m_Jungfrau_pedestal_g0_rms_limit;
bool m_Jungfrau_pedestal_g0_rms_limitIsSet;
int64_t m_Jungfrau_pedestal_min_image_count;
bool m_Jungfrau_pedestal_min_image_countIsSet;
int64_t m_Jungfrau_storage_cell_count;
bool m_Jungfrau_storage_cell_countIsSet;
int64_t m_Jungfrau_storage_cell_delay_ns;
bool m_Jungfrau_storage_cell_delay_nsIsSet;
bool m_Jungfrau_fixed_gain_g1;
bool m_Jungfrau_fixed_gain_g1IsSet;
bool m_Jungfrau_use_gain_hg0;
bool m_Jungfrau_use_gain_hg0IsSet;
};
} // namespace org::openapitools::server::model
#endif /* Detector_settings_H_ */