diff --git a/image_analysis/UpdateReflectionResolution.h b/image_analysis/UpdateReflectionResolution.h index 46f909e1..695d2ba0 100644 --- a/image_analysis/UpdateReflectionResolution.h +++ b/image_analysis/UpdateReflectionResolution.h @@ -9,8 +9,10 @@ #include "IntegrationOutcome.h" struct ResolutionStats { - float d_low = std::numeric_limits::max(); - float d_high = 0.0f; + // d_high = highest resolution = smallest d (tracked via `d_high > d`); + // d_low = lowest resolution = largest d (tracked via `d_low < d`). + float d_low = 0.0f; + float d_high = std::numeric_limits::max(); int n_reflections = 0; int n_images = 0; }; diff --git a/image_analysis/indexing/FitProfileRadius.cpp b/image_analysis/indexing/FitProfileRadius.cpp index bef1f2a6..2c3ca8c2 100644 --- a/image_analysis/indexing/FitProfileRadius.cpp +++ b/image_analysis/indexing/FitProfileRadius.cpp @@ -1,9 +1,6 @@ // SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only -// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute -// SPDX-License-Identifier: GPL-3.0-only - #include "FitProfileRadius.h" #include // std::nth_element #include // std::fabs diff --git a/image_analysis/scale_merge/Merge.cpp b/image_analysis/scale_merge/Merge.cpp index d455129e..8d69f811 100644 --- a/image_analysis/scale_merge/Merge.cpp +++ b/image_analysis/scale_merge/Merge.cpp @@ -406,7 +406,7 @@ std::ostream &operator<<(std::ostream &output, const MergeStatistics &in) { output << std::endl; output << fmt::format(" {:>8s} {:>8s} {:>8s} {:>8s} {:>8s} {:>8s} {:>8s} {:>8s}", "d_min", "N_obs", "N_uniq", "N_possib", "Compl","", "CC1/2", "CCref") - << std::endl;; + << std::endl; output << fmt::format(" {:->8s} {:->8s} {:->8s} {:->8s} {:->8s} {:->8s} {:->8s} {:->8s}", "", "", "", "", "", "", "", "") << std::endl; for (const auto &sh: in.shells) { diff --git a/image_analysis/scale_merge/ScalingResult.cpp b/image_analysis/scale_merge/ScalingResult.cpp index 318948b9..c01b88e5 100644 --- a/image_analysis/scale_merge/ScalingResult.cpp +++ b/image_analysis/scale_merge/ScalingResult.cpp @@ -36,8 +36,8 @@ void ScalingResult::SaveToFile(const std::string &filename) { const std::string img_path = filename + "_image.dat"; std::ofstream img_file(img_path, std::ofstream::out | std::ofstream::trunc); if (!img_file) { - throw JFJochException(JFJochExceptionCategory::FileWriteError - , "Cannot open {} for writing"); + throw JFJochException(JFJochExceptionCategory::FileWriteError, + "Cannot open " + img_path + " for writing"); } for (size_t i = 0; i < image_scale_g.size(); ++i) { diff --git a/reader/JFJochHDF5Reader.cpp b/reader/JFJochHDF5Reader.cpp index ce997918..cefbba4e 100644 --- a/reader/JFJochHDF5Reader.cpp +++ b/reader/JFJochHDF5Reader.cpp @@ -498,8 +498,14 @@ void JFJochHDF5Reader::ReadFile(const std::string &filename) { det_distance = 0.1; // Set to 100 mm, if det distance is less than 1 mm dataset->experiment.DetectorDistance_mm(det_distance * 1000.0); - dataset->experiment.IncidentEnergy_keV( - WVL_1A_IN_KEV / master_file->GetFloat("/entry/instrument/beam/incident_wavelength")); + const float incident_wavelength_A = master_file->GetFloat("/entry/instrument/beam/incident_wavelength"); + dataset->experiment.IncidentEnergy_keV(WVL_1A_IN_KEV / incident_wavelength_A); + + // NXmx incident_wavelength_spread is the absolute FWHM (Angstrom); store it + // as the relative bandwidth FWHM (dlambda/lambda) used internally. + if (const auto spread = master_file->GetOptFloat("/entry/instrument/beam/incident_wavelength_spread")) + if (incident_wavelength_A > 0.0f) + dataset->experiment.BandwidthFWHM(spread.value() / incident_wavelength_A); dataset->error_value = master_file->GetOptInt("/entry/instrument/detector/error_value");