BALL  1.4.79
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
hydrogenBondSlick.h
Go to the documentation of this file.
1 // $Id: HydrogenBondSlick.h,v 1.3 2006/05/17 12:49:15 anker Exp $
2 // Molecular Mechanics: Fresno force field, hydrogen bond component
3 
4 #ifndef BALL_SCORING_COMPONENTS_HYDROGENBONDSLICK_H
5 #define BALL_SCORING_COMPONENTS_HYDROGENBONDSLICK_H
6 
10 
11 namespace BALL
12 {
13 
18  : public ScoringComponent
19  {
20 
21  public:
22 
23 
24  struct Option
25  {
28  static const char* HB_IDEAL_LENGTH;
29 
32  static const char* HB_IDEAL_ANGLE;
33 
36  static const char* HB_DIST_LOWER;
37 
40  static const char* HB_DIST_UPPER;
41 
44  static const char* HB_ANG_LOWER;
45 
48  static const char* HB_ANG_UPPER;
49 
52  static const char* VERBOSITY;
53  };
54 
57  struct Default
58  {
61  static const float HB_IDEAL_LENGTH;
62 
65  static const float HB_IDEAL_ANGLE;
66 
69  static const float HB_DIST_LOWER;
70 
73  static const float HB_DIST_UPPER;
74 
77  static const float HB_ANG_LOWER;
78 
81  static const float HB_ANG_UPPER;
82 
85  static const Size VERBOSITY;
86 
87  };
88 
89 
90 
91 
93 
94 
97 
101  ;
102 
105  HydrogenBondSlick(ScoringFunction& sf)
106  ;
107 
110  HydrogenBondSlick(ScoringComponent& sc)
111  ;
112 
115  HydrogenBondSlick(const HydrogenBondSlick& fhb)
116  ;
117 
120  virtual ~HydrogenBondSlick()
121  ;
122 
124 
127 
130  const HydrogenBondSlick& operator = (const HydrogenBondSlick& fhb)
131  ;
132 
135  virtual void clear();
136 
138 
141 
142  bool operator == (const HydrogenBondSlick& fhb) const
143  ;
144 
146 
149 
153  virtual bool setup();
154 
156 
159 
160  void update(const vector<std::pair<Atom*, Atom*> >& pair_vector);
161 
165  virtual double updateScore();
166 
168 
169  private:
170 
171  /*_ This vector contains all possible hydrogen bonds. It is created
172  * during the setup process. Pairs are always of the form (hydrogen,
173  * acceptor). The donor can be found easily by following the only bond
174  * of the hydrogen.
175  */
176  std::vector< std::pair<const Atom*, const Atom*> > possible_hydrogen_bonds_;
177 
178  /*_ A hash map containing all hydrogens and bools indicating whether
179  * this hydrigen was already used for scoring a hydrogen bond. At the
180  * moment we use the first hydrogen bond we find and hope that this
181  * will indeed be the only one contributing to the energy score. This
182  * HashMap will only be used by updateEnergy() but we build it in
183  * setup().
184  */
185  HashMap<const Atom*, bool> already_used_;
186 
187  /*_
188  */
189  double factor_;
190 
191  /*_
192  */
193  double h_bond_distance_lower_;
194 
195  /*_
196  */
197  double h_bond_distance_upper_;
198 
199  /*_
200  */
201  double h_bond_angle_lower_;
202 
203  /*_
204  */
205  double h_bond_angle_upper_;
206 
207  /*_ The ideal hbond length.
208  */
209  double ideal_hbond_length_;
210 
211  /*_ The ideal hbond angle.
212  */
213  double ideal_hbond_angle_;
214 
215  /*_
216  */
217  HashMap<const Atom*, Size> rec_fresno_types_;
218 
219  HashMap<const Atom*, Size> lig_fresno_types_;
220  };
221 
222 } // namespace BALL
223 
224 #endif // BALL_SCORING_COMPONENTS_HYDROGENBONDSLICK_H
#define BALL_CREATE(name)
Definition: create.h:62
static const char * HB_IDEAL_LENGTH
static const char * HB_IDEAL_ANGLE
virtual void clear()
virtual bool setup()
virtual double updateScore()
void update(const vector< std::pair< Atom *, Atom * > > &pair_vector)
HashMap class based on the STL map (containing serveral convenience functions)
Definition: hashMap.h:73