home
about
news
download
doc
source
systems
tests
bugs
contact
IMP Reference Guide
2.20.2
The Integrative Modeling Platform
IMP Manual
Reference Guide
Tutorial Index
Modules
Classes
Examples
include
IMP
spb
version 2.20.2
PbcBoxedRigidBodyMover.h
Go to the documentation of this file.
1
/**
2
* \file IMP/spb/PbcBoxedRigidBodyMover.h
3
* \brief A mover that transform a rigid body
4
*
5
* Copyright 2007-2022 IMP Inventors. All rights reserved.
6
*
7
*/
8
9
#ifndef IMPSPB_PBC_BOXED_RIGID_BODY_MOVER_H
10
#define IMPSPB_PBC_BOXED_RIGID_BODY_MOVER_H
11
12
#include <
IMP/SingletonContainer.h
>
13
#include <
IMP/algebra/Transformation3D.h
>
14
#include <
IMP/algebra/Vector3D.h
>
15
#include <
IMP/core/MonteCarlo.h
>
16
#include <IMP/spb/spb_config.h>
17
18
IMPSPB_BEGIN_NAMESPACE
19
20
//! Modify the transformation of a rigid body
21
/** The transformation of a rigid body is moved in a ball of given
22
size. The probability distribution is uniform over the ball.
23
\see MonteCarlo
24
*/
25
class
IMPSPBEXPORT
PbcBoxedRigidBodyMover
:
public
core::MonteCarloMover
{
26
public
:
27
/** The rigid body is rotated and translated to move
28
\param[in] d the rigid body decorator
29
\param[in] max_translation maximum translation during a step
30
\param[in] max_rotation maximum rotation angle in radians
31
*/
32
PbcBoxedRigidBodyMover
(
core::RigidBody
d,
Particles
ps,
Float
max_translation,
33
Float
max_rotation,
algebra::Vector3Ds
centers,
34
algebra::Transformation3Ds
transformations,
35
Particle
*px,
Particle
*py,
Particle
*pz);
36
37
protected
:
38
virtual
IMP::ModelObjectsTemp
do_get_inputs
()
const override
;
39
virtual
core::MonteCarloMoverResult
do_propose
()
override
;
40
virtual
void
do_reject
()
override
;
41
42
IMP_OBJECT_METHODS
(
PbcBoxedRigidBodyMover
);
43
IMP_SHOWABLE
(
PbcBoxedRigidBodyMover
);
44
45
private
:
46
algebra::Transformation3D
last_transformation_;
47
algebra::Vector3Ds
oldcoords_;
48
algebra::Transformation3Ds
oldtrs_;
49
Float
max_translation_;
50
Float
max_angle_;
51
algebra::Vector3Ds
centers_;
52
algebra::Transformation3Ds
transformations_;
53
core::RigidBody
d_;
54
IMP::Particles
ps_;
55
IMP::Particles
ps_norb_;
56
std::vector<core::RigidBody> rbs_;
57
58
// particles for scaling
59
IMP::PointerMember<IMP::Particle>
px_;
60
IMP::PointerMember<IMP::Particle>
py_;
61
IMP::PointerMember<IMP::Particle>
pz_;
62
63
algebra::Vector3D
get_vector(
algebra::Vector3D
center);
64
algebra::Transformation3D
get_transformation(
algebra::Transformation3D
trans);
65
IMP::Particles
get_particles
(
IMP::Particles
ps);
66
std::vector<core::RigidBody> get_rigid_bodies(
IMP::Particles
ps);
67
};
68
69
IMPSPB_END_NAMESPACE
70
71
#endif
/* IMPSPB_PBC_BOXED_RIGID_BODY_MOVER_H */
IMP::algebra::Transformation3D
Simple 3D transformation class.
Definition:
Transformation3D.h:37
SingletonContainer.h
A container for Singletons.
MonteCarlo.h
Simple Monte Carlo optimizer.
IMP_OBJECT_METHODS
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Definition:
object_macros.h:25
IMP::get_particles
ParticlesTemp get_particles(Model *m, const ParticleIndexes &ps)
Get the particles from a list of indexes.
IMP_SHOWABLE
#define IMP_SHOWABLE(Name)
Definition:
showable_macros.h:41
IMP::core::MonteCarloMover::do_reject
virtual void do_reject()=0
Implement reset_proposed_move()
IMP::core::MonteCarloMoverResult
Return value of the MonteCarloMover::propose() function.
Definition:
MonteCarloMover.h:31
IMP::spb::PbcBoxedRigidBodyMover
Modify the transformation of a rigid body.
Definition:
PbcBoxedRigidBodyMover.h:25
IMP::Vector< Pointer< Particle > >
IMP::core::MonteCarloMover
A base class for classes which perturb particles.
Definition:
MonteCarloMover.h:44
IMP::PointerMember< IMP::Particle >
IMP::core::MonteCarloMover::do_propose
virtual MonteCarloMoverResult do_propose()=0
Implement propose_move()
Transformation3D.h
Simple 3D transformation class.
IMP::algebra::Vector3D
VectorD< 3 > Vector3D
Definition:
VectorD.h:425
IMP::Float
double Float
Basic floating-point value (could be float, double...)
Definition:
types.h:19
Vector3D.h
Simple 3D vector class.
IMP::Particle
Class to handle individual particles of a Model object.
Definition:
Particle.h:43
IMP::core::RigidBody
A decorator for a rigid body.
Definition:
rigid_bodies.h:82
IMP::ModelObject::do_get_inputs
virtual ModelObjectsTemp do_get_inputs() const =0