IMP logo
IMP Reference Guide  2.22.0
The Integrative Modeling Platform
Symmetric.h
Go to the documentation of this file.
1 /**
2  * \file IMP/pmi/Symmetric.h
3  * \brief A decorator for symmetric particles
4  *
5  * Copyright 2007-2022 IMP Inventors. All rights reserved.
6  */
7 
8 #ifndef IMPPMI_SYMMETRIC_H
9 #define IMPPMI_SYMMETRIC_H
10 
11 #include <IMP/pmi/pmi_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 IMPPMI_BEGIN_NAMESPACE
19 
20 //! Add symmetric attribute to a particle
21 /** False means the particle is reference or non symmetric.
22  */
23 class IMPPMIEXPORT Symmetric : public Decorator {
24  static void do_setup_particle(Model *m, ParticleIndex pi, Float symmetric) {
25  m->add_attribute(get_symmetric_key(), pi, symmetric);
26  }
27  public:
28 
29  static bool get_is_setup(Model *m, ParticleIndex pi) {
30  return m->get_has_attribute(get_symmetric_key(), pi);
31  }
32 
33  Float get_symmetric() const {
34  return get_model()->get_attribute(get_symmetric_key(),
36  }
37 
38  void set_symmetric(Float d) { get_model()->set_attribute(get_symmetric_key(),
40  d); }
41 
43  /** Set the symmetric attribute to the particle. */
45 
46  static FloatKey get_symmetric_key();
47 };
48 
49 IMPPMI_END_NAMESPACE
50 
51 #endif /* IMPPMI_SYMMETRIC_H */
The base class for decorators.
ParticleIndex get_particle_index() const
Returns the particle index decorated by this decorator.
Definition: Decorator.h:211
A container for Singletons.
#define IMP_DECORATOR_SETUP_1(Name, FirstArgumentType, first_argument_name)
Model * get_model() const
Returns the Model containing the particle.
Definition: Decorator.h:214
Add symmetric attribute to a particle.
Definition: Symmetric.h:23
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