[question] check detector used in scan
How do I check whether an object that you can pass to the scan as a detector (beamviewer
, beamviewer.bmp
, beamviewer.counters
, beamviewer.counters.roi1
, ...) is used by a given scan object?
This is my first approach but @pguillou pointed out that it doesn't work in general:
DEMO [1] s = loopscan(..., *detectors, run=False)
DEMO [2] has_beamviewer = any([n.device is beamviewer for n in scan.acq_chain.nodes_list])
DEMO [3] has_bmp = any([n.device is beamviewer.bpm for n in scan.acq_chain.nodes_list])
DEMO [4] has_roi1 = any([n.device is beamviewer.counters.roi1 for n in scan.acq_chain.nodes_list])
...
This is needed when adding custom detector metadata generators (!2592 get_user_scan_meta stuff): you don't want to add detector metadata when the detector is not used in the scan.
Edited by Wout De Nolf