IMP  2.3.0
The Integrative Modeling Platform
Mass.h
Go to the documentation of this file.
1 /**
2  * \file IMP/atom/Mass.h
3  * \brief A decorator for particles with mass
4  *
5  * Copyright 2007-2014 IMP Inventors. All rights reserved.
6  */
7 
8 #ifndef IMPATOM_MASS_H
9 #define IMPATOM_MASS_H
10 
11 #include <IMP/atom/atom_config.h>
12 
13 #include <IMP/PairContainer.h>
14 #include <IMP/SingletonContainer.h>
15 #include <IMP/Decorator.h>
16 #include <IMP/decorator_macros.h>
17 
18 IMPATOM_BEGIN_NAMESPACE
19 
20 //! Add mass to a particle
21 /** The mass of the particle is assumed to be in Daltons.
22  */
23 class IMPATOMEXPORT Mass : public Decorator {
24  static void do_setup_particle(kernel::Model *m, kernel::ParticleIndex pi,
25  double mass) {
26  m->add_attribute(get_mass_key(), pi, mass);
27  }
28 
29  public:
30  static bool get_is_setup(kernel::Model *m, kernel::ParticleIndex pi) {
31  return m->get_has_attribute(get_mass_key(), pi);
32  }
33 
34  Float get_mass() const {
35  return get_model()->get_attribute(get_mass_key(), get_particle_index());
36  }
37 
38  void set_mass(Float d) {
39  get_model()->set_attribute(get_mass_key(), get_particle_index(), d);
40  }
41 
43  /** Add the specified mass to the particle. */
45 
46  /** Get the key used to store the mass. */
47  static FloatKey get_mass_key();
48 };
49 
50 IMPATOM_END_NAMESPACE
51 
52 #endif /* IMPATOM_MASS_H */
Import IMP/kernel/Decorator.h in the namespace.
Add mass to a particle.
Definition: Mass.h:23
ParticleIndex get_particle_index() const
Returns the particle index decorated by this decorator.
Import IMP/kernel/SingletonContainer.h in the namespace.
double get_mass(ResidueType c)
Get the mass from the residue type.
#define IMP_DECORATOR_METHODS(Name, Parent)
Model * get_model() const
Returns the Model containing the particle.
Type get_attribute(TypeKey attribute_key, ParticleIndex particle)
Import IMP/kernel/PairContainer.h in the namespace.
Import IMP/kernel/decorator_macros.h in the namespace.
void set_attribute(TypeKey attribute_key, ParticleIndex particle, Type value)
double Float
Basic floating-point value (could be float, double...)
Definition: types.h:20
void add_attribute(TypeKey attribute_key, ParticleIndex particle, Type value)
#define IMP_DECORATOR_SETUP_1(Name, FirstArgumentType, first_argument_name)
Class for storing model, its restraints, constraints, and particles.
Definition: kernel/Model.h:73