src/Floquet/FloqAcq.cc
/* These functions return a 1D transitions table given a prepared system
   (density operator) that will be evolved during the an acquisition.  There
   are a few other factors which will influence the table generated by these
   functions.

        ICUT    This is an intensity cutoff value.  Any transition whose
                intensity (norm) is below this value will be removed from the
                returned table.
*/
These functions return a 1D transitions table given a prepared system
(density operator) that will be evolved during the an acquisition.  There
are a few other factors which will influence the table generated by these
functions.

ICUT    This is an intensity cutoff value.  Any transition whose
intensity (norm) is below this value will be removed from the
returned table.
These functions return a 1D transitions table given a prepared system ( density operator ) that will be evolved during the an acquisition . There are a few other factors which will influence the table generated by these functions . ICUT This is an intensity cutoff value . Any transition whose intensity ( norm ) is below this value will be removed from the returned table .
TTable1D table(const floq_op& Fsig, const gen_op& D, const floq_op& H) 
  {
  double DCUTOFF = 1.e-3;		
  H.set_EBR();                          
  Fsig.Op_base(H);			
  double Om = H.omega();		
  int NP = H.phodim();			
  int NF = H.size();			
  floq_op FD(NP,H.hsdim(),Om);		
  FD.put_sdiag(D, 0);			
  FD.Op_base(H);			
  int i,j,pos;				
  std::vector<complex> Is;			
  std::vector<complex> WR;			
  complex z;				
  for(i=0, pos=0; i<NF; i++)		
    for(j=0; j<NF; j++, pos++)
      {
      z = FD.get(i,j)*Fsig.get(j,i);	
      if(square_norm(z) > DCUTOFF)	
        {				
        Is.push_back(z);		
        z = H.get(j,j)-H.get(i,i);	
        WR.push_back(z);
        }
      }
  int ntr = Is.size();			
  matrix mx(ntr, 2);			
  for(pos=0; pos<ntr; pos++)		
    {					
    mx.put(Is[pos], pos, 1);		
    mx.put(complex(0,Re(WR[pos])),pos,0);
    }
  return TTable1D(mx);
  }
TTable1D table ( const floq_op & Fsig , const gen_op & D , const floq_op & H ) { double DCUTOFF = 1.e-3 ; H . set_EBR ( ) ; Fsig . Op_base ( H ) ; double Om = H . omega ( ) ; int NP = H . phodim ( ) ; int NF = H . size ( ) ; floq_op FD ( NP , H . hsdim ( ) , Om ) ; FD . put_sdiag ( D , 0 ) ; FD . Op_base ( H ) ; int i , j , pos ; std :: vector < complex > Is ; std :: vector < complex > WR ; complex z ; for ( i = 0 , pos = 0 ; i < NF ; i ++ ) for ( j = 0 ; j < NF ; j ++ , pos ++ ) { z = FD . get ( i , j ) * Fsig . get ( j , i ) ; if ( square_norm ( z ) > DCUTOFF ) { Is . push_back ( z ) ; z = H . get ( j , j ) - H . get ( i , i ) ; WR . push_back ( z ) ; } } int ntr = Is . size ( ) ; matrix mx ( ntr , 2 ) ; for ( pos = 0 ; pos < ntr ; pos ++ ) { mx . put ( Is [ pos ] , pos , 1 ) ; mx . put ( complex ( 0 , Re ( WR [ pos ] ) ) , pos , 0 ) ; } return TTable1D ( mx ) ; }
These functions return a 1D transitions table given a prepared system
(density operator) that will be evolved during the an acquisition.
These functions return a 1D transitions table given a prepared system ( density operator ) that will be evolved during the an acquisition .
// Set the detection cutoff level // Put H into an eigenbase // Put sigma in H eigenbase // Get Fourier expansion frequency // Phonon space dimension // Floquet space dimension // Empty Floquet detection operator // Put in D, fill detection operator // Insure FD is in H eigenbase /* We need to know how many relevant transitions exist in order to build
   an nice transitions table.  To do that we'll calculate all the transition
   intensities and compare them to the detection cutoff, DCUTOFF.  Since we
   have to calculate them anyway, we'll store the intensities.  Typically
   there will be many less viable transitions than there are Floquet
   coherences (NF*NF), so it is deemed best just to dynamically store these 
   in order to save space at the expense of CPU use.                         */ // Looping indices // Array of intensities // Array of frequencies,rates // Working intensity // Loop the full Floquet space // Intensity = <i|D|j><j|sigma|i> // If this value is above the detection // cutoff, then store the intensity // then calculate and store the // frequency: <j|H|j>-<i|H|i> = Wji /* Now we will construct and fill up an array of transitions.  This is done
   in a format for generation of a TrnsTable (transitions table).            */ // Total number of viable transitions // Allocate an array for transitions // Loop through viable transitions // and put the intensity,frequency // info into the array