##### Page tree
Go to start of banner

# Sardana How-To

This page offers you an overview on how the beamline is controlled.

The content below can also be found in the sub pages if this page is a bit overwhelming.

# Beamline Shutters and Interlock

## Close Beamline Shutter

shclose
• Closes the beamline shutter.
• Syntax: shclose <area>
• Optional Parameters:
• <area> == The area of which you want to close the shutter. Available areas are: OH, EH1, and EH2.

Since <area> is an optional parameter one does not have to provide the area, the software will figure this one out by itself.

Please be patient. The shutters are slow devices. Depending on the state of other shutters it might take a while (10 seconds) until you get a confirmation that the shutter is actually closed.

## Open Beamline Shutter

shopen
• Opens the beamline shutter when allowed.
• Syntax: shopen <area>
• Optional Parameters:
• <area> == The area of which you want to open the shutter. Available areas are: OH, EH1, and EH2.

Since <area> is an optional parameter one does not have to provide the area, the software will figure this one out by itself.

Please be patient. The shutters are slow devices. Depending on the state of other shutters it might take a while (10 seconds) until you get a confirmation that the shutter is open.

## Beamline Shutter Status

shstate
• Returns the beamline shutter state.
• Syntax: shstate <area>
• Optional Parameters:
• <area> == The area of which you want to close the shutter. Available areas are: OH, EH1, and EH2.

Since <area> is an optional parameter one does not have to provide the area, the software will figure this one out by itself.

## Open Experimental Hutch

openhutch
• Opens the experimental hutch.
• Syntax: openhutch <area>
• Optional Parameters:
• <area> == The area which you want to open. Available areas are: OH, EH1, and EH2.

Since <area> is an optional parameter one does not have to provide the area, the software will figure this one out by itself.

Shutters will be closes automatically if needed.

Please be patient. The shutters are slow devices. Depending on the state of other shutters it might take a while (10 seconds) until you get a confirmation that the interlock is broken.

# Motor Stages

## Current Position and Limits

wm
• Prints the current position and the higher and lower limit of the stage
• Syntax: wm <stage_name>
• <stage_name> == Name of the stage to move.
• Examples:
• Input
wm samy
Output
samy
User
High               2.0
Current            0.0
Low                0.0

The current position is 0.0. The upper limit is 2.0 and the lower limit is 0.0.

• Get the information on multiple stages at once.

Input
wm samx samy samz
Output
exp_dmy01      exp_dmy02      exp_dmy03
User
High               2.0           10.0            1.0
Current            0.0           0.35           -0.1
Low                0.0            1.0           -1.0

## Absolute Movements

mv
• Moves a stage to an absolute coordinate
• Syntax: mv <stage_name> <coordinate>
• <stage_name> == Name of the stage to move.
• <coordinate> == Coordinate where to move to.
• Examples:
• Move "samy" to 10

mv samy 10
• Move "samy" to 10 and "samz" to 4

mv samy 10 samz 4
umv
• Moves a stage to an absolute coordinate and prints the current location to the terminal
• Syntax: umv <stage_name> <coordinate>
• <stage_name> == Name of the stage to move.
• <coordinate> == Coordinate where to move to.
• Examples:
• Move "samy" to 10

umv samy 10
• Move "samy" to 10 and "samz" to 4

umv samy 10 samz 4

## Relative Movements

mvr
• Moves a stage to a relative coordinate
• Syntax: mvr <stage_name> <coordinate>
• <stage_name> == Name of the stage to move.
• <coordinate> == Coordinate where to move to.
• Examples:
• Move "samy" by 10

mvr samy 10
• Move "samy" by 10 and "samz" by 4

mvr samy 10 samz 4
umvr
• Moves a stage to a relative coordinate and prints the current location to the terminal
• Syntax: umvr <stage_name> <coordinate>
• <stage_name> == Name of the stage to move.
• <coordinate> == Coordinate where to move to.
• Examples:
• Move "samy" by 10

umvr samy 10
• Move "samy" by 10 and "samz" by 4

umvr samy 10 samz 4
tw
• Tweaks the position of a stage by the give step size. The stage will not move after the first enter but will enter an interactive mode. In interactive mode:
• Each time one presses "enter", the stage moves by the selective relative coordinate.
• One can change the direction by typing "+" or "-"
• One can change the relative coordinate by typing the coordinate.
• Exit interactive mode, type anything else, e.g. "q".
• Syntax: tw <stage_name> <step_size>
• <stage_name> == Name of the stage to move.
• <step_size> == Step size.
• Examples:
• Tweak "samy" by 0.005

tw samy 0.005

Each time you you press enter after executing the command the stage will move.

• Change the direction without changing the step size.

-
• Change the step size

-0.01
• Exit interactive mode

q

## Saving and Restoring Positions

### Save Stage Positions

