diff --git a/spspy/SPSPlotUI.py b/spspy/SPSPlotUI.py index d4d7cc8..44afb32 100644 --- a/spspy/SPSPlotUI.py +++ b/spspy/SPSPlotUI.py @@ -19,6 +19,9 @@ import matplotlib as mpl import sys import pickle +DEFAULT_RHO_MIN: float = 69.0 +DEFAULT_RHO_MAX: float = 87.0 + class PlotType(Enum): PLOT_EX = auto() PLOT_KE = auto() @@ -49,11 +52,12 @@ class SPSPlotGUI(QMainWindow): self.create_canvas() self.create_inputs() self.create_target_table() + self.update_plot() self.show() def create_canvas(self) -> None: self.canvas = MPLCanvas(self.plotTab, width=14, height=5, dpi=100) - self.plotLayout.addWidget(self.canvas, 5) + self.plotLayout.addWidget(self.canvas, 4) def create_menus(self) -> None: self.fileMenu = self.menuBar().addMenu("&File") @@ -82,58 +86,67 @@ class SPSPlotGUI(QMainWindow): exportLevels.triggered.connect(self.handle_export_levels) def create_inputs(self) -> None: - inputLayout = QHBoxLayout() + inputLayout = QVBoxLayout() self.inputGroupBox = QGroupBox("Adjustable Inputs", self.plotTab) - rhoMinLabel = QLabel("Rho Min", self.inputGroupBox) - self.rhoMinInput = QDoubleSpinBox(self.inputGroupBox) + + self.spsGroupBox = QGroupBox("SPS Parameters", self.inputGroupBox) + spsGroupLayout = QHBoxLayout() + rhoMinLabel = QLabel("

ρMin<\sub><\p>", self.spsGroupBox) + self.rhoMinInput = QDoubleSpinBox(self.spsGroupBox) self.rhoMinInput.setRange(0.0, 150.0) + self.rhoMinInput.setValue(DEFAULT_RHO_MIN) + self.sps.rhoMin = DEFAULT_RHO_MIN self.rhoMinInput.setSuffix(" cm") - rhoMaxLabel = QLabel("RhoMax", self.inputGroupBox) - self.rhoMaxInput = QDoubleSpinBox(self.inputGroupBox) + rhoMaxLabel = QLabel("

ρMax<\sub><\p>", self.spsGroupBox) + self.rhoMaxInput = QDoubleSpinBox(self.spsGroupBox) self.rhoMaxInput.setRange(0.0,150.0) + self.rhoMaxInput.setValue(DEFAULT_RHO_MAX) + self.sps.rhoMax = DEFAULT_RHO_MAX self.rhoMaxInput.setSuffix(" cm") - bkeLabel = QLabel("Beam KE", self.inputGroupBox) - self.bkeInput = QDoubleSpinBox(self.inputGroupBox) + bkeLabel = QLabel("

Ebeam<\sub><\p>", self.spsGroupBox) + self.bkeInput = QDoubleSpinBox(self.spsGroupBox) self.bkeInput.setRange(0.0, 500.0) self.bkeInput.setSuffix(" MeV") - bfieldLabel = QLabel("B-field", self.inputGroupBox) - self.bfieldInput = QDoubleSpinBox(self.inputGroupBox) + bfieldLabel = QLabel("B", self.spsGroupBox) + self.bfieldInput = QDoubleSpinBox(self.spsGroupBox) self.bfieldInput.setRange(0.0, 17.0) self.bfieldInput.setSuffix(" kG") - angleLabel = QLabel("Angle", self.inputGroupBox) - self.angleInput = QDoubleSpinBox(self.inputGroupBox) + angleLabel = QLabel("

θSPS<\sub><\p>", self.spsGroupBox) + self.angleInput = QDoubleSpinBox(self.spsGroupBox) self.angleInput.setRange(0.0, 180.0) self.angleInput.setSuffix(" deg") - self.runButton = QPushButton("Set", self.inputGroupBox) + self.runButton = QPushButton("Set", self.spsGroupBox) self.runButton.clicked.connect(self.handle_run) + spsGroupLayout.addWidget(rhoMinLabel, 1) + spsGroupLayout.addWidget(self.rhoMinInput, 2) + spsGroupLayout.addWidget(rhoMaxLabel,1 ) + spsGroupLayout.addWidget(self.rhoMaxInput, 2) + spsGroupLayout.addWidget(bkeLabel, 1) + spsGroupLayout.addWidget(self.bkeInput, 2) + spsGroupLayout.addWidget(bfieldLabel, 1) + spsGroupLayout.addWidget(self.bfieldInput, 2) + spsGroupLayout.addWidget(angleLabel, 1) + spsGroupLayout.addWidget(self.angleInput, 2) + spsGroupLayout.addWidget(self.runButton, 1) + self.spsGroupBox.setLayout(spsGroupLayout) - self.energyButtonGroup = QGroupBox("Ex/KE switch",self.plotTab) + self.energyButtonGroup = QGroupBox("Labels",self.plotTab) buttonLayout = QHBoxLayout() - self.exButton = QRadioButton("Excitation energy (MeV)", self.energyButtonGroup) + self.exButton = QRadioButton("Excitation Energy(MeV)", self.energyButtonGroup) self.exButton.toggled.connect(self.handle_ex_switch) self.exButton.toggle() - self.keButton = QRadioButton("Ejectile Kinetic energy (MeV)", self.energyButtonGroup) + self.keButton = QRadioButton("Ejectile KE(MeV)", self.energyButtonGroup) self.keButton.toggled.connect(self.handle_ke_switch) - self.zButton = QRadioButton("Focal Plane Z Shift (cm)", self.energyButtonGroup) + self.zButton = QRadioButton("FocalPlane Z-Shift(cm)", self.energyButtonGroup) self.zButton.toggled.connect(self.handle_z_switch) buttonLayout.addWidget(self.exButton) buttonLayout.addWidget(self.keButton) buttonLayout.addWidget(self.zButton) self.energyButtonGroup.setLayout(buttonLayout) - inputLayout.addWidget(rhoMinLabel) - inputLayout.addWidget(self.rhoMinInput) - inputLayout.addWidget(rhoMaxLabel) - inputLayout.addWidget(self.rhoMaxInput) - inputLayout.addWidget(bkeLabel) - inputLayout.addWidget(self.bkeInput) - inputLayout.addWidget(bfieldLabel) - inputLayout.addWidget(self.bfieldInput) - inputLayout.addWidget(angleLabel) - inputLayout.addWidget(self.angleInput) - inputLayout.addWidget(self.runButton) - self.inputGroupBox.setLayout(inputLayout) + inputLayout.addWidget(self.spsGroupBox) inputLayout.addWidget(self.energyButtonGroup) + self.inputGroupBox.setLayout(inputLayout) self.plotLayout.addWidget(self.inputGroupBox, 1) @@ -142,7 +155,9 @@ class SPSPlotGUI(QMainWindow): tableLayout = QVBoxLayout() self.targetTable = QTableWidget(self.targetGroup) self.targetTable.setColumnCount(6) - self.targetTable.setHorizontalHeaderLabels(["Layer1 Thickness(ug/cm^2", "Layer1 (Z, A, S)","Layer2 Thickness(ug/cm^2", "Layer2 (Z, A, S)","Layer3 Thickness(ug/cm^2", "Layer3 (Z, A, S)"]) + self.targetTable.setHorizontalHeaderLabels(["L1 Thickness(ug/cm^2)", "L1 Compound", + "L2 Thickness(ug/cm^2)", "L2 Compound", + "L3 Thickness(ug/cm^2)", "Layer3 Compound"]) tableLayout.addWidget(self.targetTable) self.targetGroup.setLayout(tableLayout) self.targetLayout.addWidget(self.targetGroup) @@ -257,6 +272,7 @@ class SPSPlotGUI(QMainWindow): self.canvas.axes.set_xlim(self.sps.rhoMin, self.sps.rhoMax) self.canvas.axes.set_yticks(range(1,len(self.sps.data)+2)) self.canvas.axes.set_yticklabels(ylabels) + self.canvas.axes.set_xlabel(r"$\rho$ (cm)") self.canvas.draw() def update_inputs(self): @@ -275,6 +291,8 @@ class SPSPlotGUI(QMainWindow): self.targetTable.setCellWidget(row, 1+col*2, QLabel(str(layer))) self.targetTable.resizeColumnsToContents() self.targetTable.resizeRowsToContents() + + def run_spsplot_ui(): mpl.use("Qt5Agg") diff --git a/spspy/SpancUI.py b/spspy/SpancUI.py index 0fbcd6a..7d9a3da 100644 --- a/spspy/SpancUI.py +++ b/spspy/SpancUI.py @@ -110,7 +110,7 @@ class SpancGUI(QMainWindow): targetLayout = QVBoxLayout() self.targetTable = QTableWidget(self.targetGroup) self.targetTable.setColumnCount(6) - self.targetTable.setHorizontalHeaderLabels(["Layer1 Thickness(ug/cm^2", "Layer1 (Z, A, S)","Layer2 Thickness(ug/cm^2", "Layer2 (Z, A, S)","Layer3 Thickness(ug/cm^2", "Layer3 (Z, A, S)"]) + self.targetTable.setHorizontalHeaderLabels(["L1 Thickness(ug/cm^2)", "L1 Compound","L2 Thickness(ug/cm^2)", "L2 Compound","L3 Thickness(ug/cm^2)", "L3 Compound"]) targetLayout.addWidget(self.targetTable) self.targetGroup.setLayout(targetLayout) self.tablelayout.addWidget(self.targetGroup) diff --git a/spspy/ui/MPLCanvas.py b/spspy/ui/MPLCanvas.py index a7e7af0..270f3fc 100644 --- a/spspy/ui/MPLCanvas.py +++ b/spspy/ui/MPLCanvas.py @@ -11,7 +11,7 @@ matplotlib.rcParams["ytick.color"] = "w" matplotlib.rcParams["text.color"] = "w" class MPLCanvas(FigureCanvasQTAgg): - def __init__(self, parent=None, width=5, height=4, dpi=100): + def __init__(self, parent=None, width=3, height=4, dpi=100): self.fig = Figure(figsize=(width, height), dpi=dpi, edgecolor="black",linewidth=0.5) self.axes = self.fig.add_subplot(111) self.axes.spines['top'].set_visible(False) diff --git a/spspy/ui/ReactionDialog.py b/spspy/ui/ReactionDialog.py index 5ef552f..2d505d4 100644 --- a/spspy/ui/ReactionDialog.py +++ b/spspy/ui/ReactionDialog.py @@ -94,9 +94,9 @@ class ReactionDialog(QDialog): self.bfieldInput = QDoubleSpinBox(self.parameterGroupBox) self.bfieldInput.setRange(MINIMUM_MAG_FIELD, MAXIMUM_MAG_FIELD) self.bfieldInput.setDecimals(6) - parameterLayout.addRow("Beam KE(Mev)",self.bkeInput) - parameterLayout.addRow("Theta(deg)",self.thetaInput) - parameterLayout.addRow("Bfield(kG)",self.bfieldInput) + parameterLayout.addRow(QLabel("Ebeam(Mev)"),self.bkeInput) + parameterLayout.addRow("

θSPS(deg)

",self.thetaInput) + parameterLayout.addRow("B(kG)",self.bfieldInput) self.parameterGroupBox.setLayout(parameterLayout) self.layout.addWidget(self.parameterGroupBox)