BALL::EFShiftProcessor Class Reference
[Shift modules]

#include <BALL/NMR/EFShiftProcessor.h>

Inheritance diagram for BALL::EFShiftProcessor:
BALL::ShiftModule BALL::UnaryProcessor< Composite > BALL::UnaryFunctor< Composite, Processor::Result >

List of all members.


Public Member Functions

Constructors and Destructors.
 EFShiftProcessor ()
 EFShiftProcessor (const EFShiftProcessor &processor)
virtual ~EFShiftProcessor ()
Accessors.
virtual void init ()
Processor specific functions.
virtual bool start ()
virtual Processor::Result operator() (Composite &composite)
virtual bool finish ()

Static Public Attributes

Enums and Constants
static const char * PROPERTY__EF_SHIFT

Protected Attributes

std::list< Bond * > bond_list_
std::list< Atom * > effector_list_
std::vector< Expressionfirst_atom_expressions_
std::vector< Expressionsecond_atom_expressions_
std::vector< floatepsilon1_
std::vector< floatepsilon2_
StringHashMap< floatcharge_map_
bool exclude_residue_field_
float cut_off2_

Detailed Description

Shift assignment processor implementing the electric field effect.


Constructor & Destructor Documentation

BALL::EFShiftProcessor::EFShiftProcessor (  ) 

Default constructor.

BALL::EFShiftProcessor::EFShiftProcessor ( const EFShiftProcessor processor  ) 

Copy constructor.

virtual BALL::EFShiftProcessor::~EFShiftProcessor (  )  [virtual]

Destructor.


Member Function Documentation

virtual bool BALL::EFShiftProcessor::finish (  )  [virtual]

Finish method. This method performs the chemical shift calculation. It iterates over all bonds stored in bond_list_ . If the two bond atoms match a pair of expressions from first_atom_expressions_ and second_atom_expressions_ , the electric field vector is calculated at the bond position using Coulomb's law and the charges and positions of the atoms in the effector_list_ . The chemical shift induced by the electric field effect is calculated as ${EF} = * E_z + * E^2 $ where constants $$ and $$ are read from the parameter file (section ElectricFieldEffect). The chemical shift is stored in the {first} atom using the named property ShiftModule::PROPERTY__SHIFT and in the named property PROPERTY__EF_SHIFT .

Returns:
bool, false if parameters_ == 0

Reimplemented from BALL::ShiftModule.

virtual void BALL::EFShiftProcessor::init (  )  [virtual]

Initialization method. This method reads the parameter section ElectricFieldEffect and parses its contents. This section contains the definition of two expressions that define a bond (the first expression matches the atom whose shift is to be calculated, the second describes its bond partner). For each of these bonds, two parameters are given, $$ and $$.

Then, this method extracts the contents of the Charges section and thus constructs a hash map containing residue and atom names the corresponding charges. This processor is applied to all atoms in () operator () , so expect the atom charges to change!
See also:
operator ()

Reimplemented from BALL::ShiftModule.

virtual Processor::Result BALL::EFShiftProcessor::operator() ( Composite composite  )  [virtual]

operator (). This method sets the charge for all atoms it encounters (using assign_charge_processor_ ). Charged atoms are stored in the atom list effector_list_ . All bonds are stored in bond_list_ .

Returns:
Processor::CONTINUE
Parameters:
composite an arbitrary composite. All non-atom objects are ignored.

Reimplemented from BALL::UnaryProcessor< Composite >.

virtual bool BALL::EFShiftProcessor::start (  )  [virtual]

Processor start method. This method clears the bond and effector list. It fails if no parameters were assigned.

Returns:
bool, false if parameters_ == 0

Reimplemented from BALL::ShiftModule.


Member Data Documentation

std::list<Bond*> BALL::EFShiftProcessor::bond_list_ [protected]
std::vector<float> BALL::EFShiftProcessor::epsilon1_ [protected]
std::vector<float> BALL::EFShiftProcessor::epsilon2_ [protected]

A symbolic name for the electric field contribution to the chemical shift.

See also:
ShiftModule::PROPERTY__SHIFT