Add new SF writer with basic operations

This commit is contained in:
2020-04-24 14:19:02 +02:00
parent 0d61599a09
commit 235265599a
3 changed files with 105 additions and 1 deletions
+4 -1
View File
@@ -1,7 +1,10 @@
file(GLOB SOURCES
*.cpp)
add_executable(sf-writer sf_h5_writer.cpp BufferMultiReader.cpp)
add_executable(sf-writer
sf_h5_writer.cpp
BufferMultiReader.cpp
SFWriter.cpp)
set_target_properties(sf-writer PROPERTIES OUTPUT_NAME sf_h5_writer)
target_link_libraries(sf-writer
+71
View File
@@ -0,0 +1,71 @@
#include "SFWriter.hpp"
#include "buffer_config.hpp"
using namespace std;
using namespace core_buffer;
SFWriter::SFWriter(
const string& output_file,
const size_t n_frames,
const size_t n_modules)
{
file_ = H5::H5File(output_file, H5F_ACC_TRUNC);
hsize_t image_dataset_dims[3] =
{n_frames, n_modules * MODULE_Y_SIZE, MODULE_X_SIZE};
H5::DataSpace image_dataspace(3, image_dataset_dims);
hsize_t image_dataset_chunking[3] =
{1, n_modules * MODULE_Y_SIZE, MODULE_X_SIZE};
H5::DSetCreatPropList image_dataset_properties;
image_dataset_properties.setChunk(3, image_dataset_chunking);
image_dataset_ = file_.createDataSet(
"image",
H5::PredType::NATIVE_UINT16,
image_dataspace,
image_dataset_properties);
hsize_t metadata_dataset_dims[2] = {n_frames, 1};
H5::DataSpace metadata_dataspace(2, metadata_dataset_dims);
pulse_id_dataset_ = file_.createDataSet(
"pulse_id",
H5::PredType::NATIVE_UINT64,
metadata_dataspace);
pulse_id_dataset_ = file_.createDataSet(
"frame_index",
H5::PredType::NATIVE_UINT64,
metadata_dataspace);
pulse_id_dataset_ = file_.createDataSet(
"daq_rec",
H5::PredType::NATIVE_UINT32,
metadata_dataspace);
pulse_id_dataset_ = file_.createDataSet(
"n_received_packets",
H5::PredType::NATIVE_UINT16,
metadata_dataspace);
}
SFWriter::~SFWriter()
{
close_file();
}
void SFWriter::close_file()
{
image_dataset_.close();
pulse_id_dataset_.close();
frame_index_dataset_.close();
daq_rec_dataset_.close();
n_received_packets_dataset_.close();
file_.close();
}
//void write(char* data, std::shared_ptr<DetectorFrame> metadata);
//void close_file();
+30
View File
@@ -0,0 +1,30 @@
#ifndef SFWRITER_HPP
#define SFWRITER_HPP
#include <memory>
#include <string>
#include <H5Cpp.h>
#include "RingBuffer.hpp"
class SFWriter {
H5::H5File file_;
H5::DataSet image_dataset_;
H5::DataSet pulse_id_dataset_;
H5::DataSet frame_index_dataset_;
H5::DataSet daq_rec_dataset_;
H5::DataSet n_received_packets_dataset_;
public:
SFWriter(
const std::string& output_file,
const size_t n_frames,
const size_t n_modules);
~SFWriter();
void write(char* data, std::shared_ptr<DetectorFrame> metadata);
void close_file();
};
#endif //SFWRITER_HPP