37 #include <basic/Tracer.hh>
38 #include <basic/basic.hh>
39 #include <basic/prof.hh>
42 #include <numeric/angle.functions.hh>
43 #include <numeric/constants.hh>
44 #include <numeric/conversions.hh>
45 #include <numeric/random/random.hh>
48 #include <utility/string_util.hh>
49 #include <utility/tag/Tag.hh>
50 #include <utility/exit.hh>
55 #include <utility/fixedsizearray1.hh>
57 using namespace core::pose;
59 static numeric::random::RandomGenerator
RG(18615125);
60 static basic::Tracer
TR(
"protocols.simple_moves.sidechain_moves.PerturbChiSidechainMover");
63 namespace simple_moves {
64 namespace sidechain_moves {
66 using namespace chemical;
67 using namespace conformation;
71 PerturbChiSidechainMoverCreator::keyname()
const {
72 return PerturbChiSidechainMoverCreator::mover_name();
76 PerturbChiSidechainMoverCreator::create_mover()
const {
81 PerturbChiSidechainMoverCreator::mover_name() {
82 return "PerturbChiSidechain";
87 PerturbChiSidechainMover::PerturbChiSidechainMover() {
92 PerturbChiSidechainMover::PerturbChiSidechainMover(
94 ) :
Parent( rotamer_library ) {
129 return "PerturbChiSidechainMover";
138 new_chi.resize( old_chi.size() );
139 for (
Size i = 1; i <= old_chi.size(); i++) {
142 new_chi[ i ] = basic::periodic_range( (( 2.0*rand-1.0 )*
magnitude_ + old_chi[ i ]) , 360.0 );
144 new_chi[ i ] = basic::periodic_range( old_chi[i] +
RG.gaussian()*
magnitude_, 360.0 );