00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: pair6_12InteractionEnergyProcessor.h,v 1.22 2005/12/23 17:01:59 amoll Exp $ 00005 // 00006 00007 #ifndef BALL_SOLVATION_PAIR6_12INTERACTIONENERGYPROCESSOR_H 00008 #define BALL_SOLVATION_PAIR6_12INTERACTIONENERGYPROCESSOR_H 00009 00010 #ifndef BALL_COMMON_H 00011 # include <BALL/common.h> 00012 #endif 00013 00014 #ifndef BALL_DATATYPE_OPTIONS_H 00015 # include <BALL/DATATYPE/options.h> 00016 #endif 00017 00018 #ifndef BALL_MATHS_SURFACE_H 00019 # include <BALL/MATHS/surface.h> 00020 #endif 00021 00022 #ifndef BALL_ENERGY_ENERGYPROCESSOR_H 00023 # include <BALL/ENERGY/energyProcessor.h> 00024 #endif 00025 00026 #ifndef BALL_STRUCTURE_RDFPARAMETER_H 00027 # include <BALL/STRUCTURE/RDFParameter.h> 00028 #endif 00029 00030 #ifndef BALL_SOLVATION_PAIR6_12RDFINTEGRATOR_H 00031 # include <BALL/SOLVATION/pair6_12RDFIntegrator.h> 00032 #endif 00033 00034 #ifndef BALL_SOLVATION_SOLVENTDESCRIPTOR_H 00035 # include <BALL/SOLVATION/solventDescriptor.h> 00036 #endif 00037 00038 namespace BALL 00039 { 00048 class BALL_EXPORT Pair6_12InteractionEnergyProcessor 00049 : public EnergyProcessor 00050 { 00051 00052 public: 00053 00054 // ?????: Doku. 00055 enum SurfaceType 00056 { 00057 SURFACE__UNKNOWN = 0, 00058 SURFACE__SAS = 1, 00059 SURFACE__SES = 2, 00060 SURFACE__EXTERNAL = 3 00061 }; 00062 00067 struct BALL_EXPORT Option 00068 { 00069 00075 static const char* VERBOSITY; 00076 00083 static const char* USE_RDF; 00084 00091 static const char* RDF_FILENAME; 00092 00099 static const char* SOLVENT_FILENAME; 00100 00107 static const char* LJ_FILENAME; 00108 00115 static const char* SOLVENT_NUMBER_DENSITY; 00116 00121 static const char* SURFACE_TYPE; 00122 00127 static const char* SURFACE_FILENAME; 00128 00129 }; 00130 00135 struct BALL_EXPORT Default 00136 { 00140 static const Size VERBOSITY; 00141 00146 static const bool USE_RDF; 00147 static const char* RDF_FILENAME; 00148 static const char* SOLVENT_FILENAME; 00149 static const char* LJ_FILENAME; 00150 00156 static const float SOLVENT_NUMBER_DENSITY; 00157 00161 static const Size SURFACE_TYPE; 00162 00166 static const char* SURFACE_FILENAME; 00167 00168 }; 00169 00173 00176 Pair6_12InteractionEnergyProcessor() 00177 ; 00178 00182 Pair6_12InteractionEnergyProcessor 00183 (const Pair6_12InteractionEnergyProcessor& proc) 00184 ; 00185 00192 Pair6_12InteractionEnergyProcessor(const SolventDescriptor& solvent, 00193 const RDFParameter& rdf_param, 00194 const Pair6_12RDFIntegrator& rdf_integrator) 00195 ; 00196 00199 virtual ~Pair6_12InteractionEnergyProcessor() ; 00200 00202 00205 00209 void setSolventDescriptor(const SolventDescriptor& solvent) ; 00210 00214 const SolventDescriptor& getSolventDescriptor() const ; 00215 00219 void setRDFParameters(const RDFParameter& rdf_parameter) ; 00220 00224 const RDFParameter& getRDFParameter() const ; 00225 00229 void setRDFIntegrator(const Pair6_12RDFIntegrator& integrator) ; 00230 00234 const Pair6_12RDFIntegrator& getRDFIntegrator() const ; 00235 00237 00240 00243 const Pair6_12InteractionEnergyProcessor& operator = 00244 (const Pair6_12InteractionEnergyProcessor& proc) ; 00245 00248 virtual void clear() ; 00249 00251 00254 00257 virtual bool finish() 00258 throw(Exception::DivisionByZero); 00259 00261 00264 00267 Options options; 00268 00270 00273 00276 bool operator == (const Pair6_12InteractionEnergyProcessor& proc) 00277 const ; 00278 00280 00281 protected: 00282 00283 /*_ solvent description, to be read from an INIFile 00284 */ 00285 SolventDescriptor solvent_; 00286 00287 /*_ the rdf description, also from an INIFile 00288 */ 00289 RDFParameter rdf_parameter_; 00290 00291 /*_ This is the tool to perform integrations with embedded RDf information 00292 */ 00293 Pair6_12RDFIntegrator rdf_integrator_; 00294 00295 00296 private: 00297 00298 void getExternalSurface_(std::vector<std::pair<Vector3, Surface> >& surface_map, 00299 const char* surface_file) ; 00300 }; 00301 00302 } // namespace BALL 00303 00304 #endif // BALL__PAIR6_12INTERACTIONENERGYPROCESSOR_H