diff --git a/siriuspy/siriuspy/devices/bbb.py b/siriuspy/siriuspy/devices/bbb.py index 08e29ff90..7e9a35725 100644 --- a/siriuspy/siriuspy/devices/bbb.py +++ b/siriuspy/siriuspy/devices/bbb.py @@ -8,6 +8,7 @@ save_pickle as _save_pickle, load_pickle as _load_pickle from .device import Device as _Device, Devices as _Devices +from .dcct import DCCT class BunchbyBunch(_Devices): @@ -22,6 +23,7 @@ class BunchbyBunch(_Devices): def __init__(self, devname): """.""" devname = BunchbyBunch.process_device_name(devname) + self.dcct = DCCT(DCCT.DEVICES.SI_13C4) self.info = SystemInfo(devname) self.timing = Timing(devname) self.sram = Acquisition(devname, acqtype='SRAM') @@ -33,7 +35,7 @@ def __init__(self, devname): self.fbe = FrontBackEnd() devs = [ self.info, self.timing, self.sram, self.bram, self.coeffs, - self.feedback, self.drive, self.bunch_clean, self.fbe, ] + self.feedback, self.drive, self.bunch_clean, self.fbe, self.dcct] if devname.endswith('-L'): self.pwr_amp1 = PwrAmpL(devname, num=0) @@ -61,9 +63,12 @@ def save_raw_data(self, fname, acqtype='SRAM', overwrite=False): acq = self.sram if acqtype in 'SRAM' else self.bram data = dict( + current=self.dcct.current, acqtype=acqtype, downsample=acq.downsample, data=acq.data_raw, rf_freq=self.info.rf_freq_nom, - harmonic_number=self.info.harmonic_number + harmonic_number=self.info.harmonic_number, + growth_time=acq.growthtime, acq_time=acq.acqtime, + hold_time=acq.holdtime, post_time=acq.posttime, ) _save_pickle(data, fname, overwrite=overwrite) @@ -110,7 +115,7 @@ def sweep_adc_delay(self, values, wait=2, mon_type='mean'): self.timing.adc_delay = init_val return _np.array(mon_values) - def sweep_backend_phase(self, values, wait=2): + def sweep_backend_phase(self, values, wait=2, mon_type='peak'): """Sweep Backend Phase for each `value` in `values`.""" mon_values = [] ctrl, mon = 'Backend Phase', 'Peak magnitude' @@ -120,13 +125,16 @@ def sweep_backend_phase(self, values, wait=2): for i, val in enumerate(values): self.fbe.be_phase = val _time.sleep(wait) - mon_val = self.sram.spec_marker1_mag + if mon_type.lower() in 'peak': + mon_val = self.sram.spec_marker1_mag + else: + mon_val = self.sram.data_rms mon_values.append(mon_val) - print(f'{i:03d}: {val:15.6f} {mon_val:15.6f}') + print(f'{i:03d}: {val:15.6f} {_np.mean(mon_val):15.6f}') self.fbe.be_phase = init_val return _np.array(mon_values) - def sweep_dac_delay(self, values, wait=2): + def sweep_dac_delay(self, values, wait=2, mon_type='peak'): """Sweep DAC Delay for each `value` in `values`.""" mon_values = [] ctrl, mon = 'DAC Delay', 'Peak Magnitude' @@ -136,13 +144,16 @@ def sweep_dac_delay(self, values, wait=2): for i, val in enumerate(values): self.timing.dac_delay = val _time.sleep(wait) - mon_val = self.sram.spec_marker1_mag + if mon_type.lower() in 'peak': + mon_val = self.sram.spec_marker1_mag + else: + mon_val = self.sram.data_rms mon_values.append(mon_val) - print(f'{i:03d}: {val:15.6f} {mon_val:15.6f}') + print(f'{i:03d}: {val:15.6f} {_np.mean(mon_val):15.6f}') self.timing.dac_delay = init_val return _np.array(mon_values) - def sweep_feedback_phase(self, values, wait=2): + def sweep_feedback_phase(self, values, wait=2, mon_type='peak'): """Sweep Feedback Phase for each `value` in `values`.""" mon_values = [] ctrl, mon = 'Coeff. Phase', 'Peak Magnitude' @@ -153,9 +164,12 @@ def sweep_feedback_phase(self, values, wait=2): self.coeffs.edit_phase = val self.coeffs.cmd_edit_apply() _time.sleep(wait) - mon_val = self.sram.spec_marker1_mag + if mon_type.lower() in 'peak': + mon_val = self.sram.spec_marker1_mag + else: + mon_val = self.sram.data_rms mon_values.append(mon_val) - print(f'{i:03d}: {val:15.6f} {mon_val:15.6f}') + print(f'{i:03d}: {val:15.6f} {_np.mean(mon_val):15.6f}') self.coeffs.edit_phase = init_val self.coeffs.cmd_edit_apply() return _np.array(mon_values) diff --git a/siriuspy/siriuspy/devices/dcct.py b/siriuspy/siriuspy/devices/dcct.py index be5870fd2..ad5aa93d2 100644 --- a/siriuspy/siriuspy/devices/dcct.py +++ b/siriuspy/siriuspy/devices/dcct.py @@ -21,7 +21,7 @@ class DEVICES: ALL = (BO, SI_13C4, SI_14C4) _properties = ( - 'RawReadings-Mon', + 'RawReadings-Mon', 'Current-Mon', 'FastMeasPeriod-SP', 'FastMeasPeriod-RB', 'FastSampleCnt-SP', 'FastSampleCnt-RB', 'MeasTrg-Sel', 'MeasTrg-Sts', @@ -66,10 +66,15 @@ def acq_ctrl(self, value): self['MeasTrg-Sel'] = DCCT.PWRSTATE.On if value else DCCT.PWRSTATE.Off @property - def current(self): + def current_fast(self): """.""" return self['RawReadings-Mon'] + @property + def current(self): + """.""" + return self['Current-Mon'] + def wait(self, timeout=10): """.""" nrp = int(timeout/0.1)