function_object_bases.h
Go to the documentation of this file.00001 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00040 
00041 
00042 
00043 
00044 
00045 
00046 #ifndef CLIPPER_FUNCTION_OBJECT_BASES
00047 #define CLIPPER_FUNCTION_OBJECT_BASES
00048 
00049 
00050 #include "../core/hkl_datatypes.h"
00051 #include "../core/xmap.h"
00052 #include "../core/nxmap_operator.h"
00053 
00054 
00055 namespace clipper {
00056 
00058 
00059   template<class T> class SFcalc_base {
00060   public:
00062 
00070     virtual bool operator() ( HKL_data<datatypes::F_phi<T> >& fphidata, const Atom_list& atoms ) const = 0;
00071     virtual ~SFcalc_base() {}  
00072   };
00073 
00074 
00076 
00077   template<class T> class EDcalc_base {
00078   public:
00080 
00088     virtual bool operator() ( Xmap<T>& xmap, const Atom_list& atoms ) const = 0;
00089     virtual bool operator() ( NXmap<T>& nxmap, const Atom_list& atoms ) const = 0;
00090     virtual ~EDcalc_base() {}  
00091   };
00092 
00093 
00095 
00096   template<class T> class SFcalc_obs_base {
00097   public:
00099 
00109     virtual bool operator() ( HKL_data<datatypes::F_phi<T> >& fphi, const HKL_data<datatypes::F_sigF<T> >& fsig, const Atom_list& atoms ) = 0;
00110     virtual ~SFcalc_obs_base() {}  
00111   };
00112 
00113 
00115 
00116   template<class T> class SFweight_base {
00117   public:
00119     enum TYPE { NONE, SIGMAA, SCALE, BOTH };
00121 
00130     virtual bool operator() ( HKL_data<datatypes::F_phi<T> >& fb, HKL_data<datatypes::F_phi<T> >& fd, HKL_data<datatypes::Phi_fom<T> >& phiw, const HKL_data<datatypes::F_sigF<T> >& fo, const HKL_data<datatypes::F_phi<T> >& fc, const HKL_data<datatypes::Flag>& usage ) = 0;
00131     virtual ~SFweight_base() {}  
00132   };
00133 
00134 
00136 
00137   template<class T> class SFscale_base {
00138   public:
00140 
00145     virtual bool operator() ( HKL_data<datatypes::F_sigF<T> >& fo, const HKL_data<datatypes::F_phi<T> >& fc ) = 0;
00147 
00152     virtual bool operator() ( HKL_data<datatypes::F_phi<T> >& fc, const HKL_data<datatypes::F_sigF<T> >& fo ) = 0;
00154 
00158     virtual bool operator() ( HKL_data<datatypes::F_sigF<T> >& fo ) = 0;
00159     virtual ~SFscale_base() {}  
00160   };
00161 
00162 
00164 
00165   template<class T> class MapFilter_base {
00166   public:
00168 
00174     virtual bool operator() ( Xmap<T>& result, const Xmap<T>& xmap ) const = 0;
00175     virtual ~MapFilter_base() {}  
00176   };
00177 
00178 
00180 
00184   template<class T> class Convolution_search_base {
00185   public:
00196     virtual bool operator() ( Xmap<T>& result, const NXmap<T>& srchval, const NX_operator& nxop ) const = 0;
00197     virtual ~Convolution_search_base() {}  
00198   };
00199 
00201 
00205   template<class T> class FFFear_base {
00206   public:
00218     virtual bool operator() ( Xmap<T>& result, const NXmap<T>& srchval, const NXmap<T>& srchwgt, const NX_operator& nxop ) const = 0;
00219     virtual ~FFFear_base() {}  
00220   };
00221 
00223 
00224   template<class T1, class T2> class Skeleton_base {
00225   public:
00227 
00239     virtual bool operator() ( Xmap<T1>& xskl, const Xmap<T2>& xmap ) const = 0;
00240     virtual ~Skeleton_base() {}  
00241   };
00242 
00244 
00245   template<class T> class OriginMatch_base {
00246   public:
00248 
00255     virtual bool operator() ( bool& invert, Coord_frac& shift, const HKL_data<datatypes::F_phi<T> >& fphi1, const HKL_data<datatypes::F_phi<T> >& fphi2 ) const = 0;
00256     virtual ~OriginMatch_base() {}  
00257   };
00258 
00259 } 
00260 
00261 #endif