IMP logo
IMP Reference Guide  develop.27926d84dc,2024/04/18
The Integrative Modeling Platform
symmetry/BallMover.h
Go to the documentation of this file.
1 /**
2  * \file IMP/symmetry/BallMover.h
3  * \brief A mover that keeps a particle in a box
4  *
5  * Copyright 2007-2022 IMP Inventors. All rights reserved.
6  *
7  */
8 
9 #ifndef IMPSYMMETRY_BALL_MOVER_H
10 #define IMPSYMMETRY_BALL_MOVER_H
11 
12 #include <IMP/symmetry/symmetry_config.h>
13 #include <IMP/core/MonteCarlo.h>
15 #include <IMP/algebra.h>
16 
17 IMPSYMMETRY_BEGIN_NAMESPACE
18 
19 //! Move a particle and keep it in the primitive cell of a periodic lattice
20 class IMPSYMMETRYEXPORT BallMover : public core::MonteCarloMover {
21  public:
22  /** The particle is moved within a primitive cell of a periodic lattice
23  \param[in] p is the master particle
24  \param[in] ps are the slave particles
25  \param[in] max_tr is the maximum translation during a step
26  \param[in] ctrs is a list of all cell centers
27  \param[in] trs is the list of transformations from primitive to all cells
28  */
29  BallMover(Particle *p, Particles ps, Float max_tr,
31 
32  protected:
33  virtual ModelObjectsTemp do_get_inputs() const override;
34  virtual core::MonteCarloMoverResult do_propose() override;
35  virtual void do_reject() override;
37 
38  private:
39  //! Master particle
41  //! List of slave particles
42  Particles ps_;
43  //! Maximum translation
44  Float max_tr_;
45  //! List of centers of all (including primitive) cells
46  algebra::Vector3Ds ctrs_;
47  //! List of transformations from primitive to all (including primitive) cells
49  // master particle old coordinates
50  algebra::Vector3D oldcoord_;
51  // slave particles old coordinates
52  algebra::Vector3Ds oldcoords_;
53 };
54 
55 IMPSYMMETRY_END_NAMESPACE
56 
57 #endif /* IMPSYMMETRY_BALL_MOVER_H */
Simple Monte Carlo optimizer.
Move a particle and keep it in the primitive cell of a periodic lattice.
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Definition: object_macros.h:25
Include all non-deprecated headers in IMP.algebra.
virtual void do_reject()=0
Implement reset_proposed_move()
Return value of the MonteCarloMover::propose() function.
A base class for classes which perturb particles.
The base class for movers for Monte Carlo optimization.
A smart pointer to a ref-counted Object that is a class member.
Definition: Pointer.h:143
virtual MonteCarloMoverResult do_propose()=0
Implement propose_move()
VectorD< 3 > Vector3D
Definition: VectorD.h:408
double Float
Basic floating-point value (could be float, double...)
Definition: types.h:19
Class to handle individual particles of a Model object.
Definition: Particle.h:43
virtual ModelObjectsTemp do_get_inputs() const =0