BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
CHPI.h
Go to the documentation of this file.
1 // $Id: CHPI.h,v 1.2.10.1 2007/08/07 16:16:15 bertsch Exp $
2 // Molecular Mechanics: SLICK force field, CH---pi interaction
3 
4 #ifndef BALL_SCORING_COMPONENTS_CHPI_H
5 #define BALL_SCORING_COMPONENTS_CHPI_H
6 
10 
11 namespace BALL
12 {
13 
18  class CHPI
19  : public ScoringComponent
20  {
21  public:
22 
26  {
27  public:
28 
30  AromaticRing()
31  ;
32 
34  AromaticRing(const AromaticRing& aromatic_ring)
35  ;
36 
38  AromaticRing(const std::vector<Atom*>& atoms)
39  ;
40 
42  const Vector3& getCentre() const
43  ;
44 
46  const Vector3& getNormalVector() const
47  ;
48 
50  void setRing(const std::vector<Atom*>& atoms)
51  ;
52 
53  // accessors for the private data members
54  const std::vector<Atom*>& getRing() const
55  ;
56 
58  void dump(std::ostream& s = std::cout) const
59  ;
60 
61  private:
62 
63  //_ A hash set containing pointers to all ring atoms:
64  std::vector<Atom*> ring_atoms_;
65 
66  //_ The centre of the aromatic ring.
68 
69  //_ The normal vector of the ring plane.
71 
72  //_
73  void computeCentre_()
74  ;
75 
76  //_
78  ;
79 
80  };
81 
82 
85  class CHGroup
86  {
87  public:
88 
90  CHGroup()
91  ;
92 
94  ~CHGroup()
95  ;
96 
98  CHGroup(const CHGroup& CH_groups)
99  ;
100 
102  CHGroup (const Atom* C_atom, const Atom* H_atom)
103  ;
104 
106  void setCAtom(const Atom* C_atom)
107  ;
108 
110  void setHAtom(const Atom* H_atom)
111  ;
112 
114  void setAtoms(const Atom* C_atom, const Atom* H_atom)
115  ;
116 
118  const Atom* getHAtom() const
119 
120  {
121  return(H_atom_);
122  }
123 
125  const Atom* getCAtom() const
126 
127  {
128  return(C_atom_);
129  }
130 
131  void dump(std::ostream& s = std::cout) const
132  ;
133 
134  private :
135 
136  //_
137  const Atom* H_atom_;
138 
139  //_
140  const Atom* C_atom_;
141 
142  };
143 
144 
145  struct Option
146  {
147 
149  static const String VERBOSITY;
150 
152  static const String CX_DISTANCE_UPPER;
153 
155  static const String CHX_ANGLE_LOWER;
156 
159 
162 
165 
167  static const String ANGLE_TOLERANCE;
168 
170  static const String LIMIT;
171 
174 
175  };
176 
177 
178  struct Default
179  {
180 
182  static const Size VERBOSITY;
183 
185  static const float CX_DISTANCE_UPPER;
186 
188  static const float CHX_ANGLE_LOWER;
189 
191  static const float HX_PROJECTED_DISTANCE_LOWER;
192 
194  static const float HX_PROJECTED_DISTANCE_UPPER;
195 
197  static const float DISTANCE_TOLERANCE;
198 
200  static const float ANGLE_TOLERANCE;
201 
203  static const float LIMIT;
204 
206  static const bool CREATE_INTERACTION_FILE;
207 
208  };
209 
210 
214 
217  CHPI()
218  ;
219 
222  CHPI(ScoringFunction& sf)
223  ;
224 
227  CHPI(const CHPI& chpi)
228  ;
229 
232  virtual ~CHPI()
233  ;
234 
236 
239 
242  const CHPI& operator = (const CHPI& chpi)
243  ;
244 
247  virtual void clear()
248  ;
249 
251 
254 
255  bool operator == (const CHPI& chpi) const
256  ;
257 
259 
262 
265  virtual bool setup()
266  ;
267 
268  virtual double calculateScore()
269  ;
270 
273 
274  private:
275 
276  //_ A vector containing all possible interactions between aliphatic
277  //_ C-H groups in the sugar and aromatic rings in the receptor.
278  std::vector< std::pair<const AromaticRing*, const CHGroup*> > possible_interactions_;
279 
280  //_ A vector containing all aliphatic C-H groups of the ligand.
281  std::vector<CHGroup> all_CH_groups_;
282 
283  //_ A vector containing all aromatic rings of the receptor.
284  std::vector<AromaticRing> all_aromatic_rings_;
285 
286  //_
288 
289  //_
291 
292  //_
294 
295  //_
297 
298  //_ The tolerance area for creating scores instead of simply counted
299  //_ interactions.
302 
303  //_ A limit for ignoring interactions that have only very small
304  //_ scores
305  float limit_;
306 
307  //_ Verbosity of the code
309 
310  //_ Flag for writing HIN file containing pseudomolecules for the CHPI
311  //_ interactions found in the system
313 
314  };
315 
316 
317 
318 } // namespace BALL
319 
320 #endif // BALL_SCORING_COMPONENTS_CHPI_H