Peform more efficient close pair finding when rigid bodies are involved.
The class finds all close pairs consisting of particles taken from the passed list(s) (if they are not rigid bodies) or members of rigid bodies passed as input. That is, given an input list l, for each pair of particles p, q taken from the list, that are closer than the distance threshold, it returns
p or q are RigidBody particles it returns (p,q)p and q are RigidBody particles, it returns all (r,s) where r is a member of p and s is member of q and r and s are closer than the distance threshold(p,s) or (r,q) as appropriate if only one of p or q is a rigid body.Consequently, the user must ensure that the RigidBody are assigned a radius that encloses all of their RigidMember particles.
It uses another ClosePairsFinder to find which pairs of particles in the input list or lists are close. Your choice of this can be passed to the constructor.
The class RigidClosePairsFinder uses CGAL in order to improve its functionality. It will fall back on less good code without it.
Examples: rigid collisions
Inheritance diagram for IMP::core::RigidClosePairsFinder:Public Member Functions | |
| RigidClosePairsFinder (ClosePairsFinder *cpf=nullptr) | |
| ParticlePairsTemp | get_close_pairs (Particle *a, Particle *b, const ParticleIndexes &pa, const ParticleIndexes &pb) const |
| void | set_distance (double d) |
Public Member Functions inherited from IMP::core::ClosePairsFinder | |
| ClosePairsFinder (std::string name) | |
| virtual ParticlePairsTemp | get_close_pairs (const ParticlesTemp &pc) const =0 |
| virtual ParticlePairsTemp | get_close_pairs (const ParticlesTemp &pca, const ParticlesTemp &pcb) const =0 |
| virtual ParticleIndexPairs | get_close_pairs (Model *m, const ParticleIndexes &pc) const |
| virtual ParticleIndexPairs | get_close_pairs (Model *m, const ParticleIndexes &pca, const ParticleIndexes &pcb) const |
| virtual IntPairs | get_close_pairs (const algebra::BoundingBox3Ds &bbs) const =0 |
| virtual IntPairs | get_close_pairs (const algebra::BoundingBox3Ds &bas, const algebra::BoundingBox3Ds &bbs) const =0 |
| double | get_distance () const |
| virtual ParticlesTemp | get_input_particles (const ParticlesTemp &ps) const =0 |
| virtual ContainersTemp | get_input_containers (const ParticlesTemp &ps) const =0 |
| void | remove_pair_filter (PairPredicate *d) |
| template<class F > | |
| void | remove_pair_filters_if (const F &f) |
| template<class List > | |
| void | remove_pair_filters (List d) |
| template<class List > | |
| void | set_pair_filters (List ps) |
| template<class List > | |
| void | set_pair_filters_order (List ps) |
| unsigned int | add_pair_filter (PairPredicate *obj) |
| template<class List > | |
| void | add_pair_filters (List objs) |
| void | clear_pair_filters () |
| unsigned int | get_number_of_pair_filters () const |
| bool | get_has_pair_filters () const |
| PairPredicate * | get_pair_filter (unsigned int i) const |
| PairPredicates | get_pair_filters () const |
| void | reserve_pair_filters (unsigned int sz) |
| PairFilterIterator | pair_filters_begin () |
| PairFilterIterator | pair_filters_end () |
| PairFilterConstIterator | pair_filters_begin () const |
| PairFilterConstIterator | pair_filters_end () const |
Public Member Functions inherited from IMP::base::Object | |
| std::size_t | __hash__ () const |
| virtual std::string | get_type_name () const =0 |
| Return a string identifying the type of the object. | |
| virtual IMP::base::VersionInfo | get_version_info () const =0 |
| Get information about the module and version of the object. | |
| void | set_check_level (CheckLevel l) |
| void | set_log_level (LogLevel l) |
| Set the logging level used in this object. | |
| void | set_was_used (bool tf) const |
| void | show (std::ostream &out=std::cout) const |
| const std::string & | get_name () const |
| void | set_name (std::string name) |
Static Public Member Functions | |
| static RigidClosePairsFinder * | get_from (IMP::base::Object *o) |