Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ShortRangeTwoBodyEnergy.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 /// @file core/scoring/methods/ShortRangeTwoBodyEnergy.hh
11 /// @brief Short Range Two Body Energy Method base class declaration
12 /// @author Andrew Leaver-Fay
13 
14 
15 #ifndef INCLUDED_core_scoring_methods_ShortRangeTwoBodyEnergy_hh
16 #define INCLUDED_core_scoring_methods_ShortRangeTwoBodyEnergy_hh
17 
20 
21 // Project headers
22 #include <core/pose/Pose.fwd.hh>
23 
24 #include <utility/vector1.hh>
25 
26 
27 
28 namespace core {
29 namespace scoring {
30 namespace methods {
31 
33 {
34 public:
36 
37 public:
38 
39  /// @brief Constructor with EnergyMethodCreator to provide to the EnergyMethod
40  /// grandparent the list of the ScoreTypes this EnergyMethod is responsible for
41  /// computing
43 
44  virtual ~ShortRangeTwoBodyEnergy();
45 
46 
47  /// @brief how far apart must two heavy atoms be to have a zero interaction energy?
48  ///
49  /// @details If hydrogen atoms interact at the same range as heavy atoms, then
50  /// this distance should build-in a 2 * max-bound-h-distance-cutoff buffer.
51  /// There is an improper mixing here between run-time aquired chemical knowledge
52  /// (max-bound-h-distance-cutoff) and compile time aquired scoring knowledge
53  /// (max atom cutoff); this could be resolved by adding a boolean
54  /// uses_hydrogen_interaction_distance() to the SRTBEnergy class along with
55  /// a method of the ChemicalManager max_bound_h_distance_cutoff().
56  virtual
57  Distance
58  atomic_interaction_cutoff() const = 0;
59 
60 
61  /// @brief A derived class should return true for this function if it implements its own
62  /// versions of the backbone_backbone_energy, backbone_sidechain_energy and
63  /// sidechain_sidechain_energy functions. The default sidechain_sidechain_energy implemented
64  /// by the TwoBodyEnergy base class calls residue_pair_energy. If the derived class implements its own
65  /// versions of these functions, then calling code may avoid calling it on pairs of residues
66  /// that are "provably distant" based on a pair of bounding spheres for a sidechains and
67  /// backbones and this method's atomic_interaction_cutoff energy method.
68  virtual
69  bool
71 
72 
73  /// @brief Batch computation of rotamer pair energies. Need not be overriden in
74  /// derived class -- by default, iterates over all pairs of rotamers,
75  /// and calls derived class's residue_pair_energy method. Since short range rotamer pairs
76  /// may not need calculation, the default method looks at blocks of residue type pairs
77  /// and only calls the residue_pair_energy method if the rotamer pairs are within range
78  virtual
79  void
81  conformation::RotamerSetBase const & set1,
82  conformation::RotamerSetBase const & set2,
83  pose::Pose const & pose,
84  ScoreFunction const & sfxn,
85  EnergyMap const & weights,
86  ObjexxFCL::FArray2D< core::PackerEnergy > & energy_table
87  ) const;
88 
89 
90  /// @brief Batch computation of rotamer/background energies. Need not be overriden
91  /// in derived class -- by default, iterates over all rotamers in the set, and calls
92  /// derived class's residue_pair_energy method for each one against the background rotamer
93  /// Since short range rotamer pairs may not need calculation, the default method
94  /// looks at blocks of residue type pairs and only calls the residue_pair_energy method
95  /// if the rotamer pairs are within range
96  virtual
97  void
99  conformation::RotamerSetBase const & set,
100  conformation::Residue const & residue,
101  pose::Pose const & pose,
102  ScoreFunction const & sfxn,
103  EnergyMap const & weights,
105  ) const;
106 
107  /// @brief Batch computation of rotamer/background energies. Need not be overriden
108  /// in derived class -- by default, iterates over all rotamers in the set, and calls
109  /// derived class's residue_pair_energy method for each one against the background rotamer
110  /// Since short range rotamer pairs may not need calculation, the default method
111  /// looks at blocks of residue type pairs and only calls the residue_pair_energy method
112  /// if the rotamer pairs are within range
113  virtual
114  void
116  conformation::RotamerSetBase const & set,
117  conformation::Residue const & residue,
118  pose::Pose const & pose,
119  ScoreFunction const & sfxn,
120  EnergyMap const & weights,
122  ) const;
123 
124 
125 };
126 
127 
128 }
129 }
130 }
131 
132 #endif