#include <addHydrogenProcessor.h>
Public Member Functions |
|
AddHydrogenProcessor (const AddHydrogenProcessor &hbp) | |
virtual bool | start () |
start method |
|
virtual Processor::Result | operator() (Composite &composite) |
operator () |
|
Size | getConnectivity (Atom &atom) |
void | setRings (const vector< vector< Atom * > > &rings) |
Size | getNumberOfAddedHydrogens () |
Protected Member Functions |
|
Size | countBondOrders (Atom &atom) |
void | addHydrogen_ (Atom &atom, Vector3 position) |
bool | isRingAtom_ (Atom &atom) |
vector< Atom * > | getPartners_ (Atom &atom) |
Vector3 | getNormal_ (const Vector3 &v) |
bool | normalize_ (Vector3 &v) |
bool | hasMultipleBond_ (Atom &atom) |
float | getBondLength_ (Position element) |
Protected Attributes |
|
HashSet< Atom * > | ring_atoms_ |
Position | atom_nr_ |
Atom * | last_atom_ |
Size | nr_hydrogens_ |
Only works with main group elements. The formal charge of
the atoms are taken into account. The placement of the hydrogen
atoms only depends on the direct neighbour atoms. No additional
optimization of the atom placement is done. The optimal bond
lengths are calculized by a modified Schomaker-Stevenson rule
(adapted from the MMFF94 force
field).
Usage:
RingPerceptionProcessor rpp; vector<vector<Atom*> > rings; rpp.calculateSSSR(rings, system); rings = rpp.getAllSmallRings(); AddHydrogenProcessor ap; ap.setRings(rings); system.apply(ap);