ticket2D = shadow3_beam.histo2(col_h=1, col_v=3, nbins=nbins, ref=23, nolost=1, xrange=[x_min, x_max], yrange=[z_min, z_max]) histogram = ticket2D["histogram"] fwhms[index] = ticket2D["fwhm_v"] for ix in range(nbins): for iz in range(nbins): stack_result[index, ix, iz] = histogram[ix, iz] # FOCUS POSITION ticketFocus = ST.focnew(shadow3_beam, mode=0, center=[0.0, 0.0]) best_focus_positions[index] = ticketFocus['z_waist'] print("C3, FWHM, Focus", shadow3_VLS.RUL_A3, fwhms[index], best_focus_positions[index]) plot_data1D(c3_values, fwhms * 1e4, "SPOT VERTICAL SIZE", "C3 [l/cm]^3", "Z FWHM [um]") plot_data1D(c3_values, best_focus_positions, "VERTICAL FOCUS RELATIVE POSITION", "C3 [l/cm]^3", "Distance [cm]") plot_data3D(stack_result, c3_values, numpy.linspace(x_min, x_max, nbins), numpy.linspace(z_min, z_max, nbins), "SPOT SIZE AT IMAGE PLANE", "X [um]", "Z [um]")
def calculate(self): if ShadowCongruence.checkEmptyBeam(self.input_beam): if ShadowCongruence.checkGoodBeam(self.input_beam): beam_to_analize = self.input_beam._beam if self.image_plane == 1: new_shadow_beam = self.input_beam.duplicate(history=False) dist = 0.0 if self.image_plane_rel_abs_position == 1: # relative dist = self.image_plane_new_position else: # absolute historyItem = self.input_beam.getOEHistory( oe_number=self.input_beam._oe_number) if historyItem is None: image_plane = 0.0 elif self.input_beam._oe_number == 0: image_plane = 0.0 else: image_plane = historyItem._shadow_oe_end._oe.T_IMAGE dist = self.image_plane_new_position - image_plane new_shadow_beam._beam.retrace(dist) beam_to_analize = new_shadow_beam._beam if self.mode == 2: center = [self.center_x, self.center_z] else: center = [0.0, 0.0] if self.y_range == 1: if self.y_range_min >= self.y_range_max: raise Exception( "Y range min cannot be greater or than Y range max" ) ticket = ST.focnew(beam_to_analize, mode=self.mode, center=center) self.focnewInfo.setText(ticket["text"]) if self.plot_canvas_x is None: self.plot_canvas_x = oasysgui.plotWindow(roi=False, control=False, position=True) self.plot_canvas_x.setDefaultPlotLines(True) self.plot_canvas_x.setActiveCurveColor(color='blue') self.plot_canvas_x.setInteractiveMode(mode='zoom') self.plot_canvas_x.toolBar().setVisible(False) self.plot_canvas_z = oasysgui.plotWindow(roi=False, control=False, position=True) self.plot_canvas_z.setDefaultPlotLines(True) self.plot_canvas_z.setActiveCurveColor(color='red') self.plot_canvas_z.setInteractiveMode(mode='zoom') self.plot_canvas_z.toolBar().setVisible(False) self.plot_canvas_t = oasysgui.plotWindow(roi=False, control=False, position=True) self.plot_canvas_t.setDefaultPlotLines(True) self.plot_canvas_t.setActiveCurveColor(color='green') self.plot_canvas_t.setInteractiveMode(mode='zoom') self.plot_canvas_t.toolBar().setVisible(False) gridLayout = QtWidgets.QGridLayout() gridLayout.addWidget(self.plot_canvas_x, 0, 0) gridLayout.addWidget(self.plot_canvas_z, 0, 1) gridLayout.addWidget(self.plot_canvas_t, 1, 0) widget = QtWidgets.QWidget() widget.setLayout(gridLayout) self.image_box.layout().addWidget(widget) if self.y_range == 0: y = numpy.linspace(-10.0, 10.0, 1001) else: y = numpy.linspace(self.y_range_min, self.y_range_max, self.y_npoints) pos = [0.25, 0.15, 0.7, 0.75] self.plot_canvas_x.addCurve( y, 2.35 * ST.focnew_scan(ticket["AX"], y) * ShadowPlot.get_factor(1, self.workspace_units_to_cm), "x (tangential)", symbol='', color="blue", replace=True) #'+', '^', ',' self.plot_canvas_x._backend.ax.get_yaxis().get_major_formatter( ).set_useOffset(True) self.plot_canvas_x._backend.ax.get_yaxis().get_major_formatter( ).set_scientific(True) self.plot_canvas_x._backend.ax.set_position(pos) self.plot_canvas_x._backend.ax2.set_position(pos) self.plot_canvas_x.setGraphXLabel("Y [" + self.workspace_units_label + "]") self.plot_canvas_x.setGraphYLabel("2.35*<X> [$\mu$m]") self.plot_canvas_x._backend.ax.set_title( "X", horizontalalignment='left') self.plot_canvas_x.replot() self.plot_canvas_z.addCurve( y, 2.35 * ST.focnew_scan(ticket["AZ"], y) * ShadowPlot.get_factor(3, self.workspace_units_to_cm), "z (sagittal)", symbol='', color="red", replace=False) #'+', '^', ',' self.plot_canvas_z._backend.ax.get_yaxis().get_major_formatter( ).set_useOffset(True) self.plot_canvas_z._backend.ax.get_yaxis().get_major_formatter( ).set_scientific(True) self.plot_canvas_z._backend.ax.set_position(pos) self.plot_canvas_z._backend.ax2.set_position(pos) self.plot_canvas_z.setGraphXLabel("Y [" + self.workspace_units_label + "]") self.plot_canvas_z.setGraphYLabel("2.35*<Z> [$\mu$m]") self.plot_canvas_z._backend.ax.set_title( "Z", horizontalalignment='left') self.plot_canvas_z.replot() self.plot_canvas_t.addCurve( y, 2.35 * ST.focnew_scan(ticket["AT"], y) * ShadowPlot.get_factor(1, self.workspace_units_to_cm), "combined x,z", symbol='', color="green", replace=True) #'+', '^', ',' self.plot_canvas_t._backend.ax.get_yaxis().get_major_formatter( ).set_useOffset(True) self.plot_canvas_t._backend.ax.get_yaxis().get_major_formatter( ).set_scientific(True) self.plot_canvas_t._backend.ax.set_position(pos) self.plot_canvas_t._backend.ax2.set_position(pos) self.plot_canvas_t.setGraphXLabel("Y [" + self.workspace_units_label + "]") self.plot_canvas_t.setGraphYLabel("2.35*<X,Z> [$\mu$m]") self.plot_canvas_t._backend.ax.set_title( "X,Z (Combined)", horizontalalignment='left') self.plot_canvas_t.replot()
def calculate(self): if ShadowCongruence.checkEmptyBeam(self.input_beam): if ShadowCongruence.checkGoodBeam(self.input_beam): beam_to_analize = self.input_beam._beam if self.image_plane == 1: new_shadow_beam = self.input_beam.duplicate(history=False) dist = 0.0 if self.image_plane_rel_abs_position == 1: # relative dist = self.image_plane_new_position else: # absolute historyItem = self.input_beam.getOEHistory(oe_number=self.input_beam._oe_number) if historyItem is None: image_plane = 0.0 elif self.input_beam._oe_number == 0: image_plane = 0.0 else: image_plane = historyItem._shadow_oe_end._oe.T_IMAGE dist = self.image_plane_new_position - image_plane new_shadow_beam._beam.retrace(dist) beam_to_analize = new_shadow_beam._beam if self.mode==2: center=[self.center_x, self.center_z] else: center=[0.0, 0.0] if self.y_range == 1: if self.y_range_min >= self.y_range_max: raise Exception("Y range min cannot be greater or than Y range max") ticket = ST.focnew(beam_to_analize, mode=self.mode, center=center) self.focnewInfo.setText(ticket["text"]) if self.plot_canvas_x is None: self.plot_canvas_x = PlotWindow(roi=False, control=False, position=True, plugins=False) self.plot_canvas_x.setDefaultPlotLines(True) self.plot_canvas_x.setActiveCurveColor(color='blue') self.plot_canvas_x.setDrawModeEnabled(False) self.plot_canvas_x.setZoomModeEnabled(False) self.plot_canvas_x.toolBar.setVisible(False) self.plot_canvas_z = PlotWindow(roi=False, control=False, position=True, plugins=False) self.plot_canvas_z.setDefaultPlotLines(True) self.plot_canvas_z.setActiveCurveColor(color='red') self.plot_canvas_z.setDrawModeEnabled(False) self.plot_canvas_z.setZoomModeEnabled(False) self.plot_canvas_z.toolBar.setVisible(False) self.plot_canvas_t = PlotWindow(roi=False, control=False, position=True, plugins=False) self.plot_canvas_t.setDefaultPlotLines(True) self.plot_canvas_t.setActiveCurveColor(color='green') self.plot_canvas_t.setDrawModeEnabled(False) self.plot_canvas_t.setZoomModeEnabled(False) self.plot_canvas_t.toolBar.setVisible(False) gridLayout = QtGui.QGridLayout() gridLayout.addWidget(self.plot_canvas_x, 0, 0) gridLayout.addWidget(self.plot_canvas_z, 0, 1) gridLayout.addWidget(self.plot_canvas_t, 1, 0) widget = QtGui.QWidget() widget.setLayout(gridLayout) self.image_box.layout().addWidget(widget) if self.y_range == 0: y = numpy.linspace(-10.0, 10.0, 1001) else: y = numpy.linspace(self.y_range_min, self.y_range_max, self.y_npoints) pos = [0.25, 0.15, 0.7, 0.75] self.plot_canvas_x.addCurve(y, 2.35*ST.focnew_scan(ticket["AX"], y)*ShadowPlot.get_factor(1, self.workspace_units_to_cm), "x (tangential)", symbol='', color="blue", replace=True) #'+', '^', ',' self.plot_canvas_x._plot.graph.ax.get_yaxis().get_major_formatter().set_useOffset(True) self.plot_canvas_x._plot.graph.ax.get_yaxis().get_major_formatter().set_scientific(True) self.plot_canvas_x._plot.graph.ax.set_position(pos) self.plot_canvas_x._plot.graph.ax2.set_position(pos) self.plot_canvas_x.setGraphXLabel("Y [" + self.workspace_units_label + "]") self.plot_canvas_x.setGraphYLabel("2.35*<X> [$\mu$m]") self.plot_canvas_x._plot.graph.ax.set_title("X", horizontalalignment='left') self.plot_canvas_x.replot() self.plot_canvas_z.addCurve(y, 2.35*ST.focnew_scan(ticket["AZ"], y)*ShadowPlot.get_factor(3, self.workspace_units_to_cm), "z (sagittal)", symbol='', color="red", replace=False) #'+', '^', ',' self.plot_canvas_z._plot.graph.ax.get_yaxis().get_major_formatter().set_useOffset(True) self.plot_canvas_z._plot.graph.ax.get_yaxis().get_major_formatter().set_scientific(True) self.plot_canvas_z._plot.graph.ax.set_position(pos) self.plot_canvas_z._plot.graph.ax2.set_position(pos) self.plot_canvas_z.setGraphXLabel("Y [" + self.workspace_units_label + "]") self.plot_canvas_z.setGraphYLabel("2.35*<Z> [$\mu$m]") self.plot_canvas_z._plot.graph.ax.set_title("Z", horizontalalignment='left') self.plot_canvas_z.replot() self.plot_canvas_t.addCurve(y, 2.35*ST.focnew_scan(ticket["AT"], y)*ShadowPlot.get_factor(1, self.workspace_units_to_cm), "combined x,z", symbol='', color="green", replace=True) #'+', '^', ',' self.plot_canvas_t._plot.graph.ax.get_yaxis().get_major_formatter().set_useOffset(True) self.plot_canvas_t._plot.graph.ax.get_yaxis().get_major_formatter().set_scientific(True) self.plot_canvas_t._plot.graph.ax.set_position(pos) self.plot_canvas_t._plot.graph.ax2.set_position(pos) self.plot_canvas_t.setGraphXLabel("Y [" + self.workspace_units_label + "]") self.plot_canvas_t.setGraphYLabel("2.35*<X,Z> [$\mu$m]") self.plot_canvas_t._plot.graph.ax.set_title("X,Z (Combined)", horizontalalignment='left') self.plot_canvas_t.replot()