BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
crystalGenerator.h
Go to the documentation of this file.
1 // -*- Mode: C++; tab-width: 2; -*-
2 // vi: set ts=2:
3 
4 #ifndef BALL_XRAY_CRYSTALGENERATOR_H
5 #define BALL_XRAY_CRYSTALGENERATOR_H
6 
7 #ifndef BALL_KERNEL_ATOMCONTAINER_H
9 #endif
10 
11 #ifndef BALL_KERNEL_SYSTEM_H
12 #include <BALL/KERNEL/system.h>
13 #endif
14 
15 #ifndef BALL_DATATYPE_REGULARDATA3D_H
17 #endif
18 
19 #ifndef BALL_XRAY_CRYSTALINFO_H
20 #include <BALL/XRAY/crystalInfo.h>
21 #endif
22 
23 #ifndef BALL_STRUCTURE_GEOMETRICTRANSFORMATIONS_H
25 #endif
26 
27 #ifndef BALL_STRUCTURE_GEOMETRICPROPERTIES_H
29 #endif
30 
31 #ifndef BALL_MATHS_BOX3_H
32 # include <BALL/MATHS/box3.h>
33 #endif
34 
35 #include <list>
36 
37 namespace BALL
38 {
43  {
44  public:
45 
46 
50 
53  enum CellType
54  {
55  NCS_ASU = 0,
56  ASU = 1,
57  UNITCELL = 2
58  };
59 
60 
69 
76 
81  CrystalGenerator(System* system);
82 
87 
88 
89  void setCrystalInfo(boost::shared_ptr<CrystalInfo> ci_ptr);
90  void setSystem(System* system_ptr);
91 
92  std::list<System*> generatePacking(Index a_loweridx, Index a_upperidx, Index b_loweridx, Index b_upperid, Index c_loweridx, Index c_upperid);
93 
94  System* generateUnitCell(Index a, Index b, Index c);
95  System* generateUnitCell();
96  System* generateAsymmetricUnit();
97  std::list<System*> generateSymMoleculesWithinDistance(float angstrom);
98 
99  Box3 getUnitCellBox(Index a, Index b, Index c);
100 
101  protected:
102 
103  bool buildUnitCell_();
104  bool buildASU_();
105  bool correctASUPositions_(System* raw_cell);
106 
109 
111 
114  boost::shared_ptr<CrystalInfo> ci_ptr_;
115  };
116 } // namespace BALL
117 
118 #endif // BALL_XRAY_CRYSTALINFO_H