6 #include "qdp_config.h"
32 template<
class T1,
class T2,
class T3>
33 LatticeSpinMatrix deltaPContract123(
const T1& q1,
41 traceColor(q3 * traceSpin(quarkContract13((q1*Gamma(10))*Gamma(
n), Gamma(10)*(Gamma(
m)*q2))));
60 template<
class T1,
class T2,
class T3>
61 LatticeSpinMatrix deltaPContract132(
const T1& q1,
69 traceColor(q3 * quarkContract13((q1*Gamma(10))*Gamma(
n), Gamma(10)*(Gamma(
m)*q2)));
88 template<
class T1,
class T2,
class T3>
89 LatticeSpinMatrix deltaPContract(
const T1& u1,
95 2*deltaPContract123(
d, u1, u2,
n,
m) + 2*deltaPContract132(
d, u1, u2,
n,
m)
96 - deltaPContract132(u1, u2,
d,
n,
m) - deltaPContract132(u2, u1,
d,
n,
m);
118 template<
class T1,
class T2,
class T3>
119 LatticeSpinMatrix pDeltaContract123(
const T1& q1,
126 LatticeSpinMatrix S =
127 traceColor(q3 * traceSpin(quarkContract13((q1*Gamma(10))*Gamma(
n), Gamma(10)*(Gamma(
m)*q2))));
146 template<
class T1,
class T2,
class T3>
147 LatticeSpinMatrix pDeltaContract132(
const T1& q1,
154 LatticeSpinMatrix S =
155 traceColor(q3 * quarkContract13((q1*Gamma(10))*Gamma(
n), Gamma(10)*(Gamma(
m)*q2)));
174 template<
class T1,
class T2,
class T3>
175 LatticeSpinMatrix pDeltaContract(
const T1& u1,
180 LatticeSpinMatrix S =
181 2*pDeltaContract123(
d, u1, u2,
n,
m) + 2*pDeltaContract132(
d, u1, u2,
n,
m)
182 - pDeltaContract132(u1, u2,
d,
n,
m) - pDeltaContract132(u1,
d, u2,
n,
m);
208 const multi1d<LatticeColorMatrix>&
u,
209 const LatticePropagator& forw_u_prop,
210 const LatticePropagator& back_u_prop,
211 const LatticePropagator& forw_d_prop,
212 const LatticePropagator& back_d_prop,
213 const Propagator& u_x2,
214 const Propagator& d_x2,
215 const SftMom& phases,
221 if ( Ns != 4 || Nc != 3 ||
Nd != 4 )
224 form.subroutine =
"wallDeltaPFormFac";
227 int length = phases.numSubsets();
245 multi1d<int> gamma_list(2*
Nd);
256 multi1d<SpinMatrix> S_proj(
Nd);
257 SpinMatrix g_one = 1.0;
260 S_proj[0] = 0.5 * (g_one + (g_one * Gamma(8)));
263 S_proj[1] = timesMinusI(Gamma(1 << 1) * (Gamma(1 << 2) * S_proj[0]));
264 S_proj[2] = timesMinusI(Gamma(1 << 2) * (Gamma(1 << 0) * S_proj[0]));
265 S_proj[3] = timesMinusI(Gamma(1 << 0) * (Gamma(1 << 1) * S_proj[0]));
269 multi1d<std::string> quark_name(2);
274 multi1d<std::string> formfac_name(2);
275 formfac_name[0] =
"delta->gamma+p";
276 formfac_name[1] =
"p+gamma->delta";
279 multi1d<std::string> proj_name(
Nd);
281 proj_name[1] =
"sigma_1";
282 proj_name[2] =
"sigma_2";
283 proj_name[3] =
"sigma_3";
287 LatticePropagator anti_u_prop = adj(Gamma(
G5)*back_u_prop*Gamma(
G5));
288 LatticePropagator anti_d_prop = adj(Gamma(
G5)*back_d_prop*Gamma(
G5));
294 form.quark.resize(quark_name.size());
295 for (
int ud=0; ud < form.quark.size(); ++ud)
297 form.quark[ud].formfac.resize(formfac_name.size());
298 for(
int dp = 0; dp < form.quark[ud].formfac.size(); ++dp)
300 form.quark[ud].formfac[dp].lorentz.resize(
Nd);
301 for(
int lorz = 0; lorz < form.quark[ud].formfac[dp].lorentz.size(); ++lorz)
303 form.quark[ud].formfac[dp].lorentz[lorz].projector.resize(proj_name.size());
304 for (
int proj = 0; proj < form.quark[ud].formfac[dp].lorentz[lorz].projector.size(); ++proj)
306 form.quark[ud].formfac[dp].lorentz[lorz].projector[proj].insertion.resize(gamma_list.size());
316 for(
int gamma_ctr = 0; gamma_ctr < gamma_list.size(); ++gamma_ctr)
318 int gamma_value = gamma_list[gamma_ctr];
319 int mu = gamma_ctr %
Nd;
320 bool compute_nonlocal = (gamma_ctr <
Nd) ?
true :
false;
323 for(
int ud = 0; ud < form.quark.size(); ++ud)
325 WallFormFac_quark_t& quark = form.quark[ud];
326 quark.quark_ctr = ud;
327 quark.quark_name = quark_name[ud];
329 LatticePropagator local_insert_prop, nonlocal_insert_prop;
338 local_insert_prop = anti_u_prop*Gamma(gamma_value)*forw_u_prop;
340 if (compute_nonlocal)
352 local_insert_prop = anti_d_prop*Gamma(gamma_value)*forw_d_prop;
354 if (compute_nonlocal)
368 for(
int dp = 0; dp < quark.formfac.size(); ++dp)
370 WallFormFac_formfac_t& formfac = quark.formfac[dp];
371 formfac.formfac_ctr = dp;
372 formfac.formfac_name = formfac_name[dp];
374 LatticeSpinMatrix local_contract, nonlocal_contract;
378 for(
int lorz = 0; lorz < formfac.lorentz.size(); ++lorz)
380 WallFormFac_lorentz_t& lorentz = formfac.lorentz[lorz];
381 lorentz.lorentz_ctr = lorz;
384 int gamma_value1, gamma_value2;
388 gamma_value1 = 1 << sigma;
394 gamma_value2 = 1 << sigma;
397 lorentz.snk_gamma = gamma_value1;
398 lorentz.src_gamma = gamma_value2;
411 deltaPContract(local_insert_prop, u_x2, d_x2, gamma_value1, gamma_value2) +
412 deltaPContract(u_x2, local_insert_prop, d_x2, gamma_value1, gamma_value2);
417 pDeltaContract(local_insert_prop, u_x2, d_x2, gamma_value1, gamma_value2) +
418 pDeltaContract(u_x2, local_insert_prop, d_x2, gamma_value1, gamma_value2);
421 if (compute_nonlocal)
427 deltaPContract(nonlocal_insert_prop, u_x2, d_x2, gamma_value1, gamma_value2) +
428 deltaPContract(u_x2, nonlocal_insert_prop, d_x2, gamma_value1, gamma_value2);
433 pDeltaContract(nonlocal_insert_prop, u_x2, d_x2, gamma_value1, gamma_value2) +
434 pDeltaContract(u_x2, nonlocal_insert_prop, d_x2, gamma_value1, gamma_value2);
447 deltaPContract(u_x2, u_x2, local_insert_prop, gamma_value1, gamma_value2);
452 pDeltaContract(u_x2, u_x2, local_insert_prop, gamma_value1, gamma_value2);
455 if (compute_nonlocal)
461 deltaPContract(u_x2, u_x2, nonlocal_insert_prop, gamma_value1, gamma_value2);
466 pDeltaContract(u_x2, u_x2, nonlocal_insert_prop, gamma_value1, gamma_value2);
478 for (
int proj = 0; proj < lorentz.projector.size(); ++proj)
480 WallFormFac_projector_t& projector = lorentz.projector[proj];
481 projector.proj_ctr = proj;
482 projector.proj_name = proj_name[proj];
484 WallFormFac_insertion_t& insertion = projector.insertion[gamma_ctr];
486 insertion.gamma_ctr = gamma_ctr;
488 insertion.gamma_value = gamma_value;
491 LatticeComplex corr_local_fn = traceSpin(S_proj[proj] * local_contract);
494 LatticeComplex corr_nonlocal_fn = traceSpin(S_proj[proj] * nonlocal_contract);
496 multi1d<WallFormFac_momenta_t>& momenta = insertion.momenta;
499 compute_nonlocal,
t0);
Primary include file for CHROMA library code.
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 wallDeltaPFormFac(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 delta <-> gamma+delta 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 delta^+ -> gamma+proton form-factors.