Advanced GBT Procedure Writing in Glish

Table of Contents

Introduction

The GBT Observe command line language is a very simple one whose primary purpose is to offer a shorthand way of commanding the telescope. It does not include many computer language features such as looping, conditionals, and arithmetic. Hence, new procedures must be written in glish, the underlying control language for the GBT. This note describes a template for writing a new procedure, how to access built-in parameters and existing glish functions, and how to attach the new procedure to the interactive part of GBT Observe. When written to the template model, there should be little difference between new and built-in procedures, so the latter can be easily added to the standard system.

All parameters and procedures are common to the interactive, command line, and observing table aspects of GBT Observe. Setting a parameter in one sets the same parameter in all. As long as the provided "set" routines are used to update parameters from the glish command line or a glish function, the entire system will reflect those changes. The provided "get" routines will retrieve existing parameter values regardless of whether they were set from the graphical panels or from the GBT Observe command line or table.

The template

The procedure template is roughly as follows:

    procedure name := function ( )
    {
	< return if a scan is already in progress >

	< retrieve parameter values required >

	< main body of procedure >

	< set any parameters, if necessary >

	< start a scan, if appropriate >
    }

Not all components of the template are required. A procedure can be as simple as setting one parameter on the basis of another, or it can be as complex as running many scans, each of which moves the telescope in a complicated way.

The procedure function may have arguments so that it may be run from the glish command line or from another function without setting input parameters one at a time. The arguments are ignored by GBT Observe, and, therefore, they must be defaulted to sensible or testable values. See the section below on how to integrate arguments into your procedure function.

Here is an example that simply tracks a J2000 position for 5 minutes.

simple_track := function ( )
{
    # Protect the system from trying to run a procedure while a scan
    # is in progress.
    if (!is_ready()) {
	print 'Cannot start a procedure while a scan is running';
	return F;
    }
    ra := get_parameter('ra');
    dec := get_parameter('dec');

    # make sure we're in the right coordinate system
    set_parameter('coord_mode', 'J2000');

    # the ra and dec parameters are stored as strings so that they may
    # be interpreted as any format.  The common formats are HH:MM:SS.S
    # and sDD:MM:SS.S for which the conversion routines to decimal
    # degrees are as follows:
    ra := major_to_degrees(ra);
    dec := minor_to_degrees(dec);

    # The following __Track() function is a general purpose telescope
    # control function that runs a scan and assumes that the coord_mode
    # start_time, and scan_length have been set.
    return __Track(ra, dec);
}

In most cases you can assume that input parameters to your procedure already contain appropriate values, either from observer input through the graphical panels or from GBT Observe command line input. In the example above we have chosen to explicitly set the coordinate system to J2000 so that the system is prepared to accept R.A. and Dec. coordinates. The built-in procedures use generic coordinates so that the coordinate system selected external to the procedure controls how they are interpreted.

Parameter access

There is a predefine list of parameters for GBT Observe. These are divided into groups by device (antenna, spectrometer, digital continuum receiver, etc.) plus a more general procedures group. For a list of available parameters in each group click on the highlighted get_xxx_parameter function name below. The procedure parameters are retrieved and set by the functions

    value := get_parameter ( 'param_name' )
    set_parameter ( 'param_name', value )

These are the parameters that you will most commonly use in writing procedure functions. The set_parameter() function updates the parameter's graphical entry field, if it appears on any of the active displays. Access routines for specific devices are listed below. In special cases where the same parameter name appears in more than one group, use the one at the highest level in the following hierarchy:

    procedure group
	scan coordinator group
	    device groups
Setting a higher level parameter will set its namesake at lower levels. Use a parameter from the procedure group whenever possible because graphical entry fields can be created for them when you attach your procedure to the interactive part of GBT Observe.
    get_sc_parameter ( 'param_name' )      Scan Coordinator
    set_sc_parameter ( 'param_name', value )

    get_ant_parameter ( 'param_name' )     Antenna
    set_ant_parameter ( 'param_name', value )

    get_sp_parameter ( 'param_name' )      Spectral Processor
    set_sp_parameter ( 'param_name', value )

    get_dcr_parameter ( 'param_name' )     Digital Continuum Receiver
    set_dcr_parameter ( 'param_name', value )

    get_gs_parameter ( 'param_name' )      GBT Spectrometer
    set_gs_parameter ( 'param_name', value )

    get_conv_parameter ( 'param_name' )     Converter Rack
    set_conv_parameter ( 'param_name', value )

    get_lo_parameter ( 'param_name' )      Local Oscillator
    set_lo_parameter ( 'param_name', value )

    get_fe_parameter ( 'param_name' )      Front-End
    set_fe_parameter ( 'param_name', value )

    get_ifr_parameter ( 'param_name' )     IF router
    set_ifr_parameter ( 'param_name', value )

Generic coordinates

If you write a procedure that uses any of the parameters that are specific to particular coordinate system(s), e.g., ra, dec_rate, lat_length, etc., your procedure will work only in those systems. You can generalize your procedures by using generic coordinates and have your procedure resolve their meaning at run time according to the coordinate system selected at the time. This is illustrated in the following modification of the example above:

simple_track := function ( )
{
    # Protect the system from trying to run a procedure while a scan
    # is in progress.
    if (!is_ready()) {
	print 'Cannot start a procedure while a scan is running';
	return F;
    }
    # The meanings of major, minor, major_rate, and minor_rate are
    # resolved at run time according to the coordinate mode selected
    # at the time.
    major := get_parameter('major');
    minor := get_parameter('minor');
    major_rate := get_parameter('major_rate');
    minor_rate := get_parameter('minor_rate');

    # The variables major and minor will be strings, if they are
    # resolved into ra and dec.  Otherwise, they become decimal
    # degrees of longitude and latitude.  The following two
    # functions will detect the difference and convert to decimal
    # degrees in all cases.
    major := major_to_degrees(major);
    minor := minor_to_degrees(minor);

    # convert from arcminutes per minute to degrees per second.
    major_rate /:= 3600.0;
    minor_rate /:= 3600.0;

    # The following __Track() function is a general purpose telescope
    # control function that runs a scan and assumes that the
    # coord_ode, start_time, and scan_length have been set.
    # Note that this function takes optional rate parameters in
    # degrees per second.
    return __Track(major, minor, major_rate, minor_rate);
}

The parameter names 'major', 'minor', 'major_rate', and 'minor_rate' are substituted for 'ra' and 'dec'. The functions get_parameter(), major_to_degrees(), minor_to_degrees(), and __Track() are written so that they are sensitive to the coordinate mode in use.

The string segment 'major' is a stand-in for 'ra', 'long', 'az', 'udlong', or 'sslong'. The segment 'minor' is a stand-in for 'dec', 'lat', 'elev', 'udlat', or 'sslat'. The same resolution of generic coordinates works for major/minor_rate, major/minor_length, major/minor_step, major/minor_points, major/minor_offset, and secant_minor.

Attaching your procedure to GBT Observe

Once your procedure is defined in glish you can execute it from the GBT Observe command line or observing table just by using its function name, e.g. simple_track in our examples.

You can also add it to the list of observing procedures on the main GBT Observe panel menu button and have a procedure parameter entry panel automatically created when you select your procedure. For this you use the create_procedure_panel() function. Our last example of simple_track above can be attached to the interactive part of GBT Observe as follows:

help := 'The Simple Track procedure starts a telescope scan at \
	 the specified coordinates and moves it at the given rates \
	 until the scan ends.';
create_procedure_panel('Simple Track',
		       ['major', 'minor', 'major_rate', 'minor_rate'],
		       'simple_track', help);

The first argument of create_procedure_panel() is any name that will identify your procedure in the selection button menu. Keep it short so that it doesn't create a huge button menu. The second argument is an array of strings that identify the parameters required. Only parameter names from the procedure list are permitted here. The third argument is the name of your glish function, given as a string. The fourth argument is optional and is a help string that will appear when the user clicks the procedure name field on the parameter panel.

Make sure that you define the procedure function before executing create_procedure_panel().

If you have chosen to use any of the general purpose parameters parm1..9, you can add labels, units, initial value, and a help string to them for display on your procedure interactive panel. This has no effect on the parameters or their interpretation (they are always stored as strings), but it gives a bit of help to the observer. Annotate your parameter as follows:

help := 'Race Length is is the start to finish distance that the \
	 telescope will move during the scan.';
label_parameter(1, ' Race Length', 'furlongs   ', '10', help);

