BALL  1.4.1
RMSDMinimizer.h
Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 
00005 #ifndef BALL_STRUCTURE_RMSDMINIMIZER_H
00006 #define BALL_STRUCTURE_RMSDMINIMIZER_H
00007 
00008 #ifndef BALL_STRUCTURE_ATOMBIJECTION_H
00009 # include <BALL/STRUCTURE/atomBijection.h>
00010 #endif
00011 
00012 #ifndef BALL_MATHS_MATRIX44_H
00013 # include <BALL/MATHS/matrix44.h>
00014 #endif
00015 
00016 namespace BALL
00017 {
00018 
00034   class BALL_EXPORT RMSDMinimizer
00035   {   
00036     public:
00037     class BALL_EXPORT IncompatibleCoordinateSets
00038       : public Exception::GeneralException
00039     {
00040       public:
00041       IncompatibleCoordinateSets(const char*, int, Size, Size);
00042     };
00043     
00044     class BALL_EXPORT TooFewCoordinates
00045       : public Exception::GeneralException
00046     {
00047       public:
00048       TooFewCoordinates(const char*, int, Size);
00049     };
00050 
00051     typedef std::vector<Vector3> PointVector;
00052     typedef std::pair<Matrix4x4, double> Result;
00053 
00054     static Result computeTransformation(const AtomBijection& ab)
00055       throw(RMSDMinimizer::IncompatibleCoordinateSets, RMSDMinimizer::TooFewCoordinates);
00056 
00057     static Result computeTransformation(const PointVector& X, const PointVector& Y)
00058       throw(RMSDMinimizer::IncompatibleCoordinateSets, RMSDMinimizer::TooFewCoordinates);
00059 
00060     static double minimizeRMSD(AtomContainer& a, AtomContainer& b)
00061       throw(RMSDMinimizer::IncompatibleCoordinateSets, RMSDMinimizer::TooFewCoordinates);
00062 
00063  };
00064 
00065 } // namespace BALL
00066 
00067 #endif // BALL_STRUCTURE_RMSDMINIMIZER_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines