for(int s(1);s<N5-1;s++) tmp[s][rb[cb]] = b5*chi[s] + c5*(chi[s+1] + chi[s-1] + GammaConst<Ns,Ns*Ns-1>()*(chi[s-1] - chi[s+1])) ;  tmp[0][rb[cb]] = b5*chi[0] + c5*(chi[1] - m_q*chi[N5-1] + GammaConst<Ns,Ns*Ns-1>()*( m_q*chi[N5-1] -chi[1])) ; tmp[N5-1][rb[cb]] = b5*chi[N5-1] + c5*(chi[N5-2]  - m_q*chi[0] + GammaConst<Ns,Ns*Ns-1>()*(chi[N5-2] + m_q*chi[0]));
switch (isign){ case PLUS: for(int s(1);s<N5-1;s++) tmp[s][rb[cb]] = b5*chi[s] + 0.5*c5*(chi[s+1] + chi[s-1] + GammaConst<Ns,Ns*Ns-1>()*(chi[s-1] - chi[s+1])) ;  tmp[0][rb[cb]] = b5*chi[0] + 0.5*c5*(chi[1] - m_q*chi[N5-1] - GammaConst<Ns,Ns*Ns-1>()*( m_q*chi[N5-1] + chi[1])) ; tmp[N5-1][rb[cb]] = b5*chi[N5-1] + 0.5*c5*(chi[N5-2]  - m_q*chi[0] + GammaConst<Ns,Ns*Ns-1>()*(chi[N5-2] + m_q*chi[0])); break ; case MINUS: for(int s(1);s<N5-1;s++) tmp[s][rb[cb]] = b5*chi[s] + 0.5*c5*(chi[s+1] + chi[s-1] - GammaConst<Ns,Ns*Ns-1>()*(chi[s-1] - chi[s+1])) ;  tmp[0][rb[cb]] = b5*chi[0] + 0.5*c5*(chi[1] - m_q*chi[N5-1] + GammaConst<Ns,Ns*Ns-1>()*( m_q*chi[N5-1] +chi[1])) ; tmp[N5-1][rb[cb]] = b5*chi[N5-1] + 0.5*c5*(chi[N5-2]  - m_q*chi[0] - GammaConst<Ns,Ns*Ns-1>()*(chi[N5-2] + m_q*chi[0])); break ; }
  void CompbineHoppingVectors(multi1d<LatticeFermion>& tmp,			      const multi1d<LatticeFermion>& chi,			      const int cb) const  {    for(int s(1);s<N5-1;s++)      tmp[s][rb[cb]] = b5*chi[s] + 	               c5*(chi[s+1] + chi[s-1] + 	                   GammaConst<Ns,Ns*Ns-1>()*(chi[s-1] - chi[s+1])) ;    //Now the boundary terms    tmp[0][rb[cb]] = b5*chi[0] +	             c5*(chi[1] - m_q*chi[N5-1] +			 GammaConst<Ns,Ns*Ns-1>()*( m_q*chi[N5-1] -chi[1])) ;    tmp[N5-1][rb[cb]] = b5*chi[N5-1] + 	                c5*(chi[N5-2]  - m_q*chi[0] + 			    GammaConst<Ns,Ns*Ns-1>()*(chi[N5-2] + m_q*chi[0]));  }