The first argument is the parameter number (1-9), The second is the label string of exactly 12 characters, right justified. The third argument is the units string of 11 characters, left justified, and the fourth is the initial value for the parameter as a string. The last argument is the help string that will be displayed when the user clicks on the label field. The help string may be as long as you like.

Optional procedure arguments

Procedure functions may contain arguments to make them easier to run from the glish command line or from another glish function. However, the arguments are ignored when the procedure is run from the GBT Observe command line panel, or observing table. Hence, the arguments must be defaulted to sensible values or testable to see whether they are to be replaced by built-in parameters.

The built-in procedures default their arguments to the boolean value, F, and tests them as shown in the following listing of the beginning of the Track procedure:

Track := function ( major=F, minor=F, majorRate=F, minorRate=F )
{
    # Protect the system from trying to run a procedure while a
    # scan is in progress.

    if (!is_ready()) {
	print 'Cannot start a procedure while a scan is running';
	return F;
    }
    # Get the values for any defaulted arguments, and transfer
    # any input argument values to the system.

    if (is_boolean(major)) {
	major := get_parameter('major');
    } else {
	set_parameter('major', major);
    }
    if (is_boolean(minor)) {
	minor := get_parameter('minor');
    } else {
	set_parameter('minor', minor);
    }
    if (is_boolean(majorRate)) {
	majorRate := get_parameter('major_rate');
    } else {
	set_parameter('major_rate', majorRate);
    }
    if (is_boolean(minorRate)) {
	minorRate := get_parameter('minor_rate');
    } else {
	set_parameter('minor_rate', minorRate);
    }
	:
	:
}

If the Track procedure is run from GBT Observe, all of the arguments contain their default values, and the values of the GBT Observe parameters are retrieved. If an argument is used when Track() is run from glish, its value is sent to GBT Observe which updates the interactive display(s) and sends the value to the hardware, when appropriate.

Example procedure script

Here is a complete glish script for defining a simple procedure and integrating it into GBT Observe. This example incorporates all of the features mentioned above so it may be more complex than a typical procedure definition.

# This example procedure traces a square around a specified location
# on the sky.  Each side of the square is a separate scan.
# Arguments:
#    major	major coordinate of square center (ra, long, etc.)
#    minor	minor coordinate of square center (dec, lat, etc.)
#    size	square side length, arcminutes
#    rate	scan rate, arcmin/min

square := function ( major=F, minor=F, size=F, rate=F )
{
    # Protect the system from trying to run a procedure while a scan
    # is in progress.
    if (!is_ready()) {
	print 'Cannot start a procedure while a scan is running';
	return F;
    }
    if (is_boolean(major)) {
	major := get_parameter('major');
    } else {
	set_parameter('major', major);
    }
    if (is_boolean(minor)) {
	minor := get_parameter('minor');
    } else {
	set_parameter('minor', minor);
    }
    # general purpose parameters are stored as strings
    if (is_boolean(size)) {
	size := as_double(get_parameter('parm1'));
    } else {
	set_parameter('parm1', as_string(size));
    }
    if (is_boolean(rate)) {
	rate := as_double(get_parameter('parm2'));
    } else {
	set_parameter('parm2', as_string(rate));
    }
    if (abs(rate == 0.0) || abs (size / rate) > 30) {
	print 'rate must be large enough for a reasonable scan \
	       length time';
	return;
    }
    # The meanings of major and minor are resolved at run time
    # according to the coordinate mode selected at the time.
    major := get_parameter('major');
    minor := get_parameter('minor');

    # make the sides of equal great circle lengths
    set_parameter('secant_minor', YES);

    # compute and set the scan time in seconds
    scan_length := 60.0 * size / rate;
    set_sc_parameter('scan_length', scan_length);

    # convert everything to decimal degrees and ignore any signs
    major := major_to_degrees(major);
    minor := minor_to_degrees(minor);
    offset := abs(size / 120.0);
    rate := abs(rate / 3600.0);
    
    for (i in 1:4) {
        # set the procedure scan counter on the main panel    
	set_procedure_scan_number(i, 4);
	if (i == 1) {
	    major_offset := offset;	# top left corner
	    minor_offset := offset;
	    major_rate := -rate;	# scan left to right
	    minor_rate := 0.0;
	}
	if (i == 2) {
	    major_offset := -offset;	# top right corner
	    minor_offset := offset;
	    major_rate := 0.0;		# scan down
	    minor_rate := -rate;
	}
	if (i == 3) {
	    major_offset := -offset;	# bottom right corner
	    minor_offset := -offset;
	    major_rate := rate;		# scan right to left
	    minor_rate := 0.0;
	}
	if (i == 4) {
	    major_offset := offset;	# bottom left corner
	    minor_offset := -offset;
	    major_rate := 0.0;		# scan up
	    minor_rate := rate;
	}
	if(!__Track(major + major_offset, minor + minor_offset,
		    major_rate, minor_rate)) {
	    print 'Error running __Track';
	    return F;
	}
    }
    return T;
}
help := 'Square size as the length of one side in arcminutes';
label_parameter(1, ' Side Length', 'arcminutes ', '20', help);

help := 'Scan rate along each side of the square in arcminutes \
	 per minute';
label_parameter(2, '   Scan Rate', 'arcmin/min ', '6', help);

help := 'The Square procedure does 4 scans, one on each side of \
	 a square starting at the top left corner and proceeding \
	 clockwise.  The duration of each scan depends on the \
	 size of the square and the scan length.  The specified \
	 coordinates are for the center of the square.';
create_procedure_panel('Square',
		       ['major', 'minor', 'parm1', 'parm2'],
		       'square', help);

When you select this procedure from the GBT Observe interactive display its parameter entry panel will look like:



Built-in procedures

There are a number of frequently used procedures built into GBT Observe. They can be used as they are or as starting points for writing your own procedures. The source code for these procedures plus a number of useful utility functions may be found in

    /hyades1/rfisher/GBTcontrol/Glish/Obs_GUI/Ver0.0.2/
					Include/gbt_procedures.g

This file will be put in a public directory after current revisions are completed.

The input parameters for each procedure are listed. They may also be used as arguments when the function is called from glish. All procedures assume that the coord_mode, secant_minor, and data parameters have been set before the procedure is run. See the list of procedure parameters below for an explanation of eac input parameter.

Track
    tracks a fixed point in the chosen coordinate system or moves the
    telescope from that point at a constant rate in one or both
    coordinates.
     Input parameters: major, minor, major_rate, minor_rate, scan_length

Cross
    sweeps through the specified position in the chosen coordinate
    system in the four cardinal directions.  The primary purpose of
    Cross is to determine pointing offsets.  Each sweep will be a
    separate scan with the scan length automatically determined by the
    coordinate lengths and rates.
     Input parameters: major, minor, major_rate, minor_rate,
			major_length, minor_length, startNumber

RaLongMap
    does a raster scan centered on the specified position in the chosen
    coordinate system.  Scanning is in the R.A., longitude, or azimuth
    coordinate with the direction and starting corner determined by the signs
    of major_rate and minor_step.
     Input parameters: major, minor, major_rate, major_length,
			minor_step, num_sweeps, start_number,
			back_and_forth

DecLatMap
    does a raster scan centered on the specified position in the chosen
    coordinate system.  Scanning is in the Dec., latitude, or elevation
    coordinate with the direction and starting corner determined by the signs
    of minor_rate and major_step.
     Input parameters: major, minor, minor_rate, minor_length,
			major_step, num_sweeps, start_number,
			back_and_forth

RaLongOtf
    does an on-the-fly raster map centered on the specified position in
    the chosen coordinate system.  Scanning is in the R.A., longitude, or
    azimuth coordinate with the direction and starting corner determined by the
    signs of major_rate and minor_step.  Successive sweeps are in opposite
    directions.  Data are recorded continuously during the whole map, even
    while reversing sweep direction.
     Input parameters: major, minor, major_rate, major_length,
			minor_step, num_sweeps, start_number

DecLatOtf
    does an on-the-fly raster map centered on the specified position in
    the chosen coordinate system.  Scanning is in the Dec., latitude, or
    elevation coordinate with the direction and starting corner determined by
    the signs of minor_rate and major_step.  Successive sweeps are in opposite
    directions.  Data are recorded continuously during the whole map, even
    while reversing sweep direction.
     Input parameters: major, minor, minor_rate, minor_length,
			major_step, num_sweeps, start_number

