IMP logo
IMP Reference Guide  develop.d97d4ead1f,2024/11/21
The Integrative Modeling Platform
RigidBodiesProfileHandler.h
Go to the documentation of this file.
1 /**
2  * \file IMP/saxs/RigidBodiesProfileHandler.h
3  * \brief
4  *
5  * \authors Dina Schneidman
6  * Copyright 2007-2022 IMP Inventors. All rights reserved.
7  *
8  */
9 
10 #ifndef IMPSAXS_RIGID_BODIES_PROFILE_HANDLER_H
11 #define IMPSAXS_RIGID_BODIES_PROFILE_HANDLER_H
12 
13 #include <IMP/saxs/saxs_config.h>
14 #include <IMP/saxs/Profile.h>
16 
17 #include <IMP/core/rigid_bodies.h>
18 
19 #include <IMP/Model.h>
20 
21 #include <IMP/Object.h>
22 #include <IMP/Pointer.h>
23 
24 IMPSAXS_BEGIN_NAMESPACE
25 
26 //! Handle the profile for a set of particles, which may include rigid bodies
27 class IMPSAXSEXPORT RigidBodiesProfileHandler : public Object {
28  public:
29  RigidBodiesProfileHandler(const Particles& particles,
30  FormFactorType ff_type = HEAVY_ATOMS);
31 
32  void compute_profile(Profile* model_profile) const;
33 
34  // TODO: implement
35  // void compute_profile_partial(Profile* model_profile) const;
36 
37  void compute_derivatives(const DerivativeCalculator* dc,
38  const Profile* model_profile,
39  const Vector<double>& effect_size,
40  DerivativeAccumulator* acc) const;
41 
42  ModelObjectsTemp do_get_inputs() const;
43 
44  FormFactorType get_form_factor_type() const { return ff_type_; }
45 
47 
48  protected:
49  Particles particles_; // non-rigid bodies particles
50  Vector<core::RigidBody> rigid_bodies_decorators_; // rigid bodies
51  Vector<Particles> rigid_bodies_; // rigid bodies particles
52  // non-changing part of the profile
53  PointerMember<Profile> rigid_bodies_profile_;
54  FormFactorType ff_type_; // type of the form factors to use
55 };
56 
57 IMPSAXS_END_NAMESPACE
58 
59 #endif /* IMPSAXS_RIGID_BODIES_PROFILE_HANDLER_H */
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Definition: object_macros.h:25
Storage of a model, its restraints, constraints and particles.
A more IMP-like version of the std::vector.
Definition: Vector.h:50
Handle the profile for a set of particles, which may include rigid bodies.
Common base class for heavy weight IMP objects.
Definition: Object.h:111
functionality for defining rigid bodies
A smart pointer to a ref-counted Object that is a class member.
Definition: Pointer.h:143
A nullptr-initialized pointer to an IMP Object.
A shared base class to help in debugging and things.
Profile * compute_profile(Particles particles, double min_q=0.0, double max_q=0.5, double delta_q=0.001, FormFactorTable *ft=get_default_form_factor_table(), FormFactorType ff_type=HEAVY_ATOMS, bool hydration_layer=true, bool fit=true, bool reciprocal=false, bool ab_initio=false, bool vacuum=false, std::string beam_profile_file="")
profile calculation for particles and a given set of options
FormFactorType
type of the form factors for profile calculations
A class for computing SAXS derivatives.
Class for adding derivatives from restraints to the model.
A class for profile storing and computation.