Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from artiq.experiment import *
from pyLIAF.artiq.controllers import UrukulCh
import numpy as np
# TODO:
# [ ] Revisar los tiempos
# [ ] Ver por que da overflow intermitentemente en las corrids
# [ ] Ver como esta guardando los resultados y guardar lo que falta
# [ ] Cambiarle los parametros a los laseres cuando arranca el exp
class IonStatistics(EnvExperiment):
"""Measuring ion statistics"""
def build(self):
self.setattr_device("core")
self.setattr_device("ccb")
self.pmt = self.get_device("ttl0")
self.pmt_state = self.get_device("ttl4")
self.laserTISA = UrukulCh(self, ch=3, freq=80.0, amp=0.15, name="TISA")
# self.setattr_argument("bin", NumberValue(50e-9, unit='us'), "Binning params")
@rpc
def create_datasets(self):
self.set_dataset("counts", [],
broadcast=True, archive=True)
self.set_dataset("t_readout", self.t_readout, broadcast=False, archive=True)
self.set_dataset("t_prep_S", self.t_prepS, broadcast=False, archive=True)
self.set_dataset("t_enfriar_ion", self.t_cool, broadcast=False, archive=True)
self.set_dataset("no_measures", self.no_measures, broadcast=False, archive=True)
self.set_dataset("Comments", self.Comments)
#self.set_dataset("frec_UV",self.frec_UV, broadcast=False,archive=True)
#self.set_dataset("frec_IR",self.frec_IR, broadcast=False,archive=True)
# TODO: Agregar forma de guardar los datos de los canales del Urukul.
# o bien guardando todos aca, o armando un metodo apropiado en su controlador
#self.set_dataset("binvector", np.arange(0, self.t_readout, self.bin*1e-6), broadcast=True, archive=False)
@rpc
def create_applets(self):
pass
@kernel
def run(self):
self.create_datasets()
self.create_applets()
self.init_kernel()
delay(1*s)
self.laserTISA.off()
self.pmt_state.on()
delay(5*s)
self.laserTISA.on()
self.pmt_state.off()
self.core.break_realtime()
@kernel
def init_kernel(self):
#self.core.reset()
self.pmt.input()
self.pmt_state.output()
self.pmt_state.off()
delay(1*s)
#self.laserTISA.set_channel()
#delay(10*ms)
#self.laserTISA.on()
#self.core.wait_until_mu(now_mu())
#self.laserTISA.set_frequency(self.TISA_measurement_freq, self.TISA_measurement_amp, profile=0)
#delay(10*ms)
self.core.break_realtime()
self.core.wait_until_mu(now_mu())