PointMap
    constructs a map by integrating at fixed positions on a grid.  The
    stepping direction and starting corner are determined by the signs
    of major_step and minor_step.  The extent of the map is determined
    by the step sizes and the number of Points in each direction.  The
    fastest stepping is in R.A., longitude, or azimuth.  A reference off
    position and frequency of occurrence may be specified.
     Input parameters: major, minor, major_step, minor_step,
			major_points, minor_points, major_offset,
			minor_offset, point_duration, off_interval,
			start_number

OnOff
    does three data integrations in an off-on-off-source sequence.  The
    on-source position is at the specified coordinates.  The off-source
    positions are both at the same offset location with each integration
    time being half of the "On" integration time.
     Input parameters: major, minor, major_offset, minor_offset,
			on_duration, separate_scans

FivePoint
    steps the telescope through the sequence "off on +maj -maj +min -min
    on off", where 'maj' is the R.A., longitude, or azimuth offset, and
    'min' is the Dec., latitude, or elevation offset.  This procedure's
    primary purpose is to determine pointing offsets.  If you are
    observing in Azimuth/Elevation coordinates, the blank sky "off"
    position will be 5 times the major_offset distance from the central
    position.  Otherwise, an additional az_offset parameter is
    specified.  point_duration is the integration time on each
    position. Unless separate_scans = NO, each integration will be
    recorded as a separate scan.
     Input parameters: major, minor, major_offset, minor_offset,
			az_offset, point_duration, separate_scans

Circle
    moves the telescope in a circle with the specified radius around the
    given position in the chosen coordinate system.
     Input parameters: major, minor, radius, start_angle, angular_rate

Tipping
    drives the telescope in elevation at a fixed azimuth to determine
    atmospheric attenuation.  The direction of elevation motion is
    determined by start and stop elevations.  Any sign on the elev_rate
    will be ignored.
     Input parameters: az, start_elev, stop_elev, elev_rate

FocusPrime
    scans the prime focus receiver in its feed's axial direction.  The
    primary purpose is to determine the receiver's maximum gain focus
    position.
     Input parameters: start_focus, stop_focus, focus_rate

RotatePrime
    rotates the prime focus receiver around its feed's axis.  The
    primary purpose is for polarization measurements.
     Input parameters: start_rotation, stop_rotation, rotation_rate

Parameter lists by group

The parameter lists below are dauntly long, but keep in mind that all parameters are either defaulted to sensible values or have been assigned values from the interactive panels or the GBT Observe command line before your procedure is run. You shouldn't have to use but a few of the parameters, mostly from the procedure and scan coordinator groups.

Procedure parameters

The parameters in the procedure group are defined as they apply to built-in observing procedures. You may use them for other purposes. If you change a parameter value, the value will be changed for all procedures that use it. At the end of this list are nine generic parameters called parm1..9. These are not used by any built-in procedures. You may assign labels and units to these parameters when you attach your procedure to the the interactive part of GBT Observe.

For most observations procedures will be executed by the GBT as soon as possible, but the start time may be explicitly specified in either UTC or LST with one of the following two parameters. If both start_utc and start_lst are specifed, all but the last one set will be ignored.

start_utc
    Start UTC is a parameter that allows you to start a procedure at a
    specified Universal Coordinated Time.  The time is assumed to be
    within the day starting 1/2 hour before and ending 23 1/2 hours
    after the current time.  The start time is valid for one scan only
    and is cleared after a scan is initiated.  Procedures that run
    more than one scan will start all scans after the first one
    a.s.a.p. Subsequent procedure will also start a.s.a.p. unless a
    new start time is specified before each is invoked.  (formatted
    string HH:MM:SS.s)
start_lst
    Start LST is a parameter that allows you to start a procedure at a
    specified Local Apparent Sidereal Time.  The time is assumed to be
    within the day starting 1/2 hour before and ending 23 1/2 hours
    after the current time.  The start time is valid for one scan only
    and is cleared after a scan is initiated.  Procedures that run
    more than one scan will start all scans after the first one
    a.s.a.p.  Subsequent procedures will also start a.s.a.p. unless a
    new start time is specified before each is invoked.  (formatted
    string HH:MM:SS.s)

The 'track' procedure has three other timing parameters that are unique to it. A stop UTC or LST may be specified so that the scan will be started as soon as possible, but the scan is guaranteed to end at the specified time. This is useful for VLBI observations to keep schedules synchronized at different observatories. When a stop time is used the length of the scan will depend on when the telescope is able to get on position and initiate the data-taking process. If both stop_utc and stop_lst are specifed, all but the last one set will be ignored.

If a start time or no start or stop time is given, the length of a 'track' scan is set by the scan_duration parameter. All procedure start and stop times are cleared after a procedure is executed so that the next procedure will be executed as soon as possible unless a new time is specified.

stop_utc
    Stop UTC is a parameter that allows you to stop the first scan of
    the 'track' procedure at a specified Universal Coordinated Time.
    The scan is started as soon as possible.  The Stop UTC is
    generally useful when one wants to start tracking an object as
    soon as possible while being guaranteed that the telescope will
    move to the next source at the specified time.  This is often
    useful for VLBI observations.  The time is assumed to be within
    the day starting 1/2 hour before and ending 23 1/2 hours after the
    current time.  The stop time is valid for one scan only and is
    cleared after a scan is initiated.  (formatted string HH:MM:SS.s)
stop_lst
    Stop LST is a parameter that allows you to stop the 'track'
    procedure at a specified Local Apparent Sidereal Time.  The scan
    is started as soon as possible.  The Stop LST is generally useful
    when one wants to start tracking an object as soon as possible
    while being guaranteed that the telescope will move to the next
    source at the specified time.  This is often useful for VLBI
    observations.  The time is assumed to be within the day starting
    1/2 hour before and ending 23 1/2 hours after the current time.
    The stop time is valid for one scan only and is cleared after a
    scan is initiated.  (formatted string HH:MM:SS.s).
scan_duration
    Scan Duration is the length of the 'track' procedure scan in UTC
    seconds.  Any data integrations completed after the end of a scan
    will normally be discarded.  Hence, the Scan Duration is typically
    an integer number of integration times plus a second or
    two. This parameter is ignored if a stop time is specified.
    (floating point)

Procedures may be written to handle coordinates in any of the provided coordinate systems using generic coordinates, rather than specific coordinates such as ra, dec, az, elev, etc. See the description of these above.

coord_mode
    The Coordinate Mode determines how telescope coordinates and rates
    are interpreted.  Five of the selections (J2000, B1950, Current
    RA/Dec, Azimuth/Elevation, Galactic) are native to the antenna
    control system.  You may define the pole and origin of a your own
    spherical coordinate system with the User Defined selection.  The
    Solar Sys. Object selection defines spherical coordinates whose
    equator and and prime meridian track a selected object. (string
    constant: J2000, B1950, CURRENT_RA_DEC, AZIMUTH_ELEVATION, GALACTIC,
    USER_DEFINED, or SOLAR_SYS_OBJECT)

Right Ascension and Declination coordinates.  The epoch of this
coordinate is set by the Coordinate Mode as J2000, B1950, or Current
RA/Dec.

ra
    'ra' is the right ascension, usually in HH:MM:SS.SS format, at the
    beginning of the Track procedure or the center of a map, Cross, or
    Circle.  In glish this parameter is carried as a string, which is
    converted to an angle when a value is required. (formatted string)
dec
    'dec' is the declination, usually in sDD:MM:SS.S format, at the
    beginning of the Track procedure or the center of a map, Cross, or
    Circle.  In glish this parameter is carried as a string, which is
    converted to an angle when a value is required. (formatted string)
ra_rate
    ra_rate is the right ascension rate, in arcminutes per minute, of
    the telescope motion in the Track, map, or Cross
    procedure. (floating point)
dec_rate
    dec_rate is the declination rate, in arcminutes per minute, of the
    telescope motion in the Track, map, or Cross procedure. (floating
    point)
ra_length
    This parameter is the full length, in arcminutes, of a right
    ascension sweep in a Cross or map procedure.  The sweep is centered
    on the specified R.A. coordinate. (floating point)
dec_length
    This parameter is the full length, in arcminutes, of a declination
    sweep in a Cross or map procedure.  The sweep is centered on the
    specified Dec. coordinate. (floating point)
ra_step
    This parameter is the right ascension step size, in arcminutes,
    between declination sweeps in a raster map or between locations in a
    Point-Map procedure.  The sweeps or rows of point locations are
    centered on the specified R.A. coordinate. (floating point)
dec_step
    This parameter is the declination step size, in arcminutes, between
    right ascension sweeps in a raster map or between locations in a
    Point-Map procedure.  The sweeps or columns of columns of point
    locations are centered on the specified Dec. coordinate. (floating
    point)
