00001
00002
00003
00004 #ifndef BALL_SCORING_COMPONENTS_HYDROGENBOND_H
00005 #define BALL_SCORING_COMPONENTS_HYDROGENBOND_H
00006
00007 #include <BALL/SCORING/COMMON/scoringComponent.h>
00008 #include <BALL/SCORING/COMMON/scoringFunction.h>
00009 #include <BALL/DATATYPE/options.h>
00010
00011 namespace BALL
00012 {
00013
00017 class HydrogenBond
00018 : public ScoringComponent
00019 {
00020
00021 public:
00022
00023
00024 struct Option
00025 {
00028 static const char* HB_IDEAL_LENGTH;
00029
00032 static const char* HB_IDEAL_ANGLE;
00033
00036 static const char* HB_DIST_LOWER;
00037
00040 static const char* HB_DIST_UPPER;
00041
00044 static const char* HB_ANG_LOWER;
00045
00048 static const char* HB_ANG_UPPER;
00049
00052 static const char* VERBOSITY;
00053 };
00054
00057 struct Default
00058 {
00061 static const float HB_IDEAL_LENGTH;
00062
00065 static const float HB_IDEAL_ANGLE;
00066
00069 static const float HB_DIST_LOWER;
00070
00073 static const float HB_DIST_UPPER;
00074
00077 static const float HB_ANG_LOWER;
00078
00081 static const float HB_ANG_UPPER;
00082
00085 static const Size VERBOSITY;
00086
00087 };
00088
00089
00090
00091
00092 BALL_CREATE(HydrogenBond)
00093
00094
00097
00100 HydrogenBond()
00101 ;
00102
00105 HydrogenBond(ScoringFunction& sf)
00106 ;
00107
00110 HydrogenBond(ScoringComponent& sc)
00111 ;
00112
00115 HydrogenBond(const HydrogenBond& fhb)
00116 ;
00117
00120 virtual ~HydrogenBond()
00121 ;
00122
00124
00127
00130 const HydrogenBond& operator = (const HydrogenBond& fhb)
00131 ;
00132
00135 virtual void clear()
00136 ;
00137
00139
00142
00143 bool operator == (const HydrogenBond& fhb) const
00144 ;
00145
00147
00150
00153 virtual bool setup()
00154 ;
00155
00157
00160
00163 virtual double calculateScore()
00164 ;
00165
00166 const HashMap<const Atom*, Size>& getFresnoTypes()
00167 ;
00169
00170 private:
00171
00172
00173
00174
00175
00176
00177 std::vector< std::pair<const Atom*, const Atom*> > possible_hydrogen_bonds_;
00178
00179
00180
00181
00182
00183
00184
00185
00186 HashMap<const Atom*, bool> already_used_;
00187
00188
00189
00190 double factor_;
00191
00192
00193
00194 double h_bond_distance_lower_;
00195
00196
00197
00198 double h_bond_distance_upper_;
00199
00200
00201
00202 double h_bond_angle_lower_;
00203
00204
00205
00206 double h_bond_angle_upper_;
00207
00208
00209
00210 double ideal_hbond_length_;
00211
00212
00213
00214 double ideal_hbond_angle_;
00215
00216
00217
00218 HashMap<const Atom*, Size> fresno_types;
00219
00220
00221 };
00222
00223 }
00224
00225 #endif // BALL_SCORING_COMPONENTS_HYDROGENBOND_H