15 #ifndef INCLUDED_core_scoring_ResidueNeighborList_hh
16 #define INCLUDED_core_scoring_ResidueNeighborList_hh
29 #include <basic/datacache/CacheableData.hh>
32 #include <utility/pointer/ReferenceCount.hh>
33 #include <utility/vector1.hh>
96 utility::vector1< utility::vector1< AtomNeighbor > > const & at_neighbors() const { return at_neighbors_; }
99 utility::vector1< int > is_H_;
100 utility::vector1< AtomStatus > ood_status_;
103 utility::in_place_list< Size > narrow_ood_list_;
104 utility::in_place_list< Size > wide_ood_list_;
105 utility::vector1< Vector > narrow_coord_;
106 utility::vector1< Vector > wide_coord_;
108 utility::vector1< AtomNeighbors > narrow_;
109 utility::vector1< AtomNeighbors > wide_;
111 utility::vector1< utility::vector1< AtomNeighbor > > at_neighbors_; // for no-update schemes
113 Real narrow_bounding_radius_;
114 Real wide_bounding_radius_;
116 CountPairFunctionCOP cpfxn_;
128 class ResiduePairNeighborList : public basic::datacache::CacheableData
131 typedef basic::datacache::CacheableData parent;
132 typedef basic::datacache::CacheableDataOP CacheableDataOP;
133 typedef basic::datacache::CacheableDataCOP CacheableDataCOP;
135 typedef utility::in_place_list< AtomNeighbor > AtomNeighbors;
136 typedef etable::count_pair::CountPairFunctionCOP CountPairFunctionCOP;
139 static const Real narrow_reach; // = { 0.5 };
140 static const Real wide_reach; // = { 2.0 };
143 ResiduePairNeighborList();
144 virtual ~ResiduePairNeighborList();
146 CacheableDataOP clone() const;
148 AtomNeighbors const &
149 r1_narrow_neighbors( Size atind ) const {
150 return narrow(0)[ atind ];
153 AtomNeighbors const &
154 r2_narrow_neighbors( Size atind ) const {
155 return narrow(1)[ atind ];
158 void initialize_from_residues(
159 Real heavy_heavy_dist_cutoff,
160 Real heavy_hydrogen_dist_cutoff,
161 Real hydrogen_hydrogen_dist_cutoff,
162 conformation::Residue const & r1,
163 conformation::Residue const & r2,
164 ResidueNblistData const & r1dat,
165 ResidueNblistData const & r2dat,
166 etable::count_pair::CountPairFunctionCOP cpfxn
170 Real heavy_heavy_dist_cutoff,
171 Real heavy_hydrogen_dist_cutoff,
172 Real hydrogen_hydrogen_dist_cutoff,
173 conformation::Residue const & r1,
174 conformation::Residue const & r2,
175 ResidueNblistData const & r1dat,
176 ResidueNblistData const & r2dat
181 AtomNeighbors const &
182 r1_wide_neighbors( Size atind ) const {
183 return wide(0)[ atind ];
186 AtomNeighbors const &
187 r2_wide_neighbors( Size atind ) const {
188 return wide(1)[ atind ];
196 utility::vector1< AtomNeighbors > &
198 assert( ind == 0 || ind == 1 );
199 return narrow_[ ind ];
202 utility::vector1< AtomNeighbors > const &
203 narrow( int ind ) const {
204 assert( ind == 0 || ind == 1 );
205 return narrow_[ ind ];
208 utility::vector1< AtomNeighbors > &
210 assert( ind == 0 || ind == 1 );
214 utility::vector1< AtomNeighbors > const &
215 wide( int ind ) const {
216 assert( ind == 0 || ind == 1 );
223 utility::vector1< utility::vector1< AtomNeighbor > > const & r1_at_neighbors() const { return r1_at_neighbors_; }
225 utility::vector1< utility::vector1< AtomNeighbor > > const & r2_at_neighbors() const { return r2_at_neighbors_; }
227 utility::in_place_list< Size > const & r1_nonempty() const { return r1_w_non_empty_narrow_; }
234 Real heavy_heavy_dist_cutoff,
235 Real heavy_hydrogen_dist_cutoff,
236 Real hydrogen_hydrogen_dist_cutoff,
237 conformation::Residue const & r1,
238 conformation::Residue const & r2,
239 ResidueNblistData const & r1dat,
240 ResidueNblistData const & r2dat
245 etable::count_pair::CountPairFunctionCOP cpfxn_;
247 utility::in_place_list< Size > r1_w_non_empty_narrow_;
248 utility::vector1< AtomNeighbors > narrow_[ 2 ];
249 utility::vector1< AtomNeighbors > wide_[ 2 ];
251 utility::vector1< utility::vector1< AtomNeighbor > > r1_at_neighbors_; // for no-update schemes
252 utility::vector1< utility::vector1< AtomNeighbor > > r2_at_neighbors_; // for no-update schemes
254 utility::vector1< AtomStatus > update_status_[ 2 ];
264 typedef basic::datacache::CacheableData
parent;
281 Real heavy_heavy_dist_cutoff = 0.0,
282 Real heavy_hydrogen_dist_cutoff = 0.0,
283 Real hydrogen_hydrogen_dist_cutoff = 0.0
296 typedef basic::datacache::CacheableData
parent;