00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef IMPSAXS_RESTRAINT_H
00010 #define IMPSAXS_RESTRAINT_H
00011
00012 #include "saxs_config.h"
00013
00014 #include <IMP/saxs/Score.h>
00015 #include <IMP/saxs/Profile.h>
00016
00017 #include <IMP/core/rigid_bodies.h>
00018
00019 #include <IMP/Model.h>
00020 #include <IMP/Restraint.h>
00021 #include <IMP/VersionInfo.h>
00022
00023 IMPSAXS_BEGIN_NAMESPACE
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 class IMPSAXSEXPORT Restraint : public IMP::Restraint
00041 {
00042 public:
00043
00044
00045
00046
00047
00048 Restraint(const Particles& particles, const Profile& exp_profile);
00049
00050 IMP_RESTRAINT(Restraint);
00051
00052 private:
00053 void compute_profile(Profile& model_profile);
00054 private:
00055 Particles particles_;
00056 std::vector<core::RigidBody> rigid_bodies_decorators_;
00057 std::vector<Particles> rigid_bodies_;
00058 Profile rigid_bodies_profile_;
00059 Pointer<Score> saxs_score_;
00060 };
00061
00062 IMPSAXS_END_NAMESPACE
00063
00064 #endif