From ddf4c756452b72e605aa5fb8b38bdb8a6b6aa1f2 Mon Sep 17 00:00:00 2001 From: leonarski_f Date: Sun, 2 Mar 2025 13:15:28 +0100 Subject: [PATCH] v1.0.0-rc.31 --- .gitlab-ci.yml | 40 +- CMakeLists.txt | 23 +- VERSION | 2 +- acquisition_device/AcquisitionCounters.cpp | 10 +- acquisition_device/AcquisitionCounters.h | 5 +- acquisition_device/AcquisitionDevice.cpp | 2 +- broker/JFJochBrokerHttp.cpp | 57 ++ broker/JFJochBrokerHttp.h | 22 +- broker/JFJochBrokerParser.cpp | 5 +- broker/JFJochServices.cpp | 21 + broker/JFJochServices.h | 5 + broker/JFJochStateMachine.cpp | 80 ++- broker/JFJochStateMachine.h | 30 +- broker/OpenAPIConvert.cpp | 34 + broker/OpenAPIConvert.h | 7 + broker/gen/api/ApiBase.h | 2 +- broker/gen/api/DefaultApi.cpp | 220 ++++++- broker/gen/api/DefaultApi.h | 74 ++- broker/gen/model/Azim_int_settings.cpp | 2 +- broker/gen/model/Azim_int_settings.h | 2 +- broker/gen/model/Broker_status.cpp | 2 +- broker/gen/model/Broker_status.h | 2 +- .../model/Calibration_statistics_inner.cpp | 2 +- .../gen/model/Calibration_statistics_inner.h | 2 +- broker/gen/model/Dataset_settings.cpp | 2 +- broker/gen/model/Dataset_settings.h | 4 +- .../gen/model/Dataset_settings_unit_cell.cpp | 2 +- broker/gen/model/Dataset_settings_unit_cell.h | 2 +- broker/gen/model/Detector.cpp | 2 +- broker/gen/model/Detector.h | 2 +- broker/gen/model/Detector_list.cpp | 2 +- broker/gen/model/Detector_list.h | 2 +- broker/gen/model/Detector_list_element.cpp | 2 +- broker/gen/model/Detector_list_element.h | 2 +- broker/gen/model/Detector_module.cpp | 2 +- broker/gen/model/Detector_module.h | 2 +- .../gen/model/Detector_module_direction.cpp | 2 +- broker/gen/model/Detector_module_direction.h | 2 +- broker/gen/model/Detector_power_state.cpp | 2 +- broker/gen/model/Detector_power_state.h | 2 +- broker/gen/model/Detector_selection.cpp | 2 +- broker/gen/model/Detector_selection.h | 2 +- broker/gen/model/Detector_settings.cpp | 2 +- broker/gen/model/Detector_settings.h | 2 +- broker/gen/model/Detector_state.cpp | 2 +- broker/gen/model/Detector_state.h | 2 +- broker/gen/model/Detector_status.cpp | 2 +- broker/gen/model/Detector_status.h | 2 +- broker/gen/model/Detector_timing.cpp | 2 +- broker/gen/model/Detector_timing.h | 2 +- broker/gen/model/Detector_type.cpp | 2 +- broker/gen/model/Detector_type.h | 2 +- broker/gen/model/Error_message.cpp | 2 +- broker/gen/model/Error_message.h | 2 +- broker/gen/model/File_writer_settings.cpp | 154 +++++ broker/gen/model/File_writer_settings.h | 87 +++ broker/gen/model/Fpga_status_inner.cpp | 32 +- broker/gen/model/Fpga_status_inner.h | 16 +- broker/gen/model/Helpers.cpp | 2 +- broker/gen/model/Helpers.h | 2 +- broker/gen/model/Image_buffer_status.cpp | 139 ++++ broker/gen/model/Image_buffer_status.h | 91 +++ broker/gen/model/Image_format_settings.cpp | 2 +- broker/gen/model/Image_format_settings.h | 2 +- broker/gen/model/Image_pusher_type.cpp | 2 +- broker/gen/model/Image_pusher_type.h | 2 +- broker/gen/model/Instrument_metadata.cpp | 2 +- broker/gen/model/Instrument_metadata.h | 2 +- broker/gen/model/Jfjoch_settings.cpp | 32 +- broker/gen/model/Jfjoch_settings.h | 20 +- broker/gen/model/Jfjoch_statistics.cpp | 32 +- broker/gen/model/Jfjoch_statistics.h | 12 +- broker/gen/model/Measurement_statistics.cpp | 122 +++- broker/gen/model/Measurement_statistics.h | 38 +- broker/gen/model/Pcie_devices_inner.cpp | 2 +- broker/gen/model/Pcie_devices_inner.h | 2 +- broker/gen/model/Pixel_mask_statistics.cpp | 2 +- broker/gen/model/Pixel_mask_statistics.h | 2 +- broker/gen/model/Plot.cpp | 2 +- broker/gen/model/Plot.h | 2 +- broker/gen/model/Plots.cpp | 2 +- broker/gen/model/Plots.h | 2 +- broker/gen/model/Preview_settings.cpp | 2 +- broker/gen/model/Preview_settings.h | 2 +- broker/gen/model/Roi_box.cpp | 2 +- broker/gen/model/Roi_box.h | 2 +- broker/gen/model/Roi_box_list.cpp | 2 +- broker/gen/model/Roi_box_list.h | 2 +- broker/gen/model/Roi_circle.cpp | 2 +- broker/gen/model/Roi_circle.h | 2 +- broker/gen/model/Roi_circle_list.cpp | 2 +- broker/gen/model/Roi_circle_list.h | 2 +- broker/gen/model/Roi_definitions.cpp | 2 +- broker/gen/model/Roi_definitions.h | 2 +- broker/gen/model/Rotation_axis.cpp | 2 +- broker/gen/model/Rotation_axis.h | 2 +- broker/gen/model/Spot_finding_settings.cpp | 2 +- broker/gen/model/Spot_finding_settings.h | 2 +- .../gen/model/Standard_detector_geometry.cpp | 2 +- broker/gen/model/Standard_detector_geometry.h | 2 +- broker/gen/model/Zeromq_metadata_settings.cpp | 2 +- broker/gen/model/Zeromq_metadata_settings.h | 2 +- broker/gen/model/Zeromq_preview_settings.cpp | 2 +- broker/gen/model/Zeromq_preview_settings.h | 2 +- broker/gen/model/Zeromq_settings.cpp | 2 +- broker/gen/model/Zeromq_settings.h | 2 +- broker/jfjoch_api.yaml | 239 ++++++- broker/redoc-static.html | 198 ++++-- common/CMakeLists.txt | 12 +- common/ColorScale.cpp | 61 ++ common/ColorScale.h | 62 ++ common/DatasetSettings.cpp | 5 +- common/DatasetSettings.h | 2 +- common/Definitions.h | 2 + common/DetectorGeometry.cpp | 49 +- common/DetectorGeometry.h | 10 +- common/DiffractionExperiment.cpp | 143 +++-- common/DiffractionExperiment.h | 24 +- common/DiffractionGeometry.cpp | 147 +++++ common/DiffractionGeometry.h | 120 +--- common/DiffractionSpot.cpp | 12 +- common/DiffractionSpot.h | 7 +- common/FileWriterSettings.cpp | 27 + common/FileWriterSettings.h | 20 + common/ImageBuffer.cpp | 243 +++++++ common/ImageBuffer.h | 79 +++ common/MovingAverage.cpp | 28 + common/MovingAverage.h | 22 + common/PixelMask.cpp | 6 + common/PixelMask.h | 1 + common/Plot.h | 2 +- common/SendBuffer.cpp | 72 --- common/SendBuffer.h | 29 - common/SendBufferControl.cpp | 37 -- common/SendBufferControl.h | 24 - common/StatusVector.h | 44 +- common/ZMQWrappers.cpp | 13 +- common/ZMQWrappers.h | 9 +- common/ZeroCopyReturnValue.cpp | 35 + common/ZeroCopyReturnValue.h | 25 +- docs/CBOR.md | 134 ++-- docs/CHANGELOG.md | 22 + docs/DEPLOYMENT.md | 14 + docs/FPGA.md | 2 +- docs/JFJOCH_WRITER.md | 82 ++- docs/SOFTWARE.md | 1 + docs/TOOLS.md | 4 - docs/conf.py | 2 +- docs/python_client/README.md | 14 +- docs/python_client/docs/DatasetSettings.md | 2 +- docs/python_client/docs/DefaultApi.md | 543 ++++++++++++++++ docs/python_client/docs/FileWriterSettings.md | 30 + docs/python_client/docs/FpgaStatusInner.md | 2 + docs/python_client/docs/ImageBufferStatus.md | 31 + docs/python_client/docs/JfjochSettings.md | 1 + docs/python_client/docs/JfjochStatistics.md | 1 + .../docs/MeasurementStatistics.md | 4 + fpga/hdl/action_config.v | 2 +- fpga/hls/CMakeLists.txt | 4 +- fpga/hls/adu_histo.cpp | 24 - fpga/hls/hls_jfjoch.h | 18 + fpga/hls/host_writer.cpp | 19 +- fpga/hls/pixel_calc.cpp | 81 +++ fpga/hls/spot_finder.cpp | 155 +++-- fpga/hls/spot_finder_mask.cpp | 5 +- fpga/hls_simulation/HLSDevice.cpp | 38 +- fpga/hls_simulation/hls_cores.h | 10 +- fpga/hls_tb/spot_finder_tb.cpp | 15 +- fpga/pcie_driver/dkms.conf | 2 +- fpga/pcie_driver/install_dkms.sh | 2 +- fpga/pcie_driver/jfjoch_drv.c | 2 +- fpga/pcie_driver/jfjoch_drv.h | 2 + fpga/pcie_driver/jfjoch_fpga.h | 9 +- fpga/pcie_driver/jfjoch_function.c | 20 + fpga/pcie_driver/jfjoch_sysfs.c | 14 +- fpga/pcie_driver/postinstall.sh | 2 +- fpga/pcie_driver/preuninstall.sh | 2 +- fpga/scripts/bd_pcie.tcl | 2 +- fpga/scripts/bd_pcie_8x10g.tcl | 2 +- fpga/scripts/image_processing.tcl | 83 ++- fpga/scripts/jfjoch.tcl | 9 +- fpga/scripts/mac_100g_pcie.tcl | 2 +- frame_serialize/CBORStream2Deserializer.cpp | 16 + frame_serialize/CBORStream2Serializer.cpp | 13 +- frame_serialize/JFJochMessages.h | 15 +- frontend/package-lock.json | 4 +- frontend/package.json | 2 +- frontend/src/App.tsx | 4 +- .../src/components/DataProcessingPlot.tsx | 12 +- .../src/components/DataProcessingPlots.tsx | 3 + .../src/components/FileWriterSettings.tsx | 113 ++++ frontend/src/components/FpgaStatus.tsx | 11 +- frontend/src/openapi/core/OpenAPI.ts | 2 +- frontend/src/openapi/index.ts | 2 + .../openapi/models/file_writer_settings.ts | 19 + frontend/src/openapi/models/fpga_status.ts | 8 + .../src/openapi/models/image_buffer_status.ts | 22 + .../src/openapi/models/jfjoch_settings.ts | 2 + .../src/openapi/models/jfjoch_statistics.ts | 2 + .../openapi/models/measurement_statistics.ts | 20 + .../src/openapi/services/DefaultService.ts | 163 +++++ frontend/src/version.ts | 2 +- gitlab_upload_release.sh | 2 + image_analysis/AzimuthalIntegration.cpp | 4 +- .../AzimuthalIntegrationMapping.cpp | 59 +- image_analysis/AzimuthalIntegrationMapping.h | 17 +- image_analysis/CMakeLists.txt | 4 +- image_analysis/CPUSpotFinder.h | 110 ++-- image_analysis/ImageSpotFinder.cpp | 151 +++++ image_analysis/ImageSpotFinder.h | 34 + image_analysis/MXAnalyzer.cpp | 12 +- image_analysis/StrongPixelSet.cpp | 15 +- image_analysis/StrongPixelSet.h | 1 + image_pusher/CBORFilePusher.cpp | 6 - image_pusher/CBORFilePusher.h | 1 - image_pusher/HDF5FilePusher.cpp | 11 +- image_pusher/HDF5FilePusher.h | 2 +- image_pusher/ImagePusher.cpp | 7 +- image_pusher/ImagePusher.h | 3 +- image_pusher/NonePusher.cpp | 4 - image_pusher/NonePusher.h | 1 - image_pusher/TestImagePusher.cpp | 6 - image_pusher/TestImagePusher.h | 1 - image_pusher/ZMQStream2Pusher.cpp | 14 +- image_pusher/ZMQStream2Pusher.h | 2 +- preview/PreviewImage.cpp | 3 +- preview/ZMQMetadataSocket.cpp | 3 +- preview/ZMQPreviewSocket.cpp | 3 +- reader/CMakeLists.txt | 7 + reader/JFJochHDF5Reader.cpp | 285 +++++++++ reader/JFJochHDF5Reader.h | 51 ++ reader/JFJochReader.cpp | 4 + reader/JFJochReader.h | 78 +++ receiver/ImageMetadata.cpp | 17 + receiver/ImageMetadata.h | 4 + receiver/JFJochReceiver.cpp | 145 +++-- receiver/JFJochReceiver.h | 24 +- receiver/JFJochReceiverCurrentStatus.h | 4 + receiver/JFJochReceiverPlots.cpp | 9 + receiver/JFJochReceiverPlots.h | 2 + receiver/JFJochReceiverService.cpp | 49 +- receiver/JFJochReceiverService.h | 8 +- tests/AcquisitionCountersTest.cpp | 4 +- tests/CBORTest.cpp | 11 +- tests/CMakeLists.txt | 7 +- tests/DetectorGeometryTest.cpp | 22 + tests/DiffractionGeometryTest.cpp | 76 ++- tests/FPGAHostWriterTest.cpp | 5 +- tests/FPGAIntegrationTest.cpp | 24 +- tests/FPGASpotFindingUnitTest.cpp | 129 +++- tests/HDF5WritingTest.cpp | 94 ++- tests/ImageBufferTest.cpp | 140 ++++ tests/ImageSpotFinderTest.cpp | 108 ++++ tests/JFJochReaderTest.cpp | 600 ++++++++++++++++++ tests/JFJochReceiverIntegrationTest.cpp | 2 + tests/JFJochReceiverProcessingTest.cpp | 36 +- tests/MovingAverageTest.cpp | 18 + tests/SendBufferTest.cpp | 71 --- tests/StreamWriterTest.cpp | 28 +- tools/CMakeLists.txt | 4 - tools/jfjoch_azint.cpp | 128 ---- tools/jfjoch_hdf5_test.cpp | 30 +- tools/jfjoch_pcie_status.cpp | 2 + viewer/CMakeLists.txt | 30 + viewer/JFJochImageReadingWorker.cpp | 43 ++ viewer/JFJochImageReadingWorker.h | 37 ++ viewer/JFJochViewerDatasetInfo.cpp | 94 +++ viewer/JFJochViewerDatasetInfo.h | 32 + viewer/JFJochViewerImage.cpp | 410 ++++++++++++ viewer/JFJochViewerImage.h | 76 +++ viewer/JFJochViewerMenu.cpp | 84 +++ viewer/JFJochViewerMenu.h | 29 + viewer/JFJochViewerSidePanel.cpp | 176 +++++ viewer/JFJochViewerSidePanel.h | 49 ++ viewer/JFJochViewerToolbar.cpp | 185 ++++++ viewer/JFJochViewerToolbar.h | 64 ++ viewer/JFJochViewerWindow.cpp | 117 ++++ viewer/JFJochViewerWindow.h | 32 + viewer/jfjoch_viewer.cpp | 15 + viewer/widgets/JFJochChartView.cpp | 75 +++ viewer/widgets/JFJochChartView.h | 47 ++ viewer/widgets/TitleLabel.cpp | 11 + viewer/widgets/TitleLabel.h | 15 + writer/CMakeLists.txt | 6 +- writer/HDF5DataFile.cpp | 11 +- writer/HDF5DataFile.h | 1 + writer/HDF5DataFilePluginBkg.cpp | 16 - writer/HDF5DataFilePluginBkg.h | 21 - writer/HDF5DataFilePluginDetector.cpp | 55 ++ ...UNGFRAU.h => HDF5DataFilePluginDetector.h} | 8 +- writer/HDF5DataFilePluginJUNGFRAU.cpp | 30 - writer/HDF5DataFilePluginMX.cpp | 24 +- writer/HDF5DataFilePluginMX.h | 14 +- writer/HDF5DataFilePluginROI.cpp | 12 +- writer/HDF5DataFilePluginROI.h | 1 + writer/HDF5NXmx.cpp | 159 ++++- writer/HDF5NXmx.h | 12 + writer/HDF5Objects.cpp | 99 ++- writer/HDF5Objects.h | 90 ++- writer/StreamWriter.cpp | 2 +- writer/ZMQImagePuller.h | 1 + writer/gen/api/ApiBase.h | 2 +- writer/gen/api/DefaultApi.cpp | 2 +- writer/gen/api/DefaultApi.h | 2 +- writer/gen/model/Helpers.cpp | 2 +- writer/gen/model/Helpers.h | 2 +- writer/gen/model/Writer_statistics.cpp | 2 +- writer/gen/model/Writer_statistics.h | 2 +- writer/writer_api.yaml | 2 +- 309 files changed, 8705 insertions(+), 1421 deletions(-) create mode 100644 broker/gen/model/File_writer_settings.cpp create mode 100644 broker/gen/model/File_writer_settings.h create mode 100644 broker/gen/model/Image_buffer_status.cpp create mode 100644 broker/gen/model/Image_buffer_status.h create mode 100644 common/ColorScale.cpp create mode 100644 common/ColorScale.h create mode 100644 common/DiffractionGeometry.cpp create mode 100644 common/FileWriterSettings.cpp create mode 100644 common/FileWriterSettings.h create mode 100644 common/ImageBuffer.cpp create mode 100644 common/ImageBuffer.h create mode 100644 common/MovingAverage.cpp create mode 100644 common/MovingAverage.h delete mode 100644 common/SendBuffer.cpp delete mode 100644 common/SendBuffer.h delete mode 100644 common/SendBufferControl.cpp delete mode 100644 common/SendBufferControl.h create mode 100644 common/ZeroCopyReturnValue.cpp create mode 100644 docs/python_client/docs/FileWriterSettings.md create mode 100644 docs/python_client/docs/ImageBufferStatus.md create mode 100644 fpga/hls/pixel_calc.cpp create mode 100644 frontend/src/components/FileWriterSettings.tsx create mode 100644 frontend/src/openapi/models/file_writer_settings.ts create mode 100644 frontend/src/openapi/models/image_buffer_status.ts create mode 100644 image_analysis/ImageSpotFinder.cpp create mode 100644 image_analysis/ImageSpotFinder.h create mode 100644 reader/CMakeLists.txt create mode 100644 reader/JFJochHDF5Reader.cpp create mode 100644 reader/JFJochHDF5Reader.h create mode 100644 reader/JFJochReader.cpp create mode 100644 reader/JFJochReader.h create mode 100644 tests/ImageBufferTest.cpp create mode 100644 tests/ImageSpotFinderTest.cpp create mode 100644 tests/JFJochReaderTest.cpp create mode 100644 tests/MovingAverageTest.cpp delete mode 100644 tests/SendBufferTest.cpp delete mode 100644 tools/jfjoch_azint.cpp create mode 100644 viewer/CMakeLists.txt create mode 100644 viewer/JFJochImageReadingWorker.cpp create mode 100644 viewer/JFJochImageReadingWorker.h create mode 100644 viewer/JFJochViewerDatasetInfo.cpp create mode 100644 viewer/JFJochViewerDatasetInfo.h create mode 100644 viewer/JFJochViewerImage.cpp create mode 100644 viewer/JFJochViewerImage.h create mode 100644 viewer/JFJochViewerMenu.cpp create mode 100644 viewer/JFJochViewerMenu.h create mode 100644 viewer/JFJochViewerSidePanel.cpp create mode 100644 viewer/JFJochViewerSidePanel.h create mode 100644 viewer/JFJochViewerToolbar.cpp create mode 100644 viewer/JFJochViewerToolbar.h create mode 100644 viewer/JFJochViewerWindow.cpp create mode 100644 viewer/JFJochViewerWindow.h create mode 100644 viewer/jfjoch_viewer.cpp create mode 100644 viewer/widgets/JFJochChartView.cpp create mode 100644 viewer/widgets/JFJochChartView.h create mode 100644 viewer/widgets/TitleLabel.cpp create mode 100644 viewer/widgets/TitleLabel.h delete mode 100644 writer/HDF5DataFilePluginBkg.cpp delete mode 100644 writer/HDF5DataFilePluginBkg.h create mode 100644 writer/HDF5DataFilePluginDetector.cpp rename writer/{HDF5DataFilePluginJUNGFRAU.h => HDF5DataFilePluginDetector.h} (72%) delete mode 100644 writer/HDF5DataFilePluginJUNGFRAU.cpp diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 22c3d046..257450f0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,6 +4,9 @@ stages: - synthesis - release +variables: + CMAKE_PREFIX_PATH: /opt/qt6 + build:x86:gcc-11: stage: build variables: @@ -17,7 +20,7 @@ build:x86:gcc-11: - mkdir build - cd build - source /opt/rh/gcc-toolset-11/enable - - cmake -DCMAKE_BUILD_TYPE=Release .. + - cmake -DCMAKE_BUILD_TYPE=Release -DJFJOCH_VIEWER_BUILD=ON .. - make -j48 build:x86:gcc-12: @@ -33,7 +36,7 @@ build:x86:gcc-12: - mkdir build - cd build - source /opt/rh/gcc-toolset-12/enable - - cmake -DCMAKE_BUILD_TYPE=Release .. + - cmake -DCMAKE_BUILD_TYPE=Release -DJFJOCH_VIEWER_BUILD=ON .. - make -j48 build:x86:gcc-13: @@ -49,7 +52,7 @@ build:x86:gcc-13: - mkdir build - cd build - source /opt/rh/gcc-toolset-13/enable - - cmake -DCMAKE_BUILD_TYPE=Release .. + - cmake -DCMAKE_BUILD_TYPE=Release -DJFJOCH_VIEWER_BUILD=ON .. - make -j48 build:x86:gcc_writer: @@ -136,7 +139,7 @@ build:x86:rpm: - mkdir build - cd build - source /opt/rh/gcc-toolset-12/enable - - cmake -DCMAKE_BUILD_TYPE=Release -DJFJOCH_INSTALL_DRIVER_SOURCE=ON .. + - cmake -DCMAKE_BUILD_TYPE=Release -DJFJOCH_INSTALL_DRIVER_SOURCE=ON -DJFJOCH_VIEWER_BUILD=ON .. - make frontend - make -j48 package - mv *.rpm .. @@ -218,6 +221,29 @@ test:x86:xds_durin: - ../../build/tools/jfjoch_hdf5_test ../../tests/test_data/compression_benchmark.h5 25 - xds_par |grep -a1 ISa |tail -n1 +test:x86:xds_durin_new_hdf5_format: + stage: test + timeout: 90m + variables: + CTEST_OUTPUT_ON_FAILURE: 1 + CC: gcc + CXX: g++ + needs: ["build:x86:gcc-12"] + dependencies: [] + tags: + - gcc + - x86 + - xds + script: + - source /opt/rh/gcc-toolset-12/enable + - mkdir -p build + - cd build + - cmake -DCMAKE_BUILD_TYPE=Release .. + - make -j8 jfjoch_hdf5_test + - cd ../tests/xds_durin + - HDF5MASTER_NEW_FORMAT=1 ../../build/tools/jfjoch_hdf5_test ../../tests/test_data/compression_benchmark.h5 25 + - xds_par |grep -a1 ISa |tail -n1 + test:x86:xds_neggia: stage: test timeout: 90m @@ -279,7 +305,7 @@ synthesis:hls: - vivado script: - source /opt/rh/gcc-toolset-12/enable - - source /opt/Xilinx/Vivado/2022.1/settings64.sh + - source /opt/Xilinx/Vivado/2022.2/settings64.sh - mkdir -p build - cd build - /usr/bin/cmake .. @@ -304,7 +330,7 @@ synthesis:100g: expire_in: 1 week script: - source /opt/rh/gcc-toolset-12/enable - - source /opt/Xilinx/Vivado/2022.1/settings64.sh + - source /opt/Xilinx/Vivado/2022.2/settings64.sh - mkdir -p build - cd build - /usr/bin/cmake .. @@ -330,7 +356,7 @@ synthesis:8x10g: expire_in: 1 week script: - source /opt/rh/gcc-toolset-12/enable - - source /opt/Xilinx/Vivado/2022.1/settings64.sh + - source /opt/Xilinx/Vivado/2022.2/settings64.sh - mkdir -p build - cd build - /usr/bin/cmake .. diff --git a/CMakeLists.txt b/CMakeLists.txt index ca7a17a1..74ef2984 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,7 @@ SET(CMAKE_C_FLAGS_RELEASE "-O3") SET(JFJOCH_WRITER_ONLY OFF CACHE BOOL "Compile HDF5 writer only") SET(JFJOCH_INSTALL_DRIVER_SOURCE OFF CACHE BOOL "Install kernel driver source (ignored if building writer only; necessary for RPM building)") SET(JFJOCH_USE_CUDA ON CACHE BOOL "Compile Jungfraujoch with CUDA") +SET(JFJOCH_VIEWER_BUILD OFF CACHE BOOL "Compile Jungfraujoch viewer") SET(BUILD_SHARED_LIBS OFF) SET(BUILD_TESTING OFF) @@ -80,7 +81,7 @@ FetchContent_Declare(tiff FetchContent_Declare(hdf5 GIT_REPOSITORY https://github.com/HDFGroup/hdf5/ - GIT_TAG hdf5_1.14.4.2 + GIT_TAG hdf5_1.14.5 GIT_SHALLOW 1 EXCLUDE_FROM_ALL) @@ -122,8 +123,9 @@ ADD_SUBDIRECTORY(compression) ADD_SUBDIRECTORY(common) ADD_SUBDIRECTORY(writer) ADD_SUBDIRECTORY(frame_serialize) - +ADD_SUBDIRECTORY(reader) ADD_SUBDIRECTORY(detector_control) + IF (JFJOCH_WRITER_ONLY) MESSAGE(STATUS "Compiling HDF5 writer only") ELSE() @@ -138,6 +140,10 @@ ELSE() ADD_SUBDIRECTORY(preview) ENDIF() +IF (JFJOCH_VIEWER_BUILD) + ADD_SUBDIRECTORY(viewer) +ENDIF() + IF (NOT JFJOCH_WRITER_ONLY) ADD_CUSTOM_COMMAND(OUTPUT frontend/dist/index.html COMMAND npm install @@ -170,9 +176,11 @@ IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) # Set Package Name -set(CPACK_PACKAGE_NAME "jfjoch") +# Initialize CPACK_COMPONENTS_ALL with common components +SET(CPACK_COMPONENTS_ALL jfjoch writer) +SET(CPACK_PACKAGE_NAME "jfjoch") IF (JFJOCH_INSTALL_DRIVER_SOURCE) - SET(CPACK_COMPONENTS_ALL jfjoch writer driver-dkms) + LIST(APPEND CPACK_COMPONENTS_ALL driver-dkms) SET(CPACK_RPM_DRIVER-DKMS_PACKAGE_REQUIRES "dkms, gcc, bash, sed") SET(CPACK_RPM_DRIVER-DKMS_PACKAGE_ARCHITECTURE "noarch") SET(CPACK_RPM_DRIVER-DKMS_POST_INSTALL_SCRIPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/fpga/pcie_driver/postinstall.sh) @@ -182,6 +190,10 @@ ELSE() SET(CPACK_COMPONENTS_ALL jfjoch writer) ENDIF() +IF (JFJOCH_VIEWER_BUILD) + LIST(APPEND CPACK_COMPONENTS_ALL viewer) +ENDIF() + SET(CPACK_GENERATOR RPM) SET(CPACK_RPM_COMPONENT_INSTALL ON) SET(CPACK_RPM_MAIN_COMPONENT jfjoch) @@ -192,10 +204,11 @@ SET(CPACK_RPM_PACKAGE_RELEASE 1) SET(CPACK_RPM_PACKAGE_SUMMARY "Jungfraujoch data acquisition system") SET(CPACK_RPM_PACKAGE_DESCRIPTION "Jungfraujoch") +SET(CPACK_PACKAGE_CONTACT "Filip Leonarski ") # Set The Vendor Name SET(CPACK_PACKAGE_VENDOR "Paul Scherrer Institut") # Set The License Information -SET(CPACK_RPM_PACKAGE_LICENSE "Proprietary") +SET(CPACK_RPM_PACKAGE_LICENSE "GPLv3") INCLUDE(CPack) diff --git a/VERSION b/VERSION index 370478c6..99cb14c8 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.0-rc.30 +1.0.0-rc.31 diff --git a/acquisition_device/AcquisitionCounters.cpp b/acquisition_device/AcquisitionCounters.cpp index 4274b8ee..94e14b3f 100644 --- a/acquisition_device/AcquisitionCounters.cpp +++ b/acquisition_device/AcquisitionCounters.cpp @@ -206,11 +206,15 @@ uint64_t AcquisitionCounters::GetTotalPackets(uint16_t module_number) const { return packets_per_module[module_number]; } -uint64_t AcquisitionCounters::GetExpectedPackets() const { - return GetExpectedPacketsPerModule() * nmodules; +uint64_t AcquisitionCounters::GetExpectedPacketsPerImage() const { + return expected_packets_per_module * nmodules; } -uint64_t AcquisitionCounters::GetExpectedPacketsPerModule() const { +uint64_t AcquisitionCounters::GetTotalExpectedPackets() const { + return GetTotalExpectedPacketsPerModule() * nmodules; +} + +uint64_t AcquisitionCounters::GetTotalExpectedPacketsPerModule() const { return expected_frames * expected_packets_per_module; } diff --git a/acquisition_device/AcquisitionCounters.h b/acquisition_device/AcquisitionCounters.h index 3c6bb778..ee726fdd 100644 --- a/acquisition_device/AcquisitionCounters.h +++ b/acquisition_device/AcquisitionCounters.h @@ -65,8 +65,9 @@ public: uint64_t GetTotalPackets(uint16_t module_number) const; uint64_t GetBytesReceived() const; - uint64_t GetExpectedPackets() const; - uint64_t GetExpectedPacketsPerModule() const; + uint64_t GetTotalExpectedPackets() const; + uint64_t GetTotalExpectedPacketsPerModule() const; + uint64_t GetExpectedPacketsPerImage() const; uint64_t GetModuleNumber() const; }; diff --git a/acquisition_device/AcquisitionDevice.cpp b/acquisition_device/AcquisitionDevice.cpp index 5cbafe23..0f197c5d 100644 --- a/acquisition_device/AcquisitionDevice.cpp +++ b/acquisition_device/AcquisitionDevice.cpp @@ -254,7 +254,7 @@ AcquisitionDeviceStatistics AcquisitionDevice::GetStatistics() const { ret.bytes_received = GetBytesReceived(); ret.start_timestamp = start_time.time_since_epoch().count(); ret.end_timestamp = end_time.time_since_epoch().count(); - ret.packets_expected = counters.GetExpectedPackets(); + ret.packets_expected = counters.GetTotalExpectedPackets(); ret.good_packets = counters.GetTotalPackets(); for (int i = 0; i < counters.GetModuleNumber(); i++) diff --git a/broker/JFJochBrokerHttp.cpp b/broker/JFJochBrokerHttp.cpp index aa97e618..b5db52bf 100644 --- a/broker/JFJochBrokerHttp.cpp +++ b/broker/JFJochBrokerHttp.cpp @@ -382,6 +382,11 @@ void JFJochBrokerHttp::plot_indexing_unit_cell_angle_get(const std::optional &binning, + const std::optional &compression, Pistache::Http::ResponseWriter &response) { + GenericPlot(PlotType::PacketsReceived, binning, compression, response); +} + void JFJochBrokerHttp::plot_receiver_delay_get(const std::optional &binning, const std::optional& compression, Pistache::Http::ResponseWriter &response) { @@ -424,6 +429,12 @@ void JFJochBrokerHttp::plot_strong_pixel_get(const std::optional &binni GenericPlot(PlotType::StrongPixels, binning, compression, response); } +void JFJochBrokerHttp::plot_max_value_get(const std::optional &binning, + const std::optional& compression, + Pistache::Http::ResponseWriter &response) { + GenericPlot(PlotType::MaxValue, binning, compression, response); +} + void JFJochBrokerHttp::config_mask_tiff_get(Pistache::Http::ResponseWriter &response) { auto s = state_machine.GetFullPixelMaskTIFF(); response.send(Pistache::Http::Code::Ok, s, Pistache::Http::Mime::MediaType::fromString("image/tiff")); @@ -540,6 +551,7 @@ void JFJochBrokerHttp::statistics_get(const std::optional &compression, Pi statistics.setImageFormatSettings(Convert(state_machine.GetImageFormatSettings())); statistics.setPixelMask(Convert(state_machine.GetPixelMaskStatistics())); statistics.setRoi(Convert(state_machine.GetROIDefintion())); + statistics.setFileWriterSettings(Convert(state_machine.GetFileWriterSettings())); auto zeromq_prev = state_machine.GetPreviewSocketSettings(); if (!zeromq_prev.address.empty()) @@ -577,3 +589,48 @@ void JFJochBrokerHttp::config_zeromq_metadata_put( state_machine.SetMetadataSocketSettings(Convert(zeromqMetadataSettings)); response.send(Pistache::Http::Code::Ok); } + +void JFJochBrokerHttp::image_buffer_clear_post(Pistache::Http::ResponseWriter &response) { + state_machine.ClearImageBuffer(); + response.send(Pistache::Http::Code::Ok); +} + +void JFJochBrokerHttp::image_buffer_image_cbor_get(const std::optional &imageNumber, + Pistache::Http::ResponseWriter &response) { + std::vector tmp_vector; + state_machine.GetImageFromBuffer(tmp_vector, imageNumber.value_or(-1)); + std::string s = std::string((char *) tmp_vector.data(), tmp_vector.size()); + + if (!s.empty()) + response.send(Pistache::Http::Code::Ok, s, + Pistache::Http::Mime::MediaType::fromString("application/cbor")); + else + response.send(Pistache::Http::Code::Not_Found); +} + +void JFJochBrokerHttp::image_buffer_start_cbor_get(Pistache::Http::ResponseWriter &response) { + std::vector tmp_vector; + state_machine.GetStartMessageFromBuffer(tmp_vector); + std::string s = std::string((char *) tmp_vector.data(), tmp_vector.size()); + + if (!s.empty()) + response.send(Pistache::Http::Code::Ok, s, + Pistache::Http::Mime::MediaType::fromString("application/cbor")); + else + response.send(Pistache::Http::Code::Not_Found); +} + +void JFJochBrokerHttp::image_buffer_status_get(Pistache::Http::ResponseWriter &response) { + ProcessOutput(Convert(state_machine.GetImageBufferStatus()), response); +} + +void JFJochBrokerHttp::config_file_writer_get(Pistache::Http::ResponseWriter &response) { + ProcessOutput(Convert(state_machine.GetFileWriterSettings()), response); +} + +void JFJochBrokerHttp::config_file_writer_put( + const org::openapitools::server::model::File_writer_settings &fileWriterSettings, + Pistache::Http::ResponseWriter &response) { + state_machine.LoadFileWriterSettings(Convert(fileWriterSettings)); + response.send(Pistache::Http::Code::Ok); +} diff --git a/broker/JFJochBrokerHttp.h b/broker/JFJochBrokerHttp.h index a5f6598b..e1c3e0d2 100644 --- a/broker/JFJochBrokerHttp.h +++ b/broker/JFJochBrokerHttp.h @@ -78,7 +78,8 @@ class JFJochBrokerHttp : public org::openapitools::server::api::DefaultApi { Pistache::Http::ResponseWriter &response) override; void plot_strong_pixel_get(const std::optional &binning, const std::optional& compression, Pistache::Http::ResponseWriter &response) override; - + void plot_max_value_get(const std::optional &binning, const std::optional &compression, + Pistache::Http::ResponseWriter &response) override; void plot_azim_int_get(const std::optional& compression, Pistache::Http::ResponseWriter &response) override; void statistics_calibration_get(Pistache::Http::ResponseWriter &response) override; @@ -185,6 +186,19 @@ class JFJochBrokerHttp : public org::openapitools::server::api::DefaultApi { void plot_indexing_unit_cell_angle_get(const std::optional &binning, const std::optional &compression, Pistache::Http::ResponseWriter &response) override; + + void plot_packets_received_get(const std::optional &binning, const std::optional &compression, + Pistache::Http::ResponseWriter &response) override; + + void image_buffer_clear_post(Pistache::Http::ResponseWriter &response) override; + + void image_buffer_image_cbor_get(const std::optional &imageNumber, + Pistache::Http::ResponseWriter &response) override; + + void image_buffer_start_cbor_get(Pistache::Http::ResponseWriter &response) override; + + void image_buffer_status_get(Pistache::Http::ResponseWriter &response) override; + public: JFJochBrokerHttp(const DiffractionExperiment& experiment, std::shared_ptr &rtr); void AddDetectorSetup(const DetectorSetup &setup); @@ -193,6 +207,12 @@ public: JFJochBrokerHttp& FrontendDirectory(const std::string &directory); ~JFJochBrokerHttp() override = default; + +private: + void config_file_writer_get(Pistache::Http::ResponseWriter &response) override; + + void config_file_writer_put(const org::openapitools::server::model::File_writer_settings &fileWriterSettings, + Pistache::Http::ResponseWriter &response) override; }; diff --git a/broker/JFJochBrokerParser.cpp b/broker/JFJochBrokerParser.cpp index 76c5bc1b..e74e86b4 100644 --- a/broker/JFJochBrokerParser.cpp +++ b/broker/JFJochBrokerParser.cpp @@ -108,11 +108,14 @@ void ParseFacilityConfiguration(const org::openapitools::server::model::Jfjoch_s if (j.instrumentIsSet()) experiment.ImportInstrumentMetadata(Convert(j.getInstrument())); + if (j.fileWriterIsSet()) + experiment.ImportFileWriterSettings(Convert(j.getFileWriter())); + if (j.detectorSettingsIsSet()) experiment.ImportDetectorSettings(Convert(j.getDetectorSettings())); if (j.azimIntIsSet()) - experiment.ImportRadialIntegrationSettings(Convert(j.getAzimInt())); + experiment.ImportAzimuthalIntegrationSettings(Convert(j.getAzimInt())); if (j.imageFormatIsSet()) experiment.ImportImageFormatSettings(Convert(j.getImageFormat())); diff --git a/broker/JFJochServices.cpp b/broker/JFJochServices.cpp index 01bfd169..3d1cfcd0 100644 --- a/broker/JFJochServices.cpp +++ b/broker/JFJochServices.cpp @@ -223,3 +223,24 @@ void JFJochServices::SetMetadataSocketSettings(const ZMQMetadataSettings &input) if (receiver) receiver->MetadataSocketSettings(input); } + +void JFJochServices::GetStartMessageFromBuffer(std::vector &v) { + if (receiver) + return receiver->GetStartMessageFromBuffer(v); +} + +void JFJochServices::GetImageFromBuffer(std::vector &v, int64_t image_number) { + if (receiver) + return receiver->GetImageFromBuffer(v, image_number); +} + +ImageBufferStatus JFJochServices::GetImageBufferStatus() const { + if (receiver) + return receiver->GetImageBufferStatus(); + else return ImageBufferStatus{.total_slots = 0, .available_slots = 0}; +} + +void JFJochServices::ClearImageBuffer() const { + if (receiver) + receiver->ClearImageBuffer(); +} \ No newline at end of file diff --git a/broker/JFJochServices.h b/broker/JFJochServices.h index 188fa41f..4c1ade09 100644 --- a/broker/JFJochServices.h +++ b/broker/JFJochServices.h @@ -56,6 +56,11 @@ public: void SetMetadataSocketSettings(const ZMQMetadataSettings &input); ZMQMetadataSettings GetMetadataSocketSettings(); + + void GetStartMessageFromBuffer(std::vector &v); + void GetImageFromBuffer(std::vector &v, int64_t image_number = -1); + ImageBufferStatus GetImageBufferStatus() const; + void ClearImageBuffer() const; }; diff --git a/broker/JFJochStateMachine.cpp b/broker/JFJochStateMachine.cpp index 825fc570..5b1c47f8 100644 --- a/broker/JFJochStateMachine.cpp +++ b/broker/JFJochStateMachine.cpp @@ -51,10 +51,19 @@ bool JFJochStateMachine::ImportPedestalG1G2(const JFJochReceiverOutput &receiver void JFJochStateMachine::TakePedestalInternalAll(std::unique_lock &ul) { if (experiment.GetDetectorSetup().GetDetectorType() == DetectorType::EIGER) { - logger.Info("EIGER configuration"); - services.ConfigureDetector(experiment); - logger.Info(" ... done "); - return; + try { + logger.Info("EIGER configuration"); + services.ConfigureDetector(experiment); + logger.Info(" ... done "); + SetState(JFJochState::Idle, + "EIGER detector configured", + BrokerStatus::MessageSeverity::Success); + return; + } catch (const std::exception &e) { + logger.Error("EIGER configuration error {}", e.what()); + SetState(JFJochState::Error, e.what(), BrokerStatus::MessageSeverity::Error); + throw; + } } calibration = std::make_unique(experiment); @@ -402,6 +411,10 @@ std::optional JFJochStateMachine::GetMeasurementStatistic tmp.indexing_rate = rcv_status->indexing_rate; tmp.bkg_estimate = rcv_status->bkg_estimate; tmp.collection_efficiency = rcv_status->efficiency; + tmp.error_pixels = rcv_status->error_pixels; + tmp.saturated_pixels = rcv_status->saturated_pixels; + tmp.roi_beam_sum = rcv_status->roi_beam_sum; + tmp.roi_beam_npixel = rcv_status->roi_beam_npixel; } return tmp; } @@ -485,7 +498,7 @@ SpotFindingSettings JFJochStateMachine::GetSpotFindingSettings() const { } void JFJochStateMachine::AddDetectorSetup(const DetectorSetup &setup) { - std::unique_lock ul(m); + // Not thread safe, only during setup if (detector_setup.empty()) { experiment.Detector(setup); @@ -498,7 +511,6 @@ void JFJochStateMachine::AddDetectorSetup(const DetectorSetup &setup) { } DetectorList JFJochStateMachine::GetDetectorsList() const { - std::unique_lock ul(m); DetectorList ret; for (const auto &i: detector_setup) { @@ -515,8 +527,10 @@ DetectorList JFJochStateMachine::GetDetectorsList() const { tmp.readout_time = i.GetReadOutTime(); ret.detector.emplace_back(std::move(tmp)); } - - ret.current_id = current_detector_setup; + { + std::unique_lock ul(current_detector_setup_mutex); + ret.current_id = current_detector_setup; + } return ret; } @@ -539,7 +553,10 @@ void JFJochStateMachine::SelectDetector(int64_t id) { gain_calibration = detector_setup[id].GetGainCalibration(); pixel_mask = PixelMask(experiment); SetState(JFJochState::Inactive, detector_setup[id].GetDescription() + " selected; please initialize"); - current_detector_setup = id; + { + std::unique_lock ul(current_detector_setup_mutex); + current_detector_setup = id; + } } catch (const JFJochException &e) { logger.ErrorException(e); SetState(JFJochState::Error, e.what(), BrokerStatus::MessageSeverity::Error); @@ -552,13 +569,15 @@ void JFJochStateMachine::SetRadialIntegrationSettings(const AzimuthalIntegration if (IsRunning()) throw WrongDAQStateException("Cannot change radial integration settings during data collection"); - - experiment.ImportRadialIntegrationSettings(settings); + { + std::unique_lock ul(experiment_azimuthal_integration_settings_mutex); + experiment.ImportAzimuthalIntegrationSettings(settings); + } } AzimuthalIntegrationSettings JFJochStateMachine::GetRadialIntegrationSettings() const { - std::unique_lock ul(m); - return experiment.GetRadialIntegrationSettings(); + std::unique_lock ul(experiment_azimuthal_integration_settings_mutex); + return experiment.GetAzimuthalIntegrationSettings(); } bool JFJochStateMachine::IsRunning() const { @@ -797,3 +816,38 @@ void JFJochStateMachine::SetMetadataSocketSettings(const ZMQMetadataSettings &in ZMQMetadataSettings JFJochStateMachine::GetMetadataSocketSettings() { return services.GetMetadataSocketSettings(); } + +void JFJochStateMachine::GetStartMessageFromBuffer(std::vector &v) { + return services.GetStartMessageFromBuffer(v); +} + +void JFJochStateMachine::GetImageFromBuffer(std::vector &v, int64_t image_number) { + return services.GetImageFromBuffer(v, image_number); +} + +ImageBufferStatus JFJochStateMachine::GetImageBufferStatus() const { + return services.GetImageBufferStatus(); +} + +void JFJochStateMachine::ClearImageBuffer() const { + std::unique_lock ul(m); + + if (IsRunning()) + throw WrongDAQStateException("Cannot clear image buffer during data collection"); + + services.ClearImageBuffer(); +} + +FileWriterSettings JFJochStateMachine::GetFileWriterSettings() const { + std::unique_lock ul(m); + return experiment.GetFileWriterSettings(); +} + +void JFJochStateMachine::LoadFileWriterSettings(const FileWriterSettings &settings) { + std::unique_lock ul(m); + + if (IsRunning()) + throw WrongDAQStateException("Cannot change instrument metadata during data collection"); + + experiment.ImportFileWriterSettings(settings); +} diff --git a/broker/JFJochStateMachine.h b/broker/JFJochStateMachine.h index e1bec973..5ff6cc96 100644 --- a/broker/JFJochStateMachine.h +++ b/broker/JFJochStateMachine.h @@ -69,30 +69,38 @@ struct MeasurementStatistics { std::optional> beam_center_drift_pxl; std::string unit_cell; + + std::optional error_pixels; + std::optional saturated_pixels; + std::optional roi_beam_npixel; + std::optional roi_beam_sum; }; class JFJochStateMachine { Logger &logger; JFJochServices &services; + std::future measurement; + + // assuming immutable during normal operation + std::vector detector_setup; + std::vector gain_calibration; + mutable std::mutex experiment_detector_settings_mutex; + mutable std::mutex experiment_azimuthal_integration_settings_mutex; DiffractionExperiment experiment; + // mutex m is protecting: mutable std::mutex m; std::condition_variable c; - - // mutex m is protecting: volatile JFJochState state = JFJochState::Inactive; // state should not be set directly, but through SetState function volatile bool cancel_sequence = false; std::unique_ptr calibration; PixelMask pixel_mask; - std::vector gain_calibration; - std::vector detector_setup; + mutable std::mutex current_detector_setup_mutex; int64_t current_detector_setup; - std::future measurement; - mutable std::mutex calibration_statistics_mutex; std::vector calibration_statistics; @@ -149,6 +157,9 @@ public: InstrumentMetadata GetInstrumentMetadata() const; void LoadInstrumentMetadata(const InstrumentMetadata& settings); + FileWriterSettings GetFileWriterSettings() const; + void LoadFileWriterSettings(const FileWriterSettings& settings); + ImageFormatSettings GetImageFormatSettings() const; void LoadImageFormatSettings(const ImageFormatSettings& settings); void RawImageFormatSettings(); @@ -164,7 +175,6 @@ public: void SetSpotFindingSettings(const SpotFindingSettings& settings); SpotFindingSettings GetSpotFindingSettings() const; - void AddDetectorSetup(const DetectorSetup& setup); DetectorList GetDetectorsList() const; void SelectDetector(int64_t id); std::optional GetDetectorStatus() const; @@ -209,6 +219,12 @@ public: ZMQMetadataSettings GetMetadataSocketSettings(); PixelMaskStatistics GetPixelMaskStatistics() const; + + void GetStartMessageFromBuffer(std::vector &v); + void GetImageFromBuffer(std::vector &v, int64_t image_number = -1); + ImageBufferStatus GetImageBufferStatus() const; + void ClearImageBuffer() const; + void AddDetectorSetup(const DetectorSetup& setup); // Not thread safe, only during setup }; diff --git a/broker/OpenAPIConvert.cpp b/broker/OpenAPIConvert.cpp index df515043..c3c308de 100644 --- a/broker/OpenAPIConvert.cpp +++ b/broker/OpenAPIConvert.cpp @@ -67,6 +67,16 @@ org::openapitools::server::model::Measurement_statistics Convert(const Measureme ret.setDetectorHeight(input.detector_height); ret.setDetectorPixelDepth(input.detector_pixel_depth); + if (input.roi_beam_npixel) + ret.setRoiBeamPixels(input.roi_beam_npixel.value()); + if (input.roi_beam_sum) + ret.setRoiBeamSum(input.roi_beam_sum.value()); + + if (input.error_pixels) + ret.setErrorPixels(input.error_pixels.value()); + if (input.saturated_pixels) + ret.setSaturatedPixels(input.saturated_pixels.value()); + if (input.indexing_rate) ret.setIndexingRate(input.indexing_rate.value()); @@ -587,6 +597,8 @@ std::vector Convert(const s tmp.setPowerUsageW(static_cast(d.fpga_pcie_12V_I_mA * d.fpga_pcie_12V_V_mV + d.fpga_pcie_3p3V_I_mA * d.fpga_pcie_3p3V_V_mV) / (1000.0f * 1000.0f)); tmp.setIdle(d.idle); + tmp.setPcieLinkSpeed(d.pcie_link_speed); + tmp.setPcieLinkWidth(d.pcie_link_width); ret.emplace_back(std::move(tmp)); } return ret; @@ -637,3 +649,25 @@ org::openapitools::server::model::Pixel_mask_statistics Convert(const PixelMaskS ret.setTooHighPedestalRms(input.too_high_pedestal_rms); return ret; } + +org::openapitools::server::model::Image_buffer_status Convert(const ImageBufferStatus& input) { + org::openapitools::server::model::Image_buffer_status ret; + ret.setAvailableSlots(input.available_slots); + ret.setTotalSlots(input.total_slots); + ret.setImageNumbers(input.images_in_the_buffer); + return ret; +} + +org::openapitools::server::model::File_writer_settings Convert(const FileWriterSettings& input) { + org::openapitools::server::model::File_writer_settings ret; + ret.setFileWriterVersion(input.GetHDF5MasterFormatVersion()); + ret.setOverwrite(input.IsOverwriteExistingFiles()); + return ret; +} + +FileWriterSettings Convert(const org::openapitools::server::model::File_writer_settings &input) { + FileWriterSettings ret; + ret.OverwriteExistingFiles(input.isOverwrite()); + ret.HDF5MasterFormatVersion(input.getFileWriterVersion()); + return ret; +} \ No newline at end of file diff --git a/broker/OpenAPIConvert.h b/broker/OpenAPIConvert.h index a2b6e8cd..b4c57765 100644 --- a/broker/OpenAPIConvert.h +++ b/broker/OpenAPIConvert.h @@ -23,6 +23,8 @@ #include "gen/model/Pixel_mask_statistics.h" #include "gen/model/Zeromq_preview_settings.h" #include "gen/model/Zeromq_metadata_settings.h" +#include "gen/model/File_writer_settings.h" +#include "gen/model/Image_buffer_status.h" #include "../common/DatasetSettings.h" #include "../common/ImageFormatSettings.h" @@ -45,6 +47,10 @@ std::vector Conv org::openapitools::server::model::Instrument_metadata Convert(const InstrumentMetadata& input); InstrumentMetadata Convert(const org::openapitools::server::model::Instrument_metadata &input); + +org::openapitools::server::model::File_writer_settings Convert(const FileWriterSettings& input); +FileWriterSettings Convert(const org::openapitools::server::model::File_writer_settings &input); + org::openapitools::server::model::Detector_status Convert(const DetectorStatus &input); org::openapitools::server::model::Detector_list Convert(const DetectorList &input); org::openapitools::server::model::Plots Convert(const MultiLinePlot& input); @@ -58,6 +64,7 @@ org::openapitools::server::model::Image_format_settings Convert(const ImageForma DatasetSettings Convert(const org::openapitools::server::model::Dataset_settings& input); std::vector Convert(const std::vector &input); org::openapitools::server::model::Pixel_mask_statistics Convert(const PixelMaskStatistics& input); +org::openapitools::server::model::Image_buffer_status Convert(const ImageBufferStatus& input); org::openapitools::server::model::Zeromq_preview_settings Convert(const ZMQPreviewSettings& settings); ZMQPreviewSettings Convert(const org::openapitools::server::model::Zeromq_preview_settings& input); diff --git a/broker/gen/api/ApiBase.h b/broker/gen/api/ApiBase.h index a9d75851..53093ef6 100644 --- a/broker/gen/api/ApiBase.h +++ b/broker/gen/api/ApiBase.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/api/DefaultApi.cpp b/broker/gen/api/DefaultApi.cpp index c2dad47a..6120f278 100644 --- a/broker/gen/api/DefaultApi.cpp +++ b/broker/gen/api/DefaultApi.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -38,6 +38,8 @@ void DefaultApi::setupRoutes() { Routes::Put(*router, base + "/config/azim_int", Routes::bind(&DefaultApi::config_azim_int_put_handler, this)); Routes::Get(*router, base + "/config/detector", Routes::bind(&DefaultApi::config_detector_get_handler, this)); Routes::Put(*router, base + "/config/detector", Routes::bind(&DefaultApi::config_detector_put_handler, this)); + Routes::Get(*router, base + "/config/file_writer", Routes::bind(&DefaultApi::config_file_writer_get_handler, this)); + Routes::Put(*router, base + "/config/file_writer", Routes::bind(&DefaultApi::config_file_writer_put_handler, this)); Routes::Post(*router, base + "/config/image_format/conversion", Routes::bind(&DefaultApi::config_image_format_conversion_post_handler, this)); Routes::Get(*router, base + "/config/image_format", Routes::bind(&DefaultApi::config_image_format_get_handler, this)); Routes::Put(*router, base + "/config/image_format", Routes::bind(&DefaultApi::config_image_format_put_handler, this)); @@ -65,6 +67,10 @@ void DefaultApi::setupRoutes() { Routes::Post(*router, base + "/deactivate", Routes::bind(&DefaultApi::deactivate_post_handler, this)); Routes::Get(*router, base + "/detector/status", Routes::bind(&DefaultApi::detector_status_get_handler, this)); Routes::Get(*router, base + "/fpga_status", Routes::bind(&DefaultApi::fpga_status_get_handler, this)); + Routes::Post(*router, base + "/image_buffer/clear", Routes::bind(&DefaultApi::image_buffer_clear_post_handler, this)); + Routes::Get(*router, base + "/image_buffer/image.cbor", Routes::bind(&DefaultApi::image_buffer_image_cbor_get_handler, this)); + Routes::Get(*router, base + "/image_buffer/start.cbor", Routes::bind(&DefaultApi::image_buffer_start_cbor_get_handler, this)); + Routes::Get(*router, base + "/image_buffer/status", Routes::bind(&DefaultApi::image_buffer_status_get_handler, this)); Routes::Post(*router, base + "/initialize", Routes::bind(&DefaultApi::initialize_post_handler, this)); Routes::Post(*router, base + "/pedestal", Routes::bind(&DefaultApi::pedestal_post_handler, this)); Routes::Get(*router, base + "/plot/azim_int", Routes::bind(&DefaultApi::plot_azim_int_get_handler, this)); @@ -74,6 +80,8 @@ void DefaultApi::setupRoutes() { Routes::Get(*router, base + "/plot/indexing_rate", Routes::bind(&DefaultApi::plot_indexing_rate_get_handler, this)); Routes::Get(*router, base + "/plot/indexing_unit_cell_angle", Routes::bind(&DefaultApi::plot_indexing_unit_cell_angle_get_handler, this)); Routes::Get(*router, base + "/plot/indexing_unit_cell", Routes::bind(&DefaultApi::plot_indexing_unit_cell_get_handler, this)); + Routes::Get(*router, base + "/plot/max_value", Routes::bind(&DefaultApi::plot_max_value_get_handler, this)); + Routes::Get(*router, base + "/plot/packets_received", Routes::bind(&DefaultApi::plot_packets_received_get_handler, this)); Routes::Get(*router, base + "/plot/receiver_delay", Routes::bind(&DefaultApi::plot_receiver_delay_get_handler, this)); Routes::Get(*router, base + "/plot/receiver_free_send_buffers", Routes::bind(&DefaultApi::plot_receiver_free_send_buffers_get_handler, this)); Routes::Get(*router, base + "/plot/roi_max_count", Routes::bind(&DefaultApi::plot_roi_max_count_get_handler, this)); @@ -249,6 +257,56 @@ void DefaultApi::config_detector_put_handler(const Pistache::Rest::Request &requ response.send(Pistache::Http::Code::Internal_Server_Error, e.what()); } +} +void DefaultApi::config_file_writer_get_handler(const Pistache::Rest::Request &, Pistache::Http::ResponseWriter response) { + try { + + + try { + this->config_file_writer_get(response); + } catch (Pistache::Http::HttpError &e) { + response.send(static_cast(e.code()), e.what()); + return; + } catch (std::exception &e) { + this->handleOperationException(e, response); + return; + } + + } catch (std::exception &e) { + response.send(Pistache::Http::Code::Internal_Server_Error, e.what()); + } + +} +void DefaultApi::config_file_writer_put_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response) { + try { + + + // Getting the body param + + File_writer_settings fileWriterSettings; + + try { + nlohmann::json::parse(request.body()).get_to(fileWriterSettings); + fileWriterSettings.validate(); + } catch (std::exception &e) { + this->handleParsingException(e, response); + return; + } + + try { + this->config_file_writer_put(fileWriterSettings, response); + } catch (Pistache::Http::HttpError &e) { + response.send(static_cast(e.code()), e.what()); + return; + } catch (std::exception &e) { + this->handleOperationException(e, response); + return; + } + + } catch (std::exception &e) { + response.send(Pistache::Http::Code::Internal_Server_Error, e.what()); + } + } void DefaultApi::config_image_format_conversion_post_handler(const Pistache::Rest::Request &, Pistache::Http::ResponseWriter response) { try { @@ -842,6 +900,92 @@ void DefaultApi::fpga_status_get_handler(const Pistache::Rest::Request &, Pistac response.send(Pistache::Http::Code::Internal_Server_Error, e.what()); } +} +void DefaultApi::image_buffer_clear_post_handler(const Pistache::Rest::Request &, Pistache::Http::ResponseWriter response) { + try { + + + try { + this->image_buffer_clear_post(response); + } catch (Pistache::Http::HttpError &e) { + response.send(static_cast(e.code()), e.what()); + return; + } catch (std::exception &e) { + this->handleOperationException(e, response); + return; + } + + } catch (std::exception &e) { + response.send(Pistache::Http::Code::Internal_Server_Error, e.what()); + } + +} +void DefaultApi::image_buffer_image_cbor_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response) { + try { + + + // Getting the query params + auto imageNumberQuery = request.query().get("image_number"); + std::optional imageNumber; + if(imageNumberQuery.has_value()){ + int64_t valueQuery_instance; + if(fromStringValue(imageNumberQuery.value(), valueQuery_instance)){ + imageNumber = valueQuery_instance; + } + } + + try { + this->image_buffer_image_cbor_get(imageNumber, response); + } catch (Pistache::Http::HttpError &e) { + response.send(static_cast(e.code()), e.what()); + return; + } catch (std::exception &e) { + this->handleOperationException(e, response); + return; + } + + } catch (std::exception &e) { + response.send(Pistache::Http::Code::Internal_Server_Error, e.what()); + } + +} +void DefaultApi::image_buffer_start_cbor_get_handler(const Pistache::Rest::Request &, Pistache::Http::ResponseWriter response) { + try { + + + try { + this->image_buffer_start_cbor_get(response); + } catch (Pistache::Http::HttpError &e) { + response.send(static_cast(e.code()), e.what()); + return; + } catch (std::exception &e) { + this->handleOperationException(e, response); + return; + } + + } catch (std::exception &e) { + response.send(Pistache::Http::Code::Internal_Server_Error, e.what()); + } + +} +void DefaultApi::image_buffer_status_get_handler(const Pistache::Rest::Request &, Pistache::Http::ResponseWriter response) { + try { + + + try { + this->image_buffer_status_get(response); + } catch (Pistache::Http::HttpError &e) { + response.send(static_cast(e.code()), e.what()); + return; + } catch (std::exception &e) { + this->handleOperationException(e, response); + return; + } + + } catch (std::exception &e) { + response.send(Pistache::Http::Code::Internal_Server_Error, e.what()); + } + } void DefaultApi::initialize_post_handler(const Pistache::Rest::Request &, Pistache::Http::ResponseWriter response) { try { @@ -1131,6 +1275,80 @@ void DefaultApi::plot_indexing_unit_cell_get_handler(const Pistache::Rest::Reque response.send(Pistache::Http::Code::Internal_Server_Error, e.what()); } +} +void DefaultApi::plot_max_value_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response) { + try { + + + // Getting the query params + auto binningQuery = request.query().get("binning"); + std::optional binning; + if(binningQuery.has_value()){ + int32_t valueQuery_instance; + if(fromStringValue(binningQuery.value(), valueQuery_instance)){ + binning = valueQuery_instance; + } + } + auto compressionQuery = request.query().get("compression"); + std::optional compression; + if(compressionQuery.has_value()){ + bool valueQuery_instance; + if(fromStringValue(compressionQuery.value(), valueQuery_instance)){ + compression = valueQuery_instance; + } + } + + try { + this->plot_max_value_get(binning, compression, response); + } catch (Pistache::Http::HttpError &e) { + response.send(static_cast(e.code()), e.what()); + return; + } catch (std::exception &e) { + this->handleOperationException(e, response); + return; + } + + } catch (std::exception &e) { + response.send(Pistache::Http::Code::Internal_Server_Error, e.what()); + } + +} +void DefaultApi::plot_packets_received_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response) { + try { + + + // Getting the query params + auto binningQuery = request.query().get("binning"); + std::optional binning; + if(binningQuery.has_value()){ + int32_t valueQuery_instance; + if(fromStringValue(binningQuery.value(), valueQuery_instance)){ + binning = valueQuery_instance; + } + } + auto compressionQuery = request.query().get("compression"); + std::optional compression; + if(compressionQuery.has_value()){ + bool valueQuery_instance; + if(fromStringValue(compressionQuery.value(), valueQuery_instance)){ + compression = valueQuery_instance; + } + } + + try { + this->plot_packets_received_get(binning, compression, response); + } catch (Pistache::Http::HttpError &e) { + response.send(static_cast(e.code()), e.what()); + return; + } catch (std::exception &e) { + this->handleOperationException(e, response); + return; + } + + } catch (std::exception &e) { + response.send(Pistache::Http::Code::Internal_Server_Error, e.what()); + } + } void DefaultApi::plot_receiver_delay_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response) { try { diff --git a/broker/gen/api/DefaultApi.h b/broker/gen/api/DefaultApi.h index 8d8030c7..b56bd987 100644 --- a/broker/gen/api/DefaultApi.h +++ b/broker/gen/api/DefaultApi.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -37,7 +37,9 @@ #include "Detector_settings.h" #include "Detector_status.h" #include "Error_message.h" +#include "File_writer_settings.h" #include "Fpga_status_inner.h" +#include "Image_buffer_status.h" #include "Image_format_settings.h" #include "Instrument_metadata.h" #include "Jfjoch_statistics.h" @@ -70,6 +72,8 @@ private: void config_azim_int_put_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); void config_detector_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); void config_detector_put_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); + void config_file_writer_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); + void config_file_writer_put_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); void config_image_format_conversion_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); void config_image_format_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); void config_image_format_put_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); @@ -97,6 +101,10 @@ private: void deactivate_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); void detector_status_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); void fpga_status_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); + void image_buffer_clear_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); + void image_buffer_image_cbor_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); + void image_buffer_start_cbor_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); + void image_buffer_status_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); void initialize_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); void pedestal_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); void plot_azim_int_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); @@ -106,6 +114,8 @@ private: void plot_indexing_rate_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); void plot_indexing_unit_cell_angle_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); void plot_indexing_unit_cell_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); + void plot_max_value_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); + void plot_packets_received_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); void plot_receiver_delay_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); void plot_receiver_free_send_buffers_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); void plot_roi_max_count_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response); @@ -196,6 +206,21 @@ private: /// (optional) virtual void config_detector_put(const org::openapitools::server::model::Detector_settings &detectorSettings, Pistache::Http::ResponseWriter &response) = 0; /// + /// Get file writer settings + /// + /// + /// Can be done anytime + /// + virtual void config_file_writer_get(Pistache::Http::ResponseWriter &response) = 0; + /// + /// Change file writer settings + /// + /// + /// This can only be done when detector is `Idle`, `Error` or `Inactive` states. + /// + /// (optional) + virtual void config_file_writer_put(const org::openapitools::server::model::File_writer_settings &fileWriterSettings, Pistache::Http::ResponseWriter &response) = 0; + /// /// Configure format for data collection with full conversion /// /// @@ -392,6 +417,35 @@ private: /// virtual void fpga_status_get(Pistache::Http::ResponseWriter &response) = 0; /// + /// Clear image buffer + /// + /// + /// Turns off image buffer for the last data collection. Can be only run when Jungfraujoch is not collecting data. + /// + virtual void image_buffer_clear_post(Pistache::Http::ResponseWriter &response) = 0; + /// + /// Get image message in CBOR format + /// + /// + /// Contains full image data and metadata. The image must come from the latest data collection. + /// + /// Image number. If omitted, the image with the highest number in the image buffer will be provided. (optional, default to 0L) + virtual void image_buffer_image_cbor_get(const std::optional &imageNumber, Pistache::Http::ResponseWriter &response) = 0; + /// + /// Get Start message in CBOR format + /// + /// + /// Contains metadata for a dataset (e.g., experimental geometry) + /// + virtual void image_buffer_start_cbor_get(Pistache::Http::ResponseWriter &response) = 0; + /// + /// Get status of the image buffers + /// + /// + /// Can be run at any stage of Jungfraujoch operation, including during data collection. The status of the image buffer is volatile during data collection - if data collection goes for more images than available buffer slots, then image might be replaced in the buffer between calling /images and /image.cbor. + /// + virtual void image_buffer_status_get(Pistache::Http::ResponseWriter &response) = 0; + /// /// Initialize detector and data acquisition /// /// @@ -468,6 +522,24 @@ private: /// Enable DEFLATE compression of output data. (optional, default to true) virtual void plot_indexing_unit_cell_get(const std::optional &binning, const std::optional &compression, Pistache::Http::ResponseWriter &response) = 0; /// + /// Generate maximum pixel value plot + /// + /// + /// Provides maximum viable pixel value (excluding overloads and error pixels); binning is configurable and maximum of a bin is returned + /// + /// Binning of frames for the plot (0 = default binning) (optional, default to 0) + /// Enable DEFLATE compression of output data. (optional, default to true) + virtual void plot_max_value_get(const std::optional &binning, const std::optional &compression, Pistache::Http::ResponseWriter &response) = 0; + /// + /// Generate plot with number of received packets per image + /// + /// + /// Number of collected packets per image; binning is configurable + /// + /// Binning of frames for the plot (0 = default binning) (optional, default to 0) + /// Enable DEFLATE compression of output data. (optional, default to true) + virtual void plot_packets_received_get(const std::optional &binning, const std::optional &compression, Pistache::Http::ResponseWriter &response) = 0; + /// /// Generate receiver delay plot /// /// diff --git a/broker/gen/model/Azim_int_settings.cpp b/broker/gen/model/Azim_int_settings.cpp index 35df088f..1d61d4d5 100644 --- a/broker/gen/model/Azim_int_settings.cpp +++ b/broker/gen/model/Azim_int_settings.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Azim_int_settings.h b/broker/gen/model/Azim_int_settings.h index 6fff3308..8c2a16c5 100644 --- a/broker/gen/model/Azim_int_settings.h +++ b/broker/gen/model/Azim_int_settings.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Broker_status.cpp b/broker/gen/model/Broker_status.cpp index 3582526f..76cedb2b 100644 --- a/broker/gen/model/Broker_status.cpp +++ b/broker/gen/model/Broker_status.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Broker_status.h b/broker/gen/model/Broker_status.h index 9ea96800..dc72f9d4 100644 --- a/broker/gen/model/Broker_status.h +++ b/broker/gen/model/Broker_status.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Calibration_statistics_inner.cpp b/broker/gen/model/Calibration_statistics_inner.cpp index 89336021..c6c4642a 100644 --- a/broker/gen/model/Calibration_statistics_inner.cpp +++ b/broker/gen/model/Calibration_statistics_inner.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Calibration_statistics_inner.h b/broker/gen/model/Calibration_statistics_inner.h index 23b5cb11..5faa7ea1 100644 --- a/broker/gen/model/Calibration_statistics_inner.h +++ b/broker/gen/model/Calibration_statistics_inner.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Dataset_settings.cpp b/broker/gen/model/Dataset_settings.cpp index 08ccf4f1..30751aec 100644 --- a/broker/gen/model/Dataset_settings.cpp +++ b/broker/gen/model/Dataset_settings.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Dataset_settings.h b/broker/gen/model/Dataset_settings.h index 3a3649a8..6be92090 100644 --- a/broker/gen/model/Dataset_settings.h +++ b/broker/gen/model/Dataset_settings.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -222,7 +222,7 @@ public: bool writeNxmxHdf5MasterIsSet() const; void unsetWrite_nxmx_hdf5_master(); /// - /// Forward image calibration (at the moment pedestal and pedestal RMS for JUNGFRAU) using the ZeroMQ stream to writer. If parameter is not provided calibration will be saved only if more than 4 images are recorded. + /// Forward image calibration (at the moment pedestal and pedestal RMS for JUNGFRAU) using the ZeroMQ stream to writer. If parameter is not provided calibration will be saved only if more than 4 images are recorded. /// bool isSaveCalibration() const; void setSaveCalibration(bool const value); diff --git a/broker/gen/model/Dataset_settings_unit_cell.cpp b/broker/gen/model/Dataset_settings_unit_cell.cpp index e35a7342..9f879d80 100644 --- a/broker/gen/model/Dataset_settings_unit_cell.cpp +++ b/broker/gen/model/Dataset_settings_unit_cell.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Dataset_settings_unit_cell.h b/broker/gen/model/Dataset_settings_unit_cell.h index 8d545cfc..d588dff6 100644 --- a/broker/gen/model/Dataset_settings_unit_cell.h +++ b/broker/gen/model/Dataset_settings_unit_cell.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector.cpp b/broker/gen/model/Detector.cpp index 83c3871b..4049dc9f 100644 --- a/broker/gen/model/Detector.cpp +++ b/broker/gen/model/Detector.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector.h b/broker/gen/model/Detector.h index 81b235b9..5da3c845 100644 --- a/broker/gen/model/Detector.h +++ b/broker/gen/model/Detector.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_list.cpp b/broker/gen/model/Detector_list.cpp index b3cacd04..8e511e70 100644 --- a/broker/gen/model/Detector_list.cpp +++ b/broker/gen/model/Detector_list.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_list.h b/broker/gen/model/Detector_list.h index 4b3a06a2..9b5ec577 100644 --- a/broker/gen/model/Detector_list.h +++ b/broker/gen/model/Detector_list.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_list_element.cpp b/broker/gen/model/Detector_list_element.cpp index be1aa3b4..861ef44c 100644 --- a/broker/gen/model/Detector_list_element.cpp +++ b/broker/gen/model/Detector_list_element.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_list_element.h b/broker/gen/model/Detector_list_element.h index 802daf48..44f083db 100644 --- a/broker/gen/model/Detector_list_element.h +++ b/broker/gen/model/Detector_list_element.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_module.cpp b/broker/gen/model/Detector_module.cpp index 8ec1f0c9..578513b5 100644 --- a/broker/gen/model/Detector_module.cpp +++ b/broker/gen/model/Detector_module.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_module.h b/broker/gen/model/Detector_module.h index bd44a784..b8f63d5b 100644 --- a/broker/gen/model/Detector_module.h +++ b/broker/gen/model/Detector_module.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_module_direction.cpp b/broker/gen/model/Detector_module_direction.cpp index ac81cd26..6c1c82e8 100644 --- a/broker/gen/model/Detector_module_direction.cpp +++ b/broker/gen/model/Detector_module_direction.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_module_direction.h b/broker/gen/model/Detector_module_direction.h index 7aa18cac..1439ee6a 100644 --- a/broker/gen/model/Detector_module_direction.h +++ b/broker/gen/model/Detector_module_direction.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_power_state.cpp b/broker/gen/model/Detector_power_state.cpp index 4a435ba9..7003c627 100644 --- a/broker/gen/model/Detector_power_state.cpp +++ b/broker/gen/model/Detector_power_state.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_power_state.h b/broker/gen/model/Detector_power_state.h index 9b969b21..59520fc5 100644 --- a/broker/gen/model/Detector_power_state.h +++ b/broker/gen/model/Detector_power_state.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_selection.cpp b/broker/gen/model/Detector_selection.cpp index d2cc575b..f91427d1 100644 --- a/broker/gen/model/Detector_selection.cpp +++ b/broker/gen/model/Detector_selection.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_selection.h b/broker/gen/model/Detector_selection.h index ce2a1763..375d240a 100644 --- a/broker/gen/model/Detector_selection.h +++ b/broker/gen/model/Detector_selection.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_settings.cpp b/broker/gen/model/Detector_settings.cpp index 9743604e..ded87dcb 100644 --- a/broker/gen/model/Detector_settings.cpp +++ b/broker/gen/model/Detector_settings.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_settings.h b/broker/gen/model/Detector_settings.h index 096d056c..e6434ca3 100644 --- a/broker/gen/model/Detector_settings.h +++ b/broker/gen/model/Detector_settings.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_state.cpp b/broker/gen/model/Detector_state.cpp index 017edc69..d9ad184f 100644 --- a/broker/gen/model/Detector_state.cpp +++ b/broker/gen/model/Detector_state.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_state.h b/broker/gen/model/Detector_state.h index cae1cbe0..78fbe623 100644 --- a/broker/gen/model/Detector_state.h +++ b/broker/gen/model/Detector_state.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_status.cpp b/broker/gen/model/Detector_status.cpp index f106612b..00ce898a 100644 --- a/broker/gen/model/Detector_status.cpp +++ b/broker/gen/model/Detector_status.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_status.h b/broker/gen/model/Detector_status.h index dc51f561..7f9032bb 100644 --- a/broker/gen/model/Detector_status.h +++ b/broker/gen/model/Detector_status.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_timing.cpp b/broker/gen/model/Detector_timing.cpp index f84c6cca..75eabc84 100644 --- a/broker/gen/model/Detector_timing.cpp +++ b/broker/gen/model/Detector_timing.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_timing.h b/broker/gen/model/Detector_timing.h index c3c0a6f4..9db7bb08 100644 --- a/broker/gen/model/Detector_timing.h +++ b/broker/gen/model/Detector_timing.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_type.cpp b/broker/gen/model/Detector_type.cpp index 61f1ef39..cf712525 100644 --- a/broker/gen/model/Detector_type.cpp +++ b/broker/gen/model/Detector_type.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Detector_type.h b/broker/gen/model/Detector_type.h index 1cbc19b6..45cd1b27 100644 --- a/broker/gen/model/Detector_type.h +++ b/broker/gen/model/Detector_type.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Error_message.cpp b/broker/gen/model/Error_message.cpp index cec09d32..9884c641 100644 --- a/broker/gen/model/Error_message.cpp +++ b/broker/gen/model/Error_message.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Error_message.h b/broker/gen/model/Error_message.h index 95424e5c..d5affbd6 100644 --- a/broker/gen/model/Error_message.h +++ b/broker/gen/model/Error_message.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/File_writer_settings.cpp b/broker/gen/model/File_writer_settings.cpp new file mode 100644 index 00000000..df0c088a --- /dev/null +++ b/broker/gen/model/File_writer_settings.cpp @@ -0,0 +1,154 @@ +/** +* Jungfraujoch +* API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. +* +* The version of the OpenAPI document: 1.0.0-rc.31 +* Contact: filip.leonarski@psi.ch +* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ + + +#include "File_writer_settings.h" +#include "Helpers.h" + +#include + +namespace org::openapitools::server::model +{ + +File_writer_settings::File_writer_settings() +{ + m_Overwrite = false; + m_OverwriteIsSet = false; + m_File_writer_version = 2L; + m_File_writer_versionIsSet = false; + +} + +void File_writer_settings::validate() const +{ + std::stringstream msg; + if (!validate(msg)) + { + throw org::openapitools::server::helpers::ValidationException(msg.str()); + } +} + +bool File_writer_settings::validate(std::stringstream& msg) const +{ + return validate(msg, ""); +} + +bool File_writer_settings::validate(std::stringstream& msg, const std::string& pathPrefix) const +{ + bool success = true; + const std::string _pathPrefix = pathPrefix.empty() ? "File_writer_settings" : pathPrefix; + + + if (fileWriterVersionIsSet()) + { + const int64_t& value = m_File_writer_version; + const std::string currentValuePath = _pathPrefix + ".fileWriterVersion"; + + + if (value < 1ll) + { + success = false; + msg << currentValuePath << ": must be greater than or equal to 1;"; + } + if (value > 2ll) + { + success = false; + msg << currentValuePath << ": must be less than or equal to 2;"; + } + + } + + return success; +} + +bool File_writer_settings::operator==(const File_writer_settings& rhs) const +{ + return + + + + ((!overwriteIsSet() && !rhs.overwriteIsSet()) || (overwriteIsSet() && rhs.overwriteIsSet() && isOverwrite() == rhs.isOverwrite())) && + + + ((!fileWriterVersionIsSet() && !rhs.fileWriterVersionIsSet()) || (fileWriterVersionIsSet() && rhs.fileWriterVersionIsSet() && getFileWriterVersion() == rhs.getFileWriterVersion())) + + ; +} + +bool File_writer_settings::operator!=(const File_writer_settings& rhs) const +{ + return !(*this == rhs); +} + +void to_json(nlohmann::json& j, const File_writer_settings& o) +{ + j = nlohmann::json::object(); + if(o.overwriteIsSet()) + j["overwrite"] = o.m_Overwrite; + if(o.fileWriterVersionIsSet()) + j["file_writer_version"] = o.m_File_writer_version; + +} + +void from_json(const nlohmann::json& j, File_writer_settings& o) +{ + if(j.find("overwrite") != j.end()) + { + j.at("overwrite").get_to(o.m_Overwrite); + o.m_OverwriteIsSet = true; + } + if(j.find("file_writer_version") != j.end()) + { + j.at("file_writer_version").get_to(o.m_File_writer_version); + o.m_File_writer_versionIsSet = true; + } + +} + +bool File_writer_settings::isOverwrite() const +{ + return m_Overwrite; +} +void File_writer_settings::setOverwrite(bool const value) +{ + m_Overwrite = value; + m_OverwriteIsSet = true; +} +bool File_writer_settings::overwriteIsSet() const +{ + return m_OverwriteIsSet; +} +void File_writer_settings::unsetOverwrite() +{ + m_OverwriteIsSet = false; +} +int64_t File_writer_settings::getFileWriterVersion() const +{ + return m_File_writer_version; +} +void File_writer_settings::setFileWriterVersion(int64_t const value) +{ + m_File_writer_version = value; + m_File_writer_versionIsSet = true; +} +bool File_writer_settings::fileWriterVersionIsSet() const +{ + return m_File_writer_versionIsSet; +} +void File_writer_settings::unsetFile_writer_version() +{ + m_File_writer_versionIsSet = false; +} + + +} // namespace org::openapitools::server::model + diff --git a/broker/gen/model/File_writer_settings.h b/broker/gen/model/File_writer_settings.h new file mode 100644 index 00000000..8e86c770 --- /dev/null +++ b/broker/gen/model/File_writer_settings.h @@ -0,0 +1,87 @@ +/** +* Jungfraujoch +* API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. +* +* The version of the OpenAPI document: 1.0.0-rc.31 +* Contact: filip.leonarski@psi.ch +* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +/* + * File_writer_settings.h + * + * + */ + +#ifndef File_writer_settings_H_ +#define File_writer_settings_H_ + + +#include + +namespace org::openapitools::server::model +{ + +/// +/// +/// +class File_writer_settings +{ +public: + File_writer_settings(); + virtual ~File_writer_settings() = default; + + + /// + /// Validate the current data in the model. Throws a ValidationException on failure. + /// + void validate() const; + + /// + /// Validate the current data in the model. Returns false on error and writes an error + /// message into the given stringstream. + /// + bool validate(std::stringstream& msg) const; + + /// + /// Helper overload for validate. Used when one model stores another model and calls it's validate. + /// Not meant to be called outside that case. + /// + bool validate(std::stringstream& msg, const std::string& pathPrefix) const; + + bool operator==(const File_writer_settings& rhs) const; + bool operator!=(const File_writer_settings& rhs) const; + + ///////////////////////////////////////////// + /// File_writer_settings members + + /// + /// Inform jfjoch_write to overwrite existing files. Otherwise files would be saved with .h5.{timestamp}.tmp suffix. + /// + bool isOverwrite() const; + void setOverwrite(bool const value); + bool overwriteIsSet() const; + void unsetOverwrite(); + /// + /// version 1 - legacy format with soft links to data files in the master file; necessary for DECTRIS Albula 4.0 and DECTRIS Neggia version 2 - newer format with virtual dataset linking data files in the master file, also includes better metadata handling + /// + int64_t getFileWriterVersion() const; + void setFileWriterVersion(int64_t const value); + bool fileWriterVersionIsSet() const; + void unsetFile_writer_version(); + + friend void to_json(nlohmann::json& j, const File_writer_settings& o); + friend void from_json(const nlohmann::json& j, File_writer_settings& o); +protected: + bool m_Overwrite; + bool m_OverwriteIsSet; + int64_t m_File_writer_version; + bool m_File_writer_versionIsSet; + +}; + +} // namespace org::openapitools::server::model + +#endif /* File_writer_settings_H_ */ diff --git a/broker/gen/model/Fpga_status_inner.cpp b/broker/gen/model/Fpga_status_inner.cpp index acf84cac..681459d4 100644 --- a/broker/gen/model/Fpga_status_inner.cpp +++ b/broker/gen/model/Fpga_status_inner.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -33,6 +33,8 @@ Fpga_status_inner::Fpga_status_inner() m_Packets_udp = 0L; m_Packets_sls = 0L; m_Idle = false; + m_Pcie_link_speed = 0L; + m_Pcie_link_width = 0L; } @@ -55,7 +57,7 @@ bool Fpga_status_inner::validate(std::stringstream& msg, const std::string& path bool success = true; const std::string _pathPrefix = pathPrefix.empty() ? "Fpga_status_inner" : pathPrefix; - + return success; } @@ -98,6 +100,12 @@ bool Fpga_status_inner::operator==(const Fpga_status_inner& rhs) const && (isIdle() == rhs.isIdle()) + && + + (getPcieLinkSpeed() == rhs.getPcieLinkSpeed()) + && + + (getPcieLinkWidth() == rhs.getPcieLinkWidth()) ; @@ -123,6 +131,8 @@ void to_json(nlohmann::json& j, const Fpga_status_inner& o) j["packets_udp"] = o.m_Packets_udp; j["packets_sls"] = o.m_Packets_sls; j["idle"] = o.m_Idle; + j["pcie_link_speed"] = o.m_Pcie_link_speed; + j["pcie_link_width"] = o.m_Pcie_link_width; } @@ -140,6 +150,8 @@ void from_json(const nlohmann::json& j, Fpga_status_inner& o) j.at("packets_udp").get_to(o.m_Packets_udp); j.at("packets_sls").get_to(o.m_Packets_sls); j.at("idle").get_to(o.m_Idle); + j.at("pcie_link_speed").get_to(o.m_Pcie_link_speed); + j.at("pcie_link_width").get_to(o.m_Pcie_link_width); } @@ -239,6 +251,22 @@ void Fpga_status_inner::setIdle(bool const value) { m_Idle = value; } +int64_t Fpga_status_inner::getPcieLinkSpeed() const +{ + return m_Pcie_link_speed; +} +void Fpga_status_inner::setPcieLinkSpeed(int64_t const value) +{ + m_Pcie_link_speed = value; +} +int64_t Fpga_status_inner::getPcieLinkWidth() const +{ + return m_Pcie_link_width; +} +void Fpga_status_inner::setPcieLinkWidth(int64_t const value) +{ + m_Pcie_link_width = value; +} } // namespace org::openapitools::server::model diff --git a/broker/gen/model/Fpga_status_inner.h b/broker/gen/model/Fpga_status_inner.h index 9b3298c7..494b2780 100644 --- a/broker/gen/model/Fpga_status_inner.h +++ b/broker/gen/model/Fpga_status_inner.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -118,6 +118,16 @@ public: /// bool isIdle() const; void setIdle(bool const value); + /// + /// PCIe link speed measured by generation (expected value is 4 == PCIe Gen4) + /// + int64_t getPcieLinkSpeed() const; + void setPcieLinkSpeed(int64_t const value); + /// + /// PCIe link width (expected value is 8 == x8) + /// + int64_t getPcieLinkWidth() const; + void setPcieLinkWidth(int64_t const value); friend void to_json(nlohmann::json& j, const Fpga_status_inner& o); friend void from_json(const nlohmann::json& j, Fpga_status_inner& o); @@ -146,6 +156,10 @@ protected: bool m_Idle; + int64_t m_Pcie_link_speed; + + int64_t m_Pcie_link_width; + }; diff --git a/broker/gen/model/Helpers.cpp b/broker/gen/model/Helpers.cpp index ed7c300c..ec8e9c28 100644 --- a/broker/gen/model/Helpers.cpp +++ b/broker/gen/model/Helpers.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Helpers.h b/broker/gen/model/Helpers.h index ba017201..7f0446cf 100644 --- a/broker/gen/model/Helpers.h +++ b/broker/gen/model/Helpers.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Image_buffer_status.cpp b/broker/gen/model/Image_buffer_status.cpp new file mode 100644 index 00000000..c2ccbe78 --- /dev/null +++ b/broker/gen/model/Image_buffer_status.cpp @@ -0,0 +1,139 @@ +/** +* Jungfraujoch +* API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. +* +* The version of the OpenAPI document: 1.0.0-rc.31 +* Contact: filip.leonarski@psi.ch +* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ + + +#include "Image_buffer_status.h" +#include "Helpers.h" + +#include + +namespace org::openapitools::server::model +{ + +Image_buffer_status::Image_buffer_status() +{ + m_Total_slots = 0L; + m_Available_slots = 0L; + +} + +void Image_buffer_status::validate() const +{ + std::stringstream msg; + if (!validate(msg)) + { + throw org::openapitools::server::helpers::ValidationException(msg.str()); + } +} + +bool Image_buffer_status::validate(std::stringstream& msg) const +{ + return validate(msg, ""); +} + +bool Image_buffer_status::validate(std::stringstream& msg, const std::string& pathPrefix) const +{ + bool success = true; + const std::string _pathPrefix = pathPrefix.empty() ? "Image_buffer_status" : pathPrefix; + + + + /* Image_numbers */ { + const std::vector& value = m_Image_numbers; + const std::string currentValuePath = _pathPrefix + ".imageNumbers"; + + + { // Recursive validation of array elements + const std::string oldValuePath = currentValuePath; + int i = 0; + for (const int64_t& value : value) + { + const std::string currentValuePath = oldValuePath + "[" + std::to_string(i) + "]"; + + + + i++; + } + } + + } + + return success; +} + +bool Image_buffer_status::operator==(const Image_buffer_status& rhs) const +{ + return + + + (getImageNumbers() == rhs.getImageNumbers()) + && + + (getTotalSlots() == rhs.getTotalSlots()) + && + + (getAvailableSlots() == rhs.getAvailableSlots()) + + + ; +} + +bool Image_buffer_status::operator!=(const Image_buffer_status& rhs) const +{ + return !(*this == rhs); +} + +void to_json(nlohmann::json& j, const Image_buffer_status& o) +{ + j = nlohmann::json::object(); + j["image_numbers"] = o.m_Image_numbers; + j["total_slots"] = o.m_Total_slots; + j["available_slots"] = o.m_Available_slots; + +} + +void from_json(const nlohmann::json& j, Image_buffer_status& o) +{ + j.at("image_numbers").get_to(o.m_Image_numbers); + j.at("total_slots").get_to(o.m_Total_slots); + j.at("available_slots").get_to(o.m_Available_slots); + +} + +std::vector Image_buffer_status::getImageNumbers() const +{ + return m_Image_numbers; +} +void Image_buffer_status::setImageNumbers(std::vector const value) +{ + m_Image_numbers = value; +} +int64_t Image_buffer_status::getTotalSlots() const +{ + return m_Total_slots; +} +void Image_buffer_status::setTotalSlots(int64_t const value) +{ + m_Total_slots = value; +} +int64_t Image_buffer_status::getAvailableSlots() const +{ + return m_Available_slots; +} +void Image_buffer_status::setAvailableSlots(int64_t const value) +{ + m_Available_slots = value; +} + + +} // namespace org::openapitools::server::model + diff --git a/broker/gen/model/Image_buffer_status.h b/broker/gen/model/Image_buffer_status.h new file mode 100644 index 00000000..ad12f6a5 --- /dev/null +++ b/broker/gen/model/Image_buffer_status.h @@ -0,0 +1,91 @@ +/** +* Jungfraujoch +* API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. +* +* The version of the OpenAPI document: 1.0.0-rc.31 +* Contact: filip.leonarski@psi.ch +* +* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). +* https://openapi-generator.tech +* Do not edit the class manually. +*/ +/* + * Image_buffer_status.h + * + * + */ + +#ifndef Image_buffer_status_H_ +#define Image_buffer_status_H_ + + +#include +#include + +namespace org::openapitools::server::model +{ + +/// +/// +/// +class Image_buffer_status +{ +public: + Image_buffer_status(); + virtual ~Image_buffer_status() = default; + + + /// + /// Validate the current data in the model. Throws a ValidationException on failure. + /// + void validate() const; + + /// + /// Validate the current data in the model. Returns false on error and writes an error + /// message into the given stringstream. + /// + bool validate(std::stringstream& msg) const; + + /// + /// Helper overload for validate. Used when one model stores another model and calls it's validate. + /// Not meant to be called outside that case. + /// + bool validate(std::stringstream& msg, const std::string& pathPrefix) const; + + bool operator==(const Image_buffer_status& rhs) const; + bool operator!=(const Image_buffer_status& rhs) const; + + ///////////////////////////////////////////// + /// Image_buffer_status members + + /// + /// Image numbers currently present in the buffer. + /// + std::vector getImageNumbers() const; + void setImageNumbers(std::vector const value); + /// + /// Number of slots in the image buffer. This number, compared to number of images in data collection and frame rate will determine \"retention\" rate of the image buffer. + /// + int64_t getTotalSlots() const; + void setTotalSlots(int64_t const value); + /// + /// Slots available for the data collection + /// + int64_t getAvailableSlots() const; + void setAvailableSlots(int64_t const value); + + friend void to_json(nlohmann::json& j, const Image_buffer_status& o); + friend void from_json(const nlohmann::json& j, Image_buffer_status& o); +protected: + std::vector m_Image_numbers; + + int64_t m_Total_slots; + + int64_t m_Available_slots; + + +}; + +} // namespace org::openapitools::server::model + +#endif /* Image_buffer_status_H_ */ diff --git a/broker/gen/model/Image_format_settings.cpp b/broker/gen/model/Image_format_settings.cpp index 2e510fcd..95c56539 100644 --- a/broker/gen/model/Image_format_settings.cpp +++ b/broker/gen/model/Image_format_settings.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Image_format_settings.h b/broker/gen/model/Image_format_settings.h index 4431ae85..efb167cb 100644 --- a/broker/gen/model/Image_format_settings.h +++ b/broker/gen/model/Image_format_settings.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Image_pusher_type.cpp b/broker/gen/model/Image_pusher_type.cpp index d52775f7..1b7d82aa 100644 --- a/broker/gen/model/Image_pusher_type.cpp +++ b/broker/gen/model/Image_pusher_type.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Image_pusher_type.h b/broker/gen/model/Image_pusher_type.h index ab832f76..e30b6a60 100644 --- a/broker/gen/model/Image_pusher_type.h +++ b/broker/gen/model/Image_pusher_type.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Instrument_metadata.cpp b/broker/gen/model/Instrument_metadata.cpp index 74bc4215..3a924b92 100644 --- a/broker/gen/model/Instrument_metadata.cpp +++ b/broker/gen/model/Instrument_metadata.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Instrument_metadata.h b/broker/gen/model/Instrument_metadata.h index aa994f2c..426fb2eb 100644 --- a/broker/gen/model/Instrument_metadata.h +++ b/broker/gen/model/Instrument_metadata.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Jfjoch_settings.cpp b/broker/gen/model/Jfjoch_settings.cpp index 49a8edb8..0183a542 100644 --- a/broker/gen/model/Jfjoch_settings.cpp +++ b/broker/gen/model/Jfjoch_settings.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -24,6 +24,7 @@ Jfjoch_settings::Jfjoch_settings() m_PcieIsSet = false; m_ZeromqIsSet = false; m_InstrumentIsSet = false; + m_File_writerIsSet = false; m_Detector_settingsIsSet = false; m_Azim_intIsSet = false; m_Image_formatIsSet = false; @@ -79,7 +80,7 @@ bool Jfjoch_settings::validate(std::stringstream& msg, const std::string& pathPr } } - + /* Detector */ { const std::vector& value = m_Detector; @@ -151,6 +152,9 @@ bool Jfjoch_settings::operator==(const Jfjoch_settings& rhs) const ((!instrumentIsSet() && !rhs.instrumentIsSet()) || (instrumentIsSet() && rhs.instrumentIsSet() && getInstrument() == rhs.getInstrument())) && + + ((!fileWriterIsSet() && !rhs.fileWriterIsSet()) || (fileWriterIsSet() && rhs.fileWriterIsSet() && getFileWriter() == rhs.getFileWriter())) && + (getDetector() == rhs.getDetector()) && @@ -201,6 +205,8 @@ void to_json(nlohmann::json& j, const Jfjoch_settings& o) j["zeromq"] = o.m_Zeromq; if(o.instrumentIsSet()) j["instrument"] = o.m_Instrument; + if(o.fileWriterIsSet()) + j["file_writer"] = o.m_File_writer; j["detector"] = o.m_Detector; if(o.detectorSettingsIsSet()) j["detector_settings"] = o.m_Detector_settings; @@ -240,6 +246,11 @@ void from_json(const nlohmann::json& j, Jfjoch_settings& o) j.at("instrument").get_to(o.m_Instrument); o.m_InstrumentIsSet = true; } + if(j.find("file_writer") != j.end()) + { + j.at("file_writer").get_to(o.m_File_writer); + o.m_File_writerIsSet = true; + } j.at("detector").get_to(o.m_Detector); if(j.find("detector_settings") != j.end()) { @@ -337,6 +348,23 @@ void Jfjoch_settings::unsetInstrument() { m_InstrumentIsSet = false; } +org::openapitools::server::model::File_writer_settings Jfjoch_settings::getFileWriter() const +{ + return m_File_writer; +} +void Jfjoch_settings::setFileWriter(org::openapitools::server::model::File_writer_settings const& value) +{ + m_File_writer = value; + m_File_writerIsSet = true; +} +bool Jfjoch_settings::fileWriterIsSet() const +{ + return m_File_writerIsSet; +} +void Jfjoch_settings::unsetFile_writer() +{ + m_File_writerIsSet = false; +} std::vector Jfjoch_settings::getDetector() const { return m_Detector; diff --git a/broker/gen/model/Jfjoch_settings.h b/broker/gen/model/Jfjoch_settings.h index 9b37e4cb..8ec8300e 100644 --- a/broker/gen/model/Jfjoch_settings.h +++ b/broker/gen/model/Jfjoch_settings.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -19,18 +19,19 @@ #define Jfjoch_settings_H_ -#include "Detector.h" #include "Zeromq_preview_settings.h" -#include "Image_pusher_type.h" #include "Pcie_devices_inner.h" #include -#include "Zeromq_settings.h" +#include "File_writer_settings.h" #include "Azim_int_settings.h" #include "Image_format_settings.h" #include "Zeromq_metadata_settings.h" #include "Detector_settings.h" -#include "Instrument_metadata.h" #include +#include "Detector.h" +#include "Image_pusher_type.h" +#include "Zeromq_settings.h" +#include "Instrument_metadata.h" #include namespace org::openapitools::server::model @@ -93,6 +94,13 @@ public: /// /// /// + org::openapitools::server::model::File_writer_settings getFileWriter() const; + void setFileWriter(org::openapitools::server::model::File_writer_settings const& value); + bool fileWriterIsSet() const; + void unsetFile_writer(); + /// + /// + /// std::vector getDetector() const; void setDetector(std::vector const& value); /// @@ -171,6 +179,8 @@ protected: bool m_ZeromqIsSet; org::openapitools::server::model::Instrument_metadata m_Instrument; bool m_InstrumentIsSet; + org::openapitools::server::model::File_writer_settings m_File_writer; + bool m_File_writerIsSet; std::vector m_Detector; org::openapitools::server::model::Detector_settings m_Detector_settings; diff --git a/broker/gen/model/Jfjoch_statistics.cpp b/broker/gen/model/Jfjoch_statistics.cpp index 4dc0f323..4774664a 100644 --- a/broker/gen/model/Jfjoch_statistics.cpp +++ b/broker/gen/model/Jfjoch_statistics.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -26,6 +26,7 @@ Jfjoch_statistics::Jfjoch_statistics() m_Detector_settingsIsSet = false; m_Image_format_settingsIsSet = false; m_Instrument_metadataIsSet = false; + m_File_writer_settingsIsSet = false; m_Data_processing_settingsIsSet = false; m_MeasurementIsSet = false; m_BrokerIsSet = false; @@ -57,7 +58,7 @@ bool Jfjoch_statistics::validate(std::stringstream& msg, const std::string& path bool success = true; const std::string _pathPrefix = pathPrefix.empty() ? "Jfjoch_statistics" : pathPrefix; - + if (fpgaIsSet()) { const std::vector& value = m_Fpga; @@ -124,6 +125,9 @@ bool Jfjoch_statistics::operator==(const Jfjoch_statistics& rhs) const ((!instrumentMetadataIsSet() && !rhs.instrumentMetadataIsSet()) || (instrumentMetadataIsSet() && rhs.instrumentMetadataIsSet() && getInstrumentMetadata() == rhs.getInstrumentMetadata())) && + ((!fileWriterSettingsIsSet() && !rhs.fileWriterSettingsIsSet()) || (fileWriterSettingsIsSet() && rhs.fileWriterSettingsIsSet() && getFileWriterSettings() == rhs.getFileWriterSettings())) && + + ((!dataProcessingSettingsIsSet() && !rhs.dataProcessingSettingsIsSet()) || (dataProcessingSettingsIsSet() && rhs.dataProcessingSettingsIsSet() && getDataProcessingSettings() == rhs.getDataProcessingSettings())) && @@ -171,6 +175,8 @@ void to_json(nlohmann::json& j, const Jfjoch_statistics& o) j["image_format_settings"] = o.m_Image_format_settings; if(o.instrumentMetadataIsSet()) j["instrument_metadata"] = o.m_Instrument_metadata; + if(o.fileWriterSettingsIsSet()) + j["file_writer_settings"] = o.m_File_writer_settings; if(o.dataProcessingSettingsIsSet()) j["data_processing_settings"] = o.m_Data_processing_settings; if(o.measurementIsSet()) @@ -219,6 +225,11 @@ void from_json(const nlohmann::json& j, Jfjoch_statistics& o) j.at("instrument_metadata").get_to(o.m_Instrument_metadata); o.m_Instrument_metadataIsSet = true; } + if(j.find("file_writer_settings") != j.end()) + { + j.at("file_writer_settings").get_to(o.m_File_writer_settings); + o.m_File_writer_settingsIsSet = true; + } if(j.find("data_processing_settings") != j.end()) { j.at("data_processing_settings").get_to(o.m_Data_processing_settings); @@ -352,6 +363,23 @@ void Jfjoch_statistics::unsetInstrument_metadata() { m_Instrument_metadataIsSet = false; } +org::openapitools::server::model::File_writer_settings Jfjoch_statistics::getFileWriterSettings() const +{ + return m_File_writer_settings; +} +void Jfjoch_statistics::setFileWriterSettings(org::openapitools::server::model::File_writer_settings const& value) +{ + m_File_writer_settings = value; + m_File_writer_settingsIsSet = true; +} +bool Jfjoch_statistics::fileWriterSettingsIsSet() const +{ + return m_File_writer_settingsIsSet; +} +void Jfjoch_statistics::unsetFile_writer_settings() +{ + m_File_writer_settingsIsSet = false; +} org::openapitools::server::model::Spot_finding_settings Jfjoch_statistics::getDataProcessingSettings() const { return m_Data_processing_settings; diff --git a/broker/gen/model/Jfjoch_statistics.h b/broker/gen/model/Jfjoch_statistics.h index c3afa82e..8680c8e3 100644 --- a/broker/gen/model/Jfjoch_statistics.h +++ b/broker/gen/model/Jfjoch_statistics.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -26,6 +26,7 @@ #include "Spot_finding_settings.h" #include "Zeromq_preview_settings.h" #include "Detector_list.h" +#include "File_writer_settings.h" #include "Image_format_settings.h" #include "Zeromq_metadata_settings.h" #include "Detector_settings.h" @@ -110,6 +111,13 @@ public: /// /// /// + org::openapitools::server::model::File_writer_settings getFileWriterSettings() const; + void setFileWriterSettings(org::openapitools::server::model::File_writer_settings const& value); + bool fileWriterSettingsIsSet() const; + void unsetFile_writer_settings(); + /// + /// + /// org::openapitools::server::model::Spot_finding_settings getDataProcessingSettings() const; void setDataProcessingSettings(org::openapitools::server::model::Spot_finding_settings const& value); bool dataProcessingSettingsIsSet() const; @@ -184,6 +192,8 @@ protected: bool m_Image_format_settingsIsSet; org::openapitools::server::model::Instrument_metadata m_Instrument_metadata; bool m_Instrument_metadataIsSet; + org::openapitools::server::model::File_writer_settings m_File_writer_settings; + bool m_File_writer_settingsIsSet; org::openapitools::server::model::Spot_finding_settings m_Data_processing_settings; bool m_Data_processing_settingsIsSet; org::openapitools::server::model::Measurement_statistics m_Measurement; diff --git a/broker/gen/model/Measurement_statistics.cpp b/broker/gen/model/Measurement_statistics.cpp index ed95ced0..f2da9c83 100644 --- a/broker/gen/model/Measurement_statistics.cpp +++ b/broker/gen/model/Measurement_statistics.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -57,6 +57,14 @@ Measurement_statistics::Measurement_statistics() m_Bkg_estimateIsSet = false; m_Unit_cell = ""; m_Unit_cellIsSet = false; + m_Error_pixels = 0.0f; + m_Error_pixelsIsSet = false; + m_Saturated_pixels = 0.0f; + m_Saturated_pixelsIsSet = false; + m_Roi_beam_pixels = 0.0f; + m_Roi_beam_pixelsIsSet = false; + m_Roi_beam_sum = 0.0f; + m_Roi_beam_sumIsSet = false; } @@ -112,7 +120,7 @@ bool Measurement_statistics::validate(std::stringstream& msg, const std::string& } } - + return success; } @@ -173,7 +181,19 @@ bool Measurement_statistics::operator==(const Measurement_statistics& rhs) const ((!bkgEstimateIsSet() && !rhs.bkgEstimateIsSet()) || (bkgEstimateIsSet() && rhs.bkgEstimateIsSet() && getBkgEstimate() == rhs.getBkgEstimate())) && - ((!unitCellIsSet() && !rhs.unitCellIsSet()) || (unitCellIsSet() && rhs.unitCellIsSet() && getUnitCell() == rhs.getUnitCell())) + ((!unitCellIsSet() && !rhs.unitCellIsSet()) || (unitCellIsSet() && rhs.unitCellIsSet() && getUnitCell() == rhs.getUnitCell())) && + + + ((!errorPixelsIsSet() && !rhs.errorPixelsIsSet()) || (errorPixelsIsSet() && rhs.errorPixelsIsSet() && getErrorPixels() == rhs.getErrorPixels())) && + + + ((!saturatedPixelsIsSet() && !rhs.saturatedPixelsIsSet()) || (saturatedPixelsIsSet() && rhs.saturatedPixelsIsSet() && getSaturatedPixels() == rhs.getSaturatedPixels())) && + + + ((!roiBeamPixelsIsSet() && !rhs.roiBeamPixelsIsSet()) || (roiBeamPixelsIsSet() && rhs.roiBeamPixelsIsSet() && getRoiBeamPixels() == rhs.getRoiBeamPixels())) && + + + ((!roiBeamSumIsSet() && !rhs.roiBeamSumIsSet()) || (roiBeamSumIsSet() && rhs.roiBeamSumIsSet() && getRoiBeamSum() == rhs.getRoiBeamSum())) ; } @@ -222,6 +242,14 @@ void to_json(nlohmann::json& j, const Measurement_statistics& o) j["bkg_estimate"] = o.m_Bkg_estimate; if(o.unitCellIsSet()) j["unit_cell"] = o.m_Unit_cell; + if(o.errorPixelsIsSet()) + j["error_pixels"] = o.m_Error_pixels; + if(o.saturatedPixelsIsSet()) + j["saturated_pixels"] = o.m_Saturated_pixels; + if(o.roiBeamPixelsIsSet()) + j["roi_beam_pixels"] = o.m_Roi_beam_pixels; + if(o.roiBeamSumIsSet()) + j["roi_beam_sum"] = o.m_Roi_beam_sum; } @@ -317,6 +345,26 @@ void from_json(const nlohmann::json& j, Measurement_statistics& o) j.at("unit_cell").get_to(o.m_Unit_cell); o.m_Unit_cellIsSet = true; } + if(j.find("error_pixels") != j.end()) + { + j.at("error_pixels").get_to(o.m_Error_pixels); + o.m_Error_pixelsIsSet = true; + } + if(j.find("saturated_pixels") != j.end()) + { + j.at("saturated_pixels").get_to(o.m_Saturated_pixels); + o.m_Saturated_pixelsIsSet = true; + } + if(j.find("roi_beam_pixels") != j.end()) + { + j.at("roi_beam_pixels").get_to(o.m_Roi_beam_pixels); + o.m_Roi_beam_pixelsIsSet = true; + } + if(j.find("roi_beam_sum") != j.end()) + { + j.at("roi_beam_sum").get_to(o.m_Roi_beam_sum); + o.m_Roi_beam_sumIsSet = true; + } } @@ -626,6 +674,74 @@ void Measurement_statistics::unsetUnit_cell() { m_Unit_cellIsSet = false; } +float Measurement_statistics::getErrorPixels() const +{ + return m_Error_pixels; +} +void Measurement_statistics::setErrorPixels(float const value) +{ + m_Error_pixels = value; + m_Error_pixelsIsSet = true; +} +bool Measurement_statistics::errorPixelsIsSet() const +{ + return m_Error_pixelsIsSet; +} +void Measurement_statistics::unsetError_pixels() +{ + m_Error_pixelsIsSet = false; +} +float Measurement_statistics::getSaturatedPixels() const +{ + return m_Saturated_pixels; +} +void Measurement_statistics::setSaturatedPixels(float const value) +{ + m_Saturated_pixels = value; + m_Saturated_pixelsIsSet = true; +} +bool Measurement_statistics::saturatedPixelsIsSet() const +{ + return m_Saturated_pixelsIsSet; +} +void Measurement_statistics::unsetSaturated_pixels() +{ + m_Saturated_pixelsIsSet = false; +} +float Measurement_statistics::getRoiBeamPixels() const +{ + return m_Roi_beam_pixels; +} +void Measurement_statistics::setRoiBeamPixels(float const value) +{ + m_Roi_beam_pixels = value; + m_Roi_beam_pixelsIsSet = true; +} +bool Measurement_statistics::roiBeamPixelsIsSet() const +{ + return m_Roi_beam_pixelsIsSet; +} +void Measurement_statistics::unsetRoi_beam_pixels() +{ + m_Roi_beam_pixelsIsSet = false; +} +float Measurement_statistics::getRoiBeamSum() const +{ + return m_Roi_beam_sum; +} +void Measurement_statistics::setRoiBeamSum(float const value) +{ + m_Roi_beam_sum = value; + m_Roi_beam_sumIsSet = true; +} +bool Measurement_statistics::roiBeamSumIsSet() const +{ + return m_Roi_beam_sumIsSet; +} +void Measurement_statistics::unsetRoi_beam_sum() +{ + m_Roi_beam_sumIsSet = false; +} } // namespace org::openapitools::server::model diff --git a/broker/gen/model/Measurement_statistics.h b/broker/gen/model/Measurement_statistics.h index 7877bf2d..84f7b637 100644 --- a/broker/gen/model/Measurement_statistics.h +++ b/broker/gen/model/Measurement_statistics.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -184,6 +184,34 @@ public: void setUnitCell(std::string const& value); bool unitCellIsSet() const; void unsetUnit_cell(); + /// + /// Moving average of 1000 images counting number of error pixels on the detector + /// + float getErrorPixels() const; + void setErrorPixels(float const value); + bool errorPixelsIsSet() const; + void unsetError_pixels(); + /// + /// Moving average of 1000 images counting number of saturated pixels on the detector + /// + float getSaturatedPixels() const; + void setSaturatedPixels(float const value); + bool saturatedPixelsIsSet() const; + void unsetSaturated_pixels(); + /// + /// If there is an ROI defined with name \"beam\", this number will hold moving average of 1000 images for number of valid pixels within this ROI + /// + float getRoiBeamPixels() const; + void setRoiBeamPixels(float const value); + bool roiBeamPixelsIsSet() const; + void unsetRoi_beam_pixels(); + /// + /// If there is an ROI defined with name \"beam\", this number will hold moving average of 1000 images for sum of valid pixels within this ROI + /// + float getRoiBeamSum() const; + void setRoiBeamSum(float const value); + bool roiBeamSumIsSet() const; + void unsetRoi_beam_sum(); friend void to_json(nlohmann::json& j, const Measurement_statistics& o); friend void from_json(const nlohmann::json& j, Measurement_statistics& o); @@ -224,6 +252,14 @@ protected: bool m_Bkg_estimateIsSet; std::string m_Unit_cell; bool m_Unit_cellIsSet; + float m_Error_pixels; + bool m_Error_pixelsIsSet; + float m_Saturated_pixels; + bool m_Saturated_pixelsIsSet; + float m_Roi_beam_pixels; + bool m_Roi_beam_pixelsIsSet; + float m_Roi_beam_sum; + bool m_Roi_beam_sumIsSet; }; diff --git a/broker/gen/model/Pcie_devices_inner.cpp b/broker/gen/model/Pcie_devices_inner.cpp index a0f85faa..349e1bd2 100644 --- a/broker/gen/model/Pcie_devices_inner.cpp +++ b/broker/gen/model/Pcie_devices_inner.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Pcie_devices_inner.h b/broker/gen/model/Pcie_devices_inner.h index 16b8ddc4..5a3899c8 100644 --- a/broker/gen/model/Pcie_devices_inner.h +++ b/broker/gen/model/Pcie_devices_inner.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Pixel_mask_statistics.cpp b/broker/gen/model/Pixel_mask_statistics.cpp index 78b45a83..15bde00c 100644 --- a/broker/gen/model/Pixel_mask_statistics.cpp +++ b/broker/gen/model/Pixel_mask_statistics.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Pixel_mask_statistics.h b/broker/gen/model/Pixel_mask_statistics.h index 578c0a35..f76e0d3c 100644 --- a/broker/gen/model/Pixel_mask_statistics.h +++ b/broker/gen/model/Pixel_mask_statistics.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Plot.cpp b/broker/gen/model/Plot.cpp index e4a71cb5..55d360f8 100644 --- a/broker/gen/model/Plot.cpp +++ b/broker/gen/model/Plot.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Plot.h b/broker/gen/model/Plot.h index bce4d875..9b7ea575 100644 --- a/broker/gen/model/Plot.h +++ b/broker/gen/model/Plot.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Plots.cpp b/broker/gen/model/Plots.cpp index 6a325730..406f2b9e 100644 --- a/broker/gen/model/Plots.cpp +++ b/broker/gen/model/Plots.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Plots.h b/broker/gen/model/Plots.h index 21cebddc..91975ef8 100644 --- a/broker/gen/model/Plots.h +++ b/broker/gen/model/Plots.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Preview_settings.cpp b/broker/gen/model/Preview_settings.cpp index e93444df..fae4abcf 100644 --- a/broker/gen/model/Preview_settings.cpp +++ b/broker/gen/model/Preview_settings.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Preview_settings.h b/broker/gen/model/Preview_settings.h index 832ee990..a535d000 100644 --- a/broker/gen/model/Preview_settings.h +++ b/broker/gen/model/Preview_settings.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Roi_box.cpp b/broker/gen/model/Roi_box.cpp index 695ecbe5..f4c998e4 100644 --- a/broker/gen/model/Roi_box.cpp +++ b/broker/gen/model/Roi_box.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Roi_box.h b/broker/gen/model/Roi_box.h index 2e52119a..a67d7fdf 100644 --- a/broker/gen/model/Roi_box.h +++ b/broker/gen/model/Roi_box.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Roi_box_list.cpp b/broker/gen/model/Roi_box_list.cpp index 5eb7302d..a42fb4c9 100644 --- a/broker/gen/model/Roi_box_list.cpp +++ b/broker/gen/model/Roi_box_list.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Roi_box_list.h b/broker/gen/model/Roi_box_list.h index 977e32d9..ccb2dc7d 100644 --- a/broker/gen/model/Roi_box_list.h +++ b/broker/gen/model/Roi_box_list.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Roi_circle.cpp b/broker/gen/model/Roi_circle.cpp index edb7e7ce..44d656f7 100644 --- a/broker/gen/model/Roi_circle.cpp +++ b/broker/gen/model/Roi_circle.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Roi_circle.h b/broker/gen/model/Roi_circle.h index 24f24f5b..869b05d9 100644 --- a/broker/gen/model/Roi_circle.h +++ b/broker/gen/model/Roi_circle.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Roi_circle_list.cpp b/broker/gen/model/Roi_circle_list.cpp index d7b2c743..a099a118 100644 --- a/broker/gen/model/Roi_circle_list.cpp +++ b/broker/gen/model/Roi_circle_list.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Roi_circle_list.h b/broker/gen/model/Roi_circle_list.h index 073bd359..83675263 100644 --- a/broker/gen/model/Roi_circle_list.h +++ b/broker/gen/model/Roi_circle_list.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Roi_definitions.cpp b/broker/gen/model/Roi_definitions.cpp index ca8dd469..240f84e2 100644 --- a/broker/gen/model/Roi_definitions.cpp +++ b/broker/gen/model/Roi_definitions.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Roi_definitions.h b/broker/gen/model/Roi_definitions.h index bde2a61d..a635be8a 100644 --- a/broker/gen/model/Roi_definitions.h +++ b/broker/gen/model/Roi_definitions.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Rotation_axis.cpp b/broker/gen/model/Rotation_axis.cpp index d6a40c58..f85391ce 100644 --- a/broker/gen/model/Rotation_axis.cpp +++ b/broker/gen/model/Rotation_axis.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Rotation_axis.h b/broker/gen/model/Rotation_axis.h index 2c7765de..78ac3292 100644 --- a/broker/gen/model/Rotation_axis.h +++ b/broker/gen/model/Rotation_axis.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Spot_finding_settings.cpp b/broker/gen/model/Spot_finding_settings.cpp index 657d848f..26fbceeb 100644 --- a/broker/gen/model/Spot_finding_settings.cpp +++ b/broker/gen/model/Spot_finding_settings.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Spot_finding_settings.h b/broker/gen/model/Spot_finding_settings.h index c91a5347..2fa5759b 100644 --- a/broker/gen/model/Spot_finding_settings.h +++ b/broker/gen/model/Spot_finding_settings.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Standard_detector_geometry.cpp b/broker/gen/model/Standard_detector_geometry.cpp index 07b285f2..d1f6f151 100644 --- a/broker/gen/model/Standard_detector_geometry.cpp +++ b/broker/gen/model/Standard_detector_geometry.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Standard_detector_geometry.h b/broker/gen/model/Standard_detector_geometry.h index 999e3081..dab11083 100644 --- a/broker/gen/model/Standard_detector_geometry.h +++ b/broker/gen/model/Standard_detector_geometry.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Zeromq_metadata_settings.cpp b/broker/gen/model/Zeromq_metadata_settings.cpp index acefdbad..206bd591 100644 --- a/broker/gen/model/Zeromq_metadata_settings.cpp +++ b/broker/gen/model/Zeromq_metadata_settings.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Zeromq_metadata_settings.h b/broker/gen/model/Zeromq_metadata_settings.h index 14767acc..13a93ba0 100644 --- a/broker/gen/model/Zeromq_metadata_settings.h +++ b/broker/gen/model/Zeromq_metadata_settings.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Zeromq_preview_settings.cpp b/broker/gen/model/Zeromq_preview_settings.cpp index 76169483..ddcca312 100644 --- a/broker/gen/model/Zeromq_preview_settings.cpp +++ b/broker/gen/model/Zeromq_preview_settings.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Zeromq_preview_settings.h b/broker/gen/model/Zeromq_preview_settings.h index 864c72e7..03572142 100644 --- a/broker/gen/model/Zeromq_preview_settings.h +++ b/broker/gen/model/Zeromq_preview_settings.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Zeromq_settings.cpp b/broker/gen/model/Zeromq_settings.cpp index acfbaea5..78a76a6d 100644 --- a/broker/gen/model/Zeromq_settings.cpp +++ b/broker/gen/model/Zeromq_settings.cpp @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/gen/model/Zeromq_settings.h b/broker/gen/model/Zeromq_settings.h index 943f493e..f87b829a 100644 --- a/broker/gen/model/Zeromq_settings.h +++ b/broker/gen/model/Zeromq_settings.h @@ -2,7 +2,7 @@ * Jungfraujoch * API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. * -* The version of the OpenAPI document: 1.0.0-rc.30 +* The version of the OpenAPI document: 1.0.0-rc.31 * Contact: filip.leonarski@psi.ch * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/broker/jfjoch_api.yaml b/broker/jfjoch_api.yaml index 3c2acc07..fcf30dda 100644 --- a/broker/jfjoch_api.yaml +++ b/broker/jfjoch_api.yaml @@ -5,7 +5,7 @@ info: API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). Jungfraujoch is a data acquisition and analysis system for pixel array detectors, primarly PSI JUNGFRAU. Jungfraujoch uses FPGA boards to acquire data at high data rates. - version: 1.0.0-rc.30 + version: 1.0.0-rc.31 contact: name: Filip Leonarski (Paul Scherrer Institute) email: filip.leonarski@psi.ch @@ -247,7 +247,7 @@ components: type: boolean description: | Forward image calibration (at the moment pedestal and pedestal RMS for JUNGFRAU) using the ZeroMQ stream to writer. - If parameter is not provided calibration will be saved only if more than 4 images are recorded. + If parameter is not provided calibration will be saved only if more than 4 images are recorded. unit_cell: type: object description: Unit cell parameters. Necessary to run indexing. Units of angstrom and degree @@ -292,6 +292,23 @@ components: example: 90 minimum: 0 maximum: 360 + file_writer_settings: + type: object + properties: + overwrite: + type: boolean + default: false + description: | + Inform jfjoch_write to overwrite existing files. Otherwise files would be saved with .h5.{timestamp}.tmp suffix. + file_writer_version: + type: integer + format: int64 + minimum: 1 + maximum: 2 + default: 2 + description: | + version 1 - legacy format with soft links to data files in the master file; necessary for DECTRIS Albula 4.0 and DECTRIS Neggia + version 2 - newer format with virtual dataset linking data files in the master file, also includes better metadata handling pixel_mask_statistics: type: object properties: @@ -310,6 +327,29 @@ components: type: integer format: int64 minimum: 0 + image_buffer_status: + type: object + required: + - image_numbers + - total_slots + - available_slots + properties: + image_numbers: + type: array + description: Image numbers currently present in the buffer. + items: + type: integer + format: int64 + total_slots: + type: integer + format: int64 + description: | + Number of slots in the image buffer. This number, compared to number of images in data collection and + frame rate will determine "retention" rate of the image buffer. + available_slots: + type: integer + format: int64 + description: Slots available for the data collection image_format_settings: type: object required: @@ -756,6 +796,26 @@ components: format: float unit_cell: type: string + error_pixels: + type: number + format: float + description: Moving average of 1000 images counting number of error pixels on the detector + saturated_pixels: + type: number + format: float + description: Moving average of 1000 images counting number of saturated pixels on the detector + roi_beam_pixels: + type: number + format: float + description: | + If there is an ROI defined with name "beam", this number will hold moving average of 1000 images + for number of valid pixels within this ROI + roi_beam_sum: + type: number + format: float + description: | + If there is an ROI defined with name "beam", this number will hold moving average of 1000 images + for sum of valid pixels within this ROI fpga_status: type: array items: @@ -766,6 +826,7 @@ components: - base_mac_addr - eth_link_status - eth_link_count + - eth_link_speed - power_usage_W - fpga_temp_C - hbm_temp_C @@ -773,6 +834,8 @@ components: - packets_udp - idle - fw_version + - pcie_link_speed + - pcie_link_width properties: pci_dev_id: type: string @@ -805,6 +868,14 @@ components: format: int64 idle: type: boolean + pcie_link_speed: + type: integer + format: int64 + description: PCIe link speed measured by generation (expected value is 4 == PCIe Gen4) + pcie_link_width: + type: integer + format: int64 + description: PCIe link width (expected value is 8 == x8) broker_status: type: object required: @@ -919,6 +990,8 @@ components: $ref: '#/components/schemas/image_format_settings' instrument_metadata: $ref: '#/components/schemas/instrument_metadata' + file_writer_settings: + $ref: '#/components/schemas/file_writer_settings' data_processing_settings: $ref: '#/components/schemas/spot_finding_settings' measurement: @@ -1326,6 +1399,8 @@ components: $ref: '#/components/schemas/zeromq_settings' instrument: $ref: '#/components/schemas/instrument_metadata' + file_writer: + $ref: '#/components/schemas/file_writer_settings' detector: type: array minLength: 1 @@ -1593,6 +1668,43 @@ paths: application/json: schema: $ref: '#/components/schemas/detector_settings' + + /config/file_writer: + put: + summary: Change file writer settings + description: | + This can only be done when detector is `Idle`, `Error` or `Inactive` states. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/file_writer_settings' + responses: + "200": + description: Everything OK + "400": + description: Input parsing or validation error + content: + text/plain: + schema: + type: string + description: Exception error + "500": + description: Error within Jungfraujoch code - see output message. + content: + application/json: + schema: + $ref: '#/components/schemas/error_message' + get: + summary: Get file writer settings + description: Can be done anytime + responses: + "200": + description: Everything OK + content: + application/json: + schema: + $ref: '#/components/schemas/file_writer_settings' /config/instrument: put: summary: Change instrument metadata @@ -2190,6 +2302,27 @@ paths: schema: type: string description: Exception error + /plot/max_value: + get: + summary: Generate maximum pixel value plot + description: Provides maximum viable pixel value (excluding overloads and error pixels); binning is configurable and maximum of a bin is returned + parameters: + - $ref: '#/components/parameters/binning' + - $ref: '#/components/parameters/compression' + responses: + "200": + description: Response will be by default compressed with deflate algorithm, if using curl, use --compressed option. + content: + application/json: + schema: + $ref: '#/components/schemas/plots' + "400": + description: Input parsing or validation error + content: + text/plain: + schema: + type: string + description: Exception error /plot/roi_sum: get: summary: Generate ROI sum plot @@ -2317,6 +2450,27 @@ paths: schema: type: string description: Exception error + /plot/packets_received: + get: + summary: Generate plot with number of received packets per image + description: Number of collected packets per image; binning is configurable + parameters: + - $ref: '#/components/parameters/binning' + - $ref: '#/components/parameters/compression' + responses: + "200": + description: Everything OK + content: + application/json: + schema: + $ref: '#/components/schemas/plots' + "400": + description: Input parsing or validation error + content: + text/plain: + schema: + type: string + description: Exception error /plot/azim_int: get: summary: Generate radial integration profile @@ -2564,6 +2718,87 @@ paths: format: binary "404": description: No calibration recorded so far + /image_buffer/start.cbor: + get: + summary: Get Start message in CBOR format + description: Contains metadata for a dataset (e.g., experimental geometry) + responses: + "200": + description: Return start message + content: + application/cbor: + schema: + type: string + format: binary + "404": + description: No measurement so far + "500": + description: Error within Jungfraujoch code - see output message. + content: + application/json: + schema: + $ref: '#/components/schemas/error_message' + /image_buffer/image.cbor: + get: + summary: Get image message in CBOR format + description: Contains full image data and metadata. The image must come from the latest data collection. + parameters: + - in: query + name: image_number + required: false + schema: + type: integer + format: int64 + description: Image number. If omitted, the image with the highest number in the image buffer will be provided. + responses: + "200": + description: Return image message + content: + application/cbor: + schema: + type: string + format: binary + "404": + description: Image not present in the buffer - either not yet measured or already replaced by a next image. + "500": + description: Error within Jungfraujoch code - see output message. + content: + application/json: + schema: + $ref: '#/components/schemas/error_message' + /image_buffer/clear: + post: + summary: Clear image buffer + description: Turns off image buffer for the last data collection. Can be only run when Jungfraujoch is not collecting data. + responses: + "200": + description: Done + "500": + description: Error within Jungfraujoch code - see output message. + content: + application/json: + schema: + $ref: '#/components/schemas/error_message' + /image_buffer/status: + get: + summary: Get status of the image buffers + description: | + Can be run at any stage of Jungfraujoch operation, including during data collection. + The status of the image buffer is volatile during data collection - if data collection goes for more images than available buffer slots, + then image might be replaced in the buffer between calling /images and /image.cbor. + responses: + "200": + description: Done + content: + application/json: + schema: + $ref: '#/components/schemas/image_buffer_status' + "500": + description: Error within Jungfraujoch code - see output message. + content: + application/json: + schema: + $ref: '#/components/schemas/error_message' /version: get: summary: Get Jungfraujoch version of jfjoch_broker diff --git a/broker/redoc-static.html b/broker/redoc-static.html index 2393c2e9..be3a33eb 100644 --- a/broker/redoc-static.html +++ b/broker/redoc-static.html @@ -349,7 +349,7 @@ data-styled.g137[id="sc-kqGpvY"]{content:"bAFwPb,"}/*!sc*/ -

Jungfraujoch (1.0.0-rc.30)

Download OpenAPI specification:Download

Filip Leonarski (Paul Scherrer Institute): filip.leonarski@psi.ch License: GPL-3.0

Jungfraujoch (1.0.0-rc.31)

Download OpenAPI specification:Download

Filip Leonarski (Paul Scherrer Institute): filip.leonarski@psi.ch License: GPL-3.0

API to control Jungfraujoch developed by the Paul Scherrer Institute (Switzerland). @@ -399,7 +399,7 @@ If storage cells are used, the execution time might be few minutes. " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Error within Jungfraujoch code - see output message.

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Collect dark current for the detector

http://localhost:5232/initialize

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Collect dark current for the detector

Updates calibration of the JUNGFRAU detector. Must be in Idle state.

@@ -411,7 +411,7 @@ If storage cells are used, the execution time might be few minutes. " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Error within Jungfraujoch code - see output message.

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Start detector

http://localhost:5232/pedestal

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Start detector

Write NXmx formatted HDF5 master file. Recommended to use for macromolecular crystallography experiments and to turn off for other experiments.

save_calibration
boolean

Forward image calibration (at the moment pedestal and pedestal RMS for JUNGFRAU) using the ZeroMQ stream to writer. -If parameter is not provided calibration will be saved only if more than 4 images are recorded.

+If parameter is not provided calibration will be saved only if more than 4 images are recorded.

object

Unit cell parameters. Necessary to run indexing. Units of angstrom and degree

Responses

Request samples

Content type
application/json
{
  • "images_per_trigger": 1,
  • "ntrigger": 1,
  • "image_time_us": 0,
  • "beam_x_pxl": 0.1,
  • "beam_y_pxl": 0.1,
  • "detector_distance_mm": 0.1,
  • "incident_energy_keV": 0.001,
  • "file_prefix": "",
  • "images_per_file": 1000,
  • "space_group_number": 0,
  • "sample_name": "",
  • "compression": "bslz4",
  • "total_flux": 0.1,
  • "transmission": 1,
  • "goniometer": {
    },
  • "header_appendix": null,
  • "image_appendix": null,
  • "data_reduction_factor_serialmx": 1,
  • "pixel_value_low_threshold": 0,
  • "run_number": 0,
  • "run_name": "string",
  • "experiment_group": "string",
  • "poisson_compression": 16,
  • "write_nxmx_hdf5_master": true,
  • "save_calibration": true,
  • "unit_cell": {
    }
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Wait for acquisition done

http://localhost:5232/start

Request samples

Content type
application/json
{
  • "images_per_trigger": 1,
  • "ntrigger": 1,
  • "image_time_us": 0,
  • "beam_x_pxl": 0.1,
  • "beam_y_pxl": 0.1,
  • "detector_distance_mm": 0.1,
  • "incident_energy_keV": 0.001,
  • "file_prefix": "",
  • "images_per_file": 1000,
  • "space_group_number": 0,
  • "sample_name": "",
  • "compression": "bslz4",
  • "total_flux": 0.1,
  • "transmission": 1,
  • "goniometer": {
    },
  • "header_appendix": null,
  • "image_appendix": null,
  • "data_reduction_factor_serialmx": 1,
  • "pixel_value_low_threshold": 0,
  • "run_number": 0,
  • "run_name": "string",
  • "experiment_group": "string",
  • "poisson_compression": 16,
  • "write_nxmx_hdf5_master": true,
  • "save_calibration": true,
  • "unit_cell": {
    }
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Wait for acquisition done

Timeout reached, need to restart operation

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Send soft trigger to the detector

http://localhost:5232/wait_till_done

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Send soft trigger to the detector

Generate soft trigger

Responses

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Change detector configuration

http://localhost:5232/deactivate

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Change detector configuration

Error within Jungfraujoch code - see output message.

Request samples

Content type
application/json
{
  • "frame_time_us": 1,
  • "count_time_us": 0,
  • "internal_frame_generator": false,
  • "internal_frame_generator_images": 1,
  • "detector_trigger_delay_ns": 0,
  • "timing": "auto",
  • "eiger_threshold_keV": 1,
  • "eiger_bit_depth": 8,
  • "jungfrau_pedestal_g0_frames": 2000,
  • "jungfrau_pedestal_g1_frames": 300,
  • "jungfrau_pedestal_g2_frames": 300,
  • "jungfrau_pedestal_min_image_count": 128,
  • "jungfrau_storage_cell_count": 1,
  • "jungfrau_storage_cell_delay_ns": 5000,
  • "jungfrau_fixed_gain_g1": false,
  • "jungfrau_use_gain_hg0": false
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get detector configuration

http://localhost:5232/config/detector

Request samples

Content type
application/json
{
  • "frame_time_us": 1,
  • "count_time_us": 0,
  • "internal_frame_generator": false,
  • "internal_frame_generator_images": 1,
  • "detector_trigger_delay_ns": 0,
  • "timing": "auto",
  • "eiger_threshold_keV": 1,
  • "eiger_bit_depth": 8,
  • "jungfrau_pedestal_g0_frames": 2000,
  • "jungfrau_pedestal_g1_frames": 300,
  • "jungfrau_pedestal_g2_frames": 300,
  • "jungfrau_pedestal_min_image_count": 128,
  • "jungfrau_storage_cell_count": 1,
  • "jungfrau_storage_cell_delay_ns": 5000,
  • "jungfrau_fixed_gain_g1": false,
  • "jungfrau_use_gain_hg0": false
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get detector configuration

Can be done anytime

Responses

Response samples

Content type
application/json
{
  • "frame_time_us": 1,
  • "count_time_us": 0,
  • "internal_frame_generator": false,
  • "internal_frame_generator_images": 1,
  • "detector_trigger_delay_ns": 0,
  • "timing": "auto",
  • "eiger_threshold_keV": 1,
  • "eiger_bit_depth": 8,
  • "jungfrau_pedestal_g0_frames": 2000,
  • "jungfrau_pedestal_g1_frames": 300,
  • "jungfrau_pedestal_g2_frames": 300,
  • "jungfrau_pedestal_min_image_count": 128,
  • "jungfrau_storage_cell_count": 1,
  • "jungfrau_storage_cell_delay_ns": 5000,
  • "jungfrau_fixed_gain_g1": false,
  • "jungfrau_use_gain_hg0": false
}

Change instrument metadata

http://localhost:5232/config/detector

Response samples

Content type
application/json
{
  • "frame_time_us": 1,
  • "count_time_us": 0,
  • "internal_frame_generator": false,
  • "internal_frame_generator_images": 1,
  • "detector_trigger_delay_ns": 0,
  • "timing": "auto",
  • "eiger_threshold_keV": 1,
  • "eiger_bit_depth": 8,
  • "jungfrau_pedestal_g0_frames": 2000,
  • "jungfrau_pedestal_g1_frames": 300,
  • "jungfrau_pedestal_g2_frames": 300,
  • "jungfrau_pedestal_min_image_count": 128,
  • "jungfrau_storage_cell_count": 1,
  • "jungfrau_storage_cell_delay_ns": 5000,
  • "jungfrau_fixed_gain_g1": false,
  • "jungfrau_use_gain_hg0": false
}

Change file writer settings

This can only be done when detector is Idle, Error or Inactive states.

+
Request Body schema: application/json
overwrite
boolean
Default: false

Inform jfjoch_write to overwrite existing files. Otherwise files would be saved with .h5.{timestamp}.tmp suffix.

+
file_writer_version
integer <int64> [ 1 .. 2 ]
Default: 2

version 1 - legacy format with soft links to data files in the master file; necessary for DECTRIS Albula 4.0 and DECTRIS Neggia
version 2 - newer format with virtual dataset linking data files in the master file, also includes better metadata handling

+

Responses

Request samples

Content type
application/json
{
  • "overwrite": false,
  • "file_writer_version": 2
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get file writer settings

Can be done anytime

+

Responses

Response samples

Content type
application/json
{
  • "overwrite": false,
  • "file_writer_version": 2
}

Change instrument metadata

This can only be done when detector is Idle, Error or Inactive states.

Request Body schema: application/json
source_name
required
string
source_type
string
Default: ""

Error within Jungfraujoch code - see output message.

Request samples

Content type
application/json
{
  • "source_name": "Swiss Light Source",
  • "source_type": "Synchrotron X-ray Source",
  • "instrument_name": "CristallinaMX",
  • "pulsed_source": false,
  • "electron_source": false
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get instrument metadata

http://localhost:5232/config/instrument

Request samples

Content type
application/json
{
  • "source_name": "Swiss Light Source",
  • "source_type": "Synchrotron X-ray Source",
  • "instrument_name": "CristallinaMX",
  • "pulsed_source": false,
  • "electron_source": false
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get instrument metadata

Can be done anytime

Responses

Response samples

Content type
application/json
{
  • "source_name": "Swiss Light Source",
  • "source_type": "Synchrotron X-ray Source",
  • "instrument_name": "CristallinaMX",
  • "pulsed_source": false,
  • "electron_source": false
}

Change image output format

http://localhost:5232/config/instrument

Response samples

Content type
application/json
{
  • "source_name": "Swiss Light Source",
  • "source_type": "Synchrotron X-ray Source",
  • "instrument_name": "CristallinaMX",
  • "pulsed_source": false,
  • "electron_source": false
}

Change image output format

This can only be done when detector is Idle, Error or Inactive states.

Request Body schema: application/json
summation
required
boolean

Error within Jungfraujoch code - see output message.

Request samples

Content type
application/json
{
  • "summation": true,
  • "geometry_transform": true,
  • "jungfrau_conversion": true,
  • "jungfrau_conversion_factor_keV": 0.001,
  • "bit_depth_image": 8,
  • "signed_output": true,
  • "mask_module_edges": true,
  • "mask_chip_edges": true,
  • "jungfrau_mask_pixels_without_g0": true,
  • "apply_mask": false,
  • "jungfrau_pedestal_g0_rms_limit": 100
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get image output format

http://localhost:5232/config/image_format

Request samples

Content type
application/json
{
  • "summation": true,
  • "geometry_transform": true,
  • "jungfrau_conversion": true,
  • "jungfrau_conversion_factor_keV": 0.001,
  • "bit_depth_image": 8,
  • "signed_output": true,
  • "mask_module_edges": true,
  • "mask_chip_edges": true,
  • "jungfrau_mask_pixels_without_g0": true,
  • "apply_mask": false,
  • "jungfrau_pedestal_g0_rms_limit": 100
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get image output format

Can be done anytime

Responses

Response samples

Content type
application/json
{
  • "summation": true,
  • "geometry_transform": true,
  • "jungfrau_conversion": true,
  • "jungfrau_conversion_factor_keV": 0.001,
  • "bit_depth_image": 8,
  • "signed_output": true,
  • "mask_module_edges": true,
  • "mask_chip_edges": true,
  • "jungfrau_mask_pixels_without_g0": true,
  • "apply_mask": false,
  • "jungfrau_pedestal_g0_rms_limit": 100
}

Configure format for raw data collection

http://localhost:5232/config/image_format

Response samples

Content type
application/json
{
  • "summation": true,
  • "geometry_transform": true,
  • "jungfrau_conversion": true,
  • "jungfrau_conversion_factor_keV": 0.001,
  • "bit_depth_image": 8,
  • "signed_output": true,
  • "mask_module_edges": true,
  • "mask_chip_edges": true,
  • "jungfrau_mask_pixels_without_g0": true,
  • "apply_mask": false,
  • "jungfrau_pedestal_g0_rms_limit": 100
}

Configure format for raw data collection

This can only be done when detector is Idle, Error or Inactive states.

Responses

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Configure format for data collection with full conversion

http://localhost:5232/config/image_format/raw

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Configure format for data collection with full conversion

This can only be done when detector is Idle, Error or Inactive states.

Responses

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Configure spot finding

http://localhost:5232/config/image_format/conversion

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Configure spot finding

Can be done anytime, also while data collection is running

Request Body schema: application/json
enable
required
boolean
Default: true

Input parsing or validation error

Request samples

Content type
application/json
{
  • "enable": true,
  • "indexing": true,
  • "filter_powder_rings": false,
  • "min_spot_count_powder_ring": 5,
  • "signal_to_noise_threshold": 0.1,
  • "photon_count_threshold": 0,
  • "min_pix_per_spot": 1,
  • "max_pix_per_spot": 1,
  • "high_resolution_limit": 0.1,
  • "low_resolution_limit": 0.1,
  • "indexing_tolerance": 1
}

Get data processing configuration

http://localhost:5232/config/spot_finding

Request samples

Content type
application/json
{
  • "enable": true,
  • "indexing": true,
  • "filter_powder_rings": false,
  • "min_spot_count_powder_ring": 5,
  • "signal_to_noise_threshold": 0.1,
  • "photon_count_threshold": 0,
  • "min_pix_per_spot": 1,
  • "max_pix_per_spot": 1,
  • "high_resolution_limit": 0.1,
  • "low_resolution_limit": 0.1,
  • "indexing_tolerance": 1
}

Get data processing configuration

Can be done anytime

Responses

Response samples

Content type
application/json
{
  • "enable": true,
  • "indexing": true,
  • "filter_powder_rings": false,
  • "min_spot_count_powder_ring": 5,
  • "signal_to_noise_threshold": 0.1,
  • "photon_count_threshold": 0,
  • "min_pix_per_spot": 1,
  • "max_pix_per_spot": 1,
  • "high_resolution_limit": 0.1,
  • "low_resolution_limit": 0.1,
  • "indexing_tolerance": 1
}

Configure radial integration

http://localhost:5232/config/spot_finding

Response samples

Content type
application/json
{
  • "enable": true,
  • "indexing": true,
  • "filter_powder_rings": false,
  • "min_spot_count_powder_ring": 5,
  • "signal_to_noise_threshold": 0.1,
  • "photon_count_threshold": 0,
  • "min_pix_per_spot": 1,
  • "max_pix_per_spot": 1,
  • "high_resolution_limit": 0.1,
  • "low_resolution_limit": 0.1,
  • "indexing_tolerance": 1
}

Configure radial integration

Can be done when detector is Inactive or Idle

Request Body schema: application/json
polarization_factor
number <float> [ -1 .. 1 ]

If polarization factor is provided, than polarization correction is enabled.

@@ -811,13 +831,13 @@ Even if disabled spot finding information will still be send and written, though " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Error within Jungfraujoch code - see output message.

Request samples

Content type
application/json
{
  • "polarization_factor": -1,
  • "solid_angle_corr": true,
  • "high_q_recipA": 0.1,
  • "low_q_recipA": 0.1,
  • "q_spacing": 0.1
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get radial integration configuration

http://localhost:5232/config/azim_int

Request samples

Content type
application/json
{
  • "polarization_factor": -1,
  • "solid_angle_corr": true,
  • "high_q_recipA": 0.1,
  • "low_q_recipA": 0.1,
  • "q_spacing": 0.1
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get radial integration configuration

Can be done anytime

Responses

Response samples

Content type
application/json
{
  • "polarization_factor": -1,
  • "solid_angle_corr": true,
  • "high_q_recipA": 0.1,
  • "low_q_recipA": 0.1,
  • "q_spacing": 0.1
}

Load binary image for internal FPGA generator

http://localhost:5232/config/azim_int

Response samples

Content type
application/json
{
  • "polarization_factor": -1,
  • "solid_angle_corr": true,
  • "high_q_recipA": 0.1,
  • "low_q_recipA": 0.1,
  • "q_spacing": 0.1
}

Load binary image for internal FPGA generator

Load image for internal FPGA generator. This can only happen in Idle state of the detector. @@ -859,13 +879,13 @@ Changing detector will set detector to Inactive state and will requ " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Error within Jungfraujoch code - see output message.

Request samples

Content type
application/json
{
  • "id": 1
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

List available detectors

http://localhost:5232/config/select_detector

Request samples

Content type
application/json
{
  • "id": 1
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

List available detectors

Configured detectors that can be selected by used

Responses

Response samples

Content type
application/json
{
  • "detectors": [
    ],
  • "current_id": 0
}

Set ZeroMQ preview settings

http://localhost:5232/config/select_detector

Response samples

Content type
application/json
{
  • "detectors": [
    ],
  • "current_id": 0
}

Set ZeroMQ preview settings

Error within Jungfraujoch code - see output message.

Request samples

Content type
application/json
{
  • "enabled": true,
  • "period_ms": 1000,
  • "socket_address": "string"
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get ZeroMQ preview settings

Responses

Request samples

Content type
application/json
{
  • "enabled": true,
  • "period_ms": 1000,
  • "socket_address": "string"
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get ZeroMQ preview settings

Responses

Response samples

Content type
application/json
{
  • "enabled": true,
  • "period_ms": 1000,
  • "socket_address": "string"
}

Set ZeroMQ metadata settings

http://localhost:5232/config/zeromq_preview

Response samples

Content type
application/json
{
  • "enabled": true,
  • "period_ms": 1000,
  • "socket_address": "string"
}

Set ZeroMQ metadata settings

Jungfraujoch can generate metadata message stream on ZeroMQ PUB socket. This stream covers all images. @@ -927,21 +947,21 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Error within Jungfraujoch code - see output message.

Request samples

Content type
application/json
{
  • "enabled": true,
  • "period_ms": 1000,
  • "socket_address": "string"
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get ZeroMQ metadata socket settings

Responses

Request samples

Content type
application/json
{
  • "enabled": true,
  • "period_ms": 1000,
  • "socket_address": "string"
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get ZeroMQ metadata socket settings

Responses

Response samples

Content type
application/json
{
  • "enabled": true,
  • "period_ms": 1000,
  • "socket_address": "string"
}

Get Jungfraujoch status

http://localhost:5232/config/zeromq_metadata

Response samples

Content type
application/json
{
  • "enabled": true,
  • "period_ms": 1000,
  • "socket_address": "string"
}

Get Jungfraujoch status

Status of the data acquisition

Responses

Response samples

Content type
application/json
{
  • "state": "Inactive",
  • "progress": 1,
  • "message": "string",
  • "message_severity": "success"
}

Get status of FPGA devices

Responses

Response samples

Content type
application/json
{
  • "state": "Inactive",
  • "progress": 1,
  • "message": "string",
  • "message_severity": "success"
}

Get status of FPGA devices

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Return XFEL pulse IDs for the current data acquisition

http://localhost:5232/fpga_status

Response samples

Content type
application/json
[
  • {
    }
]

Return XFEL pulse IDs for the current data acquisition

Return array of XFEL pulse IDs - (-1) if image not recorded

Responses

Response samples

Content type
application/json
[
  • 0
]

Return XFEL event codes for the current data acquisition

http://localhost:5232/xfel/pulse_id

Response samples

Content type
application/json
[
  • 0
]

Return XFEL event codes for the current data acquisition

Return array of XFEL event codes

Responses

Response samples

Content type
application/json
[
  • 0
]

Get detector status

http://localhost:5232/xfel/event_code

Response samples

Content type
application/json
[
  • 0
]

Get detector status

Status of the JUNGFRAU detector

Responses

Response samples

Content type
application/json
{
  • "state": "Idle",
  • "powerchip": "PowerOn",
  • "server_version": "string",
  • "number_of_triggers_left": 0,
  • "fpga_temp_degC": [
    ],
  • "high_voltage_V": [
    ]
}

Get ROI definitions

Responses

Response samples

Content type
application/json
{
  • "state": "Idle",
  • "powerchip": "PowerOn",
  • "server_version": "string",
  • "number_of_triggers_left": 0,
  • "fpga_temp_degC": [
    ],
  • "high_voltage_V": [
    ]
}

Get ROI definitions

Responses

Response samples

Content type
application/json
{
  • "box": {
    },
  • "circle": {
    }
}

Upload ROI definitions

Request Body schema: application/json
required
object (roi_box_list)
http://localhost:5232/config/roi

Response samples

Content type
application/json
{
  • "box": {
    },
  • "circle": {
    }
}

Upload ROI definitions

Request Body schema: application/json
required
object (roi_box_list)

List of box ROIs

required
object (roi_circle_list)

List of circular ROIs

@@ -983,7 +1003,7 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Error within Jungfraujoch code - see output message.

Request samples

Content type
application/json
{
  • "box": {
    },
  • "circle": {
    }
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Generate background estimate plot

http://localhost:5232/config/roi

Request samples

Content type
application/json
{
  • "box": {
    },
  • "circle": {
    }
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Generate background estimate plot

Mean intensity for d = 3 - 5 A per image; binning is configurable

query Parameters
binning
integer

Binning of frames for the plot (0 = default binning)

@@ -995,7 +1015,7 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Input parsing or validation error

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate spot count plot

http://localhost:5232/plot/bkg_estimate

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate spot count plot

Number of spots per image; binning is configurable

query Parameters
binning
integer

Binning of frames for the plot (0 = default binning)

@@ -1007,7 +1027,7 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Input parsing or validation error

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate indexing rate plot

http://localhost:5232/plot/spot_count

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate indexing rate plot

Image indexing rate; binning is configurable

query Parameters
binning
integer

Binning of frames for the plot (0 = default binning)

@@ -1019,7 +1039,7 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Input parsing or validation error

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate indexing unit cell length plots

http://localhost:5232/plot/indexing_rate

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate indexing unit cell length plots

Crystal unit cell based on indexing results; binning is configurable

query Parameters
binning
integer

Binning of frames for the plot (0 = default binning)

@@ -1031,7 +1051,7 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Input parsing or validation error

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate indexing unit cell angle plot

http://localhost:5232/plot/indexing_unit_cell

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate indexing unit cell angle plot

Crystal unit cell based on indexing results; binning is configurable

query Parameters
binning
integer

Binning of frames for the plot (0 = default binning)

@@ -1043,7 +1063,7 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Input parsing or validation error

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate error pixels plot

http://localhost:5232/plot/indexing_unit_cell_angle

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate error pixels plot

Count of error (mean) and saturated (mean/max) pixels per image; binning is configurable

query Parameters
binning
integer

Binning of frames for the plot (0 = default binning)

@@ -1055,7 +1075,7 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Input parsing or validation error

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate strong pixels plot

http://localhost:5232/plot/error_pixel

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate strong pixels plot

Count of strong pixels per image (from spot finding); binning is configurable

query Parameters
binning
integer

Binning of frames for the plot (0 = default binning)

@@ -1067,7 +1087,19 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Input parsing or validation error

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate ROI sum plot

http://localhost:5232/plot/strong_pixel

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate maximum pixel value plot

Provides maximum viable pixel value (excluding overloads and error pixels); binning is configurable and maximum of a bin is returned

+
query Parameters
binning
integer

Binning of frames for the plot (0 = default binning)

+
compression
boolean
Default: true

Enable DEFLATE compression of output data.

+

Responses

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate ROI sum plot

Sum of ROI rectangle per image; binning is configurable

query Parameters
binning
integer

Binning of frames for the plot (0 = default binning)

@@ -1079,7 +1111,7 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Input parsing or validation error

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate plot of ROI max count

http://localhost:5232/plot/roi_sum

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate plot of ROI max count

Max count of ROI per image; binning is configurable

query Parameters
binning
integer

Binning of frames for the plot (0 = default binning)

@@ -1091,7 +1123,7 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Input parsing or validation error

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate plot of ROI valid pixels

http://localhost:5232/plot/roi_max_count

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate plot of ROI valid pixels

Number of pixels within a ROI area; pixels with special values (overload, bad pixel) are excluded; multipixels are counted just once; binning is configurable

query Parameters
binning
integer

Binning of frames for the plot (0 = default binning)

@@ -1103,7 +1135,7 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Input parsing or validation error

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate receiver delay plot

http://localhost:5232/plot/roi_valid_pixels

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate receiver delay plot

Amount of frames the receiver is behind the FPGA for each image - used for internal debugging; binning is configurable

query Parameters
binning
integer

Binning of frames for the plot (0 = default binning)

@@ -1115,7 +1147,7 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Input parsing or validation error

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate receiver free send buffer plot

http://localhost:5232/plot/receiver_delay

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate receiver free send buffer plot

Amount of send buffers available during frame processing - used for internal debugging; binning is configurable

query Parameters
binning
integer

Binning of frames for the plot (0 = default binning)

@@ -1127,7 +1159,7 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Input parsing or validation error

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate image collection efficiency plot

http://localhost:5232/plot/receiver_free_send_buffers

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate image collection efficiency plot

Ratio of collected and expected packets per image; binning is configurable

query Parameters
binning
integer

Binning of frames for the plot (0 = default binning)

@@ -1139,7 +1171,19 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Input parsing or validation error

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate radial integration profile

http://localhost:5232/plot/image_collection_efficiency

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate plot with number of received packets per image

Number of collected packets per image; binning is configurable

+
query Parameters
binning
integer

Binning of frames for the plot (0 = default binning)

+
compression
boolean
Default: true

Enable DEFLATE compression of output data.

+

Responses

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Generate radial integration profile

Generate average radial integration profile

query Parameters
compression
boolean
Default: true

Enable DEFLATE compression of output data.

@@ -1147,13 +1191,13 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Everything OK

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Get general statistics

query Parameters
compression
boolean
Default: true
http://localhost:5232/plot/azim_int

Response samples

Content type
application/json
{
  • "title": "string",
  • "plot": [
    ]
}

Get general statistics

query Parameters
compression
boolean
Default: true

Enable DEFLATE compression of output data.

Responses

Response samples

Content type
application/json
{
  • "detector": {
    },
  • "detector_list": {
    },
  • "detector_settings": {
    },
  • "image_format_settings": {
    },
  • "instrument_metadata": {
    },
  • "data_processing_settings": {
    },
  • "measurement": {
    },
  • "broker": {
    },
  • "fpga": [
    ],
  • "calibration": [
    ],
  • "zeromq_preview": {
    },
  • "zeromq_metadata": {
    },
  • "pixel_mask": {
    },
  • "roi": {
    }
}

Get data collection statistics

http://localhost:5232/statistics

Response samples

Content type
application/json
{
  • "detector": {
    },
  • "detector_list": {
    },
  • "detector_settings": {
    },
  • "image_format_settings": {
    },
  • "instrument_metadata": {
    },
  • "file_writer_settings": {
    },
  • "data_processing_settings": {
    },
  • "measurement": {
    },
  • "broker": {
    },
  • "fpga": [
    ],
  • "calibration": [
    ],
  • "zeromq_preview": {
    },
  • "zeromq_metadata": {
    },
  • "pixel_mask": {
    },
  • "roi": {
    }
}

Get data collection statistics

Results of the last data collection

Responses

Response samples

Content type
application/json
{
  • "file_prefix": "string",
  • "run_number": 0,
  • "experiment_group": "string",
  • "images_expected": 0,
  • "images_collected": 0,
  • "images_sent": 0,
  • "images_discarded_lossy_compression": 0,
  • "max_image_number_sent": 0,
  • "collection_efficiency": 1,
  • "compression_ratio": 5.3,
  • "cancelled": true,
  • "max_receiver_delay": 0,
  • "indexing_rate": 0.1,
  • "detector_width": 0,
  • "detector_height": 0,
  • "detector_pixel_depth": 2,
  • "bkg_estimate": 0.1,
  • "unit_cell": "string"
}

Get calibration statistics

http://localhost:5232/statistics/data_collection

Response samples

Content type
application/json
{
  • "file_prefix": "string",
  • "run_number": 0,
  • "experiment_group": "string",
  • "images_expected": 0,
  • "images_collected": 0,
  • "images_sent": 0,
  • "images_discarded_lossy_compression": 0,
  • "max_image_number_sent": 0,
  • "collection_efficiency": 1,
  • "compression_ratio": 5.3,
  • "cancelled": true,
  • "max_receiver_delay": 0,
  • "indexing_rate": 0.1,
  • "detector_width": 0,
  • "detector_height": 0,
  • "detector_pixel_depth": 2,
  • "bkg_estimate": 0.1,
  • "unit_cell": "string",
  • "error_pixels": 0.1,
  • "saturated_pixels": 0.1,
  • "roi_beam_pixels": 0.1,
  • "roi_beam_sum": 0.1
}

Get calibration statistics

Statistics are provided for each module/storage cell separately

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get last preview image in JPEG format using custom settings

Request Body schema: application/json
saturation
required
integer <int64> [ 0 .. 65535 ]
http://localhost:5232/statistics/calibration

Response samples

Content type
application/json
[
  • {
    }
]

Get last preview image in JPEG format using custom settings

Request Body schema: application/json
saturation
required
integer <int64> [ 0 .. 65535 ]

Saturation value to set contrast in the preview image

show_spots
boolean
Default: true

Show spot finding results on the image

@@ -1189,7 +1233,7 @@ Address follows ZeroMQ convention for sockets - in practice ipc:// " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Error within Jungfraujoch code - see output message.

Request samples

Content type
application/json
{
  • "saturation": 65535,
  • "show_spots": true,
  • "show_roi": false,
  • "jpeg_quality": 100,
  • "show_indexed": false,
  • "show_user_mask": false,
  • "resolution_ring": 0.1
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get last preview image in JPEG format using default settings

Responses

Request samples

Content type
application/json
{
  • "saturation": 65535,
  • "show_spots": true,
  • "show_roi": false,
  • "jpeg_quality": 100,
  • "show_indexed": false,
  • "show_user_mask": false,
  • "resolution_ring": 0.1
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get last preview image in JPEG format using default settings

Responses

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get mask of the detector (TIFF)

http://localhost:5232/config/user_mask

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get mask of the detector (TIFF)

Get full pixel mask of the detector See NXmx standard for meaning of pixel values

@@ -1279,7 +1323,7 @@ User mask is not automatically applied - i.e. pixels with user mask will have a " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

Error within Jungfraujoch code - see output message.

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get pedestal in TIFF format

query Parameters
gain_level
required
integer
http://localhost:5232/config/user_mask.tiff

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get pedestal in TIFF format

query Parameters
gain_level
required
integer

Gain level (0, 1, 2)

sc
integer

Storage cell number

@@ -1289,13 +1333,55 @@ User mask is not automatically applied - i.e. pixels with user mask will have a " class="sc-eeDSqt sc-eBMFzZ bSgSrX cWARBq sc-dCFGXG gKOXES">

No calibration recorded so far

Get Jungfraujoch version of jfjoch_broker

Responses

Get Start message in CBOR format

Contains metadata for a dataset (e.g., experimental geometry)

+

Responses

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get image message in CBOR format

Contains full image data and metadata. The image must come from the latest data collection.

+
query Parameters
image_number
integer <int64>

Image number. If omitted, the image with the highest number in the image buffer will be provided.

+

Responses

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Clear image buffer

Turns off image buffer for the last data collection. Can be only run when Jungfraujoch is not collecting data.

+

Responses

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get status of the image buffers

Can be run at any stage of Jungfraujoch operation, including during data collection. +The status of the image buffer is volatile during data collection - if data collection goes for more images than available buffer slots, +then image might be replaced in the buffer between calling /images and /image.cbor.

+

Responses

Response samples

Content type
application/json
{
  • "image_numbers": [
    ],
  • "total_slots": 0,
  • "available_slots": 0
}

Get Jungfraujoch version of jfjoch_broker

Responses