Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
BetaAlphaBetaMotif.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 // This file is part of the Rosetta software suite and is made available under license.
5 // The Rosetta software is developed by the contributing members of the Rosetta Commons consortium.
6 // Copyright in the Rosetta software belongs to the developers and their institutions.
7 // For more information, see www.rosettacommons.org.
8 
9 /// @file ./src/protocols/fldgsn/BetaAlphaBetaMotif.hh
10 /// @brief
11 /// @author Nobuyasu Koga ( nobuyasu@uw.edu )
12 
13 #ifndef INCLUDED_protocols_fldsgn_topology_BetaAlphaBetaMotif_hh
14 #define INCLUDED_protocols_fldsgn_topology_BetaAlphaBetaMotif_hh
15 
16 // unit headers
18 
19 // project headers
20 #include <core/types.hh>
23 
24 // utility headers
25 #include <utility/pointer/ReferenceCount.hh>
26 
27 // C++ headers
28 #include <cassert>
29 
30 #include <utility/vector1_bool.hh>
31 #include <numeric/xyzVector.hh>
32 
33 namespace protocols {
34 namespace fldsgn {
35 namespace topology {
36 
38 public:
39 
40 
41  typedef core::Size Size;
42  typedef core::Real Real;
46 
47 
48 public:// construct/destruct
49 
50 
51  /// @brief default constructor
53 
54  /// @brief value constructor
56  Size const & strand1,
57  Size const & strand2,
58  Size const & helix,
59  Size const & cross_over );
60 
61  /// @brief copy constructor
63 
64  /// @brief destructor
65  virtual ~BetaAlphaBetaMotif();
66 
67 
68 public:// operator
69 
70 
71  /// @brief IO Operator
72  friend std::ostream & operator<<(std::ostream & out, const BetaAlphaBetaMotif & s );
73 
74 
75 public:// accessor
76 
77 
78  String name() const;
79 
80  inline Size helix() const { return helix_; }
81 
82  inline Size strand1() const { return strand1_; }
83 
84  inline Size strand2() const { return strand2_; }
85 
86  inline Size cross_over() const { return cross_over_; }
87 
88  inline bool is_lefthanded() const { return left_handed_; }
89 
90  inline Real hsheet_dist() const { return hs_dist_; }
91 
92  inline Real hs1_dist() const { return hs1_dist_; }
93 
94  inline Real hs2_dist() const { return hs2_dist_; }
95 
96  inline Real hs_angle() const { return hs_angle_; }
97 
98  inline Real hsheet_elev_angle() const { return hsheet_elev_angle_; }
99 
101 
103 
104 private:// mutator
105 
106 
107  inline void left_handed( bool const v ) { left_handed_ = v; }
108 
109  void calc_helix_cycle( SS_Info2_COP const ssinfo );
110 
111 public:
112 
113 
114  Size calc_inout( SS_Info2_COP const ssinfo, Size const resi ) const;
115 
116  void calc_geometry( SS_Info2_COP const ssinfo, SheetSetCOP const sheet_set );
117 
118 
119 private: /// data
120 
121  /// @brief id of strand
123 
124  /// @brief id of strand
126 
127  /// @brief id of helix
129 
130  /// @brief number of strands crossed over by bab-motif
132 
133  /// @brief is this left handed ?
135 
136  /// @brief vector to define sheet plane
138 
139  /// @brief one positional vector in beta sheet plane
141 
142  /// @brief distance between helix and sheet
144 
145  /// @brief angle between helix projected on sheet and strands
147 
148  /// @brief distance between helix and mid point of strand1_
150 
151  /// @brief distance between helix and mid point of strand2_
153 
154  /// @brief elevation angle of helix respect to sheet
156 
157  /// @brief cylce of helix against sheet
159 
161 
162 
163 };
164 
165 ////////////////////////////////////////////////////////////////////////////////////////////////////
167 public:
168 
169 
170  typedef core::Real Real;
171  typedef core::Size Size;
174 
175 
176 public:// constructor/destructor
177 
178 
179  /// @brief default constructor
181 
182  /// @brief value constructor
184 
185  /// @brief value constructor
186  BetaAlphaBetaMotifSet( SS_Info2_COP const ssinfo, SheetSetCOP const sheet_set );
187 
188  /// @brief copy constructor
190 
191  /// @brief destructor
192  virtual ~BetaAlphaBetaMotifSet();
193 
194 
195 public://
196 
197 
198  /// @brief
199  void push_back( BetaAlphaBetaMotifOP const bop );
200 
201  /// @brief
202  void clear();
203 
204  /// @brief
205  Size size() const { return bab_motifs_.size(); }
206 
207 
208 public:// accessor
209 
210 
211  /// @brief
212  BetaAlphaBetaMotifs const & bab_motifs() const;
213 
214  /// @brief
215  BetaAlphaBetaMotifOP bab_motif( Size const & i ) const;
216 
217  /// @brief
218  friend std::ostream & operator<<( std::ostream & out, const BetaAlphaBetaMotifSet & s );
219 
220 
221 public:
222 
223 
224  /// @brief
225  void set_babmotifs( SS_Info2_COP const ssinfo, SheetSetCOP const sheet_set );
226 
227  /// @brief
228  void calc_geometry( SS_Info2_COP const ssinfo, SheetSetCOP const sheet_set );
229 
230 
231 private:
232 
234 
235 };
236 
237 } // namespace topology
238 } // namespace fldsgn
239 } // namespace protocols
240 
241 #endif