DiffractionExperiment: Add DarkMask setting to DetectorMode enum
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 12m16s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 12m27s
Build Packages / Generate python client (push) Successful in 17s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m57s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 13m10s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky8) (push) Successful in 13m16s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 13m19s
Build Packages / Build documentation (push) Successful in 40s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 13m43s
Build Packages / build:rpm (rocky9) (push) Successful in 13m53s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 6m39s
Build Packages / Unit tests (push) Successful in 53m44s

This commit is contained in:
2025-11-04 17:01:11 +01:00
parent 84f1ca2dcd
commit 3096454e7d
2 changed files with 24 additions and 1 deletions
+23
View File
@@ -39,6 +39,10 @@ DiffractionExperiment::DiffractionExperiment(const DetectorSetup& det_setup)
// setter functions
DiffractionExperiment &DiffractionExperiment::Detector(const DetectorSetup &input) {
detector = input;
// Conversion is always default mode after switching detectors
mode = DetectorMode::Conversion;
auto settings = detector.GetDefaultSettings();
if (settings)
detector_settings = *settings;
@@ -47,6 +51,25 @@ DiffractionExperiment &DiffractionExperiment::Detector(const DetectorSetup &inpu
DiffractionExperiment &DiffractionExperiment::Mode(DetectorMode input) {
mode = input;
// Handle allowed mode settings
switch (GetDetectorType()) {
case DetectorType::JUNGFRAU:
if (input == DetectorMode::DarkMask)
throw JFJochException(JFJochExceptionCategory::InputParameterInvalid, "Dark mask is not supported for PSI JUNGFRAU detector");
break;
case DetectorType::DECTRIS:
if ((input == DetectorMode::PedestalG0) || (input == DetectorMode::PedestalG1) || (input == DetectorMode::PedestalG2))
throw JFJochException(JFJochExceptionCategory::InputParameterInvalid, "Pedestal data collection is not supported for DECTRIS detector");
if (input == DetectorMode::Raw)
throw JFJochException(JFJochExceptionCategory::InputParameterInvalid, "Raw data collection is not supported for DECTRIS detector");
break;
case DetectorType::EIGER:
if ((input == DetectorMode::PedestalG0) || (input == DetectorMode::PedestalG1) || (input == DetectorMode::PedestalG2) || (input == DetectorMode::DarkMask))
throw JFJochException(JFJochExceptionCategory::InputParameterInvalid, "Pedestal or dark mask data collection is not supported for PSI EIGER detector");
break;
}
if (input == DetectorMode::Conversion)
Conversion();
if (input == DetectorMode::Raw)
+1 -1
View File
@@ -31,7 +31,7 @@
#include "../symmetry/gemmi/symmetry.hpp"
enum class DetectorMode {
Conversion, Raw, PedestalG0, PedestalG1, PedestalG2
Conversion, Raw, PedestalG0, PedestalG1, PedestalG2, DarkMask
};
struct AcquisitionDeviceNetConfig {