diff --git a/common/Reflection.h b/common/Reflection.h index 7d5b009c..87865869 100644 --- a/common/Reflection.h +++ b/common/Reflection.h @@ -25,6 +25,7 @@ struct Reflection { bool observed = false; float S_x, S_y, S_z; float partiality; + float zeta; }; #endif //JFJOCH_REFLECTION_H diff --git a/frame_serialize/CBORStream2Deserializer.cpp b/frame_serialize/CBORStream2Deserializer.cpp index 52748861..e2b102dc 100644 --- a/frame_serialize/CBORStream2Deserializer.cpp +++ b/frame_serialize/CBORStream2Deserializer.cpp @@ -471,6 +471,8 @@ namespace { r.dist_ewald = GetCBORFloat(map_value); else if (key == "partiality") r.partiality = GetCBORFloat(map_value); + else if (key == "zeta") + r.zeta = GetCBORFloat(map_value); else cbor_value_advance(&map_value); } diff --git a/frame_serialize/CBORStream2Serializer.cpp b/frame_serialize/CBORStream2Serializer.cpp index b07b5879..7b76c42d 100644 --- a/frame_serialize/CBORStream2Serializer.cpp +++ b/frame_serialize/CBORStream2Serializer.cpp @@ -246,6 +246,7 @@ inline void CBOR_ENC(CborEncoder &encoder, const Reflection& r) { CBOR_ENC(mapEncoder, "rp", r.dist_ewald); CBOR_ENC(mapEncoder, "rlp", r.rlp); CBOR_ENC(mapEncoder, "partiality", r.partiality); + CBOR_ENC(mapEncoder, "zeta", r.zeta); cborErr(cbor_encoder_close_container(&encoder, &mapEncoder)); } diff --git a/image_analysis/bragg_prediction/BraggPrediction.cpp b/image_analysis/bragg_prediction/BraggPrediction.cpp index df9d180b..81adf248 100644 --- a/image_analysis/bragg_prediction/BraggPrediction.cpp +++ b/image_analysis/bragg_prediction/BraggPrediction.cpp @@ -96,6 +96,7 @@ int BraggPrediction::Calc(const DiffractionExperiment &experiment, const Crystal .h = h, .k = k, .l = l, + .delta_phi = NAN, .predicted_x = x, .predicted_y = y, .d = d, @@ -103,7 +104,9 @@ int BraggPrediction::Calc(const DiffractionExperiment &experiment, const Crystal .rlp = 1.0, .S_x = S_x, .S_y = S_y, - .S_z = S_z + .S_z = S_z, + .partiality = 1.0, + .zeta = NAN }; ++i; } diff --git a/image_analysis/bragg_prediction/BraggPredictionGPU.cu b/image_analysis/bragg_prediction/BraggPredictionGPU.cu index b71ecb5c..0f4b2789 100644 --- a/image_analysis/bragg_prediction/BraggPredictionGPU.cu +++ b/image_analysis/bragg_prediction/BraggPredictionGPU.cu @@ -77,6 +77,7 @@ namespace { out.h = h; out.k = k; out.l = l; + out.delta_phi = NAN; out.predicted_x = x; out.predicted_y = y; out.d = 1.0f / sqrtf(recip_sq); @@ -85,6 +86,8 @@ namespace { out.S_y = Sy; out.S_z = Sz; out.rlp = 1.0f; + out.partiality = 1.0f; + out.zeta = NAN; return true; } diff --git a/image_analysis/bragg_prediction/BraggPredictionRot.cpp b/image_analysis/bragg_prediction/BraggPredictionRot.cpp index 453e4844..49b0a9d8 100644 --- a/image_analysis/bragg_prediction/BraggPredictionRot.cpp +++ b/image_analysis/bragg_prediction/BraggPredictionRot.cpp @@ -144,7 +144,8 @@ int BraggPredictionRot::Calc(const DiffractionExperiment &experiment, const Crys .S_x = S.x, .S_y = S.y, .S_z = S.z, - .partiality = partiality + .partiality = partiality, + .zeta = zeta_abs }; i++; } diff --git a/image_analysis/bragg_prediction/BraggPredictionRotGPU.cu b/image_analysis/bragg_prediction/BraggPredictionRotGPU.cu index 8af6bb47..ab9122ac 100644 --- a/image_analysis/bragg_prediction/BraggPredictionRotGPU.cu +++ b/image_analysis/bragg_prediction/BraggPredictionRotGPU.cu @@ -160,6 +160,7 @@ namespace { out[count].S_y = Sy; out[count].S_z = Sz; out[count].partiality = partiality; + out[count].zeta = zeta_abs; count++; } return count; diff --git a/reader/JFJochHDF5Reader.cpp b/reader/JFJochHDF5Reader.cpp index 0a28b0de..497a0513 100644 --- a/reader/JFJochHDF5Reader.cpp +++ b/reader/JFJochHDF5Reader.cpp @@ -683,6 +683,8 @@ bool JFJochHDF5Reader::LoadImage_i(std::shared_ptr &dataset auto lp = source_file->ReadOptVector(image_group_name + "/lp"); auto partiality = source_file->ReadOptVector(image_group_name + "/partiality"); auto phi = source_file->ReadOptVector(image_group_name + "/delta_phi"); + auto zeta = source_file->ReadOptVector(image_group_name + "/zeta"); + if (h.size() != l.size() || h.size() != k.size() || h.size() != d.size() || h.size() != predicted_x.size() || h.size() != predicted_y.size() || h.size() != int_sum.size() || h.size() != int_err.size() || h.size() != bkg.size()) @@ -699,6 +701,9 @@ bool JFJochHDF5Reader::LoadImage_i(std::shared_ptr &dataset float delta_phi_val = NAN; if (phi.size() > i) delta_phi_val = phi[i]; + float zeta_val = NAN; + if (zeta.size() > i) + zeta_val = zeta[i]; Reflection r{ .h = h.at(i), @@ -712,7 +717,8 @@ bool JFJochHDF5Reader::LoadImage_i(std::shared_ptr &dataset .bkg = bkg.at(i), .sigma = int_err.at(i), .rlp = lp_val, - .partiality = partiality_val + .partiality = partiality_val, + .zeta = zeta_val }; message.reflections.emplace_back(r); } diff --git a/writer/HDF5DataFilePluginReflection.cpp b/writer/HDF5DataFilePluginReflection.cpp index 53c3545e..778e7bad 100644 --- a/writer/HDF5DataFilePluginReflection.cpp +++ b/writer/HDF5DataFilePluginReflection.cpp @@ -17,7 +17,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; + std::vector image, phi, pred_x, pred_y, bkg, partiality, zeta; for (const auto &refl : msg.reflections) { image.emplace_back(refl.image_number); @@ -33,6 +33,7 @@ void HDF5DataFilePluginReflection::Write(const DataMessage &msg, uint64_t image_ lp.emplace_back(1.0/refl.rlp); partiality.emplace_back(refl.partiality); phi.emplace_back(refl.delta_phi); + zeta.emplace_back(refl.zeta); } std::string image_group_name = fmt::format("image_{:06d}", image_number); @@ -51,6 +52,7 @@ void HDF5DataFilePluginReflection::Write(const DataMessage &msg, uint64_t image_ image_group.SaveVector("observed_frame", image); image_group.SaveVector("lp", lp); image_group.SaveVector("partiality", partiality); + image_group.SaveVector("zeta", zeta); } void HDF5DataFilePluginReflection::WriteFinal(HDF5File &data_file) {