EFShiftProcessor.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: EFShiftProcessor.h,v 1.23 2005/12/23 17:01:55 amoll Exp $
00005 //
00006 
00007 #ifndef BALL_NMR_EFSHIFTPROCESSOR_H
00008 #define BALL_NMR_EFSHIFTPROCESSOR_H
00009 
00010 #ifndef BALL_NMR_SHIFT_MODULE_H
00011 # include<BALL/NMR/shiftModule.h>
00012 #endif
00013 
00014 #ifndef BALL_KERNEL_EXPRESSION_H
00015 # include<BALL/KERNEL/expression.h>
00016 #endif
00017 
00018 namespace BALL 
00019 {
00020   class Atom;
00021     
00025   class BALL_EXPORT EFShiftProcessor
00026     : public ShiftModule
00027   {
00028     public:
00029 
00030     BALL_CREATE(EFShiftProcessor)
00031 
00032     
00035 
00039     static const char* PROPERTY__EF_SHIFT;
00040     
00042 
00045 
00048     EFShiftProcessor()
00049       ;
00050   
00053     EFShiftProcessor(const EFShiftProcessor& processor)
00054       ;
00055       
00058     virtual ~EFShiftProcessor()
00059       ; 
00060 
00062 
00065 
00081     virtual void init()
00082       ;
00083 
00085 
00088     
00094     virtual bool start()
00095       ;
00096 
00097 
00106     virtual Processor::Result operator () (Composite& composite)
00107       ;
00108 
00126     virtual bool finish()
00127       ;
00128       
00130 
00131     protected:
00132   
00133     /*_ The list of bonds collected by {\tt operator ()}.
00134     */
00135     std::list<Bond*>        bond_list_;
00136 
00137     /*_ The list of charged atoms (effectors).
00138     */
00139     std::list<Atom*>        effector_list_;
00140 
00141     /*_ The expressions describing the first atom of a bond.
00142     */
00143     std::vector<Expression> first_atom_expressions_;
00144 
00145     /*_ The expressions describing the first atom of a bond.
00146     */
00147     std::vector<Expression> second_atom_expressions_;
00148 
00149     /*_ The parameter $\varepsilon_1$.
00150     */
00151     std::vector<float>      epsilon1_;
00152 
00153     /*_ The parameter $\varepsilon_2$.
00154     */
00155     std::vector<float>      epsilon2_;
00156 
00157     /*_ The charge assignment map.
00158     */
00159     StringHashMap<float>    charge_map_;
00160 
00161     /*_ A flag indicating whether effectors in the same residues are to be considered.
00162         Set this flag by specifying the option {\tt exclude_residue_field = true} in 
00163         the ElectricFieldShift section of the parameter file.
00164         Default is false.
00165     */
00166     bool                    exclude_residue_field_;
00167 
00168     /*_ A cut off value for the electric field effect.
00169         Any effector that is further away than this cut off is ignored.
00170         The distance is read from the option {\tt cut_off} in the 
00171         section <TT>  ElectricFieldEffect </TT> from the parameter file.
00172         This member contains the squared value(!) of the distance.
00173     */
00174     float                   cut_off2_;
00175     
00176   };
00177   
00178 } // namespace BALL
00179 
00180 #endif // BALL_NMR_EFSHIFTPROCESSOR_H