- Added missing files
This commit is contained in:
91
singlediff.h
Normal file
91
singlediff.h
Normal file
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* This header file defines the polymorphic functions required for
|
||||
* a single crystal diffractmeter, regardless of the geometry used.
|
||||
* This exists in order to support the multiple modes of the TRICS
|
||||
* instrument. But can be useful elsewhere. This code assumes that
|
||||
* all motor driving happens via a motorlist as defined in
|
||||
* motorlist.*
|
||||
*
|
||||
* copyright: see file COPYRIGHT
|
||||
*
|
||||
* Mark Koennecke, August 2008
|
||||
*/
|
||||
#ifndef SINGLEDIFF_H_
|
||||
#define SINGLEDIFF_H_
|
||||
#include "matrix/matrix.h"
|
||||
|
||||
#define REFERR -17001
|
||||
|
||||
/**
|
||||
* A polymorphic structure for single crystal calculations.
|
||||
*/
|
||||
typedef struct __SingleDiff {
|
||||
int motList; /** A list of associated real motors */
|
||||
void *userData; /** a pointer to a user data structure */
|
||||
MATRIX UB; /** The UB matrix */
|
||||
double lambda; /** The wavelength to use */
|
||||
double cell[6]; /** The unit cell */
|
||||
/**
|
||||
* \brief calculates the settings for an input reciprocal space
|
||||
* position hkl
|
||||
* \param self A pointer to this data structure
|
||||
* \param hkl The input reciprocal space position
|
||||
* \param settings The angles calculated.
|
||||
* \return 1 on success, 0 on error
|
||||
*/
|
||||
int (*calculateSettings) (struct __SingleDiff * self,
|
||||
double *hkl, double *settings);
|
||||
/**
|
||||
* \brief copy setting angles into motor list
|
||||
* \param self A pointer to this data structure
|
||||
* \param settings The angles to prime the motor list with
|
||||
* \return 1 on success, 0 on error
|
||||
*/
|
||||
int (*settingsToList) (struct __SingleDiff * self, double *settings);
|
||||
/**
|
||||
* \brief read all angles and convert to reciprocal space
|
||||
* \param self A pointer to this data structure
|
||||
* \param Result hkl values
|
||||
* \return 1 on success, 0 on error
|
||||
*/
|
||||
int (*hklFromAngles) (struct __SingleDiff * self, double *hkl);
|
||||
/**
|
||||
* \brief Take angles given and convert to reciprocal space
|
||||
* \param self A pointer to this data structure
|
||||
* \param Result hkl values
|
||||
* \return 1 on success, 0 on error
|
||||
*/
|
||||
int (*hklFromAnglesGiven) (struct __SingleDiff * self, double *settings,
|
||||
double *hkl);
|
||||
/**
|
||||
* \brief calculate a UB matrix from two reflections (and the cell)
|
||||
* \param self A pointer to this data structure
|
||||
* \param refid1 first reflection ID
|
||||
* \param refid2 second reflection ID
|
||||
* \return NULL on error, a matrix else
|
||||
*/
|
||||
MATRIX(*calcUBFromTwo) (struct __SingleDiff * self,
|
||||
char *refid1, char *refid2, int *err);
|
||||
/**
|
||||
* \brief calculate a UB matrix from three reflections
|
||||
* \param self A pointer to this data structure
|
||||
* \param refid1 first reflection ID
|
||||
* \param refid2 second reflection ID
|
||||
* \param refid3 third reflection ID
|
||||
* \return NULL on error, a matrix else
|
||||
*/
|
||||
MATRIX(*calcUBFromThree) (struct __SingleDiff * self,
|
||||
char *refid1, char *refid2, char *refid3,
|
||||
int *err);
|
||||
/**
|
||||
* \brief calculate the scattering vector from the angles.
|
||||
* \param refid The id of the reflection to calculate the
|
||||
* scattering vector for
|
||||
* \param z1 output scattering vector
|
||||
* \return 1 on success, o on fail
|
||||
*/
|
||||
int (*calcZ1) (struct __SingleDiff * self, char *refid, double z1[3]);
|
||||
} SingleDiff, *pSingleDiff;
|
||||
|
||||
MATRIX calculateScatteringVector(pSingleDiff pSingle, double hkl[3]);
|
||||
#endif /*SINGLEDIFF_H_ */
|
||||
Reference in New Issue
Block a user