artdaq_demo_hdf5  v1_03_01
highFiveNtupleDataset.hh
1 #ifndef artdaq_demo_hdf5_HDF5_highFive_highFiveNtupleDataset_hh
2 #define artdaq_demo_hdf5_HDF5_highFive_highFiveNtupleDataset_hh 1
3 
4 #include "artdaq-core/Data/Fragment.hh"
5 #include "artdaq-core/Data/RawEvent.hh"
6 
7 #include "artdaq-demo-hdf5/HDF5/FragmentDataset.hh"
8 
9 #include <artdaq-demo-hdf5/HDF5/highFive/HighFive/include/highfive/H5File.hpp>
10 #include "artdaq-demo-hdf5/HDF5/highFive/highFiveDatasetHelper.hh"
11 
12 #include <unordered_map>
13 
14 namespace artdaq {
15 namespace hdf5 {
16 
21 {
22 public:
34  HighFiveNtupleDataset(fhicl::ParameterSet const& ps);
35 
39  virtual ~HighFiveNtupleDataset() noexcept;
40 
47  void insertOne(Fragment const& frag) override;
48 
55  void insertHeader(detail::RawEventHeader const& hdr) override;
56 
61  std::unordered_map<artdaq::Fragment::type_t, std::unique_ptr<artdaq::Fragments>> readNextEvent() override;
62 
68  std::unique_ptr<artdaq::detail::RawEventHeader> getEventHeader(artdaq::Fragment::sequence_id_t const&) override;
69 
70 private:
73  HighFiveNtupleDataset& operator=(HighFiveNtupleDataset const&) = delete;
74  HighFiveNtupleDataset& operator=(HighFiveNtupleDataset&&) = delete;
75 
76  std::unique_ptr<HighFive::File> file_;
77  size_t headerIndex_;
78  size_t fragmentIndex_;
79  size_t nWordsPerRow_;
80 
81  std::unordered_map<std::string, std::unique_ptr<HighFiveDatasetHelper>> fragment_datasets_;
82  std::unordered_map<std::string, std::unique_ptr<HighFiveDatasetHelper>> event_datasets_;
83 };
84 } // namespace hdf5
85 } // namespace artdaq
86 #endif //artdaq_demo_hdf5_HDF5_highFive_HighFiveNtupleDataset_hh
std::unique_ptr< artdaq::detail::RawEventHeader > getEventHeader(artdaq::Fragment::sequence_id_t const &) override
Read a RawEventHeader from the Dataset (HDF5 file)
void insertHeader(detail::RawEventHeader const &hdr) override
Insert a RawEventHeader into the Dataset (write it to the HDF5 file)
virtual ~HighFiveNtupleDataset() noexcept
HighFiveNtupleDataset Destructor.
std::unordered_map< artdaq::Fragment::type_t, std::unique_ptr< artdaq::Fragments > > readNextEvent() override
Read the next event from the Dataset (HDF5 file)
An implementation of FragmentDataset using the HighFive backend to produce files identical to those p...
void insertOne(Fragment const &frag) override
Insert a Fragment into the Dataset (write it to the HDF5 file)
Base class that defines methods for reading and writing to HDF5 files via various implementation plug...
HighFiveNtupleDataset(fhicl::ParameterSet const &ps)
HighFiveNtupleDataset Constructor.