Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
TrieCountPairBase.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/trie/trie_vs_trie.hh
11 /// @brief
12 /// @author Andrew Leaver-Fay (aleaverfay@gmail.com)
13 
14 #ifndef INCLUDED_core_scoring_trie_TrieCountPairBase_hh
15 #define INCLUDED_core_scoring_trie_TrieCountPairBase_hh
16 
17 // Unit Headers
19 
20 // Package Headers
23 
24 // Project Headers
31 
34 
38 
41 
42 #include <core/types.hh>
43 
44 
45 // Utility Headers
46 #include <utility/pointer/ReferenceCount.hh>
47 #include <utility/vector1.fwd.hh>
48 
49 // ObjexxFCL Headers
50 #include <ObjexxFCL/FArray2D.fwd.hh>
51 
52 namespace core {
53 namespace scoring {
54 namespace trie {
55 
57 {
58 public:
59 
60  /// When returning the path distance for two atoms that are separated by more chemical
61  /// bonds than any portion of the score function cares, return this as the equivalent
62  /// of an infinite chemical separation.
63  static const Size INFINITE_SEPARATION = 5;
64 
65  virtual ~TrieCountPairBase();
66  // There are as many as T*K*M*N^2 different type resolution functions for
67  // M different scoring functions with
68  // N different count pair data types, spread over
69  // K different CountPair classes,
70  // for T different Trie-related functions (trie_vs_trie, trie_vs_path, path_vs_path)
71  // Not all M*N^2 combinations are reasonable; many of the K*M*N^2 will cause
72  // a utility::exit call.
73  // Obnoxious, yes, but easier than rewriting the trie_vs_trie algorithm, and
74  // worth* the speedup over polymorphism in the innermost loops
75  //
76  // *speculation. I will reimplement using polymorphism and compare the speed.
77  //
78  // Currently, T = 2, M = 1, N = 3, and K = 3
79 
80  ///---------- TYPE RESOLUTION FUNCTIONS ----------///
81  /// What we have here is triple dispatch. We have to determine the type of
82  /// the first rotamer trie, the type of the second rotamer trie, and finally,
83  /// the type of the count pair function. With the type of all three objects known,
84  /// then the templated version of the trie-vs-trie method may be invoked (or,
85  /// as the compiler sees it, created). There is no good way to do triple dispatch
86  /// (or double dispatch for that matter) in C++. Polymorphism alows single dispatch,
87  /// but nothing further.
88  /// The decision I've made was to have the count pair object the last object to resolve
89  /// its type. The count pair object is simpler than the trie objects, and so this ugly
90  /// type resolution code polutes what is otherwise a trivial class. If it were in
91  /// the RotamerTrie class, it would be uglier. As it is, the second trie to identify its
92  /// type has to have methods for each of the possible types of the first trie that identifies
93  /// its type... its ugly, yes, but not as bad as this code.
94  /// Before this design becomes the standard, I have to answer the following two questions:
95  /// - Does using templates instead of polymorphism save so much time that its worth this uglyness?
96  /// - Does using templates instead of polymorphism increase the size of the executable by an
97  /// acceptably small margin?
98 
99 
100  //////////////////////////// EtableEnergy /////////////////////////////////////
101  virtual
102  void
106  etable::TableLookupEvaluator const & sfxn,
107  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
108  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
109 
110  virtual
111  void
115  etable::TableLookupEvaluator const & sfxn,
116  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
117  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
118 
119  virtual
120  void
124  etable::TableLookupEvaluator const & sfxn,
125  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
126  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
127 
128  virtual
129  void
133  etable::TableLookupEvaluator const & sfxn,
134  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
135  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
136 
137  virtual
138  void
141  RotamerTrieBase const & trie2,
142  etable::TableLookupEvaluator const & sfxn,
143  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
144  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
145 
146 
147  virtual
148  void
152  etable::TableLookupEvaluator const & sfxn,
153  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
154  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
155 
156  virtual
157  void
161  etable::TableLookupEvaluator const & sfxn,
162  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
163  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
164 
165  virtual
166  void
170  etable::TableLookupEvaluator const & sfxn,
171  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
172  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
173 
174  virtual
175  void
179  etable::TableLookupEvaluator const & sfxn,
180  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
181  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
182 
183  virtual
184  void
187  RotamerTrieBase const & trie2,
188  etable::TableLookupEvaluator const & sfxn,
189  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
190  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
191 
192  virtual
193  void
197  etable::TableLookupEvaluator const & sfxn,
198  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
199  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
200 
201  virtual
202  void
206  etable::TableLookupEvaluator const & sfxn,
207  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
208  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
209 
210  virtual
211  void
215  etable::TableLookupEvaluator const & sfxn,
216  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
217  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
218 
219  virtual
220  void
224  etable::TableLookupEvaluator const & sfxn,
225  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
226  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
227 
228  virtual
229  void
232  RotamerTrieBase const & trie2,
233  etable::TableLookupEvaluator const & sfxn,
234  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
235  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
236 
237  virtual
238  void
242  etable::TableLookupEvaluator const & sfxn,
243  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
244  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
245 
246  virtual
247  void
251  etable::TableLookupEvaluator const & sfxn,
252  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
253  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
254 
255  virtual
256  void
260  etable::TableLookupEvaluator const & sfxn,
261  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
262  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
263 
264  virtual
265  void
269  etable::TableLookupEvaluator const & sfxn,
270  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
271  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
272 
273  virtual
274  void
277  RotamerTrieBase const & trie2,
278  etable::TableLookupEvaluator const & sfxn,
279  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
280  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
281 
282  virtual
283  void
287  etable::TableLookupEvaluator const & sfxn,
288  utility::vector1< core::PackerEnergy > & pair_energy_vector,
289  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
290 
291  virtual
292  void
296  etable::TableLookupEvaluator const & sfxn,
297  utility::vector1< core::PackerEnergy > & pair_energy_vector,
298  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
299 
300  virtual
301  void
305  etable::TableLookupEvaluator const & sfxn,
306  utility::vector1< core::PackerEnergy > & pair_energy_vector,
307  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
308 
309  virtual
310  void
314  etable::TableLookupEvaluator const & sfxn,
315  utility::vector1< core::PackerEnergy > & pair_energy_vector,
316  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
317 
318  virtual
319  void
322  RotamerTrieBase const & trie2,
323  etable::TableLookupEvaluator const & sfxn,
324  utility::vector1< core::PackerEnergy > & pair_energy_vector,
326 
327 
328  virtual
329  void
333  etable::TableLookupEvaluator const & sfxn,
334  utility::vector1< core::PackerEnergy > & pair_energy_vector,
335  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
336 
337  virtual
338  void
342  etable::TableLookupEvaluator const & sfxn,
343  utility::vector1< core::PackerEnergy > & pair_energy_vector,
344  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
345 
346  virtual
347  void
351  etable::TableLookupEvaluator const & sfxn,
352  utility::vector1< core::PackerEnergy > & pair_energy_vector,
353  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
354 
355  virtual
356  void
360  etable::TableLookupEvaluator const & sfxn,
361  utility::vector1< core::PackerEnergy > & pair_energy_vector,
362  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
363 
364  virtual
365  void
368  RotamerTrieBase const & trie2,
369  etable::TableLookupEvaluator const & sfxn,
370  utility::vector1< core::PackerEnergy > & pair_energy_vector,
372 
373 
374  virtual
375  void
379  etable::TableLookupEvaluator const & sfxn,
380  utility::vector1< core::PackerEnergy > & pair_energy_vector,
381  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
382 
383  virtual
384  void
388  etable::TableLookupEvaluator const & sfxn,
389  utility::vector1< core::PackerEnergy > & pair_energy_vector,
390  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
391 
392  virtual
393  void
397  etable::TableLookupEvaluator const & sfxn,
398  utility::vector1< core::PackerEnergy > & pair_energy_vector,
399  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
400 
401  virtual
402  void
406  etable::TableLookupEvaluator const & sfxn,
407  utility::vector1< core::PackerEnergy > & pair_energy_vector,
408  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
409 
410  virtual
411  void
414  RotamerTrieBase const & trie2,
415  etable::TableLookupEvaluator const & sfxn,
416  utility::vector1< core::PackerEnergy > & pair_energy_vector,
418 
419  virtual
420  void
424  etable::TableLookupEvaluator const & sfxn,
425  utility::vector1< core::PackerEnergy > & pair_energy_vector,
426  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
427 
428  virtual
429  void
433  etable::TableLookupEvaluator const & sfxn,
434  utility::vector1< core::PackerEnergy > & pair_energy_vector,
435  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
436 
437  virtual
438  void
442  etable::TableLookupEvaluator const & sfxn,
443  utility::vector1< core::PackerEnergy > & pair_energy_vector,
444  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
445 
446  virtual
447  void
451  etable::TableLookupEvaluator const & sfxn,
452  utility::vector1< core::PackerEnergy > & pair_energy_vector,
453  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
454 
455  virtual
456  void
459  RotamerTrieBase const & trie2,
460  etable::TableLookupEvaluator const & sfxn,
461  utility::vector1< core::PackerEnergy > & pair_energy_vector,
463 
464 
465  //////////////////////////////////////// EtableEnergy -- analytic evaluation /////////////////////////////////
466  virtual
467  void
471  etable::AnalyticEtableEvaluator const & sfxn,
472  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
473  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
474 
475  virtual
476  void
480  etable::AnalyticEtableEvaluator const & sfxn,
481  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
482  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
483 
484  virtual
485  void
489  etable::AnalyticEtableEvaluator const & sfxn,
490  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
491  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
492 
493  virtual
494  void
498  etable::AnalyticEtableEvaluator const & sfxn,
499  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
500  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
501 
502  virtual
503  void
506  RotamerTrieBase const & trie2,
507  etable::AnalyticEtableEvaluator const & sfxn,
508  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
509  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
510 
511  virtual
512  void
516  etable::AnalyticEtableEvaluator const & sfxn,
517  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
518  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
519 
520  virtual
521  void
525  etable::AnalyticEtableEvaluator const & sfxn,
526  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
527  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
528 
529  virtual
530  void
534  etable::AnalyticEtableEvaluator const & sfxn,
535  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
536  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
537 
538  virtual
539  void
543  etable::AnalyticEtableEvaluator const & sfxn,
544  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
545  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
546 
547  virtual
548  void
551  RotamerTrieBase const & trie2,
552  etable::AnalyticEtableEvaluator const & sfxn,
553  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
554  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
555 
556  virtual
557  void
561  etable::AnalyticEtableEvaluator const & sfxn,
562  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
563  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
564 
565  virtual
566  void
570  etable::AnalyticEtableEvaluator const & sfxn,
571  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
572  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
573 
574  virtual
575  void
579  etable::AnalyticEtableEvaluator const & sfxn,
580  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
581  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
582 
583  virtual
584  void
588  etable::AnalyticEtableEvaluator const & sfxn,
589  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
590  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
591 
592  virtual
593  void
596  RotamerTrieBase const & trie2,
597  etable::AnalyticEtableEvaluator const & sfxn,
598  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
599  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
600 
601  virtual
602  void
606  etable::AnalyticEtableEvaluator const & sfxn,
607  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
608  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
609 
610  virtual
611  void
615  etable::AnalyticEtableEvaluator const & sfxn,
616  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
617  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
618 
619  virtual
620  void
624  etable::AnalyticEtableEvaluator const & sfxn,
625  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
626  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
627 
628  virtual
629  void
633  etable::AnalyticEtableEvaluator const & sfxn,
634  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
635  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
636 
637  virtual
638  void
641  RotamerTrieBase const & trie2,
642  etable::AnalyticEtableEvaluator const & sfxn,
643  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
644  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
645 
646  virtual
647  void
651  etable::AnalyticEtableEvaluator const & sfxn,
652  utility::vector1< core::PackerEnergy > & pair_energy_vector,
653  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
654 
655  virtual
656  void
660  etable::AnalyticEtableEvaluator const & sfxn,
661  utility::vector1< core::PackerEnergy > & pair_energy_vector,
662  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
663 
664  virtual
665  void
669  etable::AnalyticEtableEvaluator const & sfxn,
670  utility::vector1< core::PackerEnergy > & pair_energy_vector,
671  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
672 
673  virtual
674  void
678  etable::AnalyticEtableEvaluator const & sfxn,
679  utility::vector1< core::PackerEnergy > & pair_energy_vector,
680  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
681 
682  virtual
683  void
686  RotamerTrieBase const & trie2,
687  etable::AnalyticEtableEvaluator const & sfxn,
688  utility::vector1< core::PackerEnergy > & pair_energy_vector,
690 
691  virtual
692  void
696  etable::AnalyticEtableEvaluator const & sfxn,
697  utility::vector1< core::PackerEnergy > & pair_energy_vector,
698  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
699 
700  virtual
701  void
705  etable::AnalyticEtableEvaluator const & sfxn,
706  utility::vector1< core::PackerEnergy > & pair_energy_vector,
707  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
708 
709  virtual
710  void
714  etable::AnalyticEtableEvaluator const & sfxn,
715  utility::vector1< core::PackerEnergy > & pair_energy_vector,
716  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
717 
718  virtual
719  void
723  etable::AnalyticEtableEvaluator const & sfxn,
724  utility::vector1< core::PackerEnergy > & pair_energy_vector,
725  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
726 
727  virtual
728  void
731  RotamerTrieBase const & trie2,
732  etable::AnalyticEtableEvaluator const & sfxn,
733  utility::vector1< core::PackerEnergy > & pair_energy_vector,
735 
736  virtual
737  void
741  etable::AnalyticEtableEvaluator const & sfxn,
742  utility::vector1< core::PackerEnergy > & pair_energy_vector,
743  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
744 
745  virtual
746  void
750  etable::AnalyticEtableEvaluator const & sfxn,
751  utility::vector1< core::PackerEnergy > & pair_energy_vector,
752  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
753 
754  virtual
755  void
759  etable::AnalyticEtableEvaluator const & sfxn,
760  utility::vector1< core::PackerEnergy > & pair_energy_vector,
761  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
762 
763  virtual
764  void
768  etable::AnalyticEtableEvaluator const & sfxn,
769  utility::vector1< core::PackerEnergy > & pair_energy_vector,
770  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
771 
772  virtual
773  void
776  RotamerTrieBase const & trie2,
777  etable::AnalyticEtableEvaluator const & sfxn,
778  utility::vector1< core::PackerEnergy > & pair_energy_vector,
780 
781  virtual
782  void
786  etable::AnalyticEtableEvaluator const & sfxn,
787  utility::vector1< core::PackerEnergy > & pair_energy_vector,
788  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
789 
790  virtual
791  void
795  etable::AnalyticEtableEvaluator const & sfxn,
796  utility::vector1< core::PackerEnergy > & pair_energy_vector,
797  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
798 
799  virtual
800  void
804  etable::AnalyticEtableEvaluator const & sfxn,
805  utility::vector1< core::PackerEnergy > & pair_energy_vector,
806  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
807 
808  virtual
809  void
813  etable::AnalyticEtableEvaluator const & sfxn,
814  utility::vector1< core::PackerEnergy > & pair_energy_vector,
815  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
816 
817  virtual
818  void
821  RotamerTrieBase const & trie2,
822  etable::AnalyticEtableEvaluator const & sfxn,
823  utility::vector1< core::PackerEnergy > & pair_energy_vector,
825 
826  //////////////////////////// HBONDS /////////////////////////////////
827  virtual
828  void
832  hbonds::HBondEnergy const & sfxn,
833  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
834  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
835 
836 
837  virtual
838  void
842  hbonds::HBondEnergy const & sfxn,
843  utility::vector1< core::PackerEnergy > & pair_energy_vector,
844  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
845 
846 
847 
848  // called when hbonds and etable tries get confused
849  virtual
850  void
853  RotamerTrieBase const & trie2,
854  hbonds::HBondEnergy const & sfxn,
855  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
856  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
857 
858  virtual
859  void
862  RotamerTrieBase const & trie2,
863  hbonds::HBondEnergy const & sfxn,
864  utility::vector1< core::PackerEnergy > & pair_energy_vector,
866 
867  /// Hack Elec Energy
868 
869  virtual
870  void
874  hackelec::HackElecEnergy const & sfxn,
875  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
876  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
877 
878  virtual
879  void
883  hackelec::HackElecEnergy const & sfxn,
884  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
885  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
886 
887  virtual
888  void
892  hackelec::HackElecEnergy const & sfxn,
893  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
894  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
895 
896  virtual
897  void
901  hackelec::HackElecEnergy const & sfxn,
902  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
903  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
904 
905  virtual
906  void
910  hackelec::HackElecEnergy const & sfxn,
911  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
912  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
913 
914  virtual
915  void
919  hackelec::HackElecEnergy const & sfxn,
920  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
921  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
922 
923  virtual
924  void
928  hackelec::HackElecEnergy const & sfxn,
929  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
930  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
931 
932  virtual
933  void
937  hackelec::HackElecEnergy const & sfxn,
938  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
939  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
940 
941  virtual
942  void
946  hackelec::HackElecEnergy const & sfxn,
947  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
948  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
949 
950  virtual
951  void
955  hackelec::HackElecEnergy const & sfxn,
956  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
957  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
958 
959  virtual
960  void
964  hackelec::HackElecEnergy const & sfxn,
965  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
966  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
967 
968  virtual
969  void
973  hackelec::HackElecEnergy const & sfxn,
974  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
975  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
976 
977  virtual
978  void
982  hackelec::HackElecEnergy const & sfxn,
983  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
984  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
985 
986  virtual
987  void
991  hackelec::HackElecEnergy const & sfxn,
992  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
993  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
994 
995  virtual
996  void
1000  hackelec::HackElecEnergy const & sfxn,
1001  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1002  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1003 
1004  virtual
1005  void
1009  hackelec::HackElecEnergy const & sfxn,
1010  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1011  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1012 
1013  virtual
1014  void
1018  hackelec::HackElecEnergy const & sfxn,
1019  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1020  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1021 
1022  virtual
1023  void
1027  hackelec::HackElecEnergy const & sfxn,
1028  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1029  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1030 
1031  virtual
1032  void
1036  hackelec::HackElecEnergy const & sfxn,
1037  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1038  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1039 
1040  virtual
1041  void
1045  hackelec::HackElecEnergy const & sfxn,
1046  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1047  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1048 
1049  virtual
1050  void
1054  hackelec::HackElecEnergy const & sfxn,
1055  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1056  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1057 
1058  virtual
1059  void
1063  hackelec::HackElecEnergy const & sfxn,
1064  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1065  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1066 
1067  virtual
1068  void
1072  hackelec::HackElecEnergy const & sfxn,
1073  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1074  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1075 
1076  virtual
1077  void
1081  hackelec::HackElecEnergy const & sfxn,
1082  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1083  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1084 
1085  virtual
1086  void
1090  hackelec::HackElecEnergy const & sfxn,
1091  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1092  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1093 
1094  virtual
1095  void
1099  hackelec::HackElecEnergy const & sfxn,
1100  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1101  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1102 
1103  virtual
1104  void
1108  hackelec::HackElecEnergy const & sfxn,
1109  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1110  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1111 
1112  virtual
1113  void
1117  hackelec::HackElecEnergy const & sfxn,
1118  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1119  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1120 
1121  virtual
1122  void
1126  hackelec::HackElecEnergy const & sfxn,
1127  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1128  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1129 
1130  virtual
1131  void
1135  hackelec::HackElecEnergy const & sfxn,
1136  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1137  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1138 
1139  virtual
1140  void
1144  hackelec::HackElecEnergy const & sfxn,
1145  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1146  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1147 
1148  virtual
1149  void
1153  hackelec::HackElecEnergy const & sfxn,
1154  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1155  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1156 
1157  // called when hack elec tries get confused with other tries
1158  virtual
1159  void
1162  RotamerTrieBase const & trie2,
1163  hackelec::HackElecEnergy const & sfxn,
1164  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1165  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
1166 
1167  virtual
1168  void
1171  RotamerTrieBase const & trie2,
1172  hackelec::HackElecEnergy const & sfxn,
1173  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1174  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
1175 
1176  virtual
1177  void
1180  RotamerTrieBase const & trie2,
1181  hackelec::HackElecEnergy const & sfxn,
1182  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1183  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
1184 
1185  virtual
1186  void
1189  RotamerTrieBase const & trie2,
1190  hackelec::HackElecEnergy const & sfxn,
1191  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1192  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
1193 
1194  virtual
1195  void
1198  RotamerTrieBase const & trie2,
1199  hackelec::HackElecEnergy const & sfxn,
1200  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1202 
1203  virtual
1204  void
1207  RotamerTrieBase const & trie2,
1208  hackelec::HackElecEnergy const & sfxn,
1209  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1211 
1212  virtual
1213  void
1216  RotamerTrieBase const & trie2,
1217  hackelec::HackElecEnergy const & sfxn,
1218  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1220 
1221  virtual
1222  void
1225  RotamerTrieBase const & trie2,
1226  hackelec::HackElecEnergy const & sfxn,
1227  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1229 
1230  //////////////////////////// MMLJEnergyInter /////////////////////////////////////
1231  virtual
1232  void
1236  methods::MMLJEnergyInter const & sfxn,
1237  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1238  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1239 
1240  virtual
1241  void
1245  methods::MMLJEnergyInter const & sfxn,
1246  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1247  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1248 
1249  virtual
1250  void
1254  methods::MMLJEnergyInter const & sfxn,
1255  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1256  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1257 
1258  virtual
1259  void
1263  methods::MMLJEnergyInter const & sfxn,
1264  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1265  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1266 
1267  virtual
1268  void
1271  RotamerTrieBase const & trie2,
1272  methods::MMLJEnergyInter const & sfxn,
1273  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1274  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
1275 
1276 
1277  virtual
1278  void
1282  methods::MMLJEnergyInter const & sfxn,
1283  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1284  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1285 
1286  virtual
1287  void
1291  methods::MMLJEnergyInter const & sfxn,
1292  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1293  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1294 
1295  virtual
1296  void
1300  methods::MMLJEnergyInter const & sfxn,
1301  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1302  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1303 
1304  virtual
1305  void
1309  methods::MMLJEnergyInter const & sfxn,
1310  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1311  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1312 
1313  virtual
1314  void
1317  RotamerTrieBase const & trie2,
1318  methods::MMLJEnergyInter const & sfxn,
1319  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1320  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
1321 
1322  virtual
1323  void
1327  methods::MMLJEnergyInter const & sfxn,
1328  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1329  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1330 
1331  virtual
1332  void
1336  methods::MMLJEnergyInter const & sfxn,
1337  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1338  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1339 
1340  virtual
1341  void
1345  methods::MMLJEnergyInter const & sfxn,
1346  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1347  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1348 
1349  virtual
1350  void
1354  methods::MMLJEnergyInter const & sfxn,
1355  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1356  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1357 
1358  virtual
1359  void
1362  RotamerTrieBase const & trie2,
1363  methods::MMLJEnergyInter const & sfxn,
1364  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1365  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
1366 
1367  virtual
1368  void
1372  methods::MMLJEnergyInter const & sfxn,
1373  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1374  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1375 
1376  virtual
1377  void
1381  methods::MMLJEnergyInter const & sfxn,
1382  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1383  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1384 
1385  virtual
1386  void
1390  methods::MMLJEnergyInter const & sfxn,
1391  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1392  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1393 
1394  virtual
1395  void
1399  methods::MMLJEnergyInter const & sfxn,
1400  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1401  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table) = 0;
1402 
1403  virtual
1404  void
1407  RotamerTrieBase const & trie2,
1408  methods::MMLJEnergyInter const & sfxn,
1409  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
1410  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table);
1411 
1412  virtual
1413  void
1417  methods::MMLJEnergyInter const & sfxn,
1418  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1419  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1420 
1421  virtual
1422  void
1426  methods::MMLJEnergyInter const & sfxn,
1427  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1428  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1429 
1430  virtual
1431  void
1435  methods::MMLJEnergyInter const & sfxn,
1436  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1437  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1438 
1439  virtual
1440  void
1444  methods::MMLJEnergyInter const & sfxn,
1445  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1446  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1447 
1448  virtual
1449  void
1452  RotamerTrieBase const & trie2,
1453  methods::MMLJEnergyInter const & sfxn,
1454  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1456 
1457 
1458  virtual
1459  void
1463  methods::MMLJEnergyInter const & sfxn,
1464  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1465  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1466 
1467  virtual
1468  void
1472  methods::MMLJEnergyInter const & sfxn,
1473  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1474  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1475 
1476  virtual
1477  void
1481  methods::MMLJEnergyInter const & sfxn,
1482  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1483  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1484 
1485  virtual
1486  void
1490  methods::MMLJEnergyInter const & sfxn,
1491  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1492  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1493 
1494  virtual
1495  void
1498  RotamerTrieBase const & trie2,
1499  methods::MMLJEnergyInter const & sfxn,
1500  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1502 
1503 
1504  virtual
1505  void
1509  methods::MMLJEnergyInter const & sfxn,
1510  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1511  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1512 
1513  virtual
1514  void
1518  methods::MMLJEnergyInter const & sfxn,
1519  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1520  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1521 
1522  virtual
1523  void
1527  methods::MMLJEnergyInter const & sfxn,
1528  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1529  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1530 
1531  virtual
1532  void
1536  methods::MMLJEnergyInter const & sfxn,
1537  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1538  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1539 
1540  virtual
1541  void
1544  RotamerTrieBase const & trie2,
1545  methods::MMLJEnergyInter const & sfxn,
1546  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1548 
1549  virtual
1550  void
1554  methods::MMLJEnergyInter const & sfxn,
1555  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1556  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1557 
1558  virtual
1559  void
1563  methods::MMLJEnergyInter const & sfxn,
1564  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1565  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1566 
1567  virtual
1568  void
1572  methods::MMLJEnergyInter const & sfxn,
1573  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1574  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1575 
1576  virtual
1577  void
1581  methods::MMLJEnergyInter const & sfxn,
1582  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1583  utility::vector1< core::PackerEnergy > & temp_vector) = 0;
1584 
1585  virtual
1586  void
1589  RotamerTrieBase const & trie2,
1590  methods::MMLJEnergyInter const & sfxn,
1591  utility::vector1< core::PackerEnergy > & pair_energy_vector,
1593 
1594 };
1595 
1596 
1597 } // namespace trie
1598 } // namespace scoring
1599 } // namespace core
1600 
1601 #endif