00001
00002
00003
00004
00005
00006
00007
00008 #ifndef IMPCORE_CLOSE_PAIRS_FINDER_H
00009 #define IMPCORE_CLOSE_PAIRS_FINDER_H
00010
00011 #include "core_config.h"
00012 #include "XYZR.h"
00013 #include "internal/MovedSingletonContainer.h"
00014
00015 #include <IMP/RefCounted.h>
00016 #include <IMP/SingletonContainer.h>
00017
00018 IMPCORE_BEGIN_NAMESPACE
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 class IMPCOREEXPORT ClosePairsFinder : public Object
00031 {
00032 double distance_;
00033 protected:
00034
00035 Float get_radius(Particle *p) const {
00036 return XYZR(p).get_radius();
00037 }
00038
00039 public:
00040 ClosePairsFinder(std::string name);
00041 ~ClosePairsFinder();
00042
00043
00044
00045
00046
00047
00048
00049 virtual ParticlePairsTemp get_close_pairs(SingletonContainer *pc) const =0;
00050
00051 virtual ParticlePairsTemp get_close_pairs(SingletonContainer *pca,
00052 SingletonContainer *pcb) const =0;
00053
00054
00055
00056
00057
00058
00059
00060 virtual void set_distance(double d) {
00061 distance_=d;
00062 }
00063 double get_distance() const {
00064 return distance_;
00065 }
00066
00067
00068
00069
00070
00071
00072 virtual ParticlesTemp get_input_particles(SingletonContainer *pc) const=0;
00073 virtual ParticlesTemp get_input_particles(SingletonContainer *a,
00074 SingletonContainer *b) const=0;
00075 virtual ContainersTemp get_input_containers(SingletonContainer *pc) const=0;
00076 virtual ContainersTemp get_input_containers(SingletonContainer *a,
00077 SingletonContainer *b) const=0;
00078
00079 #ifndef SWIG
00080
00081
00082
00083 virtual internal::MovedSingletonContainer*
00084 get_moved_singleton_container(SingletonContainer *in,
00085 Model *m,
00086 double threshold)const;
00087 #endif
00088 };
00089
00090 IMP_OUTPUT_OPERATOR(ClosePairsFinder);
00091
00092 IMPCORE_END_NAMESPACE
00093
00094 #endif