mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-24 15:20:02 +02:00
* slsSupportLib done, at receiver rooting out in implementation * removed from receiver and client * removed everywhere except gui, python and client(commands.yaml and Detector.h) * updated python * fixed autocomplete to print what the issue is if there is one with ToString when running the autocomplete script to generate fixed.json. updated readme.md in generator folder * formatting * removed enums for dacs * udpating autocomplete and generating commands * removed gotthard from docs and release notes * removed dac test * bug from removing g1 * fixed virtual test for xilinx, was minor. so in this PR * gui done * binary in merge fix * formatting and removing enums * updated fixed and dump.json * bash autocomplete * updated doc on command line generation * removing increments in dac enums for backward compatibility. Not required * removed ROI from rxParameters (only in g1), not needed to be backward compatible * removed the phase shift option from det server staruip
156 lines
5.5 KiB
C++
156 lines
5.5 KiB
C++
// SPDX-License-Identifier: LGPL-3.0-or-other
|
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
|
#pragma once
|
|
|
|
#include "receiver_defs.h"
|
|
#include "sls/ToString.h"
|
|
#include "sls/logger.h"
|
|
#include "sls/sls_detector_defs.h"
|
|
|
|
#include <chrono>
|
|
#include <rapidjson/prettywriter.h>
|
|
#include <rapidjson/stringbuffer.h>
|
|
|
|
#ifdef HDF5C
|
|
#include "H5Cpp.h"
|
|
#endif
|
|
|
|
namespace sls {
|
|
|
|
using ns = std::chrono::nanoseconds;
|
|
|
|
class MasterAttributes {
|
|
public:
|
|
// (before acquisition)
|
|
slsDetectorDefs::detectorType detType{slsDetectorDefs::GENERIC};
|
|
slsDetectorDefs::timingMode timingMode{slsDetectorDefs::AUTO_TIMING};
|
|
slsDetectorDefs::xy geometry{};
|
|
uint32_t imageSize{0};
|
|
slsDetectorDefs::xy nPixels{};
|
|
uint32_t maxFramesPerFile{0};
|
|
slsDetectorDefs::frameDiscardPolicy frameDiscardMode{
|
|
slsDetectorDefs::NO_DISCARD};
|
|
int framePadding{1};
|
|
slsDetectorDefs::scanParameters scanParams{};
|
|
uint64_t totalFrames{0};
|
|
ns exptime{0};
|
|
ns period{0};
|
|
slsDetectorDefs::burstMode burstMode{slsDetectorDefs::BURST_INTERNAL};
|
|
int numUDPInterfaces{0};
|
|
uint32_t dynamicRange{0};
|
|
uint32_t tenGiga{0};
|
|
int thresholdEnergyeV{0};
|
|
std::array<int, 3> thresholdAllEnergyeV = {{0, 0, 0}};
|
|
ns subExptime{0};
|
|
ns subPeriod{0};
|
|
uint32_t quad{0};
|
|
uint32_t readNRows;
|
|
std::vector<int64_t> ratecorr;
|
|
uint32_t adcmask{0};
|
|
uint32_t analog{0};
|
|
uint32_t analogSamples{0};
|
|
uint32_t digital{0};
|
|
uint32_t digitalSamples{0};
|
|
uint32_t dbitoffset{0};
|
|
uint64_t dbitlist{0};
|
|
uint32_t transceiverMask{0};
|
|
uint32_t transceiver{0};
|
|
uint32_t transceiverSamples{0};
|
|
slsDetectorDefs::ROI receiverRoi{};
|
|
uint32_t counterMask{0};
|
|
std::array<ns, 3> exptimeArray{};
|
|
std::array<ns, 3> gateDelayArray{};
|
|
uint32_t gates;
|
|
std::map<std::string, std::string> additionalJsonHeader;
|
|
uint64_t framesInFile{0};
|
|
|
|
MasterAttributes() = default;
|
|
~MasterAttributes() = default;
|
|
|
|
void
|
|
GetBinaryAttributes(rapidjson::PrettyWriter<rapidjson::StringBuffer> *w);
|
|
#ifdef HDF5C
|
|
void WriteHDF5Attributes(H5::H5File *fd, H5::Group *group);
|
|
#endif
|
|
|
|
void GetCommonBinaryAttributes(
|
|
rapidjson::PrettyWriter<rapidjson::StringBuffer> *w);
|
|
void GetFinalBinaryAttributes(
|
|
rapidjson::PrettyWriter<rapidjson::StringBuffer> *w);
|
|
#ifdef HDF5C
|
|
void WriteCommonHDF5Attributes(H5::H5File *fd, H5::Group *group);
|
|
void WriteFinalHDF5Attributes(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5Exptime(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5Period(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5DynamicRange(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5TenGiga(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5NumUDPInterfaces(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5ReadNRows(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5ThresholdEnergy(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5ThresholdEnergies(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5SubExpTime(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5SubPeriod(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5SubQuad(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5RateCorrections(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5CounterMask(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5ExptimeArray(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5GateDelayArray(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5Gates(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5BurstMode(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5AdcMask(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5AnalogFlag(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5AnalogSamples(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5DigitalFlag(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5DigitalSamples(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5DbitOffset(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5DbitList(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5TransceiverMask(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5TransceiverFlag(H5::H5File *fd, H5::Group *group);
|
|
void WriteHDF5TransceiverSamples(H5::H5File *fd, H5::Group *group);
|
|
#endif
|
|
|
|
void GetJungfrauBinaryAttributes(
|
|
rapidjson::PrettyWriter<rapidjson::StringBuffer> *w);
|
|
#ifdef HDF5C
|
|
void WriteJungfrauHDF5Attributes(H5::H5File *fd, H5::Group *group);
|
|
#endif
|
|
|
|
void GetEigerBinaryAttributes(
|
|
rapidjson::PrettyWriter<rapidjson::StringBuffer> *w);
|
|
#ifdef HDF5C
|
|
void WriteEigerHDF5Attributes(H5::H5File *fd, H5::Group *group);
|
|
#endif
|
|
|
|
void GetMythen3BinaryAttributes(
|
|
rapidjson::PrettyWriter<rapidjson::StringBuffer> *w);
|
|
#ifdef HDF5C
|
|
void WriteMythen3HDF5Attributes(H5::H5File *fd, H5::Group *group);
|
|
#endif
|
|
|
|
void GetGotthard2BinaryAttributes(
|
|
rapidjson::PrettyWriter<rapidjson::StringBuffer> *w);
|
|
#ifdef HDF5C
|
|
void WriteGotthard2HDF5Attributes(H5::H5File *fd, H5::Group *group);
|
|
#endif
|
|
|
|
void GetMoenchBinaryAttributes(
|
|
rapidjson::PrettyWriter<rapidjson::StringBuffer> *w);
|
|
#ifdef HDF5C
|
|
void WriteMoenchHDF5Attributes(H5::H5File *fd, H5::Group *group);
|
|
#endif
|
|
|
|
void
|
|
GetCtbBinaryAttributes(rapidjson::PrettyWriter<rapidjson::StringBuffer> *w);
|
|
#ifdef HDF5C
|
|
void WriteCtbHDF5Attributes(H5::H5File *fd, H5::Group *group);
|
|
#endif
|
|
|
|
void GetXilinxCtbBinaryAttributes(
|
|
rapidjson::PrettyWriter<rapidjson::StringBuffer> *w);
|
|
#ifdef HDF5C
|
|
void WriteXilinxCtbHDF5Attributes(H5::H5File *fd, H5::Group *group);
|
|
#endif
|
|
};
|
|
|
|
} // namespace sls
|