Files
sics/doc/user/sansdocbook.xml
Ferdi Franceschini 3168325921 PSI update
r1464 | ffr | 2007-02-12 12:20:21 +1100 (Mon, 12 Feb 2007) | 2 lines
2012-11-15 12:58:05 +11:00

5403 lines
177 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<book>
<bookinfo>
<title>SICS manual for the SANS I instrument</title>
<authorgroup>
<author>
<personname>
<honorific>Dr</honorific>
<firstname>Joachim</firstname>
<surname>Kohlbrecher</surname>
</personname>
<address>
<affiliation>
<orgname>Paul Scherrer Institute PSI</orgname>
<orgdiv>LNS, Laboratory for Neutron Scattering</orgdiv>
</affiliation>
<city>Villigen</city>
<postcode>5232</postcode>
<country>Switzerland</country>
</address>
</author>
<author>
<personname>
<honorific>Dr</honorific>
<firstname>Mark</firstname>
<surname>K&ouml;nnecke</surname>
</personname>
<address>
<affiliation>
<orgname>Paul Scherrer Institute PSI</orgname>
<orgdiv>LDM, Laboratory for Developments and Methods</orgdiv>
</affiliation>
<city>Villigen</city>
<postcode>5232</postcode>
<country>Switzerland</country>
</address>
</author>
<author>
<personname>
<honorific>Dr</honorific>
<firstname>Ronny</firstname>
<surname>Vavrin</surname>
</personname>
<address>
<affiliation>
<orgname>Paul Scherrer Institute PSI</orgname>
<orgdiv>LNS, Laboratory for Neutron Scattering</orgdiv>
</affiliation>
<city>Villigen</city>
<postcode>5232</postcode>
<country>Switzerland</country>
</address>
</author>
</authorgroup>
<pubdate>20.April 2007</pubdate>
<abstract>
<title>Abstract</title>
<para>This manual describes how to set up the small angle neutron scattering (SANS) instrument at
the SINQ spallation source at PSI and gives a short reminder of important commands.
This document can be
<ulink url="http://kur.web.psi.ch/sans1/SANSDoc/SICS4SANS1.pdf">downloaded</ulink> as a pdf file.
</para>
</abstract>
</bookinfo>
<chapter>
<title>Quick reference Guide</title>
<section>
<title>Instrument control programs</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>startsics &amp;</computeroutput>
</term>
<listitem>
<para>
starts the SICS server.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>killsics &amp;</computeroutput>
</term>
<listitem>
<para>
kills the SICS server.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>sics &amp;</computeroutput>
</term>
<listitem>
<para>
starts the SICS command line client.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>sansstatus &amp;</computeroutput>
</term>
<listitem>
<para>
starts the SANS status display.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>varwatch &amp;</computeroutput>
</term>
<listitem>
<para>
starts the variable watcher.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>The <computeroutput>token</computeroutput> command</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>token grab</computeroutput>
</term>
<listitem>
<para>
reserves control over the instrument to the client issuing this command.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>token release</computeroutput>
</term>
<listitem>
<para>
releases the token.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>token force &lt;passwd&gt;</computeroutput>
</term>
<listitem>
<para>
This command forces an exiting grab on a token to be released (manager privileges required).
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Executing a macro</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>exe BatchPath [&lt;path&gt;]</computeroutput>
</term>
<listitem>
<para>
defines directory for script files executed by <computeroutput>exe</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>exe &lt;filename&gt;</computeroutput>
</term>
<listitem>
<para>
executes script file <computeroutput>&lt;filename&gt;</computeroutput>
located in directory defined by <computeroutput>exe BatchPath</computeroutput>. This command
allows enhanced batch control through
the <computeroutput>SICSBatchEditor</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>ClientPut &lt;text&gt;</computeroutput>
</term>
<listitem>
<para>
writes <computeroutput>&lt;text&gt;</computeroutput>
to the client in which this command was written.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>BroadCast &lt;text&gt;</computeroutput>
</term>
<listitem>
<para>
writes <computeroutput>&lt;text&gt;</computeroutput>
to all clients.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
in a terminal window: <computeroutput>sanscheck &lt;filename&gt;</computeroutput>
</term>
<listitem>
<para>
checks the batchfile <computeroutput>&lt;filename&gt;</computeroutput>
for errors and calculates the total of Monis to be measured.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
TCL command language interface
</term>
<listitem>
<para>
is implemented in the SICS server.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Logging executed commands</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>commandlog new &lt;filename&gt;</computeroutput>
</term>
<listitem>
<para>
starts a new <computeroutput>commandlog</computeroutput> writing to file <computeroutput>&lt;filename&gt;</computeroutput>
(file stored in <computeroutput>/home/SANS/log</computeroutput>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>commandlog</computeroutput>
</term>
<listitem>
<para>
displays status of <computeroutput>commandlog</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>commandlog close</computeroutput>
</term>
<listitem>
<para>
closes the command log.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>commandlog auto</computeroutput>
</term>
<listitem>
<para>
switches the automatic log on.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>commandlog tail &lt;n&gt;</computeroutput>
</term>
<listitem>
<para>
prints the last &lt;n&gt; lines of the log file.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Driving a motor</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>run &lt;mot1&gt; &lt;val1&gt; [&lt;mot2&gt; &lt;val2&gt; ...]</computeroutput>
</term>
<listitem>
<para>
starts motion of the motors to the new values without waiting for the requested operation to finish.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>drive &lt;mot1&gt; &lt;val1&gt; [&lt;mot2&gt; &lt;val2&gt; ...]</computeroutput>
</term>
<listitem>
<para>
drives the motors and waits until movement is finished.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>success</computeroutput>
</term>
<listitem>
<para>
waits and blocks the command connection until all pending operations have finished.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;mot&gt; list</computeroutput>
</term>
<listitem>
<para>
lists all the motor &lt;mot&gt; parameters.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Motor handling</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>&lt;motor&gt; list</computeroutput>
</term>
<listitem>
<para>
lists all motor parameters.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motor&gt; reset</computeroutput>
</term>
<listitem>
<para>
resets motor parameters to default values.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motor&gt; position</computeroutput>
</term>
<listitem>
<para>
prints actual position.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motor&gt; interest</computeroutput>
</term>
<listitem>
<para>
prints position changes.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motor&gt; hardlowerlim</computeroutput>
</term>
<listitem>
<para>
prints hardware lower limit.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motor&gt; hardupperlim</computeroutput>
</term>
<listitem>
<para>
prints hardware upper limit
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motor&gt; softlowerlim [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
prints/sets software lower limit.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motor&gt; softupperlim [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
prints/sets software upper limit.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motor&gt; softzero [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
prints/sets software zero.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motor&gt; fixed [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
fixes motor for <computeroutput>&lt;val&gt;</computeroutput> &ge; 0 or releases it for
<computeroutput>&lt;val&gt;</computeroutput> &lt; 0.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motor&gt; interruptmode [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
defines interrupt issued if motor movement fails.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motor&gt; precision [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
denotes the positioning precision.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motor&gt; accesscode [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
specify user privileges of <computeroutput>&lt;motor&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motor&gt; speed</computeroutput>
</term>
<listitem>
<para>
defunct.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motor&gt; sign [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
reverses operation sense.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Special commands (e.g. <computeroutput>st</computeroutput>,
<computeroutput>dt</computeroutput> ...)</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>&lt;cop&gt;</computeroutput>
</term>
<listitem>
<para>
lists current position.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;cop&gt; back</computeroutput>
</term>
<listitem>
<para>
drives component to last position.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;cop&gt; pos &lt;name&gt;</computeroutput>
</term>
<listitem>
<para>
defines a name for actual position.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;cop&gt; &lt;name&gt;</computeroutput>
</term>
<listitem>
<para>
drives component to named position.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;cop&gt; drop &lt;name&gt;</computeroutput>
</term>
<listitem>
<para>
deletes named position.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;cop&gt; drop all</computeroutput>
</term>
<listitem>
<para>
deletes all named positions.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;cop&gt; list</computeroutput>
</term>
<listitem>
<para>
lists all named position.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;cop&gt; find</computeroutput>
</term>
<listitem>
<para>
returns name of actual position.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;cop&gt; &lt;axis&gt; [=] &lt;val&gt; ...</computeroutput>
</term>
<listitem>
<para>
drive component to new position.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Sample environment devices</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>EVFactory new &lt;ED&gt; &lt;type&gt; &lt;par&gt; ...</computeroutput>
</term>
<listitem>
<para>
creates a new sample environment device called <computeroutput>&lt;ED&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>EVFactory del &lt;ED&gt;</computeroutput>
</term>
<listitem>
<para>
deletes sample environment device <computeroutput>&lt;ED&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>emon list</computeroutput>
</term>
<listitem>
<para>
lists all registered environment devices.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>emon register &lt;ED&gt;</computeroutput>
</term>
<listitem>
<para>
registers environment device <computeroutput>&lt;ED&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>emon unregister &lt;ED&gt;</computeroutput>
</term>
<listitem>
<para>
unregisters environment device <computeroutput>&lt;ED&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;ED&gt; Tolerance [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
allowed deviation from preset.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;ED&gt; Access [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
changes access to device.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;ED&gt; Lowerlimit [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
lower limit for controller.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;ED&gt; Upperlimit [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
upper limit for controller.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;ED&gt; ErrHandler [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
error handler to use for this controller.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;ED&gt; Interrupt [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
interrupt to issue when an error is detected.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;ED&gt; SafeValue [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
The value to drive the controller to when an error is detected and safe error handling is set.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;ED&gt; send &lt;par&gt; [&lt;par&gt; ...]</computeroutput>
</term>
<listitem>
<para>
sends everything after <computeroutput>send</computeroutput> directly to the controller and returns its response.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;ED&gt; list</computeroutput>
</term>
<listitem>
<para>
lists all parameters.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;ED&gt; [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
returns current value or will drive device to new value <computeroutput>&lt;val&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;ED&gt; log on/off</computeroutput>
</term>
<listitem>
<para>
switches logging on/off.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;ED&gt; log clear</computeroutput>
</term>
<listitem>
<para>
clears all recorded time stamps and values.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;ED&gt; log gettime</computeroutput>
</term>
<listitem>
<para>
retrieves list of all recorded time stamps.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;ED&gt; log getval</computeroutput>
</term>
<listitem>
<para>
retrieves list of all recorded values.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;ED&gt; log getmean</computeroutput>
</term>
<listitem>
<para>
calculates mean value and standard deviation of logged values.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;ED&gt; log frequency [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
specifies the time intervall in seconds between log records.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Beam shutter</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>shutter</computeroutput>
</term>
<listitem>
<para>
returns status of instrument shutter.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>shutter open</computeroutput>
</term>
<listitem>
<para>
opens beam shutter.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>shutter close</computeroutput>
</term>
<listitem>
<para>
closes beam shutter.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Neutron Velocity Selector</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>lambda</computeroutput>
</term>
<listitem>
<para>
prints the current wavelength in nm.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>drive lambda &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
changes wavelength to value &lt;val&gt; in nm.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>lambda rot &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
calculates the rotation speed for the wavelength given by <computeroutput>&lt;val&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>lambda wl &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
calculates the wavelength for the rotation speed given by <computeroutput>&lt;val&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>nvs status</computeroutput>
</term>
<listitem>
<para>
prints status summary.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>nvs list</computeroutput>
</term>
<listitem>
<para>
displays rotation speed and tilt angle.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>nvs [rot=&lt;val1&gt;] [tilt=&lt;val2&gt;]</computeroutput>
</term>
<listitem>
<para>
sets a new tilt angle and/or rotation speed.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>nvs rotinteres</computeroutput>
</term>
<listitem>
<para>
enables printing of status message about the current state of the selector when it is driven.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>nvs loss</computeroutput>
</term>
<listitem>
<para>
start a loss current measurement.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>nvswatch [&lt;par&gt;] ...</computeroutput>
</term>
<listitem>
<para>
is the object for monitoring the velocity selector and understands the commands for sample environment devices.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Positioning an attenuator</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>att</computeroutput>
</term>
<listitem>
<para>
prints the current positioned attenuator.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>att &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
positions attenuator <computeroutput>&lt;val&gt;</computeroutput>.
Allowed attenuator numbers are: 0, 1, 2, 3, 4 and 5.
<simplelist>
<member>0 : square 50 mm x 50 mm slit, attenuation = 1
</member>
<member>1 : circular 41 x diameter 0.4 mm slit, attenuation = 1/485
</member>
<member>2 : circular 9 x diameter 2 mm slit, attenuation = 1/88
</member>
<member>3 : circular 20 mm diameter slit, attenuation = 1/8
</member>
<member>4 : circular 30 mm diameter slit, attenuation = 1/3.5
</member>
<member>5 : circular 15 mm diameter slit, attenuation = 1/??
</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Changing collimation</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>coll</computeroutput>
</term>
<listitem>
<para>
prints the current collimatin length.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>coll &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
positions the collimation <computeroutput>&lt;val&gt;</computeroutput>.
Allowed collimation lengths are: 1, 1.4, 2, 3, 4.5, 6, 8, 11, 15 and 18.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Positioning the detector</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>detectorx</computeroutput>
</term>
<listitem>
<para>
motor to change sample detector distance (<computeroutput>x</computeroutput>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>detectory</computeroutput>
</term>
<listitem>
<para>
motor for lateral displacement (<computeroutput>y</computeroutput>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>detectorrotation</computeroutput>
</term>
<listitem>
<para>
motor for detector rotation (<computeroutput>phi</computeroutput>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>dt [x=&lt;val1&gt;] [y=&lt;val2&gt;] [phi=&lt;val3&gt;]</computeroutput>
</term>
<listitem>
<para>
special SANS command for controlling all three detector axes together.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Positioning the beam stop</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>beamstopx</computeroutput>
</term>
<listitem>
<para>
motor for horizontal movement.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>beamstopy</computeroutput>
</term>
<listitem>
<para>
motor for vertical movement.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>bs [x=&lt;val1&gt;] [y=&lt;val2&gt;]</computeroutput>
</term>
<listitem>
<para>
special SANS command for controlling both beam stop axes together.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>bsout</computeroutput>
</term>
<listitem>
<para>
moves beam stop out of detecion area.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>bsin</computeroutput>
</term>
<listitem>
<para>
moves beam stop back into position.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>bscfree</computeroutput>
</term>
<listitem>
<para>
releases the beam stop motors.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>bschange [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
changes beam stop size, without parameter it returns the beam stop type.
<simplelist>
<member>1 for beam stop size of 40 mm x 40 mm
</member>
<member>2 for beam stop size of 70 mm x 70 mm
</member>
<member>3 for beam stop size of 85 mm x 85 mm
</member>
<member>4 for beam stop size of 100 mm x 100 mm
</member>
</simplelist>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>bscslot</computeroutput>
</term>
<listitem>
<para>
returns value of the beam stop type.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Sample table</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>saz</computeroutput>
</term>
<listitem>
<para>
motor for vertical translation (<computeroutput>z</computeroutput>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>say</computeroutput>
</term>
<listitem>
<para>
motor for horizontal translation parallel to neutron beam (<computeroutput>y</computeroutput>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>sax</computeroutput>
</term>
<listitem>
<para>
motor for horizontal translation perpendicular to neutron beam (<computeroutput>x</computeroutput>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>som</computeroutput>
</term>
<listitem>
<para>
motor for rotation around vertical axis (<computeroutput>phi</computeroutput>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>gtheta</computeroutput>
</term>
<listitem>
<para>
motor for rotation around horizontal axis (<computeroutput>theta</computeroutput>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>sposi</computeroutput>
</term>
<listitem>
<para>
horizontal translation for linear translator (<computeroutput>posi</computeroutput>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>st [&lt;axis n&gt;=&lt;val n&gt;] ...</computeroutput>
</term>
<listitem>
<para>
is a special SANS command for controlling all seven sample axes together.
<computeroutput>&lt;axis n&gt;</computeroutput> can be <computeroutput>x, y, z, omega, phi, theta, posi</computeroutput>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Bruker electro magnet</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>evfactory new magnet bruker
</computeroutput>
</term>
<term>
<computeroutput>
lnsa10.psi.ch 4000 9</computeroutput>
</term>
<listitem>
<para>
initialisation sequence.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>magnet</computeroutput>
</term>
<listitem>
<para>
is a valid sample environment device if initialised as above.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>magnet polarity</computeroutput>
</term>
<listitem>
<para>
prints polarity of magnet.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>magnet polarity &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
sets polarity, <computeroutput>&lt;val&gt;</computeroutput> can be
<computeroutput>plus</computeroutput> or <computeroutput>minus</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>magnet mode</computeroutput>
</term>
<listitem>
<para>
prints the mode of the controller.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>magnet mode &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
sets mode, <computeroutput>&lt;val&gt;</computeroutput> can be
<computeroutput>field</computeroutput> or <computeroutput>current</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>magnet field</computeroutput>
</term>
<listitem>
<para>
prints the magnetic field.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>magnet current</computeroutput>
</term>
<listitem>
<para>
prints the current.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Sample holder for electro magnet</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>mz</computeroutput>
</term>
<listitem>
<para>
motor for vertical movement (<computeroutput>z</computeroutput>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>mom</computeroutput>
</term>
<listitem>
<para>
motor for rotation around vertical axis (<computeroutput>omega</computeroutput>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>msh [z=&lt;val1&gt;] [omega=&lt;val2&gt;]</computeroutput>
</term>
<listitem>
<para>
is a special SANS command for controlling both axes of the magnet sample holder together.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Haake C25P temperature controller</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>start_sea
</computeroutput>
</term>
<listitem>
<para>
starts the sea server from SICS.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>temperature</computeroutput>
</term>
<listitem>
<para>
reads out the current temperature.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>drive temperature &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
changes the set temperature of the thermostat to the value <computeroutput>&lt;val&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
in a terminal window: <computeroutput>sea
</computeroutput>
</term>
<listitem>
<para>
starts the sea server client from a terminal. Choose Haake as device. The sea server client is the
best way to control and monitor the thermostat manually. Please refer to the
<ulink url="http://lns00.psi.ch/sinqwiki/Wiki.jsp?page=Sea">
SEA Wiki page</ulink> for more information.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Eurotherm controller</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>evfactory new temperature euro
</computeroutput>
</term>
<term>
<computeroutput>
lnsa10.psi.ch 4000 &lt;port&gt;</computeroutput>
</term>
<listitem>
<para>
initialisation sequence. &lt;port&gt; is the serial port number at sans.psi.ch where
the controller is connected (usually port 13).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>temperature</computeroutput>
</term>
<listitem>
<para>
is a valid sample environment device if initialised as above.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>temperature list</computeroutput>
</term>
<listitem>
<para>
overview of the temperature controller parameters. Use 'emon unregister temperature'
to avoid out of range error messages.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Analogue and digital input and output</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>init_adios.tcl
</computeroutput>
</term>
<listitem>
<para>
initialisation sequence.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>AO &lt;channel&gt; &lt;value&gt;</computeroutput>
</term>
<listitem>
<para>
sends an analogue signal (-10V -> 10V) to channel 0 or 1.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>AI &lt;channel&gt;</computeroutput>
</term>
<listitem>
<para>
reads the tension at channels 0 to 7. Channels 0 and 1 are reserved for the CJC and
the thermocouple readout.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>temp &lt;type&gt;</computeroutput>
</term>
<listitem>
<para>
returns the temperature as measured by a thermocouple (tc) or a resistor (pt).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>log &lt;time interval&gt; &lt;channel1&gt;
&lt;channel2&gt; ...</computeroutput>
</term>
<listitem>
<para>
stores the values measured at the specified channels into a file in the
speficied time interval. Up to 4 channels can be logged simultanuously.
The temperature can be logged using channel 1.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>log stop</computeroutput>
</term>
<listitem>
<para>
stops logging the data.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Counter handling</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>counter SetPreset &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
sets the preset to <computeroutput>&lt;val&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>counter GetPreset</computeroutput>
</term>
<listitem>
<para>
prints the current preset value.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>counter SetExponent &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
sets exponent for <computeroutput>Monitor</computeroutput> mode.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>counter GetExponent</computeroutput>
</term>
<listitem>
<para>
prints current exponent used in <computeroutput>Monitor</computeroutput> mode.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>counter SetMode &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
sets counting mode. Allowed modes are <computeroutput>Timer</computeroutput>
and <computeroutput>Monitor</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>counter GetMode</computeroutput>
</term>
<listitem>
<para>
prints the current mode.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>counter GetCounts</computeroutput>
</term>
<listitem>
<para>
prints counts gathered in the last run.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>counter GetMonitor &lt;n&gt;</computeroutput>
</term>
<listitem>
<para>
prints counts gathered by monitor <computeroutput>&lt;n&gt;</computeroutput> in the last run.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>counter Count &lt;preset&gt;</computeroutput>
</term>
<listitem>
<para>
starts counting with preset <computeroutput>&lt;preset&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>counter Status</computeroutput>
</term>
<listitem>
<para>
prints the counter status.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>counter GetTime</computeroutput>
</term>
<listitem>
<para>
retrieves the actual time the counter counted for.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>counter GetThreshold &lt;n&gt;</computeroutput>
</term>
<listitem>
<para>
retrieves the threshold of monitor <computeroutput>&lt;n&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>counter SetThreshold &lt;n&gt; &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
sets the threshold for monitor <computeroutput>&lt;n&gt;</computeroutput> to
<computeroutput>&lt;val&gt;</computeroutput> and also sets the active monitor for the threshold
to <computeroutput>&lt;n&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Histogram Memory</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>banana configure HistMode &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
sets the mode of operation (<computeroutput>Transparent, Normal, TOF, Stroposcopic</computeroutput>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>banana configure OverFlowMode &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
determines how bin overflow is handled (<computeroutput>Ignore, Ceil, Count</computeroutput>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>banana configure Rank &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
defines number of histograms in memory.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>banana configure Length &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
gives length of individual histogram.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>banana configure BinWidth &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
determines size of single bin in histogram memory in bytes.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>banana timebin</computeroutput>
</term>
<listitem>
<para>
prints actual time binning aray.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>banana genbin &lt;start&gt; &lt;step&gt; &lt;n&gt;</computeroutput>
</term>
<listitem>
<para>
determines size of single bin in histogram memory in bytes.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>banana setbin &lt;inum&gt; &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
configuring unequally spaced time binnings.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>banana clearbin</computeroutput>
</term>
<listitem>
<para>
deletes the binning informations.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>banana preset [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
prints/sets preset <computeroutput>Timer</computeroutput> or <computeroutput>Monitor</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>banana exponent [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>
prints/sets exponent for <computeroutput>Monitor</computeroutput> preset.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>banana CountMode [&lt;mode&gt;]</computeroutput>
</term>
<listitem>
<para>
prints/sets count mode (<computeroutput>Monitor</computeroutput>, <computeroutput>Timer</computeroutput>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>banana init</computeroutput>
</term>
<listitem>
<para>
transfers configuration from host to the actual histogram memory.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>banana count</computeroutput>
</term>
<listitem>
<para>
starts counting.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>banana initval &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
initialises histogram memory to value <computeroutput>&lt;val&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>banana get &lt;i&gt; &lt;istart&gt; &lt;iend&gt;</computeroutput>
</term>
<listitem>
<para>
retrieves a part of histogram memory.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>banana sum &lt;d0min&gt; &lt;d0max&gt; &lt;d1min&gt; &lt;d1max&gt;</computeroutput>
</term>
<listitem>
<para>
returns the sum of counts on an area of the detector.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Data acquisition</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>StoreData</computeroutput>
</term>
<listitem>
<para>
writes current instrument status to a NeXus file.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>count [&lt;mode&gt; &lt;preset&gt;]</computeroutput>
</term>
<listitem>
<para>
start count operation in mode <computeroutput>&lt;mode&gt;</computeroutput>
with preset <computeroutput>&lt;preset&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>repeat &lt;num&gt; [&lt;mode&gt; &lt;preset&gt;]</computeroutput>
</term>
<listitem>
<para>
calls <computeroutput>&lt;num&gt;</computeroutput> times <computeroutput>count</computeroutput>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>XY table</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>xydata clear</computeroutput>
</term>
<listitem>
<para>
clears all entries in the x-y table.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>xydata list</computeroutput>
</term>
<listitem>
<para>
lists the entries in the x-y table on the screen.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>xydata write &lt;filename&gt;</computeroutput>
</term>
<listitem>
<para>
writes the x-y list to the disk file <computeroutput>&lt;filename&gt;</computeroutput>.
This file resides on the machine running the SICS server.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>xydata uuget</computeroutput>
</term>
<listitem>
<para>
sends the x-y list in an uuen-coded format. This is the command to give to the
VarWatch SICS client in order to make it display the x-y list.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>xydata add &lt;xval&gt; &lt;yval&gt;</computeroutput>
</term>
<listitem>
<para>
creates a new x-y list entry with the values &lt;xval&gt; and &lt;yval&gt;.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Useful commands</title>
<para>
<variablelist>
<varlistentry>
<term>
<computeroutput>gc &lt;measMonis&gt; &lt;totalCounts&gt;</computeroutput>
</term>
<listitem>
<para>
GuessCount: executes a measurement of &lt;measMonis&gt; Monis and extrapolates the measurement time and Monis
for a final value of &lt;totalCounts&gt; counts. A useful tool to estimate the measurement time for a sample. Example:
<computeroutput>gc 5 1E7</computeroutput> forces the instrument to measures for 5 Monis and estimates the measurement
time and Monis for 10'000'000 counts.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>qrange [x &lt;detdist&gt;] [wl &lt;lambda&gt;]</computeroutput>
</term>
<listitem>
<para>
calculates the q range of the current setting. The detector distance x (in mm) and the wavelength wl
(in nm) can be varied with the optional parameters. Examples: <computeroutput>qrange</computeroutput> prints the q range of the current
setting, <computeroutput>qrange x 6000 wl 0.8</computeroutput> prints the q range of the current
setting with forced values for the detector distance (6000mm) and the wavelength (0.8nm).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>sinq</computeroutput>
</term>
<listitem>
<para>
prints the SINQ status in the SICS client which issued the command.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
in a terminal window: <computeroutput>sanscheck &lt;filename&gt;</computeroutput>
</term>
<listitem>
<para>
checks the batchfile <computeroutput>&lt;filename&gt;</computeroutput>
for errors and calculates the total of Monis to be measured.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
</chapter>
<chapter>
<title>How to start</title>
<section>
<title>Log in on the SANS computer</title>
<para>
After starting up an X-Terminal click on the XDMCP button and choose
the computer <emphasis>lnsa10.psi.ch</emphasis>. Login with your
<computeroutput>&lt;username&gt;</computeroutput>
and <computeroutput>&lt;password&gt;</computeroutput>
(case sensitive, this is a Unix machine). Wait for the Common Desktop
Environment to start up. Open a terminal window (dtterm).
You will be asked for your last name and if this is your first login a
subdirectory <computeroutput>/data/lnsg/&lt;lastname&gt;</computeroutput>
will be created.
</para>
</section>
<section>
<title>Start the SINQ instrument control software SICS</title>
<para>
SICS is a client server system. This means there are at least two programs
necessary to run the experiment. The first is the server program, which
runs for the SANS instrument on the <emphasis>lnsa10.psi.ch</emphasis>
workstation. A user rarely needs to bother about this program as it meant to run
all the time. Secondly a client program is needed, through which the user can interact
with the instrument control server. Its main purpose is to forward commands
to the server and to display the answers. For the SANS instrument three
SICS clients are available:
<orderedlist>
<listitem><para>command line control client (<computeroutput>sics &amp;</computeroutput>)
</para>
</listitem>
<listitem>
<para>status display (<computeroutput>sansstatus &amp;</computeroutput>)
</para>
</listitem>
<listitem>
<para>variable watcher (<computeroutput>varwatch</computeroutput>)
</para>
</listitem>
</orderedlist>
Any of the SICS clients first have to be connected to a SICS server before
it becomes active.Therefor you first have to establish a connection through
the <computeroutput>[Connect]</computeroutput> menu of the client.
</para>
<section>
<title>Command control line client</title>
<para>
The command line control client allows you after connecting to the
instrument server to read out instrument parameters like
motor positions, temperatures, magnetic field, etc. In order to move a motor
or to start a data aquisition you need access privileges. The SICS
server supports autorisation on different levels to protect the
instrument against unauthorized hackers or accidental change of
the instrument adjustment of less knowledgable user. Four different
levels of access to the instrument are supported.
<orderedlist>
<listitem><para><emphasis>Spy</emphasis>: you may read out any
instrument value, but may not change anything
</para>
</listitem>
<listitem>
<para>
<emphasis>User</emphasis>: you are privileged
to perform a certain amount of operations necessary
to run the instrument
</para>
</listitem>
<listitem>
<para>
<emphasis>Manager</emphasis>: you have the
permission to do almost everything
</para>
</listitem>
<listitem>
<para>
<emphasis>Internal</emphasis>: is not accessible
to the outside world and is used to circumvent
protection for internal uses
</para>
</listitem>
</orderedlist>
To change the privileges select <computeroutput>[Set Rights]</computeroutput>
from the <computeroutput>[User Parameter]</computeroutput> menu.
With an valid username and the corresponding password you will get
the privileges to change the instrument set-up. Please do not use this privileges
on any other terminal than the one in the SANS cabine. For more information click
on <computeroutput>[Help]</computeroutput> button on the top right corner of the
command line client. A list of the most needed SICS commands is given in
<xref linkend="instrcontrcomm"/>. If you start the sics client the first time you
should fill out this items in the menu
<computeroutput>[New Experiment]</computeroutput> for documentation
of your data.
</para>
</section>
<section>
<title>SANS status display</title>
<para>
The SANS status display is an application for displaying the status of a SANS
measurement at SINQ. The application can be stated by the command
<computeroutput>sansstatus &amp;</computeroutput>. First a connection to the
SICS server has to be established. You can choose between two data display areas.
The first form shows a large colour mapped image of the detector.
The second form shows a couple of selected instrument parameters.
Switching between the two displays is achieved through the buttons
<computeroutput>[Detector]</computeroutput> and <computeroutput>[Parameter]
</computeroutput>of the tool bar.
</para>
<para>
The displayed data window can be updated either manually or automatic. By
default manual update is enabled. Manual update happens when hitting the
red button at the bottom. Automatic update can be enabled by checking the
CheckBox labelled <computeroutput>[Automatic Update]</computeroutput> in
the <computeroutput>[Update]</computeroutput> menu. The update intervall
can be configured with a dialog which shows up when the
<computeroutput>[Set Update Intervall]</computeroutput> menu selection is
clicked. Automatic updates impose a high network load. Use with care and
only when necessary. For this reason, automatic updates are disabled in
the applet version of this program. An updates take approximatly 5 seconds.
Consequently update intervalls shorter than that are nonsense. Speeding
this up an <computeroutput>[Turbo Update]</computeroutput> button has been
introduced. In this modus the client doesn't communicate with the SICS
server to recieve the detector information, but it communicates directly
with the histograming memory. This speeds the update frequency up to a few
frames per second. <computeroutput>[Turbo Update]</computeroutput> will
continuously poll the histogram memory for new histogram data. This is only
limited by CPU, network and histogram memory performance. Thus
<computeroutput>[Turbo Update]</computeroutput> tends to overload your
system. It should only be used while adjusting the beamstop, otherwise its
use is a waste of system resources which will eventually slow down your
data reduction chores. Do NOT forget to switch this off when you are done.
The system will automatically switch to <computeroutput>[Auto Update]
</computeroutput> mode after 20 minutes.
</para>
<para>
The detector display has a lot of options. Below the colour picture there
is a line which displays the current detector coordinate and the data
value at the current mouse position. By choosing the <computeroutput>
[Open Old File]</computeroutput> item in the <computeroutput>[File]
</computeroutput> menu you can load an old data set, i.e. you
can use the SANS status display as a viewer for old SANS data files. A
double clicking on the colour display brings up a dialog which allows to
configure the colour mapping of the detector display. By
holding down the mouse button and dragging the mouse a rectangular
area of the detector display can be selected. When releasing the mouse
button, the selected region is summed and displayed as a X-Y graph
in a separate window. In the title of this plot the total
counts in the selected rectangular area on the detector is printed.
Dragging the mouse downwards in this new window allows to zoom in into
details of the histogram. Dragging the mouse upwards zooms out again.
At the bottom of the window is a dismiss button which removes the
histogram window. The histogram in the histogram window will NOT be
automatically updated when new data arrives.
</para>
</section>
<section>
<title>Variable watcher <computeroutput>varwatch</computeroutput>
</title>
<para>
This little SICS client allows to plot the value of a variable in a
SICS server against time. This will probably be mostly used for
watching the temperature stability of a temperature controller.
But it is not restricted to temperature variables, all numeric SICS
variables can be monitored that way.
</para>
<para>
The configuration of the variable watcher involves two steps:
<orderedlist>
<listitem>
<para>Select your favourite
SICS server from the choices in the
<computeroutput>[Connect]</computeroutput> menu.
<computeroutput>[Custom]</computeroutput> allows to
specify a SICS server directly by host name and port number.
</para>
</listitem>
<listitem>
<para>Configure the variable to watch using the
<computeroutput>[Configure]</computeroutput> item in the
<computeroutput>[Plot]</computeroutput> menu. Three
parameters are relevant:
<orderedlist>
<listitem>
<para>The watch frequency, which is the
time in minutes between plot updates.
</para>
</listitem>
<listitem>
<para>The backlog, which is the number
of values which will be plotted.
</para>
</listitem>
<listitem>
<para>
The SICS variable to watch. This text
must be a valid SICS command which returns
a reply in the form
<computeroutput>blabla = &lt;number&gt;
</computeroutput>.
</para>
</listitem>
</orderedlist>
</para>
</listitem>
</orderedlist>
</para>
<para>
Further user interface elements are two buttons below the plot.
These allow to start and stop the recording of the variables value.
The yellow text field besides these buttons displays the current
operation of the variable watcher which can be one of Inactive or
Recording. Below is a line showing the current status of the SICS
server. Please note, that the most recent value is always at the
right hand side of the plot.
</para>
<para>
The plot can be zoomed into by dragging downwards with the left
mouse button. Zooming out is achieved by dragging outwards with
the mouse or with the <computeroutput>[Reset]</computeroutput>
or <computeroutput>[Rescale Y]</computeroutput> options in the
<computeroutput>[Plot]</computeroutput> menu. The plot can be
printed using the <computeroutput>[Print]</computeroutput> option
in the <computeroutput>[Plot]</computeroutput> menu. Next to
plotting a variable in a SICS server against time the variable
watcher can be used to display a <computeroutput>XYTable</computeroutput>
which is a class maintaining a list of x-y values. If a
<computeroutput>XYTable</computeroutput> object is available in
the system under the name <computeroutput>&lt;xydata&gt;</computeroutput>
the command <computeroutput>&lt;xydata&gt; uuget</computeroutput> has
to be given to the <computeroutput>varwatch</computeroutput> SICS
client in order to make it display the x-y list. More information
about handling a <computeroutput>XYTable</computeroutput> can be
found in <xref linkend="xytablecommand"/>.
</para>
</section>
</section>
<section>
<title>Instrument preparation before the first measurement</title>
<para>
Before you can start with your first data aquisition be aware of a few things.
For running a measurement you need at least to run two programs: the SANS
status display (<computeroutput>sansstatus &amp;</computeroutput>) and the
command line client (<computeroutput>sics &amp;</computeroutput>). After
connecting both clients to the SANS server and authorizing the command line
client at the server with user privileges you are ready to change the instrument
set-up. The initial step at the beginning of your measurement are the following:
<orderedlist numeration="arabic">
<listitem><para>Check if beam is closed, if not than do it now.
</para>
</listitem>
<listitem>
<para>Set the experiment informations via the dialog box
<computeroutput>[New Experiment]</computeroutput>.
</para>
</listitem>
<listitem>
<para>Define the directory, where you intend to store your batch
files with
<computeroutput>exe batchpath /data/lnsg/&lt;username&gt;[/&lt;batchdir&gt;]</computeroutput>.
</para>
</listitem>
<listitem>
<para>Choose the needed instrument settings like sample detector
distance, collimation, wavelength, etc.
</para>
</listitem>
<listitem>
<para>Adjust the beam stop by performing the following steps:
<itemizedlist>
<listitem>
<para>Move in an attenuator with an attenuation factor
larger than 100.
</para>
</listitem>
<listitem>
<para>Put a strong forward scatterer into the beam,
e.g. teflon
</para>
</listitem>
<listitem>
<para>Center the beam stop roughly by the SICS
command <computeroutput>bs x 0 y 0</computeroutput>.
</para>
</listitem>
<listitem>
<para>Open the beam.
</para>
</listitem>
<listitem>
<para>Use the command <computeroutput>banana preset 1000
</computeroutput> and <computeroutput>banana count
</computeroutput> to start an aquisition without storing
the result.
</para>
</listitem>
<listitem>
<para>Adjust the beam stop with the
<computeroutput>bs</computeroutput>-command.
</para>
</listitem>
<listitem>
<para>After each beam stop movement you can reset the
histograming memory of the detector by
<computeroutput>banana initval 0</computeroutput>.
</para>
</listitem>
<listitem>
<para>Remove the attenuator.
</para>
</listitem>
<listitem>
<para>Perform a fine adjustment of the beam stop with an
unattenuated beam if neccessary.
</para>
</listitem>
<listitem>
<para>Stop the data aquisition by pressing the
<computeroutput>[Interrupt]</computeroutput> button in the
lower left corner of the command line client.
</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</orderedlist>
</para>
</section>
</chapter>
<chapter id="instrcontrcomm">
<title>Instrument control commands </title>
<section>
<title>Some basic SICS commands and concepts</title>
<section>
<title>The <computeroutput>token</computeroutput> command</title>
<para>In SICS any client can issue commands to the SICS server.
This is a potential cause for trouble with users issuing conflicting
commands without knowing. In order to deal with this problem a token
mechanism has been developed. A connection can grab a token and then
has full control over the SICS server. Any other connection will not
be privileged to do anything useful, except for looking at things.
A token can be released manually with a special command or is automatically
released when the connection dies. Another command exists which allows
a SICS manager to force his way into the SICS server. The commands in
more detail:
<variablelist>
<varlistentry>
<term>
<computeroutput>token grab</computeroutput>
</term>
<listitem>
<para>
Reserves control over the instrument to the client issuing this
command. Any other client cannot control the instrument now.
However, other clients are still able to inspect variables.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>token release</computeroutput>
</term>
<listitem>
<para>
Releases the control token. Now any other client can control
the instrument again. Or grab the control token.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>token force &lt;password&gt;</computeroutput>
</term>
<listitem>
<para>
This command forces an existing grab on a token to be released.
This command requires manager privilege. Furthermore a special
password must be specified as third parameter in order to do
this. This command does not grab control though.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>How to execute Macros</title>
<para>
SICS has a built in macro facility. This macro facility is aimed at instrument
managers and users alike. Instrument managers may provide customised measurement
procedures in this language, users may write batch files in this language.
The macro language is
<ulink url="http://cseng.awl.com/authordetail.qry?AuthorID=69">
John Ousterhout's </ulink>
<ulink url="http://www.tcltk.com">
Tool Command Language (TCL)</ulink>.
A set of important Tcl commands are described in section <xref linkend="TCLcommands"/>.
To execute batch files, the following commands are available:
<variablelist>
<varlistentry>
<term>
<computeroutput>exe BatchPath [&lt;pathname&gt;]</computeroutput>
</term>
<listitem>
<para>
By this command the directory name, in which SICS is searching
for a batch file, is stored in the SICS variable
<computeroutput>exe BatchPath</computeroutput>. Calling
<computeroutput>exe BatchPath</computeroutput> without parameters
will return the actual contents of the variable.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>exe &lt;filename&gt;</computeroutput>
</term>
<listitem>
<para>
This command tries to open the file <computeroutput>filename</computeroutput>
located in the directory defined by
<computeroutput>exe BatchPath</computeroutput> and executes the
script in this file.
This command allows enhanced batch control through the
<computeroutput>SICSBatchEditor</computeroutput>.
</para>
</listitem>
</varlistentry>
</variablelist>
If you want to print information from a macro script to a client (about the progress of
the batch job for example), special commands are available:
<variablelist>
<varlistentry>
<term>
<computeroutput>ClientPut some text ...</computeroutput>
</term>
<listitem>
<para>
This command writes everything after <computeroutput>ClientPut</computeroutput>
to the client which started the script.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>BroadCast some text ...</computeroutput>
</term>
<listitem>
<para>
This command writes everything after <computeroutput>BroadCast</computeroutput>
to all clients.
</para>
</listitem>
</varlistentry>
</variablelist>
To check a batchfile for errors and to estimate the total Monis to be measured, a special program
can be executed in a terminal window. Navigate to the folder containing the batchfile and execute
the following command
<variablelist>
<varlistentry>
<term>
in a terminal window: <computeroutput>sanscheck &lt;filename&gt;</computeroutput>
</term>
<listitem>
<para>
checks the batchfile <computeroutput>&lt;filename&gt;</computeroutput>
for errors and calculates the total of Monis to be measured.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Logging the executed commands</title>
<para>
Some users wish to have all communication of the SICS server with all the clients
having user or manager privileges being collected in a file for further review. This
is implemented via the <computeroutput>commandlog</computeroutput> command. This log
allows to retrace each step of an experiment. It is usually switched off and must be
configured by the instrument manager. <computeroutput>commandlog</computeroutput>
understands the following syntax:
<variablelist>
<varlistentry>
<term><computeroutput>commandlog new &lt;filename&gt;</computeroutput>
</term>
<listitem>
<para>
starts a new <computeroutput>commandlog</computeroutput> writing to
<computeroutput>&lt;filename&gt;</computeroutput>. The log file can be found for the SANS server in
the directory <computeroutput>/home/SANS/log</computeroutput>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>commandlog</computeroutput>
</term>
<listitem>
<para>
without further parameters displays the status of the <computeroutput>commandlog.
</computeroutput>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>commandlog close</computeroutput>
</term>
<listitem>
<para>
closes the command log file.</para>
</listitem>
</varlistentry>
</variablelist>
If the user wishes a transscript of the SICS session of the command line client he
is just working with, he can use the <computeroutput>[Open Logfile]</computeroutput>
option in the <computeroutput>[File]</computeroutput> menu. It will allow
you to specify a file on your local disk area, where all input/output is logged to.
You will get everything which appears in the client's I/O window. The input is
prepended with ???. In contrast to the <computeroutput>commandlog</computeroutput>,
which log communication of all clients connected to the server, the
<computeroutput>[Open Logfile]</computeroutput> option of the client only allows you
to log the communication of its own to a local file.
</para>
</section>
<section>
<title>Some variables for documentation</title>
<para>SICS supports a couple of variables for documentation of a measurement.
Currently available are:</para>
<para>
<computeroutput>user, adress, phone, fax, email, title, subtitle, environment,
sample, comment
</computeroutput>
</para>
<para>Each variable can be inquired by just typing its name. It can be set by typing
the name followed by the new name, e.g.
<computeroutput>title nanocrystalline Fe</computeroutput>.
These variables can also be set by the <computeroutput>[Set Experiment]</computeroutput>
dialog box, which can be started via the <computeroutput>[New Parameter]</computeroutput>
option of the <computeroutput>[User Parameter]</computeroutput> menu item in the command
line client. The user is required
to fill this variables with utmost care, because if you want us to retrieve your data in
ten years time you will be happy that the information will be there.
</para>
</section>
<section id="drivecommands">
<title>Drive commands</title>
<para>Many objects in SICS are drivable. This means they can run to a new value.
Obvious examples are motors. Less obvious examples include composite adjustments
such as setting a wavelength or a temperature. This class of ob jects can be operated
by the <computeroutput>drive</computeroutput>, <computeroutput>run</computeroutput>
, <computeroutput>success</computeroutput> family of commands. These commands cater
for blocking and non-blocking modes of operation.
<variablelist>
<varlistentry>
<term><computeroutput>run &lt;var&gt; &lt;newval&gt; [&lt;var&gt;
&lt;newval&gt; ...]</computeroutput>
</term>
<listitem>
<para>
Can be called with one to n pairs of object new value pairs. This command will
set the variables in motion and return to the command prompt without waiting
for the requested operations to finish. This feature allows to do things to
the instrument while for example a slow device is running into position.
</para>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<varlistentry>
<term>
<computeroutput>success</computeroutput>
</term>
<listitem>
<para>
Waits and blocks the command connection until all pending operations have
finished (or an 'interrupt' occured).
</para>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<varlistentry>
<term>
<computeroutput>drive &lt;var&gt; &lt;newval&gt; [&lt;var&gt;
&lt;newval&gt; ...]</computeroutput>
</term>
<listitem>
<para>
can be called with one to n pairs of ob ject new value pairs. This command
will set the variables in motion and wait until the driving has finished.
A drive can be seen as a sequence of a run command as stated above immediatetly
followed by a Success command.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section id="motorhandling">
<title>SICS motor handling</title>
<para>
In SICS each motor is an object with a name. Motors may take commands which basically
come in the form <computeroutput>&lt;motorname&gt; &lt;command&gt;</computeroutput>.
Most of these commands deal with the plethora of parameters which are associated with
each motor. The syntax for manipulating variables is, again, simple.
<computeroutput>&lt;motorname&gt; &lt;parametername&gt;</computeroutput> will print
the current value of the variable. <computeroutput>&lt;motorname&gt; &lt;parametername&gt;
&lt;newval&gt;</computeroutput> will set the parameter to the new value specified. A
list of all parameters and their meanings is given below. The general principle behind
this is that the actual (hardware) motor is kept as stupid as possible and all the
intracacies of motor control are dealt with in software. Besides the parameter commands
any motor understands these basic commands:
<variablelist>
<varlistentry>
<term><computeroutput>&lt;motorname&gt; list
</computeroutput>
</term>
<listitem>
<para>
gives a listing of all motor parameters</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motorname&gt; reset
</computeroutput>
</term>
<listitem>
<para>
resets the motor parameters to default values.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motorname&gt; position
</computeroutput>
</term>
<listitem>
<para>
prints the current position of the motor.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;motorname&gt; interest
</computeroutput>
</term>
<listitem>
<para>
initiates automatic printing of any position change of the motor. This
command is mainly interesting for implementors of status display clients.</para>
</listitem>
</varlistentry>
</variablelist>
Please note that the actual driving of the motor is done via the
<computeroutput>drive</computeroutput> or <computeroutput>run</computeroutput> command
described in the last
<xref linkend="drivecommands"/>
</para>
<para>
The motor parameters:
<variablelist>
<varlistentry>
<term><computeroutput>HardLowerLim
</computeroutput>
</term>
<listitem>
<para>
is the hardware lower limit. This is read from the motor controller and is
identical to the limit switch welded to the instrument. Can usually not be
changed.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>HardUpperLim
</computeroutput>
</term>
<listitem>
<para>
is the hardware upper limit. This is read from the motor controller and is
identical to the limit switch welded to the instrument. Can usually not be
changed.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>SoftLowerLim
</computeroutput>
</term>
<listitem>
<para>
is the software lower limit. This can be defined by the user in order to
restrict instrument movement in special cases.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>SoftUpperLim
</computeroutput>
</term>
<listitem>
<para>
is the software upper limit. This can be defined by the user in order to
restrict instrument movement in special cases.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>SoftZero
</computeroutput>
</term>
<listitem>
<para>
defines a software zero point for the motor. All further movements will
be in respect to this zeropoint.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>Fixed
</computeroutput>
</term>
<listitem>
<para>
can be greater 0 for the motor being fixed and less than zero for the motor
being movable.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>InterruptMode
</computeroutput>
</term>
<listitem>
<para>
defines the interrupt to issue when the motor fails. Some motors are so
critical for the operation of the instrument that all operations shall be
stopped when there is a problem. Others are less critical. This criticallity
is expressed in terms of interrupts, denoted by integers in the range 0 - 4
translating into the interrupts: continue, AbortOperation, AbortScan,
AbortBatch and Halt. This parameter can usually only be set by managers.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>Precision
</computeroutput>
</term>
<listitem>
<para>
denotes the precision to expect from the motor in positioning. Can usually
only be set by managers.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>AccessCode
</computeroutput>
</term>
<listitem>
<para>
specifies the level of user privilege necessary to operate the motor. Some
motors are for adjustment only and can be harmful to move once the adjustment
has been done. Others must be moved for the experiment. Values are 0 - 3 for
<computeroutput>internal</computeroutput>, <computeroutput>manager</computeroutput>
, <computeroutput>user</computeroutput>, and <computeroutput>spy</computeroutput>.
This parameter can only be changed by managers.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>Speed
</computeroutput>
</term>
<listitem>
<para>
defunct.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>Sign
</computeroutput>
</term>
<listitem>
<para>
allows to reverse the operating sense of the motor. For cases where electricians
and not physicists have defined the operating sense of the motor. Usually a
parameter not to be changed by ordinary users.</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section id="specialsanscommands">
<title>Special SANS commands</title>
<para>
This section describes some commands special to SANS. One feature of SANS is that
components are used as a whole rather than refering to single motors. For SANS the
beamstop, the detector and the sample table is managed like this. Within a component
each axis can be adressed specifically by using an <computeroutput>axis</computeroutput>
= <computeroutput>value</computeroutput> pair. Axis defined for each component will
be listed below. Additionally these components support common commands as well. These
mainly deal with named positions. A named position is a set of values which can be
driven to by just specifying its name. For instance: <computeroutput>bs PositionA
</computeroutput> drives the BeamStop <computeroutput>bs</computeroutput> to the
position defined as <computeroutput>PositionA</computeroutput>. All component drive
commands do not block, i.e. you can type further commands. If it is needed to wait
for a component to arrive, use the <computeroutput>Success</computeroutput> command
right after your command.
</para>
<para>
Commands supported by all components (in the following, the name of the component
will be represented by <computeroutput>&lt;COP&gt;</computeroutput>):
<variablelist>
<varlistentry>
<term><computeroutput>&lt;COP&gt;</computeroutput>
</term>
<listitem>
<para>The name of the component alone will yield a listing of the
current position of the component. This is also a way how to find out which
axis the component supports.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;COP&gt; back</computeroutput>
</term>
<listitem>
<para>drives the component back to the position before the last
command. Please note, that back does not operate on itself, i.e. two times
<computeroutput>&lt;COP&gt; back</computeroutput> will not do a trick.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;COP&gt; pos &lt;name&gt;</computeroutput>
</term>
<listitem>
<para>This command promotes the current position of the component
to a named position <computeroutput>&lt;name&gt;</computeroutput>. Afterwards
this position can be reached by typing: <computeroutput>&lt;COP&gt; &lt;name&gt;
</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;COP&gt; drop &lt;name&gt;</computeroutput>
</term>
<listitem>
<para>deletes the named position specified as second parameter.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;COP&gt; find</computeroutput>
</term>
<listitem>
<para>returns the name <computeroutput>&lt;name&gt;</computeroutput>
of the actual position of the component if the position was named before by
<computeroutput>&lt;COP&gt; pos &lt;name&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;COP&gt; &lt;axis 1&gt; [=] &lt;val 1&gt;
[&lt;axis 2&gt; [=] &lt;val 2&gt; ...]</computeroutput>
</term>
<listitem>
<para>drives the component to the new position specified by 1-n
sets of <computeroutput>&lt;axis n&gt; = &lt;val n&gt;</computeroutput>
pairs. The equal sign is not mandatory and can be left out. The axis refers
to the internal axis of the component which is seen in a listing as created
by typing <computeroutput>&lt;COP&gt;</computeroutput>. A relative movement
of an axis can be performed if an <computeroutput>++</computeroutput>
or <computeroutput>--</computeroutput> precedes the value for
<computeroutput>&lt;val n&gt;</computeroutput>. A value
<computeroutput>++10</computeroutput>, for example would mean an increase of
the actual axis position by 10.
</para>
</listitem>
</varlistentry>
</variablelist>
The components which follow the component syntax described above are <computeroutput>bs</computeroutput>
(beam stop), <computeroutput>dt</computeroutput> (detector),
<computeroutput>st</computeroutput> (sample table), and <computeroutput>msh</computeroutput>
(magnet sample holder). They are described in more detail in later sections.
</para>
</section>
<section>
<title>Sample Environment Devices</title>
<section>
<title>SICS Concepts for Sample Environment Devices</title>
<para>SICS can support any type of sample environment control device if there is a
driver for it. This includes temperature controllers, magnetic field controllers
etc. The SICS server is meant to be left running continuously. Therefore there exists
a facility for dynamically configuring and deconfiguring environment devices into
the system. This is done via the <computeroutput>EVFactory</computeroutput> command.
It is expected that instrument scientists will provide command procedures for
configuring environment devices and setting reasonable default parameters.
</para>
<para>In the SICS model a sample environment device has in principle two modes
of operation. The first is the drive modus. The device is monitored in this modus when a
new value for it has been requested. The second modus is the monitor modus. This modus
is entered when the device has reached its target value. After that, the device must be
continously monitored throughout any measurement. This is done through the environment
monitor or <computeroutput>emon</computeroutput>. The <computeroutput>emon</computeroutput>
command understands a few commands of its own.
</para>
<para>Within SICS all sample environment devices share some common behaviour concerning
parameters and abilities. Thus any given environment device accepts all of a set of
general commands plus some additional commands special to the device.
</para>
<para>In the next paragraphs the <computeroutput>EVFactory</computeroutput>,
<computeroutput>emon</computeroutput> and the general commands understood by any sample
environment device will be discussed. Reading this is mandatory for understanding SICS
environment device handling. Then there will be another section later on in this
manual discussing the special devices known to the system.
</para>
</section>
<section>
<title>Sample Environment Error Handling</title>
<para>A sample environment device may fail to stay at its preset value during a
measurement. This condition will usually be detected by the
<computeroutput>emon</computeroutput>. The question is how to deal with this problem.
The requirements
for this kind of error handling are quite differentiated. The SICS model therefore
implements several strategies for handling sample environment device failure handling.
The strategy to use is selected via a variable which can be set by the user for any
sample environment device separatetly. Additional error handling strategies can be
added with a modest amount of programming. The error handling strategies currently
implemented are:
<variablelist>
<varlistentry>
<term><computeroutput>Lazy</computeroutput>
</term>
<listitem>
<para>Just print a warning and continue.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>Pause</computeroutput>
</term>
<listitem>
<para>Pauses the measurement until the problem has been resolved.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>Interrupt</computeroutput>
</term>
<listitem>
<para>Issues a SICS interrupt to the system.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>Safe</computeroutput>
</term>
<listitem>
<para>Tries to run the environment device to a value considered
safe by the user.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>General Sample Environment Commands</title>
<para>
<emphasis>
<computeroutput>EVFactory</computeroutput> command:</emphasis>
</para>
<para>
<computeroutput>EVFactory</computeroutput>
is responsible for configuring and deconfiguring sample
environment devices into SICS. The syntax is simple:
<variablelist>
<varlistentry>
<term><computeroutput>EVFactory new &lt;name&gt; &lt;type&gt; &lt;par&gt;
[&lt;par&gt; ...]</computeroutput>
</term>
<listitem>
<para>Creates a new sample environment device. It will be known to
SICS by the name specified as second parameter
<computeroutput>&lt;name&gt;</computeroutput>. The
<computeroutput>&lt;type&gt;</computeroutput>
parameter decides which driver to use for this device. The type will be
followed by additional parameters which will be evaluated by the driver
requested.</para>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<varlistentry>
<term>
<computeroutput>EVFactory del &lt;name&gt;</computeroutput>
</term>
<listitem>
<para>Deletes the environment device
<computeroutput>&lt;name&gt;</computeroutput> from the
system.</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
<emphasis>
<computeroutput>emon</computeroutput> command:</emphasis>
</para>
<para>
The environment monitor <computeroutput>emon</computeroutput> takes for the monitoring
of an environment device during measurements. It also initiates error handling when
appropriate. The <computeroutput>emon</computeroutput> understands a couple of commands.
<variablelist>
<varlistentry>
<term><computeroutput>emon list</computeroutput>
</term>
<listitem>
<para>This command lists all environment devices currently
registered in the system.</para>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<varlistentry>
<term>
<computeroutput>emon register &lt;name&gt;</computeroutput>
</term>
<listitem>
<para>This is a specialist command which registers the
environment device <computeroutput>&lt;name&gt;</computeroutput> with the
environment monitor. Usually this will automatically be taken care of
by <computeroutput>EVFactory</computeroutput>.</para>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<varlistentry>
<term>
<computeroutput>emon unregister &lt;name&gt;</computeroutput>
</term>
<listitem>
<para>This is a specialist command which unregisters the
environment device <computeroutput>&lt;name&gt;</computeroutput> with the
environment monitor. Following this call the device will no longer be
monitored and out of tolerance errors on that device no longer be
handled.</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
</section>
<section>
<title>General Commands UnderStood by All Sample Environment Devices</title>
<para>Please note that each command discussed below MUST be prepended with the
<computeroutput>&lt;name&gt;</computeroutput> of the environment device as configured
in <computeroutput>EVFactory</computeroutput>! The general commands understood by any
environment controller can be subdivided further into parameter commands and real
commands. The parameter commands just print the name of the parameter if given without
an extra parameter or set if a parameter is specified. For example:
<simplelist>
<member>
<computeroutput>Temperature Tolerance</computeroutput> prints the value of the variable
<computeroutput>Tolerance</computeroutput> for the environment controller
<computeroutput>Temperature</computeroutput>.
</member>
<member>
<computeroutput>Temperature Tolerance 2.0</computeroutput> sets the parameter
<computeroutput>Tolerance</computeroutput> for <computeroutput>Temperature</computeroutput>
to 2.0.
</member>
</simplelist>
</para>
<para>
Parameters known to ANY envrironment controller are:
<variablelist>
<varlistentry>
<term><computeroutput>Tolerance</computeroutput>
</term>
<listitem>
<para>Is the deviation from the preset value which can be
tolerated before an error is issued. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>Access</computeroutput>
</term>
<listitem>
<para>Determines who may change parameters for this
controller. Possible values are:
<simplelist type="vert" columns="1">
<member>0 only internal</member>
<member>1 only Managers</member>
<member>2 Managers and Users</member>
<member>3 Everybody, including Spy</member>
</simplelist>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>LowerLimit</computeroutput>
</term>
<listitem>
<para>The lower limit for the controller.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>UpperLimit</computeroutput>
</term>
<listitem>
<para>The upper limit for the controller.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>Errhandler</computeroutput>
</term>
<listitem>
<para>The error handler to use for this controller.
Possible values:
<simplelist type="vert" columns="1">
<member>0 is Lazy</member>
<member>1 for Pause</member>
<member>2 for Interrupt</member>
<member>3 for Safe</member>
<member>For an explanantion of these values see the section
about error handling above.</member>
</simplelist>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>Interrupt</computeroutput>
</term>
<listitem>
<para>The interrupt to issue when an error is
detected and interrupt error handling is set.
Valid values are:
<simplelist type="vert" columns="1">
<member>0 for continue</member>
<member>1 for abort operation</member>
<member>2 for for abort scan</member>
<member>3 for abort batch processing</member>
<member>4 halt system</member>
<member>5 exit server</member>
<member>For an explanantion of these values see the section
about error handling above.</member>
</simplelist>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>SafeValue</computeroutput>
</term>
<listitem>
<para>The value to drive the controller to when an error
has been detected and safe error handling is set.</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
Additionally the following commands are understood:
<variablelist>
<varlistentry>
<term><computeroutput>&lt;name&gt; send &lt;par&gt;
[&lt;par&gt; ...]</computeroutput>
</term>
<listitem>
<para>Sends everything after send directly to the
controller and return its response. This is a general
purpose command which allows to manipulate controllers
and controller parameters directly. The protocoll for
these commands is documented in the documentation for
each controller. Ordinary users should not tamper with
this. This facility is meant for setting up the device
with calibration tables etc.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;name&gt; list</computeroutput>
</term>
<listitem>
<para>lists all the parameters for this controller.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;name&gt;</computeroutput>
</term>
<listitem>
<para>When only the name of the device is typed it
will return its current value.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;name&gt; &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>will drive the device to the new value
<computeroutput>&lt;val&gt;</computeroutput>. Please note
that the same can be achieved by using the drive command.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;name&gt; log on</computeroutput>
</term>
<listitem>
<para>Switches logging on. If logging is on, at each cycle
in the <computeroutput>&lt;emon&gt;</computeroutput> the current
value of the environment variable will be recorded together with
a time stamp. Be careful about this, for each log point a bit of
memory is allocated. At some time the memory is exhausted!
<computeroutput>&lt;name&gt; log clear</computeroutput>
frees it again and <computeroutput>log frequency</computeroutput>
(both below) allows to set the logging time intervall.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;name&gt; log of</computeroutput>
</term>
<listitem>
<para> Switches logging off.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;name&gt; log clear</computeroutput>
</term>
<listitem>
<para>Clears all recorded time stamps and values.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;name&gt; log gettime</computeroutput>
</term>
<listitem>
<para>This command retrieves a list of all recorded time
stamps.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;name&gt; log getval</computeroutput>
</term>
<listitem>
<para>This command retrieves all recorded values.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;name&gt; log getmean</computeroutput>
</term>
<listitem>
<para>Calculates the mean value and the standard deviation
for all logged values and prints it.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>&lt;name&gt; log frequency [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>With a parameter <computeroutput>&lt;val&gt;</computeroutput> sets,
without a parameter requests the logging intervall for the log created.
This parameter specifies the time intervall in seconds between log
records. The default is 5 minutes. A value of 0 means a record for each
cycle of the SICServer.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
</section>
<section id="TCLcommands">
<title>TCL command language interface</title>
<para>The macro language implemented in the SICS server is
<ulink url="http://cseng.awl.com/authordetail.qry?AuthorID=69">
John Ousterhout's </ulink> <ulink url="http://www.tcltk.com">Tool Command Language (TCL)</ulink>.
Tcl has control constructs, variables of its own, loop constructs,
associative arrays and procedures. Tcl is well documented by several
<ulink url="http://www.cica.indiana.edu/cica/faq/tcl/tcl.html">books</ulink>,
<ulink url="http://www.scriptics.com/man/tcl8.0/contents.htm">online tutorials and manuals</ulink>.
For getting further
informations on Tcl have a look on the
<ulink url="http://www.sco.com/Technology/tcl/Tcl.html">TCL WWW Info
</ulink> of
<ulink url="http://www.tcltk.com">Tcl Web server</ulink>. All SICS commands are
available in the macro language. Some potentially harmful Tcl commands have been deleted from
the standard Tcl interpreter. These are: <computeroutput>exec</computeroutput>,
<computeroutput>source</computeroutput>, <computeroutput>puts</computeroutput>,
<computeroutput>vwait</computeroutput>, <computeroutput>exit</computeroutput>,
<computeroutput>gets</computeroutput>
and <computeroutput>socket</computeroutput>. Below only a small subset of the most important Tcl
commands like assigning variables, evaluating expressions, control and loop constructs are
described. For complete description of Tcl command have a look on the
<ulink url="http://www.scriptics.com/man/tcl8.0/contents.htm">manual pages</ulink> or on one of
the many books about Tcl/Tk.
</para>
<section>
<title>
<computeroutput>set</computeroutput> - Read and Write variables</title>
<formalpara>
<title>Synopsis</title>
<para>
<computeroutput>set varName ?value?</computeroutput>
</para>
</formalpara>
<formalpara>
<title>Description</title>
<para>Returns the value of variable <computeroutput>varName</computeroutput>. If
<computeroutput>value</computeroutput> is specified, then set the value of
<computeroutput>varName</computeroutput> to <computeroutput>value</computeroutput>,
creating a new variable if one doesn't already exist, and return its value. If
<computeroutput>varName</computeroutput> contains an open parenthesis and ends with
a close parenthesis, then it refers to an array element: the characters before the
first open parenthesis are the name of the array, and the characters between the
parentheses are the index within the array. Otherwise
<computeroutput>varName</computeroutput> refers to a scalar variable.</para>
</formalpara>
</section>
<section>
<title>
<computeroutput>expr</computeroutput> - Evaluate an expression</title>
<formalpara>
<title>Synopsis</title>
<para>
<computeroutput>expr arg ?arg arg ...?</computeroutput>
</para>
</formalpara>
<formalpara>
<title>Description</title>
<para>Concatenates <computeroutput>arg</computeroutput>'s (adding separator spaces
between them), evaluates the result as a Tcl expression, and returns the value. The
operators permitted in Tcl expressions are a subset of the operators permitted in C
expressions, and they have the same meaning and precedence as the corresponding C
operators. Expressions almost always yield numeric results (integer or floating-point
values). For example, the expression
</para>
</formalpara>
<para>
<computeroutput>expr 8.2 + 6</computeroutput>
</para>
<para>evaluates to 14.2. Tcl expressions differ from C expressions in the way that
operands are specified. Also, Tcl expressions support non-numeric operands and string
comparisons. For some examples of simple expressions, suppose the variable
<computeroutput>a</computeroutput> has the value 3 and the variable
<computeroutput>b</computeroutput> has the value 6. Then the command on the left side of each of the
lines below will produce the value on the right side of the line:
<informaltable frame="none">
<tgroup cols="2">
<tbody>
<row>
<entry><computeroutput>expr 3.1 + $a</computeroutput>
</entry>
<entry>
<computeroutput>6.1</computeroutput>
</entry>
</row>
<row>
<entry>
<computeroutput>expr 2 + "$a.$b" </computeroutput>
</entry>
<entry>
<computeroutput>5.6</computeroutput>
</entry>
</row>
<row>
<entry>
<computeroutput>expr 4*[llength "6 2"]</computeroutput>
</entry>
<entry>
<computeroutput>8</computeroutput>
</entry>
</row>
<row>
<entry>
<computeroutput>expr {{word one} &lt; &quot;word $a&quot;}</computeroutput>
</entry>
<entry>
<computeroutput>0</computeroutput>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
<formalpara>
<title>Math functions</title>
<para>Tcl supports the following mathematical functions in expressions:</para>
</formalpara>
<informaltable frame="none">
<tgroup cols="4">
<tbody>
<row>
<entry>
<computeroutput>acos</computeroutput>
</entry>
<entry>
<computeroutput>cos</computeroutput>
</entry>
<entry>
<computeroutput>hypot</computeroutput>
</entry>
<entry>
<computeroutput>sinh</computeroutput>
</entry>
</row>
<row>
<entry>
<computeroutput>asin</computeroutput>
</entry>
<entry>
<computeroutput>cosh</computeroutput>
</entry>
<entry>
<computeroutput>log</computeroutput>
</entry>
<entry>
<computeroutput>sqrt</computeroutput>
</entry>
</row>
<row>
<entry>
<computeroutput>atan</computeroutput>
</entry>
<entry>
<computeroutput>exp</computeroutput>
</entry>
<entry>
<computeroutput>log10</computeroutput>
</entry>
<entry>
<computeroutput>tan</computeroutput>
</entry>
</row>
<row>
<entry>
<computeroutput>atan2</computeroutput>
</entry>
<entry>
<computeroutput>floor</computeroutput>
</entry>
<entry>
<computeroutput>pow</computeroutput>
</entry>
<entry>
<computeroutput>tanh</computeroutput>
</entry>
</row>
<row>
<entry>
<computeroutput>ceil</computeroutput>
</entry>
<entry>
<computeroutput>fmod</computeroutput>
</entry>
<entry>
<computeroutput>sin</computeroutput>
</entry>
<entry>
<computeroutput></computeroutput>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
Each of these functions invokes the math library function of the same name; see the
manual entries for the library functions for details on what they do. Tcl also
implements the following functions for conversion between integers and floating-point
numbers and the generation of random numbers:
</para>
<para>
<computeroutput>abs(arg), double(arg), int(arg), rand(), round(arg), srand(arg).
</computeroutput>
</para>
</section>
<section>
<title>
<computeroutput>if</computeroutput> - Execute scripts conditionally</title>
<formalpara>
<title>Synopsis</title>
<para>
<computeroutput>if expr1 ?then? body1 elseif expr2 ?then? body2 elseif ...
?else? ?bodyN?</computeroutput>
</para>
</formalpara>
<formalpara>
<title>Description</title>
<para>The <computeroutput>if</computeroutput> command evaluates
<computeroutput>expr1</computeroutput>
as an expression (in the same way that <computeroutput>expr</computeroutput>
evaluates its argument). The value of the expression must be a boolean (a numeric value,
where 0 is false and anything is true, or a string value such as "true" or "yes" for true
and "false" or "no" for false); if it is true then <computeroutput>body1</computeroutput>
is executed by passing it to the Tcl interpreter. Otherwise <computeroutput>expr2</computeroutput>
is evaluated as an expression and if it is true then <computeroutput>body2</computeroutput>
is executed, and so on. If none of the expressions evaluates to true then
<computeroutput>bodyN</computeroutput> is executed. The <computeroutput>then</computeroutput>
and <computeroutput>else</computeroutput> arguments are optional "noise words" to make the
command easier to read. There may be any number of <computeroutput>elseif</computeroutput>
clauses, including zero. <computeroutput>BodyN</computeroutput> may also be omitted as long
as <computeroutput>else</computeroutput> is omitted too. The return value from the command
is the result of the body script that was executed, or an empty string if none of the
expressions was non-zero and there was no <computeroutput>bodyN</computeroutput>.
</para>
</formalpara>
</section>
<section>
<title>
<computeroutput>for</computeroutput> - "For" loop</title>
<formalpara>
<title>Synopsis</title>
<para>
<computeroutput>for start test next body</computeroutput>
</para>
</formalpara>
<formalpara>
<title>Description</title>
<para>
<computeroutput>For</computeroutput> is a looping command, similar in structure to
the C <computeroutput>for</computeroutput> statement. The <computeroutput>start, next,</computeroutput>
and <computeroutput>body</computeroutput> arguments must be Tcl command strings, and
<computeroutput>test</computeroutput> is an expression string. If a
<computeroutput>continue</computeroutput> command is invoked within
<computeroutput>body</computeroutput> then any
remaining commands in the current execution of <computeroutput>body</computeroutput> are
skipped; processing continues by invoking the Tcl interpreter on <computeroutput>next</computeroutput>,
then evaluating <computeroutput>test</computeroutput>, and so on. If a
<computeroutput>break</computeroutput> command is invoked within
<computeroutput>body</computeroutput> or <computeroutput>next</computeroutput>, then the
<computeroutput>for</computeroutput> command will return immediately. The operation of
<computeroutput>break</computeroutput> and <computeroutput>continue</computeroutput> are
similar to the corresponding statements in C. <computeroutput>For</computeroutput>
returns an empty string.
</para>
</formalpara>
<para>
<programlisting>
<computeroutput>
for &lcub;set x 0&rcub; &lcub;$x&lt;10&rcub; &lcub;incr x&rcub; &lcub;
puts "x is $x"
&rcub;
</computeroutput>
</programlisting>
</para>
</section>
<section>
<title>
<computeroutput>while</computeroutput> - Execute script repeatedly
as long as a condition is met</title>
<formalpara>
<title>Synopsis</title>
<para>
<computeroutput>while test body</computeroutput>
</para>
</formalpara>
<formalpara>
<title>Description</title>
<para>The <computeroutput>while</computeroutput> command evaluates
<computeroutput>test</computeroutput> as an expression (in the same way that
<computeroutput>expr</computeroutput>
evaluates its argument). The value of the expression must be a proper boolean value; if
it is a true value then <computeroutput>body</computeroutput> is executed by passing it
to the Tcl interpreter. Once <computeroutput>body</computeroutput> has been executed then
<computeroutput>test</computeroutput> is evaluated again, and the process repeats until
eventually <computeroutput>test</computeroutput> evaluates to a false boolean value.
<computeroutput>Continue</computeroutput> commands may be executed inside
<computeroutput>body</computeroutput> to terminate the current iteration of the loop, and
<computeroutput>break</computeroutput> commands may be executed inside <computeroutput>body</computeroutput>
to cause immediate termination of the <computeroutput>while</computeroutput> command. The
<computeroutput>while</computeroutput> command always returns an empty string.
</para>
</formalpara>
<para>
<programlisting>
<computeroutput>
set x 0
while &lcub;$x&lt;10&rcub; &lcub;
puts "x is $x"
incr x
&rcub;
</computeroutput>
</programlisting>
</para>
</section>
</section>
<section>
<title>Instrument settings</title>
<section>
<title>Beam shutter</title>
<para>Every instrument area in the SINQ neutron guide hall is controlled by the Local Beam
Controlsystem (LBC). It uses fixed installed barriers to prevent entry to the area around
the active beam during experimental work. If the user carries out his work in accordance
with the operating instructions, he will be protected from direct beam radiation. A danger
zone which is subject to the LBC interlocking system has two beam shutters
<orderedlist>
<listitem><para>the neutron guide main shutter which only can be opended by the radiation safety
officer</para>
</listitem>
<listitem>
<para>and a secondary shutter to close the beam at the instrument separately from the
others if more then one instrument is build up at the same neutron guide.</para>
</listitem>
</orderedlist>
The secondary shutter for the instrument is the one the user can handle. Normally the
secondary shutter can only be operated if the experimental area (yellow fence) of the
instrument is locked. The shutter can then be opened and closed by a button on the key
box at the entrance door of the instrument area and also by the SICS command
<computeroutput>shutter</computeroutput> which has the following syntax:
<variablelist>
<varlistentry>
<term><computeroutput>shutter</computeroutput>
</term>
<listitem>
<para> without parameter yields the actual status of the shutter which can be
<computeroutput>shutter is open, shutter is closed,</computeroutput> or
<computeroutput>Enclosure is broken</computeroutput>. The last status message is returned
if the LBC system wouldn't allow to open the beam. If this message is returned the shutter
is closed.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>shutter close</computeroutput>
</term>
<listitem>
<para>closes the secondary beam shutter.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>shutter open</computeroutput>
</term>
<listitem>
<para>opens the secondary beam shutter.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Neutron velocity selector</title>
<para>
The neutron velocity selector is a high-speed rotor. Blades inserted in the rotor
are only transparent for neutrons which manage pass the rotor in a time intervall
defined by the rotation speed of the selector. Thus neutrons in a certain speed
range (wavelength range) are selected. The wavelength distribution of neutrons is
also dependent of the tilt angle between the rotation axis and the neutron beam.
Extensive time-of-flight measurements have been done to determine the wavelength
&lambda; and resolution &Delta;&lambda;/&lambda; as a function of selector speed and
tilting angle. The dependency of the wavelength &lambda; [nm] on the rotation
speed &nu; [RPM] can well be described by
</para>
<para>
&lambda;(&nu;,&xi;)= A(&xi;)/&nu;+B(&xi;)
</para>
<para>
where A(&xi;) ans B(&xi;) are parameters depending on the tilting angle &xi;. The
experimentally determined relationships A(&xi;) and B(&xi;) are
</para>
<para>
B(&xi;)= 0.0122+3.61x10<superscript>-4</superscript>&xi;+3.14
x10<superscript>-4</superscript>&xi;<superscript>2</superscript>
+3.05x10<superscript>-5</superscript>&xi;<superscript>3</superscript>
+9.32x10<superscript>-7</superscript>&xi;<superscript>4</superscript>
</para>
<para>
The wavelength resolution &Delta;&lambda;/&lambda; of the selector should be independent
of the rotation speed and only be dependent of the tilting angle &xi;. However, this is
only true for long collimations. For short collimation lengths a slight dependency of
the resolution on the rotaion speed could be measured. Also the shape of the resolution
function is than not necessarily triangular. If the wavelength resolution of the selector
is not so important for the refinement of your data analysis you can use the values given
in the following table for the dependency of the wavelength resolution &Delta;&lambda;/
&lambda; on the tilting angle &xi;.
<informaltable frame="none">
<tgroup cols="4">
<thead>
<row>
<entry>&xi;</entry>
<entry>&Delta;&lambda;/&lambda;</entry>
<entry>A(&xi;)</entry>
<entry>B(&xi;)</entry>
</row>
</thead>
<tbody>
<row>
<entry>-15</entry>
<entry>0.12</entry>
<entry>19812</entry>
<entry>0.0218</entry>
</row>
<row>
<entry>-10</entry>
<entry>0.115</entry>
<entry>17774</entry>
<entry>0.0182</entry>
</row>
<row>
<entry>-5</entry>
<entry>0.095</entry>
<entry>15493</entry>
<entry>0.0163</entry>
</row>
<row>
<entry>0</entry>
<entry>0.1</entry>
<entry>12716</entry>
<entry>0.01097</entry>
</row>
<row>
<entry>5</entry>
<entry>0.155</entry>
<entry>9342</entry>
<entry>0.0269</entry>
</row>
<row>
<entry>10</entry>
<entry>0.3</entry>
<entry>5293</entry>
<entry>0.0869</entry>
</row>
</tbody>
</tgroup>
</informaltable>
A high speed-device like a velocity selector has to account for gyroscopic forces when
moving the device. In praxis this means that the selector must be stopped before the tilt
angle can be changed. Furthermore there are forbidden areas of rotation speeds. In these
areas the velocity selector is in destructive resonance with itself. For controlling the
neutron velocity selector three command are available: <computeroutput>nvs</computeroutput>
, <computeroutput>nvswatch</computeroutput>, and <computeroutput>lambda</computeroutput>
which are described below.
<variablelist>
<varlistentry>
<term><computeroutput>lambda</computeroutput>
</term>
<listitem>
<para>The name of the variable alone prints the current wavelength in nm.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>lambda rot &lt;value&gt;</computeroutput>
</term>
<listitem>
<para>calculates the rotation speed for the wavelength given by
<computeroutput>&lt;value&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>lambda wl &lt;value&gt;</computeroutput>
</term>
<listitem>
<para>calculates the wavelength for the rotation speed given as parameter
<computeroutput>&lt;value&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>drive lambda &lt;newval&gt;, run lambda &lt;newval&gt;</computeroutput>
</term>
<listitem>
<para>The <computeroutput>lambda</computeroutput> variable can be driven
using the normal <computeroutput>drive</computeroutput> and
<computeroutput>run</computeroutput> commands.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>nvs status</computeroutput>
</term>
<listitem>
<para>Prints a status summary of the velocity selector.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>nvs list</computeroutput>
</term>
<listitem>
<para>Displays rotation speed and tilt angle of the velocity selctor.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>nvs [rot=&lt;newval&gt;] [tilt=&lt;newval&gt;]</computeroutput>
</term>
<listitem>
<para>This command sets a new tilt angle and/or rotation speed for
the velocity selector. Either one or both of the keywords
<computeroutput>tilt</computeroutput> or <computeroutput>rot</computeroutput>
may be given, followed by a number.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>nvs rotinterest</computeroutput>
</term>
<listitem>
<para>Enables printing of status messages about the current state of the
selector when it is driven.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>nvs loss</computeroutput>
</term>
<listitem>
<para>Starts a loss current measurement on the velocity selector and
prints the result.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
The commands described so far cover the actual handling of the velocity selector. During a
measurement users might want to use further functions such as:
<itemizedlist>
<listitem><para>Monitor the rotation speed of the velocity selector.
</para></listitem>
<listitem><para>Log the rotation speeds of the velocity selector.
</para></listitem>
<listitem><para>Initiate error handling when the velocity selector
fails to stay within a predefined tolerance of rotation speeds.
</para></listitem>
</itemizedlist>
Now, these are tasks usually connected with sample environment devices. Now, the
SICS programmers have been lazy. Moreover they wanted to avoid duplicating code
(and bugs). Consequently, they tricked the velocity selector to be a sample
environment device as well.
</para>
<para>This means besides the actual velocity selector object (in this case
called <computeroutput>nvs</computeroutput>) there exists another object for
monitoring the velocity selector. The name of this device is the name of the
velocity selector object with the string watch appended. For example if the
velocity selector has the SICS name <computeroutput>nvs</computeroutput>, the
monitor object will be <computeroutput>nvswatch</computeroutput>. The commands
understood by the watch object are fully decribed in the section about sample
environment devices. Please note, that all driving commands for the
<computeroutput>watch</computeroutput> object have been disabled. Driving
can only be achieved through the velocity selector object or the
<computeroutput>lambda</computeroutput> command.
</para>
</section>
<section>
<title>Positioning an attenuator</title>
<para>
<variablelist>
<varlistentry>
<term><computeroutput>att</computeroutput>
</term>
<listitem>
<para>prints the current positioned attenuator.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>att &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>positions attenuator <computeroutput>&lt;val&gt;</computeroutput>.
Allowed attenuator numbers are 0, 1, 2, 3, 4 and 5.
<simplelist>
<member>0 : square 50 mm x 50 mm slit, attenuation = 1
</member>
<member>1 : circular 41 x diameter 0.4 mm slit, attenuation = 1/485
</member>
<member>2 : circular 9 x diameter 2 mm slit, attenuation = 1/88
</member>
<member>3 : circular 20 mm diameter slit, attenuation = 1/8
</member>
<member>4 : circular 30 mm diameter slit, attenuation = 1/3.5
</member>
<member>5 : circular 15 mm diameter slit, attenuation = 1/??
</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Changing the collimation</title>
<para>
<variablelist>
<varlistentry>
<term><computeroutput>coll</computeroutput>
</term>
<listitem>
<para>prints the current collimation length.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>coll &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>sets the collimation <computeroutput>&lt;val&gt;</computeroutput>.
Allowed collimation lengths are 1, 1.4, 2, 3, 4.5, 6, 8,
11, 15 and 18.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Positioning the detector</title>
<para>
The detector can be moved via three motors named <computeroutput>detectorx</computeroutput>
, <computeroutput>detectory</computeroutput>, and <computeroutput>detectorrotation</computeroutput>.
These motors can be driven by the <computeroutput>run</computeroutput> or
<computeroutput>drive</computeroutput> commands described in <xref linkend="drivecommands"/>.
The commands how to change motor parameters like <computeroutput>Precision</computeroutput>,
<computeroutput>SoftZero</computeroutput> etc. are described in <xref linkend="motorhandling"/>.
The axes of the detector motors are defined as:
<variablelist>
<varlistentry>
<term><computeroutput>detectorx</computeroutput>
</term>
<listitem>
<para>An increasing value moves the detector away and a decreasing
value towards the sample position.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>detectory</computeroutput>
</term>
<listitem>
<para>moves the detector laterally by a maximum of 480 mm in order to increase
the accessible q-range at any detector position.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>detectorrotation</computeroutput>
</term>
<listitem>
<para>rotates the detector around its vertical axis to reduce
parallaxes effects.</para>
<warning><title>Warning</title><para>The BerSANS software package for the primary data
reduction does not handle the detector rotation.</para></warning>
</listitem>
</varlistentry>
</variablelist>
Instead of driving the motors individually one can refer to all motors as a whole by the
<computeroutput>dt</computeroutput> command. The command <computeroutput>dt</computeroutput>
without other parameters will yield a listing of the current position of the detector:
<programlisting>
<computeroutput>
dt
Status listing for dt
dt.x = 18800.048828
dt.y = 0.004000
dt.phi = 0.414000
</computeroutput>
</programlisting>
To move the detector you can call <computeroutput>dt</computeroutput> with parameters
defining the new position of the motors, e.g.
<programlisting>
<computeroutput>
dt x = 800 y = ++100 phi 0
</computeroutput>
</programlisting>
The <computeroutput>=</computeroutput> sign is not mandatory and can be left out. The
command above drives the motor <computeroutput>detectorx</computeroutput> to the
position <computeroutput>800</computeroutput>, the motor
<computeroutput>detectory</computeroutput> to a position 100 mm further into
<computeroutput>y</computeroutput>-direction, the motor
<computeroutput>detectorrotation</computeroutput> to position
<computeroutput>0</computeroutput>. All the three movements are done parallel.
Relative movements can be performed by preceding an
<computeroutput>--</computeroutput> or <computeroutput>++</computeroutput> to the
motor position. The whole set of parameters valid for the
<computeroutput>dt</computeroutput> command is described in the
<xref linkend="specialsanscommands"/> about special SANS commands.
</para>
</section>
<section>
<title>Positioning the beam stop</title>
<para>The beam stop can be adjusted by two motors named
<computeroutput>beamstopx</computeroutput> and <computeroutput>beamstopy</computeroutput>.
They can be driven by the <computeroutput>run</computeroutput> or
<computeroutput>drive</computeroutput> commands which are described in
<xref linkend="drivecommands"/>. The commands how to change motor parameters
like <computeroutput>Precision</computeroutput>, <computeroutput>SoftZero</computeroutput>
etc. are described in <xref linkend="motorhandling"/>. The axes of the beam stop
motors are defined as:
<variablelist>
<varlistentry>
<term><computeroutput>beamstopx</computeroutput>
</term>
<listitem>
<para>moves the beam stop horizontally.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>beamstopy</computeroutput>
</term>
<listitem>
<para>moves the beam stop vertically.
</para>
</listitem>
</varlistentry>
</variablelist>
Instead of driving the motors individually one can refer to both motors as a
whole by the <computeroutput>bs</computeroutput> command. The command
<computeroutput>bs</computeroutput> without other parameters will yield a
listing of the current position of the beam stop:
<programlisting>
<computeroutput>
bs
Status listing for bs
bs.x = 0.300000
bs.y = 2.500000
</computeroutput>
</programlisting>
To move the beam stop you can call <computeroutput>bs</computeroutput> with
parameters defining the new position of the motors, e.g.
<programlisting>
<computeroutput>
bs x = 2 y ++10
</computeroutput>
</programlisting>
The <computeroutput>=</computeroutput> sign is not mandatory and can be left
out. The command above drives the motor <computeroutput>beamstopx</computeroutput>
to the position <computeroutput>2</computeroutput> and the motor
<computeroutput>beamstopy</computeroutput> to a position 10 mm further into
y-direction. Both movements are done parallely. Relative movements can be
performed by preceding an <computeroutput>--</computeroutput> or
<computeroutput>++</computeroutput> to the motor position. The whole
set of parameters valid for the <computeroutput>bs</computeroutput> command
is described in the <xref linkend="specialsanscommands"/> about special
SANS commands.
</para>
<para>
Additionally to the commands for the movement of the two beam stop axes a few
other commands have been established:
<variablelist>
<varlistentry>
<term><computeroutput>bsout</computeroutput>
</term>
<listitem>
<para>moves the beam stop out of the detection area, so that
there is nowhere a shadow of the beam stop on the detector. This
position is outside the software limits of the motors in the area
of the beam stop magazines. In this area an uncontrolled movement
could lead to a collisioni with the magazines. Therefore one can
not move the beam stop anymore with the
<computeroutput>bs</computeroutput> command after calling
<computeroutput>bsout</computeroutput>, because the motors are
fixed automatically.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>bsin</computeroutput>
</term>
<listitem>
<para>releases the beam stop motors and moves them back to the
previous position. After calling
<computeroutput>bsout</computeroutput> you have to call first
<computeroutput>bsin</computeroutput> to continue with the
movement of the beam stop with the
<computeroutput>bs</computeroutput> command.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>bscfree</computeroutput>
</term>
<listitem>
<para>is a manager command, which releases the beam stop motors,
if they are still in the
<computeroutput>bsout</computeroutput>-position. This command should
only be used when something went wrong with the SICS server during
the time the beam stop was in
<computeroutput>bsout</computeroutput>-position.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>bschange [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para>allows the user to change the size of the beam stop. Four
different sizes are available and can be selected by the parameter
<computeroutput>&lt;val&gt;</computeroutput>. Valid values for
<computeroutput>&lt;val&gt;</computeroutput> are:
<simplelist>
<member>1 for beam stop size of 40 mm x 40 mm
</member>
<member>2 for beam stop size of 70 mm x 70 mm
</member>
<member>3 for beam stop size of 85 mm x 85 mm
</member>
<member>4 for beam stop size of 100 mm x 100 mm
</member>
</simplelist>
</para>
<para>
The <computeroutput>bschange</computeroutput> command automatically recognizes the
actually used beam stop size, puts it into the empty magazine and picks up the new beam
stop. <computeroutput>bschange</computeroutput> automatically closes the instrument
beam shutter, if it was open, but it doesn't reopen it again afterwards. Calling
<computeroutput>bschange</computeroutput> without a parameter returns the number
of the actually used beam stop size.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Calculating the q range</title>
<para>The q range of the current setting can comfortably be calculated with the following command:
<variablelist>
<varlistentry>
<term>
<computeroutput>qrange [x &lt;detdist&gt;] [wl &lt;lambda&gt;]</computeroutput>
</term>
<listitem>
<para>
calculates the q range of the current setting. The detector distance x (in mm) and the wavelength wl
(in nm) can be varied with the optional parameters. Examples: <computeroutput>qrange</computeroutput> prints the q range of the current
setting, <computeroutput>qrange x 6000 wl 0.8</computeroutput> prints the q range of the current
setting with forced values for the detector distance (6000mm) and the wavelength (0.8nm).
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Estimating the measurement time</title>
<para>The measurement time of a sample depends on many factors and needs to be estimated for each
sample individually. This procedure is simplified with the command GuessCount.
<variablelist>
<varlistentry>
<term>
<computeroutput>gc &lt;measMonis&gt; &lt;totalCounts&gt;</computeroutput>
</term>
<listitem>
<para>
GuessCount: executes a measurement of &lt;measMonis&gt; Monis and extrapolates the measurement time and Monis
for a final value of &lt;totalCounts&gt; counts. Example:
<computeroutput>gc 5 1E7</computeroutput> forces the instrument to measures for 5 Monis and estimates the measurement
time and Monis for 10'000'000 counts.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
</section>
<section>
<title>Sample environments</title>
<section>
<title>Sample table</title>
<para>
One standard sample set-up is the sample table with a vertical translator, a xy-table and a
rotation table. Optionally, another linear translator stage or a double goniometer can be
mounted on the rotation table. The available motor axes for the sample table are defined
as follows:
<variablelist>
<varlistentry>
<term><computeroutput>saz</computeroutput>
</term>
<listitem>
<para>vertical translation of the sample table
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>say</computeroutput>
</term>
<listitem>
<para>horizontal translation parallel to the neutron beam direction
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>sax</computeroutput>
</term>
<listitem>
<para>horizontal translation perpendicular to the neutron beam
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>som</computeroutput>
</term>
<listitem>
<para>rotation around the vertical axis &omega;
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>gphi</computeroutput>
</term>
<listitem>
<para>rotation around the horizontal axis &Phi;
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>gtheta</computeroutput>
</term>
<listitem>
<para>rotation around the horizontal axis &Theta;,
&Theta; &perp; &Phi; &perp; &omega;
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>sposi</computeroutput>
</term>
<listitem>
<para>horizontal translation. Linear translation stage can be
mounted on the rotation table and is used for the movement of
the temperature controlled (Haake temperature controler,
<xref linkend="haaketemperaturecontroller"/>)
sample holder.
</para>
</listitem>
</varlistentry>
</variablelist>
The motors can be driven by the <computeroutput>drive</computeroutput> or
<computeroutput>run</computeroutput> commands described in
<xref linkend="motorhandling"/>. Instead of driving the motors individually
one can refer to all motors as a whole by the
<computeroutput>st</computeroutput> command. The command
<computeroutput>st</computeroutput> without parameters will yield a listing
of the current positions of the sample table motors:
<programlisting>
<computeroutput>
st
Status listing for st
st.omega = 0.504000
st.x = 12.965000
st.y = -18.992001
st.z = 106.121002
st.posi = 173.875000
</computeroutput>
</programlisting>
The axes are named <computeroutput>x</computeroutput>,
<computeroutput>y</computeroutput>, <computeroutput>z</computeroutput>,
<computeroutput>posi</computeroutput>, <computeroutput>omega</computeroutput>,
<computeroutput>phi</computeroutput> and <computeroutput>theta</computeroutput>
which move the motors <computeroutput>sax</computeroutput>,
<computeroutput>say</computeroutput>, <computeroutput>saz</computeroutput>,
<computeroutput>spos</computeroutput>, <computeroutput>som</computeroutput>,
<computeroutput>gphi</computeroutput> and <computeroutput>gtheta</computeroutput>,
respectively. In the above example the optional linear translator stage was mounted
on the rotation table so that the position of the motor
<computeroutput>spos</computeroutput> is listed but not those of the motors
<computeroutput>gphi</computeroutput> and <computeroutput>gtheta</computeroutput>.
The whole set of parameters valid for the <computeroutput>st</computeroutput>
command are described in <xref linkend="specialsanscommands"/> about special SANS
commands. A frequently used parameter for <computeroutput>st</computeroutput> is
the <computeroutput>pos</computeroutput> parameter. The command
<programlisting>
<computeroutput>
st pos P1
</computeroutput>
</programlisting>
reads out the actual positions of all the motors of the sample table and defines
for it the name <computeroutput>P1</computeroutput>. Afterwards this position can
be reached by typing simply <computeroutput>st P1</computeroutput>. Instead of
remembering the positions of all the motors one only has to remember the name
<computeroutput>P1</computeroutput> to bring the sample in position.
</para>
</section>
<section>
<title>Bruker electromagnet</title>
<para>
This is the controller for the large magnet at SANS. The controller is a box the
size of a chest of drawers. This controller can be operated in one out of two modes:
in field mode the current for the magnet is controlled via an external hall sensor
at the magnet. In current mode, the output current of the device is controlled.
This magnet can be configured into SICS with a command syntax like this:
<programlisting>
<computeroutput>
evfactory new &lt;name&gt; bruker &lt;Mac-PC&gt; &lt;Mac-port&gt; &lt;Mac-channel&gt;
</computeroutput>
</programlisting>
<computeroutput>&lt;name&gt;</computeroutput> is a placeholder for the name of the
device within SICS. A good suggestion (which will be used throughout the rest of the
text) is <computeroutput>magnet</computeroutput>. <computeroutput>bruker</computeroutput>
is the keyword for selecting the bruker driver. <computeroutput>&lt;Mac-PC&gt;</computeroutput>
is the name of the Macintosh PC to which the controller has been connected,
<computeroutput>&lt;Mac-Port&gt;</computeroutput> is the port number at which the
Macintosh-PC's serial port server listens. <computeroutput>&lt;Mac-channel&gt;</computeroutput>
is the RS-232 channel to which the controller has been connected. For example (at SANS):
<programlisting>
<computeroutput>
evfactory new magnet bruker lnsa10.psi.ch 4000 9
</computeroutput>
</programlisting>
creates a new command magnet for a Bruker magnet Controller connected to serial port
9 at lnsa10.
</para>
<para>
In addition to the standard environment controller commands this magnet controller
understands the following special commands:
<variablelist>
<varlistentry>
<term><computeroutput>magnet polarity</computeroutput>
</term>
<listitem>
<para>Prints the current polarity setting of the controller. Possible answers
are <computeroutput>plus</computeroutput>, <computeroutput>minus</computeroutput>
and <computeroutput>busy</computeroutput>. The latter indicates that the controller
is in the process of switching polarity after a command had been given to switch it.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>magnet polarity &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>sets a new polarity for the controller. Possible values for
<computeroutput>&lt;val&gt;</computeroutput> are
<computeroutput>minus</computeroutput> or <computeroutput>plus</computeroutput>.
The meaning is self explaining.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>magnet mode</computeroutput>
</term>
<listitem>
<para>Prints the current control mode of the controller. Possible answers are
<computeroutput>field</computeroutput> for control via hall sensor or
<computeroutput>current</computeroutput> for current control.
</para>
</listitem>
</varlistentry>
</variablelist><variablelist>
<varlistentry>
<term><computeroutput>magnet mode &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>sets a new control mode for the controller. Possible values for
<computeroutput>&lt;val&gt;</computeroutput> are
<computeroutput>field</computeroutput> or
<computeroutput>current</computeroutput>. The meaning is explained above.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>magnet field</computeroutput>
</term>
<listitem>
<para>
reads the magnets hall sensor independent of the control mode.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>magnet current</computeroutput>
</term>
<listitem>
<para>reads the magnets output current independent of the control mode.</para>
<warning><title>Warning</title>
<para>There is a gotcha with this. If you type only
<computeroutput>magnet</computeroutput> a value will be returned. The meaning of
this value is dependent on the selected control mode. In
<computeroutput>current</computeroutput> mode it is a current, in
<computeroutput>field</computeroutput> mode it is a magnetic field. This is so
in order to support SICS control logic. You can read values at all times explicitly
using <computeroutput>magnet current</computeroutput> or
<computeroutput>magnet field</computeroutput>.</para></warning>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Sample holder for electro magnet</title>
<para>
Another standard sample seup is a vacuum chamber, which is directly connected to the
collimator and detector tubes, so that the SANS can be operated at about
10<superscript>-2</superscript> mbar in a single vacuum without windows or with thin
aluminium or sapphire windows to work at ambient pressure or at vacuum conditions
down to 10<superscript>-6</superscript> mbar. The chamber is large enough to carry
an electromagnet. For this setup a sample changer with an optional heated sample
position is available. This sample changer can be moved vertically by 245 mm and can
also be rotated by &plusmn;10 degree. The two available motors are defined as follows:
<variablelist>
<varlistentry>
<term><computeroutput>mz</computeroutput>
</term>
<listitem>
<para>moves the electromagnet sample holder in vertical direction.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>mom</computeroutput>
</term>
<listitem>
<para> rotates the sample around the vertical axis
&omega; by &plusmn;10 degree.
</para>
</listitem>
</varlistentry>
</variablelist>
The motors can be driven by the <computeroutput>run</computeroutput> or
<computeroutput>drive</computeroutput> command described in
<xref linkend="motorhandling"/>. Instead of driving the motors individually one can refer
to both motors as a whole by the <computeroutput>msh</computeroutput> command. The
command <computeroutput>msh</computeroutput> without parameters will yield a listing of
the current position of the electromagnet sample holder:
<programlisting>
<computeroutput>
msh
Status listing for msh
msh.z = 0.000000
msh.omega = 0.000000
</computeroutput>
</programlisting>
The axes of the sample holder <computeroutput>mz</computeroutput> and
<computeroutput>mom</computeroutput> are named in the
<computeroutput>msh</computeroutput> command
<computeroutput>z</computeroutput> and <computeroutput>omega</computeroutput>.
The whole set of parameters valid for the
<computeroutput>msh</computeroutput> command are described in
<xref linkend="specialsanscommands"/> about special SANS commands.
</para>
</section>
<section id="haaketemperaturecontroller">
<title>Haake C25P temperature controller</title>
<para>
This is sort of a bucket full of water equipped with a temperature control system.
It is connected with a blue ethernet cable to the port nr. 8 of the SANS terminal. The
SEA software written by Markus Zolliker is the best way to control and monitor the
thermostat manually; it is started from a terminal window with <computeroutput>sea</computeroutput>.
Please refer to the
<ulink url="http://lns00.psi.ch/sinqwiki/Wiki.jsp?page=Sea">
SEA Wiki page</ulink> for more information.
</para>
<para>
To add an external Pt100 sensor, plug in the sensor and restart the thermostat and the sea client (choose
'Haake' as device and check the box 'has sample sensor'). If the external sensor should be used as
reference to control the thermostat, check the box 'control on sample'.
<variablelist>
<varlistentry>
<term>
<computeroutput>start_sea
</computeroutput>
</term>
<listitem>
<para>
starts the sea server from SICS.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>temperature</computeroutput>
</term>
<listitem>
<para>
reads out the current temperature.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>drive temperature &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>
changes the set temperature of the thermostat to the value <computeroutput>&lt;val&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
in a terminal window: <computeroutput>sea
</computeroutput>
</term>
<listitem>
<para>
starts the sea server client from a terminal. Choose Haake as device.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Eurotherm temperature controller</title>
<para>
At SANS there is a Eurotherm temperature controller for the sample heater available.
This and probably other Eurotherm controllers can be configured into SICS with the
following command. The Eurotherm needs to be connected with a nullmodem adapter.
<programlisting>
<computeroutput>
EVFactory new &lt;name&gt; euro &lt;computer&gt; &lt;port&gt; &lt;channel&gt;
</computeroutput>
</programlisting>
<computeroutput>&lt;name&gt;</computeroutput> is a placeholder for the name of the
device within SICS. A good suggestion is temperature.
<computeroutput>euro</computeroutput> is the keyword for selecting the Eurotherm driver.
<computeroutput>computer</computeroutput> is the name of the Macintosh PC to which
the controller has been connected, <computeroutput>&lt;port&gt;</computeroutput> is the
port number at which the Macintosh-PC's serial port server listens.
<computeroutput>&lt;channel&gt;</computeroutput> is the RS-232 channel to which the
controller has been connected.
<warning><title>Warning</title><para>The Eurotherm needs a RS-232 port with an unusual
configuration: 7bits, even parity, 1 stop bit. Currently only the SANS Macintosh port 13
(the last in the upper serial port connection box) is configured like this! Thus, an
example for SANS and the name temperature looks like:
<programlisting>
<computeroutput>
EVFactory new temperature euro lnsa10.psi.ch 4000 13
</computeroutput>
</programlisting>
</para></warning>
There are two further gotchas with this thing:
<itemizedlist>
<listitem><para>The Eurotherm needs to operate in the EI-bisynch protocoll mode. This
has to be configured manually. For details see the manual coming with the controller.
</para></listitem>
<listitem><para>The weird protocol spoken by the Eurotherm requires very special control
characters. Therefore the send functionality usually supported by a SICS environment
controller could not be implemented.
</para></listitem>
</itemizedlist>
</para>
</section>
</section>
<section>
<title>Data handling and acquisition</title>
<section>
<title>File naming conventions and storing data</title>
<para>
Data files are stored by the SICS server on the <emphasis>lnsa10.psi.ch</emphasis>
workstation in the directory defined by the SICS variable
<computeroutput>SICSDataPath</computeroutput>. By default this directory is
<computeroutput>/home/SANS/data/</computeroutput>. The file name of a data file is
composed of four parts:
<orderedlist>
<listitem>
<para>
the prefix stored in the variable <computeroutput>SICSDataPrefix</computeroutput>,
by default <computeroutput>sans</computeroutput>
</para>
</listitem>
<listitem>
<para>
the run number stored in the variable <computeroutput>SICSDataNumber</computeroutput>,
which is incremented before each storing process and has 5 digits (leading 0)
</para>
</listitem>
<listitem>
<para>
the actual year (4 digits)
</para>
</listitem>
<listitem>
<para>
and the post-fix stored in the variable <computeroutput>SICSDataPostfix</computeroutput>,
by default <computeroutput>.hdf</computeroutput>
</para>
</listitem>
</orderedlist>
A typical data file name would be
<computeroutput>/home/SANS/data/sans123452006.hdf</computeroutput>.
All data files are written in NeXus format.
</para>
</section>
<section>
<title>Data acquisition</title>
<formalpara>
<title>SICS counter handling</title>
<para>
The SICS counter concept may include several monitors per counter. At the SANS
instrument two monitors are installed: one between beam shutter and neutron
velocity selector, which is used for normalizing the SANS measurement on the
incident neutron flux, and a second one after the selector just in front of the
attenuator. For the SANS instrument only one counter is handled which is named
<computeroutput>counter</computeroutput>. A few words have to be lost about the
SICS handling of preset values for counters. Two modes of operation have to be
distinguished: counting until a timer has passed, for example counting for 20
seconds. This mode is called <computeroutput>Timer</computeroutput> mode. In
the other mode, counting is continued until a control monitor has reached a
certain preset value. This mode is called <computeroutput>Monitor</computeroutput>
mode. At the SANS instrument the first monitor between beam shutter and neutron
selector is used in this mode. The preset values in
<computeroutput>Monitor</computeroutput> mode are usually very large. Therefore
the counter has an exponent data variable. Values given as preset are
effectively 10 to the power of this exponent. For instance if the preset is 25
and the exponent is 6, then counting will be continued until the monitor has
reached 25 million. Note, that this scheme with the exponent is only in operation
in <computeroutput>Monitor</computeroutput> mode. The commands understood are:
<variablelist>
<varlistentry>
<term><computeroutput>counter SetPreset &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>sets the counting preset to <computeroutput>&lt;val&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>counter GetPreset</computeroutput>
</term>
<listitem>
<para>prints the current preset value.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>counter SetExponent &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>sets the exponent for the counting preset in monitor mode to
<computeroutput>&lt;val&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>counter GetExponent</computeroutput>
</term>
<listitem>
<para>prints the current exponent used in monitor mode.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>counter SetMode &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>sets the counting mode to <computeroutput>&lt;val&gt;</computeroutput>.
Possible values are <computeroutput>Timer</computeroutput> for timer mode
operation and <computeroutput>Monitor</computeroutput> for waiting for a
monitor to reach a certain value.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>counter GetMode</computeroutput>
</term>
<listitem>
<para>prints the current mode.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>counter GetCounts</computeroutput>
</term>
<listitem>
<para>prints the counts gathered in the last run.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>counter GetMonitor &lt;n&gt;</computeroutput>
</term>
<listitem>
<para>prints the counts gathered in the monitor number
<computeroutput>&lt;n&gt;</computeroutput> in the last run.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>counter Count &lt;preset&gt;</computeroutput>
</term>
<listitem>
<para>starts counting in the current mode and the preset
<computeroutput>&lt;preset&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>counter status</computeroutput>
</term>
<listitem>
<para>prints a message containing the preset and the current monitor
or time value. Can be used to monitor the progress of the counting
operation..
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>counter GetTime</computeroutput>
</term>
<listitem>
<para>retrieves the actual time the counter counted for. This
excludes time where there was no beam or counting was paused.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</formalpara>
<formalpara>
<title>Histogram memory</title>
<para>
The histogram memory is used in order to control the large area sensitive detector. It
takes care of putting counts detected in the detector into the proper bin in memory.
Next to a conventional mode of a SANS measurement where all detected neutrons are
accumulated for a given time or monitor count, also a time of flight mode and a
stroboscopic mode are available, where there is for each detector pixel a row of
memory locations mapping the time bins. As usual in SICS the syntax is the name of the
histogram memory followed by qualifiers and parameters. For the SANS the name of
the histogram memory is <computeroutput>banana</computeroutput>.
</para>
</formalpara>
<para>
The histogram memory has a plethora of configuration options coming with it which
define memory layout, modes of operation, handling of bin overflow and the like.
Additionally there are histogram memory model specific parameters which are needed
internally in order to communicate with the histogram memory. In most cases the
histogram memory will already have been configured at SICS server startup time.
However, there are occasion where these configuration options need to be enquired
or modified at run time. The command to enquire the current value of a configuration
option is: <computeroutput>banana configure &lt;option&gt;</computeroutput>, the
command to set it is:
<computeroutput>banana configure &lt;option&gt; &lt;newvalue&gt;</computeroutput>.
A list of common configuration options and their meaning is given below:
<variablelist>
<varlistentry>
<term><computeroutput>HistMode</computeroutput>
</term>
<listitem>
<para>describes the modes of operation of the histogram memory.
Possible values are:
<variablelist>
<varlistentry>
<term><computeroutput>Transparent</computeroutput>
</term>
<listitem>
<para>counter data will be written as is to memory. For
debugging purposes only.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>Normal</computeroutput>
</term>
<listitem>
<para>neutrons detected at a given detector will be added
to the apropriate memory bin.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>TOF</computeroutput>
</term>
<listitem>
<para>time of flight mode, neutrons found in a given detector
will be put added to a memory location determined by the detector
and the time stamp.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>Stroboscopic</computeroutput>
</term>
<listitem>
<para>This mode serves to analyse changes in a sample due to an
varying external force, such as a magnetic field, mechanical stress
or the like. Neutrons will be stored in memory according to detector
position and phase of the external force.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>OverFlowMode</computeroutput>
</term>
<listitem>
<para>This parameter determines how bin overflow is handled. This happens when
more neutrons get detected for a particular memory location then are allowed
for the number type of the histogram memory bin. Possible values are:
<variablelist>
<varlistentry>
<term><computeroutput>Ignore</computeroutput>
</term>
<listitem>
<para>overflow will be ignored, the memory location will wrap
around and start at 0 again.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>Ceil</computeroutput>
</term>
<listitem>
<para>the memory location will be kept at the highest posssible
value for its number type.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>Count</computeroutput>
</term>
<listitem>
<para>as <computeroutput>Ceil</computeroutput>, but a list of
overflowed bins will be maintained.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>Rank</computeroutput>
</term>
<listitem>
<para>defines the number of histograms in memory.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>Length</computeroutput>
</term>
<listitem>
<para>gives the length of an individual histogram.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>BinWidth</computeroutput>
</term>
<listitem>
<para>determines the size of a single bin in histogram memory in bytes.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
For time of flight mode the time binnings can be retrieved and modified with the following
commands. Note that these commands do not follow the configure syntax given above. Please
note, that the usage of the commands for modifying time bins is restricted to instrument
managers.
<variablelist>
<varlistentry>
<term><computeroutput>banana timebin</computeroutput>
</term>
<listitem>
<para>prints the currently active time binning array.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>banana genbin &lt;start&gt; &lt;step&gt; &lt;n&gt;</computeroutput>
</term>
<listitem>
<para>generates a new equally spaced time binning array.
Number <computeroutput>&lt;n&gt;</computeroutput> time bins will be generated
starting from <computeroutput>&lt;start&gt;</computeroutput> with a stepwidth of
<computeroutput>&lt;step&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>banana setbin &lt;inum&gt; &lt;value&gt;</computeroutput>
</term>
<listitem>
<para>Sometimes unequally spaced time binnings are needed. These can be configured
with this command. The time bin <computeroutput>&lt;iNum&gt;</computeroutput> is
set to the value <computeroutput>&lt;value&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>banana clearbin</computeroutput>
</term>
<listitem>
<para> Deletes the currently active time binning information.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>banana preset [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para> with a new value <computeroutput>&lt;val&gt;</computeroutput> sets the preset
time or monitor for counting. Without <computeroutput>&lt;val&gt;</computeroutput>
prints the current value.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>banana exponent [&lt;val&gt;]</computeroutput>
</term>
<listitem>
<para> with a new value <computeroutput>&lt;val&gt;</computeroutput> sets the exponent
to use for the preset time in Monitor mode. Without <computeroutput>&lt;val&gt;</computeroutput>
prints the current value.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>banana CountMode [&lt;mode&gt;]</computeroutput>
</term>
<listitem>
<para>with a new value <computeroutput>&lt;mode&gt;</computeroutput> sets the
count mode. Possible values are <computeroutput>Timer</computeroutput> for a fixed
counting time and <computeroutput>Monitor</computeroutput> for a fixed monitor count
which has to be reached before counting finishes. Without a value for
<computeroutput>&lt;mode&gt;</computeroutput> the command prints the currently
active value.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>banana init</computeroutput>
</term>
<listitem>
<para>after giving the configuration commands this needs to be called in order to
transfer the configuration from the host computer to the actual histogram memory.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>banana count</computeroutput>
</term>
<listitem>
<para>starts counting using the currently active values for
<computeroutput>CountMode</computeroutput> and <computeroutput>preset</computeroutput>.
This command does not block, i.e. in order to inhibit further commands from the console,
you have to give <computeroutput>Success</computeroutput> afterwards.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>banana Initval &lt;val&gt;</computeroutput>
</term>
<listitem>
<para>initialises the whole histogram memory to the value
<computeroutput>&lt;val&gt;</computeroutput>. Usually 0 in order to clear the histogram
memory.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>banana get &lt;i&gt; &lt;iStart&gt; &lt;iEnd&gt;</computeroutput>
</term>
<listitem>
<para>retrieves the histogram number
<computeroutput>&lt;i&gt;</computeroutput>. A value of -1 for
<computeroutput>&lt;i&gt;</computeroutput> denotes retrieval of the whole histogram memory.
<computeroutput>&lt;iStart&gt;</computeroutput> and <computeroutput>&lt;iEnd&gt;</computeroutput>
are optional and allow to retrieve a subset of a histogram between
<computeroutput>&lt;iStart&gt;</computeroutput> and <computeroutput>&lt;iEnd&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>banana sum &lt;d0min&gt; &lt;d0max&gt; &lt;d1min&gt; &lt;d1max&gt; ...&lt;dnmin&gt; &lt;dnmax&gt;</computeroutput>
</term>
<listitem>
<para>calculates the sum of an area on the detector. For each dimension a minimum and
maximum boundary for summing must be given.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<formalpara>
<title>Storing Data and starting a SANS measurement</title>
<para>
Instead of initializing and starting a measurement by the <computeroutput>banana</computeroutput>
command a few other commands have been introduced to take care for those things:
<variablelist>
<varlistentry>
<term><computeroutput>StoreData</computeroutput>
</term>
<listitem>
<para>This command does what it says. It writes the current state of the instrument
including counts to a NeXus data file.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>count [&lt;mode&gt; &lt;preset&gt;]</computeroutput>
</term>
<listitem>
<para>starts a count operation in mode <computeroutput>&lt;mode&gt;</computeroutput>
with a preset <computeroutput>&lt;preset&gt;</computeroutput>.
<computeroutput>&lt;mode&gt;</computeroutput> can have the values
<computeroutput>Timer</computeroutput> or <computeroutput>Monitor</computeroutput>.
The parameters are optional. If they are not given, the count operation will be started
with the current setting in the histogram memory object
<computeroutput>banana</computeroutput>. Before the count operation is started, the
<computeroutput>count</computeroutput> command waits until all other commands executed
earlier are finished. During the count operation no other commands can be executed.
After the count, <computeroutput>StoreData</computeroutput> will be automatically called.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>repeat &lt;num&gt; [&lt;mode&gt; &lt;preset&gt;]</computeroutput>
</term>
<listitem>
<para>calls <computeroutput>num</computeroutput> times <computeroutput>count</computeroutput>.
<computeroutput>num</computeroutput> is a required parameter. The other two are optional and
are handled as described above for <computeroutput>count</computeroutput>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</formalpara>
</section>
<section id="xytablecommand">
<title>XY table</title>
<para>XYTable is a class which maintains a list of X-Y values. These can be plotted in the
VarWatch SICS client by configuring it with a special command. Before you may use an XYTable
object it had to be installed into the system by the SICS administrator. This can be done by
the command <computeroutput>MakeXYTable &lt;xydata&gt;</computeroutput> in the SANS initialization
file. For this documentation it is assumed that this has happened already and a XYTable object is
available in the system under the name <computeroutput>&lt;xydata&gt;</computeroutput>.
</para>
<para>
Interaction with the XYTable object happens through the following commands:
<variablelist>
<varlistentry>
<term><computeroutput>&lt;xydata&gt; clear</computeroutput>
</term>
<listitem>
<para>clears all entries in the x-y table.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>&lt;xydata&gt; list</computeroutput>
</term>
<listitem>
<para>lists the entries in the x-y table on the screen.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>&lt;xydata&gt; write &lt;filename&gt;</computeroutput>
</term>
<listitem>
<para>writes the x-y list to the disk file filename. This file resides on
the machine running the SICS server.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>&lt;xydata&gt; uuget</computeroutput>
</term>
<listitem>
<para>sends the x-y list in an uuencoded format. This is the command to
give to the VarWatch SICS client in order to make it display the x-y list.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>&lt;xydata&gt; add &lt;xval&gt; &lt;yval&gt;</computeroutput>
</term>
<listitem>
<para>creates a new x-y list entry with the values
<computeroutput>&lt;xval&gt;</computeroutput> and
<computeroutput>&lt;yval&gt;</computeroutput>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<section>
<title>Status of the actual acquisition process</title>
<para>A
<ulink url="http://lns00.psi.ch/sicszone/sansstatus?instrument=sans">webpage</ulink>
with the actual instrument status is available (only inside the PSI network).
<variablelist>
<varlistentry>
<term><computeroutput>sinq</computeroutput>
</term>
<listitem>
<para>prints the SINQ status in the SICS client which issued the command.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
</section>
</chapter>
<chapter>
<title>Other programs</title>
<section>
<title>Grasp</title>
<para>Grasp stands for 'Graphical Reduction and Analysis SANS Program for Matlab' which was developed
by Charles Dewhurst at the Institut Laue-Langevin (ILL) in Grenoble, France. Please refer to the
<ulink url="http://www.ill.fr/lss/grasp/grasp_main.html">Grasp webpage</ulink>.
</para>
</section>
<section>
<title>BerSANS software package</title>
<para>The BerSANS data reduction software has been developed by Uwe Keiderling at the Hahn-Meitner-Institut
(HMI) in Berlin, Germany.
The Manual of the BerSANS Software Package can be
<ulink url="http://kur.web.psi.ch/sans1/BerSANS/SANS-Manual.pdf">downloaded</ulink>
as pdf file.
</para>
</section>
<section>
<title>SASfit program</title>
<para>SASfit for analyzing and plotting small angle scattering data has been written by Joachim
Kohlbrecher at the Paul Scherrer Institute (PSI) in Villigen, Switzerland. Please refer to the
<ulink url="http://kur.web.psi.ch/sans1/SANSSoft/sasfit.html">SASfit webpage</ulink>.
</para>
</section>
</chapter>
</book>