Exemplo n.º 1
0
def crossbeam_evap(s, toENDBFIELD):
	#GET SECTION CONTENTS
	evp = gen.getsection('EVAP')
	lbf  = gen.getsection('LATTICEBRAGGFIELD')
	# Add evaporation ramp to ODT, returns sequence right at the end of evaporation
	free = float(report['EVAP']['free'])
	image= float(report['EVAP']['image'])
	buffer=10.0 #Time needed to re-latch the trigger for the AOUTS
	if free < buffer + toENDBFIELD :
		print 'Need at list ' + str(buffer) + 'ms of free evap before evaporation can be triggered'
		print 'Currently ramps end at %f , and free is %f' % (toENDBFIELD,free)
		exit(1)
	s.wait(free)
	odtpow, ENDEVAP, cpowend, ipganalog = odt_evap(image)
	evap_ss = float(report['EVAP']['evapss'])
	
	# Set LCR preset value in the begining of evap 1 is lattice 0 is dimple
	lcr_preset = float(report['EVAP']['lcr_preset'])	
	lcr1  = lattice.lattice_wave('lcr1',lcr_preset, evap_ss)
	lcr2  = lattice.lattice_wave('lcr2', lcr_preset, evap_ss)
	lcr3  = lattice.lattice_wave('lcr3', lcr_preset, evap_ss)
	lcr1.extend(ENDEVAP)
	lcr2.extend(ENDEVAP)
	lcr3.extend(ENDEVAP)
	
	s.analogwfm_add(evap_ss,[odtpow,ipganalog,lcr1,lcr2,lcr3])
	#s.analogwfm_add(evap_ss,[odtpow])
	# ENDEVAP should be equal to image
	s.wait(image)
	return s, cpowend
Exemplo n.º 2
0
def crossbeam_evap(s, toENDBFIELD):
    #GET SECTION CONTENTS
    evp = gen.getsection('EVAP')
    lbf = gen.getsection('LATTICEBRAGGFIELD')
    # Add evaporation ramp to ODT, returns sequence right at the end of evaporation
    free = float(report['EVAP']['free'])
    image = float(report['EVAP']['image'])
    buffer = 10.0  #Time needed to re-latch the trigger for the AOUTS
    if free < buffer + toENDBFIELD:
        print 'Need at list ' + str(
            buffer) + 'ms of free evap before evaporation can be triggered'
        print 'Currently ramps end at %f , and free is %f' % (toENDBFIELD,
                                                              free)
        exit(1)
    s.wait(free)
    odtpow, ENDEVAP, cpowend, ipganalog = odt_evap(image)
    evap_ss = float(report['EVAP']['evapss'])

    # Set LCR preset value in the begining of evap 1 is lattice 0 is dimple
    lcr_preset = float(report['EVAP']['lcr_preset'])
    lcr1 = lattice.lattice_wave('lcr1', lcr_preset, evap_ss)
    lcr2 = lattice.lattice_wave('lcr2', lcr_preset, evap_ss)
    lcr3 = lattice.lattice_wave('lcr3', lcr_preset, evap_ss)
    lcr1.extend(ENDEVAP)
    lcr2.extend(ENDEVAP)
    lcr3.extend(ENDEVAP)

    s.analogwfm_add(evap_ss, [odtpow, ipganalog, lcr1, lcr2, lcr3])
    #s.analogwfm_add(evap_ss,[odtpow])
    # ENDEVAP should be equal to image
    s.wait(image)
    return s, cpowend
