IMP logo
IMP Reference Guide  2.5.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-2015 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(Model *m, ParticleIndex pi,
25  double mass) {
26  m->add_attribute(get_mass_key(), pi, mass);
27  }
28 
29  public:
30  static bool get_is_setup(Model *m, 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 */
The base class for decorators.
Add mass to a particle.
Definition: Mass.h:23
ParticleIndex get_particle_index() const
Returns the particle index decorated by this decorator.
Definition: Decorator.h:186
A container for Singletons.
double get_mass(ResidueType c)
Get the mass from the residue type.
#define IMP_DECORATOR_SETUP_1(Name, FirstArgumentType, first_argument_name)
Model * get_model() const
Returns the Model containing the particle.
Definition: Decorator.h:189
Class for storing model, its restraints, constraints, and particles.
Definition: Model.h:72
A container for Pairs.
void add_attribute(TypeKey attribute_key, ParticleIndex particle, Type value)
Various general useful macros for IMP.
void set_attribute(TypeKey attribute_key, ParticleIndex particle, Type value)
#define IMP_DECORATOR_METHODS(Name, Parent)
double Float
Basic floating-point value (could be float, double...)
Definition: types.h:20
Type get_attribute(TypeKey attribute_key, ParticleIndex particle)