32 const LatticePropagator& quark_propagator_3,
33 const multi1d<QQQSpinIndices_t> spin_indices,
44 barprop.
corrs.resize(spin_indices.size());
48 multi2d< multi2d<LatticeComplex> > qc_3(
unpackQuark(quark_propagator_3));
51 multi1d<DComplex> hsum;
52 LatticeComplex b_prop;
57 for(
int i=0;
i < spin_indices.size(); ++
i)
60 barprop.
corrs[
i].source_sink =
d;
71 for(rnk[4]=0; rnk[4] < Nc; ++rnk[4])
72 for(rnk[5]=0; rnk[5] < Nc; ++rnk[5])
74 b_prop += diquark.
comp[rnk] * qc_3(
d.source[2],
d.sink[2])(rnk[4],rnk[5]);
78 hsum = sumMulti(b_prop, phases.
getSet());
80 barprop.
corrs[
i].corr.resize(length);
81 for(
int t=0;
t < length; ++
t)
83 int t_eff = (
t -
t0 + length) % length;
111 const LatticePropagator& quark_propagator_3,
120 multi1d<int> ranks(7);
125 barprop.
corrs.resize(ranks);
129 multi2d< multi2d<LatticeComplex> > qc_3(
unpackQuark(quark_propagator_3));
132 multi1d<DComplex> hsum;
133 LatticeComplex b_prop;
137 for(ranks[0]=0; ranks[0] < Ns; ++ranks[0])
138 for(ranks[1]=0; ranks[1] < Ns; ++ranks[1])
139 for(ranks[2]=0; ranks[2] < Ns; ++ranks[2])
140 for(ranks[3]=0; ranks[3] < Ns; ++ranks[3])
141 for(ranks[4]=0; ranks[4] < Ns; ++ranks[4])
142 for(ranks[5]=0; ranks[5] < Ns; ++ranks[5])
154 for(rnk[4]=0; rnk[4] < Nc; ++rnk[4])
155 for(rnk[5]=0; rnk[5] < Nc; ++rnk[5])
157 b_prop += diquark.
comp[rnk] * qc_3(ranks[3],ranks[0])(rnk[4],rnk[5]);
161 hsum = sumMulti(b_prop, phases.
getSet());
163 for(ranks[6] = 0; ranks[6] < length; ++ranks[6])
165 int t_eff = (ranks[6] -
t0 + length) % length;
167 barprop.
corrs[ranks] =
168 (
bc_spec < 0 && (t_eff+
t0) >= length) ? -hsum[ranks[6]] :
Construct all components of a baryon propagator using a diquark.
Fourier transform phase factor support.
int numSubsets() const
Number of subsets - length in decay direction.
const Set & getSet() const
The set to be used in sumMulti.
Construct a diquark object.
void barcompDiquarkDense(QQQDense_t &barprop, const QQDiquarkContract_t &diquark, const LatticePropagator &quark_propagator_3, const SftMom &phases, int t0, int bc_spec)
Construct all components of a baryon propagator.
void barcompDiquarkSparse(QQQSparse_t &barprop, const QQDiquarkContract_t &diquark, const LatticePropagator &quark_propagator_3, const multi1d< QQQSpinIndices_t > spin_indices, const SftMom &phases, int t0, int bc_spec)
Construct all components of a baryon propagator.
multi2d< multi2d< LatticeComplex > > unpackQuark(const LatticePropagator &quark_propagator)
Unpack a quark.
Asqtad Staggered-Dirac operator.
multiNd< LatticeComplex > comp
multi1d< QQQElem_t > corrs
Hold source and sink spin indices for a sparse QQQ file.