Refine crystal orientation and lattice parameters for an sqw or d0d/d1d/...d4d object >> [rlu_corr,alatt,angdeg] = refine_crystal(w, rlu0, rlu) >> [rlu_corr,alatt,angdeg] = refine_crystal(w, rlu0, rlu, alatt_init, angdeg_init) In addition, there are keyword arguments to control the refinement e.g. >> [rlu_corr,alatt,angdeg] = refine_crystal(..., 'fix_angdeg') >> [rlu_corr,alatt,angdeg] = refine_crystal(..., 'free_alatt', [1,0,1]) In all cases, further output arguments can be returned: >> [rlu_corr,alatt,angdeg,rotmat,distance,rotangle] = refine_crystal(...) This function is used to get a matrix that relates the coordinates of a vector (h0,k0,l0) as expressed in an initial or reference lattice to the coordinates (h,k,l) in the true lattice. It does this by taking a set of points (h0,k0,l0) and the corresponding set of true indicies (h,k,l), and refining the lattice parameters and orientation. The refined lattice parameters are also returned. The output from this function can be used to correct the crystal orientation and lattice parameters in Horace. Type >> help change_crystal_horace for more details. Input: ------ w sqw object rlu0 Positions of reciprocal lattice vectors as h,k,l in reference lattice (n x 3 matrix, n=no. reflections) rlu True indexes of reciprocal lattice vectors (n x 3 matrix) Optional input parameter: alatt_init Initial lattice parameters for start of refinement [a,b,c] (Angstroms) angdeg_init Initial lattice angles for start of refinement [alf,bet,gam] (deg) If one or both of alatt_init and angdeg_init are not given, then the corresponding reference lattice parmaeters are taken as the initial values for refinement. Keywords (more than one is permitted if not inconsistent) fix_lattice Fix all lattice parameters [a,b,c,alf,bet,gam] i.e. only allow crystal orientation to be refined fix_alatt Fix [a,b,c] but allow lattice angles alf, bet and gam to be refined together with crystal orientation fix_angdeg Fix [alf,bet,gam] but allow pattice parameters [a,b,c] to be refined together with crystal orientation fix_alatt_ratio Fix the ratio of the lattice parameters as given by the values in lattice_init, but allow the overall scale of the lattice to be refined together with crystal orientation fix_orient Fix the crystal orientation i.e. only refine lattice parameters Finer control of refoinement of lattice parameters: instead of fix_lattice, fix_angdeg,... use free_alatt Array length 3 of zeros or ones, 1=free, 0=fixed e.g. ...,'free_alatt',[1,0,1],... allows only lattice parameter b to vary free_angdeg Array length 3 of zeros or ones, 1=free, 0=fixed e.g. ...,'free_lattice',[1,1,0],... fixes lattice angle gam buts allows alf and bet to vary Output: ------- rlu_corr Conversion matrix to relate notional rlu to true rlu, accounting for the the refined crystal lattice parameters and orientation qhkl(i) = rlu_corr(i,j) * qhkl_0(j) alatt Refined lattice parameters [a,b,c] (Angstroms) angdeg Refined lattice angles [alf,bet,gam] (degrees) rotmat Rotation matrix that relates crystal Cartesian coordinate frame of the refined lattice and orientation as a rotation of the initial crystal frame. Coordinates in the two frames are related by v(i)= rotmat(i,j)*v0(j) distance Distances between peak positions and points given by true indexes, in input argument rlu, in the refined crystal lattice. (Ang^-1) rotangle Angle of rotation corresponding to rotmat (to give a measure of the misorientation) (degrees) The output argument rlu_corr, together with the input alatt0 and angdeg0, are sufficient to compute the other output arguments. That is why Horace functions that use the output of this function will generally only require rlu_corr. EXAMPLES Want to refine crystal orientation only: >> rlu_corr=refine_crystal (rlu0, alatt0, angdeg0, rlu, 'fix_lattice') Want to refine lattice parameters a,b,c as well as crystal orientation: >> [rlu_corr,alatt]=refine_crystal (rlu0, alatt0, angdeg0, rlu, 'fix_angdeg') % Overloaded methods: sqw/refine_crystal sqw/refine_crystal d4d/refine_crystal d3d/refine_crystal d2d/refine_crystal d1d/refine_crystal d0d/refine_crystal