Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
LoopRefineInnerCycle.hh
Go to the documentation of this file.
1 // -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
2 // vi: set ts=2 noet:
3 //
4 // (c) Copyright Rosetta Commons Member Institutions.
5 // (c) This file is part of the Rosetta software suite and is made available
6 // (c) under license. The Rosetta software is developed by the contributing
7 // (c) members of the Rosetta Commons. For more information, see
8 // (c) http://www.rosettacommons.org. Questions about this can be addressed to
9 // (c) University of Washington UW TechTransfer, email:license@u.washington.edu
10 
11 /// @file protocols/loops/loop_mover/refine/LoopRefineInnerCycle.hh
12 /// @brief Abstract class to define interface for all types of "inner cycle" operations used for loop refinement.
13 /// @detailed
14 ///
15 /// @author Brian D. Weitzner ( brian.weitzner@gmail.com )
16 
17 
18 #ifndef INCLUDED_protocols_loops_loop_mover_refine_LoopRefineInnerCycle_HH
19 #define INCLUDED_protocols_loops_loop_mover_refine_LoopRefineInnerCycle_HH
20 
21 // Unit headers
23 #include <protocols/moves/Mover.hh>
24 
25 // Package headers
26 // #include <protocols/loops/loop_mover/LoopMover.fwd.hh>
29 
30 // Project headers
35 
36 // Utility headers
37 #include <utility/vector1.fwd.hh>
38 
39 // C++ headers
40 #include <iostream>
41 
42 namespace protocols {
43 namespace loops {
44 namespace loop_mover {
45 namespace refine {
46 
48 public: // boiler plate / virtuals
49  // default constructor
51 
52  // copy constructor
54 
55  // assignment operator
57 
58  // destructor
59  virtual ~LoopRefineInnerCycle();
60 
61  // constructor with arguments
67  );
68 
69  virtual void apply( Pose & ) = 0;
70  virtual std::string get_name() const;
71 
72  ///@brief This mover retains state such that a fresh version is needed if the input Pose is about to change
73  virtual bool reinitialize_for_new_input() const;
74 
75  /// @brief Associates relevant options with the LoopRefineInnerCycle class
76  static void register_options();
77 
78  // NOTE: The clone() and fresh_instance() virtual methods are omitted because this class is abstract
79 
80 public: // printing methods
81  virtual void show( std::ostream & out=std::cout );
82  friend std::ostream & operator<<(std::ostream& out, LoopRefineInnerCycle const & loop_refine_inner_cycle );
83 
84 public: // class-specific public methods
85  bool debug() const;
86  void set_debug( bool debug );
87 
88  moves::MonteCarloOP mc() const;
89  virtual void set_mc( moves::MonteCarloOP mc);
90 
92  virtual void set_scorefxn( core::scoring::ScoreFunctionOP scorefxn);
93 
96 
98  virtual void set_loop_mover( LoopMover_Refine_CCDAP new_owner_in_town );
99 
100 protected:
103 
104  Loops get_one_random_loop() const;
105 
106  void setup_objects( Pose const & pose );
107 
108 private: // methods
109  void init();
110  void init(
111  LoopMover_Refine_CCDAP loop_mover,
115  );
116 
118  void init_options();
119 
120 private: // data
121  bool debug_;
122 
123  LoopMover_Refine_CCDAP loop_mover_that_owns_me_; // access pointer prevents strong reference cycle
127 
129 
130 }; // class LoopRefineInnerCycle
131 
132 } // namespace refine
133 } // namespace loop_mover
134 } // namespace loops
135 } // namespace protocols
136 
137 #endif // INCLUDED_protocols_loops_loop_mover_refine_LoopRefineInnerCycle_HH