00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef BALL_STRUCTURE_RMSDMINIMIZER_H
00011 #define BALL_STRUCTURE_RMSDMINIMIZER_H
00012
00013 #ifndef BALL_STRUCTURE_ATOMBIJECTION_H
00014 # include <BALL/STRUCTURE/atomBijection.h>
00015 #endif
00016
00017 #ifndef BALL_MATHS_MATRIX44_H
00018 # include <BALL/MATHS/matrix44.h>
00019 #endif
00020
00021 namespace BALL
00022 {
00023
00039 class BALL_EXPORT RMSDMinimizer
00040 {
00041 public:
00042 class BALL_EXPORT IncompatibleCoordinateSets
00043 : public Exception::GeneralException
00044 {
00045 public:
00046 IncompatibleCoordinateSets(const char*, int, Size, Size);
00047 };
00048
00049 class BALL_EXPORT TooFewCoordinates
00050 : public Exception::GeneralException
00051 {
00052 public:
00053 TooFewCoordinates(const char*, int, Size);
00054 };
00055
00056 typedef std::vector<Vector3> PointVector;
00057 typedef std::pair<Matrix4x4, double> Result;
00058
00059 static Result computeTransformation(const AtomBijection& ab)
00060 throw(RMSDMinimizer::IncompatibleCoordinateSets, RMSDMinimizer::TooFewCoordinates);
00061
00062 static Result computeTransformation(const PointVector& X, const PointVector& Y)
00063 throw(RMSDMinimizer::IncompatibleCoordinateSets, RMSDMinimizer::TooFewCoordinates);
00064 };
00065
00066 }
00067
00068 #endif // BALL_STRUCTURE_RMSDMINIMIZER_H