00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef IMPEM_FIT_RESTRAINT_H
00010 #define IMPEM_FIT_RESTRAINT_H
00011
00012 #include "em_config.h"
00013 #include "DensityMap.h"
00014 #include "CoarseCC.h"
00015 #include "SampledDensityMap.h"
00016
00017 #include <IMP/atom/Hierarchy.h>
00018 #include <IMP/atom/Atom.h>
00019 #include <IMP/atom/Mass.h>
00020 #include <IMP/core/XYZR.h>
00021 #include <IMP/Model.h>
00022 #include <IMP/Restraint.h>
00023 #include <IMP/VersionInfo.h>
00024
00025 IMPEM_BEGIN_NAMESPACE
00026
00027
00028
00029
00030
00031 class IMPEMEXPORT FitRestraint : public Restraint
00032 {
00033 public:
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 FitRestraint(Particles ps,
00056 DensityMap *em_map,
00057 FloatKey radius_key= IMP::core::XYZR::get_default_radius_key(),
00058 FloatKey weight_key= IMP::atom::Mass::get_mass_key(),
00059 float scale=1,
00060 bool special_treatment_of_particles_outside_of_density=true);
00061
00062
00063 SampledDensityMap *get_model_dens_map() {
00064 return model_dens_map_;
00065 }
00066
00067 IMP_RESTRAINT(FitRestraint);
00068
00069 IMP_LIST(private, Particle, particle, Particle*, Particles);
00070 private:
00071 IMP::internal::OwnerPointer<DensityMap> target_dens_map_;
00072 IMP::internal::OwnerPointer<SampledDensityMap> model_dens_map_;
00073 algebra::BoundingBoxD<3> target_bounding_box_;
00074
00075 float scalefac_;
00076 IMP::core::XYZs xyz_;
00077
00078 std::vector<float> dx_, dy_ , dz_;
00079 bool special_treatment_of_particles_outside_of_density_;
00080 };
00081
00082 IMPEM_END_NAMESPACE
00083
00084 #endif