sdGenerator.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: sdGenerator.h,v 1.4.10.2 2007/04/03 13:29:41 bertsch Exp $
00005 //
00006 // Author:
00007 //   Holger Franken
00008 //
00009 
00010 
00011 #ifndef BALL_STRUCTURE_SDGENERATOR_H
00012 #define BALL_STRUCTURE_SDGENERATOR_H
00013 
00014 #ifndef BALL_DATATYPE_OPTIONS_H
00015 # include <BALL/DATATYPE/options.h>
00016 #endif
00017 
00018 #include <BALL/common.h>
00019 
00020 #include <vector>
00021 
00022 namespace BALL
00023 {
00024   class System;
00025   class Atom;
00026 
00030   class BALL_EXPORT SDGenerator
00031   {
00032     private:
00033 
00038       void checkAtoms(System& molecule_sys);
00039 
00045       std::vector<std::vector<Atom*> > getSSSR(System& molecule_sys);
00046 
00047 
00048     public:
00049     
00053 
00054       struct BALL_EXPORT Option
00055       { 
00058         static const char* SHOW_HYDROGENS;
00059       };
00060 
00062       struct BALL_EXPORT Default
00063       {
00064         static const bool SHOW_HYDROGENS;
00065       };
00066       
00068       
00069 
00074       SDGenerator(bool show_hydrogens = false);
00075 
00076 
00081       virtual ~SDGenerator();
00082 
00086 
00087       Options options;
00088 
00091       void setDefaultOptions();
00093 
00098       void generateSD(System& molecule_sys);
00099 
00106       std::pair<Atom*, Atom*> getNeighbours(std::vector<Atom*>& ring, Atom*& atom);
00107 
00113       std::vector<std::vector<Atom*> > sequenceRings(std::vector<std::vector<Atom*> >& ringsystem);
00114       
00118     enum Property 
00119     {
00120       IN_RING,
00121       PRE_CORE_CHAIN,
00122       CORE_CHAIN,
00123       FOUND,
00124       INVALID,
00125       DEPOSITED,
00126       FIRSTNEIGHBOUR,
00127       SEQUENCED,
00128       FXAS,
00129       EDGE,
00130       BUILT_IN_CHAIN,
00131       ASSEMBLED,
00132       SHIFTED,
00133       PRE_ASSEMBLED,
00134       ROTATED,
00135       ZIG,
00136       ZAG,
00137       STRAIGHT
00138     };
00139 
00140   };
00141 
00142 } // namepspace BALL
00143 
00144 #endif