Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PcsTensor.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 under license.
6 // (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
7 // (c) For more information, see http://www.rosettacommons.org. Questions about this can be
8 // (c) addressed to University of Washington UW TechTransfer, email: license@u.washington.edu.
9 
10  //////////////////////////////////////////////
11  /// @begin
12  ///
13  /// @file protocols/scoring/methods/pcs2/PcsTensor.hh
14  ///
15  /// @brief Hold chi-tensor information of PCS
16  ///
17  /// @detailed
18  ///
19  /// @param
20  ///
21  /// @return
22  ///
23  /// @remarks
24  ///
25  /// @references JBNMR 2008 41:179-189 schmitz et all will explains the tensor convention used
26  ///
27  /// @authorsv Christophe Schmitz
28  ///
29  /// @last_modified February 2010
30  ////////////////////////////////////////////////
31 
32 #ifndef INCLUDED_protocols_scoring_methods_pcs2_PcsTensor_hh
33 #define INCLUDED_protocols_scoring_methods_pcs2_PcsTensor_hh
34 
35 // Package headers
36 
37 // Project headers
38 #include <core/types.hh>
39 
40 // Utility headers
41 
42 // Numeric headers
43 
44 // Objexx headers
45 
46 // C++ headers
47 #include <string>
48 
49 namespace protocols{
50 namespace scoring{
51 namespace methods{
52 namespace pcs2{
53 
54 class PcsTensor {
55 private:
56 
57  core::Real a_; //alpha
58  core::Real b_; //beta
59  core::Real g_; //gamma
60  core::Real ax_; //axial component
61  core::Real rh_; //rhombic component
62  //ideally, alpha beta gamma ax and rh will follow the UTR convention
63  //see numbat paper JBNMR 2008 41:179-189 schmitz et all
64 
70 
71  std::string label_; //most likely the filename of the pcs exepriment
72  //Used to identify which data has been used in case of multiple lanthanides
73 
74 private:
75 
76  /// @brief NOT READY. This should set alpha beta gamma axial rhombic
77  void
78  set_abgar();
79 
80 public:
81  PcsTensor(); //Construct
82 
83  ~PcsTensor(); //destruct
84 
85  PcsTensor(PcsTensor const & other); //copy
86 
87  PcsTensor & //=
88  operator=(PcsTensor const & other);
89 
90  PcsTensor(core::Real const chi_xx,
91  core::Real const chi_yy,
92  core::Real const chi_xy,
93  core::Real const chi_xz,
94  core::Real const chi_yz,
95  std::string const label);
96 
97  /// @brief Give me delta chi_xx
99  get_delta_X_xx() const;
100 
101  /// @brief Give me delta chi_yy
102  core::Real
103  get_delta_X_yy() const;
104 
105  /// @brief Give me delta chi_zz
106  core::Real
107  get_delta_X_zz() const;
108 
109  /// @brief Give me chi_zz
110  core::Real
111  get_chi_zz() const;
112 
113  /// @brief Give me chi_xx
114  core::Real
115  get_chi_xx() const;
116 
117  /// @brief Give me chi_yy
118  core::Real
119  get_chi_yy() const;
120 
121  /// @brief Give me chi_xy
122  core::Real
123  get_chi_xy() const;
124 
125  /// @brief Give me chi_xz
126  core::Real
127  get_chi_xz() const;
128 
129  /// @brief Give me chi_yz
130  core::Real
131  get_chi_yz() const;
132 
133  /// @brief Reset the tensor from the other tensor value
134  void
135  reset_from_ref(PcsTensor & other);
136 
137  /// @brief Give me the tensor label
138  std::string const &
139  get_label() const;
140 
141  /// @brief Reset the tensor from the given values.
142  void
143  reset_tensor(core::Real const chi_xx,
144  core::Real const chi_yy,
145  core::Real const chi_xy,
146  core::Real const chi_xz,
147  core::Real const chi_yz);
148 
149  /// @brief Print me
150  friend std::ostream &
151  operator<<(std::ostream& out, const PcsTensor &me);
152 };
153 
154 
155 }//namespace pcs2
156 }//namespace methods
157 }//namespace scoring
158 }//namespace protocols
159 #endif