00001 #include<config.h> 00002 CPS_START_NAMESPACE 00003 //------------------------------------------------------------------ 00004 // 00005 // alg_s_spect.h 00006 // 00007 // Header file for all alg classes relevant to staggered fermion 00008 // spectroscopy. The type of glue or fermion is given as 00009 // an argument of type Lattice& to the constructor. If the 00010 // fermion type is not F_CLASS_STAG the constructors exit with 00011 // a general error. 00012 // 00013 //------------------------------------------------------------------ 00014 00015 00016 #ifndef INCLUDED_ALG_S_SPECT_H 00017 #define INCLUDED_ALG_S_SPECT_H 00018 00019 CPS_END_NAMESPACE 00020 #include <util/lattice.h> 00021 #include <util/smalloc.h> 00022 #include <util/pmalloc.h> 00023 #include <alg/alg_base.h> 00024 #include <alg/quark_prop_s.h> 00025 #include <alg/common_arg.h> 00026 #include <alg/s_spect_arg.h> 00027 CPS_START_NAMESPACE 00028 00029 // Forward declaration 00030 class Aots; 00031 00032 //------------------------------------------------------------------ 00033 // 00034 // AlgStagQuark is derived from Alg and is relevant to 00035 // the staggered quark propagator. 00036 // The type of fermion is determined by the argument to the 00037 // constructor. If the fermion type is not F_CLASS_STAG the 00038 // constructor will exit with a general error. 00039 // 00040 //------------------------------------------------------------------ 00041 class AlgStagQuark : public Alg 00042 { 00043 private: 00044 char *cname; 00045 00046 StagQuarkArg *alg_stag_quark_arg; 00047 // The argument structure for 00048 // the quark propagator 00049 00050 static QuarkPropSMng sqpm; 00051 // The quark propagator manager is initilaized 00052 // before entering the main function, and responsible for 00053 // registering and destroying quark propagators 00054 00055 public: 00056 AlgStagQuark(Lattice & latt, CommonArg *c_arg, 00057 StagQuarkArg *arg, Aots &aots); 00058 00059 virtual ~AlgStagQuark(); 00060 00061 void run(void); 00062 00063 void free(void); 00064 }; 00065 00066 00067 //------------------------------------------------------------------ 00068 // 00069 // AlgStagMeson is derived from Alg and is relevant to 00070 // the staggered meson propagator. 00071 // The type of fermion is determined by the argument to the 00072 // constructor. If the fermion type is not F_CLASS_STAG the 00073 // constructor will exit with a general error. 00074 // 00075 //------------------------------------------------------------------ 00076 class AlgStagMeson : public Alg 00077 { 00078 private: 00079 char *cname; 00080 00081 StagMesonArg *alg_stag_meson_arg; 00082 // The argument structure for 00083 // the meson propagator 00084 00085 Aots & aots; 00086 // Control info to Average Over Time Slices 00087 00088 public: 00089 AlgStagMeson(Lattice & latt, CommonArg *c_arg, 00090 StagMesonArg *arg, Aots& a); 00091 00092 virtual ~AlgStagMeson(); 00093 00094 void run(void); 00095 00096 }; 00097 00098 //------------------------------------------------------------------ 00099 // added by manke: 05/04/2001 00100 // AlgStagMomMeson is derived from Alg and is relevant to 00101 // the staggered meson propagator. 00102 // The type of fermion is determined by the argument to the 00103 // constructor. If the fermion type is not F_CLASS_STAG the 00104 // constructor will exit with a general error. 00105 // 00106 //------------------------------------------------------------------ 00107 class AlgStagMomMeson : public Alg 00108 { 00109 private: 00110 char *cname; 00111 00112 StagMomMesonArg *alg_stag_mom_meson_arg; 00113 // The argument structure for 00114 // the meson propagator 00115 00116 Aots & aots; 00117 // Control info to Average Over Time Slices 00118 00119 public: 00120 AlgStagMomMeson(Lattice & latt, CommonArg *c_arg, 00121 StagMomMesonArg *arg, Aots& a); 00122 00123 virtual ~AlgStagMomMeson(); 00124 00125 void run(void); 00126 00127 }; 00128 00129 00130 //------------------------------------------------------------------ 00131 // 00132 // AlgStagNucleon is derived from Alg and is relevant to 00133 // the staggered nucleon propagator. 00134 // The type of fermion is determined by the argument to the 00135 // constructor. If the fermion type is not F_CLASS_STAG the 00136 // constructor will exit with a general error. 00137 // 00138 //------------------------------------------------------------------ 00139 class AlgStagNucleon : public Alg 00140 { 00141 private: 00142 char *cname; 00143 00144 StagNucleonArg *alg_stag_nucleon_arg; 00145 // The argument structure for 00146 // the nucleon propagator 00147 00148 Aots & aots; 00149 // Control info to Average Over Time Slices 00150 00151 public: 00152 AlgStagNucleon(Lattice & latt, CommonArg *c_arg, 00153 StagNucleonArg *arg, Aots& a); 00154 00155 virtual ~AlgStagNucleon(); 00156 00157 void run(void); 00158 00159 }; 00160 00161 00162 00163 //------------------------------------------------------------------ 00164 // 00165 // AlgStagNonLocal is derived from Alg and is relevant to 00166 // the staggered non-local hadron propagator. 00167 // The type of fermion is determined by the argument to the 00168 // constructor. If the fermion type is not F_CLASS_STAG the 00169 // constructor will exit with a general error. 00170 // 00171 //------------------------------------------------------------------ 00172 class AlgStagNonLocal : public Alg 00173 { 00174 private: 00175 char *cname; 00176 00177 StagNonLocalArg *alg_stag_non_local_arg; 00178 // The argument structure for 00179 // the non-local hadron propagator 00180 00181 Aots & aots; 00182 // Control info to Average Over Time Slices 00183 00184 public: 00185 AlgStagNonLocal(Lattice & latt, CommonArg *c_arg, 00186 StagNonLocalArg *arg, Aots& a); 00187 00188 virtual ~AlgStagNonLocal(); 00189 00190 void run(void); 00191 00192 }; 00193 00194 00195 class AlgNLStagMeson : public Alg 00196 { 00197 private: 00198 char *cname; 00199 00200 NLStagMesonArg *alg_stag_non_local_arg; 00201 // The argument structure for 00202 // the non-local hadron propagator 00203 00204 Aots & aots; 00205 // Control info to Average Over Time Slices 00206 00207 public: 00208 AlgNLStagMeson(Lattice & latt, CommonArg *c_arg, 00209 NLStagMesonArg *arg, Aots& a); 00210 00211 virtual ~AlgNLStagMeson(); 00212 00213 void run(void); 00214 00215 }; 00216 00217 00218 00219 00220 #endif 00221 00222 00223 00224 00225 00226 CPS_END_NAMESPACE
1.3.9.1