Most of these items should map onto data which can be stored in ImageCIF or Nexus format files. Where possible we should try to translate or like these parameters to the same ones in Nexus/ImageCIF/EDNA etc. Please compare to: 1
Lambda: AA, double. Wavelength of the radiation
Energy: keV, double [should be 12.3985/Lambda for x-rays.]
radiation_type: x-ray is assumed. Could be neutrons or electrons too.
Optional but sometimes useful parameters:
beam_divergence, beam polarisation
bandpass (did you do a laue experiment?)
Facilities to treat extinction/absorbtion?
Facilities to record incident beam profiles.
Geometry:
n_det_positions; number of detector positions
*det_pos;
Diffractometer_axes (translations+rotations)
Det_Pos:
*det_type; Detector type, Detector
t; tilt of detector 3x3 matrix, OR,
tilt_x; tilt around the x laboratory axis (radians)
tilt_y; tilt around the y laboratory axis (radians)
tilt_z; tilt around the z laboratory axis (radians)
r; translation of detector; 3x1 double, OR,
distance; distance parallel to laboratory x from diffractometer
rotation axis to detector plane
R; Rotation of detector 3x3 matrix [is this implemented somewhere yet?]
cen; beam centre (pixels and or mm)
place detector with beam centre at diffractometer centre of rotation:
tilt it with tilt matrix.
translate it with vector.
rotate it (eg: on a two theta arm).
Detector:
npx: number of pixels in x
npy: number of pixels in y
psx: pixel size in x [length]
psy: pixel size in y [length]
spatial disortion, gain, overload, linearity, offset.
active region.
Crystallography:
sp_obj; space group object, spg;
a;
b;
c;
alpha;
beta;
gamma;
B; B matrix 3x3, double
B_type; Convention for B, string
g; reciprocal space metric tensor (used for 1/d = h.g.h). 3x3 double.
n_hkl_fam: number of hkl families
*hklfam; hkl family
or:
d_star_limit; double. Give all hkls up to this limit. (units 1/d)
hkls[] ; all hkl peaks (3x1 integer) up to d_star_limit
spg:
function integer sp_id() ; id for graindex
functions to get symmetry operations (rotations 3x3 + translations 3x1)
functions to create from user info (eg Fm3m)
hklfam:
d_spacing: double
*hkl; list nx3, integers
Bhkl; ????
Bhkl_norm; ????
Grain:
UB; matrix converting scattering vectors <---> hkls
UBI; inverse of the UB matrix
cms; center of mass of grain w.r.t center of rotation, double 3x1
scale_factor ; double, to apply to compute intensities of reflections.
n_rec_vec; number of reciprocal vectors, integer
*rec_vec; set of measurements assigned to the grain
completeness; found measurements/expected measurements, double
uniqueness (maybe); double
volume; grain volume, double
r; rodrigues vector 3x1 double
... which is defined as ...
U; orientation matrix, 3x3 double
... which is defined as ...
phi; euler angles 3x1 double;
... which are defined as ...
rec_vec:
gx,gy,gx ; g-vectors
g_type; units, string, one of "2pi/d", "1/d", "sin(theta)/lambda" etc
tth; double
eta; double
omega[]; list of diffractometer angles, double[]
lor_fact; lorentz factor
Integrated Intensity; double
hkl[]; assigned during indexing; 3x1 integer
list allows multiple grains to claim a peak (eg: twins)
*diff_spot; pointer to diffaction spot; Diff_spot
Diff_spot:
cms_det; centre of mass in the detector 2x1 double;
cms_omega; centre of mass in omega, double;
Int_tot; Integrated intensity, double
max/min intensity, position in x/y/angle
background
shape
TODO: