ScanPlan objects
Firstly, what is a scanplan? A scanplan is a grouped set of detector exposures. The set may
contain just one exposure (we call that a count scan, 'ct'
). Or it may be a series of exposures
taken one after the other, possibly with a delay between. We
call that a time-series (or 'tseries'
). We also support two kinds of temperature related scanplans, which are temperature ramp, 'Tramp'
and temperature list, Tlist
. More are also on the way, but
these simple scanplans may also be combined together in scripts, giving the user significant
control over how to construct their experiment.
Firstly, what is a ScanPlan? A ScanPlan
is a grouped set of detector exposures. The set may
contain just one exposure (we call that a count scan, ct
). Or it may be a series of exposures
taken one after the other, possibly with a delay between. We call that a time-series (or tseries
).
Other temperature-related plans supported are temperature ramp, Tramp
and temperature list scan, Tlist
.
More are also on the way, but these simple ScanPlan
may also be combined together in scripts,
giving the user significant control over how to construct their experiment.
To run a scan we need a ScanPlan
and a Sample
. The ScanPlan
is the detailed description of
what the scan will do, but it doesn’t generate any scan until it is run on a particular sample.
Separating a scan into a plan and an execution (which is different than how SPEC works
for those old enough) makes it very easy to run a number of different samples with the
exact same ScanPlan
, or (if you really want to) to collect dark images with exactly the same scan pattern, and so on.
We also want to save scan metadata accurately when the scan is actually run. To ensure this,
each scan object takes the scanplan parameters and it uses the same parameters
both to run the scan at run-time, and to save them, along with the sample information,
in the metadata for each exposure.
With this in mind, the workflow is that we never edit a ScanPlan and rerun it (stop that you SPEC people!). What we do is that we create a new ScanPlan object, every time we want to do a different, even slightly different, scan. These are all saved for reload and will be sent home with you at the end of the experiment.
Setting up ScanPlans
ScanPlan
takes Beamtime
, scanplan and corresponding arguments. Let’s type ScanPlan?
and hit return to find out more:
Here are some examples of valid count-type ScanPlan definitions:
>>> sc = ScanPlan(bt, ct, 5) # the simplest count scan definition
- A few things to note:
First argument is always
bt
, theBeamtime
object.The second argument is always the scanplan. In the example above, we are using count, so we use
ct
as the second argument.The scan parameter is fed in after scan type, starting from the third positional argument.
- Types of ScanPlan available in current version:
ct
just exposes the detector for a number of seconds. e.g.,ScanPlan(bt, ct, 17.5)
tseries
executes a series ofnum
counts of exposure timeexposure
seconds with a delay ofdelay
seconds between them. e.g.,ScanPlan(bt, tseries, 1, 59, 50)
will measure 50 scans of 1 second with a delay of 59 seconds in between each of them.Tramp
executes a temperature ramp from'startingT'
to'endingT'
in temperature steps ofTstep
with exposure time ofexposure
. e.g.,ScanPlan(bt, Tramp, 1, 200, 500, 5)
will automatically change the temperature, starting at 200 K and ending at 500 K, measuring a scan of 1 s at every 5 K step. The temperature controller will hold at each temperature until the temperature stabilizes before starting the measurement.Tlist
exposes the detector for a given exposure timeexposure
in seconds at each temperature from a user-defined temperature list. For example,ScanPlan(bt, Tlist, 20, [250, 180, 200, 230])
will drive the temperature controller to 250K, 180K, 200K and 230K and expose the detector for 20 seconds after the temperature controller equilibrates at each of the temperatures.
Summary table on ScanPlan:
ScanPlan
Syntax
Summary
ct
ScanPlan(bt, ct, 17.5)
a count scan for 17.5s
tseries
ScanPlan(bt, tseries, 1, 59, 50)
time series with 1s count time, 59s delay and 50 repeats
Tramp
ScanPlan(bt, Tramp , 1, 200, 500, 5)
temperature series with 1s count time, starting from 300k to 200k with 5k per step
Tlist
ScanPlan(bt, Tlist, 5, [250, 180, 200, 230])
exposure detector for 5s at 250K, 180K, 200K and 230K
OK, it is time to run our scans