00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 #ifdef __GNUC__
00029 #pragma interface
00030 #endif
00031 
00032 #ifndef _chemistry_qc_basis_dercent_h
00033 #define _chemistry_qc_basis_dercent_h
00034 
00035 #include <chemistry/qc/basis/basis.h>
00036 
00039 class DerivCenters {
00040   private:
00041     int center_[4];
00042     int atom_[4];
00043     int ncenter_;
00044     int omitted_center_;
00045     int omitted_atom_;
00046   public:
00049     DerivCenters();
00051     void clear();
00053     void add_center(int center, const Ref<GaussianBasisSet> &, int shell);
00055     void add_omitted(int center, const Ref<GaussianBasisSet> &, int shell);
00057     void add_center(int center, int atom);
00059     void add_omitted(int center, int atom);
00060 
00062     int n() const { return ncenter_; }
00064     int center(int i) const { return center_[i]; }
00066     int atom(int i) const { return atom_[i]; }
00068     int omitted_center() const { return omitted_center_; }
00070     int has_omitted_center() const { return omitted_center_ >= 0; }
00072     int omitted_atom() const { return omitted_atom_; }
00073 };
00074 
00075 #endif
00076 
00077 
00078 
00079 
00080