atomBijection.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: atomBijection.h,v 1.3.18.1 2007/03/25 21:25:23 oliver Exp $
00005 //
00006 // $Id: atomBijection.h,v 1.3.18.1 2007/03/25 21:25:23 oliver Exp $
00007 //
00008 // Author:
00009 //   Oliver Kohlbacher
00010 //
00011 
00012 #ifndef BALL_STRUCTURE_ATOMBIJECTION_H
00013 #define BALL_STRUCTURE_ATOMBIJECTION_H
00014 
00015 #ifndef BALL_COMMON_H
00016 # include <BALL/common.h>
00017 #endif
00018 
00019 #ifndef BALL_KERNEL_ATOMCONTAINER_H
00020 # include <BALL/KERNEL/atomContainer.h>
00021 #endif
00022 
00023 namespace BALL 
00024 {
00025 
00052   class BALL_EXPORT AtomBijection
00053     : public std::vector<std::pair<Atom*, Atom*> >
00054   {
00055     public:
00056 
00061     typedef std::pair<Atom*, Atom*> AtomPair;
00062     typedef std::vector<std::pair<Atom*, Atom*> > PairVector;
00064     
00068     
00071     AtomBijection() {}
00072 
00086     AtomBijection(AtomContainer& A, AtomContainer& B);
00087 
00089     virtual ~AtomBijection() {}
00090 
00092 
00113     Size assignTrivial(AtomContainer& A, AtomContainer& B);
00114 
00127     Size assignByName(AtomContainer& A, AtomContainer& B);
00128 
00139     Size assignCAlphaAtoms(AtomContainer& A, AtomContainer& B);
00140 
00141 
00153     Size assignBackboneAtoms(AtomContainer& A, AtomContainer& B);
00155     
00156 
00159 
00160     double calculateRMSD() const;
00162 
00165 
00166     using PairVector::size;
00168     using PairVector::push_back;
00170     using PairVector::begin;
00172     using PairVector::end;
00174     using PairVector::rbegin;
00176     using PairVector::rend;
00178   
00179   };
00180 
00181 } // namespace BALL
00182 
00183 #endif // BALL_STRUCTURE_ATOMBIJECTION_H