00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 00005 #ifndef BALL_STRUCTURE_ATOMBIJECTION_H 00006 #define BALL_STRUCTURE_ATOMBIJECTION_H 00007 00008 #ifndef BALL_COMMON_H 00009 # include <BALL/common.h> 00010 #endif 00011 00012 #ifndef BALL_KERNEL_ATOMCONTAINER_H 00013 # include <BALL/KERNEL/atomContainer.h> 00014 #endif 00015 00016 namespace BALL 00017 { 00018 00045 class BALL_EXPORT AtomBijection 00046 : public std::vector<std::pair<Atom*, Atom*> > 00047 { 00048 public: 00049 00054 typedef std::pair<Atom*, Atom*> AtomPair; 00055 typedef std::vector<std::pair<Atom*, Atom*> > PairVector; 00057 00061 00064 AtomBijection() {} 00065 00079 AtomBijection(AtomContainer& A, AtomContainer& B); 00080 00082 virtual ~AtomBijection() {} 00083 00085 00106 Size assignTrivial(AtomContainer& A, AtomContainer& B); 00107 00120 Size assignByName(AtomContainer& A, AtomContainer& B); 00121 00132 Size assignCAlphaAtoms(AtomContainer& A, AtomContainer& B); 00133 00134 00146 Size assignBackboneAtoms(AtomContainer& A, AtomContainer& B); 00148 00149 00152 00153 double calculateRMSD() const; 00155 00158 00159 using PairVector::size; 00161 using PairVector::push_back; 00163 using PairVector::begin; 00165 using PairVector::end; 00167 using PairVector::rbegin; 00169 using PairVector::rend; 00171 00172 }; 00173 00174 } // namespace BALL 00175 00176 #endif // BALL_STRUCTURE_ATOMBIJECTION_H