CHROMA
heavy_hadrons_su3_w.cc
Go to the documentation of this file.
1 /*! \file
2  * \brief Heavy hadrons in su3 : Detmold
3  */
4 
5 #include "chromabase.h"
6 #include "util/ft/sftmom.h"
7 #include "barQll_w.h"
9 #include "heavy_hadrons_su3_w.h"
10 
11 namespace Chroma
12 {
13 
14  //! Heavy hadron spectrum for SU(3) isospin limit
15  /*!
16  * \ingroup hadron
17  *
18  * This routine is specific to Wilson fermions!
19  *
20  * \param u gauge field (Read)
21  * \param quark1 light quark propagator ( Read )
22  * \param quark2 strange quark propagator ( Read )
23  * \param src cartesian coordinates of one source "0"( Read )
24  * \param phases object holds list of momenta and Fourier phases ( Read )
25  * \param xml xml file object ( Read )
26  * \param xml_group group name for xml data ( Read )
27  *
28  */
29 
30  void static_light_su3(const multi1d<LatticeColorMatrix>& u,
31  const LatticePropagator& quark1,
32  const LatticePropagator& quark2,
33  const multi1d<int>& src,
34  const SftMom& phases,
35  XMLWriter& xml,
36  const std::string& xml_group)
37  {
38  START_CODE();
39 
40  if ( Ns != 4 ) /* Code is specific to Ns=4 */
41  return;
42 
43  int length = phases.numSubsets() ;
44  int Nt = length;
45  int num_mom = phases.numMom();
46 
47  //Spin matrices
48  SpinMatrix g_one = 1.0;
49  SpinMatrix Cg5 = g_one * Gamma(5);
50  SpinMatrix Cg3 = - g_one * Gamma(14);
51  SpinMatrix Cgminus = g_one * Gamma(11) + timesI(g_one * Gamma(8));
52  SpinMatrix Cgplus = g_one * Gamma(11) + timesMinusI(g_one * Gamma(8));
53  SpinMatrix G5 = g_one * Gamma(15);
54  SpinMatrix OnePlusSigma3 = g_one + timesMinusI(g_one*Gamma(3));
55  SpinMatrix OneMinusSigma3 = g_one + timesI(g_one*Gamma(3));
56  SpinMatrix Gup = g_one * Gamma(15) + timesMinusI((g_one*Gamma(3))*Gamma(15));
57  SpinMatrix Gdown = g_one * Gamma(15) + timesI((g_one*Gamma(3))*Gamma(15));
58  SpinMatrix PosEnergyProj = 0.5*((g_one + Gamma(8) * g_one));
59  SpinMatrix NegEnergyProj = 0.5*((g_one - Gamma(8) * g_one));
60  SpinMatrix OnePlusSigma3PEP = OnePlusSigma3 * PosEnergyProj;
61  SpinMatrix OneMinusSigma3PEP = OneMinusSigma3 * PosEnergyProj;
62  SpinMatrix G5PEP = G5 * PosEnergyProj;
63 
64 
65  // Make heavy quark propagators
66  LatticeColorMatrix Qprop1;
67  HeavyQuarkProp(Qprop1,u,src,length);
68 
69  //peek propagators: reduce lattice problem to two site problem
70  multi1d<DPropagator> U1,D1,S1;
71  multi1d<ColorMatrix> Q1, antiQ1;
72  Q1.resize(length);
73  antiQ1.resize(length);
74  U1.resize(length);
75  S1.resize(length);
76  U1=0; S1=0;
77  multi1d<int> currsrc=src;
78  for (int t=0; t<length; t++)
79  {
80  currsrc[Nd-1]=t;
81  Q1[t] = peekSite(Qprop1,currsrc); // HQ prop from src1 == "0"
82  antiQ1[t] = adj(Q1[t]); // antiHQ prop from src1 == "0"
83 
84  U1[t] = peekSite(quark1,currsrc); // light propagator
85  S1[t] = peekSite(quark2,currsrc); // strange propagator
86 
87  }
88 
89  D1=U1;
90 
91 
92  // Pseudoscalar/std::vector meson blocks (these are degenerate)
93 
94  QDPIO::cout<<"Making B^+ meson blocks\n";
95  HeavyMesonBlock H_U1_G5_0(Nt,U1,G5,antiQ1,NegEnergyProj);
96 
97  // B meson
98  QDPIO::cout<<" Contracting B meson \n";
99  multi1d<DComplex> bmes;
100  bmes.resize(length);
101  bmes = bcontract(H_U1_G5_0,G5);
102 
103  QDPIO::cout<<"Making B_s meson blocks\n";
104  HeavyMesonBlock H_S1_G5_0(Nt,S1,G5,antiQ1,NegEnergyProj);
105 
106  // B_s meson
107  QDPIO::cout<<" Contracting B_s meson \n";
108  multi1d<DComplex> bsmes;
109  bsmes.resize(length);
110  bsmes = bcontract(H_S1_G5_0,G5);
111 
112 
113  // BARYON BLOCKS
114 
115  // Add epsilon tensors onto ends of HQ propagators
116  multiNd<DComplex> HQB0;
117  multiNd<DComplex> antiHQB0;
118  multi1d<int> HQBarray;
119  HQBarray.resize(4);
120  HQBarray= Nc; HQBarray[0]=length;
121  HQB0.resize(HQBarray);
122  HQB0 = HBQfunc(Q1);
123  antiHQB0.resize(HQBarray);
124  antiHQB0 = HBQfunc(antiQ1);
125 
126  QDPIO::cout<<"Making lambdaB blocks\n";
127  // Lambda_b
128  // Note we will use spin to differentiate the Lambda_b from the \Sigma_B^0
129  // and simply take Bud to be the flavour structure
130  QllBlock B_U1_D1_0_Cg5(Nt,U1,D1,Cg5,HQB0);
131 
132  // Lambda_b 2 pt
133  QDPIO::cout<<" Contracting Lambda_b \n";
134  multi1d<DComplex> lambdab;
135  lambdab.resize(length);
136  lambdab = lambdabcontract(B_U1_D1_0_Cg5, Cg5);
137 
138  QDPIO::cout<<"Making xiB0 blocks\n";
139  // Lambda_b
140  // Note we will use spin to differentiate the Lambda_b from the \Sigma_B^0
141  // and simply take Bud to be the flavour structure
142  QllBlock B_U1_S1_0_Cg5(Nt,U1,S1,Cg5,HQB0);
143 
144  // Xi_b^0 2 pt
145  QDPIO::cout<<" Contracting xi_b^0 \n";
146  multi1d<DComplex> xibzero;
147  xibzero.resize(length);
148  xibzero = lambdabcontract(B_U1_S1_0_Cg5, Cg5);
149 
150  QDPIO::cout<<"Making sigmaB^+ blocks\n";
151  QllBlock B_U1_U1_0_Cg3(Nt,U1,U1,Cg3,HQB0);
152  QllBlock B_U1_U1_0_Cgplus(Nt,U1,U1,Cgplus,HQB0);
153  QllBlock B_U1_U1_0_Cgminus(Nt,U1,U1,Cgminus,HQB0);
154 
155  // Sigma_b^+ and (=) \Sigma_b^- baryon 2pt
156  QDPIO::cout<<" Contracting Sigma_b^+ \n";
157  multi1d<DComplex> sigmabplusJ1m1;
158  multi1d<DComplex> sigmabplusJ1m0;
159  multi1d<DComplex> sigmabplusJ1mneg1;
160  sigmabplusJ1m1.resize(length);
161  sigmabplusJ1m0.resize(length);
162  sigmabplusJ1mneg1.resize(length);
163 
164  sigmabplusJ1m1 = sigmabpluscontract(B_U1_U1_0_Cgplus, Cgplus);
165  sigmabplusJ1m0 = sigmabpluscontract(B_U1_U1_0_Cg3, Cg3);
166  sigmabplusJ1mneg1 = sigmabpluscontract(B_U1_U1_0_Cgminus, Cgminus);
167 
168  QDPIO::cout<<"Making xiB^prime0 blocks\n";
169  QllBlock B_U1_S1_0_Cg3(Nt,U1,S1,Cg3,HQB0);
170  QllBlock B_U1_S1_0_Cgplus(Nt,U1,S1,Cgplus,HQB0);
171  QllBlock B_U1_S1_0_Cgminus(Nt,U1,S1,Cgminus,HQB0);
172 
173  // xiB^prime0 2pt
174  QDPIO::cout<<" Contracting xiB^prime0 \n";
175  multi1d<DComplex> xibprime0J1m1;
176  multi1d<DComplex> xibprime0J1m0;
177  multi1d<DComplex> xibprime0J1mneg1;
178  xibprime0J1m1.resize(length);
179  xibprime0J1m0.resize(length);
180  xibprime0J1mneg1.resize(length);
181 
182  xibprime0J1m1 = sigmabpluscontract(B_U1_S1_0_Cgplus, Cgplus);
183  xibprime0J1m0 = sigmabpluscontract(B_U1_S1_0_Cg3, Cg3);
184  xibprime0J1mneg1 = sigmabpluscontract(B_U1_S1_0_Cgminus, Cgminus);
185 
186  QDPIO::cout<<"Making omegaB^- blocks\n";
187  QllBlock B_S1_S1_0_Cg3(Nt,S1,S1,Cg3,HQB0);
188  QllBlock B_S1_S1_0_Cgplus(Nt,S1,S1,Cgplus,HQB0);
189  QllBlock B_S1_S1_0_Cgminus(Nt,S1,S1,Cgminus,HQB0);
190 
191  // omegaB^- 2pt
192  QDPIO::cout<<" Contracting omegaB^- \n";
193  multi1d<DComplex> omegabminusJ1m1;
194  multi1d<DComplex> omegabminusJ1m0;
195  multi1d<DComplex> omegabminusJ1mneg1;
196  omegabminusJ1m1.resize(length);
197  omegabminusJ1m0.resize(length);
198  omegabminusJ1mneg1.resize(length);
199 
200  omegabminusJ1m1 = sigmabpluscontract(B_S1_S1_0_Cgplus, Cgplus);
201  omegabminusJ1m0 = sigmabpluscontract(B_S1_S1_0_Cg3, Cg3);
202  omegabminusJ1mneg1 = sigmabpluscontract(B_S1_S1_0_Cgminus, Cgminus);
203 
204 
205 
206  push(xml, xml_group);
207  // Hadrons
208  write(xml, "Bu",bmes);
209  write(xml, "Bs",bsmes);
210  write(xml,"lambdab", lambdab);
211  write(xml,"xibzero", xibzero);
212  write(xml,"sigmabplusJ1m1", sigmabplusJ1m1);
213  write(xml,"sigmabplusJ1m0", sigmabplusJ1m0);
214  write(xml,"sigmabplusJ1mneg1", sigmabplusJ1mneg1);
215  write(xml,"xibprime0J1m1", xibprime0J1m1);
216  write(xml,"xibprime0J1m0", xibprime0J1m0);
217  write(xml,"xibprime0J1mneg1", xibprime0J1mneg1);
218  write(xml,"omegabminusJ1m1", omegabminusJ1m1);
219  write(xml,"omegabminusJ1m0", omegabminusJ1m0);
220  write(xml,"omegabminusJ1mneg1", omegabminusJ1mneg1);
221  pop(xml);
222 
223  END_CODE();
224  }
225 
226 
227 
228 }
Heavy Baryon (Qll) 2-pt function : Orginos and Savage.
Primary include file for CHROMA library code.
Fourier transform phase factor support.
Definition: sftmom.h:35
int numSubsets() const
Number of subsets - length in decay direction.
Definition: sftmom.h:63
int numMom() const
Number of momenta.
Definition: sftmom.h:60
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams &param)
Writer parameters.
void static_light_su3(const multi1d< LatticeColorMatrix > &u, const LatticePropagator &quark1, const LatticePropagator &quark2, const multi1d< int > &src, const SftMom &phases, XMLWriter &xml, const std::string &xml_group)
Heavy hadron spectrum for SU(3) isospin limit.
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
Potential between 2 heavy hadrons : Detmold.
Potential between 2 heavy hadrons : Detmold Correlators checked independentely by Savage.
int t
Definition: meslate.cc:37
Nd
Definition: meslate.cc:74
SpinMatrix Cg5()
C g_5 = C gamma_5 = Gamma(5)
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
int G5
Definition: pbg5p_w.cc:57
static multi1d< LatticeColorMatrix > u
multi1d< DComplex > bcontract(const HeavyMesonBlock &H1, const SpinMatrix &S1)
push(xml_out,"Condensates")
multiNd< DComplex > HBQfunc(const multi1d< ColorMatrix > &HQ)
multi1d< DComplex > sigmabpluscontract(const QllBlock &BzU1zU1z0zCGi, const SpinMatrix &S1)
pop(xml_out)
START_CODE()
multi1d< DComplex > lambdabcontract(const QllBlock &BzU1zD1z0zCG5, const SpinMatrix &S1)
::std::string string
Definition: gtest.h:1979
Fourier transform phase factor support.