Exemplo n.º 3
0
def crossbeam_evap_field_into_lattice(s, toENDBFIELD):
    #GET SECTION CONTENTS
    evp = gen.getsection('EVAP')
    lbf = gen.getsection('LATTICEBRAGGFIELD')
    # Add evaporation ramp to ODT, returns sequence right at the end of evaporation
    free = float(report['EVAP']['free'])
    image = float(report['EVAP']['image'])
    buffer = 10.0  #Time needed to re-latch the trigger for the AOUTS
    if free < buffer + toENDBFIELD:
        print 'Need at list ' + str(
            buffer) + 'ms of free evap before evaporation can be triggered'
        print 'Currently ramps end at %f , and free is %f' % (toENDBFIELD,
                                                              free)
        exit(1)
    s.wait(free)
    bfield, odtpow, ENDEVAP, cpowend, ipganalog = odt_evap_field(image)
    evap_ss = float(report['EVAP']['evapss'])

    # Set LCR preset value in the begining of evap 1 is lattice 0 is dimple
    lcr_preset = float(report['EVAP']['lcr_preset'])
    lcr1 = lattice.lattice_wave('lcr1', lcr_preset, evap_ss)
    lcr2 = lattice.lattice_wave('lcr2', lcr_preset, evap_ss)
    lcr3 = lattice.lattice_wave('lcr3', lcr_preset, evap_ss)
    lcr1.extend(ENDEVAP)
    lcr2.extend(ENDEVAP)
    lcr3.extend(ENDEVAP)

    ir1 = lattice.lattice_wave('ir1pow', 0., evap_ss)
    ir2 = lattice.lattice_wave('ir2pow', 0., evap_ss)
    ir3 = lattice.lattice_wave('ir3pow', 0., evap_ss)

    gr1 = lattice.lattice_wave('greenpow1', 0., evap_ss)
    gr2 = lattice.lattice_wave('greenpow2', 0., evap_ss)
    gr3 = lattice.lattice_wave('greenpow3', 0., evap_ss)

    all = [ir1, ir2, ir3, gr1, gr2, gr3]
    pow = [evp.irpow, evp.irpow, evp.irpow, evp.grpow, evp.grpow, evp.grpow]

    for i, ch in enumerate(all):
        ch.appendhold(evp.latticet0)
        ch.tanhRise(pow[i], evp.latticedt, evp.tanhtau, evp.tanhshift)

    s.wait(evp.latticet0)
    s.digichg('irttl1', evp.irttl1)
    s.digichg('irttl2', evp.irttl2)
    s.digichg('irttl3', evp.irttl3)
    s.digichg('greenttl1', evp.irttl1)
    s.digichg('greenttl2', evp.irttl2)
    s.digichg('greenttl3', evp.irttl3)
    s.wait(-evp.latticet0)

    s.analogwfm_add(evap_ss, [
        odtpow, ipganalog, bfield, ir1, ir2, ir3, gr1, gr2, gr3, lcr1, lcr2,
        lcr3
    ])

    # ENDEVAP should be equal to image
    s.wait(image)
    return s, cpowend
Exemplo n.º 4
0
def crossbeam_evap_field_into_lattice(s, toENDBFIELD):
	#GET SECTION CONTENTS
	evp = gen.getsection('EVAP')
	lbf  = gen.getsection('LATTICEBRAGGFIELD')
	# Add evaporation ramp to ODT, returns sequence right at the end of evaporation
	free = float(report['EVAP']['free'])
	image= float(report['EVAP']['image'])
	buffer=10.0 #Time needed to re-latch the trigger for the AOUTS
	if free < buffer + toENDBFIELD :
		print 'Need at list ' + str(buffer) + 'ms of free evap before evaporation can be triggered'
		print 'Currently ramps end at %f , and free is %f' % (toENDBFIELD,free)
		exit(1)
	s.wait(free)
	bfield, odtpow, ENDEVAP, cpowend, ipganalog = odt_evap_field(image)
	evap_ss = float(report['EVAP']['evapss'])
	
	# Set LCR preset value in the begining of evap 1 is lattice 0 is dimple
	lcr_preset = float(report['EVAP']['lcr_preset'])	
	lcr1  = lattice.lattice_wave('lcr1',lcr_preset, evap_ss)
	lcr2  = lattice.lattice_wave('lcr2', lcr_preset, evap_ss)
	lcr3  = lattice.lattice_wave('lcr3', lcr_preset, evap_ss)
	lcr1.extend(ENDEVAP)
	lcr2.extend(ENDEVAP)
	lcr3.extend(ENDEVAP)
	
	ir1  = lattice.lattice_wave('ir1pow', 0., evap_ss)
	ir2  = lattice.lattice_wave('ir2pow', 0., evap_ss)
	ir3  = lattice.lattice_wave('ir3pow', 0., evap_ss)
	
	gr1  = lattice.lattice_wave('greenpow1', 0., evap_ss)
	gr2  = lattice.lattice_wave('greenpow2', 0., evap_ss)
	gr3  = lattice.lattice_wave('greenpow3', 0., evap_ss)
	
	all = [ir1,ir2,ir3,gr1,gr2,gr3]
	pow = [evp.irpow, evp.irpow, evp.irpow, evp.grpow, evp.grpow, evp.grpow]
	
	for i,ch in enumerate(all):
	  ch.appendhold( evp.latticet0 )
	  ch.tanhRise(pow[i], evp.latticedt, evp.tanhtau, evp.tanhshift)
	
	s.wait(evp.latticet0)
	s.digichg( 'irttl1', evp.irttl1)
	s.digichg( 'irttl2', evp.irttl2)
	s.digichg( 'irttl3', evp.irttl3)
	s.digichg( 'greenttl1', evp.irttl1)
	s.digichg( 'greenttl2', evp.irttl2)
	s.digichg( 'greenttl3', evp.irttl3)
	s.wait(-evp.latticet0)
	
	
	s.analogwfm_add(evap_ss,[odtpow,ipganalog, bfield,ir1,ir2,ir3,gr1,gr2,gr3,lcr1,lcr2,lcr3])
	
	

	# ENDEVAP should be equal to image
	s.wait(image)
	return s, cpowend
	print "...adding path " + p
	sys.path.append(p)

import time
t0=time.time()

import math
 
import seq, wfm, gen, cnc, odt, andor, highfield_uvmot, manta, lattice

