Generated on Mon Jun 23 16:24:56 2008 for BIU-1.7.0 by doxygen 1.5.1

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_*/