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