22 #include <basic/Tracer.hh>
25 #include <numeric/xyz.functions.hh>
28 #include <numeric/conversions.hh>
29 #include <utility/string_util.hh>
32 #include <utility/vector1.hh>
37 static basic::Tracer
TR(
"core.mm.MMBondAngleResidueTypeParam");
54 if ( central_atoms_to_score.size() == 0 )
return true;
56 for (
Size ii = 1; ii <= central_atoms_to_score.size(); ++ii ) {
57 if ( utility::same_ignoring_spaces( restype.
atom_name( atomno ), central_atoms_to_score[ ii ] )) {
69 bool use_residue_type_theta0,
83 core::Real residue_type_theta0(numeric::angle_radians(residue_type.
atom(atom_set.key1()).ideal_xyz(), residue_type.
atom(atom_set.key2()).ideal_xyz(), residue_type.
atom(atom_set.key3()).ideal_xyz()));
97 assert(mm_pair.first != mm_pair.second);
99 core::Real mm_Ktheta((mm_pair.first->second).key1());
100 core::Real mm_theta0((mm_pair.first->second).key2());
103 assert(++mm_pair.first == mm_pair.second);
111 theta0_.push_back(use_residue_type_theta0 ? residue_type_theta0 : mm_theta0);
150 core::Size const connection_atomno(residue_connection.atomno());
154 core::Vector external_xyz(residue_connection.icoor().build(residue_type));
157 for (
core::Size j = 1; j <= bonded_neighbors.size(); ++j) {
169 two_atom_set const connection_atom_set(bonded_neighbors[j], connection_atomno);
186 os <<
"Intraresidue Bond Angles:" << std::endl;
191 <<
" Ktheta: " << residue_type_param.
Ktheta_[i]
192 <<
" theta0: " << numeric::conversions::degrees(residue_type_param.
theta0_[i]) << std::endl;
196 os <<
"Connection " << i <<
" Bond Angles:" << std::endl;
200 <<
" rt_theta0: " << numeric::conversions::degrees(residue_type_param.
connection_theta0_[i][j]) <<
" "
201 << (residue_type_param.
connection_use_theta0_[i][j] ?
"use_residue_type_theta0" :
"use_mm_theta0") << std::endl;