save_pos
• Saves the position of one or multiple stages for later use.
• Syntax: save_pos <id_name> [  <stage_name> ] <destination>
• <id_name> == The identifier used to identify the saved positions.
• <stage_name> == A list of stage names of which to store the position.
• <destination> == Optional parameter on where to save the positions depending on their use.
• Possible destinations are:
• experiment: For all experiment related positions. The positions are saved with the experimental data and can not be accessed by another experiment.
• endstation: For all endstation related positions.
• beamline: For all beamline related positions.
• Default value

By default the positions are saved as "experiment" positions.

• Examples:
• 1 motor
save_pos sample_in [samy]
• multiple motors
save_pos exchange [samy samx samz samphi]

### Restore Stage Positions

restore_pos
• Restores the position of one or multiple stages.
• Syntax: restore_pos <id_name> <source> <interactive>
• <id_name> == The identifier used to identify the saved positions.
• <source> == Optional parameter. From where to restore the positions.
• Possible sources are:
• experiment: For all experiment related positions. The positions are saved with the experimental data and can not be accessed by another experiment.
• endstation: For all endstation related positions.
• beamline: For all beamline related positions
• <interactive> == Optional parameter, enables are disables the prompts for user input.
• Examples:
• Restore some positions

Start the restore process of the ID "sample_in"

restore_pos sample_in

In interactive mode you will be prompted:

0 - Restore the latest positions.
1 - Show position history. [0]

Upon selecting option 0:

These are the positions that will be restored:
0 - csamx: 62.400000 --> 62.39999999999999
1 - csamy: 37.000000 -->       37.0
Do you want to restore these positions (Y/N)

It shows:

• The index.
• The stage name.
• The current position.
• The position that will be restored.

One can select yes to restore all or use the index to restore one or more by using the index, which is show in front of the stage name. Below are some example of the fancy indexing:

Indexing examples
1 --> will restore the position of stage 1.
[0,1, 66] --> will restore stages 0, 1, and 66
[0:3,9] --> will restore stages stages 0, 1, 2, and 9

The prompt on which stages need to be restored is recursive so you will always see which stages will be restored if you reply "yes".

• History view

Start the restore process of the ID "sample_in"

restore_pos sample_in

In interactive mode you will be prompted:

0 - Restore the latest positions.
1 - Show position history. [0]

Upon selecting option 0:

--             csamx --             csamy --        time saved
0 -- 42.39999999999999 --              27.0 -- 2020-03-02 15:01:51
1 -- 42.39999999999999 --              27.0 -- 2020-03-10 07:40:43
2 -- 62.39999999999999 --              37.0 -- 2020-03-10 10:59:02
3 -- 62.39999999999999 --              37.0 -- 2020-03-10 11:01:35
Which positions would you like to restore?

It shows:

• The index.
• The stage names.
• The position that was saved.
• The time it was saved.

You can use the index again to select which time point you want to restore. The prompt will resume as shown in the previous example.

• Show the stored tags

Call restore_pos without any arguments and you will get a list of all saved positions of this source.

restore_pos

sample_out
sample_in
detector_in
detector_out
Content

# Conventions

AxisInfo
X
• Direction along the X-ray beam.
• Positive is downstream.
Y
• Direction perpendicular to the X-ray beam in the plane of the storage ring.
• Positive is away from the ring.
Z
• Vertical direction
• Positive is up.
Phi
• Rotation around the Z axis.
• Positive is CCW when looking from above.

# File Saving

The root where the data is saved is always set by the beamline scientist. After this the user can influence where the data goes by using one of the following commands:

newsession

Purpose

• Creates a new session, which will be the base for all the saved files of the following scans.
• Can be used to separate samples in different folders.

Syntax

• newsession <session_name>
Special characters, including spaces, will be removed automatically!

# Scan Information

scan_info

Purpose

• Add metadata information to the next scan or a series of scans.

Syntax

• scan_info <information> <persistent>
• <information> == Information about the following scan(s).
• <persistent> == Determines if the provided information is added to only the next or every consecutive scan.

Examples

If the information that you want to add includes spaces you have to declare it as a string using quotes ("").

• Add information to only the next scan:
scan_info "some info about the next scan"
• Add information to any consecutive scan:
scan_info "some info about the next scan" True

# Test Exposures

ct
• Count with all selected 0D and 1D detectors.
• Syntax: ct <exposure time>
• <exposure_time> == The exposure time. If none is given it will expose for 1 second.
cnt
• Count with all selected 0D, 1D, and 2D detectors.
• Syntax: cnt <exposure time>
• <exposure_time> == The exposure time. If none is given it will expose for 1 second.

Implemented 2D detectors

Currently only the Eiger supports test exposures.

# Scanning

## Step Scans

Detector Info

Following detectors are not compatible with step scans:

