33 const multi1d<LatticeColorMatrix>&
u,
34 const LatticePropagator& forw_u_prop,
35 const LatticePropagator& back_u_prop,
36 const LatticePropagator& forw_d_prop,
37 const LatticePropagator& back_d_prop,
38 const Propagator& u_x2,
39 const Propagator& d_x2,
46 if ( Ns != 4 || Nc != 3 ||
Nd != 4 )
70 multi1d<int> gamma_list(2*
Nd);
81 multi1d<std::string> quark_name(2);
86 multi1d<std::string> formfac_name(1);
87 formfac_name[0] =
"rho->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*
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)
163 nonlocal_insert_prop =
175 for(
int dp = 0; dp < quark.
formfac.size(); ++dp)
181 LatticeComplex local_contract, nonlocal_contract;
185 for(
int lorz = 0; lorz < formfac.
lorentz.size(); ++lorz)
195 tau = int(lorz /
Nd);
197 int gamma_value1 = 1 << sigma;
198 int gamma_value2 = 1 << tau;
212 trace(Gamma(gamma_value1)*local_insert_prop*Gamma(gamma_value2)*
213 Gamma(
G5)*adj(d_x2)*Gamma(
G5));
215 if (compute_nonlocal)
219 trace(Gamma(gamma_value1)*nonlocal_insert_prop*Gamma(gamma_value2)*
220 Gamma(
G5)*adj(d_x2)*Gamma(
G5));
230 trace(Gamma(gamma_value1)*u_x2*Gamma(gamma_value2)*
231 Gamma(
G5)*adj(local_insert_prop)*Gamma(
G5));
233 if (compute_nonlocal)
237 trace(Gamma(gamma_value1)*u_x2*Gamma(gamma_value2)*
238 Gamma(
G5)*adj(nonlocal_insert_prop)*Gamma(
G5));
249 for (
int proj = 0; proj < lorentz.
projector.size(); ++proj)
262 LatticeComplex corr_local_fn = local_contract;
265 LatticeComplex corr_nonlocal_fn = nonlocal_contract;
267 multi1d<WallFormFac_momenta_t>& momenta = insertion.
momenta;
270 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 wallRhoFormFac(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+rho form-factors.
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+rho form-factors.