#REPORT
report=gen.getreport()

    
#GET SECTION CONTENTS
lbf  = gen.getsection('LATTICEBRAGGFIELD')
evap = gen.getsection('EVAP')
zc   = gen.getsection('ZEROCROSS')
Andor= gen.getsection('ANDOR')
Manta= gen.getsection('MANTA')


#SEQUENCE
stepsize = float(report['SEQ']['stepsize'])
s=seq.sequence(stepsize)
s=gen.initial(s)
s.digichg('hfimg',1)
s.digichg('odt7595',0)


# Do CNC, UVMOT, and field ramps
Exemplo n.º 6
0
    sys.path.append(p)


import time

t0 = time.time()

import sys, math


import seq, wfm, gen, cnc, odt, andor, highfield_uvmot

report = gen.getreport()

# ---GET SECTION CONTENTS
SEQ = gen.getsection("SEQ")
EVAP = gen.getsection("EVAP")
ANDOR = gen.getsection("ANDOR")
ODT = gen.getsection("ODT")
FB = gen.getsection("FESHBACH")
ZC = gen.getsection("ZEROCROSS")
L = gen.getsection("LATTICE")

# ---SEQUENCE
s = seq.sequence(SEQ.stepsize)
s = gen.initial(s)

# Get hfimg ready
s.digichg("hfimg", 1)

# If using analoghfimg get it ready
Exemplo n.º 7
0
import shutil
import pprint
import matplotlib as mpl

mpl.use("Agg")  # This is for making the pyplot not complaining when there is no x server

import copy
import re

import matplotlib.pyplot as plt
import manta
from scipy import interpolate
from bfieldwfm import gradient_wave

# GET SECTION CONTENTS
DIMPLE = gen.getsection("DIMPLE")
DL = gen.getsection("DIMPLELATTICE")
ANDOR = gen.getsection("ANDOR")
MANTA = gen.getsection("MANTA")


class lattice_wave(wfm.wave):
    """The lattice_wave class helps construct the waveforms that 
		will be used to ramp the lattice.
		
		Several methods are added that allow doing special ramps
		"""


def interpolate_subramp(pts, yoffset):
    newpts = []
	print "...adding path " + p
	sys.path.append(p)


import time
t0=time.time()

import sys, math
 
 
import seq, wfm, gen, cnc, odt, andor, highfield_uvmot
report=gen.getreport()


#---GET SECTION CONTENTS
SEQ   = gen.getsection('SEQ')
EVAP  = gen.getsection('EVAP')
ANDOR = gen.getsection('ANDOR')
ODT   = gen.getsection('ODT')
FB    = gen.getsection('FESHBACH')
ZC    = gen.getsection('ZEROCROSS')
LI     = gen.getsection('LATTICEINT')

#---SEQUENCE
s=seq.sequence(SEQ.stepsize)
s=gen.initial(s)

#Get hfimg ready
s.digichg('hfimg',1)

#If using analoghfimg get it ready
    print "...adding path " + p
    sys.path.append(p)

import time

t0 = time.time()

import math

import seq, wfm, gen, cnc, odt, andor, highfield_uvmot, manta, lattice

# REPORT
report = gen.getreport()

# GET SECTION CONTENTS
DIMPLE = gen.getsection("DIMPLE")
EVAP = gen.getsection("EVAP")
FB = gen.getsection("FESHBACH")
ZC = gen.getsection("ZEROCROSS")
ANDOR = gen.getsection("ANDOR")
DL = gen.getsection("DIMPLELATTICE")
MANTA = gen.getsection("MANTA")


print "\n...SEQ:camera will be modified  in report"
print "\tNEW  SEQ:camera = %s\n" % (DL.camera)
# When only use one camera the reading of DL.camera will be a string instead of a list of string. As a consequence we need to check the type.
gen.save_to_report("SEQ", "camera", DL.camera if type(DL.camera) == type("string") else ",".join(DL.camera))


# SEQUENCE
Exemplo n.º 10
0
import math

import gen, manta

ANDOR = gen.getsection("ANDOR")


def getAndorConf():
    # The parameters are loaded from the andorconf.INI file
    from configobj import ConfigObj

    andorconf = ConfigObj("L:/software/apparatus3/andor/andorconf.INI")
    return andorconf


def OpenShuttersFluor(s):
    # open camera and probe beam shutters  (back in time)
    # for test purposes give it an extra 1.0ms
    test = 2.0
    # cameraSHUT=3.4+test #full-on time for the camera shutter (3.4ms)
    # s.wait(-cameraSHUT)
    # s.digichg('camerashut',1)
    # s.wait(cameraSHUT)
    motSHUT = 5.5 + test  # full-on time for the MOT shutter
    s.wait(-motSHUT)
    s.digichg("motshutter", 0)
    s.wait(motSHUT)
    return s


