IMP logo
IMP Reference Guide  develop.63b38c487d,2024/12/21
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-2022 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 <IMP/symmetry/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 ModelObjectsTemp do_get_inputs() const override;
39  virtual core::MonteCarloMoverResult do_propose() override;
40  virtual void do_reject() override;
42 
43  private:
44  core::RigidBody d_;
45  Particles ps_;
46  Float max_tr_;
47  Float max_ang_;
48  algebra::Vector3Ds ctrs_;
50  Particles ps_norb_;
51  std::vector<core::RigidBody> rbs_;
53  algebra::Vector3Ds oldcoords_;
55 
57  std::vector<core::RigidBody> get_rigid_bodies(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.
A container for Singletons.
Simple Monte Carlo optimizer.
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Definition: object_macros.h:25
ParticlesTemp get_particles(Model *m, const ParticleIndexes &ps)
Get the particles from a list of indexes.
virtual void do_reject()=0
Implement reset_proposed_move()
Return value of the MonteCarloMover::propose() function.
A base class for classes which perturb particles.
functionality for defining rigid bodies
The base class for movers for Monte Carlo optimization.
virtual MonteCarloMoverResult do_propose()=0
Implement propose_move()
Simple 3D transformation class.
double Float
Basic floating-point value (could be float, double...)
Definition: types.h:19
Simple 3D vector class.
A decorator for a rigid body.
Definition: rigid_bodies.h:82
virtual ModelObjectsTemp do_get_inputs() const =0