25 #include <basic/Tracer.hh>
28 #include <utility/pointer/access_ptr.hh>
29 #include <utility/pointer/owning_ptr.hh>
30 #include <utility/pointer/ReferenceCount.hh>
44 #include <utility/vector1.hh>
52 static basic::Tracer
TR(
"core.mm.MMBondAngleResidueTypeParamSet");
55 mm_bondangle_library_( scoring::
ScoringManager::get_instance()->get_MMBondAngleLibrary() ),
56 use_residue_type_theta0_( false )
63 utility::pointer::ReferenceCount( src )
103 return &(iter->second);
131 other_connection = 0;
148 lookup(conformation, atomid1, atomid2, atomid3, residue_type_param, Ktheta, theta0);
166 if (residue_type_param) {
167 lookup(conformation, atomid1, atomid2, atomid3, *residue_type_param, Ktheta, theta0);
172 lookup(conformation, atomid1, atomid2, atomid3, new_param, Ktheta, theta0);
191 if (atomid1.
rsd() == atomid2.
rsd() && atomid1.
rsd() == atomid3.
rsd()) {
197 if (bondangle_index != 0) {
199 Ktheta = residue_type_param.
Ktheta(bondangle_index);
200 theta0 = residue_type_param.
theta0(bondangle_index);
206 int const mmtype1(conformation.
residue_type(atomid1.
rsd()).atom(atomid1.
atomno()).mm_atom_type_index());
207 int const mmtype2(conformation.
residue_type(atomid2.
rsd()).atom(atomid2.
atomno()).mm_atom_type_index());
208 int const mmtype3(conformation.
residue_type(atomid3.
rsd()).atom(atomid3.
atomno()).mm_atom_type_index());
212 Ktheta = (params.first->second).key1();
213 theta0 = (params.first->second).key2();
223 if (atomid1.
rsd() == atomid2.
rsd()) {
225 secondary_rsd = atomid3.
rsd();
226 atomno1 = atomid1.
atomno();
227 atomno3 = atomid3.
atomno();
228 }
else if (atomid2.
rsd() == atomid3.
rsd()) {
230 secondary_rsd = atomid1.
rsd();
231 atomno1 = atomid3.
atomno();
232 atomno3 = atomid1.
atomno();
235 utility_exit_with_message(
"Lookup of three residue bond angle parameters not supported");
242 primary_connection, secondary_connection)) {
245 if (!connection_index) {
250 theta0 = residue_type_param.
connection_theta0(primary_connection, connection_index);
267 if (bond_angle_energy_method) {
268 return bond_angle_energy_method->residue_type_param_set();