Files
sics/doc/programmer/o2t.tex

42 lines
1.6 KiB
TeX

\subsection{Omega 2Theta}
This is an example for a simple virtual motor. It uses two motors and runs
the second one to exactly the double value of the first one. It can be used
to implement omega--two--theta (o2t) scans at reflectometers of four circle
diffractometers using the normal scan command.
The o2t module uses the following data structure:
\begin{verbatim}
typedef struct __SicsO2T {
pObjectDescriptor pDes;
pIDrivable pDrivInt;
pMotor pOmega;
pMotor pTheta;
} SicsO2T;
\end{verbatim}
The fields:
\begin{description}
\item[pDes] A pointer to the usual SICS object descriptor.
\item[pDrivInt] A pointer to the drivable interface implemented by this
variable.
\item[pOmega] A pointer to the first motor to use.
\item[pTheta] A pointer to the motor data structure of the second (double)
motor to use.
\end{description}
Most of this modules action lives in the drivable interface. The rest is
achieved through the following functions:
\begin{description}
\item[pSicsO2T MakeO2T(char *omega, char *theta, SicsInterp *pSics)] creates
a new o2t object from motors omega and theta. Returns NULL on failure and a
pointer to an o2t data structure on success.
\item[void DeleteO2T(void *pData)] deletes an o2t object.
\item[int CreateO2T(SConnection *pCon, SicsInterp *pSics, void *pData,\\
int argc, char *argv[])] The object factory function for o2t
objects.
\end{description}
Please note, that o2t is just a helper variable and can not be manipualted
from the SICS interpreter.