32 const multi1d<LatticeColorMatrix>&
u,
33 const LatticePropagator& forw_u_prop,
34 const LatticePropagator& back_u_prop,
35 const LatticePropagator& forw_d_prop,
36 const LatticePropagator& back_d_prop,
37 const Propagator& u_x2,
38 const Propagator& d_x2,
50 const int G5 = Ns*Ns-1;
66 multi1d<int> gamma_list(2*
Nd);
77 multi1d<std::string> quark_name(2);
82 multi1d<std::string> formfac_name(1);
83 formfac_name[0] =
"pi->gamma+pi";
86 multi1d<std::string> proj_name(1);
87 proj_name[0] =
"none";
90 LatticePropagator anti_u_prop = adj(Gamma(
G5)*back_u_prop*Gamma(
G5));
91 LatticePropagator anti_d_prop = adj(Gamma(
G5)*back_d_prop*Gamma(
G5));
95 form.
quark.resize(quark_name.size());
96 for (
int ud=0; ud < form.
quark.size(); ++ud)
98 form.
quark[ud].formfac.resize(formfac_name.size());
99 for(
int dp = 0; dp < form.
quark[ud].formfac.size(); ++dp)
101 form.
quark[ud].formfac[dp].lorentz.resize(1);
102 for(
int lorz = 0; lorz < form.
quark[ud].formfac[dp].lorentz.size(); ++lorz)
104 form.
quark[ud].formfac[dp].lorentz[lorz].projector.resize(proj_name.size());
105 for (
int proj = 0; proj < form.
quark[ud].formfac[dp].lorentz[lorz].projector.size(); ++proj)
107 form.
quark[ud].formfac[dp].lorentz[lorz].projector[proj].insertion.resize(gamma_list.size());
118 for(
int gamma_ctr = 0; gamma_ctr < gamma_list.size(); ++gamma_ctr)
120 int gamma_value = gamma_list[gamma_ctr];
121 int mu = gamma_ctr %
Nd;
122 bool compute_nonlocal = (gamma_ctr <
Nd) ?
true :
false;
125 for(
int ud = 0; ud < form.
quark.size(); ++ud)
131 LatticePropagator local_insert_prop, nonlocal_insert_prop;
139 local_insert_prop = anti_u_prop*Gamma(gamma_value)*forw_u_prop;
141 if (compute_nonlocal)
153 local_insert_prop = anti_d_prop*Gamma(gamma_value)*forw_d_prop;
155 if (compute_nonlocal)
169 for(
int dp = 0; dp < quark.
formfac.size(); ++dp)
175 LatticeComplex local_contract, nonlocal_contract;
179 for(
int lorz = 0; lorz < formfac.
lorentz.size(); ++lorz)
184 int gamma_value1 =
G5;
185 int gamma_value2 =
G5;
199 trace(Gamma(gamma_value1)*local_insert_prop*Gamma(gamma_value2)*
200 Gamma(
G5)*adj(d_x2)*Gamma(
G5));
202 if (compute_nonlocal)
206 trace(Gamma(gamma_value1)*nonlocal_insert_prop*Gamma(gamma_value2)*
207 Gamma(
G5)*adj(d_x2)*Gamma(
G5));
217 trace(Gamma(gamma_value1)*u_x2*Gamma(gamma_value2)*
218 Gamma(
G5)*adj(local_insert_prop)*Gamma(
G5));
220 if (compute_nonlocal)
224 trace(Gamma(gamma_value1)*u_x2*Gamma(gamma_value2)*
225 Gamma(
G5)*adj(nonlocal_insert_prop)*Gamma(
G5));
236 for (
int proj = 0; proj < lorentz.
projector.size(); ++proj)
249 LatticeComplex corr_local_fn = local_contract;
252 LatticeComplex corr_nonlocal_fn = nonlocal_contract;
254 multi1d<WallFormFac_momenta_t>& momenta = insertion.
momenta;
257 compute_nonlocal,
t0);
Primary include file for CHROMA library code.
Fourier transform phase factor support.
int numSubsets() const
Number of subsets - length in decay direction.
void wallFormFacSft(multi1d< WallFormFac_momenta_t > &momenta, const LatticeComplex &corr_local_fn, const LatticeComplex &corr_nonlocal_fn, const SftMom &phases, bool compute_nonlocal, int t0)
Do slow SFT over hadron correlator data.
LatticePropagator nonlocalCurrentProp(const multi1d< LatticeColorMatrix > &u, int mu, const LatticePropagator &forw_prop, const LatticePropagator &anti_prop)
Compute nonlocal current propagator.
void wallPionFormFac(WallFormFac_formfacs_t &form, const multi1d< LatticeColorMatrix > &u, const LatticePropagator &forw_u_prop, const LatticePropagator &back_u_prop, const LatticePropagator &forw_d_prop, const LatticePropagator &back_d_prop, const Propagator &u_x2, const Propagator &d_x2, const SftMom &phases, int t0, bool wall_source)
Compute contractions for current insertion 3-point functions.
Asqtad Staggered-Dirac operator.
QDP_error_exit("too many BiCG iterations", n_count, rsd_sq, cp, c, re_rvr, im_rvr, re_a, im_a, re_b, im_b)
static multi1d< LatticeColorMatrix > u
Wall-sink pion form-factors.