Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • alexander.brynes/fodofix
1 result
Show changes
Commits on Source (2)
No preview for this file type
No preview for this file type
No preview for this file type
......@@ -61,7 +61,11 @@ class fodoControl():
else:
self.phase = self.factor * dat.fodo_data_base.values['beam_status'][
self.namem + '_phase'].value
elem.phi = self.phase - 90
if dat.fodo_data_base.values['tracking_mode'] == 'forward':
self.phasefac = - 90
else:
self.phasefac = 90
elem.phi = self.phase + self.phasefac
elem.v = self.volt
self.lattice.update_transfer_maps()
self.lattice.save_as_py_file('fel.py')
......@@ -102,10 +106,13 @@ class fodoControl():
self.alls = [t.s for t in self.twis]
self.endpos = self.get_spos(self.lattice, dat.fodo_data_base.values['end_point'])
self.spos = self.get_twiss_spos(self.twis, self.endpos)
self.factor = 1
if dat.fodo_data_base.values['tracking_mode'] == 'reverse':
self.factor = -1
dat.fodo_data_base.values['betax_end'] = [round(self.twis[self.spos].beta_x, 4)]
dat.fodo_data_base.values['betay_end'] = [round(self.twis[self.spos].beta_y, 4)]
dat.fodo_data_base.values['alphax_end'] = [round(self.twis[self.spos].alpha_x, 4)]
dat.fodo_data_base.values['alphay_end'] = [round(self.twis[self.spos].alpha_y, 4)]
dat.fodo_data_base.values['alphax_end'] = [round(self.factor * self.twis[self.spos].alpha_x, 4)]
dat.fodo_data_base.values['alphay_end'] = [round(self.factor * self.twis[self.spos].alpha_y, 4)]
if dat.fodo_data_base.values['error_enable']:
self.get_errors(self.lattice, self.twi)
dat.fodo_data_base.values['betax_end'].append(round(dat.fodo_data_base.values['min_beta_x'][self.spos], 4))
......@@ -187,10 +194,13 @@ class fodoControl():
# del self.twical[t+1]
# del self.twical[t+2]
self.alltwiss.append(self.twical)
self.factor = 1
if dat.fodo_data_base.values['tracking_mode'] == 'reverse':
self.factor = -1
self.twibx.append([e.beta_x for e in self.alltwiss[-1]])
self.twiby.append([e.beta_y for e in self.alltwiss[-1]])
self.twiax.append([e.alpha_x for e in self.alltwiss[-1]])
self.twiay.append([e.alpha_y for e in self.alltwiss[-1]])
self.twiax.append([self.factor * e.alpha_x for e in self.alltwiss[-1]])
self.twiay.append([self.factor * e.alpha_y for e in self.alltwiss[-1]])
dat.fodo_data_base.values['ocelot_twiss_list'] = self.alltwiss
dat.fodo_data_base.values['min_beta_x'] = []
dat.fodo_data_base.values['min_beta_y'] = []
......
......@@ -226,7 +226,7 @@ class tangoIO():
dat.fodo_data_base.values['alphay_meas_end'] = self.beamstatus[self.meas_point_end + '_alpha_Y'].value
if 'LH' in self.meas_point:
dat.fodo_data_base.values['beam_energy'] = self.beamstatus['LH_Energy'].value
elif 'BC1' in self.meas_point:
elif ('BC1' in self.meas_point) or ('BC01' in self.meas_point):
dat.fodo_data_base.values['beam_energy'] = self.beamstatus['BC01_Energy'].value
else:
dat.fodo_data_base.values['beam_energy'] = self.beamstatus['DBD_Energy'].value
\ No newline at end of file
No preview for this file type
......@@ -25,6 +25,7 @@ extra_quads = 'extra_quads'
quads_prev = 'quads_prev'
quads_new = 'quads_new'
quads_set = 'quads_set'
tracking_mode = 'tracking_mode'
'''
Twiss params
'''
......@@ -101,7 +102,7 @@ all_value_keys = [comments, time_stamp, betax_meas, betay_meas, alphax_meas,
line_end, betax_end, betay_end, alphax_end, alphay_end,
end_point, min_alpha_x, min_alpha_y, max_alpha_x,
max_alpha_y, betax_end_meas, betay_end_meas, alphax_end_meas,
alphay_end_meas, cavity_dict]
alphay_end_meas, cavity_dict, tracking_mode]
class fodo_data_base(QObject):
# whoami
......@@ -183,6 +184,7 @@ class fodo_data_base(QObject):
values[alphax_end_meas] = dummy_dbl
values[alphay_end_meas] = dummy_dbl
values[cavity_dict] = {}
values[tracking_mode] = 'forward'
# amp_pwr_mean_data = {}
#logger
......
......@@ -136,7 +136,7 @@ und_lh_01 = Undulator(lperiod=0.04, nperiods=12.0, Kx=0.87, eid='UND_LH.01')
# Cavitys
acct_l01_01 = Cavity(l=4.572, v=0.057, phi=26.499023443571176, freq=2997924000.0, eid='ACCT_L01_01')
acct_l01_02 = Cavity(l=4.572, v=0.057, phi=26.499023443571176, freq=2997924000.0, eid='ACCT_L01_02')
acch_l01 = Cavity(l=0.595, v=0.0188, phi=179.2189407381543, freq=11991600000.0, eid='ACCH_L01')
acch_l01 = Cavity(l=0.595, v=0.0188, phi=179.00505066247462, freq=11991600000.0, eid='ACCH_L01')
acct_l01_03 = Cavity(l=4.572, v=0.0545, phi=26.499023437017613, freq=2997924000.0, eid='ACCT_L01_03')
acct_l01_04 = Cavity(l=4.572, v=0.0545, phi=26.499023437017613, freq=2997924000.0, eid='ACCT_L01_04')
wdcav_bc1_1 = Cavity(l=0.25, freq=2997924000.0, eid='WDCAV_BC1.1')
......
No preview for this file type
No preview for this file type
......@@ -67,23 +67,39 @@ class fodo_gui(QMainWindow, Ui_MainWindow):
self.energyErrSpinBox.valueChanged.connect(self.update_energy_err)
self.enableErrorsCheckBox.clicked.connect(self.enable_errors)
self.contPlotCheckBox.clicked.connect(self.continuous_plot)
self.trackModeButtonGroup.buttonClicked.connect(self.update_track_mode)
self.update_quad_line()
self.update_twiss_source()
self.timer = QTimer()
# self.updateQuadsSignal.emit()
def add_lines(self):
self.lineComboBox.currentIndexChanged.disconnect(self.update_quad_line)
self.lineComboBox.clear()
self.lineComboBox.addItem('')
for li in self.lattice_config['ALL_LINES']:
self.lineComboBox.addItem(li.replace('_','->'))
if self.data.values['tracking_mode'] == 'forward':
self.lineComboBox.addItem(li.replace('_','->'))
else:
self.li = li.split('_')
self.li1 = self.li[::-1]
self.lineComboBox.addItem('->'.join(self.li1))
self.lineComboBox.currentIndexChanged.connect(self.update_quad_line)
def update_betax(self):
self.data.values['betax_meas'] = self.betaxSpinBox.value()
def update_betay(self):
self.data.values['betay_meas'] = self.betaySpinBox.value()
def update_alphax(self):
self.data.values['alphax_meas'] = self.alphaxSpinBox.value()
self.factor = 1
if self.data.values['tracking_mode'] == 'reverse':
self.factor = -1
self.data.values['alphax_meas'] = self.factor * self.alphaxSpinBox.value()
def update_alphay(self):
self.data.values['alphay_meas'] = self.alphaySpinBox.value()
self.factor = 1
if self.data.values['tracking_mode'] == 'reverse':
self.factor = -1
self.data.values['alphay_meas'] = self.factor * self.alphaySpinBox.value()
def update_twiss_err(self):
self.data.values['twiss_error'] = self.twissErrSpinBox.value() * 0.01
def update_quad_err(self):
......@@ -118,7 +134,14 @@ class fodo_gui(QMainWindow, Ui_MainWindow):
if self.timerstarted:
self.timer.stop()
self.timer.timeout.disconnect(self.send_twiss_signal)
def update_track_mode(self):
if self.trackForwardButton.isChecked():
self.data.values['tracking_mode'] = 'forward'
else:
self.data.values['tracking_mode'] = 'reverse'
self.add_lines()
def update_twiss_source(self):
self.data.values['twiss_source'] = self.twissSourceComboBox.currentText()
self.refresh_optics()
......@@ -131,7 +154,6 @@ class fodo_gui(QMainWindow, Ui_MainWindow):
self.closing.emit()
def send_twiss_signal(self):
print('bl')
if self.data.values['quads_type'] == 'prev':
self.undo_settings()
else:
......@@ -139,12 +161,11 @@ class fodo_gui(QMainWindow, Ui_MainWindow):
def set_quads(self):
for name, elem in self.quadwidgets.items():
if self.quadwidgets[name].isEnabled():
self.val = self.quadwidgets[name].value()
setattr(self.data.values['quad_dict'][name], 'Strength', self.val)
self.val = self.quadwidgets[name].value()
setattr(self.data.values['quad_dict'][name], 'Strength', self.val)
def update_quad_settings(self):
self.make_quad_error_widgets(self.data.values['quad_dict'].keys())
self.make_quad_error_widgets(list(self.data.values['quad_dict'].keys())[::-1])
for name, elem in self.data.values['quad_dict'].items():
if name in list(self.quadwidgets.keys()):
if self.first:
......@@ -204,18 +225,22 @@ class fodo_gui(QMainWindow, Ui_MainWindow):
self.twissSourceLabel.setText(self.data.values['measurement_point'] + ' Twiss parameters')
self.twissSourceComboBox.currentIndexChanged.disconnect(self.update_twiss_source)
self.twissSourceComboBox.clear()
if 'FEL' in self.line[1]:
self.linetouse = self.line[1]
self.twissSourceComboBox.addItem('OM')
self.twissSourceComboBox.addItem('Measured')
if self.data.values['tracking_mode'] == 'forward':
if 'FEL' in self.line[1]:
self.linetouse = self.line[1]
self.twissSourceComboBox.addItem('OM')
self.twissSourceComboBox.addItem('Measured')
else:
self.linetouse = self.line[0]
self.twissSourceComboBox.addItem('Measured')
else:
self.linetouse = self.line[0]
self.linetouse = self.line[1]
self.twissSourceComboBox.addItem('Measured')
self.twissSourceComboBox.currentIndexChanged.connect(self.update_twiss_source)
self.quadset1 = self.lattice_config[self.linetouse + '_QUADS1']
self.quadset2 = self.lattice_config[self.linetouse + '_QUADS2']
self.quadset3 = self.lattice_config[self.linetouse + '_QUADS3']
self.quads = self.quadset1 + self.quadset2 + self.quadset3
self.quads = self.quadset3[::-1] + self.quadset2[::-1] + self.quadset1[::-1]
self.data.values['quad_list'] = self.quads
self.update_twiss_source()
self.delete_quad_widgets()
......@@ -268,6 +293,8 @@ class fodo_gui(QMainWindow, Ui_MainWindow):
self.quadSelectHBox4, self.quadSelectHBox5, self.quadSelectHBox6]
self.line_to_sec = {}
self.quadsecs = self.lattice_config[self.data.values['line_start'] + '_QUAD_SECTIONS']
if self.data.values['tracking_mode'] == 'reverse':
self.quadsecs = self.quadsecs[::-1]
for li in range(len(self.quadsecs)):
self.line_to_sec.update({'_' + self.quadsecs[li]: self.quadselects[li]})
for qb in self.quadselects:
......
......@@ -43,6 +43,17 @@ class Ui_MainWindow(object):
Select FEL line and quads
'''
self.lineVBox = QtWidgets.QVBoxLayout()
self.trackModeGroupBox = QtWidgets.QGroupBox('Tracking mode')
self.trackModeHBox = QtWidgets.QHBoxLayout()
self.trackModeButtonGroup = QtWidgets.QButtonGroup()
self.trackForwardButton = QtWidgets.QRadioButton('Forward')
self.trackReverseButton = QtWidgets.QRadioButton('Reverse')
self.trackForwardButton.setChecked(True)
self.trackModeButtonGroup.addButton(self.trackForwardButton)
self.trackModeButtonGroup.addButton(self.trackReverseButton)
self.trackModeHBox.addWidget(self.trackForwardButton)
self.trackModeHBox.addWidget(self.trackReverseButton)
self.trackModeGroupBox.setLayout(self.trackModeHBox)
self.lineLabel = QtWidgets.QLabel('Select line')
self.lineComboBox = QtWidgets.QComboBox()
self.lineComboBox.addItem('')
......@@ -131,6 +142,7 @@ class Ui_MainWindow(object):
self.contPlotVBox.addLayout(self.contPlotHBox2)
self.contPlotGroupBox.setLayout(self.contPlotVBox)
self.lineVBox.addWidget(self.trackModeGroupBox)
self.lineVBox.addWidget(self.lineLabel)
self.lineVBox.addWidget(self.lineComboBox)
self.lineVBox.addWidget(self.settingsGroupBox)
......
......@@ -1899,9 +1899,7 @@ LH_01: Line = ( DR_LH.1, CM_LH.01, DR_LH.2, DR_LH.3, &
LH_01_REV: Line = (DR_LH.16, Q_LH.05, DR_LH.15a, BPM_LH.04, DR_LH.15, &
CHV_LH.03, DR_LH.14, LH_CHICANE_REV, DR_LH.13, BPM_LH.02, DR_LH.12, &
BAM_LH.01, DR_LH.11, BPM_LH.01, DR_LH.10, CHV_LH.02, DR_LH.9, MSCR_LH.01, &
MKP_LH, DR_LH.8, Q_LH.04, MKP_Q_LH.4, DR_LH.7, Q_LH.03, MKP_Q_LH.3, DR_LH.6, &
CHV_LH.01, DR_LH.5, Q_LH.02, MKP_Q_LH.2, DR_LH.4, Q_LH.01, MKP_Q_LH.1, DR_LH.3, &
DR_LH.2, CM_LH.01, DR_LH.1)
MKP_LH, DR_LH.8, Q_LH.04)
LH_02: Line = ( DR_LH.17, BPM_LH.05, DR_LH.18, MSCR_LH.04, DR_LH.19, &
Q_LH.06, DR_LH.20, DR_LH.21, CHV_LH.04, DR_LH.22, &
......@@ -1955,21 +1953,22 @@ MKP_MSCR_BC1.3, MSCR_BC01.03, DR_BC1.9, CHV_BC01.04, DR_BC1.9a, &
Q_BC01.08, DR_BC1.10, CHV_BC01.05, DR_BC1.11, &
Q_BC01.09, DR_BC1.12, BPM_BC01.04, DR_BC1.13 )
BC01_01_REV: line = (DR_BC1.13, BPM_BC01.04, BPM_BC01.04, &
BC01_01_REV_1: line = (DR_BC1.13, BPM_BC01.04, BPM_BC01.04, &
Q_BC01.09, DR_BC1.11, CHV_BC01.05, DR_BC1.10, Q_BC01.08, &
DR_BC1.9a, CHV_BC01.04, DR_BC1.9, MSCR_BC01.03, MKP_MSCR_BC1.3, &
DR_BC1.8b, DR_BC1.8a, MSCR_BC01.02, MKP_BC1DIAG, DR_BC1.7f, &
GCOL_BC01.01, DR_BC1.7e, CHV_BC01.03, DR_BC1.7d, Q_BC01.07, &
MKP_Q_BC1.7, DR_BC1.7c, BPM_BC01.03, DR_BC1.7b, Q_BC01.06, &
MKP_Q_BC1.6, DR_BC1.7, Q_BC01.05, MKP_Q_BC1.5, DR_BC1.6b, &
CHV_BC01.02, DR_BC1.6a, Q_BC01.04, MKP_Q_BC1.4, DR_BC1.6, &
Q_BC01.03, MKP_Q_BC1.3, DR_BC1.5b, DCAV_BC01.01, MK_LEDCAV, &
DR_BC1.5a, BPM_BC01.02, DR_BC1.4d, BAM_BC01.01, DR_BC1.4c, &
CHV_BC01.01, DR_BC1.4b, GBLM_BC01.01, CBLM_BC01.01, DR_BC1.4, &
MK_BC1, B_BC01.04, DR_BC1.3b, Q_BC01.02, DR_BC1.3a, MK_BC1, &
B_BC01.03, DR_BC1.2e, MSCR_BC01.01, DR_BC1.2d, BPM_BC01.01, &
DR_BC1.2c, DR_BC1.2b, SCRPH_BC01.01, DR_BC1.2a, B_BC01.02, &
DR_BC1.1b, Q_BC01.01, DR_BC1.1a, B_BC01.01)
GCOL_BC01.01, DR_BC1.7e, CHV_BC01.03, DR_BC1.7d, Q_BC01.07)
BC01_01_REV_2: line = ( B_BC01.01, DR_BC1.1a, Q_BC01.01, DR_BC1.1b, &
B_BC01.02, DR_BC1.2a, SCRPH_BC01.01, DR_BC1.2b, DR_BC1.2c, &
BPM_BC01.01, DR_BC1.2d, MSCR_BC01.01, DR_BC1.2e, B_BC01.03, &
MK_BC1, DR_BC1.3a, Q_BC01.02, DR_BC1.3b, B_BC01.04, MK_BC1, &
DR_BC1.4, CBLM_BC01.01, GBLM_BC01.01, DR_BC1.4b, CHV_BC01.01, &
DR_BC1.4c, BAM_BC01.01, DR_BC1.4d, BPM_BC01.02, DR_BC1.5a, &
MK_LEDCAV, DCAV_BC01.01, DR_BC1.5b, MKP_Q_BC1.3, Q_BC01.03, &
DR_BC1.6, MKP_Q_BC1.4, Q_BC01.04, DR_BC1.6a, CHV_BC01.02, &
DR_BC1.6b, MKP_Q_BC1.5, Q_BC01.05, DR_BC1.7, MKP_Q_BC1.6, &
Q_BC01.06, DR_BC1.7b, BPM_BC01.03, DR_BC1.7c, MKP_Q_BC1.7)
BC01_02: line = ( DR_BC1.14, BPM_BC01.05, DR_BC1.15, &
GCOL_BC01.02, DR_BC1.15a,&
......@@ -2058,6 +2057,8 @@ DR_TLS.7, GCOL_TLS.01, DR_TLS.8, &
Q_TLS.03, DR_TLS.9a, &
DR_TLS.9b, Q_TLS.04, DR_TLS.22 )
TLS_01_REV: LINE = (MKP_Q_TLS.2, DR_TLS.3, Q_TLS.01, DR_TLS.2, DR_TLS.1)
TLS_02: LINE = ( DR_TLS.10, &
MSCR_TLS.02, &
DR_TLS.11, CHV_TLS.02, DR_TLS.12a, PA, DR_TLS.12b, &
......@@ -3391,7 +3392,7 @@ LH_02, L01, BC01_01, DR_BC1.14, BPM_BC01.05, DR_BC1.15, &
GCOL_BC01.02, DR_BC1.15a, MSCR_BC01.04 ) !LH2BC01
TRANSPORT_BC012LH: LINE = (CH, MSCR_BC01.04, DR_BC1.15a, GCOL_BC01.02,&
DR_BC1.15, BPM_BC01.05, DR_BC1.14, BC01_01_REV, L01_REV, LH_02_REV, &
DR_BC1.15, BPM_BC01.05, DR_BC1.14, BC01_01_REV_2, L01_REV, LH_02_REV, &
DR_LH.16, Q_LH.05, DR_LH.15a, BPM_LH.04, DR_LH.15, CHV_LH.03, DR_LH.14, &
LH_CHICANE_REV, DR_LH.13, BPM_LH.02, DR_LH.12, BAM_LH.01, DR_LH.11, &
BPM_LH.01, DR_LH.10, CHV_LH.02, DR_LH.9, MSCR_LH.01, DR_LH.8, Q_LH.04)
......@@ -3589,17 +3590,20 @@ TRANSPORT_SFEL01_TLS_1: LINE = ( -SFEL01, -SCL, -TLS_02, DR_TLS.22, Q_TLS.04, &
DR_TLS.9b, DR_TLS.9a, Q_TLS.03, DR_TLS.8, GCOL_TLS.01, DR_TLS.7, MSCR_TLS.01, &
MKP_TLS, MK_TLS, DR_TLS.6, BPM_TLS.01, DR_TLS.5, CHV_TLS.01, DR_TLS.4, Q_TLS.02)
TRANSPORT_SFEL01_TLS: LINE = ( SFEL01_REV, SCL_REV, -TLS_02, DR_TLS.22, Q_TLS.04, &
DR_TLS.9b, DR_TLS.9a, Q_TLS.03, DR_TLS.8, GCOL_TLS.01, DR_TLS.7, MSCR_TLS.01, &
MKP_TLS, MK_TLS, DR_TLS.6, BPM_TLS.01, DR_TLS.5, CHV_TLS.01, DR_TLS.4, Q_TLS.02)
TRANSPORT_TLS_SFEL01_SH: LINE = ( Q_TLS.02, DR_TLS.4, CHV_TLS.01, DR_TLS.5, &
BPM_TLS.01, DR_TLS.6, MK_TLS, MKP_TLS, MSCR_TLS.01, &
DR_TLS.7, GCOL_TLS.01, DR_TLS.8, &
Q_TLS.03, DR_TLS.9a, DR_TLS.9b, Q_TLS.04, DR_TLS.22, &
TLS_02, SCL, SFEL01_SH )
LINAC: line = ( CH, LH_01, LH_02, &
L01, BC01_01, BC01_02, &
L02, L03, BC02, L04 )
TRANSPORT_BC1_LH: LINE = ( -BC01_01_REV_2, -L01, -LH_02, LH_01_REV)
TRANSPORT_TLS_BC1: LINE = ( TLS_01_REV, -L04, -BC02, -L03, -L02, -BC01_02, BC01_01_REV_1)
TRANSPORT_SFEL01_TLS_SH: LINE = ( SFEL01_REV_SH, SCL_REV, -TLS_02, DR_TLS.22, Q_TLS.04, &
TRANSPORT_FEL01_TLS: LINE = ( SFEL01_REV_SH, SCL_REV, -TLS_02, DR_TLS.22, Q_TLS.04, &
DR_TLS.9b, DR_TLS.9a, Q_TLS.03, DR_TLS.8, GCOL_TLS.01, DR_TLS.7, MSCR_TLS.01, &
MKP_TLS, MK_TLS, DR_TLS.6, BPM_TLS.01, DR_TLS.5, CHV_TLS.01, DR_TLS.4, Q_TLS.02)
......