File writer and spot finding improvements

This commit is contained in:
2024-04-08 11:18:50 +02:00
parent 15d99c6162
commit c6d2b5eedf
72 changed files with 690 additions and 893 deletions
+17 -41
View File
@@ -2,57 +2,33 @@
#include "HDF5DataFilePluginJUNGFRAU.h"
void HDF5DataFilePluginJUNGFRAU::SetupSWMRFile(HDF5File &data_file, const DataMessage &msg) {
if (msg.jf_info.has_value() && msg.storage_cell.has_value() && msg.receiver_aq_dev_delay.has_value())
enable = true;
else
return;
HDF5Group(data_file, "/entry/jungfrau").NXClass("NXcollection");
HDF5DataSpace data_space_linear({2}, {H5S_UNLIMITED});
HDF5Dcpl dcpl_linear;
dcpl_linear.SetChunking({1});
HDF5DataSet(data_file, "/entry/jungfrau/debug", HDF5DataType(4, false), data_space_linear, dcpl_linear).SetExtent({1});
HDF5DataSet(data_file, "/entry/jungfrau/storageCell", HDF5DataType(2, false), data_space_linear, dcpl_linear).SetExtent({1});
HDF5DataSet(data_file, "/entry/jungfrau/receiverDelay", HDF5DataType(4, false), data_space_linear, dcpl_linear).SetExtent({1});
}
void HDF5DataFilePluginJUNGFRAU::OpenFile(HDF5File &data_file, const DataMessage &msg) {
if (!enable)
return;
data_set_jf_info = std::make_unique<HDF5DataSet>(data_file, "/entry/jungfrau/debug");
data_set_receiver_aq_dev_delay = std::make_unique<HDF5DataSet>(data_file, "/entry/jungfrau/receiverDelay");
data_set_storage_cell = std::make_unique<HDF5DataSet>(data_file, "/entry/jungfrau/storageCell");
}
void HDF5DataFilePluginJUNGFRAU::OpenFile(HDF5File &in_data_file, const DataMessage &msg) {}
void HDF5DataFilePluginJUNGFRAU::Write(const DataMessage &msg) {
if (!enable
|| !msg.jf_info.has_value()
if (!msg.jf_info.has_value()
|| !msg.receiver_aq_dev_delay.has_value()
|| !msg.storage_cell.has_value())
return;
size_t image_number = msg.number;
if (image_number >= max_image_number) {
max_image_number = image_number;
data_set_jf_info->SetExtent({max_image_number + 1});
data_set_receiver_aq_dev_delay->SetExtent({max_image_number + 1});
data_set_storage_cell->SetExtent({max_image_number + 1});
if (image_number >= jf_info.size()) {
jf_info.resize(image_number + 1);
storage_cell.resize(image_number + 1);
receiver_aq_dev_delay.resize(image_number + 1);
}
data_set_jf_info->WriteScalar(msg.jf_info.value(), {image_number});
data_set_receiver_aq_dev_delay->WriteScalar(msg.receiver_aq_dev_delay.value(), {image_number});
data_set_storage_cell->WriteScalar(msg.storage_cell.value(), {image_number});
receiver_aq_dev_delay[image_number] = msg.receiver_aq_dev_delay.value();
jf_info[image_number] = msg.jf_info.value();
storage_cell[image_number]= msg.storage_cell.value();
}
void HDF5DataFilePluginJUNGFRAU::Flush() {
if (!enable)
return;
data_set_jf_info->Flush();
data_set_receiver_aq_dev_delay->Flush();
data_set_storage_cell->Flush();
void HDF5DataFilePluginJUNGFRAU::WriteFinal(HDF5File &data_file) {
if (!jf_info.empty()) {
HDF5Group group(data_file, "/entry/jungfrau");
group.NXClass("NXcollection");
group.SaveVector("info", jf_info);
group.SaveVector("rcv_delay", receiver_aq_dev_delay);
group.SaveVector("storage_cell", storage_cell);
}
}