This module contains the following Odin support for Xspress 3 and 4 readout systems:
- The
XspressFrameDecoderandXspressProcessPluginfor readout of MCA data - The
XspressListModeFrameDecoderandXspressListModeProcessPluginfor readout of event data, bypassinglibxspress - The
xspressControlC++ application wrappinglibxspressand exposing a socket- This includes a simulated mode for testing detector control without hardware
- An
odin-controladapter to control the detector viaxspressControl - An xspress-specific
odin-controladapter forodin-dataexposing additional configuration for the xspress process plugins - An
odin-datameta writer plugin for handling xspress meta data from the process plugin
The C++ build uses CMake. There are two required CMake flags to provide install
directories containing lib/ and include/ directories:
ODINDATA_ROOT_DIR: Path to anodin-datainstall (Required)LIBXSPRESS_ROOT_DIR: Path tolibxspresslibraries and headers (Optionally forxspressControl)
For example:
mkdir -p build && cd build
cmake -DCMAKE_INSTALL_PREFIX=... -DODINDATA_ROOT_DIR=... -DLIBXSPRESS_ROOT_DIR=... ../cpp
make -j8 VERBOSE=1
make installSee the documentation for more information on odin-data.
The xspress-detector python package requires odin-control and odin-data, which are not on PyPI. They must be installed into a venv manually before installing xspress-detector. For example:
python3 -m venv venv && source venv/bin/activate && pip install --upgrade pip
pip install "odin-control @ git+https://[email protected]/odin-detector/odin-control.git"
pip install "odin-data @ git+https://[email protected]/odin-detector/odin-data.git#subdirectory=python"
pip install ./pythonThere are example deployments in the examples directory. These contain the startup
scripts and config files for a full Odin deployment for an xspress system. Any paths to
libraries should be updated with absolute paths to installs on a specific system.
These are nominally for xspress 3 and 4, however the only practical difference is the number of channels and by extension the number of data readout applications.
There is a container that is built and published in CI. However, this does not build the
xspressControl application, as the libxspress libraries are not checked in to the
repository. To build a container including xspressControl, add a directory containing
the libxspress libs and headers to xspress-detector and uncomment the relevant lines
of the Dockerfile to include them in the container build.