/*-------------------------------------------------------------------------- S E L E C T O R This is an object to support a Crystal-Monochromator with possibly two bending dimensions. The monochromator can be used in two modes: to adjust wavelength or to adjust energy for those triple axis people. This is reflected in a code structure like this: There is the actual device, the monochromator, as given here. This mono supports some configuration commands. And provides basic routines to run the monochromator common to the second part. The second part are two variables, wavelength and energy, which are configured with a monochromator to act upon. See file selvar.* for more details. Mark Koennecke, January 1996 copyright: see implementation file. ----------------------------------------------------------------------------*/ #ifndef SICSMONO #define SICSMONO #include "motor.h" typedef struct __SicsSelector *pSicsSelector; /* birth and death: The Selector himself */ pSicsSelector CreateSelector(char *name, pMotor pTheta, pMotor pTwoTheta, pMotor pBend1, pMotor pBend2); int MonoInit(SConnection * pCon, SicsInterp * pSics, void *pData, int argc, char *argv[]); void DeleteSelector(void *self); /* Action! */ int MonoAction(SConnection * pCon, SicsInterp * pSics, void *pData, int argc, char *argv[]); int MonoRun(pSicsSelector self, SConnection * pCon, float fWaveLength); struct __ComEntry *GetSelectorMotors(pSicsSelector self, SConnection * pCon, float fNew); int MonoLimits(pSicsSelector self, float fWaveLength, char *error, int iErrLen); int MonoCheck(pSicsSelector self, SConnection * pCon); int MonoHalt(pSicsSelector self); float GetMonoPosition(pSicsSelector self, SConnection * pCon); char *MonoGetType(pSicsSelector self); int GetMonoPositions(pSicsSelector self, SConnection * pCon, float *fTheta, float *fTwtTh, float *fB1, float *fB2); #endif