ra_points
    This parameter specifies the number of Point-Map procedure locations
    in the right ascension coordinate.  An odd number will put the
    center column on the specified R.A. coordinate. (integer)
dec_points
    This parameter specifies the number of Point-Map procedure locations
    in the declination coordinate.  An odd number will put the center
    row on the specified Dec. coordinate. (integer)
ra_offset
    'ra_offset' is the right ascension offset, in arcminutes, of the
    "off" or reference location for the Point-Map or On-Off procedure or
    for two of the locations in a Five-Point procedure. (floating point)
dec_offset
    'dec_offset' is the declination offset, in arcminutes, of the "off"
    or reference location for the Point-Map or On-Off procedure or for
    two of the locations in a Five-Point procedure. (floating point)
secant_dec
    The secant_dec parameter determines whether right ascension offsets
    and sweep lengths are multiplied by the secant of the declination to
    determine the actual offsets or lengths on the sky.  If secant_dec
    is 'no', the offsets are small circle arc lengths.  If secant_dec
    is 'yes', the offsets are great circle arc lengths. (string
    constant: YES or NO)

Galactic Longitude and Latitude coordinates.

long
    'long' is the galactic Longitude, in decimal degrees, at the
    beginning of the Track procedure or the center of a map, Cross, or
    Circle. (floating point)
lat
    'lat' is the galactic Latitude, in decimal degrees, at the beginning
    of the Track procedure or the center of a map, Cross, or
    Circle. (floating point)
long_rate
    This parameter is the galactic Longitude Rate, in arcminutes per
    minute, of the telescope motion in the Track, map, or Cross
    procedure. (floating point)
lat_rate
    This parameter is the galactic Latitude Rate, in arcminutes per
    minute, of the telescope motion in the Track, map, or Cross
    procedure. (floating point)
long_length
    This parameter is the full length, in arcminutes, of a galactic
    longitude sweep in a Cross or map procedure.  The sweep is centered
    on the specified longitude coordinate. (floating point)
lat_length
    This parameter is the full length, in arcminutes, of a galactic
    latitude sweep in a Cross or map procedure.  The sweep is centered
    on the specified latitude coordinate. (floating point)
long_step
    This parameter is the galactic longitude step size, in arcminutes,
    between latitude sweeps in a raster map or between locations in a
    Point-Map procedure.  The sweeps or rows of point locations are
    centered on the specified longitude coordinate. (floating point)
lat_step
    This parameter is the galactic latitude step size, in arcminutes,
    between longitude sweeps in a raster map or between locations in a
    Point-Map procedure.  The sweeps or columns of point locations are
    centered on the specified latitude coordinate. (floating point)
long_points
    This parameter specifies the number of Point-Map procedure locations
    in the galactic longitude coordinate.  An odd number will put the
    center column on the specified longitude coordinate. (integer)
lat_points
    This parameter specifies the number of Point-Map procedure locations
    in the galactic latitude coordinate.  An odd number will put the
    center row on the specified latitude coordinate. (integer)
long_offset
    This parameter is the galactic longitude offset, in arcminutes, of
    the "off" or reference location for the Point-Map or On-Off
    procedure or for two of the locations in a Five-Point
    procedure. (floating point)
lat_offset
    This parameter is the galactic latitude offset, in arcminutes, of
    the "off" or reference location for the Point-Map or On-Off
    procedure or for two of the locations in a Five-Point
    procedure. (floating point)
secant_lat
    The secant_lat parameter determines whether galactic longitude
    offsets and sweep lengths are multiplied by the secant of the
    latitude to determine the actual offsets or lengths on the sky.  If
    secant_lat is 'no', the offsets are small circle arc lengths.  If
    secant_lat is 'yes', the offsets are great circle arc
    lengths. (string constant: YES or NO)

Azimuth, Elevation coordinates.

az
    'az' is the Azimuth, in decimal degrees, at the beginning of the
    Track procedure or the center of a map, Cross, or Circle. Azimuth is
    0.0 degrees at north and +90.0 degrees at east. (floating point)
elev
    'elev' is the Elevation, in decimal degrees, at the beginning of the
    Track procedure or the center of a map, Cross, or Circle.  The
    minimum elevation of the GBT is 5 degrees. (floating point)
az_rate
    This parameter is the Azimuth Rate, in arcminutes per minute, of the
    telescope motion in the Track, map, or Cross procedure. (floating
    point)
elev_rate
    This parameter is the Elevation Rate, in arcminutes per minute, of
    the telescope motion in the Track, map, Cross, or Tipping
    procedure. (floating point)
az_length
    This parameter is the full length, in arcminutes, of an azimuth
    sweep in a Cross or map procedure.  The sweep is centered on the
    specified azimuth coordinate. (floating point)
elev_length
    This parameter is the full length, in arcminutes, of an elevation
    sweep in a Cross or map procedure.  The sweep is centered on the
    specified elevation coordinate. (floating point)
az_step
    This parameter is the azimuth step size, in arcminutes, between
    elevation sweeps in a raster map or between locations in a Point-Map
    procedure.  The sweeps or rows of point locations are centered on
    the specified azimuth coordinate. (floating point)
elev_step
    This parameter is the elevation step size, in arcminutes, between
    azimuth sweeps in a raster map or between locations in a Point-Map
    procedure.  The sweeps or columns of point locations are centered on
    the specified elevation coordinate. (floating point)
az_points
    This parameter specifies the number of Point-Map procedure locations
    in the azimuth coordinate.  An odd number will put the center column
    on the specified azimuth coordinate. (integer)
elev_points
    This parameter specifies the number of Point-Map procedure locations
    in the elevation coordinate.  An odd number will put the center row
    on the specified elevation coordinate. (integer)
az_offset
    This parameter is the azimuth offset, in arcminutes, of the "off" or
    reference location for the Point-Map or On-Off procedure or for two
    of the locations in a Five-Point procedure.  It is also used as an
    azimuth offset in the Five-Point procedure when working in a
    coordinate system other than Azimuth/Elevation. (floating point) 
elev_offset
    This parameter is the elevation offset, in arcminutes, of the "off"
    or reference location for the Point-Map or On-Off procedure or for
    two of the locations in a Five-Point procedure. (floating point)
secant_elev
    The secant_elev parameter determines whether azimuth offsets and
    sweep lengths are multiplied by the secant of the elevation to
    determine the actual offsets or lengths on the sky.  If secant_elev
    is 'no', the offsets are small circle arc lengths.  If secant_elev
    is 'yes', the offsets are great circle arc lengths. (string constant:
    YES or NO) 

User-Defined coordinates.  These coordinates are defined by the user by
specifying the location of a spherical coordinate pole and prime
meridian in J2000 coordinates, and, optionally, the first and second
time derivatives of these locations.

udlong
    'udlong' is the Longitude in user-defined coordinates, in decimal
    degrees, at the beginning of the Track procedure or the center of a
    map, Cross, or Circle. (floating point)
udlat
    'udlat' is the Latitude in user-defined coordinates, in decimal
    degrees, at the beginning of the Track procedure or the center of a
    map, Cross, or Circle. (floating point)
udlong_rate
    This parameter is the Longitude Rate, in arcminutes per minute, in
    user-defined spherical coordinates.  This is the rate of telescope
    motion in the Track, map, or Cross procedure. (floating point)
udlat_rate
    This parameter is the Latitude Rate, in arcminutes per minute, in
    user-defined spherical coordinates.  This is the rate of telescope
    motion in the Track, map, or Cross procedure. (floating point)
udlong_length
    This parameter is the full length, in arcminutes, of a longitude
    sweep in user-defined coordinates in a Cross or map procedure.  The
    sweep is centered on the specified longitude coordinate. (floating
    point)
udlat_length
    This parameter is the full length, in arcminutes, of a latitude
    sweep in user-defined coordinates in a Cross or map procedure.
    The sweep is centered on the specified latitude
    coordinate. (floating point)
udlong_step
    This parameter is the longitude step size, in arcminutes, in user-
    defined coordinates between latitude sweeps in a raster map or
    between locations in a Point-Map procedure.  The sweeps or rows of
    point locations are centered on the specified longitude
    coordinate. (floating point)
udlat_step
    This parameter is the latitude step size, in arcminutes, in user-
    defined coordinates between longitude sweeps in a raster map or
    between locations in a Point-Map procedure.  The sweeps or columns
    of point locations are centered on the specified user-defined
    latitude coordinate. (floating point)
udlong_points
    This parameter specifies the number of Point-Map procedure locations
    in the user-defined longitude coordinate.  An odd number will put
    the center column on the specified longitude coordinate. (integer)