def OpenProbeShutter(s):
Exemplo n.º 11
0
import os
sys.path.append(os.path.split(os.path.dirname(os.path.realpath(__file__)))[0])
import seqconf
for p in seqconf.import_paths():
    print "...adding path " + p
    sys.path.append(p)

import time
t0 = time.time()

import sys, math

import seq, wfm, gen, uvmot, basler, andor
report = gen.getreport()
#GET SECTION CONTENTS
UVSEC = gen.getsection('UV')
ODTSEC = gen.getsection('ODT')
BASLER = gen.getsection('BASLER')
ANDOR = gen.getsection('ANDOR')

print "\n----- basler_uv_repump.py -----\n"

#PARAMETERS
stepsize = float(report['SEQ']['stepsize'])
tof = float(report['BASLER']['tof'])
preexp = float(report['BASLER']['preexp'])
texp = float(report['BASLER']['exp'])
postexp = float(report['BASLER']['postexp'])

#SEQUENCE
s = seq.sequence(stepsize)
Exemplo n.º 12
0
VMaxd['greenpow3'] = 10.0

#V min Servo
VMinServod = {}
VMinServod['ir1pow'] = 0.022 + 0.005
VMinServod['ir2pow'] = 0.019 + 0.005
VMinServod['ir3pow'] = 0.035 + 0.005
VMinServod['greenpow1'] = 0.014 + 0.010
VMinServod['greenpow2'] = 0.020 + 0.005
VMinServod['greenpow3'] = 0.020 + 0.005




try:
    ODT = gen.getsection('ODT')
    ODTCALIB = gen.getsection('ODTCALIB')
    if ODT.use_servo == 0:
        b  = ODTCALIB.b_nonservo
        m1 = ODTCALIB.m1_nonservo
        m2 = ODTCALIB.m2_nonservo
        m3 = ODTCALIB.m3_nonservo
        kink1 = ODTCALIB.kink1_nonservo
        kink2 = ODTCALIB.kink2_nonservo
    elif ODT.use_servo == 1:
        b  = ODTCALIB.b
        m1 = ODTCALIB.m1
        m2 = ODTCALIB.m2
        m3 = 0.
        kink1 = ODTCALIB.kink
        kink2 = 11.
	sys.path.append(p)


import time
t0=time.time()

import sys, math
 
 
 
import seq, wfm, gen, cnc, odt, andor, highfield_uvmot
report=gen.getreport()


#GET SECTION CONTENTS
SEQ = gen.getsection('SEQ')
EVAP  = gen.getsection('EVAP')
ANDOR = gen.getsection('ANDOR')
ODT = gen.getsection('ODT')
FESHBACH = gen.getsection('FESHBACH')
ZEROCROSS = gen.getsection('ZEROCROSS')
RF = gen.getsection('RF')


#SEQUENCE
s=seq.sequence(SEQ.stepsize)
s=gen.initial(s)
s.wait(0.0)

#Get hfimg ready
s.digichg('hfimg',1)
Exemplo n.º 14
0
import pprint
import matplotlib as mpl
mpl.use('Agg') # This is for making the pyplot not complaining when there is no x server

numpy.seterr(all='raise')

import copy
import re

import matplotlib.pyplot as plt
import manta
from scipy import interpolate
from bfieldwfm import gradient_wave

#GET SECTION CONTENTS
DIMPLE = gen.getsection('DIMPLE')
DL = gen.getsection('DIMPLELATTICE')
ANDOR  = gen.getsection('ANDOR')
MANTA  = gen.getsection('MANTA')
RT = gen.getsection('ROUNDTRIP')




class lattice_wave(wfm.wave):
	"""The lattice_wave class helps construct the waveforms that 
		will be used to ramp the lattice.
		
		Several methods are added that allow doing special ramps
		"""
Exemplo n.º 15
0
import matplotlib as mpl
#mpl.use('Agg') # This is for making the pyplot not complaining when there is no x server

numpy.seterr(all='raise')
np = numpy

import copy
import re

import matplotlib.pyplot as plt
import manta
from scipy import interpolate
from bfieldwfm import gradient_wave

#GET SECTION CONTENTS
DIMPLE = gen.getsection('DIMPLE')
DL = gen.getsection('DIMPLELATTICE')
ANDOR = gen.getsection('ANDOR')
MANTA = gen.getsection('MANTA')
RT = gen.getsection('ROUNDTRIP')


def makeplot(ylist, ss=None, name=None):
    """useful for debugging stuff"""
    figure = plt.figure(figsize=(5., 4.))
    ax0 = figure.add_subplot(111)
    for y in ylist:
        if isinstance(y, wfm.wave):
            ax0.plot(y.ss * np.arange(len(y.y)), y.y)
        else:
            if ss is not None:
    print "...adding path " + p
    sys.path.append(p)

import time
t0 = time.time()

import math

import seq, wfm, gen, cnc, odt, andor, highfield_uvmot, manta, lattice, physics
from bfieldwfm import gradient_wave
#REPORT
report = gen.getreport()
#gen.get_lattice_webcam_data()

