- Fixed a few problems with hklscan

- Added transfer of zipped data to conman.c, histogram memory software
  in order to support the TRICS status display.
- Upgraded TRICS data file writing.
- First installment of triple axis spectrometer support: initialization of
  data structures and an implementation of the MAD dr(ive) command.
This commit is contained in:
cvs
2000-11-21 08:16:46 +00:00
parent f9a31d2065
commit e83d3e6946
39 changed files with 5301 additions and 563 deletions

168
tas.w Normal file
View File

@@ -0,0 +1,168 @@
\subsection{Triple Axis Spectrometer Software}
A triple axis spectrometer performs complicated scans in Q--energy space.
The triple axis spectrometers pose a couple of challenges to the SICS
software: \begin{itemize}
\item The command syntax should be as close as possible to the syntax
of the ancient tasmad program.
\item A relatively complicated algorithm is used for computing the
motor positions and magnet settings. It is a selling point when the
F77 routine used for this purpose in tasmad can be reused.
\item A ILL format scan file must be written after each scan in order
to provide compatability with existing data analysis software.
\item Provisions must be made to execute a batch file at each scan
point in order to allow for polarisation analysis.
\item The user interface of tasmad is largely based on parameters
which are used to store and manipulate state information.
\item There exists a special syntax for assigning variables which
requires the parameters to be in a special storage order.
\end{itemize}
These requirements are implemented in the following way: tasmad
variables are matched to SICS variables. The scan and drive commands
are reimplemented in order to allow for both syntax parsing and the
reuse of the triple axis calculation routines. In order to support the
strange storage order assignment system the set command is also
implemented in this modules as it can share code with scan and drive.
All the remaining syntax adaptions will be implemented in the
scripting language.
\subsubsection{Data Structures}
It would be inconvenient to search all necessary parameters in the
interpreter anytime a scan or drive command is used. In order to avoid
this, the parameters are cached in a local data structure which is
initialized when installing the tas module.
@d tasdata @{
typedef struct {
pObjectDescriptor pDes;
pSicsVariable tasPar[MAXPAR];
pCounter counter;
}TASdata, *pTASdata;
@}
\begin{description}
\item[pDes] The standard object descriptor required for any SICs
object.
\item[floatPar] An array of pointers to float parameters.
The parameters are indexed through defined constants.
\item[counter] A pointer to the neutron counter.
\end{description}
The constants for the parameters are defined in the header file.
\subsubsection{Exported Functions}
These are mainly the interpreter inetrface functions:
@d tasfunc @{
int TASFactory(SConnection *pCon, SicsInterp *pSics, void *pData,
int argc, char *argv[]);
int TASDrive(SConnection *pCon, SicsInterp *pSics, void *pData,
int argc, char *argv[]);
int TASScan(SConnection *pCon, SicsInterp *pSics, void *pData,
int argc, char *argv[]);
int TASSet(SConnection *pCon, SicsInterp *pSics, void *pData,
int argc, char *argv[]);
@}
@o tas.h @{
/*----------------------------------------------------------------------
Header file for the SICS triple axis module. Implements new drive
and scan commands for triple axis which use the old tasmad F77
routine for calculating the spectrometer setting angles.
Mark Koennecke, November 2000
------------------------------------------------------------------------*/
#ifndef SICSTAS
#define SICSTAS
/*------------------------- parameter defines -------------------------*/
#define WAV 0
#define DM 1
#define DA 2
#define ETAM 3
#define ETAA 4
#define TI 5
#define MN 6
#define IF1V 7
#define IF2V 8
#define IF1H 9
#define IF2H 10
#define HELM 11
#define AS 12
#define BS 13
#define CS 14
#define AA 15
#define BB 16
#define CC 17
#define ETAS 18
#define AX 19
#define AY 20
#define AZ 21
#define BX 22
#define BY 23
#define BZ 24
#define EI 25
#define KI 26
#define EF 27
#define KF 28
#define QH 29
#define QK 30
#define QL 31
#define EN 32
#define QM 33
#define HX 34
#define HY 35
#define HZ 36
#define DA1 37
#define DA2 38
#define DA3 39
#define DA4 40
#define DA5 41
#define DA6 42
#define DMCV 43
#define DSRO 44
#define DACH 45
#define DMTL 46
#define DMTU 47
#define DSTL 48
#define DSTU 49
#define DATL 50
#define DATU 51
#define DMGL 52
#define DSGL 53
#define DSGU 54
#define DAGL 55
#define DEI 56
#define DKI 57
#define DEF 58
#define DKF 59
#define DQH 60
#define DQK 62
#define DQL 62
#define DEN 63
#define DQM 64
#define DT 65
#define SM 66
#define SS 67
#define SA 68
#define FX 69
#define NP 70
#define F1 71
#define F2 72
#define LPA 73
#define MRX1 74
#define MRX2 75
#define ARX1 76
#define ARX2 77
#define MAXPAR 78
/* --------------------- data structure -------------------------------*/
@<tasdata@>
/*---------------------- interface ----------------------------------*/
@<tasfunc@>
#endif
@}