Lpd mini support
This adds the LpdminiSplitter
and the LpdminiCorrection
devices.
The splitter is currently envisioned to connect to the DAQ, providing one output channel for each mini module.
Then by setting up the correct channels and sources, we can pretend to run a regular multi-module pipeline with a manager.
Things I am not yet happy with:
- subclassing
LpdCorrection
is a bit of a mess; Karabo's schema handling as usual does not work like Python inheritance and so extra work is done to override things properly -
LpdminiSplitter
could use some more niceties;-
as it's downstream of the DAQ, it should include handling of empty hashes and similar shenanigansadded -
it could also have a nice rate counteradded
-
-
DetectorAssembler
is not clever when we only instantiate a non-contiguous subset of modules- it looks at source names to guess a module's index (in geometry)
- in this case, I guess it hits the correction source regex,
r".*\/CORRECT(\d+)"
- the manager numbers actual devices sequentially, starting with 0 (even if we have, say, modules 2 and 4)
- all in all, this means the current pipeline will fill in the geometry from module 0 in sequence regardless of which modules are actually there
- note: as the geometry is just a manually set list of modules, the operator can of course just handle this
I've added a WIP CPU LPD kernel, thinking it's overkill to run these mini modules on GPU. We currently have so much GPU memory on SASE1 nodes that I haven't yet gotten around to enabling CPU on the correction device.
Edited by David Hammer