From 7c0cc22e47048dbdcfcbf8efb31346f1bdefda2c Mon Sep 17 00:00:00 2001 From: leonarski_f Date: Mon, 18 May 2026 13:37:55 +0200 Subject: [PATCH] HDF5: Save per reflection scaling factor --- reader/JFJochHDF5Reader.cpp | 8 +++++++- writer/HDF5DataFilePluginReflection.cpp | 5 ++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/reader/JFJochHDF5Reader.cpp b/reader/JFJochHDF5Reader.cpp index 5b13cce7..67aa3388 100644 --- a/reader/JFJochHDF5Reader.cpp +++ b/reader/JFJochHDF5Reader.cpp @@ -149,6 +149,7 @@ bool ReadReflectionsFromGroup(HDF5Object &file, auto partiality = file.ReadOptVector(image_group_name + "/partiality"); auto phi = file.ReadOptVector(image_group_name + "/delta_phi"); auto zeta = file.ReadOptVector(image_group_name + "/zeta"); + auto image_scale_corr = file.ReadOptVector(image_group_name + "/image_scale_corr"); if (h.size() != l.size() || h.size() != k.size() || h.size() != d.size() || h.size() != predicted_x.size() || h.size() != predicted_y.size() @@ -170,6 +171,10 @@ bool ReadReflectionsFromGroup(HDF5Object &file, if (zeta.size() > i) zeta_val = zeta[i]; + float image_scale_corr_val = 1.0f; // Default is 1.0, if we don't know any better + if (image_scale_corr.size() > i) + image_scale_corr_val = image_scale_corr[i]; + Reflection r{ .h = h.at(i), .k = k.at(i), @@ -183,7 +188,8 @@ bool ReadReflectionsFromGroup(HDF5Object &file, .sigma = int_err.at(i), .rlp = lp_val, .partiality = partiality_val, - .zeta = zeta_val + .zeta = zeta_val, + .image_scale_corr = image_scale_corr_val }; reflections.emplace_back(r); } diff --git a/writer/HDF5DataFilePluginReflection.cpp b/writer/HDF5DataFilePluginReflection.cpp index 7f8780ef..362b3e6e 100644 --- a/writer/HDF5DataFilePluginReflection.cpp +++ b/writer/HDF5DataFilePluginReflection.cpp @@ -16,7 +16,7 @@ void HDF5DataFilePluginReflection::Write(const DataMessage &msg, uint64_t image_ std::vector h, k, l; std::vector I, sigma, d, lp; - std::vector image, phi, pred_x, pred_y, bkg, partiality, zeta; + std::vector image, phi, pred_x, pred_y, bkg, partiality, zeta, scale_factor; h.reserve(msg.reflections.size()); k.reserve(msg.reflections.size()); @@ -32,6 +32,7 @@ void HDF5DataFilePluginReflection::Write(const DataMessage &msg, uint64_t image_ image.reserve(msg.reflections.size()); phi.reserve(msg.reflections.size()); zeta.reserve(msg.reflections.size()); + scale_factor.reserve(msg.reflections.size()); for (const auto &refl : msg.reflections) { image.emplace_back(refl.image_number); @@ -48,6 +49,7 @@ void HDF5DataFilePluginReflection::Write(const DataMessage &msg, uint64_t image_ partiality.emplace_back(refl.partiality); phi.emplace_back(refl.delta_phi_deg); zeta.emplace_back(refl.zeta); + scale_factor.emplace_back(refl.image_scale_corr); } std::string image_group_name = fmt::format("image_{:06d}", image_number); @@ -67,6 +69,7 @@ void HDF5DataFilePluginReflection::Write(const DataMessage &msg, uint64_t image_ image_group.SaveVector("lp", lp); image_group.SaveVector("partiality", partiality); image_group.SaveVector("zeta", zeta); + image_group.SaveVector("image_scale_corr", scale_factor); } void HDF5DataFilePluginReflection::WriteFinal(HDF5File &data_file) {