BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
MMFF94Processors.h
Go to the documentation of this file.
1 // -*- Mode: C++; tab-width: 2; -*-
2 // vi: set ts=2:
3 //
4 // $Id: MMFF94Processors.h,v 1.1.8.1 2007/03/25 21:25:18 oliver Exp $
5 //
6 
7 #ifndef BALL_MOLMEC_MMFF94_PROCESSORS_H
8 #define BALL_MOLMEC_MMFF94_PROCESSORS_H
9 
10 #ifndef BALL_MOLMEC_MMFF94_MMFF94PARAMETERS_H
12 #endif
13 
14 #ifndef BALL_DATATYPE_HASHSET_H
15 # include <BALL/DATATYPE/hashSet.h>
16 #endif
17 
18 #ifndef BALL_DATATYPE_STRINGHASHMAP_H
20 #endif
21 
22 #ifndef BALL_KERNEL_BOND_H
23 # include <BALL/KERNEL/bond.h>
24 #endif
25 
26 #ifndef BALL_STRUCTURE_ATOMTYPER_H
28 #endif
29 
30 #include <vector>
31 
32 namespace BALL
33 {
34  using std::vector;
35 
36  class MMFF94ESParameters;
37  class Molecule;
38  class System;
39 
42  : public AtomTyper
43  {
44  public:
45 
46  struct AromaticType
47  {
50  bool cation;
51  bool anion;
52  };
53 
55 
56 
58 
60  MMFF94AtomTyper(const MMFF94AtomTyper& t);
61 
63  virtual ~MMFF94AtomTyper() {};
64 
66  virtual void assignTo(System& s);
67 
69  virtual bool setupHydrogenTypes(Parameters& p, const String& section);
70 
72  virtual bool setupSymbolsToTypes(Parameters& p, const String& section);
73 
75  virtual bool setupAromaticTypes(Parameters& p, const String& section);
76 
78  void collectHeteroAtomTypes(const MMFF94AtomTypes& atom_types);
79 
80  protected:
81 
82  bool assignAromaticType_5_(Atom& atom, Position L5, bool anion, bool cation);
83 
90  };
91 
92 
97  : public UnaryProcessor<Atom>
98  {
99  public:
100 
102 
103 
105 
108 
111 
113  const MMFF94ChargeProcessor& operator = (const MMFF94ChargeProcessor& cp)
114  ;
115 
117  virtual void clear()
118  ;
119 
121  virtual bool start();
122 
124  virtual bool finish();
125 
127  virtual Processor::Result operator () (Atom& atom);
128 
130  void assignFormalCharge(Atom& atom);
131 
133  const HashSet<Atom*>& getUnassignedAtoms() { return unassigned_atoms_;}
134 
136  void setESParameters(const MMFF94ESParameters& es) { es_parameters_ = &es; }
137 
139  void setup(const String& filename);
140 
142  void setAromaticRings(const vector<HashSet<Atom*> >& rings) { aromatic_rings_ = rings;}
143 
144  protected:
145 
146  void assignPartialCharges_();
147 
148  vector<Atom*> atoms_;
153  vector<HashSet<Atom*> > aromatic_rings_;
154  };
155 
156 } // namespace BALL
157 
158 #endif // BALL_MOLMEC_MMFF94_PROCESSORS_H