IMP  2.2.0
The Integrative Modeling Platform
TableRefiner.h
Go to the documentation of this file.
1 /**
2  * \file IMP/core/TableRefiner.h
3  * \brief A lookup based particle refiner
4  *
5  * Copyright 2007-2014 IMP Inventors. All rights reserved.
6  */
7 
8 #ifndef IMPCORE_TABLE_REFINER_H
9 #define IMPCORE_TABLE_REFINER_H
10 
11 #include <IMP/core/core_config.h>
12 
13 #include <IMP/Refiner.h>
14 #include <boost/unordered_map.hpp>
15 IMPCORE_BEGIN_NAMESPACE
16 
17 //! A lookup based particle refiner
18 /** Each particle is refined by returning the list
19  of particles stored for it in a table.
20  */
21 class IMPCOREEXPORT TableRefiner : public Refiner {
22  boost::unordered_map<kernel::Particle *, kernel::Particles> map_;
23 
24  public:
25  //! Initialize it with an empty table
26  TableRefiner();
27 
28  //! Add a mapping to the table
30 
31  //! Remove a mapping from the table
32  void remove_particle(kernel::Particle *p);
33 
34  //! Set the mapping for a particular particle
35  void set_particle(kernel::Particle *p, const kernel::ParticlesTemp &ps);
36 
37  virtual bool get_can_refine(kernel::Particle *) const IMP_OVERRIDE;
39  IMP_OVERRIDE;
40 #ifndef SWIG
42 #endif
44  kernel::Model *m, const kernel::ParticleIndexes &pis) const IMP_OVERRIDE;
46 };
47 
48 IMPCORE_END_NAMESPACE
49 
50 #endif /* IMPCORE_TABLE_REFINER_H */
virtual const ParticlesTemp get_refined(Particle *a) const =0
Refine the passed particle into a set of particles.
virtual bool get_can_refine(Particle *) const
Return true if this refiner can refine that particle.
Import IMP/kernel/Refiner.h in the namespace.
A lookup based particle refiner.
Definition: TableRefiner.h:21
virtual ModelObjectsTemp do_get_inputs(kernel::Model *m, const ParticleIndexes &pis) const
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Class to handle individual model particles.
void add_particle(RMF::FileHandle fh, kernel::Particle *hs)
Abstract class to implement hierarchical methods.
Class for storing model, its restraints, constraints, and particles.
Definition: kernel/Model.h:72