Standard scans¶
Bliss provides a wide choice of standard scans for step by step scanning procedures.
scan name | number of steps | motor axes | specifications | representation |
---|---|---|---|---|
ct | 1 | 0 | time | |
loopscan | N | 0 | time | |
timescan | INF | 0 | time | |
ascan | N | 1 | position, absolute, fixed step size | |
a2scan | N | 2 | position, absolute, fixed step size | |
anscan | N | n | position, absolute, fixed step size | |
dscan | N | 1 | position, relative, fixed step size | |
d2scan | N | 2 | position, relative, fixed step size | |
dnscan | N | n | position, relative, fixed step size | |
amesh | N*M | 2 | position, absolute, fixed step size | |
dmesh | N*M | 2 | position, relative, fixed step size | |
pointscan | N | 1 | position, absolute, list of coordinates | |
lookupscan | N | n | position, absolute, list of coordinates |
Running a scan¶
Start a scan (with data saving):¶
ascan( axis, start, stop, steps, count_time, cnt1, ..., MG1, ..., ctrl1, ...)
The scans accept as arguments a mix of MeasurementGroups
, Controllers
and
Counters
. If not provided, the default measurement group is used.
Create then start (with data saving):¶
s = ascan( axis, start, stop, steps, count_time, cnt1, run=False)
s.run()
Scan without data saving¶
ascan( axis, start, stop, steps, count_time, cnt1, save=False)
Note
By default, for all standard scans run=True
and save=True
except for
ct()
which doesn’t have a save
option. If save=False
, the data is generated
and published to redis but not saved to file.
Warning
Scans that run with the option save=False
will not have a scan number that
is visible to the user. This is to ensure consecutive scan numbers in the
final data file.
Examples¶
-
Scan with one axis and the default measurement (with data saving)
ascan( roby, 0, 10, 10, 0.1)
-
Scan with a given measurement group (without data saving)
ascan( roby, 0, 10, 10, 0.1, MG2, save=False)
-
Scan with all counters of a counter controller
ascan( roby, 0, 10, 10, 0.1, lima1)
-
Scan with a measurement group + all counters of a counter controller + 2 other counters
ascan( roby, 0, 10, 10, 0.1, MG1, lima1, diode4, diode5)
Scanning and monitoring data¶
The data produced by a scan are printed in a separated window which can be
display by pressing F5
.
Scan 28 Wed Feb 19 14:29:51 2020 test_session user = pguillou
ascan roby 0 10 10 0.1
# dt[s] roby diode diode2 diode3 diode5
0 0 0 -18.25 -1.625 -6 5
1 0.233016 1 -10.25 8.25 -8.125 5
2 0.475228 2 19.5 -4.125 -10.875 5
3 0.705884 3 0.571429 14.1429 -4.42857 5
4 0.9408 4 10 -21 0.625 5
5 1.1806 5 16 6.75 1.125 5
6 1.42225 6 15.75 24.125 3 5
7 1.66196 7 -1.75 -10.75 37.125 5
8 1.90008 8 -36.625 12.5 -13.375 5
9 2.13927 9 13.5 -19.25 -7.375 5
10 2.36863 10 17.625 2.25 -32.875 5
Took 0:00:03.030388
Scanning, acquisition chain and data production¶
During the scan creation, all counters passed as argument are introspected in order to build the acquisition chain.
The acquisition chain is a tree that reflects the hierarchy between the different involved objects.
The root of the tree is the top master. The top master will produce the triggers and propagate them along the branches of the tree. All tree nodes with associated counters will start data acqusition in parallel while receiving the trigger from their parent nodes.
IN [65]: s=ascan(roby,0,10,10,0.1,MG1,diode5, save=False)
IN [66]: print(s.acq_chain._tree)
acquisition chain
└── axis
└── timer
├── simulation_diode_sampling_controller
├── simulation_diode_sampling_controller
└── simulation_diode_sampling_controller