Skip to content
Snippets Groups Projects
Select Git revision
  • 26680a39d9b17522b9614d778865ac9aae51c3ee
  • master default protected
  • develop-GA
  • timeFstatmap
  • add-higher-spindown-components
  • develop-DK
  • adds-header-to-grid-search
  • v1.2
  • v1.1.2
  • v1.1.0
  • v1.0.1
11 results

git-tag.sh

Blame
  • Forked from Gregory Ashton / PyFstat
    Source project has a limited visibility.
    FFT_ArmCavity_scan.py 2.23 KiB
    from __future__ import absolute_import
    from __future__ import division
    from __future__ import print_function
    
    import copy
    from collections import namedtuple
    from collections import OrderedDict
    import pylab as pl
    import shelve
    
    import pykat
    from pykat.components import *
    from pykat.utilities.plotting.tools import printPDF
    from pykat.external.progressbar import ProgressBar, ETA, Percentage, Bar, Timer
    from pykat.utilities.plotting.tools import plot_setup
    from pykat.optics.maps import *
    from pykat.optics.gaussian_beams import HG_beam, beam_param
    from pykat.optics.fft import *
    from aligo import *
    
    def main():
    	print("""
    	----------------------------------------
    	""")
    
    
    	# loading kat file to get parameters (if needed)
    	global kat, out
    	kat = pykat.finesse.kat()
    	kat.verbose = False
    	kat.loadKatFile('aligo_Xarm.kat')
    	Lambda=kat.lambda0
    	k = 2.0*np.pi/Lambda
    
    	#filename='fround_mode_matched_no_map.npy'
    	filename='fround-2014:12:22-15:07:11.npy'
    	print(" --- loading data from file {0} ---".format(filename))
    	global f_round
    	f_round=np.load(filename)
    
    	tmpresultfile = 'myshelf1.dat'
    	# loading additional data saved by previous file
    	try:
    		tmpfile = shelve.open(tmpresultfile)
    		result=tmpfile['result']
    		tmpfile.close()
    	except: raise Exception("Could not open temprary results file {0}".format(tmpresultfile))
            
    	scan_start = 0.0
    	scan_stop  = Lambda
    	scan_points = 200
    	global scan
    	scan = np.linspace(scan_start, scan_stop, scan_points)
    
    	# number of roundtrips
    	global power
    	N  = np.shape(f_round)[2]
    	f_temp=np.zeros(np.shape(f_round[:,:,0]))
    	power=np.zeros(scan_points,dtype=np.double)
    
    	print(" --- performing cavity scan --- ")
    	# This will take some time, let's show a progress bar
    	p = ProgressBar(maxval=scan_points, widgets=["power:", Percentage(),"|", Timer(), "|", ETA(), Bar()])
    
    	global phases
    	ns=np.linspace(0.0, N-1, N)
    	for i in range(scan_points):
    		phases=np.exp(1j*2.0*k*scan[i]*ns)
    		f_temp=np.sum(f_round*phases,axis=-1)
    		power[i] = field_power(f_temp,result['shape'])
    		p.update(i)
    	p.finish()
    		
    	# plot scan 
    	ax,fig=plot_setup()
    	ax.plot(power)
    	ax.set_yscale('log')
    	pl.draw()
    	pl.show(block=0)
    	
    def field_power(field, shape):
    	return np.sum(np.abs(field)**2)*shape.xstep*shape.ystep;
    	
    if __name__ == '__main__':
        main()