udlat_points
    This parameter specifies the number of Point-Map procedure locations
    in the user-defined latitude coordinate.  An odd number will put
    the center row on the specified latitude coordinate. (integer)
udlong_offset
    This parameter is the user-defined longitude offset, in
    arcminutes, of the "off" or reference location for the Point-Map or
    On-Off procedure or for two of the locations in a Five-Point
    procedure. (floating point)
udlat_offset
    This parameter is the user-defined latitude offset, in arcminutes,
    of the "off" or reference location for the Point-Map or On-Off
    procedure or for two of the locations in a Five-Point
    procedure. (floating point)
secant_udlat
    The secant_udlat parameter determines whether user-defined
    longitude offsets and sweep lengths are multiplied by the secant of
    the latitude to determine the actual offsets or lengths on the sky.
    If secant_udlat is 'no', the offsets are small circle arc lengths.
    If secant_udlat is 'yes', the offsets are great circle arc
    lengths. (string constant: YES or NO)

Solar System Object coordinates.  These coordinates are in a spherical
coordinate system whose equator and prime meridian intersection track
the location of the selected solar system object (moon, planet, etc.).

sslong
    'sslong' is the Longitude, in decimal degrees, in solar system
    object coordinates.  This longitude is at the beginning of the Track
    procedure or the center of a map, Cross, or Circle. (floating point)
sslat
    'sslat' is the Latitude, in decimal degrees, in solar system object
    coordinates.  This latitude is at the beginning of the Track
    procedure or the center of a map, Cross, or Circle. (floating point)
sslong_rate
   This parameter is the Longitude Rate, in arcminutes per minute, in
   solar system object coordinates.  This is the rate of telescope
   motion in the Track, map, or Cross procedure. (floating point)
sslat_rate
    This parameter is the Latitude Rate, in arcminutes per minute, in
    solar system object coordinates.  This is the rate of telescope
    motion in the Track, map, or Cross procedure. (floating point)
sslong_length
    This parameter is the full length, in arcminutes, of a longitude
    sweep in solar system object coordinates. The sweep is centered on
    the specified longitude coordinate in a Cross or map
    procedure. (floating point)
sslat_length
    This parameter is the full length, in arcminutes, of a latitude
    sweep in solar system object coordinates. The sweep is centered on
    the specified latitude coordinate in a Cross or map
    procedure. (floating point)
sslong_step
    This parameter is the longitude step size, in arcminutes, between
    latitude sweeps in a raster map or between locations in a Point-Map
    procedure.  The sweeps or rows of point locations are centered on the
    specified longitude in solar system object coordinates. (floating
    point)
sslat_step
    This parameter is the latitude step size, in arcminutes, between
    longitude sweeps in a raster map or between locations in a Point-Map
    procedure.  The sweeps or columns of point locations are centered on
    the specified latitude in solar system object coordinates. (floating
    point)
sslong_points
    This parameter specifies the number of Point-Map procedure locations
    in the longitude of solar system object coordinates.  An odd
    number will put the center column on the specified longitude
    coordinate. (integer)
sslat_points
    This parameter specifies the number of Point-Map procedure locations
    in the latitude of solar system object coordinates.  An odd number
    will put the center row on the specified latitude
    coordinate. (integer)
sslong_offset
    This parameter is the longitude offset, in arcminutes, of the "off"
    or reference location for the Point-Map or On-Off procedure or for
    two of the locations in a Five-Point procedure.  In this case,
    longitude is defined in solar system object coordinates. (floating
    point)
sslat_offset
    This parameter is the latitude offset, in arcminutes, of the "off"
    or reference location for the Point-Map or On-Off procedure or for
    two of the locations in a Five-Point procedure.  In this case,
    latitude is defined in solar system object coordinates. (floating
    point)
secant_sslat
    The secant_sslat parameter determines whether longitude offsets and
    sweep lengths are multiplied by the secant of the latitude to
    determine the actual offsets or lengths on the sky.  In this case,
    latitude is defined in solar system object coordinates.  If
    secant_sslat is 'no', the offsets are small circle arc lengths.  If
    secant_sslat is 'yes', the offsets are great circle arc
    lengths. (string constant: YES or NO)

start_number
    Start Number allows you to resume a partially completed Cross,
    raster map, or Point-Map by specifying the sweep or point number to
    start with. (integer)
repeat_number
    Repeats specifies the number of times the procedure is to be
    repeated with the same parameter values. (integer)
point_duration
    Point Duration is the integration time, in seconds, spent on each
    location of a map grid or a five-point pointing procedure. (floating
    point)
on_duration
    The On Integration is the integration time, in seconds, spent on
    each location of an on-off observing procedure. (floating point)
off_interval
    Off Interval specifies the number of locations in a Point-Map that
    are integrated before making an "off" integration outside the map
    area. (integer)
back_and_forth
    Back&Forth selects whether or not alternate sweeps in a raster scan
    map are traced in opposite directions.  By selecting "yes" you save
    time by not having the telescope retrace to the same side of the map
    for each sweep. (string constant: YES or NO)
separate_scans
    Separate Scans specifies whether each integration in an on-off or
    five-point procedure is recorded as a separate scan with different
    scan numbers. (string constant: YES or NO)
data
    Data bselects whether data are recorded during a scan.  The data
    might be temporarily turned off to make a trial run of a procedure
    to test the telescope motions.  This is a spring-loaded value in the
    sense that it returns to 'yes' at the end of each scan. (string
    constant: YES or NO)
num_sweeps
    Number of Sweeps specifies the number of sweeps in a raster map.  An
    odd number of sweeps will run the center sweep through the specified
    map center position.  An equal number of sweeps will be made on
    either side of the center position. (integer)
radius
    This parameter specifies the Radius, in arcminutes, of the circle
    traced by the Circle procedure. (floating point)
start_angle
    Start Angle specifies the parallactic angle, in degrees, for the
    beginning of the trace in the Circle procedure.  Zero degrees is
    north; 90 degrees is east. (floating point)
angular_rate
    Angular Rate specifies the rate of scan, in degrees per minute,
    along the circle in the Circle procedure. (floating point)
start_elev
    This parameter specifies the Start Elevation, in degrees, of a
    Tipping scan.  The start and stop elevations determine the direction
    of scan, and the sign of the scan rate is ignored. (floating point)
stop_elev
    This parameter specifies the Stop Elevation, in degrees, of a
    Tipping scan.  The start and stop elevations determine the direction
    of scan, and the sign of the scan rate is ignored. (floating point)
start_focus
    This parameter specifies the Start Focus position, in millimeters,
    of a Focus scan.  The start and stop positions determine the
    direction of scan, and the sign of the Focus Rate is
    ignored. (floating point)
stop_focus
    This parameter specifies the Stop Focus position, in millimeters, of
    a Focus Prime procedure.  The start and stop positions determine the
    direction of scan, and the sign of the Focus Rate is
    ignored. (floating point)
focus_rate
    This parameter is the Focus Rate, in millimeters per minute, of the
    prime focus receiver in the Focus Prime procedure.  The start and
    stop positions determine the direction of scan, and the sign of the
    Focus Rate is ignored. (floating point)
start_rotation
    This parameter specifies the Start Rotation position, in degrees, of
    a prime focus receiver rotation scan. (floating point)
stop_rotation
    This parameter specifies the Stop Rotation position, in degrees, of
    a prime focus receiver rotation scan. (floating point)
rotation_rate
    This parameter is the Rotation Rate, in degrees per minute, of the
    prime focus receiver. (floating point)
parm1
    This parameter, parm1, is one of nine generic string value
    parameters that may be used in writing new procedures in
    glish. (string)
parm2
    This parameter, parm2, is one of nine generic string value
    parameters that may be used in writing new procedures in
    glish. (string)
parm3
    This parameter, parm3, is one of nine generic string value
    parameters that may be used in writing new procedures in
    glish. (string)
parm4
    This parameter, parm4, is one of nine generic string value
    parameters that may be used in writing new procedures in
    glish. (string)
parm5
    This parameter, parm5, is one of nine generic string value
    parameters that may be used in writing new procedures in
    glish. (string)
parm6
    This parameter, parm6, is one of nine generic string value
    parameters that may be used in writing new procedures in
    glish. (string)
parm7
    This parameter, parm7, is one of nine generic string value
    parameters that may be used in writing new procedures in
    glish. (string)
parm8
    This parameter, parm8, is one of nine generic string value
    parameters that may be used in writing new procedures in
    glish. (string)