#GET SECTION CONTENTS
DIMPLE = gen.getsection('DIMPLE')
EVAP = gen.getsection('EVAP')
FB = gen.getsection('FESHBACH')
ZC = gen.getsection('ZEROCROSS')
ANDOR = gen.getsection('ANDOR')
SHUNT = gen.getsection('SHUNT')

#SEQUENCE
stepsize = float(report['SEQ']['stepsize'])
s = seq.sequence(stepsize)
s = gen.initial(s)
s.digichg('hfimg', 1)
s.digichg('odt7595', 0)

#Get hfimg ready
s.digichg('hfimg', 1)
Exemplo n.º 17
0
import math

import gen,manta
ANDOR  = gen.getsection('ANDOR')

def getAndorConf():
	#The parameters are loaded from the andorconf.INI file
	from configobj import ConfigObj
	andorconf=ConfigObj('L:/software/apparatus3/andor/andorconf.INI')
	return andorconf



def OpenShuttersFluor(s):
	#open camera and probe beam shutters  (back in time)
	#for test purposes give it an extra 1.0ms
	test=2.0
	#cameraSHUT=3.4+test #full-on time for the camera shutter (3.4ms)
	#s.wait(-cameraSHUT) 
	#s.digichg('camerashut',1)
	#s.wait(cameraSHUT)
	motSHUT=5.5+test#full-on time for the MOT shutter
	s.wait(-motSHUT)
	s.digichg('motshutter',0)
	s.wait(motSHUT)
	return s

def OpenProbeShutter(s):
	probeSHUT=5.0#full-on time for the probe shutter
	s.wait(-probeSHUT)
	s.digichg('prshutter',0)
Exemplo n.º 18
0
"""Constructs the ramps for doing UV cooling and fluorescence imaging

"""


import wfm, gen, math, cnc
report=gen.getreport()

def f(sec,key):
	global report
	return float(report[sec][key])

#GET SECTION CONTENTS
uvsec  = gen.getsection('UV')

def uvRamps(motpow, bfield, ENDCNC):
	ss=f('CNC','cncstepsize')


	uvdt = f('UV','dt')
	#---Ramp down red power
	motpow.linear(  0.002, uvdt) #0.002 is max attenuation before RF switch
	
	#---Bfield ramp
	dtload = f('UV','dtload_bfield')
	dtcnc = f('UV','dtcnc_bfield')
	uvhold = f('UV','uvhold')
	
	#OBSOLETE
	#bfield.linear(  f('UV','uvbfield'), uvdt)
	#bfield.appendhold(dtload)
	sys.path.append(p)


import time
t0=time.time()

import sys, math
 
 
 
import seq, wfm, gen, cnc, odt, andor, highfield_uvmot
report=gen.getreport()


#GET SECTION CONTENTS
SEQ = gen.getsection('SEQ')
EVAP  = gen.getsection('EVAP')
ANDOR = gen.getsection('ANDOR')
ODT = gen.getsection('ODT')
FESHBACH = gen.getsection('FESHBACH')
ZEROCROSS = gen.getsection('ZEROCROSS')
RF = gen.getsection('RF')

if EVAP.andor2 == 1:
	print "\n...SEQ:camera will be modified  in report"
	print "\tNEW  SEQ:camera = andor,andor2\n" 
	gen.save_to_report('SEQ','camera', 'andor,andor2') 


#SEQUENCE
s=seq.sequence(SEQ.stepsize)
import sys, math
 
 
 
import seq, wfm, gen, cnc, odt, andor, highfield_uvmot
report=gen.getreport()


#PARAMETERS
stepsize = float(report['SEQ']['stepsize'])
tof      = float(report['ANDOR']['tof'])
exp      = float(report['ANDOR']['exp'])
noatoms  = float(report['ANDOR']['noatoms'])

#GET SECTION CONTENTS
evapsec  = gen.getsection('EVAP')

#SEQUENCE
s=seq.sequence(stepsize)
s=gen.initial(s)

s.wait(0.0)


s.digichg('hfimg',1)
#s.digichg('hfimg2',0)
s.digichg('odt7595',0)

if evapsec.lattice == 1.0:
	s.digichg('irttl1', evapsec.irttl1)
	s.digichg('irttl2', evapsec.irttl2)
Exemplo n.º 21
0
for p in seqconf.import_paths():
    print "...adding path " + p
    sys.path.append(p)

import time
t0 = time.time()

import math

import seq, wfm, gen, cnc, odt, andor, highfield_uvmot, manta, lattice, roundtrip

#REPORT
report = gen.getreport()

#GET SECTION CONTENTS
DIMPLE = gen.getsection('DIMPLE')
EVAP = gen.getsection('EVAP')
FB = gen.getsection('FESHBACH')
ZC = gen.getsection('ZEROCROSS')
ANDOR = gen.getsection('ANDOR')
DL = gen.getsection('DIMPLELATTICE')
MANTA = gen.getsection('MANTA')
LATTICEMOD = gen.getsection('LatticeMod')
RT = gen.getsection('ROUNDTRIP')

