Inheritance diagram for ObjCryst::ZScatterer:
Public Member Functions | |
ZScatterer (const string &name, Crystal &cryst, const REAL x=0., const REAL y=0., const REAL z=0., const REAL phi=0., const REAL chi=0., const REAL psi=0.) | |
ZScatterer constructor. | |
ZScatterer (const ZScatterer &old) | |
Copy constructor. | |
~ZScatterer () | |
virtual ZScatterer * | CreateCopy () const |
virtual const string & | GetClassName () const |
Name for this class ("RefinableObj", "Crystal",...). | |
void | AddAtom (const string &name, const ScatteringPower *pow, const long atomBond, const REAL bondLength, const long atomAngle, const REAL bondAngle, const long atomDihedral, const REAL dihedralAngle, const REAL popu=1.) |
Add an atom to the Zscatterer. | |
virtual int | GetNbComponent () const |
Number of components in the scatterer (eg number of point scatterers). | |
virtual const ScatteringComponentList & | GetScatteringComponentList () const |
Get the list of all scattering components for this scatterer. | |
virtual string | GetComponentName (const int i) const |
Name for the i-th component of this scatterer. | |
void | Print () const |
Print a single line of information about this scatterer. | |
REAL | GetPhi () const |
Access to phi parameter (overall orientation of the scatterer). | |
REAL | GetChi () const |
Access to chi parameter (overall orientation of the scatterer). | |
REAL | GetPsi () const |
Access to psi parameter (overall orientation of the scatterer). | |
void | SetPhi (const REAL) |
Access to phi parameter (overall orientation of the scatterer). | |
void | SetChi (const REAL) |
Access to chi parameter (overall orientation of the scatterer). | |
void | SetPsi (const REAL) |
Access to psi parameter (overall orientation of the scatterer). | |
REAL | GetZAtomX (const int i) const |
Get the X fractionnal coordinate of atom i. | |
REAL | GetZAtomY (const int i) const |
Get the Y fractionnal coordinate of atom i. | |
REAL | GetZAtomZ (const int i) const |
Get the Z fractionnal coordinate of atom i. | |
long | GetZBondAtom (const int i) const |
Index of the 1st atom used to define the i-th atom in the Z-Matrix (the one from which the bondlength is calculated). | |
long | GetZAngleAtom (const int i) const |
Index of the 2nd atom used to define the i-th atom in the Z-Matrix (the one from which the angle is calculated). | |
long | GetZDihedralAngleAtom (const int i) const |
Index of the 3rd atom used to define the i-th atom in the Z-Matrix (the one from which the dihedral angle is calculated). | |
REAL | GetZBondLength (const int i) const |
Const access to bondlength parameter, for the i-th row in the Z-Matrix. | |
REAL | GetZAngle (const int i) const |
Const access to the angle parameter, for the i-th row in the Z-Matrix. | |
REAL | GetZDihedralAngle (const int i) const |
Const access to the dihedral angle parameter, for the i-th row in the Z-Matrix. | |
void | SetZBondLength (const int i, const REAL) |
Access to bondlength parameter, for the i-th row in the Z-Matrix. | |
void | SetZAngle (const int i, const REAL) |
Access to the angle parameter, for the i-th row in the Z-Matrix. | |
void | SetZDihedralAngle (const int i, const REAL) |
Access to the dihedral angle parameter, for the i-th row in the Z-Matrix. | |
const ObjRegistry< ZAtom > & | GetZAtomRegistry () const |
Access to the registry of ZAtoms. | |
virtual ostream & | POVRayDescription (ostream &os, const CrystalPOVRayOptions &options) const |
Not implemented for ZScatterer. | |
virtual void | GLInitDisplayList (const bool onlyIndependentAtoms=false, const REAL xMin=-.1, const REAL xMax=1.1, const REAL yMin=-.1, const REAL yMax=1.1, const REAL zMin=-.1, const REAL zMax=1.1, const bool displayEnantiomer=false, const bool displayNames=false) const |
virtual void | SetUseGlobalScatteringPower (const bool useIt) |
use a Global scattering power for this scatterer ? | |
virtual void | XMLOutput (ostream &os, int indent=0) const |
Output to stream in well-formed XML. | |
virtual void | XMLInput (istream &is, const XMLCrystTag &tag) |
Input From stream. | |
virtual void | GetGeneGroup (const RefinableObj &obj, CrystVector_uint &groupIndex, unsigned int &firstGroup) const |
Get the gene group assigned to each parameter. | |
virtual void | GlobalOptRandomMove (const REAL mutationAmplitude, const RefParType *type=gpRefParTypeObjCryst) |
Make a random move of the current configuration. | |
const CrystVector_REAL & | GetXCoord () const |
Get the list of all ZAtom cartesian x coordinates. | |
const CrystVector_REAL & | GetYCoord () const |
Get the list of all ZAtom cartesian x coordinates. | |
const CrystVector_REAL & | GetZCoord () const |
Get the list of all ZAtom cartesian x coordinates. | |
virtual void | EndOptimization () |
This should be called by any optimization class at the end of an optimization. | |
void | ImportFenskeHallZMatrix (istream &is, bool named=false) |
Import "Fenske-Hall" ZMatrix file (fhz in the babel program http://www.eyesopen.com/babel.html\ example: use "./babel -ipdb foo.pdb -ofhz foo.fhz -d", to convert a pdb file to a Z-Matrix file (the -d removes hydrogen atoms). | |
void | ExportFenskeHallZMatrix (ostream &os) |
Export to Fenske-Hall ZMatrix file. | |
void | SetCenterAtomIndex (const unsigned int) |
Set the index of the central atom (around which the rotation is made). | |
unsigned int | GetCenterAtomIndex () const |
Get the index of the central atom (around which the rotation is made). | |
Protected Member Functions | |
void | UpdateCoordinates () const |
Update the atom coordinates (in real units, in Angstroems). | |
void | UpdateScattCompList () const |
Update the scattering component list, ie compute all atom positions from the bonds/angles/dihedral angles, and convert the coordinates to fractionnal coordinates of the Crystal. | |
Protected Attributes | |
CrystMatrix_long | m3DDisplayIndex |
For 3D display of the structure, bonds, triangular and quadric faces can be displayed. | |
ScatteringComponentList | mScattCompList |
The list of scattering components. | |
long | mNbAtom |
Total number of atoms in the structure. | |
Private Member Functions | |
virtual void | InitRefParList () |
Prepare refinable parameters for the scatterer object. | |
Private Attributes | |
long | mNbDummyAtom |
Number of "dummy" atoms in the structure. | |
CrystVector_int | mComponentIndex |
Index of atoms in the ScatteringComponentList. | |
REAL | mPhi |
Angles giving the orientation of the ZScatterer (stored in radian). | |
REAL | mChi |
Angles giving the orientation of the ZScatterer (stored in radian). | |
REAL | mPsi |
Angles giving the orientation of the ZScatterer (stored in radian). | |
ObjRegistry< ZAtom > | mZAtomRegistry |
Registry for ZAtoms in this Scatterer. | |
long | mCenterAtomIndex |
Index of the atom used as a pivot (the scatterer is rotated around this atom). | |
CrystMatrix_REAL | mPhiChiPsiMatrix |
Rotation matrix for the orientation of the scatterer. | |
bool | mUseGlobalScattPow |
Does the ZScatterer use a global scattering power ? | |
GlobalScatteringPower * | mpGlobalScattPow |
the global scattering power used, if mUseGlobalScattPow=true | |
CrystVector_REAL | mXCoord |
Storage for Cartesian coordinates. | |
CrystVector_REAL | mYCoord |
Storage for Cartesian coordinates. | |
CrystVector_REAL | mZCoord |
Storage for Cartesian coordinates. | |
RefinableObjClock | mClockCoord |
Last time the cartesian coordinates were computed. | |
ZMoveMinimizer * | mpZMoveMinimizer |
This is used to describe inorganic polyhedras, as well as molecules. ####################################################################
|
ZScatterer constructor.
|
|
Copy constructor.
|
|
|
|
Add an atom to the Zscatterer. If &ScatteringPower=0, then it is a 'dummy' atom and will be ignored for any scattering analysis. The 'name' supplied may not be respected, and can be replaced by 'ZScatterer_name'+'AtomNum'+'ScattPowName' |
|
For internal use only. so-called Virtual copy constructor, needed to make copies of arrays of Scatterers Implements ObjCryst::Scatterer. Reimplemented in ObjCryst::ZPolyhedron. |
|
This should be called by any optimization class at the end of an optimization. This also affects all sub-objects.
Reimplemented from ObjCryst::RefinableObj. |
|
Export to Fenske-Hall ZMatrix file.
|
|
Get the index of the central atom (around which the rotation is made).
|
|
Access to chi parameter (overall orientation of the scatterer).
|
|
Name for this class ("RefinableObj", "Crystal",...). This is only useful to distinguish different classes when picking up objects from the RefinableObj Global Registry Reimplemented from ObjCryst::Scatterer. |
|
Name for the i-th component of this scatterer. If the component is an Atom, Then the name is that of the atom. Else, it is the name of the scatterer plus the component number in the scatterer plus the name of the ScatteringPower.
Implements ObjCryst::Scatterer. |
|
Get the gene group assigned to each parameter. Each parameter (a gene in terms of genetic algorithms) can be assigned to a gene group. Thus when mating two configurations, genes will be exchanged by groups. By default (in the base RefinabeObj class), each parameter is alone in its group. Derived classes can group genes for a better s** life. The number identifying a gene group only has a meaning in a given object. It can also change on subsequent calls, and thus is not unique.
Reimplemented from ObjCryst::RefinableObj. |
|
Number of components in the scatterer (eg number of point scatterers).
Implements ObjCryst::Scatterer. |
|
Access to phi parameter (overall orientation of the scatterer).
|
|
Access to psi parameter (overall orientation of the scatterer).
|
|
Get the list of all scattering components for this scatterer. This is the most important function of this class, giving the list of scattering positions along with the associated ScatteringPower. Implements ObjCryst::Scatterer. |
|
Get the list of all ZAtom cartesian x coordinates.
|
|
Get the list of all ZAtom cartesian x coordinates.
|
|
Const access to the angle parameter, for the i-th row in the Z-Matrix.
|
|
Index of the 2nd atom used to define the i-th atom in the Z-Matrix (the one from which the angle is calculated).
|
|
Access to the registry of ZAtoms.
|
|
Get the X fractionnal coordinate of atom i.
|
|
Get the Y fractionnal coordinate of atom i.
|
|
Get the Z fractionnal coordinate of atom i.
|
|
Index of the 1st atom used to define the i-th atom in the Z-Matrix (the one from which the bondlength is calculated).
|
|
Const access to bondlength parameter, for the i-th row in the Z-Matrix.
|
|
Get the list of all ZAtom cartesian x coordinates.
|
|
Const access to the dihedral angle parameter, for the i-th row in the Z-Matrix.
|
|
Index of the 3rd atom used to define the i-th atom in the Z-Matrix (the one from which the dihedral angle is calculated).
|
|
For internal use only. Create an OpenGL Display List of the scatterer. This should only be called by a Crystal object.
Implements ObjCryst::Scatterer. |
|
Make a random move of the current configuration. This is for global optimization algorithms. the moves for each parameter are less than their global optimization step, multiplied by the mutation amplitude.
Reimplemented from ObjCryst::RefinableObj. |
|
Import "Fenske-Hall" ZMatrix file (fhz in the babel program http://www.eyesopen.com/babel.html\ example: use "./babel -ipdb foo.pdb -ofhz foo.fhz -d", to convert a pdb file to a Z-Matrix file (the -d removes hydrogen atoms).
|
|
Prepare refinable parameters for the scatterer object.
Implements ObjCryst::Scatterer. |
|
Not implemented for ZScatterer.
Implements ObjCryst::Scatterer. |
|
Print a single line of information about this scatterer.
Implements ObjCryst::Scatterer. |
|
Set the index of the central atom (around which the rotation is made).
|
|
Access to chi parameter (overall orientation of the scatterer).
|
|
Access to phi parameter (overall orientation of the scatterer).
|
|
Access to psi parameter (overall orientation of the scatterer).
|
|
use a Global scattering power for this scatterer ? If true, then the overall scattering power of this ZScatterer will be approximated to an isotropic scattering power computed for this scatterer. Of course, only use this if the "isotropic" approximation is reasonable for this scatterer (typically true for 'large' polyhedra). See GlobalScatteringPower.
|
|
Access to the angle parameter, for the i-th row in the Z-Matrix.
|
|
Access to bondlength parameter, for the i-th row in the Z-Matrix.
|
|
Access to the dihedral angle parameter, for the i-th row in the Z-Matrix.
|
|
Update the atom coordinates (in real units, in Angstroems). This takes into account the translation and global rotation of the scatterer (ie this does not generate 'internal coordinates). |
|
Update the scattering component list, ie compute all atom positions from the bonds/angles/dihedral angles, and convert the coordinates to fractionnal coordinates of the Crystal.
|
|
Input From stream.
Reimplemented from ObjCryst::RefinableObj. |
|
Output to stream in well-formed XML.
Reimplemented from ObjCryst::RefinableObj. |
|
For 3D display of the structure, bonds, triangular and quadric faces can be displayed. This matrix determines what is drawn. This is a 5-column matrix. The first column indicates the type of drawing (0: : nothing, 1: display the atom (a sphere), 2: bond, 3: triangular face, 4: quadric face) the other columns indicate the index of the atoms involved in the drawing (2 atoms for a bond, 3 for....) If the matrix is empty only the individual atoms are displayed.
|
|
Index of the atom used as a pivot (the scatterer is rotated around this atom). This should more or less be at the center of the Scatterer. |
|
Angles giving the orientation of the ZScatterer (stored in radian). The position of any atom can be transformed from internal coordinates (orthonormal coordinates derived from the ZMatrix, with first atom at (0,0,0), second atom at (x,0,0), third atom at (x,y,0),...) to orthonormal coordinates in the crystal reference frame (ie with orientation of the ZScatterer) using :
, where x0(i), y0(i) and z0(i) describe the position for atom (i) in internal coordinates, and x(i), y(i), z(i) are coordinates of the rotated ZScatterer. The rotation is performed around a 'pivot' atom (see ZScatterer::mPivotAtom) |
|
Last time the cartesian coordinates were computed.
|
|
Index of atoms in the ScatteringComponentList. We need this list because Dummy atoms are not included in it. So this is an integer array with [ 0 1 2 4 5 6].. where the missing '3' marks a Dummy atom. Thus to get the name of component 'i' in the component list, you must take the mComponentIndex(i) atom in the ZAtom Registry. |
|
Total number of atoms in the structure.
|
|
Number of "dummy" atoms in the structure.
|
|
the global scattering power used, if mUseGlobalScattPow=true
|
|
Angles giving the orientation of the ZScatterer (stored in radian). The position of any atom can be transformed from internal coordinates (orthonormal coordinates derived from the ZMatrix, with first atom at (0,0,0), second atom at (x,0,0), third atom at (x,y,0),...) to orthonormal coordinates in the crystal reference frame (ie with orientation of the ZScatterer) using :
, where x0(i), y0(i) and z0(i) describe the position for atom (i) in internal coordinates, and x(i), y(i), z(i) are coordinates of the rotated ZScatterer. The rotation is performed around a 'pivot' atom (see ZScatterer::mPivotAtom) |
|
Rotation matrix for the orientation of the scatterer.
|
|
Angles giving the orientation of the ZScatterer (stored in radian). The position of any atom can be transformed from internal coordinates (orthonormal coordinates derived from the ZMatrix, with first atom at (0,0,0), second atom at (x,0,0), third atom at (x,y,0),...) to orthonormal coordinates in the crystal reference frame (ie with orientation of the ZScatterer) using :
, where x0(i), y0(i) and z0(i) describe the position for atom (i) in internal coordinates, and x(i), y(i), z(i) are coordinates of the rotated ZScatterer. The rotation is performed around a 'pivot' atom (see ZScatterer::mPivotAtom) |
|
|
|
The list of scattering components.
|
|
Does the ZScatterer use a global scattering power ?
|
|
Storage for Cartesian coordinates. The (0,0,0) is on the central atom. This includes Dummy atoms. |
|
Storage for Cartesian coordinates. The (0,0,0) is on the central atom. This includes Dummy atoms. |
|
Registry for ZAtoms in this Scatterer.
|
|
Storage for Cartesian coordinates. The (0,0,0) is on the central atom. This includes Dummy atoms. |