32 #include <utility/vector1.hh>
34 #include <numeric/constants.hh>
36 #include <basic/options/option.hh>
37 #include <basic/options/keys/score.OptionKeys.gen.hh>
38 #include <basic/Tracer.hh>
66 static basic::Tracer
TR(
"core.scoring.NVscore");
71 lookup_table_(
ScoringManager::get_instance()->get_NVLookupTable() )
74 lower_bound_ = basic::options::option[ basic::options::OptionKeys::score::NV_lbound]();
75 upper_bound_ = basic::options::option[ basic::options::OptionKeys::score::NV_ubound]();
143 Vector neighbor_vector_sum(0,0,0);
145 conformation::ResidueOPs::iterator poseIT;
152 node_index = graph.get_node( current_residue.
seqpos() )->const_edge_list_begin(),
153 node_index_end = graph.get_node( current_residue.
seqpos() )->const_edge_list_end();
154 node_index != node_index_end; ++node_index )
158 core::Size comparison_residue_index((*node_index)->get_other_ind(current_residue.
seqpos()));
161 if(current_residue.
seqpos() == comparison_residue->seqpos())
continue;
162 Vector const & comparison_vector(comparison_residue->nbr_atom_xyz());
164 Vector::Value distance2 = current_vector.distance_squared(comparison_vector);
171 Vector weighted_vector = ( (comparison_vector-current_vector) / sqrt(distance2)) * weight;
172 neighbor_count += weight;
173 neighbor_vector_sum += weighted_vector;
179 if ( neighbor_count == 0.0 )
return;
183 Real neighbor_vector = average_sum.norm();