print "\n...SEQ:camera will be modified  in report"
print "\tNEW  SEQ:camera = %s\n" % (DL.camera)
# When only use one camera the reading of DL.camera will be a string instead of a list of string. As a consequence we need to check the type.
gen.save_to_report(
    'SEQ', 'camera',
    DL.camera if type(DL.camera) == type("string") else ",".join(DL.camera))
Exemplo n.º 22
0
for p in seqconf.import_paths():
    print "...adding path " + p
    sys.path.append(p)

import time
t0 = time.time()

import math

import seq, wfm, gen, cnc, odt, andor, highfield_uvmot, manta, lattice

#REPORT
report = gen.getreport()

#GET SECTION CONTENTS
DIMPLE = gen.getsection('DIMPLE')
EVAP = gen.getsection('EVAP')
FB = gen.getsection('FESHBACH')
ZC = gen.getsection('ZEROCROSS')
ANDOR = gen.getsection('ANDOR')
DL = gen.getsection('DIMPLELATTICE')
MANTA = gen.getsection('MANTA')

print "\n...SEQ:camera will be modified  in report"
print "\tNEW  SEQ:camera = %s\n" % (DL.camera)
# When only use one camera the reading of DL.camera will be a string instead of a list of string. As a consequence we need to check the type.
gen.save_to_report(
    'SEQ', 'camera',
    DL.camera if type(DL.camera) == type("string") else ",".join(DL.camera))

#SEQUENCE
Exemplo n.º 23
0
""" Does CNCMOT then loads UVMOT and then ramps up to high field.
    Atoms in the trap at high field are the starting point for many experiments"""


import wfm, gen, math, cnc, uvmot, odt
report=gen.getreport()

#GET SECTION CONTENTS
SEQ = gen.getsection('SEQ')
UV = gen.getsection('UV')
SHUNT = gen.getsection('SHUNT')
FB = gen.getsection('FESHBACH')
ODT = gen.getsection('ODT')

	
def  go_to_highfield(s):

	#---Keep ODT on
	odton = gen.bstr('ODT',report)
	if odton == True:
		s.digichg('odtttl',1)
	s.wait(20.0)

	ss = SEQ.analogstepsize

	#---Cool and Compress MOT
	#---ENDCNC is defined as the time up to release from the MOT
	motpow, repdet, trapdet, reppow, trappow, bfield, ENDCNC = cnc.cncRamps()

	#---Load UVMOT from CNCMOT
	uvpow2, uvpow, motpow, bfield, ENDUVMOT = uvmot.uvRamps(motpow, bfield, ENDCNC)
Exemplo n.º 24
0
"""Constructs ramps relevant to the ODT
	
"""
import sys
#~ sys.path.append('L:/software/apparatus3/seq')
#~ sys.path.append('L:/software/apparatus3/seq/utilspy')
#~ sys.path.append('L:/software/apparatus3/seq/seqspy')
#~ sys.path.append('L:/software/apparatus3/convert')
import seqconf, wfm, gen, math, cnc, time, os, numpy, hashlib, evap, lattice, physics, errormsg
report=gen.getreport()

from bfieldwfm import gradient_wave

#GET SECTION CONTENTS
ODT  = gen.getsection('ODT')
EVAP = gen.getsection('EVAP')
DIMPLE = gen.getsection('DIMPLE')
FB   = gen.getsection('FESHBACH')
LBF  = gen.getsection('LATTICEBRAGGFIELD')
IL   = gen.getsection('INTOLATTICE')


def f(sec,key):
	global report
	return float(report[sec][key])
	


def odt_evap(scale=1.0):
	odtpow = odt_wave('odtpow', ODT.p0, ODT.evapss)
	### SELECT EVAP TRAJECTORY HERE###
Exemplo n.º 25
0
#~ sys.path.append('L:/software/apparatus3/seq/seqspy')
#~ sys.path.append('L:/software/apparatus3/convert')
import seqconf, wfm, gen, math, cnc, time, os, numpy, hashlib, evap, physics, errormsg, odt, bfieldwfm
import shutil
import matplotlib as mpl
mpl.use(
    'Agg'
)  # This is for making the pyplot not complaining when there is no x server

import matplotlib.pyplot as plt

from scipy import interpolate
from bfieldwfm import gradient_wave

#GET SECTION CONTENTS
DIMPLE = gen.getsection('DIMPLE')
DL = gen.getsection('DIMPLELATTICE')
ANDOR = gen.getsection('ANDOR')
MANTA = gen.getsection('MANTA')


class lattice_wave(wfm.wave):
    """The lattice_wave class helps construct the waveforms that 
		will be used to ramp the lattice.
		
		Several methods are added that allow doing special ramps
		"""


