RMSDMinimizer.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: RMSDMinimizer.h,v 1.3.18.1 2007/03/25 21:25:22 oliver Exp $
00005 //
00006 // Author:
00007 //   Oliver Kohlbacher
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 } // namespace BALL
00067 
00068 #endif // BALL_STRUCTURE_RMSDMINIMIZER_H