00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 00005 #ifndef BALL_STRUCTURE_RDFINTEGRATOR_H 00006 #define BALL_STRUCTURE_RDFINTEGRATOR_H 00007 00008 #ifndef BALL_STRUCTURE_RADIALDISTRIBUTIONFUNCTION_H 00009 # include <BALL/STRUCTURE/radialDistributionFunction.h> 00010 #endif 00011 00012 namespace BALL 00013 { 00019 class BALL_EXPORT RDFIntegrator 00020 { 00021 public: 00022 00023 BALL_CREATE(RDFIntegrator) 00024 00025 00028 00031 RDFIntegrator() 00032 ; 00033 00037 RDFIntegrator(const RDFIntegrator& integrator) 00038 ; 00039 00043 RDFIntegrator(const RadialDistributionFunction& rdf) 00044 ; 00045 00048 virtual ~RDFIntegrator() 00049 ; 00050 00052 00055 00060 const RDFIntegrator& operator = (const RDFIntegrator& integrator) 00061 ; 00062 00065 virtual void clear() 00066 ; 00067 00069 00070 00071 00076 bool operator == (const RDFIntegrator& integrator) const 00077 ; 00078 00082 virtual bool isValid() const 00083 ; 00084 00086 00087 00088 00093 void setRDF(const RadialDistributionFunction& rdf) 00094 ; 00095 00099 const RadialDistributionFunction& getRDF() const 00100 ; 00101 00108 virtual double operator () (double x) const 00109 ; 00110 00112 00113 protected: 00114 00115 //_ The radial distribution function which is to be integrated. 00116 RadialDistributionFunction rdf_; 00117 00118 /*_ A flag indicating validity of this instance. A sole RDFIntegrator 00119 instance cannot be valid, because it does not have any information 00120 about the potential for which it should be the integrating means. 00121 This flag is provided for derived classes. 00122 */ 00123 bool valid_; 00124 00125 }; 00126 00127 } 00128 #endif // BALL_STRUCTURE_RDFINTEGRATOR_H