#include <BALL/NMR/haighMallionShiftProcessor.h>
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_ |
Shift assignment processor implementing Haigh Mallion theory.
BALL::HaighMallionShiftProcessor::HaighMallionShiftProcessor | ( | ) |
Default constructor.
virtual BALL::HaighMallionShiftProcessor::~HaighMallionShiftProcessor | ( | ) | [virtual] |
Destructor.
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 >.
std::list<Residue*> BALL::HaighMallionShiftProcessor::aromat_list_ [private] |
String** BALL::HaighMallionShiftProcessor::asrings_ [private] |
const float BALL::HaighMallionShiftProcessor::B_ [static, private] |
const float BALL::HaighMallionShiftProcessor::big_loop_radius_ [static, private] |
const float BALL::HaighMallionShiftProcessor::little_loop_radius_ [static, private] |
const char* BALL::HaighMallionShiftProcessor::PROPERTY__RING_CURRENT_SHIFT [static] |
A symbolic name for the ring current contribution to the chemical shift.
std::list<Atom*> BALL::HaighMallionShiftProcessor::proton_list_ [private] |