* Enhancements for XFEL

* Enhancements for EIGER
* Writer is more flexible and capable of handling DECTRIS data
This commit is contained in:
2024-03-05 20:41:47 +01:00
parent 71d862b706
commit d315506633
165 changed files with 5440 additions and 2230 deletions

View File

@@ -2,9 +2,12 @@
#include "ImageMetadata.h"
ImageMetadata::ImageMetadata(const DiffractionExperiment &experiment)
: pulsed_source(experiment.IsPulsedSource()) {}
void ImageMetadata::Process(const DeviceOutput *output) {
if (!first_module_loaded) {
xfel_bunch_id = output->module_statistics.bunchid;
xfel_pulse_id = output->module_statistics.pulse_id;
jf_info = output->module_statistics.debug;
storage_cell = (jf_info >> 8) & 0xF;
xfel_event_code = (jf_info >> 16) & UINT8_MAX;
@@ -12,7 +15,7 @@ void ImageMetadata::Process(const DeviceOutput *output) {
exptime = output->module_statistics.exptime;
first_module_loaded = true;
} else {
if (output->module_statistics.bunchid != xfel_bunch_id)
if (pulsed_source && (output->module_statistics.pulse_id != xfel_pulse_id))
metadata_consistent = false;
}
saturated_pixels += output->module_statistics.saturated_pixels;
@@ -26,8 +29,10 @@ bool ImageMetadata::IsBunchIDConsistent() const {
}
void ImageMetadata::Export(DataMessage &message, uint64_t packets_expected_per_image) const {
message.xfel_bunch_id = xfel_event_code;
message.xfel_event_code = xfel_event_code;
if (pulsed_source) {
message.xfel_pulse_id = static_cast<uint64_t>(xfel_pulse_id);
message.xfel_event_code = xfel_event_code;
}
message.jf_info = jf_info;
message.storage_cell = storage_cell;
message.timestamp = timestamp;