28 #include <numeric/xyzVector.hh>
30 #include <utility/vector1.hh>
40 Vector const & r1sc_centroid,
41 Vector const & r2sc_centroid,
42 Real const & r1sc_radius,
43 Real const & r2sc_radius,
49 Real const scsc_d2 = r1sc_centroid.distance_squared( r2sc_centroid );
50 Real const scsc_radsum = r1sc_radius + r2sc_radius;
51 for ( ScoreFunction::CI_2B_Methods::const_iterator
53 iter != iter_end; ++iter ) {
54 Real cutoff = scsc_radsum + (*iter)->atomic_interaction_cutoff();
55 if ( ! (*iter)->divides_backbone_and_sidechain_energetics() || scsc_d2 < cutoff * cutoff ) {
56 (*iter)->sidechain_sidechain_energy( r1, r2, pose, sfxn, emap );
59 for ( ScoreFunction::CD_2B_Methods::const_iterator
61 iter != iter_end; ++iter ) {
62 Real cutoff = scsc_radsum + (*iter)->atomic_interaction_cutoff();
63 if ( ! (*iter)->divides_backbone_and_sidechain_energetics() || scsc_d2 < cutoff * cutoff ) {
64 (*iter)->sidechain_sidechain_energy( r1, r2, pose, sfxn, emap );
73 Vector const & r1bb_centroid,
74 Vector const & r2sc_centroid,
75 Real const & r1bb_radius,
76 Real const & r2sc_radius,
82 Real const bbsc_d2 = r1bb_centroid.distance_squared( r2sc_centroid );
83 Real const bbsc_radsum = r1bb_radius + r2sc_radius;
84 for ( ScoreFunction::CI_2B_Methods::const_iterator
86 iter != iter_end; ++iter ) {
87 if ( (*iter)->divides_backbone_and_sidechain_energetics() ) {
88 Real cutoff = bbsc_radsum + (*iter)->atomic_interaction_cutoff();
89 if ( bbsc_d2 < cutoff * cutoff ) {
90 (*iter)->backbone_sidechain_energy( r1, r2, pose, sfxn, emap );
94 for ( ScoreFunction::CD_2B_Methods::const_iterator
96 iter != iter_end; ++iter ) {
97 if ( (*iter)->divides_backbone_and_sidechain_energetics() ) {
98 Real cutoff = bbsc_radsum + (*iter)->atomic_interaction_cutoff();
99 if ( bbsc_d2 < cutoff * cutoff ) {
100 (*iter)->backbone_sidechain_energy( r1, r2, pose, sfxn, emap );
110 Vector const & r1bb_centroid,
111 Vector const & r2bb_centroid,
112 Real const & r1bb_radius,
113 Real const & r2bb_radius,
119 Real const bbbb_d2 = r1bb_centroid.distance_squared( r2bb_centroid );
120 Real const bbbb_radsum = r1bb_radius + r2bb_radius;
121 for ( ScoreFunction::CI_2B_Methods::const_iterator
123 iter != iter_end; ++iter ) {
124 if ( (*iter)->divides_backbone_and_sidechain_energetics() ) {
125 Real cutoff = bbbb_radsum + (*iter)->atomic_interaction_cutoff();
126 if ( bbbb_d2 < cutoff * cutoff ) {
127 (*iter)->backbone_backbone_energy( r1, r2, pose, sfxn, emap );
131 for ( ScoreFunction::CD_2B_Methods::const_iterator
133 iter != iter_end; ++iter ) {
134 if ( (*iter)->divides_backbone_and_sidechain_energetics() ) {
135 Real cutoff = bbbb_radsum + (*iter)->atomic_interaction_cutoff();
136 if ( bbbb_d2 < cutoff * cutoff ) {
137 (*iter)->backbone_backbone_energy( r1, r2, pose, sfxn, emap );
149 Vector bb_centroid( 0.0 );
150 Size count_n_bb( 0 );
153 bb_centroid += res.
xyz( ii );
155 if ( count_n_bb != 0 ) bb_centroid /= count_n_bb;
162 Vector const & bb_centroid
167 Real d2 = res.
xyz( ii ).distance_squared( bb_centroid );
168 if ( bb_radius < d2 ) bb_radius = d2;
182 centroid += res.
xyz( ii );
200 Real d2 = res.
xyz(ii).distance_squared( centroid );
201 if ( d2 > max_d2 ) max_d2 = d2;
203 return std::sqrt( max_d2 );