• Maia

### One Dimensional Step Scans

ascan
• 1D step scan based on absolute coordinates.
• Syntax: ascan <axis> <start> <stop> <nr_intervals> <exposure time>
• <axis> == The name of the stage to be scanned.
• <start> == The start coordinate as an absolute value.
• <stop> == The end coordinate as an absolute value.
• <nr_intervals> == The number of intervals making up the scan.
• <exposure time> == The exposure time per scan point in seconds.

Stages DO NOT move back to their original position.

dscan
• 1D step scan based on relative coordinates.
• Syntax: dscan <axis> <start> <stop> <nr_intervals> <exposure time>
• <axis> == The name of the stage to be scanned.
• <start> == The start coordinate as a relative value.
• <stop> == The end coordinate as a relative value.
• <nr_intervals> == The number of intervals making up the scan.
• <exposure time> == The exposure time per scan point in seconds.

Stages move back to their original position.

### Two Dimensional Step Scans

dmesh
• 2D scan based on relative coordinates.
• Syntax: dmesh <axis0> <start0> <stop0> <nr_intervals0> <axis1> <start1> <stop1> <nr_interval1> <exposure time>
• <axis0> == The name of the stage 0 (fastest) to be scanned
• <start0> == The start coordinate as an relative value.
• <stop0> == The end coordinate as an relative value.
• <nr_intervals0> == The number of intervals making up the scan.
• <axis1> == The name of the stage 1 (slowest) to be scanned.
• <start1> == The start coordinate as an absolute value.
• <stop1> == The end coordinate as an absolute value.
• <nr_intervals1> == The number of intervals making up the scan.
• <exposure time> == The exposure time per scan point in seconds.
• <bidirectional> == Optional boolean parameter: Bidirectional movement of <axis0> (Snake scan). Standard value is False

Stages move back to their original position.

imesh
• Like mesh but for scanning linked stages. Such as hexapods or some virtual motors.
• 2D scan based on absolute coordinates.
• Syntax: mesh <axis0> <start0> <stop0> <nr_intervals0> <axis1> <start1> <stop1> <nr_interval1> <exposure time>
• <axis0> == The name of the stage 0 (fastest) to be scanned.
• <start0> == The start coordinate as an absolute value.
• <stop0> == The end coordinate as an absolute value.
• <nr_intervals0> == The number of intervals making up the scan.
• <axis1> == The name of the stage 1 (slowest) to be scanned.
• <start1> == The start coordinate as an absolute value.
• <stop1> == The end coordinate as an absolute value.
• <nr_intervals1> == The number of intervals making up the scan.
• <exposure time> == The exposure time per scan point in seconds.
• <bidirectional> == Optional boolean parameter: Bidirectional movement of <axis0> (Snake scan). Standard value is False

Stages DO NOT move back to their original position.

jmesh
• 2D jittered scan based on absolute coordinates.
• Syntax: jmesh <axis0> <start0> <stop0> <nr_intervals0> <jitter_amplitude0> <axis1> <start1> <stop1> <nr_interval1> <jitter_amplitude1> <exposure time>
• <axis0> == The name of the stage 0 (fastest) to be scanned.
• <start0> == The start coordinate as an absolute value.
• <stop0> == The end coordinate as an absolute value.
• <nr_intervals0> == The number of intervals making up the scan.
• <jitter_amplitude0> == The jitter amplitude factor to the step size. Range = [0, 1].
• <axis1> == The name of the stage 1 (slowest) to be scanned.
• <start1> == The start coordinate as an absolute value.
• <stop1> == The end coordinate as an absolute value.
• <nr_intervals1> == The number of intervals making up the scan.
• <jitter_amplitude1> == The jitter amplitude factor to the step size. Range = [0, 1].
• <exposure time> == The exposure time per scan point in seconds.
• <bidirectional> == Optional boolean parameter: Bidirectional movement of <axis0> (Snake scan). Standard value is False

Examples

Example 1

Scan Command jmesh scany 10 20 10 0.5 scanz 50 60 10 0.1 0.01 $//$ $//$

Example 2

Scan Command jmesh scany 10 20 10 0.5 scanz 50 60 10 0 0.01 $//$ $//$Meaning that the second axis will not jitter.
mesh
• 2D scan based on absolute coordinates.
• Syntax: mesh <axis0> <start0> <stop0> <nr_intervals0> <axis1> <start1> <stop1> <nr_interval1> <exposure time>
• <axis0> == The name of the stage 0 (fastest) to be scanned.
• <start0> == The start coordinate as an absolute value.
• <stop0> == The end coordinate as an absolute value.
• <nr_intervals0> == The number of intervals making up the scan.
• <axis1> == The name of the stage 1 (slowest) to be scanned.
• <start1> == The start coordinate as an absolute value.
• <stop1> == The end coordinate as an absolute value.
• <nr_intervals1> == The number of intervals making up the scan.
• <exposure time> == The exposure time per scan point in seconds.
• <bidirectional> == Optional boolean parameter: Bidirectional movement of <axis0> (Snake scan). Standard value is False

