Lite receiver: no integration

The Lite receiver indexes each image and no longer integrates, whatever the
broker's quick_integration says: it calls the shared analysis with
quick_integration off. Per-image reflections, integrated-reflection counts and
B factors are left unset on this path, as on the FPGA one - integration is
rugnux's. jfjoch_lite_perf_test loses -Q. JFJochReceiverLite checks that
indexing happens and integration does not.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HVeDQsU5a8AJUdJPgWevAK
This commit is contained in:
leonarski_fandClaude Opus 5.5 committed 2026-11-08 09:10:43 +01:00
1 parent 68ec8a7f9f
commit 5f8e26e3dc
3 files changed
+16 -9

No files matched your search

+6 -2
View File
@@ -75,8 +75,12 @@ void JFJochReceiverLite::OnImage(uint32_t id, DataMessage &data_msg, std::chrono
auto image_start_time = std::chrono::high_resolution_clock::now();
AzimuthalIntegrationProfile profile(*az_int_mapping);
if (analysis[id])
analysis[id]->AnalyzeStreamImage(data_msg, profile, GetSpotFindingSettings());
if (analysis[id]) {
// Indexing only: integration is rugnux's (live or offline), not the Lite receiver's.
SpotFindingSettings settings = GetSpotFindingSettings();
settings.quick_integration = false;
analysis[id]->AnalyzeStreamImage(data_msg, profile, settings);
}
auto image_end_time = std::chrono::high_resolution_clock::now();
std::chrono::duration<float> image_duration = image_end_time - image_start_time;
+9
View File
@@ -93,6 +93,7 @@ TEST_CASE("JFJochReceiverLite", "[JFJochReceiver]") {
settings.max_pix_per_spot = 200;
settings.high_resolution_limit = 2.0;
settings.low_resolution_limit = 50.0;
settings.quick_integration = true; // asked for, and still not done
service.SetSpotFindingSettings(settings);
service.Indexing(experiment.GetIndexingSettings());
@@ -105,6 +106,14 @@ TEST_CASE("JFJochReceiverLite", "[JFJochReceiver]") {
CHECK(receiver_out.status.images_sent == experiment.GetImageNum());
CHECK(!receiver_out.status.cancelled);
// The Lite receiver indexes each image and integrates none: integration is rugnux's.
REQUIRE(receiver_out.scan_result.images.size() == experiment.GetImageNum());
for (const auto &i: receiver_out.scan_result.images) {
CHECK(i.uc.has_value());
CHECK(!i.integrated_reflections.has_value());
CHECK(!i.b_factor.has_value());
}
// No progress value at the end of the measurement
REQUIRE(!service.GetProgress().has_value());
+1 -7
View File
@@ -22,7 +22,6 @@ void print_usage(Logger &logger) {
logger.Info(" -X<txt> Indexing (none|fft|fftw|ffbidx), ffbidx is default");
logger.Info(" -t<num> Indexing thread pool size (default: 4)");
logger.Info(" -f<num> FFT indexing search vectors");
logger.Info(" -Q Quick integration");
logger.Info(" -G Geometry refinement");
}
@@ -41,7 +40,6 @@ int main(int argc, char **argv) {
IndexingAlgorithmEnum indexing = IndexingAlgorithmEnum::FFBIDX;
std::optional<int64_t> fft_num_vectors;
uint16_t indexing_threads = 4;
bool quick_integrate = false;
RegisterHDF5Filter();
@@ -51,7 +49,7 @@ int main(int argc, char **argv) {
}
int opt;
while ((opt = getopt(argc, argv, "N:P:i:F::QGvX:t:f:")) != -1) {
while ((opt = getopt(argc, argv, "N:P:i:F::GvX:t:f:")) != -1) {
switch (opt) {
case 'N':
nthreads = atol(optarg);
@@ -84,9 +82,6 @@ int main(int argc, char **argv) {
else
filename = "lite_perf_test";
break;
case 'Q':
quick_integrate = true;
break;
case 'G':
use_geom = true;
break;
@@ -185,7 +180,6 @@ int main(int argc, char **argv) {
settings.max_pix_per_spot = 200;
settings.high_resolution_limit = 2.0;
settings.low_resolution_limit = 50.0;
settings.quick_integration = quick_integrate;
service.SetSpotFindingSettings(settings);
auto start_time = std::chrono::system_clock::now();