src/Bloch/BlochAcq.cc
// Input	BAcq	: A Bloch acquire (this)
//		Sp	: Density matrix (operator propagated)
// Void		TTab   	: The internal prepared density operator is
//			  set to Sp and the transitions matrix TTab
//			  is reconstructed if necessary
Input  BAcq    : A Bloch acquire (this)
Sp      : Density matrix (operator propagated)
Void           TTab    : The internal prepared density operator is
set to Sp and the transitions matrix TTab
is reconstructed if necessary
Input BAcq : A Bloch acquire ( this ) Sp : Density matrix ( operator propagated ) Void TTab : The internal prepared density operator is set to Sp and the transitions matrix TTab is reconstructed if necessary
void BlochAcq::make_table(const col_vector& Sp)
  {
  if(sigmap==Sp && TTab.size())			
    return;					
  sigmap = Sp;					
  int ls = sigmap.size();			
  if(ls !=  L.rows()) ACQfatality(1);		
  col_vector delsig = sigmap; 			
  if(Minf.size()) delsig -= Minf;		
  col_vector Sm1sig = Sm1*delsig;           	
  complex *A1 = new complex[pos];		
  int k;					
  for(k=0; k<pos; k++)				
    A1[k] = A(k)*Sm1sig.get(I[k]);
  int itr, ntr=0;				
  for(k=0; k<pos; k++)				
    if(square_norm(A1[k])>DCUTOFF) ntr++;
  if(square_norm(trinf)) ntr++;			
  matrix mx(ntr,2);				
  for(k=0,itr=0; k<pos; k++)			
    if(square_norm(A1[k])>DCUTOFF)		
      {
      mx.put(B.get(k),itr,0);			
      mx.put(A1[k],itr,1);			
      itr++;					
      }
  if(square_norm(trinf))			
    {
    mx.put(complex0,itr,0);			
    mx.put(trinf,itr, 1);			
    }
  TTab = TTable1D(mx);				
  delete [] A1;					
  return;
  }
void BlochAcq :: make_table ( const col_vector & Sp ) { if ( sigmap == Sp && TTab . size ( ) ) return ; sigmap = Sp ; int ls = sigmap . size ( ) ; if ( ls != L . rows ( ) ) ACQfatality ( 1 ) ; col_vector delsig = sigmap ; if ( Minf . size ( ) ) delsig -= Minf ; col_vector Sm1sig = Sm1 * delsig ; complex * A1 = new complex [ pos ] ; int k ; for ( k = 0 ; k < pos ; k ++ ) A1 [ k ] = A ( k ) * Sm1sig . get ( I [ k ] ) ; int itr , ntr = 0 ; for ( k = 0 ; k < pos ; k ++ ) if ( square_norm ( A1 [ k ] ) > DCUTOFF ) ntr ++ ; if ( square_norm ( trinf ) ) ntr ++ ; matrix mx ( ntr , 2 ) ; for ( k = 0 , itr = 0 ; k < pos ; k ++ ) if ( square_norm ( A1 [ k ] ) > DCUTOFF ) { mx . put ( B . get ( k ) , itr , 0 ) ; mx . put ( A1 [ k ] , itr , 1 ) ; itr ++ ; } if ( square_norm ( trinf ) ) { mx . put ( complex0 , itr , 0 ) ; mx . put ( trinf , itr , 1 ) ; } TTab = TTable1D ( mx ) ; delete [ ] A1 ; return ; }
Input  BAcq    : A Bloch acquire (this)
Sp      : Density matrix (operator propagated)
Void           TTab    : The internal prepared density operator is
set to Sp and the transitions matrix TTab
is reconstructed if necessary
Input BAcq : A Bloch acquire ( this ) Sp : Density matrix ( operator propagated ) Void TTab : The internal prepared density operator is set to Sp and the transitions matrix TTab is reconstructed if necessary
// If nothing new & we know the // trans. table then just return // Reset the prepared system // Bloch dimension of sigmap // Insure sigmap proper size // Get matrix for delsig // Subtract Minf if present // Set |inv(S)* delsigma> // Intensity vector replacement // Dummy index // Generate new intensity vector // # of non-zero transitions // Find # of non-zero trans. // Add 0 transition if trinf !0 // Matrix for table // Fill table with the spectrum // Only if intensity > DCUTOFF //	w & R in column 0 //	Intensity in column 1 //	Increase transit. index // Add 0 transition if trinf !0 //	w & R in column 0 //	Intensity in column 1 // Store the new spectrum map // Destruct temp. vector herein