Odin - a Control and Data Acquisition Framework for Excalibur 1M and 3M Detectors

Detectors currently being commissioned at Diamond Light Source (DLS) bring the need for more sophisticated control and data acquisition software. The Excalibur 1M and 3M are modular detectors comprised of rows of identical stripes. The Odin framework emulates this architecture by operating multiple file writers on different server nodes, managed by a central controller. The low-level control and communication is implemented in a vendor supplied C library with a set of C-Python bindings, providing a fast and robust API to control the detector nodes, alongside a simple interface to interact with the file writer instances over ZeroMQ. The file writer is a C++ module that uses plugins to interpret the raw data and provide the format to write to file, allowing it to be used with other detectors such as Percival and Eiger. At DLS we implement an areaDetector driver to integrate Odin with the beamline EPICS control system. However, because Odin provides a simple HTTP Rest API, it can be used by any site control system. This paper presents the architecture and design of the Odin framework and illustrates its usage as a controller of complex, modular detector systems.