Files
sf_daq_buffer/sf-writer/include/JFH5Writer.hpp
T

51 lines
1.3 KiB
C++

#ifndef SFWRITER_HPP
#define SFWRITER_HPP
#include <memory>
#include <string>
#include <H5Cpp.h>
#include "ImageAssembler.hpp"
class JFH5Writer {
const std::string detector_name_;
const size_t n_modules_;
const uint64_t start_pulse_id_;
const uint64_t stop_pulse_id_;
const size_t pulse_id_step_;
const size_t n_images_;
const size_t n_total_pulses_;
size_t meta_write_index_;
size_t data_write_index_;
H5::H5File file_;
H5::DataSet image_dataset_;
uint64_t* b_pulse_id_;
uint64_t* b_frame_index_;
uint32_t* b_daq_rec_;
uint8_t* b_is_good_frame_ ;
size_t get_n_pulses_in_range(const uint64_t start_pulse_id,
const uint64_t stop_pulse_id,
const int pulse_id_step);
void write_metadata();
std::string get_device_name(const std::string& device);
void close_file();
public:
JFH5Writer(const std::string& output_file,
const std::string& device,
const size_t n_modules,
const uint64_t start_pulse_id,
const uint64_t stop_pulse_id,
const size_t pulse_id_step);
~JFH5Writer();
void write(const ImageMetadataBlock* metadata, const char* data);
};
#endif //SFWRITER_HPP