Stages DO NOT move back to their original position.

meshme
• 2D scan based on absolute coordinates. Certain detectors take multiple exposures at each scan point.
• Syntax: meshme <axis0> <start0> <stop0> <nr_intervals0> <axis1> <start1> <stop1> <nr_interval1> <exposure time> <exposures_per_point> <bidirectional>
• <axis0> == The name of the stage 0 (fastest) to be scanned.
• <start0> == The start coordinate as an absolute value.
• <stop0> == The end coordinate as an absolute value.
• <nr_intervals0> == The number of intervals making up the scan.
• <axis1> == The name of the stage 1 (slowest) to be scanned.
• <start1> == The start coordinate as an absolute value.
• <stop1> == The end coordinate as an absolute value.
• <nr_intervals1> == The number of intervals making up the scan.
• <exposure time> == The exposure time per scan point in seconds.
• <exposures_per_point> == The number of exposures certain detectors take per scan point.
• <bidirectional> == Optional boolean parameter: Bidirectional movement of <axis0> (Snake scan). Standard value is False

Stages DO NOT move back to their original position.

Implemented detectors:

• Eiger

## Continuous Scans

Below the available commands are listed.

Detector Info

Following detectors are not compatible with continuous scans:

• MarCCD165

Triggering Device

Depending on which detectors are used one needs to select a scan device that takes care of the detector triggering. This is typically set up by the beamline scientist.

The available scan devices can be found via the command:

scandevice_list

### One Dimensional Continuous Scans

cascan
• 1D continuous scan based on absolute coordinates and number of intervals.
• Syntax: cascan <axis> <start> <stop> <nr_intervals> <exposure time>
• <axis> == The name of the stage to be scanned.
• <start> == The start coordinate as an absolute value.
• <stop> == The end coordinate as an absolute value.
• <nr_intervals> == The number of intervals making up the scan.
• <exposure time> == The exposure time per scan point in seconds.
cascans
• 1D continuous scan based on absolute coordinates and step size.
• Syntax: cascans <axis> <start> <stop> <step_size> <exposure time>
• <axis> == The name of the stage to be scanned.
• <start> == The start coordinate as an absolute value.
• <stop> == The end coordinate as an absolute value.
• <step_size> == The step size in the same unit as the stage.
• <exposure time> == The exposure time per scan point in seconds.
cdscan
• 1D continuous scan based on relative coordinates and number of intervals.
• Syntax: cdscan <axis> <start> <stop> <nr_intervals> <exposure time>
• <axis> == The name of the stage to be scanned.
• <start> == The start coordinate as a relative position to the current position.
• <stop> == The end coordinate as a relative position to the current position.
• <nr_intervals> == The number of intervals making up the scan.
• <exposure time> == The exposure time per scan point in seconds.
cdscans
• 1D continuous scan based on relative coordinates and step size.
• Syntax: cdscans <axis> <start> <stop> <step_size> <exposure time>
• <axis> == The name of the stage to be scanned.
• <start> == The start coordinate as a relative position to the current position.
• <stop> == The end coordinate as a relative position to the current position.
• <step_size> == The step size in the same unit as the stage.
• <exposure time> == The exposure time per scan point in seconds.

### Two Dimensional Continuous Scans

cmesh
• 2D continuous scan based on absolute coordinates and number of intervals.
• Syntax: cmesh <axis0> <start0> <stop0> <nr_intervals0> <axis1> <start1> <stop1> <nr_interval1> <exposure time>
• <axis0> == The name of the stage 0 (fastest) to be scanned.
• <start0> == The start coordinate as an absolute value.
• <stop0> == The end coordinate as an absolute value.
• <nr_intervals0> == The number of intervals making up the scan for axis 0.
• <axis1> == The name of the stage 1 (slowest) to be scanned.
• <start1> == The start coordinate as an absolute value.
• <stop1> == The end coordinate as an absolute value.
• <nr_intervals1> == The number of intervals making up the scan for axis 1.
• <exposure time> == The exposure time per scan point in seconds.

cmeshr
• 2D continuous scan based on an absolute start coordinates, a range, and number of intervals.
• Syntax: cmeshr <axis0> <start0> <range0> <nr_intervals0> <axis1> <start1> <range1> <nr_intervals1> <exposure time>
• <axis0> == The name of the stage 0 (fastest) to be scanned.
• <start0> == The start coordinate as an absolute value for axis 0.
• <range0> == Range for axis 0.
• <nr_intervals0> == The number of intervals making up the scan for axis 0.
• <axis1> == The name of the stage 1 (slowest) to be scanned.
• <start1> == The start coordinate as an absolute value.
• <nr_intervals1> == The number of intervals making up the scan for axis 1.
• <step_size1> == The step size in the same unit as the stage.
• <exposure time> == The exposure time per scan point in seconds.

