00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: radialDistributionFunction.h,v 1.20 2005/12/23 17:02:04 amoll Exp $ 00005 // 00006 00007 #ifndef BALL_STRUCTURE_RADIALDISTRIBUTIONFUNCTION_H 00008 #define BALL_STRUCTURE_RADIALDISTRIBUTIONFUNCTION_H 00009 00010 #ifndef BALL_MATHS_PPOLYNOMIAL_H 00011 # include <BALL/MATHS/piecewisePolynomial.h> 00012 #endif 00013 00014 namespace BALL 00015 { 00024 class BALL_EXPORT RadialDistributionFunction 00025 { 00026 public: 00027 00028 BALL_CREATE(RadialDistributionFunction) 00029 00030 00033 00036 RadialDistributionFunction() 00037 ; 00038 00041 RadialDistributionFunction(const RadialDistributionFunction& rdf) 00042 ; 00043 00046 RadialDistributionFunction(const PiecewisePolynomial& polynomial) 00047 ; 00048 00051 virtual ~RadialDistributionFunction() 00052 ; 00053 00055 00058 00061 const RadialDistributionFunction& operator = (const RadialDistributionFunction& rdf) 00062 ; 00063 00066 virtual void clear() 00067 ; 00068 00070 00073 00076 void setRepresentation(const PiecewisePolynomial& polynomial) 00077 ; 00078 00081 const PiecewisePolynomial& getRepresentation() const 00082 ; 00083 00086 const Interval& getRange() const 00087 ; 00088 00091 virtual double operator () (double x) const 00092 ; 00093 00095 00098 00101 bool isInRange(double x) const 00102 ; 00103 00106 bool isValid() const 00107 ; 00108 00111 bool operator == (const RadialDistributionFunction& rdf) const 00112 ; 00113 00115 00118 00121 virtual void dump (std::ostream& s = std::cout, Size depth = 0) const 00122 ; 00123 00125 00126 protected: 00127 00128 /*_ The representation of the RDF. 00129 */ 00130 PiecewisePolynomial representation_; 00131 00132 /*_ The valid flag. 00133 */ 00134 bool valid_; 00135 00136 }; 00137 00138 } 00139 00140 #endif // BALL_STRUCTURE_RADIALDISTRIBUTIONFUNCTION_H