Skip to content

Commit

Permalink
Merge pull request #1113 from lnls-sirius/fix-bbb
Browse files Browse the repository at this point in the history
Use two RFCavs in BunchbyBunch
  • Loading branch information
murilobalves authored Oct 15, 2024
2 parents 5dbe45f + 3ac3fb0 commit aa81c53
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 12 deletions.
23 changes: 13 additions & 10 deletions siriuspy/siriuspy/devices/bbb.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ def __init__(self, devname, props2init='all'):
"props2init must be 'all' or bool(props2init) == False")

self.dcct = DCCT(DCCT.DEVICES.SI_13C4, props2init=props2init)
self.rfcav = RFCav(RFCav.DEVICES.SI, props2init=props2init)
self.rfcav_a = RFCav(RFCav.DEVICES.SIA, props2init=props2init)
self.rfcav_b = RFCav(RFCav.DEVICES.SIB, props2init=props2init)
self.info = SystemInfo(devname, props2init=props2init)
self.timing = Timing(devname, props2init=props2init)
self.sram = Acquisition(devname, acqtype='SRAM', props2init=props2init)
Expand All @@ -61,7 +62,7 @@ def __init__(self, devname, props2init='all'):
self.info, self.timing, self.sram, self.bram, self.coeffs,
self.feedback, self.drive0, self.drive1, self.drive2,
self.bunch_clean, self.fbe, self.dcct,
self.rfcav, self.single_bunch, self.phase_track]
self.rfcav_a, self.rfcav_b, self.single_bunch, self.phase_track]

if devname.endswith('-L'):
self.pwr_amp1 = PwrAmpL(devname, num=0, props2init=props2init)
Expand Down Expand Up @@ -194,24 +195,26 @@ def sweep_feedback_phase(self, values, wait=2, mon_type='peak'):
self.coeffs.cmd_edit_apply()
return _np.array(mon_values)

def sweep_rf_phase(self, values, wait=2, mon_type='mean'):
"""Sweep RF Phase for each `value` in `values`."""
def sweep_rf_phase(self, delta_phases, wait=2, mon_type='mean'):
"""Sweep RF Phase for each dphase in `delta_phases`."""
mon_values = []
ctrl, mon = 'RF Phase', 'SRAM Mean'
print(f'Idx: {ctrl:15s} {mon:15s}')

llrf = self.rfcav.dev_llrf
init_val = llrf.phase
for i, val in enumerate(values):
self.rfcav.set_phase(val)
rfcavs = [self.rfcav_a, self.rfcav_b]
init_phases = [rfcav.dev_llrf.phase for rfcav in rfcavs]
for i, dphase in enumerate(delta_phases):
for phase0, rfcav in zip(init_phases, rfcavs):
rfcav.set_phase(phase0 + dphase)
_time.sleep(wait)
if mon_type.lower() in 'mean':
mon_val = self.sram.data_mean
else:
mon_val = self.sram.spec_marker1_mag
mon_values.append(mon_val)
print(f'{i:03d}: {val:15.6f} {_np.mean(mon_val):15.6f}')
llrf.value = init_val
print(f'{i:03d}: {dphase:15.6f} {_np.mean(mon_val):15.6f}')
for phase0, rfcav in zip(init_phases, rfcavs):
rfcav.set_phase(phase0)
return _np.array(mon_values)


Expand Down
4 changes: 2 additions & 2 deletions siriuspy/siriuspy/devices/bpm_fam.py
Original file line number Diff line number Diff line change
Expand Up @@ -264,8 +264,8 @@ def get_mturn_timestamps(self):
(len(self._mturn_signals2acq), len(self.bpms)), dtype=float)
for i, s in enumerate(self._mturn_signals2acq):
for j, bpm in enumerate(self.bpms):
s = self.conv_signal2pvname_format(s)
pvo = bpm.pv_object(f'GEN{s}Data')
pname = self.conv_signal2pvname_format(s)
pvo = bpm.pv_object(f'GEN{pname}Data')
tv = pvo.get_timevars(timeout=self.TIMEOUT)
tsmps[i, j] = pvo.timestamp if tv is None else tv['timestamp']
return tsmps
Expand Down

0 comments on commit aa81c53

Please sign in to comment.