Example #1
0
s.digichg('odt7595', 0)

#Do CNC, UVMOT, and field ramps
s, toENDBFIELD = highfield_uvmot.go_to_highfield(s)

# Add evaporation ramp to ODT
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.odt_evap(image)
evap_ss = float(report['EVAP']['evapss'])
s.analogwfm_add(evap_ss, [odtpow])
# ENDEVAP should be equal to image
s.wait(image)

#RELEASE FROM IR TRAP
s.digichg('odtttl', 0)
odttof = float(report['ODT']['odttof'])
s.wait(odttof)

#TAKE PICTURES
light = 'probe'
#light = 'motswitch'
#light = 'bragg'
trap_on_picture = 1
#Do CNC, UVMOT, and field ramps
s, toENDBFIELD = highfield_uvmot.go_to_highfield(s)

print toENDBFIELD

# Add evaporation ramp to ODT
free = float(report['EVAP']['free'])
evapdt = float(report['FLICKER']['evapdt'])
buffer = 10.0  #Time needed to re-latch the trigger for the AOUTS
if free < buffer + toENDBFIELD:
    print 'Need at list %.3f ms of free evap before evaporation can be triggered' % (
        buffer + toENDBFIELD)
    exit(1)
s.wait(free)
odtpow, ENDEVAP, cpowend, ipganalog = odt.odt_evap(evapdt)
evap_ss = float(report['EVAP']['evapss'])
s.analogwfm_add(evap_ss, [odtpow])
# ENDEVAP should be equal to image
s.wait(evapdt)

#Trigger new waveform to do trap frequency measurement
buffer = 10.0
s.wait(buffer)

odtpow2, bfield2, ENDFLICK = odt.odt_flicker(odtpow.last())
flicker_ss = float(report['FLICKER']['flicker_ss'])
s.analogwfm_add(flicker_ss, [odtpow2, bfield2])

# Goes to when the modulation is finished
s.wait(ENDFLICK)
s.digichg('hfimg',1)
s.digichg('odt7595',0)

#Do CNC, UVMOT, and field ramps
s, toENDBFIELD = highfield_uvmot.go_to_highfield(s)

# Add evaporation ramp to ODT
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.odt_evap(image)
evap_ss = float(report['EVAP']['evapss'])

bias = float(report['FESHBACH']['bias'])
zcrampdt = float(report['ZEROCROSS']['zcrampdt'])
zcdt = float(report['ZEROCROSS']['zcdt'])
zcbias = float(report['ZEROCROSS']['zcbias'])


bfield = wfm.wave('bfield',bias,evap_ss)

#~ bfield.extend(odtpow.dt()-zcdt-zcrampdt)
#~ bfield.linear(zcbias,zcrampdt)
#~ bfield.extend(odtpow.dt())

bfield.extend(odtpow.dt())
s, toENDBFIELD = highfield_uvmot.go_to_highfield(s)

#Allow time for free evaporation (also helps provide buffer to reload the analog chs)
buffer=10.0 #Time needed to re-latch the trigger for the AOUTS
if EVAP.free < buffer + toENDBFIELD :
    print 'Need at list ' + str(buffer) + 'ms of EVAP.free evap before evaporation can be triggered'
    print 'Currently ramps end at %f , and EVAP.free is %f' % (toENDBFIELD,EVAP.free)
    exit(1)
s.wait(EVAP.free)


#Do Evap
if int(EVAP.use_field_ramp) == 1:
    bfield, odtpow, ENDEVAP, cpowend, ipganalog= odt.odt_evap_field(EVAP.scale)
else:
    odtpow, ENDEVAP, cpowend, ipganalog = odt.odt_evap(EVAP.scale)
    bfield = wfm.wave('bfield',FESHBACH.bias,EVAP.evapss)
    bfield.extend(odtpow.dt())
#Use the EVAP.image time equal to EVAP.image times EVAP.scale for the sequence after the part.
EVAP.image = EVAP.image *EVAP.scale    


#Ramp the field to the zerocrossing
bfield.linear(ZEROCROSS.zcbias,ZEROCROSS.zcrampdt)
bfield.appendhold(ZEROCROSS.zcdt)
odtpow.extend(bfield.dt())
ipganalog.extend(bfield.dt())


#Recompress with the ODT
if int(EVAP.use_odt_lock) == 1: 
s.digichg('odt7595',0)

