00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 00005 #ifndef BALL_STRUCTURE_RADIALDISTRIBUTIONFUNCTION_H 00006 #define BALL_STRUCTURE_RADIALDISTRIBUTIONFUNCTION_H 00007 00008 #ifndef BALL_MATHS_PPOLYNOMIAL_H 00009 # include <BALL/MATHS/piecewisePolynomial.h> 00010 #endif 00011 00012 namespace BALL 00013 { 00022 class BALL_EXPORT RadialDistributionFunction 00023 { 00024 public: 00025 00026 BALL_CREATE(RadialDistributionFunction) 00027 00028 00031 00034 RadialDistributionFunction() 00035 ; 00036 00039 RadialDistributionFunction(const RadialDistributionFunction& rdf) 00040 ; 00041 00044 RadialDistributionFunction(const PiecewisePolynomial& polynomial) 00045 ; 00046 00049 virtual ~RadialDistributionFunction() 00050 ; 00051 00053 00056 00059 const RadialDistributionFunction& operator = (const RadialDistributionFunction& rdf) 00060 ; 00061 00064 virtual void clear() 00065 ; 00066 00068 00071 00074 void setRepresentation(const PiecewisePolynomial& polynomial) 00075 ; 00076 00079 const PiecewisePolynomial& getRepresentation() const 00080 ; 00081 00084 const Interval& getRange() const 00085 ; 00086 00089 virtual double operator () (double x) const 00090 ; 00091 00093 00096 00099 bool isInRange(double x) const 00100 ; 00101 00104 bool isValid() const 00105 ; 00106 00109 bool operator == (const RadialDistributionFunction& rdf) const 00110 ; 00111 00113 00116 00119 virtual void dump (std::ostream& s = std::cout, Size depth = 0) const 00120 ; 00121 00123 00124 protected: 00125 00126 /*_ The representation of the RDF. 00127 */ 00128 PiecewisePolynomial representation_; 00129 00130 /*_ The valid flag. 00131 */ 00132 bool valid_; 00133 00134 }; 00135 00136 } 00137 00138 #endif // BALL_STRUCTURE_RADIALDISTRIBUTIONFUNCTION_H