barhqlq_w.cc

Go to the documentation of this file.
00001 // $Id: barhqlq_w.cc,v 3.5 2009/03/19 17:17:20 mcneile Exp $
00002 /*! \file
00003  *  \brief Heavy-light baryon 2-pt functions
00004  */
00005 
00006 
00007 #include "meas/hadron/barhqlq_w.h"
00008 #include "meas/hadron/barspinmat_w.h"
00009 
00010 namespace Chroma 
00011 {
00012 
00013   //! Baryon 2pt contractions
00014   /*! \ingroup hadron */
00015   namespace  Baryon2PtContractions
00016   {
00017     //! Sigma 2-pt
00018     /*! \ingroup hadron */
00019     LatticeComplex sigma2pt(const LatticePropagator& quark_propagator_1,
00020                             const LatticePropagator& quark_propagator_2,
00021                             const SpinMatrix& T, const SpinMatrix& sp) 
00022     {
00023 #if QDP_NC == 3
00024 
00025       LatticePropagator di_quark = quarkContract13(quark_propagator_1 * sp,
00026                                                    sp * quark_propagator_2);
00027       return LatticeComplex(trace(T * traceColor(quark_propagator_2 * traceSpin(di_quark)))
00028                             + trace(T * traceColor(quark_propagator_2 * di_quark)));
00029 #endif
00030     }
00031               
00032 
00033     //! Cascade 2-pt
00034     /*! \ingroup hadron */
00035     LatticeComplex xi2pt(const LatticePropagator& quark_propagator_1,
00036                          const LatticePropagator& quark_propagator_2,
00037                          const SpinMatrix& T, const SpinMatrix& sp) 
00038     {
00039 #if QDP_NC == 3
00040 
00041       LatticePropagator di_quark = quarkContract13(quark_propagator_1 * sp,
00042                                                    sp * quark_propagator_2);
00043       return LatticeComplex(trace(T * traceColor(quark_propagator_1 * traceSpin(di_quark)))
00044                             + trace(T * traceColor(quark_propagator_1 * di_quark)));
00045 #endif
00046     }
00047               
00048 
00049     //! Lambda 2-pt
00050     /*! \ingroup hadron */
00051     LatticeComplex lambda2pt(const LatticePropagator& quark_propagator_1,
00052                              const LatticePropagator& quark_propagator_2,
00053                              const SpinMatrix& T, const SpinMatrix& sp) 
00054     {
00055 #if QDP_NC == 3
00056 
00057       // WARNING: I'm not convinced the original SZIN version (or this version) is correct!
00058       LatticePropagator di_quark = quarkContract13(quark_propagator_2 * sp,
00059                                                    sp * quark_propagator_2);
00060 
00061       LatticeComplex b_prop  = trace(T * traceColor(quark_propagator_1 * traceSpin(di_quark)))
00062         + trace(T * traceColor(quark_propagator_1 * di_quark));
00063 
00064       di_quark = quarkContract13(quark_propagator_2 * sp,
00065                                  sp * quark_propagator_1);
00066       b_prop += trace(T * traceColor(quark_propagator_2 * di_quark));
00067 
00068       return b_prop;
00069 #endif
00070     }
00071 
00072 
00073     //! Lambda 2-pt
00074     /*! \ingroup hadron */
00075     LatticeComplex lambdaNaive2pt(const LatticePropagator& quark_propagator_1,
00076                                   const LatticePropagator& quark_propagator_2,
00077                                   const SpinMatrix& T, const SpinMatrix& sp) 
00078     {
00079 #if QDP_NC == 3
00080 
00081       LatticePropagator di_quark = quarkContract13(quark_propagator_2 * sp,
00082                                                    sp * quark_propagator_2);
00083       return LatticeComplex(trace(T * traceColor(quark_propagator_1 * traceSpin(di_quark))));
00084 #endif
00085     }
00086 
00087 
00088     //! Delta 2-pt
00089     /*! \ingroup hadron */
00090     LatticeComplex sigmast2pt(const LatticePropagator& quark_propagator_1,
00091                               const LatticePropagator& quark_propagator_2,
00092                               const SpinMatrix& T, const SpinMatrix& sp) 
00093     {
00094 #if QDP_NC == 3
00095 
00096       LatticePropagator di_quark = quarkContract13(quark_propagator_1 * sp, 
00097                                                    sp * quark_propagator_2);
00098       LatticeComplex b_prop = trace(T * traceColor(quark_propagator_2 * traceSpin(di_quark)))
00099         + trace(T * traceColor(quark_propagator_2 * di_quark));
00100       
00101       di_quark = quarkContract13(quark_propagator_2 * sp, 
00102                                  sp * quark_propagator_1);
00103       b_prop += trace(T * traceColor(quark_propagator_2 * di_quark));
00104       
00105       di_quark = quarkContract13(quark_propagator_2 * sp, 
00106                                  sp * quark_propagator_2);
00107       b_prop += trace(T * traceColor(quark_propagator_1 * di_quark));
00108       b_prop *= 2;
00109       b_prop += trace(T * traceColor(quark_propagator_1 * traceSpin(di_quark)));
00110 
00111       return b_prop;
00112 #endif
00113     }
00114 
00115     //! Delta 2-pt
00116     /*! \ingroup hadron */
00117     LatticeComplex sigmast2pt(const LatticePropagator& quark_propagator_1,
00118                               const LatticePropagator& quark_propagator_2,
00119                               const SpinMatrix& T, const SpinMatrix& spSRC,
00120                               const SpinMatrix& spSNK) 
00121     {
00122 #if QDP_NC == 3
00123 
00124       LatticePropagator di_quark = quarkContract13(quark_propagator_1 * spSRC, 
00125                                                    spSNK * quark_propagator_2);
00126       LatticeComplex b_prop = trace(T * traceColor(quark_propagator_2 * traceSpin(di_quark)))
00127         + trace(T * traceColor(quark_propagator_2 * di_quark));
00128       
00129       di_quark = quarkContract13(quark_propagator_2 * spSRC, 
00130                                  spSNK * quark_propagator_1);
00131       b_prop += trace(T * traceColor(quark_propagator_2 * di_quark));
00132       
00133       di_quark = quarkContract13(quark_propagator_2 * spSRC, 
00134                                  spSNK * quark_propagator_2);
00135       b_prop += trace(T * traceColor(quark_propagator_1 * di_quark));
00136       b_prop *= 2;
00137       b_prop += trace(T * traceColor(quark_propagator_1 * traceSpin(di_quark)));
00138       return b_prop;
00139 #endif
00140     }
00141 
00142   }  // namespace  Baryon2PtContractions
00143 
00144 
00145   //! Heavy-light baryon 2-pt functions
00146   /*!
00147    * \ingroup hadron
00148    *
00149    * This routine is specific to Wilson fermions! 
00150    *
00151    * Construct baryon propagators for the Proton and the Delta^+ with
00152    * degenerate "u" and "d" quarks, as well as the Lambda for, in
00153    * addition, a degenerate "s" quark. For these degenerate quarks, the
00154    * Lambda is degenerate with the Proton, but we keep it for compatibility
00155    * with the sister routine that treats non-degenerate quarks.
00156 
00157    * The routine optionally computes time-charge reversed baryons and adds them
00158    * in for increased statistics.
00159 
00160    * \param propagator_1   "s" quark propagator ( Read )
00161    * \param propagator_2   "u" quark propagator ( Read )
00162    * \param t0             cartesian coordinates of the source ( Read )
00163    * \param bc_spec        boundary condition for spectroscopy ( Read )
00164    * \param time_rev       add in time reversed contribution if true ( Read )
00165    * \param phases         object holds list of momenta and Fourier phases ( Read )
00166    * \param xml            xml file object ( Read )
00167    * \param xml_group      group name for xml data ( Read )
00168    *
00169    */
00170 
00171   void barhqlq(const LatticePropagator& propagator_1, 
00172                const LatticePropagator& propagator_2, 
00173                const SftMom& phases,
00174                int t0, int bc_spec, bool time_rev,
00175                XMLWriter& xml,
00176                const string& xml_group)
00177   {
00178     START_CODE();
00179 
00180     if ( Ns != 4 || Nc != 3 )           /* Code is specific to Ns=4 and Nc=3. */
00181       return;
00182 
00183     multi3d<DComplex> bardisp1;
00184     multi3d<DComplex> bardisp2;
00185 
00186     // Forward
00187     barhqlq(propagator_1, propagator_2, phases, bardisp1);
00188 
00189     // Possibly add in a time-reversed contribution
00190     bool time_revP = (bc_spec*bc_spec == 1) ? time_rev : false;
00191 
00192     if (time_revP)
00193     {
00194       /* Time-charge reverse the quark propagators */
00195       /* S_{CT} = gamma_5 gamma_4 = gamma_1 gamma_2 gamma_3 = Gamma(7) */
00196       LatticePropagator q1_tmp = - (Gamma(7) * propagator_1 * Gamma(7));
00197       LatticePropagator q2_tmp = - (Gamma(7) * propagator_2 * Gamma(7));
00198 
00199       barhqlq(q1_tmp, q2_tmp, phases, bardisp2);
00200     }
00201 
00202 
00203     int num_baryons = bardisp1.size3();
00204     int num_mom = bardisp1.size2();
00205     int length  = bardisp1.size1();
00206 
00207     // Loop over baryons
00208     XMLArrayWriter xml_bar(xml,num_baryons);
00209     push(xml_bar, xml_group);
00210 
00211     for(int baryons = 0; baryons < num_baryons; ++baryons)
00212     {
00213       push(xml_bar);     // next array element
00214       write(xml_bar, "baryon_num", baryons);
00215 
00216       // Loop over sink momenta
00217       XMLArrayWriter xml_sink_mom(xml_bar,num_mom);
00218       push(xml_sink_mom, "momenta");
00219 
00220       for(int sink_mom_num = 0; sink_mom_num < num_mom; ++sink_mom_num)
00221       {
00222         push(xml_sink_mom);
00223         write(xml_sink_mom, "sink_mom_num", sink_mom_num) ;
00224         write(xml_sink_mom, "sink_mom", phases.numToMom(sink_mom_num)) ;
00225 
00226         multi1d<Complex> barprop(length);
00227 
00228         /* forward */
00229         for(int t = 0; t < length; ++t)
00230         {
00231           int t_eff = (t - t0 + length) % length;
00232             
00233           if ( bc_spec < 0 && (t_eff+t0) >= length)
00234             barprop[t_eff] = -bardisp1[baryons][sink_mom_num][t];
00235           else
00236             barprop[t_eff] =  bardisp1[baryons][sink_mom_num][t];
00237         }
00238 
00239         if (time_revP)
00240         {
00241           /* backward */
00242           for(int t = 0; t < length; ++t)
00243           {
00244             int t_eff = (length - t + t0) % length;
00245         
00246             if ( bc_spec < 0 && (t_eff-t0) > 0)
00247             {
00248               barprop[t_eff] -= bardisp2[baryons][sink_mom_num][t];
00249               barprop[t_eff] *= 0.5;
00250             }
00251             else
00252             {
00253               barprop[t_eff] += bardisp2[baryons][sink_mom_num][t];
00254               barprop[t_eff] *= 0.5;
00255             }
00256           }
00257         }
00258 
00259         write(xml_sink_mom, "barprop", barprop);
00260         pop(xml_sink_mom);
00261       } // end for(sink_mom_num)
00262  
00263       pop(xml_sink_mom);
00264       pop(xml_bar);
00265     } // end for(gamma_value)
00266 
00267     pop(xml_bar);
00268 
00269     END_CODE();
00270   }
00271 
00272 
00273 
00274   //! Heavy-light baryon 2-pt functions
00275   /*!
00276    * \ingroup hadron
00277    *
00278    * This routine is specific to Wilson fermions! 
00279    *
00280    *###########################################################################
00281    * WARNING: No symmetrization over the spatial part of the wave functions   #
00282    *          is performed. Therefore, if this routine is called with         #
00283    *          "shell-sink" quark propagators of different widths the          #
00284    *          resulting octet baryons may have admixters of excited           #
00285    *          decouplet baryons with mixed symmetric spatial wave functions,  #
00286    *          and vice-versa!!!                                               #
00287    *###########################################################################
00288 
00289    * Construct heavy-light baryon propagators with two "u" quarks and
00290    * one separate "s" quark for the Sigma^+, the Lambda and the Sigma^{*+}.
00291    * In the Lambda we take the "u" and "d" quark as degenerate!
00292 
00293    * The routine also computes time-charge reversed baryons and adds them
00294    * in for increased statistics.
00295 
00296    * \param quark_propagator_1   "s" quark propagator ( Read )
00297    * \param quark_propagator_2   "u" quark propagator ( Read )
00298    * \param barprop              baryon propagator ( Modify )
00299    * \param phases               object holds list of momenta and Fourier phases ( Read )
00300    *
00301    *        ____
00302    *        \
00303    * b(t) =  >  < b(t_source, 0) b(t + t_source, x) >
00304    *        /                    
00305    *        ----
00306    *          x
00307 
00308    * For the Sigma^+ we take
00309 
00310    * |S_1, s_z=1/2> = (s C gamma_5 u) "u_up"
00311 
00312    * for the Lambda
00313 
00314    * |L_1, s_z=1/2> = 2*(u C gamma_5 d) "s_up" + (s C gamma_5 d) "u_up"
00315    *                  + (u C gamma_5 s) "d_up"
00316 
00317    * and for the Sigma^{*+}
00318 
00319    * |S*_1, s_z=3/2> = 2*(s C gamma_- u) "u_up" + (u C gamma_- u) "s_up".
00320 
00321    * We have put "q_up" in quotes, since this is meant in the Dirac basis,
00322    * not in the 'DeGrand-Rossi' chiral basis used in the program!
00323    * In gamma_- we ignore a factor sqrt(2).
00324 
00325    * For all baryons we compute a 'B_2' that differs from the 'B_1' above
00326    * by insertion of a gamma_4 between C and the gamma_{5,-}.
00327    * And finally, we also compute the non-relativistic baryons, 'B_3',
00328    * which up to a factor 1/2 are just the difference B_1 - B_2, as can
00329    * be seen by projecting to the "upper" components in the Dirac basis,
00330    * achieved by (1 + gamma_4)/2 q, for quark q.
00331 
00332    * The Sigma^+_k is baryon 3*(k-1), the Lambda_k is baryon 3*(k-1)+1
00333    * and the Sigma^{*+}_k is baryon 3*(k-1)+2.
00334 
00335    * We are using a chiral basis for the Dirac matrices (gamma_5 diagonal).
00336    * Therefore a spin-up quark in the Dirac basis corresponds to
00337    * 1/sqrt(2) * ( - q_1 - q_3 ) in this chiral basis. We shall neglect
00338    * the sign and the 1/sqrt(2) here.
00339    * The projection on "spin_up" is done with the projector "T". 
00340    */
00341 
00342   void barhqlq(const LatticePropagator& quark_propagator_1,
00343                const LatticePropagator& quark_propagator_2,
00344                const SftMom& phases,
00345                multi3d<DComplex>& barprop)
00346   {
00347     START_CODE();
00348 
00349     // Length of lattice in decay direction
00350     int length = phases.numSubsets() ;
00351 
00352     if ( Ns != 4 || Nc != 3 )           /* Code is specific to Ns=4 and Nc=3. */
00353       return;
00354 
00355     // Setup the return stuff
00356     const int num_baryons = 17;
00357     int num_mom = phases.numMom();
00358     barprop.resize(num_baryons,num_mom,length);
00359 
00360 
00361     // T_mixed = (1 + \Sigma_3)*(1 + gamma_4) / 2 
00362     //         = (1 + Gamma(8) - i G(3) - i G(11)) / 2
00363     SpinMatrix T_mixed = BaryonSpinMats::Tmixed();
00364 
00365     // T_unpol = (1/2)(1 + gamma_4)
00366     SpinMatrix T_unpol = BaryonSpinMats::Tunpol();
00367 
00368     // C gamma_5 = Gamma(5)
00369     SpinMatrix Cg5 = BaryonSpinMats::Cg5();
00370 
00371     // C gamma_5 gamma_4 = - Gamma(13)
00372     SpinMatrix Cg5g4 = BaryonSpinMats::Cg5g4();
00373 
00374     // C g_5 NR = (1/2)*C gamma_5 * ( 1 + g_4 )
00375     SpinMatrix Cg5NR = BaryonSpinMats::Cg5NR();
00376 
00377     LatticeComplex b_prop;
00378 
00379     // Loop over baryons
00380     for(int baryons = 0; baryons < num_baryons; ++baryons)
00381     {
00382       LatticePropagator di_quark;
00383 
00384       switch (baryons)
00385       {
00386       case 0:
00387         // Sigma^+_1 (or proton); use also for Lambda_1!
00388         // |S_1, s_z=1/2> = (s C gamma_5 u) "u_up"
00389         // C gamma_5 = Gamma(5)
00390         // Polarized:
00391         // T_mixed = T = (1 + \Sigma_3)*(1 + gamma_4) / 2 
00392         //             = (1 + Gamma(8) - i G(3) - i G(11)) / 2
00393         b_prop = Baryon2PtContractions::sigma2pt(quark_propagator_1, quark_propagator_2, 
00394                                                  T_mixed, Cg5);
00395         break;
00396 
00397       case 1:
00398         // Lambda_1
00399         // |L_1, s_z=1/2> = 2*(u C gamma_5 d) "s_up" + (s C gamma_5 d) "u_up"
00400         //                  + (u C gamma_5 s) "d_up" , see comments at top   
00401         // C gamma_5 = Gamma(5)
00402         // Polarized:
00403         // T_mixed = T = (1 + \Sigma_3)*(1 + gamma_4) / 2 
00404         //             = (1 + Gamma(8) - i G(3) - i G(11)) / 2
00405         b_prop = Baryon2PtContractions::lambda2pt(quark_propagator_1, quark_propagator_2, 
00406                                                   T_mixed, Cg5);
00407         break;
00408 
00409       case 2:
00410         // Sigma^{*+}_1
00411         // |S*_1, s_z=3/2> = 2*(s C gamma_- u) "u_up" + (u C gamma_- u) "s_up"
00412         // Polarized:
00413         // T_mixed = T = (1 + \Sigma_3)*(1 + gamma_4) / 2 
00414         //             = (1 + Gamma(8) - i G(3) - i G(11)) / 2
00415         b_prop = Baryon2PtContractions::sigmast2pt(quark_propagator_1, quark_propagator_2, 
00416                                                    T_mixed, BaryonSpinMats::Cgm());
00417         break;
00418 
00419       case 3:
00420         // Sigma^+_2; use also for Lambda_2!
00421         // |S_2, s_z=1/2> = (s C gamma_4 gamma_5 u) "u_up"
00422         // C gamma_5 gamma_4 = - Gamma(13)
00423         // Polarized:
00424         // T_mixed = T = (1 + \Sigma_3)*(1 + gamma_4) / 2 
00425         //             = (1 + Gamma(8) - i G(3) - i G(11)) / 2
00426         b_prop = Baryon2PtContractions::sigma2pt(quark_propagator_1, quark_propagator_2, 
00427                                                  T_mixed, Cg5g4);
00428         break;
00429 
00430       case 4:
00431         // Lambda_2
00432         // |L_2, s_z=1/2> = 2*(u C gamma_4 gamma_5 d) "s_up"
00433         //                  + (s C gamma_4 gamma_5 d) "u_up"
00434         //                  + (u C gamma_4 gamma_5 s) "d_up"
00435         // Polarized:
00436         // T_mixed = T = (1 + \Sigma_3)*(1 + gamma_4) / 2 
00437         //             = (1 + Gamma(8) - i G(3) - i G(11)) / 2
00438         b_prop = Baryon2PtContractions::lambda2pt(quark_propagator_1, quark_propagator_2, 
00439                                                   T_mixed, Cg5g4);
00440         break;
00441 
00442       case 5:
00443         // Sigma^{*+}_2
00444         // |S*_2, s_z=3/2> = 2*(s C gamma_4 gamma_- u) "u_up" + (u C gamma_4 gamma_- u) "s_up"
00445         // Polarized:
00446         // T_mixed = T = (1 + \Sigma_3)*(1 + gamma_4) / 2 
00447         //             = (1 + Gamma(8) - i G(3) - i G(11)) / 2
00448         b_prop = Baryon2PtContractions::sigmast2pt(quark_propagator_1, quark_propagator_2, 
00449                                                    T_mixed, BaryonSpinMats::Cg4m());
00450         break;
00451 
00452       case 6:
00453         // Sigma^+_3; use also for Lambda_3!
00454         // |S_3, s_z=1/2> = (s C (1/2)(1 + gamma_4) gamma_5 u) "u_up"
00455         // C gamma_5 gamma_4 = - Gamma(13)
00456         // Polarized:
00457         // T_mixed = T = (1 + \Sigma_3)*(1 + gamma_4) / 2 
00458         //             = (1 + Gamma(8) - i G(3) - i G(11)) / 2
00459         b_prop = Baryon2PtContractions::sigma2pt(quark_propagator_1, quark_propagator_2, 
00460                                                  T_mixed, Cg5NR);
00461         break;
00462 
00463       case 7:
00464         // Lambda_3
00465         // |L_3, s_z=1/2> = 2*(u C (1/2)(1 + gamma_4) gamma_5 d) "s_up"
00466         //                  + (s C (1/2)(1 + gamma_4) gamma_5 d) "u_up"
00467         //                  + (u C (1/2)(1 + gamma_4) gamma_5 s) "d_up"
00468         // Polarized:
00469         // T_mixed = T = (1 + \Sigma_3)*(1 + gamma_4) / 2 
00470         //             = (1 + Gamma(8) - i G(3) - i G(11)) / 2
00471         b_prop = Baryon2PtContractions::lambda2pt(quark_propagator_1, quark_propagator_2, 
00472                                                   T_mixed, Cg5NR);
00473         break;
00474 
00475       case 8:
00476         // Sigma^{*+}_3
00477         // |S*_3, s_z=3/2> = 2*(s C (1/2)(1+gamma_4) gamma_- u) "u_up" 
00478         //                   + (u C (1/2)(1+gamma_4) gamma_- u) "s_up"
00479         // Polarized:
00480         // T_mixed = T = (1 + \Sigma_3)*(1 + gamma_4) / 2 
00481         //             = (1 + Gamma(8) - i G(3) - i G(11)) / 2
00482         // Arrgh, goofy CgmNR normalization again from szin code. 
00483         b_prop = Baryon2PtContractions::sigmast2pt(quark_propagator_1, quark_propagator_2, 
00484                                                    T_mixed, BaryonSpinMats::CgmNR());
00485 
00486         // Agghh, we have a goofy factor of 4 normalization factor here. The
00487         // ancient szin way didn't care about norms, so it happily made it
00488         // 4 times too big. There is a missing 0.5 in the NR normalization
00489         // in the old szin code.
00490         // So, we compensate to keep the same normalization
00491         b_prop *= 4.0;
00492         break;
00493 
00494 
00495       case 9:
00496         // Sigma^+_4 -- but unpolarised
00497         // |S_4, s_z=1/2> = (s C gamma_5 u) "u_up", see comments at top
00498         // C gamma_5 = Gamma(5)
00499         // Unpolarized:
00500         // T_unpol = T = (1/2)(1 + gamma_4)
00501         b_prop = Baryon2PtContractions::sigma2pt(quark_propagator_1, quark_propagator_2, 
00502                                                  T_unpol, Cg5);
00503         break;
00504 
00505       case 10:
00506         // Sigma^+_5
00507         // |S_5, s_z=1/2> = (s C gamma_4 gamma_5 u) "u_up", see comments at top
00508         // C gamma_5 gamma_4 = - Gamma(13)
00509         // Unpolarized:
00510         // T_unpol = T = (1/2)(1 + gamma_4)
00511         b_prop = Baryon2PtContractions::sigma2pt(quark_propagator_1, quark_propagator_2, 
00512                                                  T_unpol, Cg5g4);
00513         break;
00514     
00515       case 11:
00516         // Sigma^+_6
00517         // |S_6, s_z=1/2> = (s C (1/2)(1 + gamma_4) gamma_5 u) "u_up", see comments at top
00518         // C gamma_5 = Gamma(5)
00519         // Unpolarized:
00520         // T_unpol = T = (1/2)(1 + gamma_4)
00521         b_prop = Baryon2PtContractions::sigma2pt(quark_propagator_1, quark_propagator_2, 
00522                                                  T_unpol, Cg5NR);
00523         break;
00524 
00525       case 12:
00526         // Lambda_4 : naive Lambda interpolating field
00527         // |L_4 > = (d C gamma_5 u) s
00528         // C gamma_5 = Gamma(5)
00529         // UnPolarized:
00530         // T_unpol = T = (1/2)(1 + gamma_4)
00531         b_prop = Baryon2PtContractions::lambdaNaive2pt(quark_propagator_1, quark_propagator_2, 
00532                                                        T_unpol, Cg5);
00533         break;
00534       
00535       case 13:
00536         // Xi_1
00537         // |X_1 > = (s C gamma_5 u) s
00538         // C gamma_5 = Gamma(5)
00539         // UnPolarized:
00540         // T_unpol = T = (1/2)(1 + gamma_4)
00541         b_prop = Baryon2PtContractions::xi2pt(quark_propagator_1, quark_propagator_2, 
00542                                               T_unpol, Cg5);
00543         break;
00544 
00545       case 14:
00546         // Lambda_5 : naive Lambda interpolating field
00547         // |L_5 > = (d C gamma_5 u) "s_up"
00548         // C gamma_5 = Gamma(5)
00549         // UnPolarized: 
00550         // T_mixed = T = (1 + \Sigma_3)*(1 + gamma_4) / 2 
00551         //             = (1 + Gamma(8) - i G(3) - i G(11)) / 2
00552         b_prop = Baryon2PtContractions::lambdaNaive2pt(quark_propagator_1, quark_propagator_2, 
00553                                                        T_unpol, Cg5);
00554         break;
00555       
00556       case 15:
00557         // Xi_2
00558         // |X_2 > = (s C gamma_5 u) "s_up"
00559         // C gamma_5 = Gamma(5)
00560         // UnPolarized:
00561         // T_mixed = T = (1 + \Sigma_3)*(1 + gamma_4) / 2 
00562         //             = (1 + Gamma(8) - i G(3) - i G(11)) / 2
00563         b_prop = Baryon2PtContractions::xi2pt(quark_propagator_1, quark_propagator_2, 
00564                                               T_mixed, Cg5);
00565         break;
00566 
00567       case 16:
00568         // Proton_negpar_3; use also for Lambda_negpar_3!
00569         // |P_7, s_z=1/2> = (d C gamma_5 (1/2)(1 - g_4) u) "u_up", see comments at top
00570         // C g_5 NR negpar = (1/2)*C gamma_5 * ( 1 - g_4 )
00571         // T = (1 + \Sigma_3)*(1 - gamma_4) / 2 
00572         //   = (1 - Gamma(8) + i G(3) - i G(11)) / 2
00573         b_prop = Baryon2PtContractions::sigma2pt(quark_propagator_1, quark_propagator_2, 
00574                                                  BaryonSpinMats::TmixedNegPar(), 
00575                                                  BaryonSpinMats::Cg5NRnegPar());
00576         break;
00577                   
00578       default:
00579         QDP_error_exit("Unknown baryon", baryons);
00580       }
00581                         
00582       // Project onto zero and if desired non-zero momentum
00583       multi2d<DComplex> hsum;
00584       hsum = phases.sft(b_prop);
00585 
00586       for(int sink_mom_num=0; sink_mom_num < num_mom; ++sink_mom_num) 
00587         for(int t = 0; t < length; ++t)
00588         {
00589           // NOTE: there is NO  1/2  multiplying hsum
00590           barprop[baryons][sink_mom_num][t] = hsum[sink_mom_num][t];
00591         }
00592 
00593     } // end loop over baryons
00594 
00595     END_CODE();
00596   }
00597 
00598 }  // end namespace Chroma
00599 
00600 

Generated on Mon Mar 15 04:28:56 2010 for CHROMA by  doxygen 1.4.7