11 #include <IMP/core/core_config.h> 
   19 IMPCORE_BEGIN_NAMESPACE
 
   31   static void do_setup_particle(
 
   44   static FloatKey get_coordinate_key(
unsigned int i) {
 
   46     return IMP::internal::xyzr_keys[i];
 
   79     get_particle()->add_to_derivative(get_coordinate_key(i), v, d);
 
   90     return get_particle()->get_is_optimized(get_coordinate_key(0)) &&
 
   91            get_particle()->get_is_optimized(get_coordinate_key(1)) &&
 
   96     get_particle()->set_is_optimized(get_coordinate_key(0), tf);
 
   97     get_particle()->set_is_optimized(get_coordinate_key(1), tf);
 
   98     get_particle()->set_is_optimized(get_coordinate_key(2), tf);
 
  139 IMPCORE_END_NAMESPACE
 
  144 IMPKERNEL_BEGIN_NAMESPACE
 
  156   return core::XYZ(d).get_coordinates();
 
  164     WeakPointer<Particle> d) {
 
  165   return core::XYZ(d).get_coordinates();
 
  173     Pointer<Particle> d) {
 
  174   return core::XYZ(d).get_coordinates();
 
  181 IMPKERNEL_END_NAMESPACE
 
  185 IMPCORE_BEGIN_NAMESPACE
 
  200 IMPCOREEXPORT 
double get_dihedral(XYZ a, XYZ b, XYZ c, XYZ d);
 
  210 IMPCORE_END_NAMESPACE
 
The base class for decorators. 
 
void add_to_derivatives(const algebra::Vector3D &v, DerivativeAccumulator &d)
Add the vector v to the derivative vector of the x,y,z coordinates. 
 
#define IMP_DECORATOR_GET_SET(name, AttributeKey, Type, ReturnType)
Define methods for getting and setting a particular simple field. 
 
ParticleIndex get_particle_index() const 
Returns the particle index decorated by this decorator. 
 
Smart pointer to Object-derived classes that does not refcount. 
 
#define IMP_DECORATOR_SETUP_1(Name, FirstArgumentType, first_argument_name)
 
double get_dihedral(XYZ a, XYZ b, XYZ c, XYZ d)
Compute the dihedral angle (in radians) between the four particles. 
 
Model * get_model() const 
Returns the Model containing the particle. 
 
bool get_coordinates_are_optimized() const 
Get whether the coordinates are optimized. 
 
void set_coordinate(unsigned int i, Float v)
set the ith coordinate 
 
void set_vector_geometry(Pointer< Particle > d, const algebra::Vector3D &v)
 
A smart pointer to a reference counted object. 
 
Class for storing model, its restraints, constraints, and particles. 
 
Float get_derivative(int i) const 
 
void add_attribute(TypeKey attribute_key, ParticleIndex particle, Type value)
add particle attribute with the specified key and initial value 
 
void set_coordinates(const algebra::Vector3D &v)
set all coordinates from a vector 
 
void transform(XYZ a, const algebra::Transformation3D &tr)
Apply a transformation to the particle. 
 
double get_distance(XYZ a, XYZ b)
Compute the distance between a pair of particles. 
 
Helper macros for implementing Decorators. 
 
A decorator for a particle with x,y,z coordinates. 
 
Float get_coordinate(int i) const 
Get the ith coordinate. 
 
#define IMP_DECORATOR_SETUP_0(Name)
 
const algebra::Vector3D & get_coordinates() const 
Convert it to a vector. 
 
algebra::Vector3D get_vector_to(const XYZ &b) const 
Get the vector from this particle to another. 
 
Particle * get_particle() const 
Returns the particle decorated by this decorator. 
 
Interface to specialized Particle types (e.g. atoms) 
 
void set_coordinates_are_optimized(bool tf) const 
Set whether the coordinates are optimized. 
 
algebra::Vector3D get_derivatives() const 
Get the vector of derivatives accumulated by add_to_derivatives(). 
 
#define IMP_DECORATOR_METHODS(Name, Parent)
 
double Float
Basic floating-point value (could be float, double...) 
 
Class to handle individual particles of a Model object. 
 
#define IMP_USAGE_CHECK(expr, message)
A runtime test for incorrect usage of a class or method. 
 
#define IMP_DECORATORS(Name, PluralName, Parent)
Define the types for storing sets of decorators. 
 
bool get_has_attribute(TypeKey attribute_key, ParticleIndex particle) const 
return true if particle has attribute with the specified key 
 
void add_to_derivative(int i, Float v, DerivativeAccumulator &d)
 
Class for adding derivatives from restraints to the model.