56 DeclareParameter(Type, std::string);
62 bool setPosition(
const std::vector<RealType>& pos);
63 bool setOrientation(
const std::vector<RealType>& ort);
64 bool havePosition() {
return havePos_; }
65 bool haveOrientation() {
return haveOrt_; }
66 RealType getPosX() {
return position_[0]; }
67 RealType getPosY() {
return position_[1]; }
68 RealType getPosZ() {
return position_[2]; }
69 RealType getEulerPhi() {
return orientation_[0]; }
70 RealType getEulerTheta() {
return orientation_[1]; }
71 RealType getEulerPsi() {
return orientation_[2]; }
72 int getIndex() {
return index_; }
73 virtual void validate();
74 using AtomIter = std::set<int>::iterator;
75 using BondIter = std::vector<int>::iterator;
76 int getFirstBondedAtom(AtomIter& ai) {
77 ai = bondedAtoms_.begin();
78 return ai != bondedAtoms_.end() ? *ai : -1;
80 int getNextBondedAtom(AtomIter& ai) {
82 return ai != bondedAtoms_.end() ? *ai : -1;
84 int getFirstBond(BondIter& bi) {
86 return bi != bonds_.end() ? *bi : -1;
88 int getNextBond(BondIter& bi) {
90 return bi != bonds_.end() ? *bi : -1;
92 void addBond(
int bondIndex) { bonds_.push_back(bondIndex); }
93 void addBondedAtom(
int atomIndex) { bondedAtoms_.insert(atomIndex); }
94 size_t getCoordination() {
return bonds_.size(); }
95 void overrideCharge(RealType c) {
100 bool hasOverride() {
return hasOverride_; }
101 RealType getOverrideCharge() {
return orCharge_; }
111 std::vector<int> bonds_;
112 std::set<int> bondedAtoms_;