BALL  1.4.79
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
rotateBond.h
Go to the documentation of this file.
1 // ----------------------------------------------------
2 // $Maintainer: Marcel Schumann $
3 // $Authors: Jan Fuhrmann, Marcel Schumann $
4 // ----------------------------------------------------
5 
6 #ifndef BALL_DOCKING_GENETICDOCK_ROTATE_BOND_H
7 #define BALL_DOCKING_GENETICDOCK_ROTATE_BOND_H
8 
10 #include <BALL/MATHS/angle.h>
11 #include <BALL/MATHS/matrix44.h>
12 
13 // This class changes the rotation angle(radians) around a defined axis, furthermore it is possible to select
14 // 2 additional atoms to calculate and change the dihedral angle. The rotation axis must not be contained in a
15 // ring system. If this condition holds true, the molecule is divided by the rotation axis. All atoms of the
16 // lighter part rotate while the larger part of the molecule remains unchanged.
17 
18 
19 namespace BALL
20 {
21  class Atom;
22  class Bond;
23 
25  {
26  public:
27 
30  RotateBond();
31 
34  RotateBond(const RotateBond&);
35 
38  RotateBond(const Bond&);
39 
42  RotateBond(Atom*, Atom*);
43 
46  RotateBond(const Bond&, Atom*, Atom*);
47 
50  RotateBond(Atom*, Atom*, Atom*, Atom*);
51 
54  ~RotateBond();
55 
58  void rotate(const Angle&, bool restorePosition = true);
59 
62  void setDihedral(const Angle&);
63 
66  Angle getDihedral();
67 
70  bool operator<(const RotateBond& rb);
71 
72  private:
73 
76  Atom* hinge_;
77 
80  Atom* nail_;
81 
84  Atom* dihedral_lite_;
85 
88  Atom* dihedral_heavy_;
89 
92  HashSet<Atom*> rotate_atoms_;
93 
96  void collectAtoms(Atom*,
97  Atom*,
98  Atom*,
100 
103  void setup(Atom*, Atom*, Atom*, Atom*);
104  };
105 }
106 
107 
108 #endif /* BALL_DOCKING_GENETICDOCK_ROTATE_BOND_H */
char Atom[5]
Definition: PDBdefs.h:257
#define BALL_EXPORT
Definition: COMMON/global.h:50
BALL_EXPORT bool operator<(const String &s1, const String &s2)