50 lines
1.1 KiB
C++
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
|