FOX/ObjCryst++  2022
Crystal.h
1 /* ObjCryst++ Object-Oriented Crystallographic Library
2  (c) 2000-2002 Vincent Favre-Nicolin vincefn@users.sourceforge.net
3  2000-2001 University of Geneva (Switzerland)
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 2 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program; if not, write to the Free Software
17  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 */
19 /* Crystal.h header file for the Crystal object
20 *
21 */
22 #ifndef _OBJCRYST_CRYSTAL_H_
23 #define _OBJCRYST_CRYSTAL_H_
24 
25 #include "ObjCryst/CrystVector/CrystVector.h"
26 
27 #include "ObjCryst/ObjCryst/General.h"
28 #include "ObjCryst/RefinableObj/RefinableObj.h"
29 #include "ObjCryst/ObjCryst/UnitCell.h"
30 #include "ObjCryst/ObjCryst/ScatteringPower.h"
31 #include "ObjCryst/ObjCryst/Scatterer.h"
32 
33 //#include <stdlib.h>
34 #include <string>
35 //#include <iomanip>
36 //#include <cmath>
37 //#include <typeinfo>
38 //#include <fstream>
39 //#include <ctime>
40 
41 namespace ObjCryst
42 {
43 class Scatterer; //forward declaration of another header's class :KLUDGE:
44 extern const RefParType *gpRefParTypeCrystal;
46 {
47  public:
49  {
50  if (mCount++ == 0)
51  {
52  gpRefParTypeCrystal=new RefParType (gpRefParTypeUnitCell,"Crystal");
53  }
54  }
56  {
57  if (--mCount == 0)
58  {
59  delete gpRefParTypeCrystal;
60  gpRefParTypeCrystal=0;
61  }
62  }
63  private:
64  static long mCount;
65 };
66 static NiftyStaticGlobalObjectsInitializer_Crystal NiftyStaticGlobalObjectsInitializer_Crystal_counter;
67 
68 //######################################################################
96 //######################################################################
97 class Crystal:public UnitCell
98 {
99  public:
101  Crystal();
106  Crystal(const REAL a, const REAL b, const REAL c,
107  const string &SpaceGroupId);
113  Crystal(const REAL a, const REAL b, const REAL c, const REAL alpha,
114  const REAL beta, const REAL gamma,const string &SpaceGroupId);
115 
117  Crystal(const Crystal &oldCryst);
119  ~Crystal();
120  virtual const string& GetClassName() const;
121 
133  void AddScatterer(Scatterer *scatt);
135  void RemoveScatterer(Scatterer *scatt, const bool del=true);
136 
138  long GetNbScatterer()const;
143  Scatterer & GetScatt(const string &scattName);
148  const Scatterer & GetScatt(const string &scattName) const;
153  Scatterer & GetScatt(const long scattIndex);
158  const Scatterer & GetScatt(const long scattIndex) const;
159 
168 
171  void AddScatteringPower(ScatteringPower *scattPow);
174  void RemoveScatteringPower(ScatteringPower *scattPow, const bool del=true);
176  ScatteringPower& GetScatteringPower(const string &name);
178  const ScatteringPower& GetScatteringPower(const string &name)const;
181 
191  void Print(ostream &os=cout) const;
192 
194  std::string GetFormula() const;
197  REAL GetWeight() const;
198 
214  CrystMatrix_REAL GetMinDistanceTable(const REAL minDistance=0.1) const;
219  void PrintMinDistanceTable(const REAL minDistance=0.1,ostream &os=cout) const;
220 
231  ostream& POVRayDescription(ostream &os,const CrystalPOVRayOptions &options)const;
232 
233 #ifdef OBJCRYST_GL
247  virtual void GLInitDisplayList(const bool onlyIndependentAtoms=false,
248  const REAL xMin=-.1,const REAL xMax=1.1,
249  const REAL yMin=-.1,const REAL yMax=1.1,
250  const REAL zMin=-.1,const REAL zMax=1.1,
251  const bool displayNames=false,
252  const bool hideHydrogens=false,
253  const REAL fadeDistance=0,
254  const bool fullMoleculeInLimits=false)const;
255 #endif // OBJCRYST_GL
256 
277  void CalcDynPopCorr(const REAL overlapDist=1., const REAL mergeDist=.0)const ;
279  void ResetDynPopCorr()const ;
283  REAL GetDynPopCorr(const Scatterer* pscatt, unsigned int component)const;
296  void SetUseDynPopCorr(const int use);
300  int GetUseDynPopCorr() const;
305  REAL GetBumpMergeCost() const;
309  void SetBumpMergeDistance(const ScatteringPower &scatt1,
310  const ScatteringPower &scatt2, const REAL dist=1.5);
312  void SetBumpMergeDistance(const ScatteringPower &scatt1,
313  const ScatteringPower &scatt2, const REAL dist,
314  const bool allowMerge);
315 
317  void RemoveBumpMergeDistance(const ScatteringPower &scatt1,
318  const ScatteringPower &scatt2);
319 
322  {
323  BumpMergePar();
328  BumpMergePar(const REAL dist, const bool canOverlap=false);
330  REAL mDist2;
333  };
334 
337  typedef std::map<pair<const ScatteringPower*, const ScatteringPower*>,Crystal::BumpMergePar > VBumpMergePar;
338  const VBumpMergePar& GetBumpMergeParList()const;
339  VBumpMergePar& GetBumpMergeParList();
340 
341 
343  {
344  DistTableInternalPosition(const long atomIndex, const int sym,
345  const REAL x,const REAL y,const REAL z);
346 
352  REAL mX,mY,mZ;
353  };
354 
355  struct Neighbour
356  {
357  Neighbour(const unsigned long neighbourIndex,const int sym,
358  const REAL dist2);
361  unsigned long mNeighbourIndex;
366  REAL mDist2;
367  };
370  {
372  unsigned long mIndex;
377  std::vector<Crystal::Neighbour> mvNeighbour;
378  };
379 
381  {
382  InterMolDistPar();
383 
384  InterMolDistPar(const vector<string> At1, const vector<string> At2, const REAL actualDist, const REAL dist, const REAL sigma, const REAL delta);
385 
386  //set mAt2 from the string of atom names separated by spaces
387  string get_list_At1();
388  string get_list_At2();
389  void set_At2(string atom_names);
390 
391  //the first is the atom in the asymmetric part of the unit cell
392  vector<string> mAt1;
393  vector<int> mAt1Indexes;
394  vector<DistTableInternalPosition> vUniqueIndexAt1;
395 
396  //the second one is the neighbour
397  vector<string> mAt2;
398  vector<int> mAt2Indexes;
399  vector<DistTableInternalPosition> vPosAt2;
400 
401  //table of neighbours based on At1 and list of At2
402  //there could be two atoms with the same name in crystal, thats why it is a vector
403  vector<NeighbourHood> mNbh;
404 
405  //dummy, just actual distance
406  REAL mActDist;
407  //defined distance (to be found) as d*d
408  REAL mDist2;
409  //sigma and delta are the same meaning as for restraints
410  REAL mSig;
411  REAL mDelta;
412  };
413 
415  string mName;
416  };
417  mutable vector<NamedScatteringComponent> mNamedScattCompList;
418 
419  const vector<NamedScatteringComponent>& GetNamedScatteringComponentList() const;
420 
421  void SetNewInterMolDist(const vector<string> At1, const vector<string> At2, const REAL dist, const REAL sigma, const REAL delta) const;
422 
423  void RemoveIntermolDistPar(int Index) const;
424 
425  int GetIntermolDistNb() const;
426  InterMolDistPar GetIntermolDistPar(int Index) const;
427  InterMolDistPar *GetIntermolDistPar_ptr(int Index) const;
428 
429  void InitializeInterMolDistList() const;
430 
431  mutable bool mInterMolDistListNeedsInit;
432 
433  REAL GetInterMolDistCost() const;
434 
435 
438 
439  virtual void XMLOutput(ostream &os,int indent=0)const;
449  virtual void XMLInput(istream &is,const XMLCrystTag &tag);
450  //virtual void XMLInputOld(istream &is,const IOCrystTag &tag);
451 
452  virtual void GlobalOptRandomMove(const REAL mutationAmplitude,
453  const RefParType *type=gpRefParTypeObjCryst);
454  virtual REAL GetLogLikelihood()const;
461  virtual void CIFOutput(ostream &os, double mindist = 0.5)const;
462 
463  virtual void GetGeneGroup(const RefinableObj &obj,
464  CrystVector_uint & groupIndex,
465  unsigned int &firstGroup) const;
466  virtual void BeginOptimization(const bool allowApproximations=false,
467  const bool enableRestraints=false);
468  void AddBondValenceRo(const ScatteringPower&,const ScatteringPower&,const REAL ro);
469  void RemoveBondValenceRo(const ScatteringPower&,const ScatteringPower&);
473  REAL GetBondValenceCost() const;
474  std::map<pair<const ScatteringPower*,const ScatteringPower*>, REAL>& GetBondValenceRoList();
475  const std::map<pair<const ScatteringPower*,const ScatteringPower*>, REAL>& GetBondValenceRoList()const;
482  void Init(const REAL a, const REAL b, const REAL c, const REAL alpha,
483  const REAL beta, const REAL gamma,const string &SpaceGroupId,
484  const string& name);
485 
489  void SetDeleteSubObjInDestructor(const bool b);
498  void ConnectAtoms(const REAL min_relat_dist=0.4, const REAL max_relat_dist=1.3, const bool warnuser_fail=false);
508  void MergeEqualScatteringPowers(const bool oneScatteringPowerPerElement);
509  private:
514  void InitOptions();
515 
518  int FindScatterer(const string &scattName)const;
519 
520  /*returns array of indexes in the mNamedScattCompList */
521  vector<int> FindScatterersInComponentList(const string &scattName)const;
522 
523 
524  /*search the list based on atomic label*/
525  bool isScattererInInterMolDistList(string &scattName) const;
526  bool isScattererInInterMolDistListAt1(string &scattName) const;
527  bool isScattererInInterMolDistListAt2(string &scattName) const;
528 
529 
545  void CalcDistTable(const bool fast)const;
546 
547  //void CalcMyDistTable()const;
548  void CalcDistTableForInterMolDistCost()const;
549 
550 
551  void printInterMolDistList() const;
552 
556  void CalcBondValenceSum()const;
557 
560 
563 
564 
565 
571  mutable REAL mBumpMergeCost;
574 
575  //list of intermolecular distances
576  mutable std::vector<InterMolDistPar> mInterMolDistList;
577 
578  //intermolecular distances in the meaning of the indexes of mScattCompList
579  //[i][j]: i=mAt1, j=mAt2
580  mutable vector<vector<int> > mInterMolDistListIndexes;
581 
582  mutable REAL mInterMolDistCost;
583  mutable RefinableObjClock mInterMolDistCostClock;
584  REAL mInterMolDistCostScale;
585 
586  //0=parabolic, 1=Lorentzian, 2=Energy
587  int mCostCalcMethod;
588 
591 
592  //mutable std::vector<NeighbourHood> mImdTable;
593 
594  //list of atoms referenced to mImdTable
595  //mutable vector<int> mlistOfAt1InterMolDistScatterers;
596 
597  //list of atoms referenced to mImdTable
598  //mutable vector<int> mlistOfAt2InterMolDistScatterers;
599 
600  mutable std::vector<NeighbourHood> mvDistTableSq;
604  mutable REAL mDistTableMaxDistance;
605 
606  mutable REAL mDistTableForInterMolMaxDistance;
607 
608  mutable REAL mDistMaxMultiplier;
609 
612 
618 
621 
622  //Clocks
633 
638 
642  map<pair<const ScatteringPower*,const ScatteringPower*>, REAL> mvBondValenceRo;
650  mutable REAL mBondValenceCost;
655  mutable std::map<long, REAL> mvBondValenceCalc;
656  // Flag indicating whether to delete Scatterers and ScatteringPowers in
657  // the destructor (default true). Modified by
658  // SetDeleteSubObjInDestructor.
659  bool mDeleteSubObjInDestructor;
660 
661  #ifdef __WX__CRYST__
662  public:
663  virtual WXCrystObjBasic* WXCreate(wxWindow*);
664  friend class WXCrystal;
665  #endif
666 };
667 
670 
671 
672 }// namespace
673 
674 
675 #endif //_OBJCRYST_CRYSTAL_H_
The namespace which includes all objects (crystallographic and algorithmic) in ObjCryst++.
Definition: doc-main.h:25
const RefParType * gpRefParTypeObjCryst
Top RefParType for the ObjCryst++ library.
ObjRegistry< Crystal > gCrystalRegistry("List of all Crystals")
Global registry for all Crystal objects.
Definition: Crystal.h:669
Crystal class: Unit cell, spacegroup, scatterers.
Definition: Crystal.h:98
void ResetDynPopCorr() const
Reset Dynamical Population Correction factors (ie set it to 1)
Definition: Crystal.cpp:833
void Print(ostream &os=cout) const
Prints some info about the crystal.
Definition: Crystal.cpp:340
RefinableObjClock mMasterClockScatteringPower
master clock recording every change in Scattering Powers
Definition: Crystal.h:632
virtual void CIFOutput(ostream &os, double mindist=0.5) const
output Crystal structure as a cif file
Definition: Crystal.cpp:1234
~Crystal()
Crystal destructor.
Definition: Crystal.cpp:145
virtual void XMLOutput(ostream &os, int indent=0) const
Output to stream in well-formed XML.
REAL GetBondValenceCost() const
Get the Bond-Valence cost function, which compares the expected valence to the one computed from Bond...
Definition: Crystal.cpp:1531
ostream & POVRayDescription(ostream &os, const CrystalPOVRayOptions &options) const
XMLOutput POV-Ray Description for this Crystal.
Definition: Crystal.cpp:529
RefinableObjClock mClockDynPopCorr
Definition: Crystal.h:630
CrystMatrix_REAL GetMinDistanceTable(const REAL minDistance=0.1) const
Minimum interatomic distance between all scattering components (atoms) in the crystal.
Definition: Crystal.cpp:455
ScatteringComponentList mScattCompList
The list of all scattering components in the crystal.
Definition: Crystal.h:611
RefinableObjClock mBondValenceParClock
Last Time Bond Valence parameters were changed.
Definition: Crystal.h:644
REAL mBondValenceCostScale
Bond Valence cost scale factor.
Definition: Crystal.h:652
RefinableObjClock mBondValenceCalcClock
Last time Bond Valences were calculated.
Definition: Crystal.h:646
void CalcDistTable(const bool fast) const
Compute the distance Table (mDistTable) for all scattering components.
Definition: Crystal.cpp:2465
ScatteringPower & GetScatteringPower(const string &name)
Find a ScatteringPower from its name. Names must be unique in a given Crystal.
Definition: Crystal.cpp:284
void PrintMinDistanceTable(const REAL minDistance=0.1, ostream &os=cout) const
Print the minimum distance table between all scattering centers (atoms) in the crystal.
Definition: Crystal.cpp:496
std::map< long, REAL > mvBondValenceCalc
List of calculated bond valences, as a map, the key being the index of the atom in Crystal::mScattCom...
Definition: Crystal.h:655
Crystal()
Default Constructor.
Definition: Crystal.cpp:57
ObjRegistry< Scatterer > & GetScattererRegistry()
Get the registry of scatterers.
Definition: Crystal.cpp:232
void SetUseDynPopCorr(const int use)
Set the use of dynamical population correction (Crystal::mUseDynPopCorr).
Definition: Crystal.cpp:859
RefinableObjClock mBumpMergeCostClock
Last Time Anti-bump parameters were changed.
Definition: Crystal.h:569
virtual const ScatteringComponentList & GetScatteringComponentList() const
Get the list of all scattering components.
Definition: Crystal.cpp:298
virtual void GlobalOptRandomMove(const REAL mutationAmplitude, const RefParType *type=gpRefParTypeObjCryst)
Make a random move of the current configuration.
Definition: Crystal.cpp:1198
void ConnectAtoms(const REAL min_relat_dist=0.4, const REAL max_relat_dist=1.3, const bool warnuser_fail=false)
Convert as much as possible the crystal's atoms to molecule(s).
Definition: Crystal.cpp:1626
void InitOptions()
Init options.
Definition: Crystal.cpp:2077
RefinableObjClock mDistTableForInterMolDistClock
The time when the distance table was last calculated.
Definition: Crystal.h:590
int GetUseDynPopCorr() const
Get dynamical population correction setting.
Definition: Crystal.cpp:866
void AddScatteringPower(ScatteringPower *scattPow)
Add a ScatteringPower for this Crystal.
Definition: Crystal.cpp:241
int FindScatterer(const string &scattName) const
Find a scatterer (its index # in mpScatterrer[]) with a given name.
Definition: Crystal.cpp:871
const RefinableObjClock & GetClockScattererList() const
When was the list of scatterers last changed ?
Definition: Crystal.cpp:1196
RefinableObjClock mClockScattererList
Last time the list of Scatterers was changed.
Definition: Crystal.h:624
ObjRegistry< ScatteringPower > mScatteringPowerRegistry
The registry of ScatteringPower for this Crystal.
Definition: Crystal.h:620
map< pair< const ScatteringPower *, const ScatteringPower * >, REAL > mvBondValenceRo
Map of Bond Valence "Ro" parameters for each couple of ScatteringPower.
Definition: Crystal.h:642
void CalcBondValenceSum() const
Calculate all Bond Valences.
Definition: Crystal.cpp:1565
virtual void BeginOptimization(const bool allowApproximations=false, const bool enableRestraints=false)
This should be called by any optimization class at the begining of an optimization.
Definition: Crystal.cpp:1468
RefinableObjClock mClockNeighborTable
Definition: Crystal.h:628
void MergeEqualScatteringPowers(const bool oneScatteringPowerPerElement)
Merge all equal scattering powers.
Definition: Crystal.cpp:1971
REAL GetWeight() const
Weight for the crystal formula, in atomic units (g/mol).
Definition: Crystal.cpp:438
REAL mDistTableMaxDistance
The distance up to which the distance table & neighbours needs to be calculated.
Definition: Crystal.h:604
REAL GetDynPopCorr(const Scatterer *pscatt, unsigned int component) const
Access the Dynamical Occupancy Correction for a given component (atom) in a given Scatterer.
Definition: Crystal.cpp:841
ObjRegistry< Scatterer > mScattererRegistry
The registry of scatterers for this UnitCell.
Definition: Crystal.h:559
VBumpMergePar mvBumpMergePar
Anti-bump parameters map.
Definition: Crystal.h:562
ObjRegistry< ScatteringPower > & GetScatteringPowerRegistry()
Get the registry of ScatteringPower included in this Crystal.
Definition: Crystal.cpp:236
const RefinableObjClock & GetClockScattCompList() const
Get the list of all scattering components.
Definition: Crystal.cpp:335
REAL GetBumpMergeCost() const
Get the Anti-bumping/pro-Merging cost function.
Definition: Crystal.cpp:938
RefinableObjClock mBumpMergeParClock
Last Time Anti-bump parameters were changed.
Definition: Crystal.h:567
RefObjOpt mUseDynPopCorr
Use Dynamical population correction (ScatteringComponent::mDynPopCorr) during Structure factor calcul...
Definition: Crystal.h:617
RefObjOpt mDisplayEnantiomer
Display the enantiomeric (mirror along x) structure in 3D? This can be helpful for non-centrosymmetri...
Definition: Crystal.h:637
virtual const string & GetClassName() const
Name for this class ("RefinableObj", "Crystal",...).
Definition: Crystal.cpp:182
Scatterer & GetScatt(const string &scattName)
Provides an access to the scatterers.
Definition: Crystal.cpp:212
void RemoveScatteringPower(ScatteringPower *scattPow, const bool del=true)
Remove a ScatteringPower for this Crystal.
Definition: Crystal.cpp:251
void RemoveBumpMergeDistance(const ScatteringPower &scatt1, const ScatteringPower &scatt2)
Remove an Anti-bumping distance between two scattering types.
Definition: Crystal.cpp:997
void RemoveScatterer(Scatterer *scatt, const bool del=true)
Remove a Scatterer. This also deletes the scatterer unless del=false.
Definition: Crystal.cpp:199
RefinableObjClock mClockScattCompList
Definition: Crystal.h:626
std::string GetFormula() const
Formula with atoms in alphabetic order.
Definition: Crystal.cpp:405
virtual void XMLInput(istream &is, const XMLCrystTag &tag)
Input the crystal structure from a stream.
long GetNbScatterer() const
Number of scatterers in the crystal.
Definition: Crystal.cpp:210
void AddScatterer(Scatterer *scatt)
Add a scatterer to the crystal.
Definition: Crystal.cpp:188
REAL mBumpMergeCost
Current bump-merge cost.
Definition: Crystal.h:571
RefinableObjClock mDistTableClock
The time when the distance table was last calculated.
Definition: Crystal.h:602
void SetBumpMergeDistance(const ScatteringPower &scatt1, const ScatteringPower &scatt2, const REAL dist=1.5)
Set the Anti-bumping distance between two scattering types.
Definition: Crystal.cpp:978
virtual REAL GetLogLikelihood() const
Get -log(likelihood) of the current configuration for the object.
Definition: Crystal.cpp:1229
RefinableObjClock mLatticeClock
Clock for lattice paramaters.
Definition: Crystal.h:614
void CalcDynPopCorr(const REAL overlapDist=1., const REAL mergeDist=.0) const
Compute the 'Dynamical population correction for all atoms. Atoms which are considered "equivalent" (...
Definition: Crystal.cpp:776
RefinableObjClock mBondValenceCostClock
Last time the Bond Valence cost was calculated.
Definition: Crystal.h:648
void SetDeleteSubObjInDestructor(const bool b)
Set whether to delete the Scatterers and ScatteringPowers in the destructor.
Definition: Crystal.cpp:2685
REAL mBumpMergeScale
Bump-merge scale factor.
Definition: Crystal.h:573
virtual void GetGeneGroup(const RefinableObj &obj, CrystVector_uint &groupIndex, unsigned int &firstGroup) const
Get the gene group assigned to each parameter.
Definition: Crystal.cpp:1449
void Init(const REAL a, const REAL b, const REAL c, const REAL alpha, const REAL beta, const REAL gamma, const string &SpaceGroupId, const string &name)
Init all Crystal parameters.
Definition: Crystal.cpp:1603
std::map< pair< const ScatteringPower *, const ScatteringPower * >, Crystal::BumpMergePar > VBumpMergePar
Anti-bump parameters.
Definition: Crystal.h:337
REAL mBondValenceCost
Current Bond Valence cost.
Definition: Crystal.h:650
const RefinableObjClock & GetMasterClockScatteringPower() const
Get the clock which reports all changes in ScatteringPowers.
Definition: Crystal.cpp:294
Storage for anti-bump/merge parameters.
Definition: Crystal.h:322
bool mCanOverlap
Can the two atoms completely overlap ?
Definition: Crystal.h:332
REAL mDist2
The squared antibump interatomic distance.
Definition: Crystal.h:330
int mSymmetryIndex
Which symmetry operation does this symmetric correspond to ?
Definition: Crystal.h:350
long mAtomIndex
Index of the atom (order) in the component list.
Definition: Crystal.h:348
REAL mX
Fractionnal coordinates.
Definition: Crystal.h:352
unsigned long mNeighbourIndex
The number associated to the neighbour (its index in the Crystal's scattering component list)
Definition: Crystal.h:361
unsigned int mNeighbourSymmetryIndex
The symmetry position associated to the neighbour (its index in the Crystal's scattering component li...
Definition: Crystal.h:364
REAL mDist2
The squared distance, in square Angstroems.
Definition: Crystal.h:366
Table of neighbours for a given unique atom.
Definition: Crystal.h:370
unsigned long mIndex
Index of the atom in the scattering component list.
Definition: Crystal.h:372
unsigned int mUniquePosSymmetryIndex
Index of the symmetry operation for the chosen unique position in the (pseudo) asymmetric unit.
Definition: Crystal.h:375
std::vector< Crystal::Neighbour > mvNeighbour
List of neighbours.
Definition: Crystal.h:377
Class to store POV-Ray output options.
Definition: General.h:178
Generic type of scatterer: can be an atom, or a more complex assembly of atoms.
Definition: Scatterer.h:131
Abstract Base Class to describe the scattering power of any Scatterer component in a crystal.
A scattering position in a crystal, associated with the corresponding occupancy and a pointer to the ...
list of scattering positions in a crystal, associated with the corresponding occupancy and a pointer ...
Unit Cell class: Unit cell with spacegroup information.
Definition: UnitCell.h:72
class to input or output a well-formatted xml beginning or ending tag.
class of refinable parameter types.
Definition: RefinableObj.h:80
We need to record exactly when refinable objects have been modified for the last time (to avoid re-co...
Definition: RefinableObj.h:140
Base class for options.
Definition: RefinableObj.h:552
Object Registry.
Definition: RefinableObj.h:645
Generic Refinable Object.
Definition: RefinableObj.h:784
Abstract base class for all objects in wxCryst.
Definition: wxCryst.h:128
wxCryst class for Crystals
Definition: wxCrystal.h:81