cmeshrs
• 2D continuous scan based on an absolute start coordinates, a range, and step size.
• Syntax: cmeshrs <axis0> <start0> <range0> <step_size0> <axis1> <start1> <range1> <step_size1> <exposure time>
• <axis0> == The name of the stage 0 (fastest) to be scanned.
• <start0> == The start coordinate as an absolute value for axis 0.
• <range0> == Range for axis 0.
• <step_size0> == The step size in the same unit as the stage.
• <axis1> == The name of the stage 1 (slowest) to be scanned.
• <start1> == The start coordinate as an absolute value.
• <range1> == Range for axis 1.
• <step_size1> == The step size in the same unit as the stage.
• <exposure time> == The exposure time per scan point in seconds.

cmeshs
• 2D continuous scan based on absolute coordinates and step size.
• Syntax: cmeshs <axis0> <start0> <stop0> <step_size0> <axis1> <start1> <stop1> <step_size1> <exposure time>
• <axis0> == The name of the stage 0 (fastest) to be scanned.
• <start0> == The start coordinate as an absolute value.
• <stop0> == The end coordinate as an absolute value.
• <step_size0> == The step size in the same unit as the stage.
• <axis1> == The name of the stage 1 (slowest) to be scanned.
• <start1> == The start coordinate as an absolute value.
• <stop1> == The end coordinate as an absolute value.
• <step_size1> == The step size in the same unit as the stage.
• <exposure time> == The exposure time per scan point in seconds.
cdmesh
• 2D continuous scan based on relative coordinates and number of intervals.
• Syntax: cdmesh <axis0> <start0> <stop0> <nr_intervals0> <axis1> <start1> <stop1> <nr_intervals1> <exposure time>
• <axis0> == The name of the stage 0 (fastest) to be scanned.
• <start0> == The start coordinate as a relative position to the current position.
• <stop0> == The end coordinate as a relative position to the current position.
• <nr_intervals0> == The number of intervals making up the scan for axis 0.
• <axis1> == The name of the stage 1 (slowest) to be scanned.
• <start1> == The start coordinate as a relative position to the current position.
• <stop1> == The end coordinate as a relative position to the current position.
• <nr_intervals1> == The number of intervals making up the scan for axis 1.
• <exposure time> == The exposure time per scan point in seconds.
cdmeshs
• 2D continuous scan based on relative coordinates and step size.
• Syntax: cdmeshs <axis0> <start0> <stop0> <step_size0> <axis1> <start1> <stop1> <step_size1> <exposure time>
• <axis0> == The name of the stage 0 (fastest) to be scanned.
• <start0> == The start coordinate as a relative position to the current position.
• <stop0> == The end coordinate as a relative position to the current position.
• <step_size0> == The step size in the same unit as the stage.
• <axis1> == The name of the stage 1 (slowest) to be scanned.
• <start1> == The start coordinate as a relative position to the current position.
• <stop1> == The end coordinate as a relative position to the current position.
• <step_size1> == The step size in the same unit as the stage.
• <exposure time> == The exposure time per scan point in seconds.

## Tomography

ctomomesh
• 3D continuous scan based on absolute coordinates.
• Syntax: ctomomesh <axis0> <start0> <stop0> <nr_intervals0> <axis1> <start1> <stop1> <nr_intervals1>
<axis2><start2><end2><nr_intervals2><exposure_time>
• <axis0> == The name of the stage 0 (fastest) to be scanned.
• <start0> == The start coordinate as an absolute value.
• <stop0> == The end coordinate as an absolute value.
• <nr_intervals0> == The number of intervals making up the scan.
• <axis1> == The name of the stage 1 (middle) to be scanned.
• <start1> == The start coordinate as an absolute value.
• <stop1> == The end coordinate as an absolute value.
• <nr_intervals1> == The number of intervals making up the scan.
• <axis2> == The name of the stage 2 (slowest) to be scanned.
• <start2> == The start coordinate as an absolute value.
• <stop2> == The end coordinate as an absolute value.
• <nr_intervals2> == The number of intervals making up the scan.
• <exposure_time> == Exposure time in seconds.

Scanning Mode

The tomography axis can be operated in several ways. Have a look at the different modes.

At the moment only the slowest axis can be the tomography stage when applying fancy scanning schemes.

Content

## XANES

cxanesscan
• Continuous point xanes scan.
• cxanesscan <energy_start><energy_end><energy_intervals><exposure time><repetitions>
• <energy_start> == Energy start.
• <energy_end> == Energy end.
• <energy_intervals> == The number of energy intervals.
• <exposure time> == The exposure time per scan point in seconds.
• Optional Parameters:
• <repetitions> == The number of repetitions of the energy region.

