IMP logo
IMP Reference Guide  develop.95736ecade,2024/03/01
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-2022 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  static void do_setup_particle(Model *m, ParticleIndex pi,
29  Mass o) {
30  do_setup_particle(m, pi, o.get_mass());
31  }
32 
33  public:
34  static bool get_is_setup(Model *m, ParticleIndex pi) {
35  return m->get_has_attribute(get_mass_key(), pi);
36  }
37 
38  Float get_mass() const {
39  return get_model()->get_attribute(get_mass_key(), get_particle_index());
40  }
41 
42  void set_mass(Float d) {
43  get_model()->set_attribute(get_mass_key(), get_particle_index(), d);
44  }
45 
47  /** Add the specified mass to the particle. */
50 
51  /** Get the key used to store the mass. */
52  static FloatKey get_mass_key();
53 };
54 
55 IMPATOM_END_NAMESPACE
56 
57 #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:211
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:214
Class for storing model, its restraints, constraints, and particles.
Definition: Model.h:86
A container for Pairs.
void add_attribute(TypeKey attribute_key, ParticleIndex particle, Type value)
add particle attribute with the specified key and initial value
Helper macros for implementing Decorators.
void set_attribute(TypeKey attribute_key, ParticleIndex particle, Type value)
set the value of particle attribute with the specified key
Interface to specialized Particle types (e.g. atoms)
Definition: Decorator.h:119
#define IMP_DECORATOR_METHODS(Name, Parent)
double Float
Basic floating-point value (could be float, double...)
Definition: types.h:19
bool get_has_attribute(TypeKey attribute_key, ParticleIndex particle) const
return true if particle has attribute with the specified key
Type get_attribute(TypeKey attribute_key, ParticleIndex particle)
get the value of the particle attribute with the specified key