def interpolate_subramp(pts, yoffset):
    newpts = []
Exemplo n.º 26
0
""" Does CNCMOT then loads UVMOT and then ramps up to high field.
    Atoms in the trap at high field are the starting point for many experiments"""


import wfm, gen, math, cnc, uvmot, odt
report=gen.getreport()

#GET SECTION CONTENTS
SEQ = gen.getsection('SEQ')
UV = gen.getsection('UV')
SHUNT = gen.getsection('SHUNT')
FB = gen.getsection('FESHBACH')
ODT = gen.getsection('ODT')

	
def  go_to_highfield(s):

	#---Keep ODT on
	odton = gen.bstr('ODT',report)
	if odton == True:
		s.digichg('odtttl',1)
	s.wait(20.0)

	ss = SEQ.analogstepsize

	#---Cool and Compress MOT
	#---ENDCNC is defined as the time up to release from the MOT
	motpow, repdet, trapdet, reppow, trappow, bfield, ENDCNC = cnc.cncRamps()

	#---Load UVMOT from CNCMOT
	uvpow2, uvpow, motpow, bfield, ENDUVMOT = uvmot.uvRamps(motpow, bfield, ENDCNC)
Exemplo n.º 27
0
import seqconf, wfm, gen, math, cnc, time, os, numpy, hashlib, evap, physics, errormsg, odt, bfieldwfm
import shutil
import pprint
import matplotlib as mpl
mpl.use('Agg') # This is for making the pyplot not complaining when there is no x server

import copy
import re

import matplotlib.pyplot as plt
import manta
from scipy import interpolate
from bfieldwfm import gradient_wave

#GET SECTION CONTENTS
DIMPLE = gen.getsection('DIMPLE')
DL = gen.getsection('DIMPLELATTICE')
ANDOR  = gen.getsection('ANDOR')
MANTA  = gen.getsection('MANTA')




class lattice_wave(wfm.wave):
	"""The lattice_wave class helps construct the waveforms that 
		will be used to ramp the lattice.
		
		Several methods are added that allow doing special ramps
		"""

def interpolate_subramp( pts , yoffset): 
Exemplo n.º 28
0
import math

import gen,manta
ANDOR  = gen.getsection('ANDOR')

def getAndorConf():
	#The parameters are loaded from the andorconf.INI file
	from configobj import ConfigObj
	andorconf=ConfigObj('L:/software/apparatus3/andor/andorconf.INI')
	return andorconf



def OpenShuttersFluor(s):
	#open camera and probe beam shutters  (back in time)
	#for test purposes give it an extra 1.0ms
	test=2.0
	#cameraSHUT=3.4+test #full-on time for the camera shutter (3.4ms)
	#s.wait(-cameraSHUT) 
	#s.digichg('camerashut',1)
	#s.wait(cameraSHUT)
	motSHUT=5.5+test#full-on time for the MOT shutter
	s.wait(-motSHUT)
	s.digichg('motshutter',0)
	s.wait(motSHUT)
	return s

def OpenProbeShutter(s):
	probeSHUT=5.0#full-on time for the probe shutter
	s.wait(-probeSHUT)
	s.digichg('prshutter',0)
sys.path.append(os.path.split(os.path.dirname(os.path.realpath(__file__)))[0])
import seqconf
for p in seqconf.import_paths():
    print "...adding path " + p
    sys.path.append(p)

import time
t0 = time.time()

import sys, math

import seq, wfm, gen, cnc, odt, andor, highfield_uvmot
report = gen.getreport()

#---GET SECTION CONTENTS
SEQ = gen.getsection('SEQ')
EVAP = gen.getsection('EVAP')
ANDOR = gen.getsection('ANDOR')
ODT = gen.getsection('ODT')
FB = gen.getsection('FESHBACH')
ZC = gen.getsection('ZEROCROSS')
LI = gen.getsection('LATTICEINT')

#---SEQUENCE
s = seq.sequence(SEQ.stepsize)
s = gen.initial(s)

#Get hfimg ready
s.digichg('hfimg', 1)

#If using analoghfimg get it ready
	print "...adding path " + p
	sys.path.append(p)

import time
t0=time.time()

import math
 
import seq, wfm, gen, cnc, odt, andor, highfield_uvmot, manta, lattice
from bfieldwfm import gradient_wave
#REPORT
report=gen.getreport()

    
#GET SECTION CONTENTS
DIMPLE = gen.getsection('DIMPLE')
EVAP = gen.getsection('EVAP')
FB = gen.getsection('FESHBACH')
ZC   = gen.getsection('ZEROCROSS')
ANDOR= gen.getsection('ANDOR')
SHUNT= gen.getsection('SHUNT')


#SEQUENCE
stepsize = float(report['SEQ']['stepsize'])
s=seq.sequence(stepsize)
s=gen.initial(s)
s.digichg('hfimg',1)
s.digichg('odt7595',0)

