1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
// $Id: assignTypes.h,v 1.16 2005/12/23 17:01:51 amoll Exp $
//
// Molecular Mechanics: atom type assignment
#ifndef BALL_MOLMEC_COMMON_ASSIGNTYPES_H
#define BALL_MOLMEC_COMMON_ASSIGNTYPES_H
#ifndef BALL_CONCEPT_PROCESSOR_H
# include <BALL/CONCEPT/processor.h>
#endif
#ifndef BALL_MOLMEC_PARAMETER_ATOMTYPES_H
# include <BALL/MOLMEC/PARAMETER/atomTypes.h>
#endif
#include <vector>
namespace BALL
{
/// Only used for deriving interface
class BALL_EXPORT AssignBaseProcessor
: public UnaryProcessor<Atom>
{
public:
///
AssignBaseProcessor();
/** Set the number of atoms, for which the setup of the forcefield can
fail, until the setup() methods aborts and return false.
By default, there is no limit set.
*/
void setMaximumUnassignedAtoms(Size nr);
/** Get the number of atoms, for which the setup of the forcefield can
fail, until the setup() methods aborts and return false.
*/
Size getMaximumUnassignedAtoms() const;
/// Get the number of atoms, for which the force field setup failed.
Size getNumberOfUnassignedAtoms() const;
/// Get the atoms, for which the force field setup failed.
HashSet<const Atom*>& getUnassignedAtoms();
protected:
//_ Atoms, for which the setup of the force field fails
HashSet<const Atom*> unassigned_atoms_;
//_ max number of unassigned atoms
Size max_number_unassigned_atoms_;
};
/** Type assignment processor.
\ingroup MolmecCommon
*/
class BALL_EXPORT AssignTypeProcessor
: public AssignBaseProcessor
{
public:
/** @name Constructors and Destructors
*/
//@{
/**
*/
AssignTypeProcessor(const AtomTypes& atom_types);
//@}
/** @name Processor related methods
*/
//@{
/**
*/
virtual Processor::Result operator () (Atom& atom);
//@}
protected:
AtomTypes atom_types_;
};
/** Assign type names to atoms.
\ingroup MolmecCommon
*/
class BALL_EXPORT AssignTypeNameProcessor
: public AssignBaseProcessor
{
public:
/** @name Constructors and Destructors
*/
//@{
/**
*/
AssignTypeNameProcessor(const String& filename, bool overwrite = false);
//@}
/** @name Processor related methods
*/
//@{
/**
*/
virtual Processor::Result operator () (Atom& atom);
//@}
protected:
StringHashMap<String> type_map_;
bool overwrite_;
};
} // namespace BALL
#endif // BALL_MOLMEC_COMMON_ASSIGNTYPES_H
|