parm9
    This parameter, parm9, is one of nine generic string value
    parameters that may be used in writing new procedures in
    glish. (string)

Scan coordinator parameters

next_scan_number
    The Scan Number normally updates at the beginning of each scan,
    but it may be set to a new value by setting the next_scan_number
    parameter value. (integer)
proj_id
    The Project ID is the number assigned to your program on the
    telescope schedule, e.g., B345.  This string is used as a directory
    name for your data. (string)
source_name
    Any Source Name less than 32 characters.  In pulsar observing this
    name is used to fetch the current pulsar timing parameters and must
    be in a standard 'hhmmsdd' format, e.g., 0329+54.  In other
    observing modes the Source Name is only an identifier
    label. (string)
scan_id
    The Scan I.D. is a supplement to the Source Name for labeling the
    data.  It has no effect on the data taking process.  The string must
    be less than 32 characters. (string)
scan_length
    The Scan Length is the duration of the scan in seconds.  Any data
    integrations completed after the end of a scan will normally be
    discarded.  Hence, the Scan Length is typically an integer number of
    integration times plus a second or two. (floating point)
start_time
    The default for starting a scan is to simply start as soon as
    possible, in which case you should not specify a start time.
    Start times for procedures must be set with one of the procedure
    keywords start_utc or start_lst.  This scan coordinator start_time
    is a lower level parameter for direct control of the scan
    coordinator.  It can be set directly with the set_sc_parameter()
    function using the TimeStamp() conversion:

	set_sc_parameter('start_time', TimeStamp(hh, mm, ss, MJD))

    where hh:mm:ss is the UTC time, and MJD is the Modified Julian
    Date.  Two routines are provided for the convenience of setting
    the start_time using the current MJD or by specifying the Local
    Sidereal Time:

		set_sc_start_utc('11:45:36.343')
		set_sc_start_lst('02:44:18')

    An LST will be converted to UTC, and the time will be assumed to
    be in the day between the current time minus 30 minutes and plus
    23 hours 30 minutes.  Note the time format and the fact that they
    are specified as strings.  When you execute the procedure

		x := get_sc_parameter('start_time');

    the value returned is a glish record containing the Modified
    Julian Date and the UTC in seconds since the beginning of the day,
    e.g., [seconds=61714, MJD=51821, flags=0, refFrame=1, units=1].
stop_time
    The default for starting a scan is to simply start as soon as
    possible, in which case you should not specify a start time.  If
    you want to specify a stop time for the 'track' procedure you must
    use one of the procedure keywords stop_utc or stop_lst.  This scan
    coordinator stop_time is a lower level parameter for direct
    control of the scan coordinator. It can be set directly with the
    set_sc_parameter() function using the TimeStamp() conversion:

	set_sc_parameter('stop_time', TimeStamp(hh, mm, ss.s, MJD))

    where hh:mm:ss.s is the UTC time, and MJD is the Modified Julian
    Date.  Two routines are provided for the convenience of setting
    the stop_time using the current MJD or by specifying the Local
    Sidereal Time:

		set_sc_stop_utc('11:45:36.343')
		set_sc_stop_lst('02:44:18')

    An LST will be converted to UTC, and the time will be assumed to
    be in the day between the current time minus 30 minutes and plus
    23 hours 30 minutes.  Note the time format and the fact that it
    is specified as a string.  When you execute the procedure

		x := get_sc_parameter('stop_time');

    the value returned is a glish record containing the Modified
    Julian Date and the UTC in seconds since the beginning of the day,
    e.g., [seconds=61714, MJD=51821, flags=0, refFrame=1, units=1].
observer_name
    The Observer's Name can be any string less than 32 characters.  This
    is recorded with the data. (string)
log_file
    Glish Log File is the name of the file that records all glish
    language commands generated by 'GBT Observe', either from interactive
    panel selections and entries or from command line or observing table
    execution. (string)
obs_type
    Observing Type selects the primary backend to be used.  Along with
    the Receiver parameter, it sets a number of parameter faults so make
    this selection before setting parameters for specific
    devices. (string constant: SPECTRAL_LINE, CONTINUUM, or
    PULSAR_TIMING)
receiver
    The Receiver parameter, in conjunction with the Observing Type,
    determines a lot of default settings the setup up the GBT system to
    use the selected receiver.  Make this selection before setting
    parameters for specific devices. (string constant: MHZ_390_TO_520,
    MHZ_510_TO_690, MHZ_680_TO_920, GHZ_1_15_TO_1_73, GHZ_3_95_TO_5_85, 
    GHZ_8_TO_10, GHZ_12_TO_15_4, GHZ_18_TO_22, or GHZ_22_TO_26_5)

This section is to be completed as the device GUI is constructed

Antenna parameters

This section is to be filled in as the device GUI is constructed

Spectral processor parameters

This section is to be filled in as the device GUI is constructed

Digital continuum receiver parameters

next_scan_number
    The scan number normally updates at the beginning of each scan,
    but it may be set to a new value by setting the next_scan_number
    parameter value. (integer)
proj_id
    The Project ID is the number assigned to your program on the
    telescope schedule, e.g., B345.  This string is used as a directory
    name for your data. (string)
source_name
    Any Source Name less than 32 characters used as an identifier label
    with your data. (string)
scan_id
    The Scan I.D. is a supplement to the Source Name for labeling the
    data.  It has no effect on the data taking process.  The string must
    be less than 32 characters. (string)
scan_length
    The Scan Length is the duration of the scan in seconds.  Any data
    integrations completed after the end of a scan will normally be
    discarded.  Hence, the Scan Length is typically an integer number of
    integration times plus a second or two. (floating point)
start_time
    The default for starting a scan is to simply start as soon as
    possible, in which case you should not specify a start time.
    Start times for procedures must be set with one of the procedure
    keywords start_utc or start_lst.  This DCR start_time is a lower
    level parameter for direct control of the DCR.  It can be set
    directly with the set_sc_parameter() function using the
    TimeStamp() conversion:

	set_dcr_parameter('start_time', TimeStamp(hh, mm, ss, MJD))

    where hh:mm:ss is the UTC time, and MJD is the Modified Julian
    Date.  Two routines are provided for the convenience of setting
    the start_time using the current MJD or by specifying the Local
    Sidereal Time:

		set_dcr_start_utc('11:45:36.343')
		set_dcr_start_lst('02:44:18')

    An LST will be converted to UTC, and the time will be assumed to
    be in the day between the current time minus 30 minutes and plus
    23 hours 30 minutes.  Note the time format and the fact that they
    are specified as strings.  When you execute the procedure

		x := get_dcr_parameter('start_time');

    the value returned is a glish record containing the Modified
    Julian Date and the UTC in seconds since the beginning of the day,
    e.g., [seconds=61714, MJD=51821, flags=0, refFrame=1, units=1].
stop_time
    The default for starting a scan is to simply start as soon as
    possible, in which case you should not specify a start time.  If
    you want to specify a stop time for the 'track' procedure you must
    use one of the procedure keywords stop_utc or stop_lst.  This DCR
    stop_time is a lower level parameter for direct control of the
    DCR. It can be set directly with the set_sc_parameter() function
    using the TimeStamp() conversion:

	set_dcr_parameter('stop_time', TimeStamp(hh, mm, ss.s, MJD))

    where hh:mm:ss.s is the UTC time, and MJD is the Modified Julian
    Date.  Two routines are provided for the convenience of setting
    the stop_time using the current MJD or by specifying the Local
    Sidereal Time:

		set_dcr_stop_utc('11:45:36.343')
		set_dcr_stop_lst('02:44:18')

    An LST will be converted to UTC, and the time will be assumed to
    be in the day between the current time minus 30 minutes and plus
    23 hours 30 minutes.  Note the time format and the fact that it
    is specified as a string.  When you execute the procedure

		x := get_dcr_parameter('stop_time');

    the value returned is a glish record containing the Modified
    Julian Date and the UTC in seconds since the beginning of the day,
    e.g., [seconds=61714, MJD=51821, flags=0, refFrame=1, units=1].
bank
    The DCR has two banks of inputs identified as Bank A and Bank B.
    Each bank has 16 input channels each.  The Bank is normally
    defaulted to the correct one for the front-end in use, but check
    with the telescope operator or receiver engineer, if you are
    uncertain. (string value: 'A' or 'B')
test_tone
    A 5 MHz test signal is available for testing the DCR input channels.
    When turned on this signal DISCONNECTS THE V/F INPUTS FROM THE
    RECEIVER.  Five MHz is about half of the maximum V/F frequency and
    about 5 times the typical input frequency of 1 MHz.  This is a
    spring-loaded variable in the sense that it is reset to 'off' after
    each scan. (string value constant: OFF or ON)
