How to run scans with the Pulse Picker¶
Pulse picker specific devices¶
The Pulse Picker¶
The Pulse Picker is a hardware device that controls a shutter. It is designed to let a single pulse out of a train pass through (no matter which pulse). It’s currently installed in SPB. From the Karabo point of view it looks like a bunch of Beckhoff digital inputs/outputs. We use two of them to control it: We set SPB_XTD9_PPU/DCTRL/TRIG ON to start the pulse picker (and it goes back to OFF when it is done) We read back SPB_XTD9_PPU/DCTRL/STEP2 as its raising edge is the best approximation we have of the time of the passing pulse. Note: motor SPB_XTD9_PPU/MOTOR/ROTOR is used behind the scenes in follow-target mode. Do not mess with its settings. Just in case, it may help to know that slit is open when motor actual position is (2 * N) * 30 for any N, closed when it is (2 * N + 1) * 30. So resting value for actual position should be any odd multiple of 30, and stepSize value should be 30.
PulsePickerTrigger¶
It is a middlelayer device. It repeatedly activates Pulse Picker for a given Acquisition Time at a given Repetition Rate (thus letting Number of Pulses pass through). As a pulse passes through, the device writes on and output channel a boolean with the same train Id of the pulse (as described in Pulse Picker ). It is meant to be Karabacon-friendly.
When the “Pass-Through” option is enabled, it opens the pulse picker slit
(assuming it is closed at the beginning), keep it open for at least
acquisitionTime
, then closes it again. At the same time ImagePicker
is disabled.
In both cases if averagers names are set, it takes care of resetting averaged scan values.
ImagePicker¶
Yet another device from the imageProcessor family.
It gets an image stream in input (e.g. from a camera), and the train id on a
second one (as provided from PulsePickerTrigger).
It writes on an output channel only the images whose train id matches the
one receiced by PulsePickerTrigger.
Users can set an offset value to delay or anticipate the image train id with
respect to the pulse one.
The ImagePicker can be disabled by setting to True
the Disabled boolean.
This way the images in input are simply copied to ouput, as if the ImagePicker
was not present.
Other devices needed for Pulse Picker scans¶
LimaBaslerCamera¶
Used to acquire beam image. It is supposed to acquire at 10 Hz.
ImageProcessor¶
Used to evaluate beam width (4 * sigmaX) and height (4 * sigma Y) on the relevant images (ImagePicker Output).
GenericAverage¶
This device is used to average beam width and height read from ImageProcessor
over values. N must be <= PulsePickerTrigger Number of Pulses.
In the ideal case (i.e. all pulses lead to a valid value) they are equal.
Devices and properties to be averaged can be defined at configuration time.
Output averaged values have the form of nodes whith average
and nOfValues
properties. The name of the node can be configured, Note that such names must match
the hard-coded interface of Karabacon
Average values have the form of nodes, whose name can be selected at con
Karabacon¶
Meant to scan over a motor position, use PulsePickerTrigger as trigger and GenericAverage as a data source.
Example setup for Pulse Picker scans¶
The following informations are updated to 11-10-2018. They can anyway be useful for refernece as an example.
In order to test pulse picker scans the following system was set up. It may be found in subproject SCANTOOL in domain SPB.
Device Class | Device ID |
---|---|
LimaBaslerCamera | MY_FAVOURITE_CAMERA |
ImagePicker | SPB_XTD9_PPU/PROC/IMPICK |
ImageProcessor | SPB_XTD9_PPU/PROC/IMPROC |
PulsePickerTrigger | SPB_XTD9_PPU/MDL/TRIGGER |
GenericAverage | SPB_XTD9_PPU/MDL/BW_AVG |
Karabacon | SPB_KARABACON |
Devices configuration remarks¶
ImagePicker
SPB_XTD9_PPU/PROC/IMPICK
Input image: connected output channel =
MY_FAVOURITE_CAMERA:output
The camera name here is all you need to change when switching image soource
Input train id: connected output channel =
SPB_XTD9_PPU/MDL/TRIGGER:output
ImageProcessor
SPB_XTD9_PPU/PROC/IMPROC
- Input: connected output channel =
SPB_XTD9_PPU/PROC/IMPICK:output
- Input: connected output channel =
PulsePickerTrigger
SPB_XTD9_PPU/MDL/TRIGGER
- averageNames =
['SPB_XTD9_PPU/MDL/BW_AVG']
- repetition rate and acquisition time can be configured to achieve the desired number of pulses per scan point
- averageNames =
GenericAverage
SPB_XTD9_PPU/MDL/BW_AVG
- properties table
deviceName propertyName averageOutputName SPB_XTD9_PPU/PROC/IMPROC
beamWidth1d
foursigmax
SPB_XTD9_PPU/PROC/IMPROC
beamHeight1d
foursigmay
Note: averageOutputName values can be changed at configuration time but they have to match the hardcoded values in Karabacon interface, so do not change them if you want to perform a scan.
- Window Size: it could make sense to have this matching the PulsePickerTrigger numberOfPulses but it is not strict
Karabacon
SPB_KARABACON
Main control scene:
- Motor environment: the motor you want to scan on (axis: default)
- Data sources:
Alias DeviceId value [e.g.] beamwidthX
SPB_XTD9_PPU/MDL/BW_AVG
foursigmax
[e.g.] beamwidthY
SPB_XTD9_PPU/MDL/BW_AVG
foursigmay
- Trigger Sources: put here the device id of PulsePickerTrigger
(i.e.
SPB_XTD9_PPU/MDL/TRIGGER
)