The slsDetectorPackage is a control and readout software for the high performance X-ray detectors developed at the Paul Scherrer Institute. It is an attempt to provide a common and flexible interface for a family of detectors ranging from small 1D detectors (1280 channels) to large pixel detectors (16M). The core is written in C++ with a custom command line interface and Python binding for scripting. The software is in use at several facilities worldwide that use the detectors developed at PSI. Since our software is open-source, drivers for EPICS, TANGO and Karabo have already been developed by collaborators.
Our main challenge is the diversity of detectors and computer environments that the software has to support: dimensions (both 1d and 2d), scalability (1 up to 36 modules), Ethernet interfaces (1g and 10g), dynamic range (4, 8, 16 and 32 bits per pixel), synchronized with master and slave architecture or independent modules, file formats (binary and hdf5), different packet sizes, and top it off with different detector specific features.
To a large extent, we encapsulate the detector specific behavior to a part of the software that runs on the detector readout board CPU, but not all aspects can be tackled in the same manner.
Furthermore, multiple ways exist to control the detector system via the C++ or Python API, the command line and the Qt based GUI. There are various ways to pick up the data via files, zmq streams or call back routines. The system is designed to run on a variety of data backend platforms and the data receiver part of the software could be replaced with a custom process. We are currently examining different avenues into easier online data analysis, despite the different detector types.
Such a multifaceted system for constantly evolving research applications comes with obvious challenges demanding constant improvements. We will present an overview of the current architecture, challenges and future improvements.
|Email address of presenting firstname.lastname@example.org|