Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0992667ded | |||
| 9055baad4a | |||
| 7267bc30e3 | |||
| 14ba366861 |
+51
-12
@@ -73,8 +73,13 @@ class AnalysisProcedure(QObject):
|
||||
self.injector_2 = self.parent.injector_2
|
||||
self.ring_cyclotron = self.parent.ring_cyclotron
|
||||
self.accelerator_list = self.parent.accelerator_list
|
||||
|
||||
self.reverse_input_signal = False
|
||||
self.reverse_output_signal = True
|
||||
# Declare input parameters
|
||||
self.input_parameters = self.parent.input_parameters
|
||||
|
||||
|
||||
self.input_data = None
|
||||
self.debug = False
|
||||
self.log_level = logging.INFO
|
||||
@@ -87,9 +92,9 @@ class AnalysisProcedure(QObject):
|
||||
self.n_turns = 0
|
||||
# self.t_stepsize = 0.000000019750043 #0.00000002
|
||||
self.rf_freq = 50.6328 # 10**6
|
||||
self.rf_sample = 3.0 # 10**6
|
||||
self.rf_sample = 3036 # 10**6
|
||||
self.pulse_stepsize = 1 / (self.rf_freq * 10**6)
|
||||
self.t_stepsize = 1 / (self.rf_sample * 10**9)
|
||||
self.t_stepsize = 1 / (self.rf_sample * 10**6)
|
||||
self.t_interval = math.ceil(self.pulse_stepsize / self.t_stepsize)
|
||||
|
||||
self.correlation_peak_diff = 0.0
|
||||
@@ -149,6 +154,10 @@ class AnalysisProcedure(QObject):
|
||||
else:
|
||||
self.loglevel = self.input_data['loggingLevel']
|
||||
|
||||
|
||||
self.reverse_input_signal = False
|
||||
self.reverse_output_signal = True
|
||||
|
||||
self.logger.setLevel(self.logging.getLevelName(self.loglevel))
|
||||
|
||||
if 'debug' in self.input_data.keys():
|
||||
@@ -166,12 +175,13 @@ class AnalysisProcedure(QObject):
|
||||
mess = 'Sampling rate changed to 2.5 MHz for oscilloscope data'
|
||||
self.parent.trigger_log_message.emit(
|
||||
MsgSeverity.INFO.name, _pymodule, utils.line_no(), mess, {})
|
||||
else:
|
||||
self.rf_sample = float(self.input_data['freqsampling'])
|
||||
#else:
|
||||
# self.rf_sample = float(self.input_data['freqsampling'])
|
||||
|
||||
try:
|
||||
self.accelerator = self.input_data['accelerator']
|
||||
|
||||
print (f'Accelerator: {self.accelerator}', flush=True)
|
||||
|
||||
self.harmonic_no = float(
|
||||
self.input_data[self.accelerator]['harmonic'])
|
||||
self.dt_cable = float(
|
||||
@@ -182,7 +192,14 @@ class AnalysisProcedure(QObject):
|
||||
# self.input_data[self.accelerator_peak_search][
|
||||
# 'minimumCurrent'])
|
||||
|
||||
print (f'Accelerator: {self.accelerator}', flush=True)
|
||||
|
||||
self.reverse_output_signal = bool(
|
||||
self.input_data[self.accelerator_peak_search]['reverseOutput'])
|
||||
self.reverse_input_signal = bool(
|
||||
self.input_data[self.accelerator_peak_search]['reverseInput'])
|
||||
|
||||
|
||||
|
||||
if self.injector_2 in self.accelerator:
|
||||
self.mod_freq = float(
|
||||
self.input_data[self.accelerator]['freqmod']) # * 10**9 GHz
|
||||
@@ -195,8 +212,8 @@ class AnalysisProcedure(QObject):
|
||||
self.logger.info(f'Simulation {self.simulation}')
|
||||
self.logger.info(
|
||||
f'RF Frequency (10**6 Hz) {self.rf_freq}')
|
||||
self.logger.info(
|
||||
f'RF Sampling (10**9 Hz) {self.rf_sample}')
|
||||
#self.logger.info(
|
||||
# f'RF Sampling (10**9 Hz) {self.rf_sample}')
|
||||
self.logger.info(f'Harmonic No. {self.harmonic_no}')
|
||||
self.logger.info(f'dT Cable {self.dt_cable}')
|
||||
self.logger.info(f'dN Pickup {self.dn_pickup}')
|
||||
@@ -431,6 +448,17 @@ class AnalysisProcedure(QObject):
|
||||
self.check_status_list(_pymodule, 'getScalarList',
|
||||
pv_list, status_list, utils.line_no())
|
||||
|
||||
#
|
||||
pv_rf_sample = self.settings.data['PV'][self.accelerator]['samplingFreq']
|
||||
if not self.simulation:
|
||||
self.rf_sample = self.cafe.getCache(pv_rf_sample)
|
||||
|
||||
self.t_stepsize = 1 / (self.rf_sample * 10**6)
|
||||
self.t_interval = math.ceil(self.pulse_stepsize / self.t_stepsize)
|
||||
|
||||
|
||||
print(f'rf_sample = {self.rf_sample}', flush = True)
|
||||
|
||||
# Retrieve
|
||||
pv_entry_current = self.settings.data['PV'][self.accelerator]['IEntry']
|
||||
|
||||
@@ -499,7 +527,7 @@ class AnalysisProcedure(QObject):
|
||||
|
||||
# returns indices of peaks, and dictionary of properties
|
||||
y1_peaks_pre = signal.find_peaks(self.y1_sample, height=height,
|
||||
distance=10)
|
||||
distance=self.signal_min_peak_distance)
|
||||
|
||||
print(
|
||||
'peak length==>', len(
|
||||
@@ -515,7 +543,7 @@ class AnalysisProcedure(QObject):
|
||||
y1_height = min_y1_p * 0.9 # y1_peaks_avg * 0.726667
|
||||
|
||||
y2_peaks_pre = signal.find_peaks(self.y2_sample, height=height,
|
||||
distance=10)
|
||||
distance=self.signal_min_peak_distance)
|
||||
##y2_peaks_avg = np.average(y2_peaks_pre[1]['peak_heights'])
|
||||
|
||||
min_y2_p = np.min(y2_peaks_pre[1]['peak_heights'])
|
||||
@@ -527,9 +555,11 @@ class AnalysisProcedure(QObject):
|
||||
print(f'AVG = {y1_height}, {y2_height}', flush=True)
|
||||
|
||||
y1_peaks = signal.find_peaks(
|
||||
self.y1_sample, height=y1_height, distance=10)
|
||||
self.y1_sample, height=y1_height,
|
||||
distance=self.signal_min_peak_distance)
|
||||
y2_peaks = signal.find_peaks(
|
||||
self.y2_sample, height=y2_height, distance=10)
|
||||
self.y2_sample, height=y2_height,
|
||||
distance=self.signal_min_peak_distance)
|
||||
print((f'PEAKS==> {y1_peaks}, {y2_peaks},' +
|
||||
f'{len(y1_peaks[0])}, {len(y2_peaks[0])}'), flush=True)
|
||||
print(y1_peaks[1]['peak_heights'], flush=True)
|
||||
@@ -676,6 +706,15 @@ class AnalysisProcedure(QObject):
|
||||
print(f'y1 sample length = {len(self.y1_sample)}')
|
||||
print(f'y2 sample length = {len(self.y2_sample)}', flush=True)
|
||||
|
||||
|
||||
if self.reverse_input_signal:
|
||||
for i in range(0, len(self.y1_sample)):
|
||||
self.y1_sample[i] = self.y1_sample[i] * (-1)
|
||||
|
||||
if self.reverse_output_signal:
|
||||
for i in range(0, len(self.y2_sample)):
|
||||
self.y2_sample[i] = self.y2_sample[i] * (-1)
|
||||
|
||||
#series = pd.Series(self.y1_sample)
|
||||
#self.y1_sample = (series * (-1)).tolist()
|
||||
#self.y1_sample = (series).tolist()
|
||||
|
||||
+20
-11
@@ -40,11 +40,11 @@ class AppGui(QWidget):
|
||||
self.input_labels = self.parent.input_labels
|
||||
self.expert_parameters = self.parent.expert_parameters
|
||||
self.gui_frame.expert_parameters_group.setFixedWidth(280)
|
||||
self.gui_frame.expert_parameters_group.setFixedHeight(350)
|
||||
self.gui_frame.expert_parameters_group.setFixedHeight(430)
|
||||
self.gui_frame.operator_parameters_group.setFixedWidth(260)
|
||||
self.gui_frame.operator_parameters_group.setFixedHeight(400)
|
||||
self.gui_frame.measurement_tab_wgt.setFixedWidth(516)
|
||||
self.gui_frame.measurement_tab_wgt.setFixedHeight(480)
|
||||
self.gui_frame.measurement_tab_wgt.setFixedHeight(580)
|
||||
self.gui_frame.operator_wgt.setFixedHeight(640)
|
||||
# self.gui_frame.expert_wgt.setFixedHeight(240)
|
||||
self.gui_frame.expert_wgt.layout().addWidget(
|
||||
@@ -61,11 +61,12 @@ class AppGui(QWidget):
|
||||
self.daq_wgt.setCurrentIndex(self.parent.default_idx)
|
||||
self.daq_wgt.currentChanged.emit(self.parent.default_idx)
|
||||
|
||||
|
||||
# Accelerator Current
|
||||
self.current_wgt = self.accelerator_current_group_qtabwidget(
|
||||
widget_type='QStackedWidget')
|
||||
self.gui_frame.measurement_layout.addWidget(
|
||||
self.current_wgt, 1, 1, 1, 1, alignment=Qt.AlignTop)
|
||||
self.current_wgt, 1, 1, 1, 1, alignment=Qt.AlignTop|Qt.AlignCenter)
|
||||
|
||||
self.current_wgt.setCurrentIndex(self.parent.default_idx)
|
||||
self.current_wgt.currentChanged.emit(self.parent.default_idx)
|
||||
@@ -131,8 +132,8 @@ class AppGui(QWidget):
|
||||
accel_wgt_dict[accel] = self.daq_group(accel)
|
||||
accel_tab_widget.addWidget(accel_wgt_dict[accel])
|
||||
|
||||
accel_tab_widget.setFixedWidth(320)
|
||||
accel_tab_widget.setFixedHeight(160)
|
||||
accel_tab_widget.setFixedWidth(380)
|
||||
#accel_tab_widget.setFixedHeight(160)
|
||||
return accel_tab_widget
|
||||
|
||||
def daq_group(self, accel):
|
||||
@@ -145,26 +146,34 @@ class AppGui(QWidget):
|
||||
pv_daq.append(self.settings.data['PV'][accel]['daqTrigger'])
|
||||
pv_daq.append(self.settings.data['PV'][accel]['daqReady'])
|
||||
pv_daq.append(self.settings.data['PV'][accel]['daqErrorCount'])
|
||||
pv_daq.append(self.settings.data['PV'][accel]['daqWindow'])
|
||||
pv_daq.append(self.settings.data['PV'][accel]['samplingFreq'])
|
||||
pv_daq.append(self.settings.data['PV'][accel]['samplingNum'])
|
||||
self.cafe.openPrepare()
|
||||
self.cafe.open(pv_daq)
|
||||
self.cafe.openNowAndWait(1.0)
|
||||
|
||||
|
||||
vbox.addWidget(QLabel('DAQ Trigger:'), 0, 0)
|
||||
vbox.addWidget(QLabel('DAQ Count:'), 1, 0)
|
||||
vbox.addWidget(QLabel('Error Count:'), 2, 0)
|
||||
vbox.addWidget(QLabel('Read Error Count:'), 2, 0)
|
||||
vbox.addWidget(QLabel('DAQ Window:'), 3, 0)
|
||||
vbox.addWidget(QLabel('Sampling Freq:'), 4, 0)
|
||||
vbox.addWidget(QLabel('No Samples:'), 5, 0)
|
||||
|
||||
pv_widget = [None] * len(pv_daq)
|
||||
for i, pv in enumerate(pv_daq):
|
||||
pv_widget[i] = CAQLabel(self, pv_name=pv)
|
||||
pv_widget[i] = CAQLabel(self, pv_name=pv, show_units=True)
|
||||
vbox.addWidget(pv_widget[i], i, 1)
|
||||
fwidth = 40 if 'ERR-CNT' not in pv else 60
|
||||
#fwidth = 100 if 'ERR-CNT' not in pv else 100
|
||||
fwidth = 120 if 'SMP' in pv or 'WINDOW' in pv else 60
|
||||
pv_widget[i].setFixedWidth(fwidth)
|
||||
|
||||
vbox.setContentsMargins(9, 19, 9, 9)
|
||||
vbox.setSpacing(5)
|
||||
vbox.setAlignment(Qt.AlignTop | Qt.AlignHCenter)
|
||||
group_box.setFixedWidth(220)
|
||||
group_box.setFixedHeight(140)
|
||||
group_box.setFixedWidth(260)
|
||||
group_box.setFixedHeight(240)
|
||||
group_box.setFont(self.font_gui)
|
||||
group_box.setAlignment(int(Qt.AlignTop | Qt.AlignHCenter))
|
||||
group_box.setLayout(vbox)
|
||||
@@ -231,7 +240,7 @@ class AppGui(QWidget):
|
||||
vbox.setContentsMargins(9, 19, 9, 9)
|
||||
vbox.setSpacing(5)
|
||||
vbox.setAlignment(Qt.AlignTop | Qt.AlignHCenter)
|
||||
group_box.setFixedWidth(220)
|
||||
group_box.setFixedWidth(260)
|
||||
group_box.setFixedHeight(100)
|
||||
group_box.setFont(self.font_gui)
|
||||
group_box.setAlignment(int(Qt.AlignTop | Qt.AlignHCenter))
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
"daqTrigger": "ZWSGA-CECL-TCINJ:TRG-SINGLE:PROC",
|
||||
"daqReady": "ZWSGA-CECL-TCINJ:SCOPE-ACQ-CNT",
|
||||
"daqErrorCount": "ZWSGA-CECL-TCINJ:ERR-CNT",
|
||||
"samplingFreq": "ZWSGA-CECL-TCINJ:SCOPE-SMP-FREQ",
|
||||
"samplingNum": "ZWSGA-CECL-TCINJ:SCOPE-SMP-NUM",
|
||||
"daqWindow": "ZWSGA-CECL-TCINJ:SCOPE-ACQ-WINDOW",
|
||||
"wfEntry": "ZWSGA-CECL-TCINJ:SCOPE-CH0",
|
||||
"wfExit": "ZWSGA-CECL-TCINJ:SCOPE-CH1",
|
||||
"IEntry": "ENTRY:IST:1",
|
||||
@@ -27,6 +30,9 @@
|
||||
"daqTrigger": "ZWSGA-CECL-TCRING:TRG-SINGLE.PROC",
|
||||
"daqReady": "ZWSGA-CECL-TCRING:SCOPE-ACQ-CNT",
|
||||
"daqErrorCount": "ZWSGA-CECL-TCRING:ERR-CNT",
|
||||
"samplingFreq": "ZWSGA-CECL-TCRING:SCOPE-SMP-FREQ",
|
||||
"samplingNum": "ZWSGA-CECL-TCRING:SCOPE-SMP-NUM",
|
||||
"daqWindow": "ZWSGA-CECL-TCRING:SCOPE-ACQ-WINDOW",
|
||||
"wfEntry": "ZWSGA-CECL-TCRING:SCOPE-CH0",
|
||||
"wfExit": "ZWSGA-CECL-TCRING:SCOPE-CH1",
|
||||
"IEntry": "MNC3:IST:2",
|
||||
@@ -71,21 +77,23 @@
|
||||
"peakHeight": {"flag": 1, "data":{ "widget": "QLineEdit", "text" :"Min peak height:", "value" : 50 }},
|
||||
"peakDistance": {"flag": 1, "data":{ "widget": "QLineEdit", "text" :"Min peak distance: ", "value" : 10 }},
|
||||
"correlationPeakDifference": {"flag": 1, "data":{ "widget": "QLineEdit", "text" :"Min dcorr(peak1-peak2):", "value" : 0.01}},
|
||||
"minimumCurrent": {"flag": 1, "data":{ "widget": "QLineEdit", "text" :"Inj2 I_min (mA):", "value" : "0.100"}}
|
||||
"minimumCurrent": {"flag": 1, "data":{ "widget": "QLineEdit", "text" :"Inj2 I_min (mA):", "value" : "0.100"}},
|
||||
"reverseInput": {"flag": 1, "data":{ "widget": "QCheckBox", "text" :"Reverse Input Polarity: ", "value" : 1, "orientation":"RightToLeft"}},
|
||||
"reverseOutput": {"flag": 1, "data":{ "widget": "QCheckBox", "text" :"Reverse Output Polarity: ", "value" : 1, "orientation":"RightToLeft"}}
|
||||
},
|
||||
" Cyclotron ": {
|
||||
"peakHeight": {"flag": 1, "data":{ "widget": "QLineEdit", "text" :"Min peak height:", "value" : 50 }},
|
||||
"peakHeight": {"flag": 1, "data":{ "widget": "QLineEdit", "text" :"Min peak height:", "value" : 100 }},
|
||||
"peakDistance": {"flag": 1, "data":{ "widget": "QLineEdit", "text" :"Min peak distance: ", "value" : 10 }},
|
||||
"correlationPeakDifference": {"flag": 1, "data":{ "widget": "QLineEdit", "text" :"Min dcorr(peak1-peak2):", "value" : 0.01 }},
|
||||
"minimumCurrent": {"flag": 1, "data":{ "widget": "QLineEdit", "text" :"Inj2 I_min (mA):", "value" : "0.100"}}
|
||||
"correlationPeakDifference": {"flag": 1, "data":{ "widget": "QLineEdit", "text" :"Min dcorr(peak1-peak2):", "value" : 0.005 }},
|
||||
"minimumCurrent": {"flag": 1, "data":{ "widget": "QLineEdit", "text" :"Inj2 I_min (mA):", "value" : "0.100"}},
|
||||
"reverseInput": {"flag": 1, "data":{ "widget": "QCheckBox", "text" :"Reverse Input Polarity: ", "value" : 1, "orientation":"RightToLeft"}},
|
||||
"reverseOutput": {"flag": 1, "data":{ "widget": "QCheckBox", "text" :"Reverse Output Polarity: ", "value" : 1, "orientation":"RightToLeft"}}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
"Parameters":{
|
||||
"freqrf" : {"flag": 1, "data":{ "widget": "QLineEdit", "text" :"RF Freq (10^6/s):", "value" : 50.6328 }},
|
||||
"freqsampling" : {"flag": 1, "data":{ "widget": "QLineRead", "text" :"Sampling Freq (GHz):", "value" : 3.0 }},
|
||||
|
||||
"freqrf" : {"flag": 1, "data":{ "widget": "QLineEdit", "text" :"RF Freq (10^6/s):", "value" : 50.6328 }},
|
||||
"drawLine" : {"flag" : 1, "data":{ "widget": "QHLine", "text" : "None", "value" : "None"}},
|
||||
"accelerator" : {"flag" : 1, "data":{ "widget": "QTabWidget", "text" : "Accelerator: ",
|
||||
"link" : "QTabAccelerator", "value" : 1,
|
||||
|
||||
Reference in New Issue
Block a user