00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef SELF_ENERGY_HPP
00021 #define SELF_ENERGY_HPP
00022
00023 #include <string>
00024 #include <utility>
00025 #include <ml_container/associative_vector.hpp>
00026
00027 #include "Species.hpp"
00028 namespace Surface { class Site; }
00029
00030 namespace Interactions {
00038 class SelfEnergy {
00040 typedef std::pair<Surface::Species, std::string> lookup_key;
00041
00043 typedef ml_container::associative_vector< lookup_key, double > container_type;
00044
00045 public:
00046 typedef container_type::key_type key_type;
00047 typedef container_type::value_type value_type;
00048 typedef container_type::mapped_type mapped_type;
00049 typedef container_type::reference reference;
00050 typedef container_type::const_reference const_reference;
00051
00055 mapped_type operator()(const Surface::Site& site) const;
00056
00060 reference operator[](const key_type& k)
00061 { return container_[k]; }
00062
00063 private:
00064 container_type container_;
00065 };
00066 }
00067
00068 #endif