v1.0.0-rc.144 (#54)
Build Packages / build:rpm (ubuntu2404) (push) Successful in 8m58s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 11m53s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 10m39s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 7m34s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m18s
Build Packages / build:rpm (rocky8) (push) Successful in 10m4s
Build Packages / build:rpm (rocky9) (push) Successful in 11m17s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 9m47s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 10m47s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 10m33s
Build Packages / Generate python client (push) Successful in 27s
Build Packages / Unit tests (push) Has been skipped
Build Packages / Create release (push) Has been skipped
Build Packages / Build documentation (push) Successful in 1m8s
Build Packages / XDS test (durin plugin) (push) Successful in 7m40s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m23s
Build Packages / XDS test (neggia plugin) (push) Successful in 7m9s
Build Packages / DIALS test (push) Successful in 11m15s

This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.132.

* jfjoch_broker: Improve performance of preview JPEG image generator at receiver startup (saving about 150 ms on measurement start for 16M)

Reviewed-on: #54
Co-authored-by: Filip Leonarski <filip.leonarski@psi.ch>
Co-committed-by: Filip Leonarski <filip.leonarski@psi.ch>
This commit was merged in pull request #54.
This commit is contained in:
2026-05-01 17:06:36 +02:00
committed by leonarski_f
parent 6e0bb971ac
commit 7d34e8a049
147 changed files with 294 additions and 207 deletions
+34 -9
View File
@@ -35,7 +35,20 @@ uint32_t PixelMask::LoadMask(const std::vector<uint32_t> &input_mask, uint8_t bi
return ret;
}
void PixelMask::CalcEdgePixels(const DiffractionExperiment &experiment) {
void PixelMask::UpdateRawMask(const DiffractionExperiment &experiment) {
switch (experiment.GetDetectorType()) {
case DetectorType::JUNGFRAU:
case DetectorType::EIGER:
raw_mask.resize(experiment.GetModulesNum() * RAW_MODULE_SIZE, 0);
ConvertedToRawGeometry(experiment, raw_mask.data(), mask.data());
break;
default:
raw_mask.clear();
break;
}
}
void PixelMask::CalcEdgePixels_i(const DiffractionExperiment &experiment) {
if (experiment.GetDetectorType() == DetectorType::DECTRIS)
return;
@@ -81,21 +94,27 @@ void PixelMask::CalcEdgePixels(const DiffractionExperiment &experiment) {
LoadMask(chip_edge_conv, ChipGapPixelBit);
}
std::vector<uint32_t> PixelMask::GetMaskRaw(const DiffractionExperiment &experiment) const {
std::vector<uint32_t> ret(experiment.GetModulesNum() * RAW_MODULE_SIZE, 0);
ConvertedToRawGeometry(experiment, ret.data(), mask.data());
return ret;
void PixelMask::CalcEdgePixels(const DiffractionExperiment &experiment) {
CalcEdgePixels_i(experiment);
UpdateRawMask(experiment);
}
const std::vector<uint32_t> &PixelMask::GetMaskRaw() const {
if (raw_mask.empty())
throw JFJochException(JFJochExceptionCategory::InputParameterInvalid,
"Raw format not available for this detector");
return raw_mask;
}
const std::vector<uint32_t> &PixelMask::GetMask() const {
return mask;
}
std::vector<uint32_t> PixelMask::GetMask(const DiffractionExperiment& experiment) const {
const std::vector<uint32_t> &PixelMask::GetMask(const DiffractionExperiment& experiment) const {
if (experiment.IsGeometryTransformed())
return GetMask();
else
return GetMaskRaw(experiment);
return GetMaskRaw();
}
std::vector<uint32_t> PixelMask::GetUserMask() const {
@@ -159,7 +178,9 @@ void PixelMask::LoadDetectorBadPixelMask(const DiffractionExperiment &experiment
LoadMask(input_mask_conv, ErrorPixelBit);
LoadMask(input_mask_rms_conv, NoisyPixelBit);
CalcEdgePixels(experiment);
CalcEdgePixels_i(experiment);
UpdateRawMask(experiment);
}
PixelMaskStatistics PixelMask::GetStatistics() const {
@@ -186,10 +207,12 @@ PixelMaskStatistics PixelMask::GetStatistics() const {
void PixelMask::LoadUserMask(const DiffractionExperiment& experiment, const std::vector<uint32_t> &in_mask) {
if (in_mask.size() == mask.size()) {
LoadMask(in_mask, UserMaskedPixelBit);
UpdateRawMask(experiment);
} else if (in_mask.size() == experiment.GetModulesNum() * RAW_MODULE_SIZE) {
std::vector<uint32_t> tmp(experiment.GetPixelsNumConv(), 0);
RawToConvertedGeometry(experiment, tmp.data(), in_mask. data());
LoadMask(tmp, UserMaskedPixelBit);
UpdateRawMask(experiment);
} else
throw JFJochException(JFJochExceptionCategory::InputParameterInvalid,
"Size of input user mask invalid");
@@ -220,9 +243,10 @@ void PixelMask::LoadDECTRISBadPixelMask(const std::vector<uint32_t> &input_mask)
}
}
}
raw_mask = {}; // For DECTRIS - there is no raw mask
}
void PixelMask::LoadDarkBadPixelMask(const std::vector<uint32_t> &input_mask) {
void PixelMask::LoadDarkBadPixelMask(const DiffractionExperiment& experiment, const std::vector<uint32_t> &input_mask) {
if (input_mask.size() != mask.size())
throw JFJochException(JFJochExceptionCategory::InputParameterInvalid,
"Input match doesn't fit the detector ");
@@ -238,4 +262,5 @@ void PixelMask::LoadDarkBadPixelMask(const std::vector<uint32_t> &input_mask) {
mask[i] &= ~(1 << NoisyPixelBit);
}
}
UpdateRawMask(experiment);
}