#Get hfimg ready

import time

t0 = time.time()

import sys, math


import seq, wfm, gen, cnc, odt, andor, highfield_uvmot

report = gen.getreport()


# GET SECTION CONTENTS
SEQ = gen.getsection("SEQ")
EVAP = gen.getsection("EVAP")
ANDOR = gen.getsection("ANDOR")
ODT = gen.getsection("ODT")
FESHBACH = gen.getsection("FESHBACH")
ZEROCROSS = gen.getsection("ZEROCROSS")
RF = gen.getsection("RF")

if EVAP.andor2 == 1:
    print "\n...SEQ:camera will be modified  in report"
    print "\tNEW  SEQ:camera = andor,andor2\n"
    gen.save_to_report("SEQ", "camera", "andor,andor2")


# SEQUENCE
s = seq.sequence(SEQ.stepsize)
Exemplo n.º 32
0
for p in seqconf.import_paths():
	print "...adding path " + p
	sys.path.append(p)

import time
t0=time.time()

import math
 
import seq, wfm, gen, cnc, odt, andor, highfield_uvmot, manta, lattice

#REPORT
report=gen.getreport()
    
#GET SECTION CONTENTS
DIMPLE = gen.getsection('DIMPLE')
EVAP   = gen.getsection('EVAP')
FB     = gen.getsection('FESHBACH')
ZC     = gen.getsection('ZEROCROSS')
ANDOR  = gen.getsection('ANDOR')
DL     = gen.getsection('DIMPLELATTICE')
MANTA  = gen.getsection('MANTA')
LATTICEMOD = gen.getsection('LatticeMod')




print "\n...SEQ:camera will be modified  in report"
print "\tNEW  SEQ:camera = %s\n" % ( DL.camera )
# When only use one camera the reading of DL.camera will be a string instead of a list of string. As a consequence we need to check the type.
gen.save_to_report('SEQ','camera', DL.camera if type(DL.camera) == type("string") else ",".join(DL.camera)) 
Exemplo n.º 33
0
VMaxd['ir3pow'] = 10.0
VMaxd['greenpow1'] = 3.12
VMaxd['greenpow2'] = 3.18
VMaxd['greenpow3'] = 10.0

#V min Servo
VMinServod = {}
VMinServod['ir1pow'] = 0.022 + 0.005
VMinServod['ir2pow'] = 0.019 + 0.005
VMinServod['ir3pow'] = 0.035 + 0.005
VMinServod['greenpow1'] = 0.014 + 0.010
VMinServod['greenpow2'] = 0.020 + 0.005
VMinServod['greenpow3'] = 0.020 + 0.005

try:
    ODT = gen.getsection('ODT')
    ODTCALIB = gen.getsection('ODTCALIB')
    if ODT.use_servo == 0:
        b = ODTCALIB.b_nonservo
        m1 = ODTCALIB.m1_nonservo
        m2 = ODTCALIB.m2_nonservo
        m3 = ODTCALIB.m3_nonservo
        kink1 = ODTCALIB.kink1_nonservo
        kink2 = ODTCALIB.kink2_nonservo
    elif ODT.use_servo == 1:
        b = ODTCALIB.b
        m1 = ODTCALIB.m1
        m2 = ODTCALIB.m2
        m3 = 0.
        kink1 = ODTCALIB.kink
        kink2 = 11.
	print "...adding path " + p
	sys.path.append(p)

import time
t0=time.time()

import math
 
import seq, wfm, gen, cnc, odt, andor, highfield_uvmot, manta, lattice

#REPORT
report=gen.getreport()

    
#GET SECTION CONTENTS
lbf  = gen.getsection('LATTICEBRAGGFIELD')
evap = gen.getsection('EVAP')
zc   = gen.getsection('ZEROCROSS')
Andor= gen.getsection('ANDOR')
Manta= gen.getsection('MANTA')


#SEQUENCE
stepsize = float(report['SEQ']['stepsize'])
s=seq.sequence(stepsize)
s=gen.initial(s)
s.digichg('hfimg',1)
s.digichg('odt7595',0)


# Do CNC, UVMOT, and field ramps
for p in seqconf.import_paths():
	print "...adding path " + p
	sys.path.append(p)


import time
t0=time.time()

import sys, math
 
 
 
import seq, wfm, gen, uvmot, basler, andor
report=gen.getreport()
#GET SECTION CONTENTS
UVSEC = gen.getsection('UV')
ODTSEC = gen.getsection('ODT')
BASLER = gen.getsection('BASLER')
ANDOR = gen.getsection('ANDOR')

print "\n----- basler_uv_repump.py -----\n"

#PARAMETERS
stepsize    =float(report['SEQ']['stepsize'])
tof         =float(report['BASLER']['tof'])
preexp      =float(report['BASLER']['preexp'])
texp        =float(report['BASLER']['exp'])
postexp     =float(report['BASLER']['postexp'])


#SEQUENCE