Scan Repetitions

When the number of repetitions is larger than 1, the energy will be scanned alternating from <energy_start> to <energy_end> and from <energy_end> to <energy_start>.

Energy Regions

Energy regions are not supported.

cxanesmesh2d
• 3D scan based on absolute coordinates saved as separate 2D scans.
• Syntax: cxanesmesh2d <axis0> <start0> <stop0> <nr_intervals0> <axis1> <start1> <stop1> <nr_interval1>
<energy_start><energy_end><energy_intervals><exposure time>
• <axis0> == The name of the stage 0 (fastest) to be scanned.
• <start0> == The start coordinate as an absolute value.
• <stop0> == The end coordinate as an absolute value.
• <nr_intervals0> == The number of intervals making up the scan.
• <axis1> == The name of the stage 1 (slowest) to be scanned.
• <start1> == The start coordinate as an absolute value.
• <stop1> == The end coordinate as an absolute value.
• <nr_intervals1> == The number of intervals making up the scan.
• <energy_start> == Region energy start.
• <energy_end> == Region energy end.
• <energy_intervals> == The number of energy intervals.
• <exposure time> == The exposure time per scan point in seconds.

Information on energy regions can be found at the end of the Xanes section.

Why as separate 2D scans (cxanesmesh2d)

A 3D set of 2D scans (cxanesmesh2d) is currently preferred as processing with GeoPIXE offers more flexibility for xanes scans stored in this manner (as separate scans).

cxanesmesh3d
• 3D continuous scan based on absolute coordinates.
• Syntax: cxanesmesh3d <axis0> <start0> <stop0> <nr_intervals0> <axis1> <start1> <stop1> <nr_interval1>
<energy_start><energy_end><energy_intervals><exposure time>
• <axis0> == The name of the stage 0 (fastest) to be scanned.
• <start0> == The start coordinate as an absolute value.
• <stop0> == The end coordinate as an absolute value.
• <nr_intervals0> == The number of intervals making up the scan.
• <axis1> == The name of the stage 1 (slowest) to be scanned.
• <start1> == The start coordinate as an absolute value.
• <stop1> == The end coordinate as an absolute value.
• <nr_intervals1> == The number of intervals making up the scan.
• <energy_start> == Region energy start.
• <energy_end> == Region energy end.
• <energy_intervals> == The number of energy intervals.
• <exposure time> == The exposure time per scan point in seconds.

Energy Regions

Information on energy regions can be found at the end of the Xanes section.

Energy Regions

You can make as many energy regions as you like by just repeating the 4 arguments per region.

Example: scan energy between 6000 6010 with 2 eV steps and 0.01 s per point and between 6010 6020 with 1 eV step and 0.02 s per point.
cxanesmesh2d samy 0 1 10 samz 0 1 10 6000 6010 5 0.01 6010 6020 10 0.02

You can see that the end energy of interval 1 is the same as the start energy of interval 2. In this case the energy is only scanned once and the exposure time of interval 2 is used. The full scanned energies and used times are shown in the following spreadsheet:

Content

# Sequence of Commands/Scans

You can execute a list of commands by putting all the commands in a text file. Each command should be written on a new line.

scan_sequence
• Execute a sequence of commands
• Syntax: scan_sequence <sequence_name> <stop_on_error>
• <sequence_name> ==
• The name of the queue.
• The name of the file containing the commands.
• Optional Parameters:
• <stop_on_error> == default is False, meaning the sequence will only report errors but will continue on and provide a summary of the scans that had errors at the end of the sequence.
When it is preferred to stop when an error occurs, append True at the end of the command.
Queue Based Sequences
• To execute a queue based sequence, one provides the name of the queue.

File Based Sequences

file_name

• The file should have the extension ".seq".
• The file name provided can be:
• A file name.
• A relative path.
• An absolute path.

When a file name is provided, the file is assume to be located in the standard sequences location:

/gpfs/current/shared/sequences

It is possible to alter the sequence file while the sequence is already running, with the modified sequence executed accordingly. One can add/remove/alter commands after the line specifying the command that is currently running.

Note the following warnings:

• One can only change the sequence file on the pc that is running the experiment, otherwise the changes are not recognised!!!
• The sequence file should only be edited with the editors sublime or emacs. Other text editors will cause errors.

File Layout

