Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e445af83e9 |
Generated
+57
-31
@@ -4,7 +4,16 @@
|
|||||||
<option name="autoReloadType" value="SELECTIVE" />
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="0efcf7ff-c00b-4b53-9800-80ad65aeaff9" name="Changes" comment="Fixed to filter for non-existing elements when initializing from a setting file" />
|
<list default="true" id="0efcf7ff-c00b-4b53-9800-80ad65aeaff9" name="Changes" comment="Migrating repo">
|
||||||
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ElegantTools.py" beforeDir="false" afterPath="$PROJECT_DIR$/ElegantTools.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/distribution.py" beforeDir="false" afterPath="$PROJECT_DIR$/distribution.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/model.py" beforeDir="false" afterPath="$PROJECT_DIR$/model.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/plot.py" beforeDir="false" afterPath="$PROJECT_DIR$/plot.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/track.py" beforeDir="false" afterPath="$PROJECT_DIR$/track.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ui/ElegantToolsGui.py" beforeDir="false" afterPath="$PROJECT_DIR$/ui/ElegantToolsGui.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/ui/ElegantToolsGui.ui" beforeDir="false" afterPath="$PROJECT_DIR$/ui/ElegantToolsGui.ui" afterDir="false" />
|
||||||
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||||
@@ -18,6 +27,11 @@
|
|||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="Git.Settings">
|
<component name="Git.Settings">
|
||||||
|
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
||||||
|
<map>
|
||||||
|
<entry key="$PROJECT_DIR$" value="dev" />
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||||
</component>
|
</component>
|
||||||
<component name="McpProjectServerCommands">
|
<component name="McpProjectServerCommands">
|
||||||
@@ -32,31 +46,31 @@
|
|||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
<option name="showLibraryContents" value="true" />
|
<option name="showLibraryContents" value="true" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent"><![CDATA[{
|
<component name="PropertiesComponent">{
|
||||||
"keyToString": {
|
"keyToString": {
|
||||||
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
||||||
"Python.ElegantTools.executor": "Run",
|
"Python.ElegantTools.executor": "Run",
|
||||||
"RunOnceActivity.MCP Project settings loaded": "true",
|
"RunOnceActivity.MCP Project settings loaded": "true",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
||||||
"RunOnceActivity.git.unshallow": "true",
|
"RunOnceActivity.git.unshallow": "true",
|
||||||
"RunOnceActivity.typescript.service.memoryLimit.init": "true",
|
"RunOnceActivity.typescript.service.memoryLimit.init": "true",
|
||||||
"SHELLCHECK.PATH": "I do mind",
|
"SHELLCHECK.PATH": "I do mind",
|
||||||
"ai.playground.ignore.import.keys.banner.in.settings": "true",
|
"ai.playground.ignore.import.keys.banner.in.settings": "true",
|
||||||
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
|
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
|
||||||
"git-widget-placeholder": "main",
|
"git-widget-placeholder": "main",
|
||||||
"junie.onboarding.icon.badge.shown": "true",
|
"junie.onboarding.icon.badge.shown": "true",
|
||||||
"last_opened_file_path": "/home/reiche/Codes/Python/Modelling/ElegantTools",
|
"last_opened_file_path": "/home/reiche/Codes/Python/Modelling/ElegantTools",
|
||||||
"node.js.detected.package.eslint": "true",
|
"node.js.detected.package.eslint": "true",
|
||||||
"node.js.detected.package.tslint": "true",
|
"node.js.detected.package.tslint": "true",
|
||||||
"node.js.selected.package.eslint": "(autodetect)",
|
"node.js.selected.package.eslint": "(autodetect)",
|
||||||
"node.js.selected.package.tslint": "(autodetect)",
|
"node.js.selected.package.tslint": "(autodetect)",
|
||||||
"nodejs_package_manager_path": "npm",
|
"nodejs_package_manager_path": "npm",
|
||||||
"settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable",
|
"settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable",
|
||||||
"to.speed.mode.migration.done": "true",
|
"to.speed.mode.migration.done": "true",
|
||||||
"vue.rearranger.settings.migration": "true"
|
"vue.rearranger.settings.migration": "true"
|
||||||
}
|
}
|
||||||
}]]></component>
|
}</component>
|
||||||
<component name="RecentsManager">
|
<component name="RecentsManager">
|
||||||
<key name="CopyFile.RECENT_KEYS">
|
<key name="CopyFile.RECENT_KEYS">
|
||||||
<recent name="$PROJECT_DIR$/Runs" />
|
<recent name="$PROJECT_DIR$/Runs" />
|
||||||
@@ -101,8 +115,8 @@
|
|||||||
<component name="SharedIndexes">
|
<component name="SharedIndexes">
|
||||||
<attachedChunks>
|
<attachedChunks>
|
||||||
<set>
|
<set>
|
||||||
<option value="bundled-js-predefined-d6986cc7102b-9b0f141eb926-JavaScript-PY-253.29346.308" />
|
<option value="bundled-js-predefined-d6986cc7102b-9b0f141eb926-JavaScript-PY-253.31033.139" />
|
||||||
<option value="bundled-python-sdk-ca5e2b39c7df-6e1f45a539f7-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-253.29346.308" />
|
<option value="bundled-python-sdk-2653e85de345-6d6dccd035ac-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-253.31033.139" />
|
||||||
</set>
|
</set>
|
||||||
</attachedChunks>
|
</attachedChunks>
|
||||||
</component>
|
</component>
|
||||||
@@ -117,7 +131,10 @@
|
|||||||
<workItem from="1753184384816" duration="49046000" />
|
<workItem from="1753184384816" duration="49046000" />
|
||||||
<workItem from="1753433608932" duration="2368000" />
|
<workItem from="1753433608932" duration="2368000" />
|
||||||
<workItem from="1753700276583" duration="1239000" />
|
<workItem from="1753700276583" duration="1239000" />
|
||||||
<workItem from="1769421276584" duration="2171000" />
|
<workItem from="1769421276584" duration="3404000" />
|
||||||
|
<workItem from="1772625641497" duration="2357000" />
|
||||||
|
<workItem from="1772704898677" duration="3651000" />
|
||||||
|
<workItem from="1772711572989" duration="8172000" />
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00001" summary="Initial Commit">
|
<task id="LOCAL-00001" summary="Initial Commit">
|
||||||
<option name="closed" value="true" />
|
<option name="closed" value="true" />
|
||||||
@@ -191,7 +208,15 @@
|
|||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1769421900912</updated>
|
<updated>1769421900912</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="10" />
|
<task id="LOCAL-00010" summary="Migrating repo">
|
||||||
|
<option name="closed" value="true" />
|
||||||
|
<created>1769423688133</created>
|
||||||
|
<option name="number" value="00010" />
|
||||||
|
<option name="presentableId" value="LOCAL-00010" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1769423688133</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="11" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="TypeScriptGeneratedFilesManager">
|
<component name="TypeScriptGeneratedFilesManager">
|
||||||
@@ -213,9 +238,10 @@
|
|||||||
<MESSAGE value="Plotting of elegant results implemented" />
|
<MESSAGE value="Plotting of elegant results implemented" />
|
||||||
<MESSAGE value="First release of ElegantTools" />
|
<MESSAGE value="First release of ElegantTools" />
|
||||||
<MESSAGE value="Fixed to filter for non-existing elements when initializing from a setting file" />
|
<MESSAGE value="Fixed to filter for non-existing elements when initializing from a setting file" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="Fixed to filter for non-existing elements when initializing from a setting file" />
|
<MESSAGE value="Migrating repo" />
|
||||||
|
<option name="LAST_COMMIT_MESSAGE" value="Migrating repo" />
|
||||||
</component>
|
</component>
|
||||||
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
||||||
<SUITE FILE_PATH="coverage/ElegantTools$ElegantTools.coverage" NAME="ElegantTools Coverage Results" MODIFIED="1769421815378" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
<SUITE FILE_PATH="coverage/ElegantTools$ElegantTools.coverage" NAME="ElegantTools Coverage Results" MODIFIED="1772718092788" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
+15
-1
@@ -1,5 +1,5 @@
|
|||||||
import sys
|
import sys
|
||||||
#import json
|
import json
|
||||||
#import webbrowser
|
#import webbrowser
|
||||||
#import subprocess
|
#import subprocess
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
@@ -38,6 +38,7 @@ class ElegantTools(QtWidgets.QMainWindow, Ui_ElegantGUI):
|
|||||||
self.UIDistCenter.clicked.connect(self.centerDist)
|
self.UIDistCenter.clicked.connect(self.centerDist)
|
||||||
self.UIDistCut.clicked.connect(self.cutDist)
|
self.UIDistCut.clicked.connect(self.cutDist)
|
||||||
self.UIDistInput.clicked.connect(self.setPreferredDist)
|
self.UIDistInput.clicked.connect(self.setPreferredDist)
|
||||||
|
self.UILoadOpticsSettings.clicked.connect(self.loadOpticsSettings)
|
||||||
self.UILoadReference.clicked.connect(self.loadLattice)
|
self.UILoadReference.clicked.connect(self.loadLattice)
|
||||||
self.UISaveReference.clicked.connect(self.saveLattice)
|
self.UISaveReference.clicked.connect(self.saveLattice)
|
||||||
|
|
||||||
@@ -103,6 +104,19 @@ class ElegantTools(QtWidgets.QMainWindow, Ui_ElegantGUI):
|
|||||||
return
|
return
|
||||||
self.model.loadLatticeSettings(fileName)
|
self.model.loadLatticeSettings(fileName)
|
||||||
|
|
||||||
|
def loadOpticsSettings(self):
|
||||||
|
options = QtWidgets.QFileDialog.Options()
|
||||||
|
options |= QtWidgets.QFileDialog.DontUseNativeDialog
|
||||||
|
fileName, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Open Lattice Settings",
|
||||||
|
"LatticeSettings/default.json",
|
||||||
|
"Json Files(*.json)", options=options)
|
||||||
|
if not fileName:
|
||||||
|
return
|
||||||
|
with open(fileName, 'r', encoding='utf-8') as f:
|
||||||
|
settings = json.load(f)
|
||||||
|
self.model.loadSettings(settings)
|
||||||
|
|
||||||
|
|
||||||
def saveLattice(self):
|
def saveLattice(self):
|
||||||
options = QtWidgets.QFileDialog.Options()
|
options = QtWidgets.QFileDialog.Options()
|
||||||
options |= QtWidgets.QFileDialog.DontUseNativeDialog
|
options |= QtWidgets.QFileDialog.DontUseNativeDialog
|
||||||
|
|||||||
+78
-59
@@ -1,7 +1,8 @@
|
|||||||
import sdds
|
import pysdds
|
||||||
import copy
|
import copy
|
||||||
import subprocess
|
import subprocess
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
class Distribution:
|
class Distribution:
|
||||||
def __init__(self,parent=None,filename=None):
|
def __init__(self,parent=None,filename=None):
|
||||||
@@ -14,41 +15,56 @@ class Distribution:
|
|||||||
self.loadDist()
|
self.loadDist()
|
||||||
|
|
||||||
def getQ(self):
|
def getQ(self):
|
||||||
return self.dist.parameterData[self.parameters.index('Charge')][0]
|
return self.Q
|
||||||
|
|
||||||
def plotLPS(self):
|
def plotLPS(self):
|
||||||
x = self.dist.columnData[self.columns.index('t')][0]
|
self.parent.plot.LPS(self.t,self.p,self.Q)
|
||||||
y = self.dist.columnData[self.columns.index('p')][0]
|
|
||||||
Q = self.dist.parameterData[self.parameters.index('Charge')][0]
|
|
||||||
self.parent.plot.LPS(x,y,Q)
|
|
||||||
|
|
||||||
def loadDist(self):
|
def loadDist(self):
|
||||||
if self.filename is None:
|
if self.filename is None:
|
||||||
return
|
return
|
||||||
self.dist = sdds.load(self.filename)
|
self.dist = pysdds.read(self.filename)
|
||||||
self.distcopy = copy.deepcopy(self.dist)
|
self.distCopy = copy.deepcopy(self.dist)
|
||||||
self.columns = self.dist.columnName
|
self.Q = self.dist.par('Charge').data[0]
|
||||||
self.parameters =self.dist.parameterName
|
self.x = self.dist.col('x').data[0]
|
||||||
Q = self.dist.parameterData[self.parameters.index('Charge')][0]
|
self.xp = self.dist.col('xp').data[0]
|
||||||
if Q < 1e-15:
|
self.y = self.dist.col('y').data[0]
|
||||||
Q = float(str(self.parent.UIDistCharge.text()))*1e-12
|
self.yp = self.dist.col('yp').data[0]
|
||||||
self.dist.setParameterValue('Charge',Q)
|
self.t = self.dist.col('t').data[0]
|
||||||
self.analyseBeam(self.filename,Q)
|
self.p = self.dist.col('p').data[0]
|
||||||
|
|
||||||
|
if self.Q < 1e-15:
|
||||||
|
self.Q = float(str(self.parent.UIDistCharge.text()))*1e-12
|
||||||
self.plotLPS()
|
self.plotLPS()
|
||||||
|
|
||||||
|
def getTwiss(self,x,xp,p):
|
||||||
|
x1 = np.mean(x)
|
||||||
|
x2= np.mean(x*x)
|
||||||
|
xp1 = np.mean(xp)
|
||||||
|
xp2 = np.mean(xp*xp)
|
||||||
|
xxp1 = np.mean(x*xp)
|
||||||
|
g1=np.mean(p)
|
||||||
|
ex = np.sqrt((x2-x1*x1)*(xp2-xp1*xp1)-(xxp1-x1*xp1)**2)*g1
|
||||||
|
bx = (x2-x1*x1)*g1/ex
|
||||||
|
ax = - (xxp1-x1*xp1)*g1/ex
|
||||||
|
|
||||||
|
return bx,ax,ex
|
||||||
|
|
||||||
def analyseBeamShort(self,filename):
|
def analyseBeamShort(self,filename):
|
||||||
output = 'Runs/analysebeam.sdds'
|
dist = pysdds.read(filename)
|
||||||
subprocess.run(['sddsanalyzebeam', filename, output])
|
p = dist.col('p').data[0]
|
||||||
fields = ['betax', 'betay', 'alphax', 'alphay', 'pAverage']
|
x = dist.col('x').data[0]
|
||||||
out = sdds.load(output)
|
xp = dist.col('xp').data[0]
|
||||||
|
y = dist.col('y').data[0]
|
||||||
|
yp = dist.col('yp').data[0]
|
||||||
|
bx, ax, ex = self.getTwiss(x,xp,p)
|
||||||
|
by, ay, ey = self.getTwiss(y,yp,p)
|
||||||
res={}
|
res={}
|
||||||
for i ,field in enumerate(fields):
|
res['betax']=bx
|
||||||
idx = out.columnName.index(field)
|
res['alphax']=ax
|
||||||
res[field]=out.columnData[idx][0][0]
|
res['betay'] = by
|
||||||
res['Q']=self.dist.parameterData[self.parameters.index('Charge')][0]
|
res['alphay'] = ay
|
||||||
del out
|
res['pAverage'] = np.mean(p)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def analyseBeam(self,filename,Q):
|
def analyseBeam(self,filename,Q):
|
||||||
@@ -89,53 +105,56 @@ class Distribution:
|
|||||||
|
|
||||||
|
|
||||||
def addBlurr(self):
|
def addBlurr(self):
|
||||||
p=self.dist.columnData[self.columns.index('p')][0]
|
ns=len(self.p)
|
||||||
ns=len(p)
|
|
||||||
blurr = float(str(self.parent.UIDistSpread.text())) / 511.
|
blurr = float(str(self.parent.UIDistSpread.text())) / 511.
|
||||||
dg = np.random.normal(0, blurr, size=ns)
|
dg = np.random.normal(0, blurr, size=ns)
|
||||||
self.dist.setColumnValueList('p', [p[i]+dg[i] for i in range(ns)])
|
self.p += dg
|
||||||
self.plotLPS()
|
self.plotLPS()
|
||||||
|
|
||||||
def centerDist(self):
|
def centerDist(self):
|
||||||
Q = float(str(self.parent.UIDistCharge.text()))*1e-12
|
self.Q = float(str(self.parent.UIDistCharge.text()))*1e-12
|
||||||
self.dist.setParameterValue('Charge', Q)
|
|
||||||
pCenter = float(str(self.parent.UIDistEnergy.text()))/0.511
|
pCenter = float(str(self.parent.UIDistEnergy.text()))/0.511
|
||||||
p = self.dist.columnData[self.columns.index('p')][0]
|
self.p = self.p - np.mean(self.p)+pCenter
|
||||||
p = p - np.mean(p)+pCenter
|
|
||||||
self.dist.columnData[self.columns.index('p')][0] = [p0 for p0 in p]
|
|
||||||
#self.dist.setColumnValueList('p', p)
|
|
||||||
self.plotLPS()
|
self.plotLPS()
|
||||||
|
|
||||||
|
|
||||||
def cutDist(self):
|
def cutDist(self):
|
||||||
cut = float(str(self.parent.UIDistLength.text()))
|
sigma = float(str(self.parent.UIDistLength.text()))
|
||||||
t = self.dist.columnData[self.columns.index('t')][0]
|
if sigma <=0:
|
||||||
nti=len(t)
|
return
|
||||||
t0 = np.mean(t)
|
rmsT=np.std(self.t)
|
||||||
trms = np.std(t)
|
idx=np.argwhere(np.abs(self.t)< rmsT*sigma)
|
||||||
tmin = t0-cut*trms
|
N0 = float(len(self.t))
|
||||||
tmax = t0+cut*trms
|
self.x=self.x[idx]
|
||||||
idx = np.argwhere(np.logical_and(t > tmin,t < tmax))
|
self.y=self.y[idx]
|
||||||
ntf = len(idx)
|
self.xp=self.xp[idx]
|
||||||
for i, fld in enumerate(self.columns):
|
self.yp=self.yp[idx]
|
||||||
dat = np.array(self.dist.columnData[i][0])
|
self.p=self.p[idx]
|
||||||
self.dist.setColumnValueList(fld, [d for d in dat[idx].ravel()])
|
self.t=self.t[idx]
|
||||||
Q = self.dist.parameterData[self.parameters.index('Charge')][0]*float(ntf)/float(nti)
|
N1 = float(len(self.t))
|
||||||
self.dist.setParameterValue('Charge', Q)
|
self.Q = self.Q*N1/N0
|
||||||
self.plotLPS()
|
self.plotLPS()
|
||||||
|
|
||||||
def revertDist(self):
|
def revertDist(self):
|
||||||
self.dist=copy.deepcopy(self.dist)
|
self.dist=copy.deepcopy(self.dist)
|
||||||
|
|
||||||
def saveDist(self,filename):
|
def saveDist(self,filename):
|
||||||
x=sdds.SDDS()
|
if len(self.t.shape) > 1:
|
||||||
x.mode = sdds.SDDS_BINARY
|
meas_df = {'t': self.t[:, 0], 'p': self.p[:, 0], 'x': self.x[:, 0], 'xp': self.xp[:, 0],
|
||||||
x.description[0]="test"
|
'y': self.y[:, 0], 'yp': self.yp[:, 0], }
|
||||||
x.description[1]="test"
|
else:
|
||||||
x.parameterName=self.dist.parameterName
|
meas_df = {'t': self.t[:], 'p': self.p[:], 'x': self.x[:], 'xp': self.xp[:],
|
||||||
x.parameterData=self.dist.parameterData
|
'y': self.y[:], 'yp': self.yp[:], }
|
||||||
x.parameterDefinition = self.dist.parameterDefinition
|
df_meas = pd.DataFrame.from_dict(meas_df)
|
||||||
x.columnName=self.dist.columnName
|
parameters = {'Charge': [float(self.Q)]}
|
||||||
x.columnData=[self.dist.columnData[i] for i in range(len(self.dist.columnName))]
|
subprocess.run(['rm', filename])
|
||||||
x.columnDefinition=self.dist.columnDefinition
|
sdds = pysdds.SDDSFile.from_df([df_meas], parameter_dict=parameters, mode='binary')
|
||||||
x.save(filename)
|
sdds.col('x').nm['units']= 'm'
|
||||||
del x
|
sdds.col('y').nm['units'] = 'm'
|
||||||
|
sdds.col('t').nm['units'] = 's'
|
||||||
|
sdds.col('p').nm['units'] = 'm$be$nc'
|
||||||
|
sdds.par('Charge').nm['units']='C'
|
||||||
|
sdds.validate_data()
|
||||||
|
|
||||||
|
pysdds.write(sdds, filename)
|
||||||
|
|
||||||
|
|||||||
@@ -77,27 +77,33 @@ class Model:
|
|||||||
ele.__dict__[field]/=ele.Length
|
ele.__dict__[field]/=ele.Length
|
||||||
|
|
||||||
def loadSettings(self,settings):
|
def loadSettings(self,settings):
|
||||||
self.loadSettingsGroup(settings['Quadrupole'],['k1'])
|
|
||||||
|
if not 'Phase' in settings.keys():
|
||||||
|
return False
|
||||||
|
if not settings['Phase'] == self.phase:
|
||||||
|
return False
|
||||||
|
self.loadSettingsGroup(settings['Quadrupole'], ['k1'])
|
||||||
self.loadSettingsGroup(settings['Sextupole'], ['k2'])
|
self.loadSettingsGroup(settings['Sextupole'], ['k2'])
|
||||||
self.loadSettingsGroup(settings['Dipole'], ['angle'])
|
self.loadSettingsGroup(settings['Dipole'], ['angle'])
|
||||||
self.loadSettingsGroup(settings['RF'], ['Gradient'],normalized=True)
|
self.loadSettingsGroup(settings['RF'], ['Gradient'], normalized=True)
|
||||||
self.loadSettingsGroup(settings['RF'], ['Phase'])
|
self.loadSettingsGroup(settings['RF'], ['Phase'])
|
||||||
self.loadSettingsGroup(settings['Undulator'], ['K','kx','ky'])
|
self.loadSettingsGroup(settings['Undulator'], ['K', 'kx', 'ky'])
|
||||||
self.loadSettingsGroup(settings['Kicker'], ['cory','design_kick'])
|
self.loadSettingsGroup(settings['Kicker'], ['cory', 'design_kick'])
|
||||||
E0 = settings['Energy']['energy']
|
E0 = settings['Energy']['energy']
|
||||||
if isinstance(E0,list):
|
if isinstance(E0, list):
|
||||||
E0=E0[0]
|
E0 = E0[0]
|
||||||
E0Ref = settings['Energy']['location']
|
E0Ref = settings['Energy']['location']
|
||||||
if isinstance(E0,list):
|
if isinstance(E0, list):
|
||||||
E0=E0[0]
|
E0 = E0[0]
|
||||||
self.initEnergy=E0
|
self.initEnergy = E0
|
||||||
self.initEnergyRef=E0Ref
|
self.initEnergyRef = E0Ref
|
||||||
self.om.forceEnergyAt(E0Ref, E0*1e6)
|
self.om.forceEnergyAt(E0Ref, E0 * 1e6)
|
||||||
self.startTwiss = settings['InitialCondition']
|
self.startTwiss = settings['InitialCondition']
|
||||||
self.parent.UIDistBetax.setText('%7.3f' % self.startTwiss['betax0'])
|
print('Initial Condition:',self.startTwiss)
|
||||||
self.parent.UIDistBetay.setText('%7.3f' % self.startTwiss['betay0'])
|
self.parent.UIDistBetax.setText('%7.3f' % self.startTwiss['betx'])
|
||||||
self.parent.UIDistAlphax.setText('%7.3f' % self.startTwiss['alphax0'])
|
self.parent.UIDistBetay.setText('%7.3f' % self.startTwiss['bety'])
|
||||||
self.parent.UIDistAlphay.setText('%7.3f' % self.startTwiss['alphay0'])
|
self.parent.UIDistAlphax.setText('%7.3f' % self.startTwiss['alfx'])
|
||||||
|
self.parent.UIDistAlphay.setText('%7.3f' % self.startTwiss['alfy'])
|
||||||
self.parent.UIDistEnergy.setText('%7.3f' % E0)
|
self.parent.UIDistEnergy.setText('%7.3f' % E0)
|
||||||
self.updateRFTable(settings['RF'])
|
self.updateRFTable(settings['RF'])
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import sys
|
import sys
|
||||||
import sdds
|
import pysdds
|
||||||
from PyQt5 import QtWidgets,QtGui
|
from PyQt5 import QtWidgets,QtGui
|
||||||
|
|
||||||
|
|
||||||
@@ -118,12 +118,12 @@ class ElegantPlot(QtWidgets.QMainWindow, Ui_ElegantPlotGUI):
|
|||||||
self.UITwissValues.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
|
self.UITwissValues.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
|
||||||
|
|
||||||
def loadDist(self,filename):
|
def loadDist(self,filename):
|
||||||
dist = sdds.load(filename)
|
dist = pysdds.read(filename)
|
||||||
cols=['t','p','x','xp','y','yp']
|
cols=['t','p','x','xp','y','yp']
|
||||||
self.dist.clear()
|
self.dist.clear()
|
||||||
for col in cols:
|
for col in cols:
|
||||||
self.dist[col] = dist.columnData[dist.columnName.index(col)][0]
|
self.dist[col] = dist.col(col)[0]
|
||||||
self.Q = dist.parameterData[dist.parameterName.index('Charge')][0]
|
self.Q = dist.par('Charge').data[0]
|
||||||
return filename
|
return filename
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ from threading import Thread
|
|||||||
import subprocess
|
import subprocess
|
||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
import sdds
|
import pysdds
|
||||||
|
|
||||||
from PyQt5 import QtCore
|
from PyQt5 import QtCore
|
||||||
|
|
||||||
@@ -62,7 +62,11 @@ class Track(QtCore.QObject):
|
|||||||
self.parent.preferredDist.saveDist(distfile)
|
self.parent.preferredDist.saveDist(distfile)
|
||||||
print('Input distribution copied to',distfile)
|
print('Input distribution copied to',distfile)
|
||||||
res=self.parent.preferredDist.analyseBeamShort(distfile)
|
res=self.parent.preferredDist.analyseBeamShort(distfile)
|
||||||
inputfile=self.writeInputFile('Runs',project,latfile,distfile,res)
|
print(res)
|
||||||
|
downsample=int(str(self.parent.UISkipParticles.text()))
|
||||||
|
if downsample<1:
|
||||||
|
downsample = 1
|
||||||
|
inputfile=self.writeInputFile('Runs',project,latfile,distfile,res,downsample)
|
||||||
print('Input file written to',inputfile)
|
print('Input file written to',inputfile)
|
||||||
# self.cmd=['mpirun','-np','10','Pelegant',inputfile]
|
# self.cmd=['mpirun','-np','10','Pelegant',inputfile]
|
||||||
self.cmd=['elegant',inputfile]
|
self.cmd=['elegant',inputfile]
|
||||||
@@ -74,6 +78,7 @@ class Track(QtCore.QObject):
|
|||||||
def Telegant(self):
|
def Telegant(self):
|
||||||
self.parent.UITrackOutput.appendPlainText('Starting thread to run elegant')
|
self.parent.UITrackOutput.appendPlainText('Starting thread to run elegant')
|
||||||
# p = subprocess.run(self.cmd)
|
# p = subprocess.run(self.cmd)
|
||||||
|
print('Elegant launch:',self.cmd)
|
||||||
p = subprocess.Popen(self.cmd,stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
p = subprocess.Popen(self.cmd,stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
for line in iter(p.stdout.readline, b''):
|
for line in iter(p.stdout.readline, b''):
|
||||||
self.message.emit(line.decode('utf-8').strip())
|
self.message.emit(line.decode('utf-8').strip())
|
||||||
@@ -94,18 +99,15 @@ class Track(QtCore.QObject):
|
|||||||
self.loadTracking()
|
self.loadTracking()
|
||||||
|
|
||||||
def loadTracking(self):
|
def loadTracking(self):
|
||||||
data = sdds.load(self.root+'.cen')
|
data = pysdds.read(self.root+'.cen')
|
||||||
columns = data.columnName
|
|
||||||
res = {}
|
res = {}
|
||||||
fields = ['s','ElementName','Cx','Cxp','Cy','Cyp','Cdelta','pCentral']
|
fields = ['s','ElementName','Cx','Cxp','Cy','Cyp','Cdelta','pCentral']
|
||||||
for field in fields:
|
for field in fields:
|
||||||
res[field] = data.columnData[columns.index(field)][0]
|
res[field] = data.col(field)[0]
|
||||||
del data
|
data = pysdds.read(self.root + '.sig')
|
||||||
data = sdds.load(self.root + '.sig')
|
|
||||||
columns = data.columnName
|
|
||||||
fields = ['Sx', 'Sxp', 'Sy', 'Syp', 'Sdelta', 'St','enx','eny','ecnx','ecny','betaxBeam','betayBeam','alphaxBeam','alphayBeam']
|
fields = ['Sx', 'Sxp', 'Sy', 'Syp', 'Sdelta', 'St','enx','eny','ecnx','ecny','betaxBeam','betayBeam','alphaxBeam','alphayBeam']
|
||||||
for field in fields:
|
for field in fields:
|
||||||
res[field] = data.columnData[columns.index(field)][0]
|
res[field] = data.col(field)[0]
|
||||||
del data
|
del data
|
||||||
dist = [self.root+'Inputdist.sdds']+self.getDumps()
|
dist = [self.root+'Inputdist.sdds']+self.getDumps()
|
||||||
self.parent.plot.newData(res,dist)
|
self.parent.plot.newData(res,dist)
|
||||||
@@ -126,7 +128,7 @@ class Track(QtCore.QObject):
|
|||||||
# print(msg)
|
# print(msg)
|
||||||
self.parent.UITrackOutput.appendPlainText(msg)
|
self.parent.UITrackOutput.appendPlainText(msg)
|
||||||
|
|
||||||
def writeInputFile(self,path,name,latfile,distfile,distinfo):
|
def writeInputFile(self,path,name,latfile,distfile,distinfo,ds):
|
||||||
filename = '%s/%s.ele' % (path, name)
|
filename = '%s/%s.ele' % (path, name)
|
||||||
with open(filename, 'w') as fid:
|
with open(filename, 'w') as fid:
|
||||||
fid.write('&run_setup\n')
|
fid.write('&run_setup\n')
|
||||||
@@ -152,7 +154,6 @@ class Track(QtCore.QObject):
|
|||||||
fid.write('\tn_steps\t= 1,\n')
|
fid.write('\tn_steps\t= 1,\n')
|
||||||
fid.write('\treset_rf_for_each_step = 1\n')
|
fid.write('\treset_rf_for_each_step = 1\n')
|
||||||
fid.write('&end\n\n')
|
fid.write('&end\n\n')
|
||||||
|
|
||||||
fid.write('&twiss_output\n')
|
fid.write('&twiss_output\n')
|
||||||
fid.write('\tfilename\t= %s/%%s.twi,\n' % path)
|
fid.write('\tfilename\t= %s/%%s.twi,\n' % path)
|
||||||
fid.write('\tmatched\t\t= 0,\n')
|
fid.write('\tmatched\t\t= 0,\n')
|
||||||
@@ -164,7 +165,7 @@ class Track(QtCore.QObject):
|
|||||||
|
|
||||||
fid.write('&sdds_beam\n')
|
fid.write('&sdds_beam\n')
|
||||||
fid.write('\tinput_type= "elegant",\n')
|
fid.write('\tinput_type= "elegant",\n')
|
||||||
fid.write('\tsample_interval\t= 1,\n')
|
fid.write('\tsample_interval\t= %d,\n' % ds)
|
||||||
fid.write('\tinput = %s,\n' % distfile)
|
fid.write('\tinput = %s,\n' % distfile)
|
||||||
fid.write('\treuse_bunch\t= 0 \n')
|
fid.write('\treuse_bunch\t= 0 \n')
|
||||||
fid.write('&end\n\n')
|
fid.write('&end\n\n')
|
||||||
|
|||||||
+37
-14
@@ -28,8 +28,8 @@ class Ui_ElegantGUI(object):
|
|||||||
self.TabMaster.setObjectName("TabMaster")
|
self.TabMaster.setObjectName("TabMaster")
|
||||||
self.tab_3 = QtWidgets.QWidget()
|
self.tab_3 = QtWidgets.QWidget()
|
||||||
self.tab_3.setObjectName("tab_3")
|
self.tab_3.setObjectName("tab_3")
|
||||||
self.horizontalLayout = QtWidgets.QHBoxLayout(self.tab_3)
|
self.verticalLayout_7 = QtWidgets.QVBoxLayout(self.tab_3)
|
||||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
self.verticalLayout_7.setObjectName("verticalLayout_7")
|
||||||
self.widget_2 = QtWidgets.QWidget(self.tab_3)
|
self.widget_2 = QtWidgets.QWidget(self.tab_3)
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
@@ -100,10 +100,26 @@ class Ui_ElegantGUI(object):
|
|||||||
self.label_7 = QtWidgets.QLabel(self.widget_2)
|
self.label_7 = QtWidgets.QLabel(self.widget_2)
|
||||||
self.label_7.setObjectName("label_7")
|
self.label_7.setObjectName("label_7")
|
||||||
self.verticalLayout.addWidget(self.label_7)
|
self.verticalLayout.addWidget(self.label_7)
|
||||||
|
self.horizontalLayout = QtWidgets.QHBoxLayout()
|
||||||
|
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||||
self.UITrackInput = QtWidgets.QLineEdit(self.widget_2)
|
self.UITrackInput = QtWidgets.QLineEdit(self.widget_2)
|
||||||
self.UITrackInput.setReadOnly(True)
|
self.UITrackInput.setReadOnly(True)
|
||||||
self.UITrackInput.setObjectName("UITrackInput")
|
self.UITrackInput.setObjectName("UITrackInput")
|
||||||
self.verticalLayout.addWidget(self.UITrackInput)
|
self.horizontalLayout.addWidget(self.UITrackInput)
|
||||||
|
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||||
|
self.horizontalLayout.addItem(spacerItem)
|
||||||
|
self.label_9 = QtWidgets.QLabel(self.widget_2)
|
||||||
|
self.label_9.setObjectName("label_9")
|
||||||
|
self.horizontalLayout.addWidget(self.label_9)
|
||||||
|
self.UISkipParticles = QtWidgets.QLineEdit(self.widget_2)
|
||||||
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
|
||||||
|
sizePolicy.setHorizontalStretch(0)
|
||||||
|
sizePolicy.setVerticalStretch(0)
|
||||||
|
sizePolicy.setHeightForWidth(self.UISkipParticles.sizePolicy().hasHeightForWidth())
|
||||||
|
self.UISkipParticles.setSizePolicy(sizePolicy)
|
||||||
|
self.UISkipParticles.setObjectName("UISkipParticles")
|
||||||
|
self.horizontalLayout.addWidget(self.UISkipParticles)
|
||||||
|
self.verticalLayout.addLayout(self.horizontalLayout)
|
||||||
self.UITrackDoLSC = QtWidgets.QCheckBox(self.widget_2)
|
self.UITrackDoLSC = QtWidgets.QCheckBox(self.widget_2)
|
||||||
self.UITrackDoLSC.setChecked(True)
|
self.UITrackDoLSC.setChecked(True)
|
||||||
self.UITrackDoLSC.setObjectName("UITrackDoLSC")
|
self.UITrackDoLSC.setObjectName("UITrackDoLSC")
|
||||||
@@ -123,7 +139,7 @@ class Ui_ElegantGUI(object):
|
|||||||
self.UITrackOutput = QtWidgets.QPlainTextEdit(self.widget_2)
|
self.UITrackOutput = QtWidgets.QPlainTextEdit(self.widget_2)
|
||||||
self.UITrackOutput.setObjectName("UITrackOutput")
|
self.UITrackOutput.setObjectName("UITrackOutput")
|
||||||
self.verticalLayout.addWidget(self.UITrackOutput)
|
self.verticalLayout.addWidget(self.UITrackOutput)
|
||||||
self.horizontalLayout.addWidget(self.widget_2)
|
self.verticalLayout_7.addWidget(self.widget_2)
|
||||||
self.TabMaster.addTab(self.tab_3, "")
|
self.TabMaster.addTab(self.tab_3, "")
|
||||||
self.tab_8 = QtWidgets.QWidget()
|
self.tab_8 = QtWidgets.QWidget()
|
||||||
self.tab_8.setObjectName("tab_8")
|
self.tab_8.setObjectName("tab_8")
|
||||||
@@ -147,8 +163,8 @@ class Ui_ElegantGUI(object):
|
|||||||
self.UIDistAnalysis.setReadOnly(True)
|
self.UIDistAnalysis.setReadOnly(True)
|
||||||
self.UIDistAnalysis.setObjectName("UIDistAnalysis")
|
self.UIDistAnalysis.setObjectName("UIDistAnalysis")
|
||||||
self.verticalLayout_4.addWidget(self.UIDistAnalysis)
|
self.verticalLayout_4.addWidget(self.UIDistAnalysis)
|
||||||
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||||
self.verticalLayout_4.addItem(spacerItem)
|
self.verticalLayout_4.addItem(spacerItem1)
|
||||||
self.UIDistInput = QtWidgets.QPushButton(self.tab_8)
|
self.UIDistInput = QtWidgets.QPushButton(self.tab_8)
|
||||||
self.UIDistInput.setObjectName("UIDistInput")
|
self.UIDistInput.setObjectName("UIDistInput")
|
||||||
self.verticalLayout_4.addWidget(self.UIDistInput)
|
self.verticalLayout_4.addWidget(self.UIDistInput)
|
||||||
@@ -227,8 +243,8 @@ class Ui_ElegantGUI(object):
|
|||||||
self.UIDistCut = QtWidgets.QPushButton(self.tab_8)
|
self.UIDistCut = QtWidgets.QPushButton(self.tab_8)
|
||||||
self.UIDistCut.setObjectName("UIDistCut")
|
self.UIDistCut.setObjectName("UIDistCut")
|
||||||
self.verticalLayout_3.addWidget(self.UIDistCut)
|
self.verticalLayout_3.addWidget(self.UIDistCut)
|
||||||
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||||
self.verticalLayout_3.addItem(spacerItem1)
|
self.verticalLayout_3.addItem(spacerItem2)
|
||||||
self.UIDistSave = QtWidgets.QPushButton(self.tab_8)
|
self.UIDistSave = QtWidgets.QPushButton(self.tab_8)
|
||||||
self.UIDistSave.setObjectName("UIDistSave")
|
self.UIDistSave.setObjectName("UIDistSave")
|
||||||
self.verticalLayout_3.addWidget(self.UIDistSave)
|
self.verticalLayout_3.addWidget(self.UIDistSave)
|
||||||
@@ -246,6 +262,10 @@ class Ui_ElegantGUI(object):
|
|||||||
self.UISaveReference = QtWidgets.QPushButton(self.tab_2)
|
self.UISaveReference = QtWidgets.QPushButton(self.tab_2)
|
||||||
self.UISaveReference.setObjectName("UISaveReference")
|
self.UISaveReference.setObjectName("UISaveReference")
|
||||||
self.verticalLayout_2.addWidget(self.UISaveReference)
|
self.verticalLayout_2.addWidget(self.UISaveReference)
|
||||||
|
self.UILoadOpticsSettings = QtWidgets.QPushButton(self.tab_2)
|
||||||
|
self.UILoadOpticsSettings.setStyleSheet("background-color: rgb(255, 255, 127);")
|
||||||
|
self.UILoadOpticsSettings.setObjectName("UILoadOpticsSettings")
|
||||||
|
self.verticalLayout_2.addWidget(self.UILoadOpticsSettings)
|
||||||
self.label_3 = QtWidgets.QLabel(self.tab_2)
|
self.label_3 = QtWidgets.QLabel(self.tab_2)
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
@@ -332,8 +352,8 @@ class Ui_ElegantGUI(object):
|
|||||||
self.UIDeleteDump = QtWidgets.QPushButton(self.tab_2)
|
self.UIDeleteDump = QtWidgets.QPushButton(self.tab_2)
|
||||||
self.UIDeleteDump.setObjectName("UIDeleteDump")
|
self.UIDeleteDump.setObjectName("UIDeleteDump")
|
||||||
self.verticalLayout_2.addWidget(self.UIDeleteDump)
|
self.verticalLayout_2.addWidget(self.UIDeleteDump)
|
||||||
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||||
self.verticalLayout_2.addItem(spacerItem2)
|
self.verticalLayout_2.addItem(spacerItem3)
|
||||||
self.horizontalLayout_2.addLayout(self.verticalLayout_2)
|
self.horizontalLayout_2.addLayout(self.verticalLayout_2)
|
||||||
self.verticalLayout_6 = QtWidgets.QVBoxLayout()
|
self.verticalLayout_6 = QtWidgets.QVBoxLayout()
|
||||||
self.verticalLayout_6.setObjectName("verticalLayout_6")
|
self.verticalLayout_6.setObjectName("verticalLayout_6")
|
||||||
@@ -377,8 +397,8 @@ class Ui_ElegantGUI(object):
|
|||||||
self.UIAddSectionDump = QtWidgets.QPushButton(self.tab_2)
|
self.UIAddSectionDump = QtWidgets.QPushButton(self.tab_2)
|
||||||
self.UIAddSectionDump.setObjectName("UIAddSectionDump")
|
self.UIAddSectionDump.setObjectName("UIAddSectionDump")
|
||||||
self.verticalLayout_6.addWidget(self.UIAddSectionDump)
|
self.verticalLayout_6.addWidget(self.UIAddSectionDump)
|
||||||
spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||||
self.verticalLayout_6.addItem(spacerItem3)
|
self.verticalLayout_6.addItem(spacerItem4)
|
||||||
self.horizontalLayout_2.addLayout(self.verticalLayout_6)
|
self.horizontalLayout_2.addLayout(self.verticalLayout_6)
|
||||||
self.TabMaster.addTab(self.tab_2, "")
|
self.TabMaster.addTab(self.tab_2, "")
|
||||||
self.verticalLayout_5.addWidget(self.TabMaster)
|
self.verticalLayout_5.addWidget(self.TabMaster)
|
||||||
@@ -521,7 +541,7 @@ class Ui_ElegantGUI(object):
|
|||||||
self.menubar.addAction(self.menuHelp.menuAction())
|
self.menubar.addAction(self.menuHelp.menuAction())
|
||||||
|
|
||||||
self.retranslateUi(ElegantGUI)
|
self.retranslateUi(ElegantGUI)
|
||||||
self.TabMaster.setCurrentIndex(0)
|
self.TabMaster.setCurrentIndex(2)
|
||||||
self.actionQuit.triggered.connect(ElegantGUI.close) # type: ignore
|
self.actionQuit.triggered.connect(ElegantGUI.close) # type: ignore
|
||||||
QtCore.QMetaObject.connectSlotsByName(ElegantGUI)
|
QtCore.QMetaObject.connectSlotsByName(ElegantGUI)
|
||||||
|
|
||||||
@@ -535,9 +555,11 @@ class Ui_ElegantGUI(object):
|
|||||||
self.UITrackStart.setText(_translate("ElegantGUI", "SINLH01"))
|
self.UITrackStart.setText(_translate("ElegantGUI", "SINLH01"))
|
||||||
self.label_2.setText(_translate("ElegantGUI", "End-Section"))
|
self.label_2.setText(_translate("ElegantGUI", "End-Section"))
|
||||||
self.label.setText(_translate("ElegantGUI", "Start-Section"))
|
self.label.setText(_translate("ElegantGUI", "Start-Section"))
|
||||||
self.UITrackEnd.setText(_translate("ElegantGUI", "SATBD02"))
|
self.UITrackEnd.setText(_translate("ElegantGUI", "SINDI02"))
|
||||||
self.label_7.setText(_translate("ElegantGUI", "Input Distribution"))
|
self.label_7.setText(_translate("ElegantGUI", "Input Distribution"))
|
||||||
self.UITrackInput.setText(_translate("ElegantGUI", "not yet defined"))
|
self.UITrackInput.setText(_translate("ElegantGUI", "not yet defined"))
|
||||||
|
self.label_9.setText(_translate("ElegantGUI", "Skip"))
|
||||||
|
self.UISkipParticles.setText(_translate("ElegantGUI", "10"))
|
||||||
self.UITrackDoLSC.setText(_translate("ElegantGUI", "Include Longitudinal Space Charge"))
|
self.UITrackDoLSC.setText(_translate("ElegantGUI", "Include Longitudinal Space Charge"))
|
||||||
self.UITrackDoCSR.setText(_translate("ElegantGUI", "Include Coherent Synchrotron Radiation"))
|
self.UITrackDoCSR.setText(_translate("ElegantGUI", "Include Coherent Synchrotron Radiation"))
|
||||||
self.UITrackAutoAlign.setText(_translate("ElegantGUI", "Align Beam After Each Chicane"))
|
self.UITrackAutoAlign.setText(_translate("ElegantGUI", "Align Beam After Each Chicane"))
|
||||||
@@ -571,6 +593,7 @@ class Ui_ElegantGUI(object):
|
|||||||
self.TabMaster.setTabText(self.TabMaster.indexOf(self.tab_8), _translate("ElegantGUI", "Distribution"))
|
self.TabMaster.setTabText(self.TabMaster.indexOf(self.tab_8), _translate("ElegantGUI", "Distribution"))
|
||||||
self.UILoadReference.setText(_translate("ElegantGUI", "Load Settings"))
|
self.UILoadReference.setText(_translate("ElegantGUI", "Load Settings"))
|
||||||
self.UISaveReference.setText(_translate("ElegantGUI", "Save Settings"))
|
self.UISaveReference.setText(_translate("ElegantGUI", "Save Settings"))
|
||||||
|
self.UILoadOpticsSettings.setText(_translate("ElegantGUI", "Import OpticsTool Settings"))
|
||||||
self.label_3.setText(_translate("ElegantGUI", "RF Settings"))
|
self.label_3.setText(_translate("ElegantGUI", "RF Settings"))
|
||||||
item = self.UIRFSettings.verticalHeaderItem(0)
|
item = self.UIRFSettings.verticalHeaderItem(0)
|
||||||
item.setText(_translate("ElegantGUI", "New Row"))
|
item.setText(_translate("ElegantGUI", "New Row"))
|
||||||
|
|||||||
+50
-3
@@ -24,13 +24,13 @@
|
|||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>2</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tab_3">
|
<widget class="QWidget" name="tab_3">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
<string>Track</string>
|
<string>Track</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QVBoxLayout" name="verticalLayout_7">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QWidget" name="widget_2" native="true">
|
<widget class="QWidget" name="widget_2" native="true">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@@ -135,7 +135,7 @@
|
|||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>SATBD02</string>
|
<string>SINDI02</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -148,6 +148,8 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLineEdit" name="UITrackInput">
|
<widget class="QLineEdit" name="UITrackInput">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -158,6 +160,41 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_9">
|
||||||
|
<property name="text">
|
||||||
|
<string>Skip</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="UISkipParticles">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>10</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="UITrackDoLSC">
|
<widget class="QCheckBox" name="UITrackDoLSC">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -469,6 +506,16 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="UILoadOpticsSettings">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color: rgb(255, 255, 127);</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Import OpticsTool Settings</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_3">
|
<widget class="QLabel" name="label_3">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
|
|||||||
Reference in New Issue
Block a user