//------------------------------------------------------------------ // // nuc2pt.h // // Header file for the Nucl2pt class // // April 2001 // // Kostas Orginos // //------------------------------------------------------------------ #ifndef INCLUDED_NUC2PT_H #define INCLUDED_NUC2PT_H #include #include #include #include CPS_START_NAMESPACE enum NucOp {NUC_C, NUC_G5C}; class Nuc2pt { char *cname ; char *source ; char *sink ; char mom[12] ; int srcdesc[6] ; // source descriptor int HalfFerm ; // Flag indicating Non-Relativistic sources and sinks NucOp nuc ; SourceType SnkType ; Float quark_mass ; public: CorrFunc plus_parity ; CorrFunc minus_parity ; private: ProjectType pos_par ; ProjectType neg_par ; // Warning calcNuclceon overwrites Q2 only void calc_nuc_(WilsonMatrix& Q1, WilsonMatrix& Q2, WilsonMatrix& Q3, int t) //Q1 and Q2 form the diquark. Q3 is the single quark. { switch (nuc) { case NUC_G5C: Q2.ccl(5).ccr(5); Q2.diq(Q1); // compute the diquark! break ; case NUC_C: Q2.ccl(1).ccr(-1); Q2.diq(Q1); // compute the diquark! Q3.gl(-5).gr(-5); // This is the correct operator: hep-lat/0202022 break ; default: ERR.General(cname,"calc_nuc_","Unknown Operator\n") ; } plus_parity[t] += prop_nucleon(pos_par,Q3,Q2) ; minus_parity[t] += prop_nucleon(neg_par,Q3,Q2) ; } // Warning calcNuclceon overwrites Q2 only void calc_nuc_(WilsonMatrix& Q1, WilsonMatrix& Q2, WilsonMatrix& Q3, int t, int tsrc) //Q1 and Q2 form the diquark. Q3 is the single quark. { int Nt(plus_parity.TimeSize()); switch (nuc) { case NUC_G5C: Q2.ccl(5).ccr(5); Q2.diq(Q1); // compute the diquark! break ; case NUC_C: Q2.ccl(1).ccr(-1); Q2.diq(Q1); // compute the diquark! Q3.gl(-5).gr(-5); // This is the correct operator: hep-lat/0202022 break ; default: ERR.General(cname,"calc_nuc_","Unknown Operator\n") ; } plus_parity[(t+Nt-tsrc)%Nt] += prop_nucleon(pos_par,Q3,Q2) ; minus_parity[(t+Nt-tsrc)%Nt] += prop_nucleon(neg_par,Q3,Q2) ; } // Warning calcNuclceon overwrites Q2 only void calc_nuc_(WilsonMatrix& Q1, WilsonMatrix& Q2, WilsonMatrix& Q3, WilsonMatrix& Q4, WilsonMatrix& Q5, int t, int dohalf) //Q1 and Q2 form the diquark. Q3 is the single quark. { Diquark diq; WilsonVector S; WilsonMatrix Dq, Uq; int Nspin(4); if(dohalf) Nspin=2; int nspn2; switch (nuc) { case NUC_G5C: Q2.ccl(5).ccr(5); Q3.ccl(5); Q4.ccr(5); for(int spin=0; spin