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,
45 if ( Ns != 4 || Nc != 3 ||
Nd != 4 )
69 multi1d<int> gamma_list(2*
Nd);
80 multi1d<std::string> quark_name(2);
85 multi1d<std::string> formfac_name(2);
86 formfac_name[0] =
"rho->gamma+pi";
87 formfac_name[0] =
"pi+gamma->rho";
90 multi1d<std::string> proj_name(1);
91 proj_name[0] =
"none";
95 LatticePropagator anti_u_prop = adj(Gamma(
G5)*back_u_prop*Gamma(
G5));
96 LatticePropagator anti_d_prop = adj(Gamma(
G5)*back_d_prop*Gamma(
G5));
101 form.
quark.resize(quark_name.size());
102 for (
int ud=0; ud < form.
quark.size(); ++ud)
104 form.
quark[ud].formfac.resize(formfac_name.size());
105 for(
int dp = 0; dp < form.
quark[ud].formfac.size(); ++dp)
107 form.
quark[ud].formfac[dp].lorentz.resize(
Nd);
108 for(
int lorz = 0; lorz < form.
quark[ud].formfac[dp].lorentz.size(); ++lorz)
110 form.
quark[ud].formfac[dp].lorentz[lorz].projector.resize(proj_name.size());
111 for (
int proj = 0; proj < form.
quark[ud].formfac[dp].lorentz[lorz].projector.size(); ++proj)
113 form.
quark[ud].formfac[dp].lorentz[lorz].projector[proj].insertion.resize(gamma_list.size());
123 for(
int gamma_ctr = 0; gamma_ctr < gamma_list.size(); ++gamma_ctr)
125 int gamma_value = gamma_list[gamma_ctr];
126 int mu = gamma_ctr %
Nd;
127 bool compute_nonlocal = (gamma_ctr <
Nd) ?
true :
false;
130 for(
int ud = 0; ud < form.
quark.size(); ++ud)
136 LatticePropagator local_insert_prop, nonlocal_insert_prop;
144 local_insert_prop = anti_u_prop*Gamma(gamma_value)*forw_u_prop;
146 if (compute_nonlocal)
158 local_insert_prop = anti_d_prop*Gamma(gamma_value)*forw_d_prop;
160 if (compute_nonlocal)
174 for(
int dp = 0; dp < quark.
formfac.size(); ++dp)
180 LatticeComplex local_contract, nonlocal_contract;
184 for(
int lorz = 0; lorz < formfac.
lorentz.size(); ++lorz)
190 int gamma_value1, gamma_value2;
195 gamma_value2 = 1 << sigma;
199 gamma_value1 = 1 << sigma;
215 trace(Gamma(gamma_value1)*local_insert_prop*Gamma(gamma_value2)*
216 Gamma(
G5)*adj(d_x2)*Gamma(
G5));
218 if (compute_nonlocal)
222 trace(Gamma(gamma_value1)*nonlocal_insert_prop*Gamma(gamma_value2)*
223 Gamma(
G5)*adj(d_x2)*Gamma(
G5));
233 trace(Gamma(gamma_value1)*u_x2*Gamma(gamma_value2)*
234 Gamma(
G5)*adj(local_insert_prop)*Gamma(
G5));
236 if (compute_nonlocal)
240 trace(Gamma(gamma_value1)*u_x2*Gamma(gamma_value2)*
241 Gamma(
G5)*adj(nonlocal_insert_prop)*Gamma(
G5));
252 for (
int proj = 0; proj < lorentz.
projector.size(); ++proj)
265 LatticeComplex corr_local_fn = local_contract;
268 LatticeComplex corr_nonlocal_fn = nonlocal_contract;
270 multi1d<WallFormFac_momenta_t>& momenta = insertion.
momenta;
273 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.
void wallRhoPiFormFac(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)
Wall-sink rho^+ <-> gamma+pi^+ form-factors.
LatticePropagator nonlocalCurrentProp(const multi1d< LatticeColorMatrix > &u, int mu, const LatticePropagator &forw_prop, const LatticePropagator &anti_prop)
Compute nonlocal current propagator.
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 rho^+ -> gamma+pi^+ form-factors.