...
Task | Application/area | Person(s) Responsible | Status | Priority | Notes | GitHub/CATER/etc |
---|
- Lucretia model server conversionBmad live model
- BmadLiveModel
- python PVA service
- matlab interface class GUI conversion
| Global | Cesar, Perez, Buschmann | WIP | 1 | - 1/12/24: demo PVA server works, writing live/design Rs and twiss params, but matlab pvaGet not working yet. next step: document lucretia dependencies across matlabTNG to determine what the matlab interface needs to do
- 1/23/24: matlab PVA access works with a python workaround (good enough for now, likely need a better long-term solution) Cesar prepped draft interface design document. reviewed high-priority GUI model uses.
- 2/8/24: PVA server is running but not deployed to prod yet. Drafting implementation of matlab class F2_ModelReceiver - once the lucretia functions GetRmats, RmatAtoB and GetTwiss are replicated we can proceed to test GUIs. Need to check w/ controls deputes to get some watcher PVs set up
- 3/12/24: draft version of receiver on GitHub, testing for correctness and use by GUI controllers
- 4/9/24: F2_ModelReceiver 0.1 version is ready for deployment, unfortunately the python models service has some errors in it, but the mechanics of the interface are mostly stable
- 4/18/24: live model is currently starting from the gun, which produces very unrealistic twiss parameters. Need to start sim downstream at some treaty point
- live model GUI gets marginally more realistic outputs starting from L0BFBEG, one option...
- more realistic: take the latest PR10571 emittance measurement, back propagate to initial twiss at L0AFBEG – there are some kind of hooks in place for this already. but I'm not 100% on if they ever worked...
| https://github.com/slaclab/facet-matlabTNG/pull/3 | Lattice files for Bmad already exist. Current high-level goals are: - Establish agreement with Lucretia (S2E et al)
- Implement interface to live machine parameters (Buschmann)
- Add Bmad model to python PVA server
(TBD) Convert GUIsDepends on tao→matlab compatibility- alternative: PyTao would let us rejoin the LCLS shared application ecosystem in some areas (emittance GUI, wires)
- Update 08/06/24: development of BmadLiveModel and server infrastructure is underway.
- long term plan is to migrate apps to python, in-line with AD LFD diagnostics group
- python model interface makes sharing apps with LCLS easier
- Update 08/22/2024: first real-time test successful, live model cold-start is ~3-15s, single-device update response is O(10ms)
- Update 08/26/24: v0.1 non-stable released to production. Added "official" API documentation: https://f2-live-model.readthedocs.io/en/latest/
- Update 08/29/24: PVA server tested successfully
- Update 09/06/24: alpha BmadLiveModel & PVA server deployed to production, server running 24/7 for the time being to stress test
- Update 09/29/24: Added LEM, split server into two processes
| design page: Bmad live modeling Github: https://github.com/slaclab/F2_live_model |
- LEM server + watcher conversion
- LEM server + watcher conversion
| LEM | Buschmann |
| 2 | Waiting on model server deployment
- 3/13/24: current plan is to deploy a second PVA server that writes LEM EREF/EACT/BDES etc to an NTTTable, then the ModelReceiver can be updated in-kind to provide those quantities
- python PVA will make it straightforward to build a LEM CUD
| | Phase Scans | Buschmann | WIP | 2 | rudimentary functionality, needs with-beam test update 05/06/24: tested with beam L0, L1 and L2-3 are working, deployment soon... | - Update 08/06/24: LEM will run using the Bmad model
- Update 09/10/24: prototyping, will run as a component of the BmadLiveModel
- Update 09/29/24: server part is done, trim code WIP
| Full design notes on Bmad live model page Github: https://github.com/slaclab/ facet-matlabTNG/pull/4 | - Add quad scan emittance measurement function (for L0)
| Optics Matching | Perez | 3 | last step needed to migrate off of the LCLS-side emittance application. seems to be already partially implemented, so the challenge here is partially archeological in nature. |
Maintenance & Technical Debt
...
- BC20 energy feedback no-op
...
...
managed to launch server, but haven't figured out how to launch GUIs yet
update 4/24: done. added a button to launch from the ops dashboard – only a few OPIs supported at the moment, but adding support from new machines isn't hard
F2_LEM_GUI |
- New longitudinal feedbacks
- DL10 energy
- BC11 energy
- BC11 bunch length
- BC14 energy
- BC14 bunch length
- BC20 energy
| Feedbacks | Buschmann |
| 1 | - Current feedbacks regulate poorly and are not easily tuned/maintained
- overall goal: improve overall beam stability, reduce feedback convergence times
- LCLS-SC energy feedbacks are designed with off-the-shelf PID libraries, and written in python, plan is to implement the same
- (from a controls perspective) this is straightforward since through BC11 everything is in EPICS
- SLC device control can be accomplished through python PVA libraries, though this will take some research on RPC usage
- deployment plan:
- replace feedbacks one-by-one, i.e. run a new DL10 energy feedback, then use preexisting feedbacks downstream
|
|
- RTBSA for FACET-II
- python class for streaming BSA data
- python class for real-time BSA time series & correlation plots
- GUI
| BSA | Buschmann | WIP | 2 | - 07/05/2024: Developed proof-of-concept GUI using lcls BSA PVs - works for us as well since our BSA encodes pulse IDs the same way. Corr plot with fitting, time series and FFT are all working.
- still need to optimize syncing for network performance
- likely can replace the current RTBSA GUI for lcls as well
|
|
|
|
|
| 1 | - LCLS dispersion live is, in principle, adaptable to this task. However the complication of needing to read both SLC buffer data and EPICS BSA buffers might make a new implementation simpler
|
|
| Phase Scans | Buschmann | DONE | 2 | rudimentary functionality, needs with-beam test update 05/06/24: tested with beam L0, L1 and L2-3 are working, deployment soon... | https://github.com/slaclab/facet-matlabTNG/pull/4 |
- Add quad scan emittance measurement function (for L0)
| Optics Matching | Perez |
| 3 | last step needed to migrate off of the LCLS-side emittance application. seems to be already partially implemented, so the challenge here is partially archeological in nature Update 09/29/24: should put this on hiatus pending migration back to LCLS app |
|
- Lucretia model server conversion
- python PVA service
- matlab interface class
-
GUI conversion
| Global | Cesar, Perez, Buschmann | Paused | 3 | UPDATE: 08/06/24: Lucretia is being deprecated. The lack of Lucretia resources, both (written and in-person know how), and the poor maintainability of F2_LiveModelApp makes this a suboptimal time investment, especially since the desire was simply for apps to be more performant. - The F2_ModelReceiver is still usable as a matlab interface to the model server
- Existing matlabTNG apps and the Lucretia model will remain in use, but with life-support only
- physics apps will be ported to python over time (help wanted)
- improved matlab app performance (from the control room) can be achieved with Glen's matlab server
- 1/12/24: demo PVA server works, writing live/design Rs and twiss params, but matlab pvaGet not working yet. next step: document lucretia dependencies across matlabTNG to determine what the matlab interface needs to do
- 1/23/24: matlab PVA access works with a python workaround (good enough for now, likely need a better long-term solution) Cesar prepped draft interface design document. reviewed high-priority GUI model uses.
- 2/8/24: PVA server is running but not deployed to prod yet. Drafting implementation of matlab class F2_ModelReceiver - once the lucretia functions GetRmats, RmatAtoB and GetTwiss are replicated we can proceed to test GUIs. Need to check w/ controls deputes to get some watcher PVs set up
- 3/12/24: draft version of receiver on GitHub, testing for correctness and use by GUI controllers
- 4/9/24: F2_ModelReceiver 0.1 version is ready for deployment, unfortunately the python models service has some errors in it, but the mechanics of the interface are mostly stable
- 4/18/24: live model is currently starting from the gun, which produces very unrealistic twiss parameters. Need to start sim downstream at some treaty point
- live model GUI gets marginally more realistic outputs starting from L0BFBEG, one option...
- more realistic: take the latest PR10571 emittance measurement, back propagate to initial twiss at L0AFBEG – there are some kind of hooks in place for this already. but I'm not 100% on if they ever worked...
| https://github.com/slaclab/facet-matlabTNG/pull/3 |
Maintenance & Technical Debt
Issue | Application/area | Person(s) Responsible | Status | Priority | Notes | GitHub/CATER/etc |
---|
- BC20 energy feedback no-op
| Feedbacks | Buschmann | WIP | 1 | MD plan for debugging is ready to go | 166749 |
- Save previous magnet settings after loading new emittance msmt
| Optics | Buschmann |
| 2 |
| 166714 |
- Add logbook button for LEM magnet settings
| LEM | Buschmann |
| 2 |
| 166618 |
| Schottky Scan | Loney | WIP | 3 | Option to use laser timing, fix plotting issues, various other bugs | 158479 (ish) |
| Global | Buschmann | done | 2 | managed to launch server, but haven't figured out how to launch GUIs yet update 4/24: done. added a button to launch from the ops dashboard – only a few OPIs supported at the moment, but adding support from new machines isn't hard |
|
- Write waist position PV after trim, not after selection
| S20 Config | Buschmann | Done | 3 |
|
|
- Sextupole GUI "fix offsets" button does nothing
| Sextupole | Buschmann | done | 3 | ancient CATER - maybe not an issue anymore? needs discussion update 06/2024: real issue, fixed now! | 117540 |
- Change default range of Schottky Scan GUI
| Schottky Scan | Perez | Done | 3 | changed to [ -50 10 ] |
|
- Feedbacks GUI has a typo in DL10 PV
| Feedbacks | Buschmann | Done | 3 | trivial fix | 157790 |
- fix FC01 toggle on Schottky GUI
| Schottky Scan | Loney | done | 3 | (should be) trivial fix, also change default range and add gun offset | 167704 |
|
|
|
|
|
|
|
Minor Upgrades & Projects
Issue | Application/area | Person(s) Responsible | Status | Priority | Notes | GitHub/CATER/etc |
---|
| LAME | Parker | WIP | 3 |
|
|
- Injector slice emittance tool
|
| Parker | WIP |
|
|
|
- Full lists of PVs used in HLAs accessible from each help menu
| Global | Perez | WIP | 3 | F2_Feedbacks does this already with a hardcoded list, something similar could be done in other GUIs than have a lot of anonymous matlab PVs – ideally this could be automated by parsing the GUIs internal list of PVs |
|
- Implement real-time rms energy spread PV with SYAG stats
|
| Buschmann/Parker |
| 2 | Camera is serving stats. Just need a way to measure a conversion factor of MeV/pixel, then write both the calibration and the sigmaE to matlab PVC
- update 2/28/24: need to better understand what AD plugin stats actually calculate, the quantity I thought was the Xrms is not
- simpler solution: measure the MeV/mm calibration and make an MeV axis so the sigE can be eyeballed
- update 08/06/24: this should go into a watcher process...
|
|
- Create tool to display corrector strength relative to beam energy vs Z.
|
| Kalsi/Parker | WIP | 1 |
|
|
- python machine state summary script
|
| Buschmann |
| 3 | I'm imagining a script that gets 10571 + 10711 + SYAG + DTOTR2 images, and logbooks the most recent set of emittance/S20 measurements |
|
|
| Loney | WIP | 1 | - simple version: matlab script that takes a BPM and an offset/angle as arguments
- works, but depends on lucretia live (slow)
- fancier version: GUI where one can select a BPM, preview corrector settings and undo
|
|
- convert wirescan plot Y axis to counts instead of charge
| wirescans | Buschmann |
| 3 |
|
|
|
| Loney | WIP | 3 | simple: core plot config, preferred: script |
|
- bunch length measurement with double-gaussian fitting
|
| Buschmann |
| 2 |
|
|
|
| Kalsi |
| 2 |
|
|
- Rebrand EPICS with fancy new orange
| Global | Buschmann | done | 3 | nice |
|
- CUD reference image/orbits
| CUDs | Buschmann | done | 3 | update 2/28/24: infrastructure exists to set new references remotely and update CUDs remotely, but the callbacks for each type of reference data are not complete – i.e. need to save DTOTR2 to a PNG, so CUDs can display, or save BPM data to a .mat etc etc |
|
- Add Logbook feature to BSA GUI
| BSA | Perez | Done | 2 |
|
|
- Add wire scan timestamps + skew + kurtosis to plot/logbook
| Wire/Multi-Wire | Buschmann (+intrepid sidekick?) | Done | 1 | Both wire GUIs use the F2_WirescanApp object – save fit data/timestamps etc there, then GUIs can log & display that info as needed - update 3/5/2024: got the skew/kurt calculation implemented and have GUI frontends updated in-kind. still need to do some correctness checks and add timestamps
|
|
...
- Save previous magnet settings after loading new emittance msmt
...
- Add logbook button for LEM magnet settings
...
- Write waist position PV after trim, not after selection
...
- Sextupole GUI "fix offsets" button does nothing
...
- Change default range of Schottky Scan GUI
...
- Feedbacks GUI has a typo in DL10 PV
...
- fix FC01 toggle on Schottky GUI
...
Minor Upgrades & Projects
Issue | Application/area | Person(s) Responsible | Status | Priority | Notes | GitHub/CATER/etc |
---|
- Rebrand EPICS with fancy new orange
| Global | Buschmann | WIP | 3 | discussing how to implement non-invasively with EED | | LAME | Parker | WIP | 3 | - CUD reference image/orbits
| CUDs | Buschmann | 3 | update 2/28/24: infrastructure exists to set new references remotely and update CUDs remotely, but the callbacks for each type of reference data are not complete – i.e. need to save DTOTR2 to a PNG, so CUDs can display, or save BPM data to a .mat etc etc | - Full lists of PVs used in HLAs accessible from each help menu
| Global | Perez | WIP | 3 | F2_Feedbacks does this already with a hardcoded list, something similar could be done in other GUIs than have a lot of anonymous matlab PVs – ideally this could be automated by parsing the GUIs internal list of PVs | - Add Logbook feature to BSA GUI
| BSA | Perez | Done | 2 | - Add wire scan timestamps + skew + kurtosis to plot/logbook
| Wire/Multi-Wire | Buschmann (+intrepid sidekick?) | Done | 1 | Both wire GUIs use the F2_WirescanApp object – save fit data/timestamps etc there, then GUIs can log & display that info as needed - update 3/5/2024: got the skew/kurt calculation implemented and have GUI frontends updated in-kind. still need to do some correctness checks and add timestamps
| - Implement real-time rms energy spread PV with SYAG stats
| Buschmann/Parker | WIP | 2 | Camera is serving stats. Just need a way to measure a conversion factor of MeV/pixel, then write both the calibration and the sigmaE to matlab PVC
- update 2/28/24: need to better understand what AD plugin stats actually calculate, the quantity I thought was the Xrms is not
- simpler solution: measure the MeV/mm calibration and make an MeV axis so the sigE can be eyeballed
| - Create tool to display corrector strength relative to beam energy vs Z.
| Kalsi | WIP | 1 | - FB CUD running flag (fix or remove)
| F2 CUDs | Buschmann | done | 3 | update 4/9/24: working on updates to this display 5/24: done, v2 released |
|
- python machine state summary script
| Buschmann | 3 | I'm imagining a script that gets 10571 + 10711 + SYAG + DTOTR2 images, and logbooks the most recent set of emittance/S20 measurements | - Change default screen to 711 for injector TCAV measurements
| TCAV GUI | Ripman | Done | 2 | | Loney | WIP | 1 | simple version: matlab script that takes a BPM and an offset/angle as argumentsfancier version: GUI where one can select a BPM, preview corrector settings and undo |
|
|
|
|
|
|
|
|
|
Standby Tasks / Wishlist / Brainstorm
...
- Remove remaining dependencies on legacy Matlab2012 & "matlab model" code
- Remove instances of direct use of LabCA - move everything over to using PV class in readiness for implementation of PVA
- Beam stay clear plot vs Z (beam aperture vs Z, or acceptance vs delta E)
LEM
...
- , or acceptance vs delta E)
- Automation/tools to facilitate 7-hole alignment
- laser heater GUI
- MPS interlocking for EOS
- Klystron jitter report → should get an automated FTP update script process thing
- laser cathode auto-alignment software → meeting w/ LCLS injector AP to discuss methodology
LEM
- ignore CQs/SQs when propagating twins parameters. (BMAG plot)
- flag "matching quads" and handle separately when "Lem to model"
- fix BACT=0 causing NaNs in BMAG propagation
...
- indicate TRIM operation in progress by disabling UI
- Orbit fitting tools
- Allow reference orbits to have names changed in Python Orbit Display Reference Orbit list
Optics
- wire names don't update in multiwire matching tabs after changing linac selection
- automatically de-select CQ/SQs from matching options
- native quad scans → ultimate goal of fully migrating off of the LCLS emittance GUI
...