switch_mode
    The Switching Mode is a menu of predefined switching modes plus a
    user-defined mode.  The Number of Phases, SigRef and Cal states,
    phase Start times, and Advance Sig selections are all set when one
    of the predefined modes is selected.  In the user-defined mode all
    of these parameters are available for user input. (string constant:
    TOTAL_POWER, TOTAL_POWER_NO_CAL, SWITCHING, SWITCHING_NO_CAL,
    SYMMETRIC_TOTAL_PWR, SYMMETRIC_SWITCHING, SYM_SWITCHING_NO_CAL, or
    USER_DEFINED)
cal_state
    The cal_state array specifies the state of the receiver calibration
    control signal in each switching phase.  The number of phases
    depends on the selected Switching Mode or on the number of phases
    selected by the user in the user-defined mode.  In all but the
    user-defined mode the Cal states are predetermined by the selected
    mode. (10-element array of string constants: OFF or ON)
sig_ref_state
    The sig_ref_state array specifies the state of the receiver
    frequency/load/beam switch signal in each switching phase.  The
    number of phases depends on the selected Switching Mode or on the
    number of phases selected by the user in the user-defined mode.
    In all but the user-defined mode the sig_ref states are
    predetermined by the selected mode. (10-element array of string
    constants: SIG or REF)
blanking_time
    Banking Time is the time in seconds at the beginning of each switch
    phase when data integration is inhibited.  The Blanking Time may be
    set to a different value for each phase, but one value is usually
    sufficient for every phase.  The resolution in 100nS. (floating
    point)
Sw1
    The Sw1 state array specifies the state of the first optional TTL
    output port in each switching phase.  This port is available for
    driving devices other than the receiver calibration and
    frequency/load/beam switching in synchronism with these signals.
    The number of phases depends on the selected Switching Mode or on
    the number of phases selected by the user in the user-defined
    mode.  The Sw1 states may be set by the user in any selected
    mode. (10-element array of string constants: HI or LOW)
Sw2
    The Sw2 state array specifies the state of the second optional TTL
    output port in each switching phase.  This port is available for
    driving devices other than the receiver calibration and
    frequency/load/beam switching in synchronism with these signals.
    The number of phases depends on the selected Switching Mode or on
    the number of phases selected by the user in the user-defined
    mode.  The Sw2 states may be set by the user in any selected
    mode. (10-element array of string constants: HI or LOW)
Sw3
    The Sw3 state array specifies the state of the third optional TTL
    output port in each switching phase.  This port is available for
    driving devices other than the receiver calibration and
    frequency/load/beam switching in synchronism with these signals.
    The number of phases depends on the selected Switching Mode or on
    the number of phases selected by the user in the user-defined
    mode.  The Sw3 states may be set by the user in any selected
    mode. (10-element array of string constants: HI or LOW)
Sw4
    The Sw4 state array specifies the state of the fourth optional TTL
    output port in each switching phase.  This port is available for
    driving devices other than the receiver calibration and
    frequency/load/beam switching in synchronism with these signals.
    The number of phases depends on the selected Switching Mode or on
    the number of phases selected by the user in the user-defined
    mode.  The Sw4 states may be set by the user in any selected
    mode. (10-element array of string constants: HI or LOW)
chart_recorder1
    There are two F/V convertor outputs that may be connected to a paper
    chart recorder.  ChartRecorder1 specifies which input V/F channel
    (1-16) is sent to the first output. (string constant: CHAN_1,
    CHAN_2, CHAN_3, CHAN_4, CHAN_5, CHAN_6, CHAN_7, CHAN_8, CHAN_9,
    CHAN_10, CHAN_11, CHAN_12, CHAN_13, CHAN_14, CHAN_15, or CHAN_16)
chart_recorder2
    There are two F/V convertor outputs that may be connected to a paper
    chart recorder.  ChartRecorder2 specifies which input V/F channel
    (1-16) is sent to the second output. (string constant: CHAN_1,
    CHAN_2, CHAN_3, CHAN_4, CHAN_5, CHAN_6, CHAN_7, CHAN_8, CHAN_9,
    CHAN_10, CHAN_11, CHAN_12, CHAN_13, CHAN_14, CHAN_15, or CHAN_16)
monitor1
    Two input channels may be monitored for out-of-range conditions.
    Monitor1 specifies the first of the channel selections
    (1-16). (string constant: CHAN_1, CHAN_2, CHAN_3, CHAN_4, CHAN_5,
    CHAN_6, CHAN_7, CHAN_8, CHAN_9, CHAN_10, CHAN_11, CHAN_12, CHAN_13,
    CHAN_14, CHAN_15, or CHAN_16)
monitor2
    Two input channels may be monitored for out-of-range conditions.
    Monitor2 specifies the second of the channel selections
    (1-16). (string constant: CHAN_1, CHAN_2, CHAN_3, CHAN_4, CHAN_5,
    CHAN_6, CHAN_7, CHAN_8, CHAN_9, CHAN_10, CHAN_11, CHAN_12, CHAN_13,
    CHAN_14, CHAN_15, or CHAN_16)
advance_time
    Two of the six switching signals may be advanced in time and sent to
    separate TTL output ports.  These might be used to drive a
    high-inertia device, such as a secondary or tertiary mirror, to
    start it moving before the DCR switches phase integrators.  The
    Advance Time specifies the time lead, in seconds between 0 and 0.5,
    of both of these signals.  The advance_sig1 and advance_sig2 select
    which of the six signals are advanced and connected to the output
    ports. (floating point)
advance_sig1
    Two of the six switching signals may be advanced in time and sent to
    separate TTL output ports.  These might be used to drive a
    high-inertia device, such as a secondary or tertiary mirror, to
    start it moving before the DCR switches phase integrators.  This
    parameter selects which of the six signals are advanced and
    connected to the first output port. (string constant: CAL, SIG_REF,
    SW1, SW2, SW3, or SW4)
advance_sig2
    Two of the six switching signals may be advanced in time and sent to
    separate TTL output ports.  These might be used to drive a
    high-inertia device, such as a secondary or tertiary mirror, to
    start it moving before the DCR switches phase integrators.  This
    parameter selects which of the six signals are advanced and
    connected to the second output port. (string constant: CAL, SIG_REF,
    SW1, SW2, SW3, or SW4)
number_of_phases
    The Number of Phases specifies how many phases are in the switching
    cycle.  This number is predetermined by the selected Switching Mode
    for all but the user-defined mode.  In that mode the number may be
    between 1 and 10. (integer)
switch_period
    The Switch Period specifies the time in seconds of a full switch
    cycle.  The Integration Time must be an integer number of Switch
    Periods and will be changed to the nearest value when a new Switch
    Period is entered. (floating point)
cycles_per_integration
    Switch Periods (cycles) per Integration is for information only.  It
    is the Integration Time divided by the Switch Period.  The
    Integration Time is adjusted automatically to make this an integer.
    (integer)
integration_time
    Integration Time is the time of one recorded data sample.  It is
    automatically adjusted to be an integer number of Switch Periods.
    One data sample will contain a separate data integration for each
    phase in the switching cycle. (floating point)
channel
    Any of 16 input channels may be activated by setting its value to 1
    in this 16-element array. (array of integers: 0 or 1)
phase_start
    The Phase Start times specify the beginning of each phase as a
    fraction of the total switch cycle.  The first start time must be
    zero, they must increase monotonically, and the last phase start
    time must be less than one.  The effective integration time for a
    phase in one switching cycle is the product of the Switch Period and
    the difference between that phase's and the next phase's start times
    minus the Blanking Time.  The number of phases depends on the
    selected Switching Mode or on the number of phases selected by the
    user in the user-defined mode.  In all but the user-defined mode
    the phase Start times are predetermined by the selected
    mode. (10-element floating point array)
save_file
    The Parameter File name string specifies where the current set of
    parameter values is to be stored to or recalled from.  Any number of
    such files may be created.  They are stored in the directory where
    the glish session was started.  The full set of DCR parameters may
    be saved to disk or recalled from disk after this parameter has been
    set with 
		save_dcr_parameters()
		load_dcr_parameters()
    This file holds parametrs in internal format, so it is intended as a
    temporary snapshot rather than a long term definition of default
    setups. (string)
