Stills: the run's rocking curve goes to _process.h5 and --mode scale merges with it; MeasureRunWidth takes the window at each reflection's resolution
--mode scale re-measured the rocking width on the stored reflections, so on any file whose frames were predicted through the run's curve it merged with a different curve than the mx run did. The curve the post-refinement used (formula, table, radial scale) is now carried in the EndMessage (StillsRunWidth) and written to the master: /entry/MX/stillsRockingWidthFormula [gamma0 1/A, gamma_e rad, bandwidth sigma], /entry/MX/stillsRadialScale, /entry/MX/stillsRockingWidthTableDstar and /entry/MX/stillsRockingWidthTable (1/A). The reader returns it, and --mode scale passes it to the post-refinement. A file without it is re-measured as before. MeasureRunWidth grouped each frame's reflections by the frame's window, taken as the largest excitation error it predicted. With a window that follows sigma(d*) that is the high-resolution window, applied to the frame's low-resolution reflections too. Given the curve the frames were predicted through, the window is now that curve at the reflection's own resolution; without one, the frame's largest excitation error as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015CeEGgpKdfkCTJb3YNMJcu (cherry picked from commit 992343d0206489991880bb927efc79131134a1d9)
This commit is contained in:
1 parent
00662c4110
commit
8a123e794d
9 files changed
+89
-20
No files matched your search
@@ -957,6 +957,18 @@ HDF5MetadataSource::OpenResult HDF5MetadataSource::Open(const std::string &filen
|
||||
if (const auto m = master_file->ReadOptVector<int32_t>("/entry/MX/reindexMatrix"); m.size() == 9)
|
||||
dataset->reindex_matrix = std::array<int32_t, 9>{m[0], m[1], m[2], m[3], m[4],
|
||||
m[5], m[6], m[7], m[8]};
|
||||
if (const auto f = master_file->ReadOptVector<double>("/entry/MX/stillsRockingWidthFormula"); f.size() == 3) {
|
||||
StillsRunWidth w{.gamma0 = f[0], .gamma_e = f[1], .bandwidth_sigma = f[2]};
|
||||
if (const auto r = master_file->ReadOptVector<double>("/entry/MX/stillsRadialScale"); r.size() == 1)
|
||||
w.radial_scale = r[0];
|
||||
w.table_dstar = master_file->ReadOptVector<double>("/entry/MX/stillsRockingWidthTableDstar");
|
||||
w.table_s = master_file->ReadOptVector<double>("/entry/MX/stillsRockingWidthTable");
|
||||
if (w.table_dstar.size() != w.table_s.size()) {
|
||||
w.table_dstar.clear();
|
||||
w.table_s.clear();
|
||||
}
|
||||
dataset->stills_run_width = w;
|
||||
}
|
||||
dataset->experiment.SampleName(master_file->GetString("/entry/sample/name"));
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user