BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
EFShiftProcessor.h
Go to the documentation of this file.
1 // -*- Mode: C++; tab-width: 2; -*-
2 // vi: set ts=2:
3 //
4 // $Id: EFShiftProcessor.h,v 1.23.10.5 2007-04-12 13:53:52 anne Exp $
5 //
6 
7 #ifndef BALL_NMR_EFSHIFTPROCESSOR_H
8 #define BALL_NMR_EFSHIFTPROCESSOR_H
9 
10 #ifndef BALL_NMR_SHIFT_MODULE_H
11 # include<BALL/NMR/shiftModule.h>
12 #endif
13 
14 #ifndef BALL_KERNEL_EXPRESSION_H
15 # include<BALL/KERNEL/expression.h>
16 #endif
17 
18 namespace BALL
19 {
20  class Atom;
21 
26  : public ShiftModule
27  {
28  public:
29 
31 
32 
35 
39  static const char* PROPERTY__EF_SHIFT;
40 
42 
45 
49  ;
50 
53  EFShiftProcessor(const EFShiftProcessor& processor)
54  ;
55 
58  virtual ~EFShiftProcessor()
59  ;
60 
62 
65 
90  virtual void init()
91  ;
92 
94 
97 
103  virtual bool start()
104  ;
105 
106 
115  virtual Processor::Result operator () (Composite& composite)
116  ;
117 
136  virtual bool finish()
137  ;
138 
140 
141  protected:
142 
143  /*_ The list of all target bonds collected by {\tt operator ()}.
144  * The first element of the pair is the origin of the bond, the second the destination.
145  * The shift _always_ applies to the first element of the pair.
146  */
147  std::vector<std::pair<Atom*, Atom*> > bond_list_;
148 
149  /*_ The index of the expression that matched to result in the corresponding element in bond_list_
150  */
151  std::vector<Index> expression_number_;
152 
153  /*_ The list of charged atoms (effectors).
154  */
155  std::list<Atom*> effector_list_;
156 
157  /*_ The expressions describing the first atom of a bond.
158  */
159  std::vector<Expression> first_atom_expressions_;
160 
161  /*_ The expressions describing the first atom of a bond.
162  */
163  std::vector<Expression> second_atom_expressions_;
164 
165  /*_ The parameter $\varepsilon_1$.
166  */
167  std::vector<float> epsilon1_;
168 
169  /*_ The parameter $\varepsilon_2$.
170  */
171  std::vector<float> epsilon2_;
172 
173  /*_ The charge assignment map.
174  */
175  StringHashMap<float> charge_map_;
176 
177  /*_ A flag indicating whether effectors in the same residues are to be considered.
178  Set this flag by specifying the option {\tt exclude_residue_field = true} in
179  the ElectricFieldShift section of the parameter file.
180  Default is false.
181  */
182  bool exclude_residue_field_;
183 
184  /*_ A flag indicating whether effectors in adjacent residues are to be considered.
185  Set this flag by specifying the option {\tt exclude_adjacent_residue_field = true} in
186  the ElectricFieldShift section of the parameter file.
187  Default is false.
188  */
189  bool exclude_adjacent_residue_field_;
190 
191  /*_ A flag indicating whether carbonyl effectors are to be considered for amid targets.
192  Set this flag by specifying the option {\tt carbonyl_influences_amide_field = false} in
193  the ElectricFieldShift section of the parameter file.
194  Default is false.
195  */
196  bool carbonyl_influences_amide_field_;
197 
198 
199  /*_ A flag indicating whether solvent atoms do act as effectors.
200  Set this flag by specifying the option {\tt exclude exclude_solvent_field = true} in
201  the ElectricFieldShift section of the parameter file.
202  Default is false.
203  */
204  bool exclude_solvent_field_;
205 
206 
207 
208  /*_ A cut off value for the electric field effect.
209  Any effector that is further away than this cut off is ignored.
210  The distance is read from the option {\tt cut_off} in the
211  section <TT> ElectricFieldEffect </TT> from the parameter file.
212  This member contains the squared value(!) of the distance.
213  */
214  float cut_off2_;
215 
216 
217  /*_ A factor for switching the charge unit between esu and elementary charges.
218  The unit is read from the option {\tt unit} of the section
219  <TT> Charges </TT> from the parameter file.
220  For numeric aspects, in the init() function the esu unit is divided by
221  the charge_factor_, such that the molecules charges (which are given
222  by PDB.org in elementary units) can easily be multiplied with.
223  When computing the shift, the charge_factor is again multiplied with.
224  Default is 1.0
225  */
226 
227  float charge_factor_;
228 
229  private:
230 
231  /*_ Some debugging functions printing parameter/effector/target information
232  * to the Log-stream.
233  */
234  void printParameters_();
235  void printEffectors_();
236  void printTargets_();
237 
238  /*_ A function to perform some ShiftX-y postprocessing:
239  add for all CA-atoms 0.2 times the EF-shift-value of the bound HA-atoms
240  */
241  void postprocessing_();
242 
243  };
244 
245 } // namespace BALL
246 
247 #endif // BALL_NMR_EFSHIFTPROCESSOR_H