I also made a GUI for ISC photodiodes, which can be used to monitor DC and RF signals, and to tune demodulation phases (screenshot attached).
Latest stable version live in /virgoDev/PyIscGui/.
You can open the GUI by> python ISCphotodiodes.py
Details:
- Use _phi0 channels to tune the demodulation phase (_phi0_offset for SSFS_B4)
- You can also press Enter/Return key to apply values (you don't have to click "Apply" button). This is also true for LSCoverview.py and ASCoverview.py.
- "datadisplay" buttons show the data display which can be used to tune demodulation phases. The configuraton file for the data display live in /olusers/virgorun/ISC/dataDisplay.
- It also shows the current values of channels to select PD1 and PD2 so that it is apparent which photodiodes are used and what gain we have between PD1/PD2 and the combined signal sent to LSC. To get these channels with ConnectOnline, I had to connect with something like 'V1:SNEB_B7' (not 'V1:SNEB'). To monitor the weight channels, I added/modified the following lines in Acl configurations files:SNEB_Photodiodes.cfg line 265
ACL_SMS "SNEB_" B7_6MHz_I B7_6MHz_Q B7_56MHz_I B7_56MHz_Q B7_DC;
SWEB_Photodiodes.cfg line 250
ACL_SMS "SWEB_" B8_6MHz_I B8_6MHz_Q B8_56MHz_I B8_56MHz_Q B8_DC;
SIB2_Photodiodes.cfg line 423
ACL_SMS "SIB2_" B2_6MHz_I B2_6MHz_Q B2_8MHz_I B2_8MHz_Q B2_DC;
SDB2_Photodiodes.cfg line 779-782
ACL_SMS "SDB2_" B1p_DC_20kHz B1p_6MHz_I B1p_6MHz_Q B1p_8MHz_I B1p_8MHz_Q B1p_56MHz_I B1p_56MHz_Q;
ACL_SMS "SDB2_" B1s1_DC_20kHz B1s1_6MHz_I B1s1_6MHz_Q;
ACL_SMS "SDB2_" B1s2_DC_20kHz;
ACL_SMS "SDB2_" B5_DC_20kHz B5_6MHz_I B5_6MHz_Q;
SPRB_Photodiodes.cfg line 428
ACL_DAQ "SPRB_" "" B4_PD_select
- Photodiode channels are not symmetric. Very confusing. Below are the list of exceptions;
- SNEB_B7_PD#_DC_100Hz and SWEB_B8_PD#_DC_100Hz exists, but not _DC
- SPRB_B4_PD_select is used for PD selection, not weights
- PD#_Blended signals, not PD#_DC are used for SNEB_B7, SWEB_B8, SDB2_B5, SDB2_B1s1, SDB2_B1s2
- SNEB_B7_PD1_56MHz, SWEB_B8_PD2_56MHz, SIB2_B2_PD1_8MHz, SDB2_B5_PD1_6MHz, SDB2_B1s1_PD2, SDB2_B1s2_PD2 channels do not exist
- SIB2_B2_PD1_6MHz, SIB2_B2_PD1_DC and SDB2_B5_PD1_DC exist, but weights do not exist
- for SDB2 PDs, weight channels are *_PD#_DC_20kHz_*, not *_PD#_DC_*
IscGui.py for parsing and showing GUI:
I also made a script IscGui.py which parses the Qt GUI configuration file (*.ui) and show the GUI. For example, you can also open ISC Photodiodes screen with> python IscGui.py ISCphotodiodes.ui
This is useful because you only need to make .ui file with Qt Designer to make a new GUI. However, it can only parse limited widgets with certain names, and give fixed functions to them. Below are the widgets IscGui.py can handle.Widget class Name Function
QLineEdit {channelname}_value show the current value (QTextEdit for showing current filter name)
QPushButton {channelname}_apply apply the requested value in QLineEdit explained below
QLineEdit {channelname]_request enter the requested value
QPushButton {channelname}_filter_apply apply the filter requested in QTextEdit explained below
QTextEdit {channelname}_filter_request enter the requested filter
QPushButton {channelname}_weight_apply apply the weight for the input channel in QComboBox with the requested weight in QLineEdit explained below
QComboBox {channelname}_channel_request select the requested input channel
QTextEdit {channelname}_weight_request enter the requested weight
QLineEdit {channelname}_channel_1 or _2 show the input channels which has the largest and second largest weight
QLineEdit {channelname}_weight_1 or _2 show the largest and second largest weight
I think this is useful to initiate GUIs (but the final versions should be different python codes for different .ui files for maintenance point of view).