CHROMA
mesQl_w.cc
Go to the documentation of this file.
1 /*! \file
2  * \brief Heavy Meson (Qlbar) 2-pt function : Orginos and Savage
3  */
4 
5 #include "mesQl_w.h"
6 #include "barQll_w.h"
7 
8 namespace Chroma {
9 
10 //! Heavy-light meson 2-pt function
11 /*!
12  * \ingroup hadron
13  *
14  * This routine is specific to Wilson fermions!
15  *
16  * Construct propagators for a heavy-light pseudoscalar meson.
17  * In the heavy quark limit the D and the D* are degenerate.
18  * The heavy quark is inserted in the infinitely heavy quark limit
19  * by a Wilson-Line without spin indices.
20  * We are effectively propagating a spin-1/2 light quark
21  *
22  * \param u gauge field (Read)
23  * \param quark_propagator quark propagator ( Read )
24  * \param src_coord cartesian coordinates of the source ( Read )
25  * \param phases object holds list of momenta and Fourier phases ( Read )
26  * \param xml xml file object ( Read )
27  * \param xml_group group name for xml data ( Read )
28  * \param bc boundary condition (default = 0 --> Dirichlet)
29  *
30  */
31 
32 void Qlbar(const multi1d<LatticeColorMatrix>& u,
33  const LatticePropagator& quark_propagator,
34  const multi1d<int>& src_coord,
35  const SftMom& phases,
36  XMLWriter& xml,
37  const std::string& xml_group,
38  const int bc)
39 {
40  START_CODE();
41 
42  if ( Ns != 4 ) /* Code is specific to Ns=4 */
43  return;
44 
45  int length = phases.numSubsets() ;
46  int num_mom = phases.numMom();
47 
48  LatticeColorMatrix Qprop;
49 
50  HeavyQuarkProp(Qprop,u,src_coord,length, bc);
51 
52  multi1d<DComplex> Hq;
53  LatticeComplex Hq_prop ;
54 
55  // S_proj_unpol = (1/2)(1 + gamma_4)
56  // This is the heavy quark dirac structure, but I am using the notation
57  // that is currently used in Chroma!!!!!!!!
58 
59  SpinMatrix g_one = 1.0;
60  SpinMatrix S_proj_unpol = 0.5 * (g_one + (g_one * Gamma(8)));
61 
62  //
63 
64  Hq_prop = trace(Qprop * S_proj_unpol *adj(quark_propagator) );
65 
66 
67 
68  // Project onto zero momentum
69  multi2d<DComplex> hsumHq ;
70  hsumHq = phases.sft(Hq_prop);
71  multi2d<DComplex> HQprop(num_mom,length) ;
72 
73  for(int sink_mom_num=0; sink_mom_num < num_mom; ++sink_mom_num)
74  for(int t = 0; t < length; ++t)
75  {
76  int t_eff = (t - src_coord[Nd-1] + length) % length;
77  HQprop[sink_mom_num][t_eff] = hsumHq[sink_mom_num][t];
78  }
79 
80 
81  //XMLWriter xml_bar(xml);
82  push(xml, xml_group);
83  write(xml, "HeavyLight", HQprop[0]);
84  pop(xml);
85 
86  END_CODE();
87 }
88 
89 //! Heavy-light meson 2-pt function with backwards moving static quark
90 /*!
91  * \ingroup hadron
92  *
93  * This routine is specific to Wilson fermions!
94  *
95  * Construct propagators for a heavy-light pseudoscalar meson.
96  * In the heavy quark limit the D and the D* are degenerate.
97  * The heavy quark is inserted in the infinitely heavy quark limit
98  * by a Wilson-Line without spin indices.
99  * We are effectively propagating a spin-1/2 light quark
100  *
101  * \param u gauge field (Read)
102  * \param quark_propagator quark propagator ( Read )
103  * \param src_coord cartesian coordinates of the source ( Read )
104  * \param phases object holds list of momenta and Fourier phases ( Read )
105  * \param xml xml file object ( Read )
106  * \param xml_group group name for xml data ( Read )
107  * \param bc boundary condition (default = 0 --> Dirichlet)
108  *
109  */
110 
111 void QlbarBACK(const multi1d<LatticeColorMatrix>& u,
112  const LatticePropagator& quark_propagator,
113  const multi1d<int>& src_coord,
114  const SftMom& phases,
115  XMLWriter& xml,
116  const std::string& xml_group,
117  const int bc)
118 {
119  START_CODE();
120 
121  if ( Ns != 4 ) /* Code is specific to Ns=4 */
122  return;
123 
124  int length = phases.numSubsets() ;
125  int num_mom = phases.numMom();
126 
127  LatticeColorMatrix Qprop;
128 
129  HeavyQuarkPropBack(Qprop,u,src_coord,length,bc);
130 
131  multi1d<DComplex> Hq;
132  LatticeComplex Hq_prop ;
133 
134  // S_proj_unpol = (1/2)(1 + gamma_4)
135  // This is the heavy quark dirac structure, but I am using the notation
136  // that is currently used in Chroma!!!!!!!!
137 
138  SpinMatrix g_one = 1.0;
139  SpinMatrix S_proj_unpol = 0.5 * (g_one + (g_one * Gamma(8)));
140 
141  Hq_prop = trace(Qprop * S_proj_unpol *adj(quark_propagator) );
142 
143  // Project onto zero momentum
144  multi2d<DComplex> hsumHq ;
145  hsumHq = phases.sft(Hq_prop);
146  multi2d<DComplex> HQprop(num_mom,length) ;
147 
148  for(int sink_mom_num=0; sink_mom_num < num_mom; ++sink_mom_num)
149  for(int t = 0; t < length; ++t)
150  {
151  int t_eff = (t - src_coord[Nd-1] + length) % length;
152  HQprop[sink_mom_num][t_eff] = hsumHq[sink_mom_num][t];
153  }
154 
155  //XMLWriter xml_bar(xml);
156  push(xml, xml_group);
157  write(xml, "HeavyLight", HQprop[0]);
158  pop(xml);
159 
160  END_CODE();
161 }
162 
163 }
Heavy Baryon (Qll) 2-pt function : Orginos and Savage.
Fourier transform phase factor support.
Definition: sftmom.h:35
int numSubsets() const
Number of subsets - length in decay direction.
Definition: sftmom.h:63
multi2d< DComplex > sft(const LatticeComplex &cf) const
Do a sumMulti(cf*phases,getSet())
Definition: sftmom.cc:524
int numMom() const
Number of momenta.
Definition: sftmom.h:60
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams &param)
Writer parameters.
void QlbarBACK(const multi1d< LatticeColorMatrix > &u, const LatticePropagator &quark_propagator, const multi1d< int > &src_coord, const SftMom &phases, XMLWriter &xml, const std::string &xml_group, const int bc)
Heavy-light meson 2-pt function with backwards moving static quark.
Definition: mesQl_w.cc:111
void HeavyQuarkProp(LatticeColorMatrix &Qprop, const multi1d< LatticeColorMatrix > &u, const multi1d< int > &src_coord, int length, int bc)
Heavy Quark Propagator.
Definition: barQll_w.cc:149
void Qlbar(const multi1d< LatticeColorMatrix > &u, const LatticePropagator &quark_propagator, const multi1d< int > &src_coord, const SftMom &phases, XMLWriter &xml, const std::string &xml_group, const int bc)
Heavy-light meson 2-pt function.
Definition: mesQl_w.cc:32
void HeavyQuarkPropBack(LatticeColorMatrix &Qprop, const multi1d< LatticeColorMatrix > &u, const multi1d< int > &src_coord, int length, int bc)
Backwards Heavy Quark Propagator.
Definition: barQll_w.cc:207
multi1d< int > bc
Heavy light meson (Qlbar) 2-pt function : Orginos and Savage.
int t
Definition: meslate.cc:37
Nd
Definition: meslate.cc:74
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
static multi1d< LatticeColorMatrix > u
push(xml_out,"Condensates")
pop(xml_out)
START_CODE()
::std::string string
Definition: gtest.h:1979