pflib v3.9.5-8-gf71a60f
Pretty Fine HGCROC Interaction Library
Loading...
Searching...
No Matches
daq_run.h
1#pragma once
2
3#include <stdio.h>
4
5#include <fstream>
6#include <functional>
7#include <memory>
8#include <string>
9#include <vector>
10
11#include "pflib/Target.h"
12#include "pflib/logging/Logging.h"
13#include "pflib/packing/MultiSampleECONDEventPacket.h"
14
19 public:
20 virtual void start_run() {}
21 virtual void end_run() {}
22 virtual void consume(std::vector<uint32_t>& event) = 0;
23 virtual ~DAQRunConsumer() = default;
24};
25
35void daq_run(pflib::Target* tgt, const std::string& cmd,
36 DAQRunConsumer& consumer, int nevents = 1, int rate = 100);
37
42 std::string file_name_;
43 FILE* fp_;
44
45 public:
46 WriteToBinaryFile(const std::string& file_name);
48 virtual void consume(std::vector<uint32_t>& event) final;
49};
50
59 public:
65 explicit DecodeAndWrite(int n_links);
66 virtual ~DecodeAndWrite() = default;
72 virtual void consume(std::vector<uint32_t>& event) final;
73
75 virtual void write_event(
77
78 protected:
80 mutable ::pflib::logging::logger the_log_;
81
82 private:
85};
86
98
99 public:
101 const std::string& file_name,
102 std::function<void(std::ofstream&)> write_header,
106 int n_links);
107 virtual ~DecodeAndWriteToCSV() = default;
109 virtual void write_event(
111};
112
113DecodeAndWriteToCSV all_channels_to_csv(const std::string& file_name,
114 int n_links = 2);
115
133 public:
135 DecodeAndBuffer(std::size_t nevents, int n_links);
136 virtual ~DecodeAndBuffer() = default;
139 const;
141 void set_buffer_size(std::size_t nevents);
143 virtual void write_event(
146 virtual void start_run() override;
147
148 private:
151};
Abstract base class for consuming event packets.
Definition daq_run.h:18
Consume an event packet, decode it, and save to buffer.
Definition daq_run.h:132
virtual void write_event(const pflib::packing::MultiSampleECONDEventPacket &ep) override
Save to buffer.
Definition daq_run.cxx:138
std::vector< pflib::packing::MultiSampleECONDEventPacket > ep_buffer_
Buffer for event packets.
Definition daq_run.h:150
DecodeAndBuffer(std::size_t nevents, int n_links)
define number of events to buffer and number of links enabled
Definition daq_run.cxx:133
void set_buffer_size(std::size_t nevents)
Set the buffer size.
Definition daq_run.cxx:155
virtual void start_run() override
Check that the buffer was read and flushed since last run.
Definition daq_run.cxx:148
const std::vector< pflib::packing::MultiSampleECONDEventPacket > & get_buffer() const
get buffer
Definition daq_run.cxx:151
specializatin of DecodeAndWrite that holds a std::ofstream for the user with functions for writing th...
Definition daq_run.h:91
std::ofstream file_
output file writing to
Definition daq_run.h:93
virtual void write_event(const pflib::packing::MultiSampleECONDEventPacket &ep) final
call write_event with our file handle
Definition daq_run.cxx:113
std::function< void(std::ofstream &, const pflib::packing::MultiSampleECONDEventPacket &)> write_event_
function that writes row(s) to csv given an event
Definition daq_run.h:97
Consume an event packet, decode it, and then do something else.
Definition daq_run.h:58
DecodeAndWrite(int n_links)
Definition daq_run.cxx:65
virtual void write_event(const pflib::packing::MultiSampleECONDEventPacket &ep)=0
pure virtual function for writing out decoded event
virtual void consume(std::vector< uint32_t > &event) final
Decode the input event packet into our pflib::packing::MultiSampleECONDEventPacket and then call writ...
Definition daq_run.cxx:83
mutable::pflib::logging::logger the_log_
logging for warning messages on empty events
Definition daq_run.h:80
pflib::packing::MultiSampleECONDEventPacket ep_
event packet for decoding
Definition daq_run.h:84
just copy input event packets to the output file as binary
Definition daq_run.h:41
encapulating a given setup's access rules
Definition Target.h:24
Unpack an event that has potentially more than one sample collected from a single ECOND.
Definition MultiSampleECONDEventPacket.h:19