/** * \file SphereDistancePairScore.h * \brief A score on the distance between the surfaces of two spheres. * * Copyright 2007-2010 IMP Inventors. All rights reserved. */ #ifndef IMPCORE_SPHERE_DISTANCE_PAIR_SCORE_H #define IMPCORE_SPHERE_DISTANCE_PAIR_SCORE_H #include "core_config.h" #include #include #include IMPCORE_BEGIN_NAMESPACE //! A score on the distance between the surfaces of two spheres. /** \see XYZR \see DistancePairScore \see NormalizedSphereDistancePairScore */ class IMPCOREEXPORT SphereDistancePairScore : public PairScore { IMP::internal::OwnerPointer f_; FloatKey radius_; public: SphereDistancePairScore(UnaryFunction *f, FloatKey radius=FloatKey("radius")); IMP_SIMPLE_PAIR_SCORE(SphereDistancePairScore); }; //! A score on the normalized distance between the surfaces of two spheres /** The distance between the surfaces of the two spheres is divided by the smaller radius to normalize it. \see SphereDistancePairScore \see XYZR \see DistancePairScore */ class IMPCOREEXPORT NormalizedSphereDistancePairScore : public PairScore { IMP::internal::OwnerPointer f_; FloatKey radius_; public: NormalizedSphereDistancePairScore(UnaryFunction *f, FloatKey radius=FloatKey("radius")); IMP_SIMPLE_PAIR_SCORE(NormalizedSphereDistancePairScore); }; //! A score on a weighted distance between the surfaces of two spheres /** The distance between the surfaces of the two spheres is multiplied by the sum of a specific attribute \see SphereDistancePairScore \see XYZR \see DistancePairScore */ class IMPCOREEXPORT WeightedSphereDistancePairScore : public PairScore { IMP::internal::OwnerPointer f_; FloatKey radius_; FloatKey weight_; public: WeightedSphereDistancePairScore(UnaryFunction *f, FloatKey weight, FloatKey radius=FloatKey("radius")); IMP_SIMPLE_PAIR_SCORE(WeightedSphereDistancePairScore); }; IMPCORE_END_NAMESPACE #endif /* IMPCORE_SPHERE_DISTANCE_PAIR_SCORE_H */