src/biu/DistanceEnergyFunction.hh
Go to the documentation of this file.00001 #ifndef DISTANCEENERGYFUNCTION_HH_ 00002 #define DISTANCEENERGYFUNCTION_HH_ 00003 00004 #include "biu/Alphabet.hh" 00005 00006 namespace biu 00007 { 00008 00018 class DistanceEnergyFunction 00019 { 00020 public: 00021 virtual ~DistanceEnergyFunction(); 00022 00023 00030 virtual 00031 double getEnergy( const Alphabet::AlphElem& first, 00032 const Alphabet::AlphElem& second, 00033 const double distance ) const = 0; 00034 00040 virtual 00041 const Alphabet* const getAlphabet() const = 0; 00042 00043 virtual 00044 bool operator == (const DistanceEnergyFunction& cef2) const = 0; 00045 virtual 00046 bool operator != (const DistanceEnergyFunction& cef2) const = 0; 00047 00048 }; 00049 00050 } // biu 00051 00052 #include "biu/ContactEnergyFunction.hh" 00053 00054 00055 namespace biu 00056 { 00057 00064 class IntervalEnergyFunction : public DistanceEnergyFunction 00065 { 00066 00067 protected: 00068 00069 const Alphabet* const alphabet; 00070 00072 std::vector<const biu::EnergyMatrix*> energyMat; 00073 00074 std::vector< double > intervalMax; 00075 00076 00077 public: 00078 00079 00085 IntervalEnergyFunction( const Alphabet* const alphabet ); 00086 00091 IntervalEnergyFunction( const IntervalEnergyFunction& toCopy ); 00092 00093 virtual ~IntervalEnergyFunction(); 00094 00095 00103 virtual 00104 double getEnergy( const Alphabet::AlphElem& first, 00105 const Alphabet::AlphElem& second, 00106 const double distance ) const; 00107 00113 virtual 00114 const Alphabet* const getAlphabet() const; 00115 00116 bool operator == (const DistanceEnergyFunction& cef2) const; 00117 bool operator != (const DistanceEnergyFunction& cef2) const; 00118 00119 00120 00134 virtual 00135 size_t 00136 addInterval( const biu::EnergyMatrix& energies, 00137 const double upperBound ); 00138 00143 virtual 00144 size_t 00145 getIntervalNum(void) const; 00146 00147 00154 virtual 00155 double 00156 getIntervalMax(const size_t index) const; 00157 00158 00165 virtual 00166 const biu::EnergyMatrix* const 00167 getIntervalMatrix(const size_t index) const; 00168 00169 00176 virtual 00177 size_t 00178 getInterval( double distance) const; 00179 }; 00180 00181 } // biu 00182 00183 00184 00185 #endif /*DISTANCEENERGYFUNCTION_HH_*/