From 935d55beae7c3de552819e69d6ffa56e4d67107f Mon Sep 17 00:00:00 2001
From: JoschD <26184899+JoschD@users.noreply.github.com>
Date: Thu, 15 May 2025 18:37:53 +0200
Subject: [PATCH 01/25] moved ideas to codi, omc3 all around
---
docs/guis/about.md | 32 ++++++++---
docs/guis/betabeat/ampdet.md | 1 +
docs/guis/betabeat/analysis_panel.md | 8 ++-
docs/guis/betabeat/beam_selection.md | 52 ++++++------------
docs/guis/betabeat/betabeatsource.md | 7 +++
docs/guis/betabeat/defaults.md | 60 +++++++++++++++++++++
docs/guis/betabeat/gui.md | 16 ++++--
docs/guis/betabeat/omc3.md | 79 ----------------------------
docs/guis/betabeat/optics_panel.md | 9 +++-
docs/guis/betabeat/plots.md | 16 ++++++
docs/guis/betabeat/settings.md | 8 +++
docs/omc_team/ideas.md | 70 +++++-------------------
mkdocs.yml | 6 ++-
13 files changed, 177 insertions(+), 187 deletions(-)
create mode 100644 docs/guis/betabeat/ampdet.md
create mode 100644 docs/guis/betabeat/betabeatsource.md
create mode 100644 docs/guis/betabeat/defaults.md
delete mode 100644 docs/guis/betabeat/omc3.md
create mode 100644 docs/guis/betabeat/plots.md
create mode 100644 docs/guis/betabeat/settings.md
diff --git a/docs/guis/about.md b/docs/guis/about.md
index 17c3a093..3e1f4ec9 100644
--- a/docs/guis/about.md
+++ b/docs/guis/about.md
@@ -11,18 +11,18 @@ Of these, only the Beta-Beat GUI is currently developed by the team.
## Running the GUIs
The GUIs can be started from your development environment or via deployed `.jnlp` from the archives:
-
-=== "Beta-Beat"
-
- - Latest [Beta-Beating production version][prod_bbgui]{target=_blank}.
- - Latest [Beta-Beating development version][dev_bbgui]{target=_blank}.
- - Complete [list of releases][releases_bbgui]{target=_blank}.
=== "Beta-Beat-OMC3"
- Latest [Beta-Beating production version][prod_bbgui_omc3]{target=_blank}.
- Latest [Beta-Beating development version][dev_bbgui_omc3]{target=_blank}.
- Complete [list of releases][releases_bbgui_omc3]{target=_blank}.
+
+=== "Beta-Beat (Legacy)"
+
+ - Latest [Beta-Beating production version][prod_bbgui]{target=_blank}.
+ - Latest [Beta-Beating development version][dev_bbgui]{target=_blank}.
+ - Complete [list of releases][releases_bbgui]{target=_blank}.
=== "Kmod"
@@ -66,6 +66,26 @@ The following are required to run the GUIs:
You may encounter the following errors:
+#### Running in the CCC in 2025
+
+On the CCC terminals, there are some issues related to finding the correct java path,
+which affects `NXCals` extraction.
+
+To avoid this, close all windows and CCMs and then run:
+
+```bash
+/user/slops/data/LHC_DATA/OP_DATA/Betabeat/launch_ccm.sh
+```
+
+This script performs the follwowing commands, which could also be done manually in a terminal:
+
+- Create a kerberos ticket: `kinit lhcop`
+- Adapt the path/set `JAVA_HOME` to use the correct java: `export PATH=/bin:$PATH` and/or `export JAVA_HOME=/usr/java/jdk` (either should be fine)
+- run `ccm` or `/mcr/bin/ccm`
+
+Then select `LHCOP` and launch the Beta-Beat GUI from the new CCM window.
+
+
#### Problems with execution due to disabled Java
If you encounter a complaint about `Java` being too old, try using `/mcr/bin/jws`.
diff --git a/docs/guis/betabeat/ampdet.md b/docs/guis/betabeat/ampdet.md
new file mode 100644
index 00000000..6730596d
--- /dev/null
+++ b/docs/guis/betabeat/ampdet.md
@@ -0,0 +1 @@
+# Amplitude Detuning Analysis
\ No newline at end of file
diff --git a/docs/guis/betabeat/analysis_panel.md b/docs/guis/betabeat/analysis_panel.md
index 04921533..df852715 100644
--- a/docs/guis/betabeat/analysis_panel.md
+++ b/docs/guis/betabeat/analysis_panel.md
@@ -38,7 +38,7 @@ After cleaning is finished, the optics function can be computed from the harmoni
-### Additional cleaning based on the tune ##
+### Additional cleaning based on the tune
Additionally, BPMs can be cleaned based on the tune values computed by harmonic analysis. The chart displaying the selected columns of harmonic analysis data has interactive cursors. These cursors can be moved manually to set the thresholds for tune-based cleaning - all BPMs having tune values outside of the set range will be removed. The cursors can be also automatically set to e.g. 4 sigmas deviation from the average tune values over all BPMs.
### Summary of cleaning steps before optics analysis
@@ -54,6 +54,12 @@ The `Frequency` tab displays the computed frequencies for every BPM.
A `Get Optics` button can be used to start the optics calculation.
This will call an external python script again, with the results available in the [Optics Panel](optics_panel.md).
+### Nattune Updater
+
+* You can set a frequency range and it does not redo the analysis but just picks the highest peak in that range and assigns it to `NATTUNE` in the lin-file.
+* This should be very helpful for amplitude detuning analysis.
+* Do NOT use the Nattune-Updater if you have free kicks (it adds a `NATTUNE`-Column to the lin-file).
+
!!! todo
Include a screenshot of the frequency panel.
diff --git a/docs/guis/betabeat/beam_selection.md b/docs/guis/betabeat/beam_selection.md
index db5e04a8..29d84fd4 100644
--- a/docs/guis/betabeat/beam_selection.md
+++ b/docs/guis/betabeat/beam_selection.md
@@ -1,43 +1,23 @@
# The beam selection Window
+!!! tip "Setting Your Defaults"
+ You can set all entries in this window to your preferred defaults for a quick start!
+ Check the [Defaults Page](defaults.md) for more details.
+
!!! todo
Include screenshot of Beam-Selection Window and describe the settings.
+### Python
-!!! tip "Setting Your Defaults"
- The GUI defaults to specific locations for which `Beta-Beat.src` directory to use, the input path of you data, etc.
- Different key-value pairs can be set inside for the desired defaults, for example:
-
- ```bash
- beam = LHCB1_RUNII_2018
- inputPath = /some/afs/location/with/your/data/
- outputPath = /some/afs/location/with/your/results/
- betaBeatPath = /some/afs/location/with/your/Beta-Beat.src/
- loadData=True
- ```
- These values can be set by a file named `bbgui_user.properties` (with the above syntax) in either the current working directory, from where you run the GUI, or in your home folder.
- The latter is only used if there is no such file in the current working directory.
-
- If you want to use a specific file located anywhere, you can also give the path to this file as the first and only argument when starting the GUI.
- It is also possible to set each of these default values by passing them as flag arguments to the GUI call, e.g:
-
- ```
- --beam LHCB1_RUNII_2018 --inputPath /some/afs/location/with/your/data/
- ```
-
-??? tip "Additional Default Settings"
- Additionally, there are some settings that can only be set via arguments.
- Their keys and default values are:
-
- ```bash
- oldFolderStructure=True
- consoleLogging=False
- checkFreeSpace=False
- ```
+In the Beam-Selection Window you need to give it a python-binary (e.g. `venv/bin/python`).
+Best would be if you have a local virtual environment.
+This **needs to have omc3 installed as a package**.
+See [omc3 on github][omc3_github_getting_started]{target=_blank}.
+```bash
+pip install git+https://github.com/pylhc/omc3.git
+```
+This is because python calls are now made by module, i.e.:
+```bash
+python -m omc3.module arg1 arg2 ...
+```
- - `oldFolderStructure` refers to the folder structure, where the `models` folder is at top level and contains the machines as subdirectories.
- Setting this value to `False` assumes (and creates) the models in a `Models` folder on the same level as `Measurements` and `Results`, i.e. within the machine-folders.
- - `consoleLogging` activates additional logging into the terminal.
- The effect is only visible if the GUI was started from the console.
- - `checkFreeSpace` activates a quick check of the available space upon start of the GUI.
- The result of this check is logged in the console, and hence also only visible if the GUI is started via terminal command.
\ No newline at end of file
diff --git a/docs/guis/betabeat/betabeatsource.md b/docs/guis/betabeat/betabeatsource.md
new file mode 100644
index 00000000..ca53bd9a
--- /dev/null
+++ b/docs/guis/betabeat/betabeatsource.md
@@ -0,0 +1,7 @@
+# BetaBeat.src
+
+Since 2025, the former `omc3` branch has been moved to the `master` branch of the GUI and is now the default for all new users.
+The "BetaBeat.src" branch of the GUI has been retired from `master` to the `BetaBeatSrc` branch
+and is no longer under active development.
+
+Legacy version are still available on CAS.
\ No newline at end of file
diff --git a/docs/guis/betabeat/defaults.md b/docs/guis/betabeat/defaults.md
new file mode 100644
index 00000000..a4c0c020
--- /dev/null
+++ b/docs/guis/betabeat/defaults.md
@@ -0,0 +1,60 @@
+# Defaults
+
+## Beam Selection Defaults
+
+(For details see the [Beam Selection](beam_selection.md) page)
+
+The GUI defaults to specific locations for which `python` binary to use, the input path of you data, etc.
+Different key-value pairs can be set inside for the desired defaults, for example:
+
+```bash
+beam = LHCB1
+inputPath = /some/afs/location/with/your/data/
+outputPath = /some/afs/location/with/your/results/
+pythonPath = /some/afs/location/with/your/python-env/bin/python
+loadData=False # True: Load already existing data in the outputPath into the GUI
+oldFolderStructure=False # True: Put `models` folder at top level instead of the current machine folder (BBS legacy)
+```
+These values can be set by a file named `bbgui_user.properties` (with the above syntax) in either the **current working directory** (from where you run the GUI), or in **your home folder**.
+The latter is only used if there is no such file in the current working directory.
+
+If you want to use a specific file located anywhere, you can also give the path to this file as the first and only argument when starting the GUI.
+It is also possible to set each of these default values by passing them as flag arguments to the GUI call, e.g:
+
+```
+--beam LHCB1 --inputPath /some/afs/location/with/your/data/
+```
+
+## Additional GUI Defaults
+
+Additionally, there are some GUI settings that can either only be set via arguments or
+modify the default value in the GUI:
+
+```bash
+consoleLogging=True # activate additional logging into the terminal (only visible if started from terminal)
+checkFreeSpace=True # check fee space at GUI start (only visible if started from terminal)
+
+# BPM-Panel
+runOptics=True # set the tickbox next to the `Analyse` button to also run the optics analysis by default
+
+# Analysis-Panel
+autoclean.limit=0.1 # set the autoclean limit
+clean.sigmas=2 # set the number of sigmas for the autoclean
+clean.bounds=0.7 # when cleaning, this ratio needs to remain otherwise the cleaning is aborted
+
+# Amplitude-Detuning-Window
+ampdet.tunecut=0.05 # limit around the given tune to exclude from the natural tune when fitting
+ampdet.window=100 # length of the moving average window for the natural tune
+ampdet.outlierLimit=0.0002 # Cut on outliears around the mean
+ampdet.usePreviousBBQ=True # Do not extract BBQ data if there is already data present
+```
+
+For more details about these functions see the [BPM-Panel](bpm_panel.md), [Analysis-Panel](analysis_panel.md) and [Amplitude-Detuning](ampdet.md) pages.
+
+## Default Settings
+
+(For details see the [Settings](settings.md) page)
+
+When saving the GUI settings, a similar file `settings_xxx.properties` is created.
+Instead of loading these settings manually, you can also copy all or a selection of these settings
+from the output file into the `bbgui_user.properties` and they will be set automatically when the GUI is started.
diff --git a/docs/guis/betabeat/gui.md b/docs/guis/betabeat/gui.md
index 28976b18..e55337f6 100644
--- a/docs/guis/betabeat/gui.md
+++ b/docs/guis/betabeat/gui.md
@@ -6,10 +6,8 @@ This section provides a short overview for the main features.
!!! info
The code documentation of the Beta-Beat GUI can be found on CERN's gitlab pages.
- The master and OMC3 branches are generated:
-
+
* [Master branch][bbgui_doc_bbsrc]{target=_blank}
- * [OMC3 branch][bbgui_doc_omc3]{target=_blank}
The GUI provides several panels, each for a defined use and with a set of options and results:
@@ -22,7 +20,15 @@ The GUI provides several panels, each for a defined use and with a set of option
This site will guide you through the GUI's layout and functionality.
For starters, check out [the basics of running the GUI](../about.md).
+!!! warning "Bug Reporting"
+ If you find bugs, please create [issues][betabeat_gui_gitlab_issues]{target=_blank} with the `OMC3-GUI` label.
-[bbgui_doc_bbsrc]: https://lhc-app-beta-beating.docs.cern.ch/master/
-[bbgui_doc_omc3]: https://lhc-app-beta-beating.docs.cern.ch/omc3/
+## General Notes
+
+### Opening Files
+* Each tab has now an Open Files button, which opens only the files specific to this tab.
+* The magic **+** button is gone, as its functionality was confusing (and there were different stories about its workings).
+
+[bbgui_doc_bbsrc]: https://lhc-app-beta-beating.docs.cern.ch/master/
+[betabeat_gui_gitlab_issues]: https://gitlab.cern.ch/acc-co/lhc/lhc-app-beta-beating/-/issues
diff --git a/docs/guis/betabeat/omc3.md b/docs/guis/betabeat/omc3.md
deleted file mode 100644
index b783272c..00000000
--- a/docs/guis/betabeat/omc3.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# Beta-Beat GUI for `omc3`
-
-!!! info
- This page is meant for people, who know the old Gui and want to use the `omc3` functionality in the GUI now!
-
-For now, this is still in beta and has a lot of not-yet-implemented functionality.
-On the up-side, it also has some new-and-improved functionality over the Beta-Beat-Source (`master`) branch.
-The basic optics analysis and plotting work!
-
-## Important changes
-
-### Python
-
-In the Beam-Selection Window you need to give it a python-binary (e.g. `venv/bin/python`).
-Best would be if you have a local virtual environment.
-This **needs to have omc3 installed as a package**.
-See [omc3 on github][omc3_github_getting_started]{target=_blank}.
-```bash
-pip install git+https://github.com/pylhc/omc3.git
-```
-This is because python calls are now made by module, i.e.:
-```bash
-python -m omc3.module arg1 arg2 ...
-```
-
-### Settings
-
-* Settings are now all in one place (the settings-button on top).
-* Entries in the settings that are lists (e.g. 'Turns' which will be `STARTTURN ENDTURN`) are given as **space-separated** values, NOT comma separated.
-* Settings can be reverted as long as you do not click apply.
-* Settings are applied automatically on ++okbtn++.
-* Settings are reset to last applied on ++cancelbtn++.
-
-### Opening Files
-
-* Each tab has now an Open Files button, which opens only the files specific to this tab.
-* The magic **+** button is gone, as its functionality was confusing (and there were different stories about its workings).
-
-### Optics Plotting
-
-* RDT and CRDT plots are added dynamically depending on the files present in the respective folders.
-* Nicer names and more structure in the tree.
-* Backend was rewritten, so it is now more modular and easier to add new plot-types.
-
-### Keys in Plots
-
-* ++lbutton++ : Draw and zoom into rectangle.
-* ++mbutton++ : Auto-zoom (in 3 Steps: 4σ, 3σ, 2σ).
-* ++rbutton++ : Undo last step.
-* ++shift+rbutton++ : Undo all steps (reset plot).
-* ++mousewheel++ : Zoom relative to mouse position.
-* ++shift+mousewheel++ : Zoom y-axis relative to mouse position.
-* ++alt+mousewheel++ : Zoom relative to plot center.
-* ++shift+alt+mousewheel++ : Zoom y-axis relative to plot center.
-
-### Nattune Updater
-
-* You can set a frequency range and it does not redo the analysis but just picks the highest peak in that range and assigns it to `NATTUNE` in the lin-file.
-* This should be very helpful for amplitude detuning analysis.
-
-## Known not to work:
-
-* Other accelerators than the `LHC` (you can trick it a bit, though, by choosing LHC and then changing the accelerator manually in the `settings`).
-* Removing turns (but you can set Start and End turn in the settings).
-* BBQ compensation for amplitude detuning can't be called directly from the GUI.
-* Things that do not work as they are not implemented in `omc3`:
- - Global Corrections,
- - SegmentBySegment,
- - Spectrum Plot Export cannot export both planes into one axis,
- - Optics Plot Export cannot have separate limits for the two plots,
- - Optics Plot Export cannot export CRDT plots,
-* Do NOT use the Nattune-Updater (in the Spectrum panel) if you have free kicks (it adds a `NATTUNE`-Column to the lin-file).
-
-!!! warning "Bug Reporting"
- If you find bugs, please create [issues][betabeat_gui_gitlab_issues]{target=_blank} with the `OMC3-GUI` label.
-
-
-[omc3_github_getting_started]: https://github.com/pylhc/omc3#getting-started
-[betabeat_gui_gitlab_issues]: https://gitlab.cern.ch/acc-co/lhc/lhc-app-beta-beating/-/issues
diff --git a/docs/guis/betabeat/optics_panel.md b/docs/guis/betabeat/optics_panel.md
index 1c848fb2..015ffb0f 100644
--- a/docs/guis/betabeat/optics_panel.md
+++ b/docs/guis/betabeat/optics_panel.md
@@ -63,4 +63,11 @@ The following methods implement different correction algorithms:
The results are outputted in the `changeparameters` files.
These files store the magnet names and corresponding correction strengths.
-They are also displayed in the [Correction Panel](correction_panel.md).
\ No newline at end of file
+They are also displayed in the [Correction Panel](correction_panel.md).
+
+
+### Optics Plotting
+
+* RDT and CRDT plots are added dynamically depending on the files present in the respective folders.
+* Nicer names and more structure in the tree.
+* Backend was rewritten, so it is now more modular and easier to add new plot-types.
\ No newline at end of file
diff --git a/docs/guis/betabeat/plots.md b/docs/guis/betabeat/plots.md
new file mode 100644
index 00000000..d7ea7cb4
--- /dev/null
+++ b/docs/guis/betabeat/plots.md
@@ -0,0 +1,16 @@
+# Plotting
+
+All plots are running with the same backend classes, which allows additional control via mouse and keyboard.
+
+
+## Keyboard/Mouse Shortcuts
+
+* ++lbutton++ : Draw and zoom into rectangle.
+* ++mbutton++ : Auto-zoom (in 3 Steps: 4σ, 3σ, 2σ).
+* ++rbutton++ : Undo last step.
+* ++shift+rbutton++ : Undo all steps (reset plot).
+* ++mousewheel++ : Zoom relative to mouse position.
+* ++shift+mousewheel++ : Zoom y-axis relative to mouse position.
+* ++alt+mousewheel++ : Zoom relative to plot center.
+* ++shift+alt+mousewheel++ : Zoom y-axis relative to plot center.
+
diff --git a/docs/guis/betabeat/settings.md b/docs/guis/betabeat/settings.md
new file mode 100644
index 00000000..045265f1
--- /dev/null
+++ b/docs/guis/betabeat/settings.md
@@ -0,0 +1,8 @@
+# Settings Window
+
+
+* Settings are now all in one place (the settings-button on top).
+* Entries in the settings that are lists (e.g. 'Turns' which will be `STARTTURN ENDTURN`) are given as **space-separated** values, NOT comma separated.
+* Settings can be reverted as long as you do not click apply.
+* Settings are applied automatically on ++okbtn++.
+* Settings are reset to last applied on ++cancelbtn++.
\ No newline at end of file
diff --git a/docs/omc_team/ideas.md b/docs/omc_team/ideas.md
index ed580587..d0462280 100644
--- a/docs/omc_team/ideas.md
+++ b/docs/omc_team/ideas.md
@@ -1,60 +1,14 @@
# Future MD Ideas
-## Run 3 MDs Ideas
-
-### Linear Optics Related
-
-* 3 New ballistic optics flavors:
- * Ballistic with beta* de-squeeze at top energy to reach above 1Km beta in dipoles, to study quadrupolar errors in dipoles. This is specially important in view of HL-LHC D2 b2 errors.
- * Telescopic for tune jitter measurements with enhanced arcs.
- * Ballistic with large vertical dispersion.
-* Half integer tune.
-* 60 degrees arc cell phase advance for HE-LHC (or 1/3 HE-LHC), and for improving knowledge on LHC itself as phase advance samples errors differently and arc sextupoles are factor ~2 weaker (more linear machine): arc errors, MCS shifts + coupling, BPM aberrations (beam signal closer to pure sin).
-* Experience HL-LHC-like injection optics with beta*=6m (pilots only).
-* Look at 11 T flux jumps with TbT data, possibly using a new optics with enhanced beta functions.
-* 2 possible experiments with TOTEM to understand the assymetry of the local dispersion in IR5:
- * Measurements with flat orbit, >60 bunches.
- * Measurements with ballistic optics.
-* Non-90 degrees arc cell phase advance to ease correction of errors in the arcs (reduce the knob degeneracy of orbit bumps at sextupoles).
-* Measure optics at smallest beta* for a long time, looking for an effect as in SKEKB where Final Focus quadrupole strength drifted by 0.01%. https://kds.kek.jp/event/39396/
-* Try Closed Orbit Distortion optics measurement as in SuperKEKB with 3-6 orbit correctors per plane and orbit fitting.
-
-### Coupling Related
-
-* Tilting triplets to correct local coupling to operate without MQSX.
-* Switching off MCS and main sextupoles in one arc to evaluate possible (systematic) vertical or horizontal misalignment of dipoles by measuring coupling and beta-beating during the b3 decay.
-In a previous MD there was a quadratic coupling increase due to the orbit bump in the arc (maybe the one without MS, tbc).
-* Crazy MD for this, could be shifting the edge of some dipoles up to see change in coupling.
-* Tilting a triplet quadrupole to check validity of the tilt measurement (with and/or without beam).
-
-### BPM related
-
-* Measure bad BPMs with low and high intensities to detect possible issues with the comparator (transistor).
-Also swap connections between good and bad BPM to identified.
-* Have one BPM unplugged to detect its noise until next technical stop.
-* Momentum compaction factor from Qs versus Voltage.
-* Snap-back with forced 3D oscillations (optics, chroma,...).
-* Maybe not OMC: 24h pilot at top energy to use damped beam for BSRT resolution measurement.
-* 0.5 um bunch from new injector chain?? Good for optics measurements, BSRT calibration etc.
-
-### K-mod related
-
-* K-Modulation with Xing angle and OFB off for Leon's Xing angle reconstruction.
-* Arc K-modulation.
-* K-modulation in IR4 during the energy ramp.
-* Reduce to one the DCCTs per circuit with pilot in the machine and ATS optics to see the impact of 2 DCCTs.
- Michele Martino also proposes increasing in 1ppm the noise of the DCCTs in one or all dipole PCs to see impact on tune jitter.
-
-### Non-Linear Optics Related
-
-* Commissioning?: Measure amplitude detuning coming from CMS solenoid by having the on and off measurements.
-* IR non-linear corrector offsets measurement.
-* Emittance growth from octupoles and chroma.
-* Amplitude detuning measurement versus crossing angle with b6 corrector on, for 5 crossing angles to evaluate performance of the technique for b6 correction.
-* Amplitude dependent optics: Dedicated settings at injection as PoP (Thomas & Barbara), alternative techniques in parallel (K-modulation with decohered beams and amplitude dependent segment-by-segment).
-* IR2 non-linear correction -> Dedicated squeeze for IR2 to allow for good triplet characterization to shed light on b4.
-* Amplitude detuning in ballistic optics.
-* ADT for single kicks.
-* b5 RDTs.
-* Measurement and correction of a3 RDTs at injection for lifetime optimization (correcting with MSSX and MSS).
-* Reduce RF voltage to decrease synchrotron tune to limit the emittance blow-up during excitation with driven and natural tunes close to each other.
+!!! note "CodiMD"
+ The content of this page is hosted on CodiMD for easy editing.
+ But you need to visit [the original codimd page](https://codimd.web.cern.ch/s/bG7VxhdGM){target=_blank}
+ to be able to login and edit!
+
+
+
diff --git a/mkdocs.yml b/mkdocs.yml
index 40db447b..aa8af87c 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -154,12 +154,16 @@ nav:
- The OMC GUIs: guis/about.md
- Beta-Beat GUI:
- About: guis/betabeat/gui.md
+ - Defaults: guis/betabeat/defaults.md
- Beam Selection: guis/betabeat/beam_selection.md
- BPM Panel: guis/betabeat/bpm_panel.md
- Analysis Panel: guis/betabeat/analysis_panel.md
- Optics Panel: guis/betabeat/optics_panel.md
+ - Settings: guis/betabeat/settings.md
+ - Plotting: guis/betabeat/plots.md
- Correction Panel: guis/betabeat/correction_panel.md
- - The omc3 branch: guis/betabeat/omc3.md
+ - Amplitude Detuning: guis/betabeat/ampdet.md
+ - BetaBeat.src: guis/betabeat/betabeatsource.md
- Kmod GUI:
- About: guis/kmod/gui.md
- Loading a Model: guis/kmod/load_model.md
From 2ce5269f0f896008ac24fc1134d2d8a436f6d33a Mon Sep 17 00:00:00 2001
From: JoschD <26184899+JoschD@users.noreply.github.com>
Date: Thu, 15 May 2025 18:57:58 +0200
Subject: [PATCH 02/25] defaults
---
docs/guis/betabeat/bpm_panel.md | 19 ++++++----
docs/guis/betabeat/defaults.md | 65 +++++++++++++++++----------------
docs/guis/betabeat/gui.md | 13 ++-----
3 files changed, 48 insertions(+), 49 deletions(-)
diff --git a/docs/guis/betabeat/bpm_panel.md b/docs/guis/betabeat/bpm_panel.md
index d124628e..cefa2df8 100644
--- a/docs/guis/betabeat/bpm_panel.md
+++ b/docs/guis/betabeat/bpm_panel.md
@@ -8,6 +8,11 @@ It can load data files for all supported beams, mostly binary SDDS files or file
## Opening Files and Applying SVD Cleaning
+### Opening Files
+
+- Each tab has now an Open Files button, which opens only the files specific to this tab.
+- The magic **+** button is gone, as its functionality was confusing (and there were different stories about its workings).
+
### Automatic BPM removal
First, BPMs are removed based on the following criteria:
@@ -21,9 +26,9 @@ First, BPMs are removed based on the following criteria:
### SVD-cleaning
Secondly, SVD cleaning is performed.
-SVD modes with localized spikes in their spatial vectors indicate faulty BPMs using `Sum square` setting to find such spikes.
+SVD modes with localized spikes in their spatial vectors indicate faulty BPMs using `Sum square` setting to find such spikes.
To globally reduce the noise on all BPM readings, only a predefined number of strongest singular modes (`Sing val cut`) remain in the turn-by-turn data.
-While the `Sum square` setting has a direct influence on the number of BPMs identified as faulty, the number of modes affects the overall noise level in turn-by-turn signal.
+While the `Sum square` setting has a direct influence on the number of BPMs identified as faulty, the number of modes affects the overall noise level in turn-by-turn signal.
The original application of SVD on BPMs data cleaning can be found [in this publication][svd_clean_rhic].
If SVD is enabled in the settings, the external SVD cleaning python script will be called for the current file during the loading process.
@@ -37,12 +42,12 @@ All the settings mentioned above can be changed in the global settings panel:
-Turn-by-turn data cleaning is summarized in the output file which can be found at:
+Turn-by-turn data cleaning is summarized in the output file which can be found at:
`Measurements/Beam1@...1-6600/Beam1@...sdds.bad_bpms_{x,y}.`
It contains BPM names and corresponding threshold which identified a BPM as faulty.
-!!! note
+!!! note
A single BPM can appear twice (for each threshold separately), e.g. in the case of exact zero flat signal.
The content of the loaded files will be displayed in two charts:
@@ -66,7 +71,7 @@ The charts can display either the measured amplitude values over turns for every
The buttons on the top left side of the pane provide useful features to handle the BPM data.
-- `Remove Turns` can be used to cut turns from the start or the end, to focus on a specified range of the data.
+- `Remove Turns` can be used to cut turns from the start or the end, to focus on a specified range of the data.
!!! todo
Include a screenshot of before-after comparison for `Remove Turns`.
@@ -79,12 +84,12 @@ The buttons on the top left side of the pane provide useful features to handle t
- `Do Analysis` spawns the configuration dialogue for the external analysis.
This will call an external program to perform harmonic analysis of the BPM data, in order to compute tunes and similar beam properties.
The results from the analysis can be seen in the [Analysis Panel](analysis_panel.md).
-
+
!!! todo
Include of screenshot of `Do Analysis` dialogue window.
!!! note
The `Create Average` option requires synchronized data from withing the same bounds, otherwise the results will be meaningless.
The figure below shows three runs from LHC beam one with synchronized peaks for every turn and their corresponding averages.
-
+
[svd_clean_rhic]: https://journals.aps.org/prab/abstract/10.1103/PhysRevSTAB.7.042801
diff --git a/docs/guis/betabeat/defaults.md b/docs/guis/betabeat/defaults.md
index a4c0c020..d1e91fc1 100644
--- a/docs/guis/betabeat/defaults.md
+++ b/docs/guis/betabeat/defaults.md
@@ -1,60 +1,61 @@
# Defaults
-## Beam Selection Defaults
+Defaults can be set by a file named `bbgui_user.properties` (with the above syntax) in either the **current working directory** (from where you run the GUI), or in **your home folder**.
+The latter is only used if there is no such file in the current working directory.
-(For details see the [Beam Selection](beam_selection.md) page)
+If you want to use a specific file named anything and located anywhere, you can also **give the path to this file as the first and only argument** when starting the GUI.
+It is also possible to set each of these default values by passing them as flag arguments to the GUI call, e.g:
+
+```bash
+--beam LHCB1 --inputPath /some/afs/location/with/your/data/
+```
+
+## Beam Selection Defaults
The GUI defaults to specific locations for which `python` binary to use, the input path of you data, etc.
Different key-value pairs can be set inside for the desired defaults, for example:
-```bash
-beam = LHCB1
+```ini
+beam = LHCB2
inputPath = /some/afs/location/with/your/data/
outputPath = /some/afs/location/with/your/results/
pythonPath = /some/afs/location/with/your/python-env/bin/python
-loadData=False # True: Load already existing data in the outputPath into the GUI
-oldFolderStructure=False # True: Put `models` folder at top level instead of the current machine folder (BBS legacy)
+loadData=False # Load already existing data in the outputPath into the GUI
+oldFolderStructure=False # Put `models` folder at top level (BBS legacy)
```
-These values can be set by a file named `bbgui_user.properties` (with the above syntax) in either the **current working directory** (from where you run the GUI), or in **your home folder**.
-The latter is only used if there is no such file in the current working directory.
-
-If you want to use a specific file located anywhere, you can also give the path to this file as the first and only argument when starting the GUI.
-It is also possible to set each of these default values by passing them as flag arguments to the GUI call, e.g:
-```
---beam LHCB1 --inputPath /some/afs/location/with/your/data/
-```
+For details see the [Beam Selection](beam_selection.md) page.
## Additional GUI Defaults
Additionally, there are some GUI settings that can either only be set via arguments or
-modify the default value in the GUI:
+modify/set the default value in the GUI fields:
-```bash
-consoleLogging=True # activate additional logging into the terminal (only visible if started from terminal)
-checkFreeSpace=True # check fee space at GUI start (only visible if started from terminal)
+```ini
+consoleLogging=False # activate additional logging (visible if started from terminal)
+checkFreeSpace=False # check fee space at GUI start (visible if started from terminal)
# BPM-Panel
-runOptics=True # set the tickbox next to the `Analyse` button to also run the optics analysis by default
+runOptics=False # set the tickbox next to the `Analyse` button
# Analysis-Panel
-autoclean.limit=0.1 # set the autoclean limit
-clean.sigmas=2 # set the number of sigmas for the autoclean
-clean.bounds=0.7 # when cleaning, this ratio needs to remain otherwise the cleaning is aborted
-
-# Amplitude-Detuning-Window
-ampdet.tunecut=0.05 # limit around the given tune to exclude from the natural tune when fitting
-ampdet.window=100 # length of the moving average window for the natural tune
-ampdet.outlierLimit=0.0002 # Cut on outliears around the mean
-ampdet.usePreviousBBQ=True # Do not extract BBQ data if there is already data present
+autoclean.limit=0.1 # set the autoclean limit
+clean.sigmas=2 # set the number of sigmas for the autoclean
+clean.bounds=0.7 # this ratio of points needs to remain otherwise cleaning aborts
+
+# Amplitude-Detuning-Window
+ampdet.tunecut=0.05 # limit around the given tune to exclude from the BBQ tune
+ampdet.window=100 # length of the moving average window for the BBQ tune
+ampdet.outlierLimit=0.0002 # Cut on outliears around the mean
+ampdet.usePreviousBBQ=False # Use previously extraced BBQ data if present
```
For more details about these functions see the [BPM-Panel](bpm_panel.md), [Analysis-Panel](analysis_panel.md) and [Amplitude-Detuning](ampdet.md) pages.
## Default Settings
-(For details see the [Settings](settings.md) page)
-
When saving the GUI settings, a similar file `settings_xxx.properties` is created.
-Instead of loading these settings manually, you can also copy all or a selection of these settings
-from the output file into the `bbgui_user.properties` and they will be set automatically when the GUI is started.
+Instead of loading these settings manually, you can also copy all or a selection of the entries
+from the output file into your `bbgui_user.properties` and they will be set automatically when the GUI is started.
+
+For details see the [Settings](settings.md) page.
diff --git a/docs/guis/betabeat/gui.md b/docs/guis/betabeat/gui.md
index e55337f6..bd3d560f 100644
--- a/docs/guis/betabeat/gui.md
+++ b/docs/guis/betabeat/gui.md
@@ -5,10 +5,9 @@ The GUI can be ran locally, provided you have access to `afs`, but most importan
This section provides a short overview for the main features.
!!! info
- The code documentation of the Beta-Beat GUI can be found on CERN's gitlab pages.
-
- * [Master branch][bbgui_doc_bbsrc]{target=_blank}
+ The gitlab CI automatically generates an [API documentation page][bbgui_doc_omc3]{target=_blank} based on the source code.
+ (A legacy version for the `BetaBeat.src` branch is [also available][bbgui_doc_bbsrc]{target=_blank}.)
The GUI provides several panels, each for a defined use and with a set of options and results:
@@ -23,12 +22,6 @@ For starters, check out [the basics of running the GUI](../about.md).
!!! warning "Bug Reporting"
If you find bugs, please create [issues][betabeat_gui_gitlab_issues]{target=_blank} with the `OMC3-GUI` label.
-## General Notes
-
-### Opening Files
-
-* Each tab has now an Open Files button, which opens only the files specific to this tab.
-* The magic **+** button is gone, as its functionality was confusing (and there were different stories about its workings).
-
+[bbgui_doc_omc3]: https://lhc-app-beta-beating.docs.cern.ch/omc3/
[bbgui_doc_bbsrc]: https://lhc-app-beta-beating.docs.cern.ch/master/
[betabeat_gui_gitlab_issues]: https://gitlab.cern.ch/acc-co/lhc/lhc-app-beta-beating/-/issues
From dcbc985c864ad376849ad9518609b2049ad5dd90 Mon Sep 17 00:00:00 2001
From: JoschD <26184899+JoschD@users.noreply.github.com>
Date: Thu, 15 May 2025 18:59:19 +0200
Subject: [PATCH 03/25] defaults again
---
docs/guis/betabeat/defaults.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/docs/guis/betabeat/defaults.md b/docs/guis/betabeat/defaults.md
index d1e91fc1..839de552 100644
--- a/docs/guis/betabeat/defaults.md
+++ b/docs/guis/betabeat/defaults.md
@@ -16,6 +16,7 @@ The GUI defaults to specific locations for which `python` binary to use, the inp
Different key-value pairs can be set inside for the desired defaults, for example:
```ini
+# Beam Selection
beam = LHCB2
inputPath = /some/afs/location/with/your/data/
outputPath = /some/afs/location/with/your/results/
@@ -32,6 +33,7 @@ Additionally, there are some GUI settings that can either only be set via argume
modify/set the default value in the GUI fields:
```ini
+# Console
consoleLogging=False # activate additional logging (visible if started from terminal)
checkFreeSpace=False # check fee space at GUI start (visible if started from terminal)
From 6641979548585d065efce8c443cc6093e3fdd9fd Mon Sep 17 00:00:00 2001
From: JoschD <26184899+JoschD@users.noreply.github.com>
Date: Thu, 15 May 2025 19:11:24 +0200
Subject: [PATCH 04/25] bring fontawesome back
---
docs/howto/wiki/editing.md | 6 +++---
mkdocs.yml | 25 ++++++++++++++-----------
2 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/docs/howto/wiki/editing.md b/docs/howto/wiki/editing.md
index 98022daa..e30d198e 100644
--- a/docs/howto/wiki/editing.md
+++ b/docs/howto/wiki/editing.md
@@ -84,7 +84,7 @@ To create:
- _italic_ text, surround the text with `_text_`.
- an internal [link](../../howto/wiki/editing.md#general-text-formatting), use `[link](../../howto/wiki/editing.md#general-text-formatting)`
- > Note that all links are relative to the current document!
+ > Note that all links are relative to the current document!
The `#`-labels are created by headers automatically and can be omitted, in case you want to link to the page itself.
- an external [link][bestwiki]{target=_blank}, use `[link][bestwiki]{target=_blank}`.
@@ -106,7 +106,7 @@ To create:
```
- small hints to a difficult word, which appear on mouse over, add at the bottom of the file:
-
+
```markdown
*[difficult word]: helpful explanation
```
@@ -114,7 +114,7 @@ To create:
- an inline math environment, surround the equation with `$a^2 + b^2 = c^2$`.
- a block math environment, use:
-
+
```markdown
$$
a^2 + b^2 = c^2
diff --git a/mkdocs.yml b/mkdocs.yml
index aa8af87c..69a5211c 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -8,7 +8,7 @@ site_description: >-
on our activities, workflows and software as well as resources for members.
site_author: PyLHC/OMC-Team
site_url: https://pylhc.github.io
-use_directory_urls: false
+use_directory_urls: false
# Repository
@@ -74,11 +74,14 @@ markdown_extensions:
- pymdownx.smartsymbols
- pymdownx.superfences
- pymdownx.tabbed:
- alternate_style: true
+ alternate_style: true
- pymdownx.tasklist:
custom_checkbox: true
clickable_checkbox: true
- pymdownx.tilde
+ - pymdownx.emoji:
+ emoji_index: !!python/name:material.extensions.emoji.twemoji
+ emoji_generator: !!python/name:material.extensions.emoji.to_svg
# Customization
extra:
@@ -121,7 +124,7 @@ nav:
- Analysis: packages/omc3/analysis.md
- Know-How: packages/omc3/know_how.md
- ↪ On Github: https://github.com/pylhc/omc3
- - PyLHC:
+ - PyLHC:
- About: packages/pylhc/about.md
- Forced DA Analysis: packages/pylhc/forced_da.md
- Machine Settings Info: packages/pylhc/machine_settings_info.md
@@ -129,12 +132,12 @@ nav:
- BPM Calibration: packages/pylhc/bpm_calibration.md
- Display Kickgroups: packages/pylhc/kickgroups.md
- ↪ On Github: https://github.com/pylhc/PyLHC
- - PyLHC-Submitter:
+ - PyLHC-Submitter:
- About: packages/pylhcsubmitter/about.md
- Job Submitter: packages/pylhcsubmitter/job_submitter.md
- AutoSix: packages/pylhcsubmitter/autosix.md
- ↪ On Github: https://github.com/pylhc/submitter
- - IRNL Corrections:
+ - IRNL Corrections:
- About: packages/irnl/about.md
- ↪ On Github: https://github.com/pylhc/irnl_rdt_correction
- MESS:
@@ -146,7 +149,7 @@ nav:
- ↪ tfs-pandas: https://github.com/pylhc/tfs
- ↪ sdds: https://github.com/pylhc/sdds
- ↪ generic-parser: https://github.com/pylhc/generic_parser
- - Python Development:
+ - Python Development:
- Contributing: packages/development/contributing.md
- Virtual Environments: packages/development/howto_venv.md
- Releases: packages/development/howto_release.md
@@ -198,15 +201,15 @@ nav:
- Crossing Angle Scan: measurements/procedures/xing_scan.md
- How To's:
- Info: howto/about.md
- - General Setup:
+ - General Setup:
- Git: howto/setup/git.md
- GUIs: howto/setup/guis.md
- Shared Filesystems: howto/setup/shared_filesystems.md
- ↪ Virtual CentOS Machine: https://abpcomputing.web.cern.ch/guides/openstackCS8/
- - Teleworking:
+ - Teleworking:
- Remote Access: howto/teleworking/access.md
- ↪ Tricks from IT: https://codimd.web.cern.ch/vjC8BHbTS7etHwJve-K2Uw
- - Wiki Pages:
+ - Wiki Pages:
- Editing this Wiki: howto/wiki/editing.md
- ↪ CERN Docs: https://how-to.docs.cern.ch/
- Other Relevant How To's:
@@ -225,12 +228,12 @@ nav:
- LEIR:
- 2023: logbook/LEIR/2023_leir.md
- 2024: logbook/LEIR/2024_leir.md
- - LHC:
+ - LHC:
- 2022: logbook/LHC/2022_lhc.md
- 2023: logbook/LHC/2023_lhc.md
- 2024: logbook/LHC/2024_lhc.md
- 2025: logbook/LHC/2025_lhc.md
- - PS:
+ - PS:
- 2023: logbook/PS/2023_ps.md
- 2024: logbook/PS/2024_ps.md
- 2025: logbook/PS/2025_ps.md
From 4db79df366145082d2ffb8ee7a27e548e3ef37b3 Mon Sep 17 00:00:00 2001
From: JoschD <26184899+JoschD@users.noreply.github.com>
Date: Thu, 15 May 2025 19:23:36 +0200
Subject: [PATCH 05/25] some intro
---
docs/guis/betabeat/beam_selection.md | 21 ++++++++++++++++-----
docs/guis/betabeat/defaults.md | 8 ++++----
2 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/docs/guis/betabeat/beam_selection.md b/docs/guis/betabeat/beam_selection.md
index 29d84fd4..25508d31 100644
--- a/docs/guis/betabeat/beam_selection.md
+++ b/docs/guis/betabeat/beam_selection.md
@@ -1,13 +1,25 @@
-# The beam selection Window
+# The Beam Selection Window
+
+
+
+ The Beam Selection Window.
+
+
+The Beam Selection Window is your entry point to the GUI.
+Here, you set which machine you will be using and which `python` backend to run.
+The options chosen here will also define the **folder-structure** you will be using during your current analysis session.
!!! tip "Setting Your Defaults"
You can set all entries in this window to your preferred defaults for a quick start!
Check the [Defaults Page](defaults.md) for more details.
-!!! todo
- Include screenshot of Beam-Selection Window and describe the settings.
+## Beam
+
+## Output
-### Python
+## Input
+
+## Python Executable
In the Beam-Selection Window you need to give it a python-binary (e.g. `venv/bin/python`).
Best would be if you have a local virtual environment.
@@ -20,4 +32,3 @@ This is because python calls are now made by module, i.e.:
```bash
python -m omc3.module arg1 arg2 ...
```
-
diff --git a/docs/guis/betabeat/defaults.md b/docs/guis/betabeat/defaults.md
index 839de552..e1d344ce 100644
--- a/docs/guis/betabeat/defaults.md
+++ b/docs/guis/betabeat/defaults.md
@@ -38,17 +38,17 @@ consoleLogging=False # activate additional logging (visible if started from t
checkFreeSpace=False # check fee space at GUI start (visible if started from terminal)
# BPM-Panel
-runOptics=False # set the tickbox next to the `Analyse` button
+runOptics=False # set the tickbox next to the `Run Analysis` button
# Analysis-Panel
-autoclean.limit=0.1 # set the autoclean limit
-clean.sigmas=2 # set the number of sigmas for the autoclean
+autoclean.limit=0.1 # keep points within this limit, even if they are outliers
+clean.sigmas=2 # remove points beyond this many sigmas from the mean
clean.bounds=0.7 # this ratio of points needs to remain otherwise cleaning aborts
# Amplitude-Detuning-Window
ampdet.tunecut=0.05 # limit around the given tune to exclude from the BBQ tune
ampdet.window=100 # length of the moving average window for the BBQ tune
-ampdet.outlierLimit=0.0002 # Cut on outliears around the mean
+ampdet.outlierLimit=0.0002 # Cut on outliers around the mean
ampdet.usePreviousBBQ=False # Use previously extraced BBQ data if present
```
From 8d8baf36d0f5739cb5a37e8e769ee8b507fb252e Mon Sep 17 00:00:00 2001
From: JoschD <26184899+JoschD@users.noreply.github.com>
Date: Thu, 15 May 2025 19:23:59 +0200
Subject: [PATCH 06/25] image beamselect
---
.../images/betabeat_gui/beam_selection.png | Bin 0 -> 17971 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 docs/assets/images/betabeat_gui/beam_selection.png
diff --git a/docs/assets/images/betabeat_gui/beam_selection.png b/docs/assets/images/betabeat_gui/beam_selection.png
new file mode 100644
index 0000000000000000000000000000000000000000..c584be434f2a66f2d1ebee66af6181efd518c40f
GIT binary patch
literal 17971
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