22 #ifndef _OBJCRYST_SPACEGROUP_H_
23 #define _OBJCRYST_SPACEGROUP_H_
25 #include "ObjCryst/CrystVector/CrystVector.h"
27 #include "ObjCryst/ObjCryst/General.h"
28 #include "ObjCryst/RefinableObj/RefinableObj.h"
32 namespace cctbx{
namespace sgtbx{
class space_group;}}
74 REAL mXmin,mXmax,mYmin,mYmax,mZmin,mZmax;
201 const bool noCenter=
false,
const bool noTransl=
false,
202 const bool noIdentical=
false)
const;
221 void GetSymmetric(
unsigned int i, REAL &x, REAL &y, REAL &z,
222 const bool noCenter=
false,
const bool noTransl=
false,
223 const bool derivative=
false)
const;
231 int GetNbSymmetrics(
const bool noCenter=
false,
const bool noTransl=
false)
const;
242 const cctbx::sgtbx::space_group&
GetCCTbxSpg()
const;
256 unsigned int AreReflEquiv(
const REAL h1,
const REAL k1,
const REAL l1,
257 const REAL h2,
const REAL k2,
const REAL l2)
const;
271 CrystMatrix_REAL
GetAllEquivRefl(
const REAL h,
const REAL k,
const REAL l,
272 const bool excludeFriedelMate=
false,
273 const bool forceFriedelLaw=
false,
274 const REAL sf_re=0,
const REAL sf_im=0)
const;
278 bool IsReflCentric(
const REAL h,
const REAL k,
const REAL l)
const;
346 #endif //_OBJCRYST_SPACEGROUP_H_
std::vector< TRx > mvTrans
Store floating-point translation vectors for faster use.
unsigned int AreReflEquiv(const REAL h1, const REAL k1, const REAL l1, const REAL h2, const REAL k2, const REAL l2) const
Are these reflections equivalent ?
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 positi...
const cctbx::sgtbx::space_group & GetCCTbxSpg() const
Get the underlying cctbx Spacegroup object.
const RefinableObjClock & GetClockSpaceGroup() const
Get the SpaceGroup Clock (corresponding to the time of the initialization of the SpaceGroup) ...
char mExtension
Extension to space group symbol (1,2:origin choice ; R,H=rhomboedral/hexagonal)
std::vector< SMx > mvSym
Store floating-point matrices for faster use.
SpaceGroup()
Default Constructor (initializes in P1)
Struct to store trans matrix.
We need to record exactly when refinable objects have been modified for the last time (to avoid re-co...
CrystVector_REAL GetInversionCenter() const
Get the inversion center.
unsigned long mNbTrans
Number of lattice translations, including (0,0,0).
bool mIsInversionCenterAtOrigin
Is center of symmetry at the origin ?
bool IsCentrosymmetric() const
Is the crystal centrosymmetric ?
bool HasInversionCenter() const
Is centrosymmetric ?
unsigned int GetUniqueAxis() const
Which is the unique axis (for monoclinic space groups )
const string & GetName() const
Get the name of this spacegroup (its name, as supplied initially by the calling program or user) ...
unsigned long mNbSym
Number of symmetry operations (excluding center, and translations).
void SetSpaceGroup(const SpaceGroup &spg)
Assign a SpaceGroup and generate the corrsponding Xmax, Ymax, ZMax.
void GetSymmetric(unsigned int i, REAL &x, REAL &y, REAL &z, const bool noCenter=false, const bool noTransl=false, const bool derivative=false) const
Get all equivalent positions of a (xyz) position.
int GetNbTranslationVectors() const
Number of translation vectors (1 for 'P' cells, 2 for 'I', 4 for 'F',etc..)
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.
const AsymmetricUnit & GetAsymUnit() const
Get the AsymmetricUnit for this spacegroup.
The crystallographic space group, and the cell choice.
unsigned long mSpgNumber
SpaceGroup Number.
unsigned int mUniqueAxisId
Unique axis number (0=a,1=b,2=c)
bool IsReflCentric(const REAL h, const REAL k, const REAL l) const
Is the reflection centric ?
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.
const std::vector< SpaceGroup::SMx > & GetSymmetryOperations() const
Get all symmetry operations stored in vector of struct SMx.
cctbx::sgtbx::space_group * mpCCTbxSpaceGroup
SgOps structure for this spacegroup.
CrystMatrix_REAL GetAllEquivRefl(const REAL h, const REAL k, const REAL l, const bool excludeFriedelMate=false, const bool forceFriedelLaw=false, const REAL sf_re=0, const REAL sf_im=0) const
Get the list of all equivalent reflections.
bool IsInAsymmetricUnit(const REAL x, const REAL y, const REAL z) const
Test if (x,y,z) is in the asymmetric unit.
The basic description of spacegroup asymmetric unit.
Struct to store rot+trans matrix.
bool IsInversionCenterAtOrigin() const
Is the center of symmetry at the origin ?
unsigned int GetExpectedIntensityFactor(const REAL h, const REAL k, const REAL l) const
Get the "expected intensity factor" for a given reflection.
bool IsReflSystematicAbsent(const REAL h, const REAL k, const REAL l) const
Is the reflection systematically absent ?
The namespace which includes all objects (crystallographic and algorithmic) in ObjCryst++.
AsymmetricUnit()
Default Constructor.
RefinableObjClock mClock
The Spacegroup clock.
void ChangeSpaceGroup(const string &spgId)
Change the Spacegroup.
bool mHasInversionCenter
Is spacegroup centrosymmetric ?
int GetSpaceGroupNumber() const
Id number of the spacegroup.
void Print() const
Prints a description of the spacegroup (symbol, properties).
void ChangeToAsymmetricUnit(REAL x, REAL y, REAL z) const
Move (x,y,z) coordinates to their equivalent in the asym unit.
AsymmetricUnit mAsymmetricUnit
The spacegroup asymmetric unit.
void InitSpaceGroup(const string &spgId)
Init the spaceGroup object from its name.
string mId
Spacegroup's name ( 'I422', 'D2^8','230') Maybe we should only store the Hermann-Mauguin symbol...
char GetExtension() const
Extension to space group symbol ('1','2':origin choice ; 'R','H'=rhomboedral/hexagonal) ...
const std::vector< SpaceGroup::TRx > & GetTranslationVectors() const
Return all Translation Vectors, as a 3 columns-array.