The runSequencer package provides support for automating data taking runs of fixed duration. runSequencer is a ReadoutGui plugin that is compatible with nscldaq-8.1 and later.
To operate, you must use the ReadoutGUI from nscldaq-8.1 or later. At the NSCL, you can do this by using /usr/opt/daq/8.1/bin/ReadoutShell. See USING for more information on how to use this plugin.
For each run you can define a set of run parameters that are set through custom actions just prior to the start of the run. See CUSTOMIZING below for more information about how to setup these actions and how to specify the parameters.
Run sequences are called Run plans. Run plans are files that can be loaded into the sequencer, edited, saved, and executed. A run plan provides values for all of the parameters for each run in the sequence.
This section desribes using in two senses of the word: Incorporating the sequencerGui into ReadoutGUI, and operating the sequencer once it is installed. Setting up the parameter definitions and actions used by the sequencer are described in CUSTOMIZING below
To incorporate the sequencer into ReadoutGUI you must use a ReadoutCallouts.tcl file to extend ReadoutGui. This file must contain the line:
package require runSequencerFurthermore you must run a Readout GUI from nscldaq version 8.1 or later. At the NSCL, you can run the 8.1 version of the ReadoutGUI as follows: /usr/opt/daq/8.1/bin/ReadoutShell Note that when you run the Readout GUI, the sequencer.config and sequencerActions.tcl files are expected to exist. See CUSTOMIZING below for information about the contents of these files. see "FILES and ENVIRONMENT" for where they belong.
The sequencer creates a second window associated with the Readout GUI. This window consists mainly of a table with column labels defined by the sequencer.config file. Each row of the table represents a run in the sequence of runs in a run plan
You can edit the table to provide values for each of the parameters (columns) for each step in the run sequence. Navigate in the table by using the arrow keys, the mouse or the tab and shift tab keys. Once you are happy with your run plan you can save it using the
-> menu command.The
-> menu command allows you to read in a plan from file. This plan can be edited, and saved. -> clears the table.To execute a run plan, use the ReadoutGUIPanel to set the length of each run. (The sequencer will turn on timed runs when you start the sequence). Then click the
button to start the sequence. The button is relabeled while the plan is running. Clicking it while the plan is running ends the active run and stops the sequence. If event recording was enabled for an aborted run plan you are given the option to discard all the event data that was taken for the sequence.The sequencer is completely customizable. The label for each column and actions to take to set each column are defined by the sequencer.config file. This file is a text file. Each line in the file describes a column. Blank lines are ignored as are lines for which the first non-blank character is a hash (#) character. Fields in a line are separated by whitespace. Whitespace can be incorporated into a field either by quoting the field with double quotes (") or curly brackets (for example {this has spaces}).
Each column definition line of sequencer.config has fields in the following order.
The text that labels the column in the run plan.
A tcl command that is executed when it is time to change the value of the item in the column. The column name and the value of that cell of the table are appended to the command. If the set action is blank, no action is taken. The action function must return 0 on success or else the run plan will be aborted prior to starting the run for the failing step. Note that if an action can return and error it should indicate to the user what the error was.
A tcl command that is executed when the sequencer is set up, before executing any run plan. This is intended to be used for any one-time intialization required to access the item controlled by the table. The column name is appended to this command when it is called.
The actions defined in the sequencer.config file must come from somewhere. During initialization, the sequencer sources the file sequencerActions.tcl this file is a Tcl script that can include procedure definitions, data definitions, etc. Normally it provides the tcl commands that are specified as actions in the sequencer.config file. For a sample sequencerActions.tcl file see EXAMPLES. For information about how the sequender finds this file, see "FILES and ENVIRONMENT"
The sequencer must locate a column configuration file and a script that defines the actions used by that file. By default, these files are:
The column configuration file. By default this is located in the current working directory of the sequencer when it is started.
A script that defines actions used by the column configuration file. By default, this is sourced from the current working directory of the sequencer when it is started.
Environment variables can alter the location and names of these files:
SEQCONFIGDIR
If defined, this environment variable is the directory from which the two configuration files are loaded for example: export SEQCONFIGDIR=~/config
SEQCONFIGFILE
If defined, this environment variable is the name of the file used to configure the columns. If, for example, you: export SEQCONFIGDIR=~/config and export SEQCONFIGFILE=columns.def The column configuration file loaded will be ~/config/columns.def.
SEQACTIONFILE
If defined, this environment variable is the name of the action script file that defines the actions referenced in the column configurationfile. If, you have export SEQCONFIGDIR=~/config and export SEQACTIONFILE=actions.tcl, The action script file will be sourced from ~/config/actions.tcl.
Example 1. Action script example
This example shows part of an action script that defines the actions
epicsAccess
and epicsSet
that
provide actions to access epics channels.
package require epics proc epicsSet {name value} { set status [catch {$name set $value}] msg if {$status != 0} { tk_msgBox -message $msg -icon error -title {Epics channel set error} } return $status } proc epicsAccess name { epicschannel $name }
Example 2. Sequencer column configuration file
The sequencer file below defines a set of columns that are all epics channels:
# Column set_action init_action P222ET_TARGET epicsSet epicsAccess P222ER epicsSet epicsAccess FLTCHAN73 epicsSet epicsAccess P#5:406353 epicsSet epicsAccessNot the use of blank lines and comment lines.
The directory examples/sequencer under the installation directory of the nscl daq includes several sample files.