MTK++ Latest version: 0.2.0

proProtonate.h
Go to the documentation of this file.
00001 
00034 #ifndef PROPROTONATE_H
00035 #define PROPROTONATE_H
00036 
00037 #include <iostream>
00038 #include <string>
00039 #include <vector>
00040 #include <algorithm>
00041 #include <cmath>
00042 
00043 namespace MTKpp
00044 {
00045 
00046 class collection;
00047 class molecule;
00048 class submolecule;
00049 class atom;
00050 struct Bond;
00051 
00052 class vector3d;
00053 
00054 class stdLibrary;
00055 class stdGroup;
00056 class stdFrag;
00057 struct stdAtom;
00058 struct stdBond;
00059 struct stdImproper;
00060 struct stdLoop;
00061 struct stdAlias;
00062 
00063 class parameters;
00064 struct bondParam;
00065 struct angleParam;
00066 struct torsionParam;
00067 
00068 // ============================================================
00069 // Class : proProtonate()
00070 // ------------------------------------------------------------
00082 // ============================================================
00083 class proProtonate
00084 {
00085     friend class protonate;
00086 public:
00087 
00091     proProtonate();
00092 
00094     virtual ~proProtonate();
00095 
00101        void addHydrogens(submolecule* s1, stdFrag* f1);
00102 
00103 protected:
00104 
00111     void buildMissingAtoms(submolecule* pSubMolecule,
00112                            std::vector<stdAtom*> missingChainAtoms,
00113                            std::vector<atom*> first3Atoms);
00114 
00119     void buildDummyAtoms(std::vector<atom*> first3Atoms);
00120 
00130     std::vector<double> getBestTorsions(stdFrag* pStdFrag, stdAtom* stdAt1, atom* at2, atom* at3, atom* at4);
00131 
00135     void optimizePolarHs();
00136 
00137 protected: // DATA
00139     collection*    pCol;
00140 
00142     bool bCol;
00143 
00145     molecule*      pMol;
00146 
00148     bool bMol;
00149 
00151     std::vector<submolecule*> subMoleculeList;
00152 
00154     std::vector<atom*>        atomList;
00155 
00157     submolecule*   pSubMolecule;
00158 
00160     submolecule*   pSubMoleculeMinus1;
00161 
00163     atom*          pAtom1;
00164 
00166     atom*          pAtom2;
00167 
00169     atom*          pAtom3;
00170 
00172     atom*          pAtom4;
00173 
00175     Bond*          pBond;
00176 
00178     vector3d*      coord1;
00179 
00181     vector3d*      coord2;
00182 
00184     stdLibrary*    pStdLibrary;
00185 
00187     stdGroup*      pStdGroup;
00188 
00190     stdFrag*       pStdFrag;
00191 
00193     stdFrag*       pStdFragMinus1;
00194 
00196     stdAtom*       pStdAtom;
00197 
00199     stdAtom*       pStdAtom1;
00200 
00202     stdAtom*       pStdAtom2;
00203 
00205     stdAtom*       pStdAtom3;
00206 
00208     stdAtom*       pStdAtom4;
00209 
00211     atom*          dummyAtom1;
00212 
00214     atom*          dummyAtom2;
00215 
00217     atom*          dummyAtom3;
00218 
00220     parameters*    pParam;
00221 
00223     std::vector<atom*> prev3Atoms;
00224 };
00225 
00226 } // MTKpp namespace
00227 
00228 #endif // PROPROTONATE_H

Generated on Fri Dec 23 2011 09:28:51 for MTK++ by Doxygen 1.7.5.1