Related projects¶
This is a short overview over the components involved in madgui development:
![digraph {
node [fontsize=11];
subgraph cluster_0 {
madgui -> pyqt;
madgui -> hit_acs;
madgui -> cpymad;
madgui [label = "madgui"];
pyqt [label = "PyQt5"];
hit_acs [label = "hit_acs"];
cpymad [label = "cpymad"];
{ rank = same; pyqt; hit_acs; cpymad; }
label="python";
fontsize=10;
fontcolor=gray;
color=gray;
}
madgui -> hit_models;
hit_models [label = "hit_models"];
hit_acs -> beam;
cpymad -> madx;
pyqt -> user;
{ rank = same; madx; beam; }
// hit_models -> cpymad [style=dashed, color=gray];
hit_models -> madx [style=dashed, color=gray, constraint=false];
madx [shape=rectangle, label="MAD-X"];
beam [shape=rectangle, label="BeamOptikDLL"];
user [shape=rectangle, label="User"];
}](../_images/graphviz-5fb33ee8bf6eb14a0fe0fc4b4e9c7a87184dbe72.png)
madgui: main application repository that contains GUI code and orchestrates the interaction between different parts
cpymad: python binding for MAD-X. It allows to start, access and control the MAD-X interpreter from python.
MAD-X: accelerator simulation code developed by CERN, used for underlying computations. Note that although “open source” it is not “free software”.
hit_acs: python binding for the hit accelerator control system, specifically the
BeamOptikDLL.dll
. This component is required for online access at HIT. It is possible to replace this component with another package with similar API to facilitate access to other control systems.hit_models: contains the MAD-X model definitions for the HIT beam lines
madgui-installer: scripts to create an offline installer with all dependencies for usage on the control system PCs (which don’t have internet and therefore can’t download dependencies automatically)
PyQt5: GUI framework.
Further resources:
the MAD-X user’s guide is an essential resource and a must read
Qt5 documentation use this as reference for developing with Qt. It is often much better and complete than PyQt-specific references. The PyQt API is essentially the same just with C++ translated to python.