\subsection{Four Circle Single Counter Measurement Object}
This object implements a basic single counter reflection measurement routine
for four circle diffractometers. This object is able to read a reflection
listing, drive to each reflection in the list, do a scan on it, integrate
the scan results and write the results to ASCII files. Nothing sophisticated
such as optimised measurement procedures and special background measurement
programs. Three files will be created as output: one file with the ending
.rfl which contains the reflection profiles for each reflection, a file .asc
which contains a summary in form of HKL, I, sigma(I) for each reflection
and a file ending .err which contains all the error messages obtained during
the run.


The interface to this object consists of these functions:

@d mesureint @{
 typedef struct __Mesure *pMesure;
/*--------------------- live & death --------------------------------------*/
  pMesure CreateMesure(pHKL pCryst, pScanData pScanner, 
                       pMotor pOmega, char *pom, char *po2t,
                       char *pFileRoot,pDataNumber pDanu);
  void    DeleteMesure(void *pData);

  int MesureFactory(SConnection *pCon, SicsInterp *pSics, void *pData,
                    int argc, char *argv[]);
/*------------------- object functions -----------------------------------*/
  int MesureReflection(pMesure self, float fHKL[3], SConnection *pCon);
  int MesureGenReflection(pMesure self, float fHKL[3],float fSet[4], SConnection *pCon);
  int MesureStart(pMesure self, SConnection *pCon);
  int MesureReopen(pMesure self, char *filename, SConnection *pCon);
  int MesureClose(pMesure self);
  int MesureFile(pMesure self, char *pFile, int iSkip, SConnection *pCon);
  int MesureGenFile(pMesure self, char *pFile, int iSkip, SConnection *pCon);
  int MesureSetPar(pMesure self, char *name, float fVal);
  int MesureGetPar(pMesure self, char *name, float *fVal);

  int MesureAction(SConnection *pCon, SicsInterp *pSics, void *pData,
                    int argc, char *argv[]);
  
@}
All functions return 1 on success, 0 on failure.
\begin{description}
\item[CreateMesure] creates a new pMesure object. Parameters are the HKL
object to use for cystallographic conversions and the scan object to use for
doing the scans. This is followd by the motor for running omega, its name
and the name of the motor for driving omega 2 theta. Finnaly the path to the
data directory and the data number object for automatic filename creation is
specified.
\item[DeleteMesure] wipes the mesure object pData from memory.
\item[MesureFactory] is the factory function for mesure which will be used
by the interpreter to  install mesure into the system.
\item[MesureReflection] measures the single reflection fHKL. It drives
there, calculates scan borders and performs the scan.
\item[MesureGenReflection] measures the single reflection fHKL. It drives
there, calculates scan borders and performs the scan. This version uses
supplied values for the instrument settings.
\item[MesureStart] sets everything up for a new measurement with new file
names.
\item[MesureReopen] reopens the files belonging to the file name given as
base for appending. This is a recovery feature.
\item[MesureFile] opens the file specified as second parameter and reads
each line. Expected is a reflection to measure. Each reflection is then
measured and output written. The last parameter iSkip allows to skip iSkip
lines of the reflection file. This facility exists in order to restart work
on an reflection file which had been interrupted for some reason.
\item[MesureGenFile] opens the file specified as second parameter and reads
each line. Expected is a reflection to measure. Each reflection is then
measured and output written. The last parameter iSkip allows to skip iSkip
lines of the reflection file. This facility exists in order to restart work
on an reflection file which had been interrupted for some reason. This
version acts upon files created by the program HKLGEN.
\item[MesureSetPar] sets the parameter name of Mesure to fVal. A listing of
possible parameters is given below.
\item[MesureGetPar] returns the value of the parameter name in fVal.
\item[MesureAction] implements the interpreter interface to the mesure
object. 
\end{description}
Mesure supports the following parameters:
\begin{description}
\item[np] the number of points per scan.
\item[preset] The preset value for counting.
\item[countmode] the counting mode, can be 0 for timer or 1 for monitor
mode. 
\item[mode] can be 0 for omega 2theta scans or 1 for omega scans.
\item[step] the scan step widths. This is allways in omega, in omega 2theta
mode 2theta is always the double of this.
\end{description}

@o mesure.h @{
/*----------------------------------------------------------------------------
                         M E S U R E

 A SICS object for doing simple four circle measurements with a single
 counter. 

 copyright: see copyright.h

 Mark Koenencke, April 1998
---------------------------------------------------------------------------*/
#ifndef SICSMESURE
#define SICSMESURE
@<mesureint@>
#endif
@}
