FOX/ObjCryst++  1.10.X (development)
ObjCryst::RecUnitCell Class Reference

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)
 light-weight class storing the reciprocal space unitcell
 
 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. More...
 
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. More...
 
std::vector< float > DirectUnitCell (const bool equiv=false) const
 Compute real space unit cell from reciprocal one. More...
 

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. More...
 
float zero
 
CrystalSystem mlattice
 
CrystalCentering mCentering
 

Detailed Description

Lightweight class describing the reciprocal unit cell, for the fast computation of d*_hkl^2.

Definition at line 58 of file Indexing.h.

Member Function Documentation

vector< float > ObjCryst::RecUnitCell::DirectUnitCell ( const bool  equiv = false) const

Compute real space unit cell from reciprocal one.

Parameters
equivif 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.

Definition at line 562 of file Indexing.cpp.

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.

Definition at line 106 of file Indexing.cpp.

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

Definition at line 454 of file Indexing.cpp.

Member Data Documentation

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)

Definition at line 104 of file Indexing.h.


The documentation for this class was generated from the following files: