BALL::HaighMallionShiftProcessor Class Reference
[Shift modules]

#include <BALL/NMR/haighMallionShiftProcessor.h>

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

List of all members.


Public Member Functions

Constructors and Destructors
 HaighMallionShiftProcessor ()
virtual ~HaighMallionShiftProcessor ()
Processor specific functions.
virtual bool finish ()
virtual Processor::Result operator() (Composite &atom)
Accessors
virtual void init ()

Static Public Attributes

Enums and Constants
static const char * PROPERTY__RING_CURRENT_SHIFT

Private Attributes

std::list< Atom * > proton_list_
std::list< Residue * > aromat_list_
String ** asrings_

Static Private Attributes

static const float big_loop_radius_
static const float little_loop_radius_
static const float B_

Detailed Description

Shift assignment processor implementing Haigh Mallion theory.


Constructor & Destructor Documentation

BALL::HaighMallionShiftProcessor::HaighMallionShiftProcessor (  ) 

Default constructor.

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

Destructor.


Member Function Documentation

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

Finish method. Here the work is done: The funcion iterates over all systems's protons by iterating through proton_list_. Then for each proton every ring in aromat_list_ is accessed. The actual ring's ringplane and it's area is calculated. Iterating over every bond of the aromatic ring, the triangle areas are calculated with: The bond's two atoms and the actual proton's projection onto the ringplane. It is important to state that these areas are signed areas, depending on wether there is a right handed system between the plane's normal vector and the difference vectors from the projection to the two bond's atoms. Next the protons distances to the actual two bond's atoms are calculated and stored in a_first and a_second. Then ts is calculated : $ ts = f * (1/a_{first}^3 + 1/a_{second}) $ with f as the actual tringle area. For every bond of the ring this partial sum is calculated , added and stored in gs. Just some constant factor B and the chemical shift using Haigh Mallions Model is done. Important note: Distances are expressed in terms of the actual ring's diameter. Triangle areas are expressed in terms of the actual ring's area.

Reimplemented from BALL::ShiftModule.

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

Initialization method.

Reimplemented from BALL::ShiftModule.

virtual Processor::Result BALL::HaighMallionShiftProcessor::operator() ( Composite atom  )  [virtual]

Application method Works as a collector: It stores the systems aromatic rings in a list called aromat_list_ and each proton in a list called proton_list_

Reimplemented from BALL::UnaryProcessor< Composite >.


Member Data Documentation

A symbolic name for the ring current contribution to the chemical shift.

See also:
ShiftModule::PROPERTY__SHIFT