Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   Namespace Members   Compound Members   Related Pages  

ObjCryst::SpaceGroup Class Reference

The crystallographic space group, and the cell choice. More...

#include <SpaceGroup.h>

List of all members.

Public Methods

 SpaceGroup ()
 Default Constructor (initializes in P1) You can use later SpaceGroup::ChangeSpaceGroup() to set the spacegroup.

 SpaceGroup (const string &spgId)
 Constructor with a specified spacegroup symbol or number. More...

 ~SpaceGroup ()
 Destructor.

void ChangeSpaceGroup (const string &spgId)
 Change the Spacegroup.

const string & GetName () const
 Get the name of this spacegroup (its name, as supplied initially by the calling program or user).

bool IsInAsymmetricUnit (const REAL x, const REAL y, const REAL z) const
 Test if a given scatterer at (x,y,z) is in the asymmetric unit.

void ChangeToAsymmetricUnit (REAL x, REAL y, REAL z) const
 Move (x,y,z) coordinates to their equivalent in the asym unit
Warning:
Not implemented yet.
More...


const AsymmetricUnitGetAsymUnit () const
 Get the AsymmetricUnit for this spacegroup.

int GetSpaceGroupNumber () const
 Id number of the spacegroup.

bool IsCentrosymmetric () const
 Is the crystal centrosymmetric ?

int GetNbTranslationVectors () const
 Number of translation vectors (1 for 'P' cells, 2 for 'I', 4 for 'F',etc..).

CrystMatrix_REAL GetTranslationVectors () const
 Return all Translation Vectors, as a 3 columns-array. More...

CrystMatrix_REAL GetAllSymmetrics (const REAL x, const REAL y, const REAL z, const bool noCenter=false, const bool noTransl=false, const bool noIdentical=false) const
 Get all equivalent positions of a (xyz) position. More...

int GetNbSymmetrics (const bool noCenter=false, const bool noTransl=false) const
 Return the number of equivalent positions in the spacegroup, ie the multilicity of the general position. More...

void Print () const
 Prints a description of the spacegroup (symbol, properties). More...

bool HasInversionCenter () const
 Is centrosymmetric ?

bool IsInversionCenterAtOrigin () const
 Is the center of symmetry at the origin ?

const T_SgOps & GetSgOps () const
 Get the SgOps structure. This will be removed when switching to cctbx.

const RefinableObjClockGetClockSpaceGroup () const
 Get the SpaceGroup Clock (corresponding to the time of the initialization of the SpaceGroup).

const T_HM_as_Hall & GetHM_as_Hall () const
 Access to the HM_As_Hall structure. This will be removed when switching to cctbx.

unsigned int GetUniqueAxis () const
 Which is the unique axis (for monoclinic space groups ).


Private Methods

void InitSpaceGroup (const string &spgId)
 Init the spaceGroup object from its name. More...


Private Attributes

string mId
 Spacegroup's name ( 'I422', 'D2^8','230') Maybe we should only store the Hermann-Mauguin symbol, rather than storing the string which was initially given by the user/program for the initialization.

T_SgOps mSgOps
 SgOps structure for this spacegroup. (Symmetry operations). More...

bool mHasInversionCenter
 Is spacegroup centrosymmetric ?

bool mIsInversionCenterAtOrigin
 Is center of symmetry at the origin ?

T_HM_as_Hall mHM_as_Hall
 SgOps structure for this spacegroup. (Symmetry operations). More...

AsymmetricUnit mAsymmetricUnit
 The spacegroup asymmetric unit.

RefinableObjClock mClock
 The Spacegroup clock.

unsigned int mUniqueAxisId
 Unique axis number (0=a,1=b,2=c).


Static Private Attributes

const bool mUseGeomStructFactor = false
 Use geometrical structure factor ? More...


Detailed Description

The crystallographic space group, and the cell choice.

This class includes functions to get basic information about the symmetries, as well as getting all symmetrics for a given position in a unit cell.

This class included a pointer to a function calculating the "geometrical structure factor" (ie the sum of sin() and cos() for all symetrics, as could be found in the old version of the (red) International Tables), which was used to speed up computation of structure factors by using pre-factorised formulas. This is not used anymore, since methods can be used to speed up computations.

This class uses R. Grosse-Kunstleve 'SgLite' package, which is part of the Pymol package : http://pymol.sourceforge.net/