#Do CNC, UVMOT, and field ramps
s, toENDBFIELD = highfield_uvmot.go_to_highfield(s)

print toENDBFIELD

# Add evaporation ramp to ODT
free = float(report['EVAP']['free'])
evapdt= float(report['FLICKER']['evapdt'])
buffer=10.0 #Time needed to re-latch the trigger for the AOUTS
if free < buffer + toENDBFIELD :
    print 'Need at list %.3f ms of free evap before evaporation can be triggered' % (buffer+toENDBFIELD)
    exit(1)
s.wait(free)
odtpow, ENDEVAP, cpowend, ipganalog = odt.odt_evap(evapdt)
evap_ss = float(report['EVAP']['evapss'])
s.analogwfm_add(evap_ss,[odtpow])
# ENDEVAP should be equal to image
s.wait(evapdt)

#Trigger new waveform to do trap frequency measurement
buffer=10.0
s.wait(buffer)

odtpow2, bfield2, ENDFLICK = odt.odt_flicker(odtpow.last())
flicker_ss = float(report['FLICKER']['flicker_ss'])
s.analogwfm_add(flicker_ss,[odtpow2,bfield2])

# Goes to when the modulation is finished
s.wait(ENDFLICK)
s, toENDBFIELD = highfield_uvmot.go_to_highfield(s)

# Allow time for free evaporation (also helps provide buffer to reload the analog chs)
buffer = 10.0  # Time needed to re-latch the trigger for the AOUTS
if EVAP.free < buffer + toENDBFIELD:
    print "Need at list " + str(buffer) + "ms of EVAP.free evap before evaporation can be triggered"
    print "Currently ramps end at %f , and EVAP.free is %f" % (toENDBFIELD, EVAP.free)
    exit(1)
s.wait(EVAP.free)


# Do Evap
if int(EVAP.use_field_ramp) == 1:
    bfield, odtpow, ENDEVAP, cpowend, ipganalog = odt.odt_evap_field(EVAP.scale)
else:
    odtpow, ENDEVAP, cpowend, ipganalog = odt.odt_evap(EVAP.scale)
    bfield = wfm.wave("bfield", FESHBACH.bias, EVAP.evapss)
    bfield.extend(odtpow.dt())
# Use the EVAP.image time equal to EVAP.image times EVAP.scale for the sequence after the part.
EVAP.image = EVAP.image * EVAP.scale


# Ramp the field to the zerocrossing
bfield.linear(ZEROCROSS.zcbias, ZEROCROSS.zcrampdt)
bfield.appendhold(ZEROCROSS.zcdt)
odtpow.extend(bfield.dt())
ipganalog.extend(bfield.dt())


# Recompress with the ODT
if int(EVAP.use_odt_lock) == 1:
s.wait(-switchdelay-quickdelay-2*switchdt-offdelay)

#At this point the time sequence is at ENDUVMOT

#This is the time until the end of the bfield ramp
toENDBFIELD = biasrampdt + switchdelay + quickdelay + 2*switchdt + offdelay

# Add evaporation ramp to ODT
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'
    exit(1)
s.wait(free)
odtpow, ENDEVAP = odt.odt_evap(image)
evap_ss = float(report['EVAP']['evapss'])
s.analogwfm_add(evap_ss,[odtpow])
# ENDEVAP should be equal to image
s.wait(image)


#RELEASE FROM IR TRAP
s.digichg('odtttl',0)
odttof = float(report['ODT']['odttof'])
s.wait(odttof)

#TAKE PICTURES
light = 'probe'
#light = 'motswitch'
#light = 'bragg'
#At this point the time sequence is at ENDUVMOT

#This is the time until the end of the bfield ramp
toENDBFIELD = biasrampdt + switchdelay + quickdelay + 2 * switchdt + offdelay

# Add evaporation ramp to ODT
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'
    exit(1)
s.wait(free)
odtpow, ENDEVAP = odt.odt_evap(image)
evap_ss = float(report['EVAP']['evapss'])
s.analogwfm_add(evap_ss, [odtpow])
# ENDEVAP should be equal to image
s.wait(image)

#RELEASE FROM IR TRAP
s.digichg('odtttl', 0)
odttof = float(report['ODT']['odttof'])
s.wait(odttof)

#TAKE PICTURES
light = 'probe'
#light = 'motswitch'
#light = 'bragg'
trap_on_picture = 1