IMP  2.2.1
The Integrative Modeling Platform
symmetry/RigidBodyMover.h
Go to the documentation of this file.
1 /**
2  * \file IMP/symmetry/RigidBodyMover.h
3  * \brief A mover that keeps a rigid body in a box
4  *
5  * Copyright 2007-2014 IMP Inventors. All rights reserved.
6  *
7  */
8 
9 #ifndef IMPSYMMETRY_RIGID_BODY_MOVER_H
10 #define IMPSYMMETRY_RIGID_BODY_MOVER_H
11 
12 #include "symmetry_config.h"
13 #include <IMP/core/MonteCarlo.h>
15 #include <IMP/algebra/Vector3D.h>
17 #include <IMP/SingletonContainer.h>
18 #include <IMP/core/rigid_bodies.h>
19 
20 IMPSYMMETRY_BEGIN_NAMESPACE
21 
22 //! Move a rigid body and keep it in the primitive cell of a periodic lattice
23 class IMPSYMMETRYEXPORT RigidBodyMover : public core::MonteCarloMover {
24  public:
25  /** The rigid body is rotated and translated to move
26  \param[in] d is the master rigid body decorator
27  \param[in] ps are the slave particles
28  \param[in] max_tr is the maximum translation during a step
29  \param[in] max_ang is the maximum rotation angle in radians
30  \param[in] ctrs is a list of all cell centers
31  \param[in] trs is the list of transformations from primitive to all cells
32  */
34  Float max_ang, algebra::Vector3Ds ctrs,
36 
37  protected:
38  virtual kernel::ModelObjectsTemp do_get_inputs() const IMP_OVERRIDE;
39  virtual core::MonteCarloMoverResult do_propose() IMP_OVERRIDE;
40  virtual void do_reject() IMP_OVERRIDE;
42 
43  private:
44  core::RigidBody d_;
46  Float max_tr_;
47  Float max_ang_;
48  algebra::Vector3Ds ctrs_;
50  kernel::Particles ps_norb_;
51  std::vector<core::RigidBody> rbs_;
53  algebra::Vector3Ds oldcoords_;
55 
57  std::vector<core::RigidBody> get_rigid_bodies(kernel::Particles ps);
58 };
59 
60 IMPSYMMETRY_END_NAMESPACE
61 
62 #endif /* IMPSYMMETRY_RIGID_BODY_MOVER_H */
Simple 3D transformation class.
Move a rigid body and keep it in the primitive cell of a periodic lattice.
Import IMP/kernel/SingletonContainer.h in the namespace.
Simple Monte Carlo optimizer.
ParticlesTemp get_particles(kernel::Model *m, const ParticleIndexes &ps)
virtual void do_reject()=0
Implement reset_proposed_move()
A base class for classes which perturb particles.
functionality for defining rigid bodies
The base class for movers for MC optimization.
virtual MonteCarloMoverResult do_propose()=0
Implement propose_move()
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Simple 3D transformation class.
virtual ModelObjectsTemp do_get_inputs() const =0
double Float
Basic floating-point value (could be float, double...)
Definition: base/types.h:20
Simple 3D vector class.
A decorator for a rigid body.
Definition: rigid_bodies.h:75