class Graphs_Panel(JPanel): def __init__(self,transverse_twiss_analysis_Controller): self.transverse_twiss_analysis_Controller = transverse_twiss_analysis_Controller self.setLayout(GridLayout(3,1)) #----etched border etched_border = BorderFactory.createEtchedBorder() self.setBorder(etched_border) self.gpanel_hor = FunctionGraphsJPanel() self.gpanel_ver = FunctionGraphsJPanel() self.gpanel_lon = FunctionGraphsJPanel() self.gpanel_hor.setLegendButtonVisible(true) self.gpanel_ver.setLegendButtonVisible(true) self.gpanel_lon.setLegendButtonVisible(true) self.gpanel_hor.setName("Horizontal Size") self.gpanel_hor.setAxisNames("pos, [m]","Size, [mm]") self.gpanel_ver.setName("Vertical Size") self.gpanel_ver.setAxisNames("pos, [m]","Size, [mm]") self.gpanel_lon.setName("Longitudinal Size, RF Freq. = 402.5 MHz") self.gpanel_lon.setAxisNames("pos, [m]","Size, [deg]") self.gpanel_hor.setBorder(etched_border) self.gpanel_ver.setBorder(etched_border) self.gpanel_lon.setBorder(etched_border) self.add(self.gpanel_hor) self.add(self.gpanel_ver) self.add(self.gpanel_lon) def removeAllGraphData(self): self.gpanel_hor.removeAllGraphData() self.gpanel_ver.removeAllGraphData() self.gpanel_lon.removeAllGraphData() def updateGraphData(self): self.gpanel_hor.removeAllGraphData() self.gpanel_ver.removeAllGraphData() self.gpanel_lon.removeAllGraphData() accStatesKeeper = self.transverse_twiss_analysis_Controller.accStatesKeeper accStatesKeeper.updateGraphData() accState = null for accState0 in accStatesKeeper.getAccStatesArr(): if(accState0.isSelected()): accState = accState0 break if(accState == null): return accState.updateGraphData() self.gpanel_hor.addGraphData(accState.gd_exp_hor) self.gpanel_hor.addGraphData(accState.gd_model_hor) self.gpanel_ver.addGraphData(accState.gd_exp_ver) self.gpanel_ver.addGraphData(accState.gd_model_ver) self.gpanel_lon.addGraphData(accState.gd_model_lon) #---set up vertical lines self.gpanel_hor.removeHorizontalValues() self.gpanel_ver.removeHorizontalValues() self.gpanel_lon.removeHorizontalValues() self.gpanel_hor.removeVerticalValues() self.gpanel_ver.removeVerticalValues() self.gpanel_lon.removeVerticalValues() accSeq = self.transverse_twiss_analysis_Controller.linac_wizard_document.accSeq quads = accSeq.getAllNodesWithQualifier((AndTypeQualifier().and((OrTypeQualifier()).or(Quadrupole.s_strType))).andStatus(true)) cavs = accSeq.getAllNodesWithQualifier((AndTypeQualifier().and((OrTypeQualifier()).or(RfCavity.s_strType))).andStatus(true)) for quad in quads: pos = accSeq.getPosition(quad) self.gpanel_hor.addVerticalLine(pos,Color.BLACK) self.gpanel_ver.addVerticalLine(pos,Color.BLACK) self.gpanel_lon.addVerticalLine(pos,Color.BLACK) for cav in cavs: pos = accSeq.getPosition(cav) self.gpanel_hor.addVerticalLine(pos,Color.RED) self.gpanel_ver.addVerticalLine(pos,Color.RED) self.gpanel_lon.addVerticalLine(pos,Color.RED)
class WS_Data_Analysis_Controller: """ This controller manages the WS data analysis. Its panel is in the WS_LW_Acquisition_Controller panel. """ def __init__(self,ws_lw_acquisition_controller): self.ws_lw_acquisition_controller = ws_lw_acquisition_controller self.local_gauss_fitter = Local_Gauss_Fitter() self.main_panel = JPanel(BorderLayout()) self.ws_records_table_model = WS_Records_Table_Model() #----etched border etched_border = BorderFactory.createEtchedBorder() #---make the WS_Records_JTable + Graph Panel self.records_table = JTable(self.ws_records_table_model) self.records_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.records_table.setFillsViewportHeight(true) #----set up records_table columns width columnModel = self.records_table.getColumnModel() columnModel.getColumn(0).setPreferredWidth(30) columnModel.getColumn(1).setPreferredWidth(160) columnModel.getColumn(2).setPreferredWidth(40) columnModel.getColumn(3).setPreferredWidth(40) columnModel.getColumn(4).setPreferredWidth(80) columnModel.getColumn(5).setPreferredWidth(70) columnModel.getColumn(6).setPreferredWidth(70) #--------------------------------------------------- records_panel = JPanel(BorderLayout()) records_panel.add(JScrollPane(self.records_table), BorderLayout.CENTER) knobs_gauss_panel = JPanel(BorderLayout()) records_panel.add(knobs_gauss_panel, BorderLayout.SOUTH) records_panel.setBorder(etched_border) #---records knobs --------------------------------------------- records_knobs_panel = JPanel(FlowLayout(FlowLayout.CENTER,5,5)) guess_and_fit_button = JButton("Guess and Fit") analysis_all_button = JButton("G&F All") fit_button = JButton("Fit") fit_all_button = JButton("Fit All") send_to_twiss_button = JButton("Send to Twiss Analysis") records_knobs_panel.add(guess_and_fit_button) records_knobs_panel.add(analysis_all_button) records_knobs_panel.add(fit_button) records_knobs_panel.add(fit_all_button) records_knobs_panel.add(send_to_twiss_button) guess_and_fit_button.addActionListener(Guess_And_Fit_Listener(self.ws_lw_acquisition_controller)) fit_button.addActionListener(Fit_Listener(self.ws_lw_acquisition_controller)) fit_all_button.addActionListener(Fit_All_Listener(self.ws_lw_acquisition_controller)) analysis_all_button.addActionListener(Guess_And_Fit_All_Listener(self.ws_lw_acquisition_controller)) send_to_twiss_button.addActionListener(SendToAnalysis_Listener(self.ws_lw_acquisition_controller)) self.gauss_fit_param_panel = GaussFitDataPanel() knobs_gauss_panel.add(records_knobs_panel, BorderLayout.NORTH) knobs_gauss_panel.add(self.gauss_fit_param_panel, BorderLayout.SOUTH) #--------------------------------------------------------- self.record_analysis_panel = JPanel(BorderLayout()) border = BorderFactory.createTitledBorder(etched_border,"WS/LW Wave Form Analysis") self.record_analysis_panel.setBorder(border) self.record_analysis_panel.add(records_panel, BorderLayout.WEST) self.gpanel_WF = FunctionGraphsJPanel() self.gpanel_WF.setLegendButtonVisible(true) self.gpanel_WF.setChooseModeButtonVisible(true) self.gpanel_WF.setName("Profile") self.gpanel_WF.setAxisNames("pos, [mm]","Amp, [arb. units]") self.gpanel_WF.setBorder(etched_border) self.gpanel_WF.addVerticalLine(-1.0e+30,Color.red) self.gpanel_WF.addVerticalLine(+1.0e+30,Color.red) self.gpanel_WF.setVerLinesButtonVisible(true) self.gpanel_WF.addDraggedVerLinesListener(Position_Limits_Listener(self.ws_lw_acquisition_controller)) self.record_analysis_panel.add(self.gpanel_WF, BorderLayout.CENTER) self.main_panel.add(self.record_analysis_panel, BorderLayout.CENTER) #---set up Listeners self.records_table.getSelectionModel().addListSelectionListener(WS_Record_Table_Selection_Listener(self.ws_lw_acquisition_controller)) def setDataToGraphPanel(self,ws_record): self.gpanel_WF.removeAllGraphData() self.gpanel_WF.addGraphData(ws_record.gd_wf) self.gpanel_WF.addGraphData(ws_record.gd_fit_wf)
class WS_Data_Analysis_Controller: """ This controller manages the WS data analysis. Its panel is in the WS_LW_Acquisition_Controller panel. """ def __init__(self,ws_lw_acquisition_controller): self.ws_lw_acquisition_controller = ws_lw_acquisition_controller self.local_gauss_fitter = Local_Gauss_Fitter() self.main_panel = JPanel(BorderLayout()) self.ws_records_table_model = WS_Records_Table_Model() #----etched border etched_border = BorderFactory.createEtchedBorder() #---make the WS_Records_JTable + Graph Panel self.records_table = JTable(self.ws_records_table_model) self.records_table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) self.records_table.setFillsViewportHeight(true) #----set up records_table columns width columnModel = self.records_table.getColumnModel() columnModel.getColumn(0).setPreferredWidth(30) columnModel.getColumn(1).setPreferredWidth(160) columnModel.getColumn(2).setPreferredWidth(40) columnModel.getColumn(3).setPreferredWidth(40) columnModel.getColumn(4).setPreferredWidth(80) columnModel.getColumn(5).setPreferredWidth(70) columnModel.getColumn(6).setPreferredWidth(70) #--------------------------------------------------- records_panel = JPanel(BorderLayout()) records_panel.add(JScrollPane(self.records_table), BorderLayout.CENTER) knobs_gauss_panel = JPanel(BorderLayout()) records_panel.add(knobs_gauss_panel, BorderLayout.SOUTH) records_panel.setBorder(etched_border) #---records knobs --------------------------------------------- records_knobs_panel = JPanel(FlowLayout(FlowLayout.CENTER,5,5)) guess_and_fit_button = JButton("Guess and Fit") analysis_all_button = JButton("G&F All") fit_button = JButton("Fit") fit_all_button = JButton("Fit All") send_to_twiss_button = JButton("Send to Twiss Analysis") records_knobs_panel.add(guess_and_fit_button) records_knobs_panel.add(analysis_all_button) records_knobs_panel.add(fit_button) records_knobs_panel.add(fit_all_button) records_knobs_panel.add(send_to_twiss_button) guess_and_fit_button.addActionListener(Guess_And_Fit_Listener(self.ws_lw_acquisition_controller)) fit_button.addActionListener(Fit_Listener(self.ws_lw_acquisition_controller)) fit_all_button.addActionListener(Fit_All_Listener(self.ws_lw_acquisition_controller)) analysis_all_button.addActionListener(Guess_And_Fit_All_Listener(self.ws_lw_acquisition_controller)) send_to_twiss_button.addActionListener(SendToAnalysis_Listener(self.ws_lw_acquisition_controller)) self.gauss_fit_param_panel = GaussFitDataPanel() knobs_gauss_panel.add(records_knobs_panel, BorderLayout.NORTH) knobs_gauss_panel.add(self.gauss_fit_param_panel, BorderLayout.SOUTH) #--------------------------------------------------------- self.record_analysis_panel = JPanel(BorderLayout()) border = BorderFactory.createTitledBorder(etched_border,"WS/LW Wave Form Analysis") self.record_analysis_panel.setBorder(border) self.record_analysis_panel.add(records_panel, BorderLayout.WEST) self.gpanel_WF = FunctionGraphsJPanel() self.gpanel_WF.setLegendButtonVisible(true) self.gpanel_WF.setChooseModeButtonVisible(true) self.gpanel_WF.setName("Profile") self.gpanel_WF.setAxisNames("pos, [mm]","Amp, [arb. units]") self.gpanel_WF.setBorder(etched_border) self.gpanel_WF.addVerticalLine(-1.0e+30,Color.red) self.gpanel_WF.addVerticalLine(+1.0e+30,Color.red) self.gpanel_WF.setVerLinesButtonVisible(true) self.gpanel_WF.addDraggedVerLinesListener(Position_Limits_Listener(self.ws_lw_acquisition_controller)) write_waveforms_to_ascii_button = JButton("Write Waveforms to ASCII File") write_waveforms_to_ascii_button.addActionListener(Write_Waveforms_to_ASCII_Listener(self.ws_lw_acquisition_controller)) below_graph_panel = JPanel(FlowLayout(FlowLayout.LEFT,5,5)) below_graph_panel.add(write_waveforms_to_ascii_button) graph_panel_left = JPanel(BorderLayout()) graph_panel_left.add(self.gpanel_WF, BorderLayout.CENTER) graph_panel_left.add(below_graph_panel, BorderLayout.SOUTH) self.record_analysis_panel.add(graph_panel_left, BorderLayout.CENTER) self.main_panel.add(self.record_analysis_panel, BorderLayout.CENTER) #---set up Listeners self.records_table.getSelectionModel().addListSelectionListener(WS_Record_Table_Selection_Listener(self.ws_lw_acquisition_controller)) def setDataToGraphPanel(self,ws_record): self.gpanel_WF.removeAllGraphData() self.gpanel_WF.addGraphData(ws_record.gd_wf) self.gpanel_WF.addGraphData(ws_record.gd_fit_wf)
class Orbit_Diff_Graphs_Panel(JPanel): def __init__(self,mebt_main_orbit_diff_cntrl): self.mebt_main_orbit_diff_cntrl = mebt_main_orbit_diff_cntrl self.setLayout(BorderLayout()) tabbedPane = JTabbedPane() #----etched border etched_border = BorderFactory.createEtchedBorder() #---- plots for Hor-Ver and Longitudinal self.hor_plot = FunctionGraphsJPanel() self.hor_plot.setLegendButtonVisible(true) self.hor_plot.setChooseModeButtonVisible(true) self.hor_plot.setName("Horizontal Plane (Vert.Lns.: Black:quads Blue:DC Red:Cavs)") self.hor_plot.setAxisNames("Position, m","X[mm]") self.hor_plot.setBorder(etched_border) self.ver_plot = FunctionGraphsJPanel() self.ver_plot.setLegendButtonVisible(true) self.ver_plot.setChooseModeButtonVisible(true) self.ver_plot.setName("Vertical Plane (Vert.Lns.: Black:quads Blue:DC Red:Cavs)") self.ver_plot.setAxisNames("Position, m","Y[mm]") self.ver_plot.setBorder(etched_border) #------------------------------------------------ self.hor_diff_plot = FunctionGraphsJPanel() self.hor_diff_plot.setLegendButtonVisible(true) self.hor_diff_plot.setChooseModeButtonVisible(true) self.hor_diff_plot.setName("Horizontal Plane (Vert.Lns.: Black:quads Blue:DC Red:Cavs)") self.hor_diff_plot.setAxisNames("Position, m","Diff X[mm]") self.hor_diff_plot.setBorder(etched_border) self.ver_diff_plot = FunctionGraphsJPanel() self.ver_diff_plot.setLegendButtonVisible(true) self.ver_diff_plot.setChooseModeButtonVisible(true) self.ver_diff_plot.setName("Vertical Plane (Vert.Lns.: Black:quads Blue:DC Red:Cavs)") self.ver_diff_plot.setAxisNames("Position, m","Diff Y[mm]") self.ver_diff_plot.setBorder(etched_border) #-------------------------------------------------------------------- quad_wrappers = self.mebt_main_orbit_diff_cntrl.quad_wrappers dc_wrappers = self.mebt_main_orbit_diff_cntrl.dc_wrappers mebt_cav_wrappers = self.mebt_main_orbit_diff_cntrl.mebt_cav_wrappers for wrapper in quad_wrappers: self.hor_plot.addVerticalLine(wrapper.pos,Color.BLACK) self.ver_plot.addVerticalLine(wrapper.pos,Color.BLACK) self.hor_diff_plot.addVerticalLine(wrapper.pos,Color.BLACK) self.ver_diff_plot.addVerticalLine(wrapper.pos,Color.BLACK) for wrapper in dc_wrappers: self.hor_plot.addVerticalLine(wrapper.pos,Color.BLUE) self.ver_plot.addVerticalLine(wrapper.pos,Color.BLUE) self.hor_diff_plot.addVerticalLine(wrapper.pos,Color.BLUE) self.ver_diff_plot.addVerticalLine(wrapper.pos,Color.BLUE) for wrapper in mebt_cav_wrappers: self.hor_plot.addVerticalLine(wrapper.pos,Color.RED) self.ver_plot.addVerticalLine(wrapper.pos,Color.RED) self.hor_diff_plot.addVerticalLine(wrapper.pos,Color.RED) self.ver_diff_plot.addVerticalLine(wrapper.pos,Color.RED) #--------------------------------------------------------------------- #-------------------------------------------------- #---- panels graph_diff_panel = JPanel(GridLayout(2,1)) graph_diff_panel.add(self.hor_diff_plot) graph_diff_panel.add(self.ver_diff_plot) #---------------------------------- graph_panel = JPanel(GridLayout(2,1)) graph_panel.add(self.hor_plot) graph_panel.add(self.ver_plot) #---------------------------------- tabbedPane.add("Orbit Difference",graph_diff_panel) tabbedPane.add("Orbit",graph_panel) #------------------------------------- self.x_model_gd = BasicGraphData() self.x_model_gd.setLineThick(3) self.x_model_gd.setGraphPointSize(7) self.x_model_gd.setGraphColor(Color.BLUE) self.x_model_gd.setGraphProperty(GRAPH_LEGEND_KEY,"X Model [mm]") self.x_model_gd.setDrawLinesOn(true) self.x_model_gd.setDrawPointsOn(false) #------------------------------------- self.y_model_gd = BasicGraphData() self.y_model_gd.setLineThick(3) self.y_model_gd.setGraphPointSize(7) self.y_model_gd.setGraphColor(Color.RED) self.y_model_gd.setGraphProperty(GRAPH_LEGEND_KEY,"Y Model [mm]") self.y_model_gd.setDrawLinesOn(true) self.y_model_gd.setDrawPointsOn(false) #------------------------------------- self.x_model_diff_gd = BasicGraphData() self.x_model_diff_gd.setLineThick(3) self.x_model_diff_gd.setGraphPointSize(7) self.x_model_diff_gd.setGraphColor(Color.BLUE) self.x_model_diff_gd.setGraphProperty(GRAPH_LEGEND_KEY,"X Diff Model [mm]") self.x_model_diff_gd.setDrawLinesOn(true) self.x_model_diff_gd.setDrawPointsOn(false) #------------------------------------- self.y_model_diff_gd = BasicGraphData() self.y_model_diff_gd.setLineThick(3) self.y_model_diff_gd.setGraphPointSize(7) self.y_model_diff_gd.setGraphColor(Color.RED) self.y_model_diff_gd.setGraphProperty(GRAPH_LEGEND_KEY,"Y Diff Model [mm]") self.y_model_diff_gd.setDrawLinesOn(true) self.y_model_diff_gd.setDrawPointsOn(false) #------------------------------------- #------------------------------------- self.x_bpm_gd = BasicGraphData() self.x_bpm_gd.setLineThick(3) self.x_bpm_gd.setGraphPointSize(7) self.x_bpm_gd.setGraphColor(Color.BLUE) self.x_bpm_gd.setGraphProperty(GRAPH_LEGEND_KEY,"X BPM [mm]") self.x_bpm_gd.setDrawLinesOn(false) self.x_bpm_gd.setDrawPointsOn(true) #------------------------------------- self.y_bpm_gd = BasicGraphData() self.y_bpm_gd.setLineThick(3) self.y_bpm_gd.setGraphPointSize(7) self.y_bpm_gd.setGraphColor(Color.RED) self.y_bpm_gd.setGraphProperty(GRAPH_LEGEND_KEY,"Y BPM [mm]") self.y_bpm_gd.setDrawLinesOn(false) self.y_bpm_gd.setDrawPointsOn(true) #------------------------------------- self.x_bpm_diff_gd = BasicGraphData() self.x_bpm_diff_gd.setLineThick(3) self.x_bpm_diff_gd.setGraphPointSize(7) self.x_bpm_diff_gd.setGraphColor(Color.BLUE) self.x_bpm_diff_gd.setGraphProperty(GRAPH_LEGEND_KEY,"X Diff BPM [mm]") self.x_bpm_diff_gd.setDrawLinesOn(false) self.x_bpm_diff_gd.setDrawPointsOn(true) #------------------------------------- self.y_bpm_diff_gd = BasicGraphData() self.y_bpm_diff_gd.setLineThick(3) self.y_bpm_diff_gd.setGraphPointSize(7) self.y_bpm_diff_gd.setGraphColor(Color.RED) self.y_bpm_diff_gd.setGraphProperty(GRAPH_LEGEND_KEY,"Y Diff BPM [mm]") self.y_bpm_diff_gd.setDrawLinesOn(false) self.y_bpm_diff_gd.setDrawPointsOn(true) #------------------------------------- self.index0_button = JRadioButton("Orbit #0") self.index1_button = JRadioButton("Orbit #1") self.button_group = ButtonGroup() self.button_group.add(self.index0_button) self.button_group.add(self.index1_button) self.index0_button.setSelected(true) replot_button = JButton("Replot Graphs") replot_button.addActionListener(Replot_Button_Listener(self.mebt_main_orbit_diff_cntrl)) button_panel = JPanel(FlowLayout(FlowLayout.LEFT,3,3)) button_panel.add(self.index0_button) button_panel.add(self.index1_button) button_panel.add(replot_button) #----------------------------------------------- self.add(tabbedPane,BorderLayout.CENTER) self.add(button_panel,BorderLayout.SOUTH) def removeAllGraphData(self): self.hor_plot.removeAllGraphData() self.ver_plot.removeAllGraphData() self.hor_diff_plot.removeAllGraphData() self.ver_diff_plot.removeAllGraphData() #-------------------------------------- self.x_model_gd.removeAllPoints() self.y_model_gd.removeAllPoints() self.x_model_diff_gd.removeAllPoints() self.y_model_diff_gd.removeAllPoints() #-------------------------------------- self.x_bpm_gd.removeAllPoints() self.y_bpm_gd.removeAllPoints() self.x_bpm_diff_gd.removeAllPoints() self.y_bpm_diff_gd.removeAllPoints() def updateGraphData(self): self.removeAllGraphData() orb_index = 0 if(self.index1_button.isSelected()): orb_index = 1 #print "debug orb_index=",orb_index #==== update graph data from calculator and measurer orbit_measurer = self.mebt_main_orbit_diff_cntrl.orbit_measurer mebt_orbit_holder_0 = orbit_measurer.mebt_orbit_holder_0 mebt_orbit_holder_1 = orbit_measurer.mebt_orbit_holder_1 bpm_orbit_holder_0 = orbit_measurer.bpm_orbit_holder_0 bpm_orbit_holder_1 = orbit_measurer.bpm_orbit_holder_1 bpm_wrappers = self.mebt_main_orbit_diff_cntrl.bpm_wrappers max_pos = 0. for bpm_wrapper in bpm_wrappers: if(bpm_wrapper.use): if(max_pos < bpm_wrapper.pos): max_pos = bpm_wrapper.pos #---------------------------------------- pos_step = 0.1 pos_old = -1. traj0 = mebt_orbit_holder_0.getTrajectory() traj1 = mebt_orbit_holder_1.getTrajectory() for ind in range(traj0.numStates()): state0 = traj0.stateWithIndex(ind) pos = state0.getPosition() state1 = traj1.stateNearestPosition(pos) if(pos > (pos_old + pos_step) and pos_old < max_pos): x0 = state0.getPhaseCoordinates().getx()*1000. y0 = state0.getPhaseCoordinates().gety()*1000. x1 = state1.getPhaseCoordinates().getx()*1000. y1 = state1.getPhaseCoordinates().gety()*1000. pos_old = pos if(orb_index == 0): self.x_model_gd.addPoint(pos,x0) self.y_model_gd.addPoint(pos,y0) else: self.x_model_gd.addPoint(pos,x1) self.y_model_gd.addPoint(pos,y1) self.x_model_diff_gd.addPoint(pos,x1-x0) self.y_model_diff_gd.addPoint(pos,y1-y0) #---------------------------------------------- #bpm_orbit_holder_0.calcStatistics() #bpm_orbit_holder_1.calcStatistics() for bpm_wrapper in bpm_wrappers: if(bpm_wrapper.use): (x0,x0_err,y0,y0_err) = bpm_orbit_holder_0.getXY_and_Err(bpm_wrapper) (x1,x1_err,y1,y1_err) = bpm_orbit_holder_1.getXY_and_Err(bpm_wrapper) if(orb_index == 0): self.x_bpm_gd.addPoint(bpm_wrapper.pos,x0,x0_err) self.y_bpm_gd.addPoint(bpm_wrapper.pos,y0,y0_err) else: self.x_bpm_gd.addPoint(bpm_wrapper.pos,x1,x1_err) self.y_bpm_gd.addPoint(bpm_wrapper.pos,y1,y1_err) self.x_bpm_diff_gd.addPoint(bpm_wrapper.pos,x1-x0,math.sqrt(x0_err**2+x1_err**2)) self.y_bpm_diff_gd.addPoint(bpm_wrapper.pos,y1-y0,math.sqrt(y0_err**2+y1_err**2)) #------------------------------------- self.hor_plot.addGraphData(self.x_model_gd) self.hor_plot.addGraphData(self.x_bpm_gd) self.ver_plot.addGraphData(self.y_model_gd) self.ver_plot.addGraphData(self.y_bpm_gd) #------------------------------------- self.hor_diff_plot.addGraphData(self.x_model_diff_gd) self.hor_diff_plot.addGraphData(self.x_bpm_diff_gd) self.ver_diff_plot.addGraphData(self.y_model_diff_gd) self.ver_diff_plot.addGraphData(self.y_bpm_diff_gd)