ObjCryst++
1.5CVS
|
Lightweight class describing the reciprocal unit cell, for the fast computation of d*_hkl^2. More...
Public Member Functions | |
RecUnitCell (const float zero=0, const float par0=0, const float par1=0, const float par2=0, const float par3=0, const float par4=0, const float par5=0, CrystalSystem lattice=CUBIC, const CrystalCentering cent=LATTICE_P) | |
RecUnitCell (const RecUnitCell &old) | |
void | operator= (const RecUnitCell &rhs) |
float | hkl2d (const float h, const float k, const float l, REAL *derivpar=NULL, const unsigned int derivhkl=0) const |
Compute d*^2 for hkl reflection if deriv != -1, compute derivate versus the corresponding parameter. | |
void | hkl2d_delta (const float h, const float k, const float l, const RecUnitCell &delta, float &dmin, float &dmax) const |
Compute d*^2 for one hkl reflection: this functions computes a d*^2 range (min,max) for a given range of unit cell parameter (given in the delta parameter) around the current parameters. | |
std::vector< float > | DirectUnitCell (const bool equiv=false) const |
Compute real space unit cell from reciprocal one. |
Public Attributes | |
REAL | par [7] |
The 6 parameters defining 1/d_hkl^2 = d*_hkl^2, for different crystal classes, from: d*_hkl^2 = zero + a*^2 h^2 + b*^2 k^2 + c*^2 l^2 + 2 a*.b* hk + 2 b*.c* kl + 2 a*.c* hl. | |
float | zero |
CrystalSystem | mlattice |
CrystalCentering | mCentering |
Lightweight class describing the reciprocal unit cell, for the fast computation of d*_hkl^2.
std::vector<float> ObjCryst::RecUnitCell::DirectUnitCell | ( | const bool | equiv = false | ) | const |
Compute real space unit cell from reciprocal one.
equiv,: | if true, return real unit cell equivalent to the one computed from the reciprocal one, so that alpha, beta and gamma are larger or equal to pi/2, and minimum. This is done by adding multiples of a to b and multiples of a and b to c. |
float ObjCryst::RecUnitCell::hkl2d | ( | const float | h, |
const float | k, | ||
const float | l, | ||
REAL * | derivpar = NULL , |
||
const unsigned int | derivhkl = 0 |
||
) | const |
Compute d*^2 for hkl reflection if deriv != -1, compute derivate versus the corresponding parameter.
If derivhkl=1,2,3, compute derivative versus h,k or l.
void ObjCryst::RecUnitCell::hkl2d_delta | ( | const float | h, |
const float | k, | ||
const float | l, | ||
const RecUnitCell & | delta, | ||
float & | dmin, | ||
float & | dmax | ||
) | const |
Compute d*^2 for one hkl reflection: this functions computes a d*^2 range (min,max) for a given range of unit cell parameter (given in the delta parameter) around the current parameters.
Used for DicVol algorithm
REAL ObjCryst::RecUnitCell::par[7] |
The 6 parameters defining 1/d_hkl^2 = d*_hkl^2, for different crystal classes, from: d*_hkl^2 = zero + a*^2 h^2 + b*^2 k^2 + c*^2 l^2 + 2 a*.b* hk + 2 b*.c* kl + 2 a*.c* hl.
for triclinic: d*_hkl^2 = par[0] + par[1] h^2 + par[1] k^2 + par[2]^2 l^2 + par[3] hk + par[4] kl + par[5] hl for monoclinic: d*_hkl^2 = zero + par[0]^2 h^2 + par[1]^2 k^2 + par[2]^2 l^2 + par[0]*par[2]*par[3] hl for orthorombic: d*_hkl^2 = zero + par[0]^2 h^2 + par[1]^2 k^2 + par[2]^2 l^2 for hexagonal: d*_hkl^2 = zero + par[0]^2 h^2 + par[0]^2 k^2 + par[2]^2 l^2 + sqrt(3)/2*par[0]^2 hk for rhomboedral: d*_hkl^2 = zero + par[0]^2 h^2 + par[1]^2 k^2 + par[2]^2 l^2 + par[3] (hk + kl + hl) for quadratic: d*_hkl^2 = zero + par[0]^2 h^2 + par[0]^2 k^2 + par[1]^2 l^2 for cubic d*_hkl^2 = zero + par[0]^2 (h^2 + k^2 + l^2)