Files
Jungfraujoch/tools/jfjoch_simplon_test.cpp
2025-05-28 18:49:27 +02:00

71 lines
2.9 KiB
C++

// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
// SPDX-License-Identifier: GPL-3.0-only
#include "../common/print_license.h"
#include "../common/Logger.h"
#include "../detector_control/DectrisSimplonClient.h"
#include "../preview/JFJochTIFF.h"
int main(int argc, char **argv) {
print_license("jfjoch_simplon_test");
Logger logger("jfjoch_simplon_test");
logger.Verbose(true);
if ((argc != 2) && (argc != 3)) {
std::cout << "Usage: ./jfjoch_simplon_test <DECTRIS Simplon hostname/IP> {<port>}" << std::endl;
exit(EXIT_FAILURE);
}
uint16_t port = 80;
if (argc == 3)
port = atoi(argv[2]);
DetectorSetup setup = DetDECTRIS(1,1,"Detector1", argv[1]);
DectrisSimplonClient cli(argv[1], port);
DiffractionExperiment experiment(setup);
try {
cli.ReadDetectorConfig(setup);
} catch (const JFJochException &e) {
logger.ErrorException(e);
exit(EXIT_FAILURE);
}
logger.Info("State {}", to_string(cli.GetState()));
logger.Info("Serial number {}", setup.GetSerialNumber() );
logger.Info("Width {:8d} pxl", setup.GetGeometry().GetWidth(true));
logger.Info("Height {:8d} pxl", setup.GetGeometry().GetHeight(true));
logger.Info("Sensor material {}", setup.GetSensorMaterial() );
logger.Info("Sensor thickness {:8.1f} um", setup.GetSensorThickness_um());
logger.Info("Pixel size {:8.1f} um", setup.GetPixelSize_mm() * 1e3f);
logger.Info("Readout time {:8d} ", setup.GetReadOutTime().count());
logger.Info("Min count time {:8d}", setup.GetMinCountTime().count());
logger.Info("Min frame time {:8d}", setup.GetMinFrameTime().count());
logger.Info("Min threshold {:8.2f} keV", setup.GetMinThreshold_keV());
auto mask = cli.GetPixelMask();
logger.Info("Pixel mask size {:8d}", mask.size());
CompressedImage image(mask, setup.GetGeometry().GetWidth(true),
setup.GetGeometry().GetHeight(true));
WriteTIFFToFile("det_mask.tiff", image);
if (setup.GetBitDepthReadout())
logger.Info("Bit depth readout {:8d}", setup.GetBitDepthReadout().value());
if (setup.GetBitDepthImage())
logger.Info("Bit depth image {:8d}", setup.GetBitDepthImage().value());
experiment.FrameTime(std::chrono::milliseconds(100), std::chrono::milliseconds(10))
.IncidentEnergy_keV(8.0)
.NumTriggers(5).ImagesPerTrigger(2).BeamX_pxl(234).BeamY_pxl(345).DetectorDistance_mm(100.0);
experiment.ImportDetectorSettings(experiment.GetDetectorSettings().EigerThreshold_keV(3.2));
try {
cli.ConfigureDetector(experiment);
} catch (const JFJochException &e) {
logger.ErrorException(e);
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}