IMP  2.3.1
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-2014 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/kernel/Model.h>
20 
21 #include <IMP/base/Object.h>
22 #include <IMP/base/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 base::Object {
28  public:
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 std::vector<double>& effect_size,
40  DerivativeAccumulator* acc) const;
41 
42  ModelObjectsTemp do_get_inputs() const;
43 
45 
46  protected:
47  kernel::Particles particles_; // non-rigid bodies particles
48  std::vector<core::RigidBody> rigid_bodies_decorators_; // rigid bodies
49  std::vector<kernel::Particles> rigid_bodies_; // rigid bodies particles
50  // non-changing part of the profile
51  base::PointerMember<Profile> rigid_bodies_profile_;
52  FormFactorType ff_type_; // type of the form factors to use
53 };
54 
55 IMPSAXS_END_NAMESPACE
56 
57 #endif /* IMPSAXS_RIGID_BODIES_PROFILE_HANDLER_H */
Class for adding derivatives from restraints to the model.
IMP::base::Vector< IMP::base::WeakPointer< kernel::ModelObject > > ModelObjectsTemp
A smart pointer to a ref-counted Object that is a class member.
Definition: Pointer.h:147
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Definition: object_macros.h:25
Handle the profile for a set of particles, which may include rigid bodies.
functionality for defining rigid bodies
Storage of a model, its restraints, constraints and particles.
Common base class for heavy weight IMP objects.
Definition: Object.h:106
A nullptr-initialized pointer to an IMP Object.
A shared base class to help in debugging and things.
FormFactorType
type of the form factors for profile calculations
Profile * compute_profile(IMP::kernel::Particles particles, float min_q=0.0, float max_q=0.5, float delta_q=0.001, FormFactorTable *ft=get_default_form_factor_table(), FormFactorType ff_type=HEAVY_ATOMS, float water_layer_c2=4.0, 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
A class for computing SAXS derivatives.
A class for profile storing and computation.