gdata
Loading...
Searching...
No Matches
gFrameDataCollection.h
Go to the documentation of this file.
1#pragma once
2
27#include "gFrameHeader.h"
28#include "gIntegralPayload.h"
29#include "gdataConventions.h"
30#include <vector>
31
33{
34public:
48 GFrameDataCollection(GFrameHeader* header, std::shared_ptr<GLogger> logger)
49 : log(logger), gevent_header(header) {
50 log->debug(CONSTRUCTOR, "GFrameDataCollection");
51 integralPayloads = new std::vector<GIntegralPayload*>();
52 }
53
68 log->debug(DESTRUCTOR, "GFrameDataCollection");
69 delete gevent_header;
70 for (auto* payload : *integralPayloads) { delete payload; }
71 delete integralPayloads;
72 }
73
74public:
97 void addIntegralPayload(std::vector<int> payload) const {
98 if (payload.size() == 5) {
99 int crate = payload[0];
100 int slot = payload[1];
101 int channel = payload[2];
102 int charge = payload[3];
103 int time = payload[4];
104
105 auto gpayload = new GIntegralPayload(crate, slot, channel, charge, time, log);
106 integralPayloads->push_back(gpayload);
107 log->debug(NORMAL, " adding integral payload for crate ", crate, " slot ", slot, " channel ", channel,
108 " charge ", charge, " time ", time);
109 }
110 else {
111 log->error(ERR_WRONGPAYLOAD, "payload size is not 5 but ", payload.size());
112 }
113 }
114
125 void addEvent(int evn);
126
137 [[nodiscard]] bool shouldWriteFrame() const;
138
148 [[nodiscard]] inline const GFrameHeader* getHeader() const { return gevent_header; }
149
161 [[nodiscard]] inline const std::vector<GIntegralPayload*>* getIntegralPayload() const { return integralPayloads; }
162
171 [[nodiscard]] inline long int getFrameID() const { return gevent_header->getFrameID(); }
172
173private:
174 std::shared_ptr<GLogger> log;
175 GFrameHeader* gevent_header = nullptr;
176 std::vector<GIntegralPayload*>* integralPayloads;
177};
const GFrameHeader * getHeader() const
Get the owned frame header (read-only).
bool shouldWriteFrame() const
Placeholder decision hook: should this frame be emitted/written?
void addIntegralPayload(std::vector< int > payload) const
Add one integral payload to this frame.
long int getFrameID() const
Convenience getter for frame ID.
const std::vector< GIntegralPayload * > * getIntegralPayload() const
Get the stored payload pointers (read-only).
GFrameDataCollection(GFrameHeader *header, std::shared_ptr< GLogger > logger)
Construct a frame data collection.
void addEvent(int evn)
Placeholder for adding event-level information into the frame.
long int getFrameID() const
Get the frame identifier.
void debug(debug_type type, Args &&... args) const
void error(int exit_code, Args &&... args) const
Defines the GFrameHeader class, a minimal header describing a "frame".
Defines GIntegralPayload, one integrated electronics payload sample.
Shared constants and error codes for the GData library.
constexpr int ERR_WRONGPAYLOAD
A payload vector has the wrong size/shape for the expected format.
CONSTRUCTOR
NORMAL
DESTRUCTOR