Files
Jungfraujoch/common/DeviceOutput.h
2023-12-09 12:08:39 +01:00

50 lines
1.1 KiB
C++

// Copyright (2019-2023) Paul Scherrer Institute
#ifndef JUNGFRAUJOCH_DEVICEOUTPUT_H
#define JUNGFRAUJOCH_DEVICEOUTPUT_H
#include <cstdint>
#pragma pack(push)
#pragma pack(1)
struct IntegrationResult {
uint32_t count;
float sum;
};
struct SpotFindingResult {
char strong_pixel[RAW_MODULE_SIZE / 8];
int32_t count_threshold;
int32_t snr_threshold;
int32_t strong_pixel_count;
int32_t reserved[13];
};
struct ModuleStatistics {
uint64_t frame_number;
uint64_t timestamp;
uint64_t bunchid;
uint64_t reserved_1;
uint64_t reserved_2;
uint32_t exptime;
uint32_t debug;
uint32_t pedestal;
uint32_t packet_count;
uint32_t module_number;
uint32_t reserved_3;
uint64_t packet_mask[4]; // This is reserved for 256 packets/module
};
struct DeviceOutput {
int16_t pixels[RAW_MODULE_SIZE * 2]; // accommodate 32-bit output
SpotFindingResult spot_finding_result;
IntegrationResult integration_result[FPGA_INTEGRATION_BIN_COUNT];
uint32_t adu_histogram[ADU_HISTO_BIN_COUNT];
ModuleStatistics module_statistics;
};
#pragma pack(pop)
#endif //JUNGFRAUJOCH_DEVICEOUTPUT_H