\warning: the interface of the class will somewhat change when switching from sgLite to cctbx (http://cctbx.sourceforge.net). Particularly functions Spacegroup::GetSgOps() and Spacegroup::GetHM_as_Hall() will be removed.


Constructor & Destructor Documentation

ObjCryst::SpaceGroup::SpaceGroup const string &    spgId
 

Constructor with a specified spacegroup symbol or number.

Parameters:
spgId  The space group identifier, either an Hermann-Maugin, or Hall, or Schonflies symbol.


Member Function Documentation

void ObjCryst::SpaceGroup::ChangeToAsymmetricUnit REAL    x,
REAL    y,
REAL    z
const
 

Move (x,y,z) coordinates to their equivalent in the asym unit

Warning:
Not implemented yet.

Todo:
SpaceGroup::IsInAsymmetricUnit()

CrystMatrix_REAL ObjCryst::SpaceGroup::GetAllSymmetrics const REAL    x,
const REAL    y,
const REAL    z,
const bool    noCenter = false,
const bool    noTransl = false,
const bool    noIdentical = false
const
 

Get all equivalent positions of a (xyz) position.

Parameters:
x,y,z  fractional coordinates of the position
noCenter  if set to 'false' (the default), then the center of symmetry (if any) is used to generate ALL positions. If 'true', then only one half of equivalent positions are generated. This has no influence if the group is not centrosymmetric. (note Not generating symmetrical positions from center of symmetry is useful to speed up computation of structure factor, but is a bit tricky if the inversion is not at the origin. This is taken into account)
noTransl  if set to 'false' (the default), then translation are taken into account to generate all atom positions. This affect only body or face(s)-centered spacegroups.
noIdentical  if set to true, then atom in special positions will only return the distinct atomic positions. Currently two atoms are considered distinct if the difference for all of their fractionnal coordinates is less than 1e-5
Returns:
a 3-column (x,y,z) matrix with as many rows as symmetric atoms
Warning:
'special' positions are not taken into account. (ie an atom in special position will return duplicate entries. This may be corrected automatically later.) You can use the 'noIdentical' option for that,

int ObjCryst::SpaceGroup::GetNbSymmetrics const bool    noCenter = false,
const bool    noTransl = false
const
 

Return the number of equivalent positions in the spacegroup, ie the multilicity of the general position.

Parameters:
noCenter  if 'true', do not take into account the center of symmetry
noTransl  if 'true', do not take into account translations

CrystMatrix_REAL ObjCryst::SpaceGroup::GetTranslationVectors   const
 

Return all Translation Vectors, as a 3 columns-array.

The first vector is always [0,0,0]

Returns:
for a 'P' Cell, for a 'I' cell, and for a 'F' cell,etc...

void ObjCryst::SpaceGroup::InitSpaceGroup const string &    spgId [private]
 

Init the spaceGroup object from its name.

Initialize the SgOps & HM_as_Hall structures (SgLite), and set the function pointers to the functions used to compute the geometrical structure factors.

void ObjCryst::SpaceGroup::Print   const
 

Prints a description of the spacegroup (symbol, properties).

Todo:


Member Data Documentation

T_HM_as_Hall ObjCryst::SpaceGroup::mHM_as_Hall [private]
 

SgOps structure for this spacegroup. (Symmetry operations).

See sglite subdirectory for more information. This is (c) R. Gross-Kunstleve, part of PyMol software http://pymol.sourceforge.net/

T_SgOps ObjCryst::SpaceGroup::mSgOps [private]
 

SgOps structure for this spacegroup. (Symmetry operations).

See sglite subdirectory for more information. This is (c) R. Gross-Kunstleve, part of PyMol software http://pymol.sourceforge.net/

const bool ObjCryst::SpaceGroup::mUseGeomStructFactor = false [static, private]
 

Use geometrical structure factor ?

Deprecated:
when all atoms have an isotropic thermic factor, use a sophisticated formula to compute the structure factor for a given independent atom, instead of generating all symmetric positions and summing all contributions. This NOT USED CURRENTLY. Given the speed improvement obtained by using tabulated sine and cosines, the use of geometrical structure factors has become useless and will be removed from the class.


The documentation for this class was generated from the following file:
Generated on Tue Feb 5 17:37:26 2002 for ObjCryst++ by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001