state
    The State is a read-only parameter that shows the current status of
    the DCR.  The state between scans is normally Ready.  The scan
    sequence of State is Activating, Committed, Running, and Stopping in
    that order.  If the State shows Off or Standby, the DCR may be put
    into the ready state with the 'dcr->on()' glish command.  Normally
    the DCR will be Ready when using this panel.  Setup parameters may
    be changed only in the Ready state. (string constant: OFF_STATE,
    STANDBY, READY, ACTIVATING, COMMITTED, RUNNING, STOPPING, ABORTING)

GBT spectrometer parameters

This section is to be filled in as the device GUI is constructed

Converter Rack parameters

next_scan_number
    The Scan Number normally updates at the beginning of each scan,
    but it may be set to a new value by setting the next_scan_number
    parameter value. (integer)
proj_id
    The Project ID is the number assigned to your program on the
    telescope schedule, e.g., B345.  This string is used as a directory
    name for your data. (string)
source_name
    Any Source Name less than 32 characters used as an identifier label
    with your data. (string)
scan_id
    The Scan I.D. is a supplement to the Source Name for labeling the
    data.  It has no effect on the data taking process.  The string must
    be less than 32 characters. (string)
scan_length
    The Scan Length is the duration of the scan in seconds.  Any data
    integrations completed after the end of a scan will normally be
    discarded.  Hence, the Scan Length is typically an integer number of
    integration times plus a second or two. (floating point)
start_time
    The default for starting a scan is to simply start as soon as
    possible, in which case you should not specify a start time.
    Start times for procedures must be set with one of the procedure
    keywords start_utc or start_lst.  This converter rack start_time
    is a lower level parameter for direct control of the converter
    rack.  It can be set directly with the set_conv_parameter() function
    using the TimeStamp() conversion:

	set_conv_parameter('start_time', TimeStamp(hh, mm, ss, MJD))

    where hh:mm:ss is the UTC time, and MJD is the Modified Julian
    Date.  Two routines are provided for the convenience of setting
    the start_time using the current MJD or by specifying the Local
    Sidereal Time:

		set_conv_start_utc('11:45:36.343')
		set_conv_start_lst('02:44:18')

    An LST will be converted to UTC, and the time will be assumed to
    be in the day between the current time minus 30 minutes and plus
    23 hours 30 minutes.  Note the time format and the fact that they
    are specified as strings.  When you execute the procedure

		x := get_conv_parameter('start_time');

    the value returned is a glish record containing the Modified
    Julian Date and the UTC in seconds since the beginning of the day,
    e.g., [seconds=61714, MJD=51821, flags=0, refFrame=1, units=1].
stop_time
    The default for starting a scan is to simply start as soon as
    possible, in which case you should not specify a start time.  If
    you want to specify a stop time for the 'track' procedure you must
    use one of the procedure keywords stop_utc or stop_lst.  This
    converter rack stop_time is a lower level parameter for direct
    control of the converter rack. It can be set directly with the
    set_conv_parameter() function using the TimeStamp() conversion:

	set_conv_parameter('stop_time', TimeStamp(hh, mm, ss.s, MJD))

    where hh:mm:ss.s is the UTC time, and MJD is the Modified Julian
    Date.  Two routines are provided for the convenience of setting
    the stop_time using the current MJD or by specifying the Local
    Sidereal Time:

		set_conv_stop_utc('11:45:36.343')
		set_conv_stop_lst('02:44:18')

    An LST will be converted to UTC, and the time will be assumed to
    be in the day between the current time minus 30 minutes and plus
    23 hours 30 minutes.  Note the time format and the fact that it
    is specified as a string.  When you execute the procedure

		x := get_conv_parameter('stop_time');

    the value returned is a glish record containing the Modified
    Julian Date and the UTC in seconds since the beginning of the day,
    e.g., [seconds=61714, MJD=51821, flags=0, refFrame=1, units=1].
module_active
    The Module Active parameter sets which of the 16 converter
    modules in the Converter Rack are under control of the Converter Rack
    manager. (string constant: OFF and ON)
lo_active
    The LO Active parameter sets which of the 8 frequency
    synthesizers (LO2) in the Converter Rack are under control of the
    Converter Rack manager. (string constant: OFF and ON)
input_select
    The Input Select parameter selects between A and B inputs of each
    IF channel in the Converter Rack.  These inputs are normally
    connected outputs of the optical fiber receiver modules. (string
    constant: 'A' and 'B')
output_select
    The Output Select parameter selects one of four output frequency
    ranges from each of the 16 IF channels in the Converter Rack.
    Selection 1 corresponds to the 150-2000 MHz output connector J3
    (Sampler Filter); selection 2 to the 500-1000 MHz output connector
    J4 (VLBA DAR); selection 3 to four 150-550 MHz parallel outputs J5
    (spectral processor), J6 (Converter Filter), J7 (spare), and J8
    (spare); and selection 4 to the 150-2000 MHz output J9 (spare).
attenuator
    The Attenuator parameter sets the attenuator values for
    each of the 16 IF channels in the Converter Rack.  The attenuator
    values can be between 0 and 31.875 dB in 1/8th dB steps.  Values are
    specified in floating point and the nearest available value is set.
    When the Converter Rack is used in connection with the
    autocorrelation GBT spectrometer these values may be set
    automatically by the sampler level balancing routine. (floating point)
lo_frequency
    The LO Frequency sets the frequency of each of 8 LO
    synthesizers in the Converter Rack.  The output of each synthesiser
    is shared by two IF channels in this rack (often connected to two
    orthogonally polarized front-end channels to be observed at the same
    frequency).  This is the second LO (LO2) in the GBT frequency
    conversion chain.  Its range is 10500 to 18000 MHz, and it is used
    to cover frequencies in the 1 to 8 GHz passband of the optical
    fiber transceivers to a fixed second IF passband of 8500 to 10350
    MHz. (floating point)
lo_level
    The LO Level parameter sets the power level, in dBm, for
    each of the 8 frequency synthesizers (LO2) in the Converter Rack.
    Values can range from -119.9 to +15.0 dBm. (floating point)
save_file
    The Parameter File name string specifies where the current set of
    parameter values is to be stored to or recalled from.  Any number of
    such files may be created.  They are stored in the directory where
    the glish session was started.  The full set of Converter Rack
    parameters may be saved to disk or recalled from disk after this
    parameter has been set with 
		save_conv_parameters()
		load_conv_parameters()
    This file holds parametrs in internal format, so it is intended as a
    temporary snapshot rather than a long term definition of default
    setups. (string)
state
    The State is a read-only parameter that shows the current status of
    the DConverter Rack.  The state between scans is normally Ready.
    The scan sequence of State is Activating, Committed, Running, and
    Stopping in that order.  If the State shows Off or Standby, the
    Converter Rack may be put into the ready state with the 'conv->on()'
    glish command.  Normally the Converter Rack will be Ready when using
    this panel.  Setup parameters may be changed only in the Ready
    state. (string constant: OFF_STATE, STANDBY, READY, ACTIVATING,
    COMMITTED, RUNNING, STOPPING, ABORTING)
status
    The Status is a read-only parameter that tells the currently highest
    warning or fault level for the Converter Rack.  The possible values
    are clear, Info, Notice, Warning, Error, Fault, and Fatal.  One of
    the last three conditions can prevent the Converter Rack
    participating in the GBT scan sequence. (string constant: CLEAR,
    INFO, NOTICE, WARNING, ERROR, FAULT, and FATAL)

Local oscillator parameters

rest_frequency
    This parameter is the Rest Frequency, in MHz, of the spectral line
    being observed. (floating point)
define_velocity
    The Velocity Definition determines how the Source Velocity is
    translated into frequency.  See the L.O. documentation for the
    defining equations. (string constant: RADIO, OPTICAL,
    RELATIVISTIC, or Z)
reference_frame
    The Reference Frame specifies the inertial rest frame in which the
    Source Velocity is defined. (string constant: TOPOCENTER,
    SS_BARYCENTER, or LSR)
velocity
    The Velocity, in km/s (or unitless for the Z velocity
    definition), determines the sky center frequency of the spectrometer
    passband.  The conversion from velocity to frequency uses the
    equations and rest frame specified by the Velocity Definition and
    Reference Frame parameters. (floating point)
center_frequency
    The Center Frequency, in MHz, determines the sky center frequency of
    the continuum or spectrometer passband when Doppler tracking is not
    required. (floating point)

This section is to be completed as the device GUI is constructed

Front-end parameters

This section is to be filled in as the device GUI is constructed

IF router parameters

This section is to be filled in as the device GUI is constructed

This document last updated October 13, 1997.

rfisher@nrao.edu

Rick Fisher's Home Page