• Each command should be written on a new line.
• Comments can be included by starting the line with a hash (#).
• Empty lines are allowed to keep the file easily human readable.
• Files can be created on Linux and Windows.

For example:

mv samz 1
dscan samy -1 1 10 0.1
mvr samz 1
dscan samy -2 2 20 0.5
detector_use maia 0

To execute the sequence you run the following command:

scan_sequence <path_to_file>

Example:

scan_sequence /gpfs/current/shared/sequences/overnight_scans01.seq

Content

# Attenuation of the Beam

The X-ray beam can be attenuated using an absorber which contains Al and Si absorbers of different thicknesses.
Upon requesting an attenuation the device calculates the needed absorber thickness for the current energy.
One can select which attenuator material to be used.

## Setting the Attenuation

attenuate
• Setting the attenuation
• Syntax: attenuate <attenuation> <absorber_material>
• <attenuation> == The requested attenuation in %.
• Optional parameters:
• <absober_material> == To select which filter material to use.
Examples
• Setting the attenuation (51 %) using any available attenuator material:

attenuate 51

• Setting the attenuation (19 %) only using the aluminium absorber:

attenuate 19 Al

## Incrementing the Attenuation

attenuate
• Incrementing the attenuation
• Syntax: attenuate <attenuation_increment> <absorber_material>
• <attenuation> == The requested attenuation increment in %.
• Optional parameters:
• <absober_material> == To select which filter material to use.
Examples
• Increasing the attenuation (+10 %) using any available attenuator material:

attenuate +10

• Decreasing the attenuation (-19 %) only using the aluminium absorber:

attenuate -19 Al
• Default increment/decrement:

default value

Default increment/decrement is 5 %.

decrement
attenuate -
increment
attenuate +

## Report on the Current Attenuation

attenuate
• Report of the current attenuation settings
• Syntax: attenuate
Example
• Getting the attenuation report:

attenuate
• Output:

Total attenuation (@ 15000 eV): 20.18 %
Al used: 105 micron
Si used: 0 micron
Filter material restricted to: any
Lower attenuation: 19.32 %
Higher attenuation: 21.04 %
• Explanation of the output:
• Total attenuation at the given energy (15,000 eV) → 20.18 %
• Used absorber thickness per filter material in micron.
• Restriction of the absorber material.
• Lower attenuation → the attenuation % of the combination of the absorbers that provides 1 step less attenuation.
• Higher attenuation → the attenuation % of the combination of the absorbers that provides 1 step more attenuation.

Content

# Extra Bells and Whistles

A user is advised not to change these parameters if one does not know what he/she is doing .

## Scan Mode

Scan mode allows you to customise certain scans.
The scan modes can be listed by:

scanmode_list

Setting a scanmode can be done by:

scanmode_use <name> <value>

The following table provides you with some extra information on the available options:

ModePossible ValuesInfo
acquisition_mode0, 1

See details in Acquisition Modes table below.

energy_scan_mode0, 1, 2Determines which axis is the energy during continuous xanes scans.
• 0 == fast axis
• 1 == middle axis
• 2 == slowest axis
golden_angle_rangeany integer

The maximum of the range over which is sampled during a golden angle acquisition.

overscan_pixels-

Determines the overscan area during continuous scans.
Syntax: <overscan_pixels> <overscan_modus>

• <overscan_pixels> == A fixed number of pixels added to the fast axis to allow for stage acceleration.
• <overscan_modus> == The modus of how the number of overscan pixels is determined.
• 0 == The fixed <overscan_pixels> is used to calculate the overscan distance.
• 1 == The distance need to reach the required scan velocity is used.
• 2 == The fixed <overscan pixels> number is enforced as a minimum overscan distance.
• 3 == The fixed <overscan pixels> number is enforced as a maximum overscan distance.

Example

Setting the fixed number of <overscan_pixels> to 5 and the <overscan_modus> to modus 1.

scanmode_use overscan_pixels 5 1
scanning_mode0

Determines the stage scanning mode during continuous scans.

• 0 == snake wise
tomography_mode0, 1
• 0 == Normal incremental between begin and end position with the given interval
• 1 == Golden angle scan.
triggering_mode0, 1See details in the Triggering Modes table below.

### Acquisition Modes

Mode

Info

Use Case

Warnings

0TTL gate is used by all detectors.Typical Scanning
1TTL gate is used for all non photon counting detectors. The photon counting detectors use their internal exposure time clock.Ptychography Scans In this mode the photon counting detectors might miss pixels. After the scan, one needs to compile a list of where the detectors were triggered.

### Triggering Modes

ModeTriggering Based On
0Position
1Time
Content

# Selecting Detectors

## Select 0D or 1D Detectors

0D and 1D counting detectors are available via the following command in spock:

expconf

## Select 2D Detectors

• Show available detectors:

detector_list
• Select detector for use:

detector_use detector_name True
• Deselect detector for use:

detector_use detector_name False

Instead of True and False, one can also use 1 and 0.

Info on Available Detectors

NameInfo
Eiger4m_01P06 Eiger
Lambda750k_01Lambda Si 750k 01 Detector Pool
Lambda750k_02Lambda Si 750k 02 Detector Pool
Maia

Maia Detector

PCO4000_01PCO4000 EH1
PCO4000_02PCO4000 EH1
Pilatus300k_01Pilatus 300k from the detector loan pool
Pilatus300k_02Pilatus 300k from P10
SLcamSLcam

# Keithley Picoameters

Some of the detectors use Keithley picoameters. To check or change the gain one can use the following command:

## Reporting the Gain Setting

keithley
• Reporting the gain setting.
• Syntax: keithley <device>
• <device> == The device in question.
Example
• Show the current gain setting for i0:

keithley i0

Output:

Current gain for i0 is: 10

## Setting the Gain

keithley
• Setting the gain.
• Syntax: keithley <device> <gain_action>
• <device> == The device in question.
• <gain_action> == This can be an integer, setting the gain to the provided value, or a '+' | '-' sign to increase or decrease the gain setting by 1.
Examples
• Setting the gain to 6:

keithley i0 6

Output:

Changed gain for i0 to: 6
• Decreasing/Increasing the gain by 1:

Increase
keithley i0 +
Decrease
keithley i0 -

Output:

Changed gain for i0 to: 7

# Lakeshore Temperature Controllers

## Listing the Available Controllers

Lakeshore
• Reporting the available controllers.
• Syntax: lakeshore
Example
lakeshore

Output:

Available devices: ['lakeshore_340_01']

## Listing the Available Parameters

Lakeshore
• Reporting the available parameters for the controller.
• Syntax: lakeshore <device>
• <device> == The device in question.
Example
lakeshore lakeshore_340_01

Output:

Available parameters: ['setpoint', 'temp', 'ramp_rate', 'start_ramp', 'stop_ramp', 'pid']

## Reporting a Parameter

Lakeshore
• Reporting the temperature value.
• Syntax: lakeshore <device> <parameter> <channel>
• <device> == The device in question.
• <parameter> == The parameter to report the value of.
• <channel> == Optional parameter for parameters of which are multiple.
Example with a channel
• Show the current temperature for channel 1:

lakeshore lakeshore_340_01 temp 1

Output:

Current temperature is: 25.1 C
Example without a channel
• Show the ramp rate:

lakeshore lakeshore_340_01 ramp_rate

Output:

ramp_rate is set to: 66.666

## Changing a Parameter

Lakeshore
• Changing the ramp rate.
• Syntax: lakeshore <device> <parameter> <new_value>
• <device> == The device in question.
• <parameter> == The parameter to report the value of.
• <new_value> == The value(s) to which the parameter need to be set. Depending on the parameter these can be multiple values.
Example with a single value parameter
• Show the current temperature for channel 1:

lakeshore lakeshore_340_01 setpoint 100

Output:

setpoint was set to: 100
Example with a multiple values parameter
• Show the ramp rate:

lakeshore lakeshore_340_01 pid 100 0.1 10

Output:

pid is set to: 100 0.1 10

# Detector Modes

## Listing Detector Modes

detectormodes_list

## Setting Detector Modes

For example one wants to set for the detector "picoscale_01" the mode "source_mode" to 2:

detectormodes_set [picoscale_01,source_mode] 2

## Detector Modes Descriptions

### PicoScale

#### Frame Rate

The PicoScale only supports discrete frame rates:

ModeHz

0

1220
12441
24882
39765
419531
539062
678125
7156250

#### Source Mode

Determines which data sources are automatically selected when available.

ModeSelected Sources
0
• All
1
• Position
2
• Position
• Raw Signal
3
• Position
• Raw Signal
• Temperature | Pressure | Humidity
Content

# Listing the Sardana Options

sardanaoptions_list

# Setting a Sardana Option

setting an option (e.g. for setting the ):

sardanaoptions_set [photon_check,enabled] True

# Available Options

Sardana options are extra options added to make your life easier. These options can be enabled or disabled or have different modes.

OptionInfoMode Info
Hardware AccelerationDifferent options for hardware acceleration.See section below.
Triggering
• pre_line: Special pulse pre line
• pre_scan: Special pre scan pulse
• post_line: Special pulse post line
• post_scan: Special pulse post scan
• True
• False
Shutter ModeMode for the main beamline shutters.
• 0 == off
• 1 == Automatic
• 2 == EH1 + EH2
SoundEnables or disables sounds of Sardana. Currently only a sound is played at the end of a scan.
• 0 == Muted
• 1 == On
Undulator
• offset. The energy offset of the undulator.(sardanaoptions_set [undulator,offset] 30)

## Check for Photons

### Enable/Disable

Enable or disable by toggling True | False

sardanaoptions_set [photon_check,enabled] True

## Hardware Acceleration

### Motor Controllers

Allows to enable and disable hardware acceleration of the motor controllers.

Content

• No labels