pair6_12InteractionEnergyProcessor.h

Go to the documentation of this file.
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