MTK++ Latest version: 0.2.0
00001 00033 #ifndef PROTONATE_H 00034 #define PROTONATE_H 00035 00036 #include <iostream> 00037 #include <string> 00038 #include <vector> 00039 #include <algorithm> 00040 #include <cmath> 00041 #include "Utils/constants.h" 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 class proProtonate; 00069 class ligProtonate; 00070 class watProtonate; 00071 00072 // ============================================================ 00073 // Class : protonate() 00074 // ------------------------------------------------------------ 00080 // ============================================================ 00081 class protonate 00082 { 00083 public: 00084 00089 protonate(collection *col = 0); 00090 00095 protonate(molecule *mol = 0); 00096 00098 virtual ~protonate(); 00099 00103 void run(); 00104 00108 void optimizePolarHs(); 00109 00110 protected: // FUNCTIONS 00111 00115 void initialize(); 00116 00120 void runCol(); 00121 00125 void runMol(molecule* pMolecule); 00126 00127 /* 00128 \brief Attempt to build the missing heavy atoms of a fragment 00129 \param pSubMolecule submolcule pointer 00130 */ 00131 int buildMissingHeavyAtoms(submolecule* pSubMolecule); 00132 00133 protected: // DATA 00135 proProtonate* pPro; 00136 00138 ligProtonate* pLig; 00139 00141 watProtonate* pWat; 00142 00144 collection* pCol; 00145 00147 bool bCol; 00148 00150 molecule* pMol; 00151 00153 bool bMol; 00154 00156 std::vector<submolecule*> subMoleculeList; 00157 00159 std::vector<atom*> atomList; 00160 00162 submolecule* pSubMolecule; 00163 00165 submolecule* pSubMoleculeMinus1; 00166 00168 stdLibrary* pStdLibrary; 00169 00171 stdGroup* pStdGroup; 00172 00174 stdFrag* pStdFrag; 00175 00177 stdFrag* pStdFragMinus1; 00178 00180 parameters* pParam; 00181 00183 std::vector<atom*> prev3Atoms; 00184 }; 00185 00186 } // MTKpp namespace 00187 00188 #endif // PROTONATE_H 00189
Generated on Fri Dec 23 2011 09:28:51 for MTK++ by Doxygen 1.7.5.1