moleculeAssembler.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 // -*- Mode: C++; tab-width: 2; -*-
00004 // vi: set ts=2:
00005 //
00006 // $Id: moleculeAssembler.h,v 1.3.10.1 2007/03/25 21:25:28 oliver Exp $
00007 //
00008 // Author:
00009 //   Holger Franken
00010 //
00011 
00012 #ifndef BALL_STRUCTURE_MOLECULEASSEMBLER_H
00013 #define BALL_STRUCTURE_MOLECULEASSEMBLER_H
00014 
00015 #include <BALL/STRUCTURE/sdGenerator.h>
00016 
00017 namespace BALL
00018 {
00019 
00024         class BALL_EXPORT MoleculeAssembler
00025         {
00026 
00027         public:
00028 
00032                 MoleculeAssembler();
00033 
00037                 ~MoleculeAssembler();
00038 
00045                 void assembleMolecule(System& molecule_sys, vector<vector<vector<Atom*> > >& ringsystems, vector<vector<Atom*> >& chains);
00046                 
00052                 static bool compareRingsystems(const vector<vector<Atom*> >& x, const vector<vector<Atom*> >& y);
00053 
00054         private:
00055                 list<Atom*> aq_;
00056 
00063                 void assembleRS(Atom*& start_atom, Atom*& assemble_atom, vector<vector<vector<Atom*> > >& ringsystems);
00064 
00065 
00072                 void assembleChain(Atom*& start_atom, Atom*& assemble_atom, vector<vector<Atom*> >& chains);
00073 
00079                 void assembleSubstituents(Atom*& start_atom, System& molecule_sys);
00080 
00085                 void updateCFS(Atom*& atom);
00086 
00087         };
00088 
00089 } // namespace BALL
00090 
00091 #endif // BALL_STRUCTURE_MOLECULEASSEMBLER_H
00092