
- Mapped fileeval to exe manager - Updates for TRICS file formats SKIPPED: psi/libpsi.a psi/sinqhmdriv.c psi/sinqhttp.c psi/tabledrive.c psi/tasscan.c psi/hardsup/asynsrv_utility.c psi/hardsup/sinqhm.c
207 lines
9.7 KiB
TeX
207 lines
9.7 KiB
TeX
\subsection{Four Circle Single Counter Measurement Object}
|
|
This object implements a 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.
|
|
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.
|
|
|
|
This module has evolved to support the following mode advanced feautures:
|
|
\begin{itemize}
|
|
\item Vary step width and scanned variable in dependence on two theta
|
|
\item Calculation mode in order to determine the number of reflections which
|
|
can actually be measured from a given list.
|
|
\item Remeasuring of weak reflections.
|
|
\item Fast scans.
|
|
\end{itemize}
|
|
|
|
The interface to this object consists of these functions:
|
|
|
|
\begin{flushleft} \small
|
|
\begin{minipage}{\linewidth} \label{scrap1}
|
|
$\langle$mesureint {\footnotesize ?}$\rangle\equiv$
|
|
\vspace{-1ex}
|
|
\begin{list}{}{} \item
|
|
\mbox{}\verb@@\\
|
|
\mbox{}\verb@ typedef struct __Mesure *pMesure;@\\
|
|
\mbox{}\verb@/*--------------------- live & death --------------------------------------*/@\\
|
|
\mbox{}\verb@ pMesure CreateMesure(pHKL pCryst, pScanData pScanner, @\\
|
|
\mbox{}\verb@ pMotor pOmega, char *pom,@\\
|
|
\mbox{}\verb@ pMotor p2Theta, char *p2t,@\\
|
|
\mbox{}\verb@ char *pFileRoot,pDataNumber pDanu, char *headerTemplate);@\\
|
|
\mbox{}\verb@ void DeleteMesure(void *pData);@\\
|
|
\mbox{}\verb@@\\
|
|
\mbox{}\verb@ int MesureFactory(SConnection *pCon, SicsInterp *pSics, void *pData,@\\
|
|
\mbox{}\verb@ int argc, char *argv[]);@\\
|
|
\mbox{}\verb@/*------------------- object functions -----------------------------------*/@\\
|
|
\mbox{}\verb@ int MesureReflection(pMesure self, float fHKL[3], float fPsi,@\\
|
|
\mbox{}\verb@ SConnection *pCon);@\\
|
|
\mbox{}\verb@ int MesureGenReflection(pMesure self, float fHKL[3],float fSet[4], SConnection *pCon);@\\
|
|
\mbox{}\verb@ int MesureStart(pMesure self, SConnection *pCon);@\\
|
|
\mbox{}\verb@ int MesureReopen(pMesure self, char *filename, SConnection *pCon);@\\
|
|
\mbox{}\verb@ int MesureClose(pMesure self);@\\
|
|
\mbox{}\verb@ int MesureFile(pMesure self, char *pFile, int iSkip, SConnection *pCon);@\\
|
|
\mbox{}\verb@ int MesureGenFile(pMesure self, char *pFile, int iSkip, SConnection *pCon);@\\
|
|
\mbox{}\verb@ int MesureSetPar(pMesure self, char *name, float fVal);@\\
|
|
\mbox{}\verb@ int MesureGetPar(pMesure self, char *name, float *fVal);@\\
|
|
\mbox{}\verb@@\\
|
|
\mbox{}\verb@ int MesureAction(SConnection *pCon, SicsInterp *pSics, void *pData,@\\
|
|
\mbox{}\verb@ int argc, char *argv[]);@\\
|
|
\mbox{}\verb@ @\\
|
|
\mbox{}\verb@@$\diamond$
|
|
\end{list}
|
|
\vspace{-1ex}
|
|
\footnotesize\addtolength{\baselineskip}{-1ex}
|
|
\begin{list}{}{\setlength{\itemsep}{-\parsep}\setlength{\itemindent}{-\leftmargin}}
|
|
\item Macro referenced in scrap ?.
|
|
\end{list}
|
|
\end{minipage}\\[4ex]
|
|
\end{flushleft}
|
|
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.
|
|
\end{description}
|
|
|
|
|
|
\subsubsection{Four Circle Table}
|
|
In order to support the variation of scan parameters with two theta a table is needed which
|
|
holds the necessary parameters. This table is implemented in a separate module. The
|
|
interface to this module is:
|
|
\begin{flushleft} \small
|
|
\begin{minipage}{\linewidth} \label{scrap2}
|
|
$\langle$fourtableint {\footnotesize ?}$\rangle\equiv$
|
|
\vspace{-1ex}
|
|
\begin{list}{}{} \item
|
|
\mbox{}\verb@@\\
|
|
\mbox{}\verb@ int MakeFourCircleTable();@\\
|
|
\mbox{}\verb@ void DeleteFourCircleTable(int handle);@\\
|
|
\mbox{}\verb@ int HandleFourCircleCommands(int *handle, SConnection *pCon, @\\
|
|
\mbox{}\verb@ int argc, char *argv[], int *err);@\\
|
|
\mbox{}\verb@ char *GetFourCircleScanVar(int handle, double two_theta);@\\
|
|
\mbox{}\verb@ double GetFourCircleStep(int handle, double two_theta);@\\
|
|
\mbox{}\verb@ int SaveFourCircleTable(int handle, char *objName, FILE *fd);@\\
|
|
\mbox{}\verb@ float GetFourCirclePreset(int handle, double twoTheta);@\\
|
|
\mbox{}\verb@ int GetFourCircleScanNP(int handle, double twoTheta);@\\
|
|
\mbox{}\verb@@$\diamond$
|
|
\end{list}
|
|
\vspace{-1ex}
|
|
\footnotesize\addtolength{\baselineskip}{-1ex}
|
|
\begin{list}{}{\setlength{\itemsep}{-\parsep}\setlength{\itemindent}{-\leftmargin}}
|
|
\item Macro referenced in scrap ?.
|
|
\end{list}
|
|
\end{minipage}\\[4ex]
|
|
\end{flushleft}
|
|
Many functions takes as the first argument a handle to the four circle table as
|
|
created by MakeFourCircleTable.
|
|
\begin{description}
|
|
\item[MakeFourCircleTable] creats a four circle table. Returns a handle with which
|
|
the table can be referred to later.
|
|
\item[DeleteFourCircleTable] removes a four circle table. The single argument is
|
|
a handle to a four circle tbale as created by MakeFourCircle.
|
|
\item[HandleFourCircleCommands] handles interpreter commands which allow to
|
|
edit or list the table described by handle. pCon is used for output. argc, argv are
|
|
the arguments to the command. The returns 1 when the command was handled, 0 else.
|
|
If there was an error, err is set to 0.
|
|
\item[GetFourCircleScanVar] retrieves the scan variable to use for the two theta
|
|
value given.
|
|
\item[GetFourCircleStep] retrieves the step width to use for the two theta
|
|
value given.
|
|
\item[SaveFourCircleTable] saves the configuration of the table into fd. objName is the
|
|
name of the object to which this table belongs.
|
|
\end{description}
|
|
|
|
|
|
\begin{flushleft} \small
|
|
\begin{minipage}{\linewidth} \label{scrap3}
|
|
\verb@"mesure.h"@ {\footnotesize ? }$\equiv$
|
|
\vspace{-1ex}
|
|
\begin{list}{}{} \item
|
|
\mbox{}\verb@@\\
|
|
\mbox{}\verb@/*----------------------------------------------------------------------------@\\
|
|
\mbox{}\verb@ M E S U R E@\\
|
|
\mbox{}\verb@@\\
|
|
\mbox{}\verb@ A SICS object for doing four circle measurements with a single@\\
|
|
\mbox{}\verb@ counter. @\\
|
|
\mbox{}\verb@@\\
|
|
\mbox{}\verb@ copyright: see copyright.h@\\
|
|
\mbox{}\verb@@\\
|
|
\mbox{}\verb@ Mark Koennecke, April 1998@\\
|
|
\mbox{}\verb@ Heavily reworked: Mark Koennecke, February-March 2005 @\\
|
|
\mbox{}\verb@---------------------------------------------------------------------------*/@\\
|
|
\mbox{}\verb@#ifndef SICSMESURE@\\
|
|
\mbox{}\verb@#define SICSMESURE@\\
|
|
\mbox{}\verb@@$\langle$mesureint {\footnotesize ?}$\rangle$\verb@@\\
|
|
\mbox{}\verb@#endif@\\
|
|
\mbox{}\verb@@$\diamond$
|
|
\end{list}
|
|
\vspace{-2ex}
|
|
\end{minipage}\\[4ex]
|
|
\end{flushleft}
|
|
\begin{flushleft} \small
|
|
\begin{minipage}{\linewidth} \label{scrap4}
|
|
\verb@"fourtable.h"@ {\footnotesize ? }$\equiv$
|
|
\vspace{-1ex}
|
|
\begin{list}{}{} \item
|
|
\mbox{}\verb@@\\
|
|
\mbox{}\verb@/*---------------------------------------------------------------------------@\\
|
|
\mbox{}\verb@ F O U R T A B L E@\\
|
|
\mbox{}\verb@@\\
|
|
\mbox{}\verb@ A SICS object which holds the variation of scan parameters for four circle@\\
|
|
\mbox{}\verb@ reflection list measurements.@\\
|
|
\mbox{}\verb@ copyright: see copyright.h@\\
|
|
\mbox{}\verb@@\\
|
|
\mbox{}\verb@ Mark Koennecke, February 2005@\\
|
|
\mbox{}\verb@---------------------------------------------------------------------------*/@\\
|
|
\mbox{}\verb@#ifndef FOURTABLE@\\
|
|
\mbox{}\verb@#define FOURTABLE@\\
|
|
\mbox{}\verb@@$\langle$fourtableint {\footnotesize ?}$\rangle$\verb@@\\
|
|
\mbox{}\verb@#endif@\\
|
|
\mbox{}\verb@@$\diamond$
|
|
\end{list}
|
|
\vspace{-2ex}
|
|
\end{minipage}\\[4ex]
|
|
\end{flushleft}
|