diff --git a/common/Reflection.h b/common/Reflection.h index 03517ee1..7d5b009c 100644 --- a/common/Reflection.h +++ b/common/Reflection.h @@ -13,7 +13,7 @@ struct Reflection { int64_t k; int64_t l; float image_number; // Can be in-between for 3D integration - float angle_deg; // phi angle from XDS + float delta_phi; // phi angle from XDS - difference from middle of current frame (NOT an absolute angle) float predicted_x; float predicted_y; float d; diff --git a/frame_serialize/CBORStream2Deserializer.cpp b/frame_serialize/CBORStream2Deserializer.cpp index 7285d712..52748861 100644 --- a/frame_serialize/CBORStream2Deserializer.cpp +++ b/frame_serialize/CBORStream2Deserializer.cpp @@ -449,6 +449,8 @@ namespace { r.k = GetCBORInt(map_value); else if (key == "l") r.l = GetCBORInt(map_value); + else if (key == "phi") + r.delta_phi = GetCBORFloat(map_value); else if (key == "x") r.predicted_x = GetCBORFloat(map_value); else if (key == "y") diff --git a/frame_serialize/CBORStream2Serializer.cpp b/frame_serialize/CBORStream2Serializer.cpp index e3c47f89..b07b5879 100644 --- a/frame_serialize/CBORStream2Serializer.cpp +++ b/frame_serialize/CBORStream2Serializer.cpp @@ -235,6 +235,7 @@ inline void CBOR_ENC(CborEncoder &encoder, const Reflection& r) { CBOR_ENC(mapEncoder, "h", r.h); CBOR_ENC(mapEncoder, "k", r.k); CBOR_ENC(mapEncoder, "l", r.l); + CBOR_ENC(mapEncoder, "phi", r.delta_phi); CBOR_ENC(mapEncoder, "x", r.predicted_x); CBOR_ENC(mapEncoder, "y", r.predicted_y); CBOR_ENC(mapEncoder, "d", r.d); diff --git a/image_analysis/bragg_prediction/BraggPredictionRot.cpp b/image_analysis/bragg_prediction/BraggPredictionRot.cpp index 6f142cb3..453e4844 100644 --- a/image_analysis/bragg_prediction/BraggPredictionRot.cpp +++ b/image_analysis/bragg_prediction/BraggPredictionRot.cpp @@ -135,6 +135,7 @@ int BraggPredictionRot::Calc(const DiffractionExperiment &experiment, const Crys .h = h, .k = k, .l = l, + .delta_phi = phi * 180.0f / static_cast(M_PI), .predicted_x = x, .predicted_y = y, .d = d, diff --git a/image_analysis/bragg_prediction/BraggPredictionRotGPU.cu b/image_analysis/bragg_prediction/BraggPredictionRotGPU.cu index 8363d780..8af6bb47 100644 --- a/image_analysis/bragg_prediction/BraggPredictionRotGPU.cu +++ b/image_analysis/bragg_prediction/BraggPredictionRotGPU.cu @@ -150,6 +150,7 @@ namespace { out[count].h = h; out[count].k = k; out[count].l = l; + out[count].delta_phi = phi; out[count].predicted_x = x; out[count].predicted_y = y; out[count].d = 1.0f / sqrtf(p0_sq); diff --git a/tools/jfjoch_extract_hkl.cpp b/tools/jfjoch_extract_hkl.cpp index f12412e7..951be721 100644 --- a/tools/jfjoch_extract_hkl.cpp +++ b/tools/jfjoch_extract_hkl.cpp @@ -157,7 +157,7 @@ int main(int argc, char **argv) { if (dist < max_dist_ewald_sphere) f << r.l << " " << r.k << " " << r.h << " " << r.I << " " << r.sigma << " " << dist << " " - << r.predicted_x << " " << r.predicted_y << " " << r.angle_deg + << r.predicted_x << " " << r.predicted_y << " " << r.delta_phi << std::endl; } } diff --git a/writer/HDF5DataFilePluginReflection.cpp b/writer/HDF5DataFilePluginReflection.cpp index 8f826b29..53c3545e 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, pred_x, pred_y, bkg, partiality; + std::vector image, phi, pred_x, pred_y, bkg, partiality; for (const auto &refl : msg.reflections) { image.emplace_back(refl.image_number); @@ -32,6 +32,7 @@ void HDF5DataFilePluginReflection::Write(const DataMessage &msg, uint64_t image_ bkg.emplace_back(refl.bkg); lp.emplace_back(1.0/refl.rlp); partiality.emplace_back(refl.partiality); + phi.emplace_back(refl.delta_phi); } std::string image_group_name = fmt::format("image_{:06d}", image_number); @@ -41,6 +42,7 @@ void HDF5DataFilePluginReflection::Write(const DataMessage &msg, uint64_t image_ image_group.SaveVector("k", k); image_group.SaveVector("l", l); image_group.SaveVector("d", d)->Units("Angstrom"); + image_group.SaveVector("delta_phi", phi); image_group.SaveVector("predicted_x", pred_x); image_group.SaveVector("predicted_y", pred_y); image_group.SaveVector("int_sum", I);