HDF5: Save per reflection scaling factor

This commit is contained in:
2026-05-18 13:37:55 +02:00
parent 8371743cbb
commit 7c0cc22e47
2 changed files with 11 additions and 2 deletions
+7 -1
View File
@@ -149,6 +149,7 @@ bool ReadReflectionsFromGroup(HDF5Object &file,
auto partiality = file.ReadOptVector<float>(image_group_name + "/partiality");
auto phi = file.ReadOptVector<float>(image_group_name + "/delta_phi");
auto zeta = file.ReadOptVector<float>(image_group_name + "/zeta");
auto image_scale_corr = file.ReadOptVector<float>(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);
}
+4 -1
View File
@@ -16,7 +16,7 @@ void HDF5DataFilePluginReflection::Write(const DataMessage &msg, uint64_t image_
std::vector<int32_t> h, k, l;
std::vector<float> I, sigma, d, lp;
std::vector<float> image, phi, pred_x, pred_y, bkg, partiality, zeta;
std::vector<float> 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) {