00001
00002
00003
00004
00005
00006
00007
00008
00009
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 }
00090
00091 #endif // BALL_STRUCTURE_MOLECULEASSEMBLER_H
00092