for( int t = 0; t < T; t ++ )
for( int t = T1; t <= T2; t ++ )
void BkwdFrwdTr( const LatticePropagator &             B,                 const LatticePropagator &             F,                 const SftMom &                        Phases,                 const multi2d< BinaryWriter* > &      BinaryWriters,                 const int                             f,                 const multi1d< unsigned short int > & LinkDirs ){  const unsigned short int NLinks = LinkDirs.size();  unsigned short int Link;  //TimeSliceFunc SetTimeSlice( Nd - 1 );  //const Set TimeSlice( SetTimeSlice );  //const int T = SetTimeSlice.numSubsets();  const int T = Nd - 1;  const int NQ = Phases.numMom();  //#####################################################################################  // add a tag to identify the link pattern  //#####################################################################################  for( int q = 0; q < NQ; q ++ )  {    BinaryWriters[f][q]->write( NLinks );    for( Link = 0; Link < NLinks; Link ++ )    {      BinaryWriters[f][q]->write( LinkDirs[ Link ] );    }    if( f == 0 )    {      GBB_NLinkPatterns ++;    }  }  for( int i = 0; i < Ns * Ns; i ++ )  {    LatticeComplex Trace = trace( adj( B ) * Gamma( i ) * F );  // assumes any Gamma5 matrices have already been absorbed    multi2d< DComplex > Projections = Phases.sft( Trace );    for( int q = 0; q < NQ; q ++ )    {      multi1d< DComplex > Projection = Projections[ q ];      for( int t = 0; t < T; t ++ )      {        float r = toFloat( real( Projection[ t ] ) );        float i = toFloat( imag( Projection[ t ] ) );        BinaryWriters[f][q]->write( r );        BinaryWriters[f][q]->write( i );      }    }  }  return;}