pointgroup.h
Go to the documentation of this file.
00001 /********************************************************************** 00002 pointgroup.h - Brute force point group symmetry detection 00003 00004 Copyright (C) 1996, 2003 S. Patchkovskii, [email protected] 00005 Some portions Copyright (C) 2007 by Geoffrey R. Hutchison 00006 00007 This file is part of the Open Babel project. 00008 For more information, see <http://openbabel.org/> 00009 00010 This program is free software; you can redistribute it and/or modify 00011 it under the terms of the GNU General Public License as published by 00012 the Free Software Foundation version 2 of the License. 00013 00014 This program is distributed in the hope that it will be useful, 00015 but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 GNU General Public License for more details. 00018 ***********************************************************************/ 00019 00020 #ifndef OB_POINTGROUP_H 00021 #define OB_POINTGROUP_H 00022 00023 #include <openbabel/babelconfig.h> 00024 00025 #include <string> 00026 00027 #include <openbabel/mol.h> 00028 00029 namespace OpenBabel 00030 { 00031 00032 class PointGroupPrivate; 00033 00042 class OBAPI OBPointGroup 00043 { 00044 public: 00045 OBPointGroup(); 00046 ~OBPointGroup(); 00047 00048 enum Symbol 00049 { // The most likely 60 cases 00050 C1 = 0, Cs, Ci, // 0 to 2 00051 C2, C3, C4, C5, C6, C7, C8, // 3 to 9 00052 D2, D3, D4, D5, D6, D7, D8, // 10 to 16 00053 C2v, C3v, C4v, C5v, C6v, C7v, C8v, // 17 to 23 00054 C2h, C3h, C4h, C5h, C6h, C7h, C8h, // 24 to 30 00055 D2d, D3d, D4d, D5d, D6d, D7d, D8d, // 31 to 37 00056 D2h, D3h, D4h, D5h, D6h, D7h, D8h, // 38 to 44 00057 S4, S6, S8, // 45 to 47 00058 T, Th, Td, // 48 to 50 00059 O, Oh, // 51, 52 00060 Cinfv, Dinfh, // 53, 54 00061 I, Ih, // 55, 56 00062 K, Kh, // 57, 58 00063 Unknown // 59 00064 }; 00065 00067 void Setup(OBMol *); 00068 00075 const char * IdentifyPointGroup(); 00076 00078 const char * IdentifyPointGroup(double tolerance /* = 0.01*/ ); 00079 00082 Symbol IdentifyPointGroupSymbol(double tolerance = 0.01); 00083 00084 void Symmetrize(OBMol *); 00085 00086 protected: 00087 PointGroupPrivate *d; 00088 00089 }; // class OBPointGroup 00090 00091 }// namespace OpenBabel 00092 00093 #endif // OB_POINT_GROUP_H 00094