This commit is contained in:
@@ -14,7 +14,7 @@ import numpy as np
|
||||
from epics import poll
|
||||
|
||||
from agebd.h5 import h5save
|
||||
from agebd.pv import get_pv_class
|
||||
from agebd.pv import get_pv_class, get_pv_external_class
|
||||
from agebd.service.base import BaseService
|
||||
from agebd.service.pvs import BasePVs
|
||||
from agebd.utils import printgetversion
|
||||
@@ -22,6 +22,7 @@ from agebd.utils import printgetversion
|
||||
__version__ = printgetversion(__file__)
|
||||
|
||||
PV = get_pv_class()
|
||||
PV_EXTERNAL = get_pv_external_class()
|
||||
|
||||
plt.switch_backend("agg")
|
||||
plt.rcParams.update({"font.size": 18})
|
||||
@@ -41,86 +42,88 @@ class PVs(BasePVs):
|
||||
postdelay = PV("AGEBD-POSTMORTEMLOG:BEAM-ABORT-EVT.ODLY")
|
||||
|
||||
# Potential Service Callback PVs
|
||||
bdcinputsum = PV("AGESA-SBDC-0000:SUM_INPUT_NOT_OK.VAL", auto_monitor=True)
|
||||
bdcinputsum_latched = PV("AGESA-SBDC-0000:SUM_INPUT_NOT_OK_LATCHED.VAL", auto_monitor=True)
|
||||
bdcinputsum = PV_EXTERNAL("AGESA-SBDC-0000:SUM_INPUT_NOT_OK.VAL", auto_monitor=True)
|
||||
bdcinputsum_latched = PV_EXTERNAL(
|
||||
"AGESA-SBDC-0000:SUM_INPUT_NOT_OK_LATCHED.VAL", auto_monitor=True
|
||||
)
|
||||
|
||||
# Minimum current condition
|
||||
pctmaster = PV("ARS07-DPCT-0000:CURR.VAL")
|
||||
pctmaster = PV_EXTERNAL("ARS07-DPCT-0000:CURR.VAL")
|
||||
|
||||
# Service Input PVs (Post Mortem Information)
|
||||
bdc_interlocks = [
|
||||
PV("AGESA-SBDC-0000:CH{:02.0f}-INPUT_OK_LATCHED.VAL".format(i)) for i in range(21)
|
||||
PV_EXTERNAL("AGESA-SBDC-0000:CH{:02.0f}-INPUT_OK_LATCHED.VAL".format(i)) for i in range(21)
|
||||
]
|
||||
bdc_delays = [PV("AGESA-SBDC-0000:CH{:02.0f}-DELAY.VAL".format(i)) for i in range(21)]
|
||||
bdc_delays = [PV_EXTERNAL("AGESA-SBDC-0000:CH{:02.0f}-DELAY.VAL".format(i)) for i in range(21)]
|
||||
|
||||
pmioc_time = PV("ARS01-MKIK-0050-1:TRIG-CNT.VAL")
|
||||
pmioc_time = PV_EXTERNAL("ARS01-MKIK-0050-1:TRIG-CNT.VAL")
|
||||
|
||||
vcs_alarmlist = PV("ARS00-VCS:PLC_AlarmList.VAL")
|
||||
mis_alarmlist = PV("ARS00-MIS-PLC-01:AlarmList.VAL")
|
||||
misfe_alarmlist = PV("ARS00-MIS-PLC-01:AlarmList_Frontends.VAL")
|
||||
vcs_alarmlist = PV_EXTERNAL("ARS00-VCS:PLC_AlarmList.VAL")
|
||||
mis_alarmlist = PV_EXTERNAL("ARS00-MIS-PLC-01:AlarmList.VAL")
|
||||
misfe_alarmlist = PV_EXTERNAL("ARS00-MIS-PLC-01:AlarmList_Frontends.VAL")
|
||||
|
||||
# Counters
|
||||
counter_bdc = PV("AGESA-SBDC-0000:INT-COUNTER.VAL", auto_monitor=True)
|
||||
counter_dumpkicker = PV("ARS01-MKIK-0050-1:TRIG-CNT.VAL")
|
||||
counter_tmaster_beamdump = PV("AGETI-CVME-MASTER-TMA:Evt-Beam-Dump-EVRCount-I.VAL")
|
||||
counter_tmaster_postmortem = PV("AGETI-CVME-MASTER-TMA:Evt-PM-Rec-EVRCount-I.VAL")
|
||||
counter_bdc = PV_EXTERNAL("AGESA-SBDC-0000:INT-COUNTER.VAL", auto_monitor=True)
|
||||
counter_dumpkicker = PV_EXTERNAL("ARS01-MKIK-0050-1:TRIG-CNT.VAL")
|
||||
counter_tmaster_beamdump = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-Beam-Dump-EVRCount-I.VAL")
|
||||
counter_tmaster_postmortem = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-PM-Rec-EVRCount-I.VAL")
|
||||
|
||||
# Post Mortem Data as dict for easier access
|
||||
PostMortemLinks = [
|
||||
## BLMs
|
||||
# IOC: ABODI-DFBL
|
||||
PV("ABODI-DFBL:SigPm.A"),
|
||||
PV("ABODI-DFBL:SigPm.B"),
|
||||
PV("ABODI-DFBL:SigPm.C"),
|
||||
PV("ABODI-DFBL:SigPm.D"),
|
||||
PV_EXTERNAL("ABODI-DFBL:SigPm.A"),
|
||||
PV_EXTERNAL("ABODI-DFBL:SigPm.B"),
|
||||
PV_EXTERNAL("ABODI-DFBL:SigPm.C"),
|
||||
PV_EXTERNAL("ABODI-DFBL:SigPm.D"),
|
||||
# IOC: ARS01-DFBL
|
||||
PV("ARS01-DFBL:SigPm.A"),
|
||||
PV("ARS01-DFBL:SigPm.B"),
|
||||
PV("ARS01-DFBL:SigPm.C"),
|
||||
PV("ARS01-DFBL:SigPm.D"),
|
||||
PV_EXTERNAL("ARS01-DFBL:SigPm.A"),
|
||||
PV_EXTERNAL("ARS01-DFBL:SigPm.B"),
|
||||
PV_EXTERNAL("ARS01-DFBL:SigPm.C"),
|
||||
PV_EXTERNAL("ARS01-DFBL:SigPm.D"),
|
||||
# IOC: ARS02-DFBL
|
||||
PV("ARS02-DFBL:SigPm.A"),
|
||||
PV("ARS02-DFBL:SigPm.B"),
|
||||
PV("ARS02-DFBL:SigPm.C"),
|
||||
PV("ARS02-DFBL:SigPm.D"),
|
||||
PV_EXTERNAL("ARS02-DFBL:SigPm.A"),
|
||||
PV_EXTERNAL("ARS02-DFBL:SigPm.B"),
|
||||
PV_EXTERNAL("ARS02-DFBL:SigPm.C"),
|
||||
PV_EXTERNAL("ARS02-DFBL:SigPm.D"),
|
||||
# IOC: ARS06-DFBL
|
||||
PV("ARS06-DFBL:SigPm.A"),
|
||||
PV("ARS06-DFBL:SigPm.B"),
|
||||
PV("ARS06-DFBL:SigPm.C"),
|
||||
PV("ARS06-DFBL:SigPm.D"),
|
||||
PV_EXTERNAL("ARS06-DFBL:SigPm.A"),
|
||||
PV_EXTERNAL("ARS06-DFBL:SigPm.B"),
|
||||
PV_EXTERNAL("ARS06-DFBL:SigPm.C"),
|
||||
PV_EXTERNAL("ARS06-DFBL:SigPm.D"),
|
||||
# IOC: ARS09-DFBL
|
||||
PV("ARS09-DFBL:SigPm.A"),
|
||||
PV("ARS09-DFBL:SigPm.B"),
|
||||
PV("ARS09-DFBL:SigPm.C"),
|
||||
PV("ARS09-DFBL:SigPm.D"),
|
||||
PV_EXTERNAL("ARS09-DFBL:SigPm.A"),
|
||||
PV_EXTERNAL("ARS09-DFBL:SigPm.B"),
|
||||
PV_EXTERNAL("ARS09-DFBL:SigPm.C"),
|
||||
PV_EXTERNAL("ARS09-DFBL:SigPm.D"),
|
||||
## 4 Kicker Bump
|
||||
PV("ARS01-MKIK-0140:TIME-AXIS.VAL"),
|
||||
PV("ARS01-MKIK-0140:CURRENT-WF.VAL"),
|
||||
PV("ARS01-MKIK-0220:TIME-AXIS.VAL"),
|
||||
PV("ARS01-MKIK-0220:CURRENT-WF.VAL"),
|
||||
PV("ARS01-MKIK-0850:TIME-AXIS.VAL"),
|
||||
PV("ARS01-MKIK-0850:CURRENT-WF.VAL"),
|
||||
PV("ARS01-MKIK-0940:TIME-AXIS.VAL"),
|
||||
PV("ARS01-MKIK-0940:CURRENT-WF.VAL"),
|
||||
PV_EXTERNAL("ARS01-MKIK-0140:TIME-AXIS.VAL"),
|
||||
PV_EXTERNAL("ARS01-MKIK-0140:CURRENT-WF.VAL"),
|
||||
PV_EXTERNAL("ARS01-MKIK-0220:TIME-AXIS.VAL"),
|
||||
PV_EXTERNAL("ARS01-MKIK-0220:CURRENT-WF.VAL"),
|
||||
PV_EXTERNAL("ARS01-MKIK-0850:TIME-AXIS.VAL"),
|
||||
PV_EXTERNAL("ARS01-MKIK-0850:CURRENT-WF.VAL"),
|
||||
PV_EXTERNAL("ARS01-MKIK-0940:TIME-AXIS.VAL"),
|
||||
PV_EXTERNAL("ARS01-MKIK-0940:CURRENT-WF.VAL"),
|
||||
## Beam Dump Kicker
|
||||
PV("ARS01-MKIK-0050-1:TIME-AXIS.VAL"),
|
||||
PV("ARS01-MKIK-0050-1:CURRENT-WF.VAL"),
|
||||
PV("ARS01-MKIK-0050-2:TIME-AXIS.VAL"),
|
||||
PV("ARS01-MKIK-0050-2:CURRENT-WF.VAL"),
|
||||
PV("ARS01-MKIK-0050-3:TIME-AXIS.VAL"),
|
||||
PV("ARS01-MKIK-0050-3:CURRENT-WF.VAL"),
|
||||
PV("ARS01-MKIK-0050-4:TIME-AXIS.VAL"),
|
||||
PV("ARS01-MKIK-0050-4:CURRENT-WF.VAL"),
|
||||
PV_EXTERNAL("ARS01-MKIK-0050-1:TIME-AXIS.VAL"),
|
||||
PV_EXTERNAL("ARS01-MKIK-0050-1:CURRENT-WF.VAL"),
|
||||
PV_EXTERNAL("ARS01-MKIK-0050-2:TIME-AXIS.VAL"),
|
||||
PV_EXTERNAL("ARS01-MKIK-0050-2:CURRENT-WF.VAL"),
|
||||
PV_EXTERNAL("ARS01-MKIK-0050-3:TIME-AXIS.VAL"),
|
||||
PV_EXTERNAL("ARS01-MKIK-0050-3:CURRENT-WF.VAL"),
|
||||
PV_EXTERNAL("ARS01-MKIK-0050-4:TIME-AXIS.VAL"),
|
||||
PV_EXTERNAL("ARS01-MKIK-0050-4:CURRENT-WF.VAL"),
|
||||
## Beam Dump Post Mortem Digitizer
|
||||
PV("ARF-LPD64:X-AXIS-CH1.VAL"),
|
||||
PV("ARF-LPD64:CH1-DATA.VAL"),
|
||||
PV("ARF-LPD64:X-AXIS-CH2.VAL"),
|
||||
PV("ARF-LPD64:CH2-DATA.VAL"),
|
||||
PV("ARF-LPD64:X-AXIS-CH3.VAL"),
|
||||
PV("ARF-LPD64:CH3-DATA.VAL"),
|
||||
PV("ARF-LPD64:X-AXIS-CH4.VAL"),
|
||||
PV("ARF-LPD64:CH4-DATA.VAL"),
|
||||
PV("AGESA-SBDC-0000:BUNCH0_MAGNET_RAMP_DELAY.VAL"),
|
||||
PV_EXTERNAL("ARF-LPD64:X-AXIS-CH1.VAL"),
|
||||
PV_EXTERNAL("ARF-LPD64:CH1-DATA.VAL"),
|
||||
PV_EXTERNAL("ARF-LPD64:X-AXIS-CH2.VAL"),
|
||||
PV_EXTERNAL("ARF-LPD64:CH2-DATA.VAL"),
|
||||
PV_EXTERNAL("ARF-LPD64:X-AXIS-CH3.VAL"),
|
||||
PV_EXTERNAL("ARF-LPD64:CH3-DATA.VAL"),
|
||||
PV_EXTERNAL("ARF-LPD64:X-AXIS-CH4.VAL"),
|
||||
PV_EXTERNAL("ARF-LPD64:CH4-DATA.VAL"),
|
||||
PV_EXTERNAL("AGESA-SBDC-0000:BUNCH0_MAGNET_RAMP_DELAY.VAL"),
|
||||
# ---------- FILLING PATTERN --------------
|
||||
PV("AGEBD-POSTMORTEMLOG:BUFFER-FILLPATTERN-APD.VAL"),
|
||||
]
|
||||
@@ -260,7 +263,7 @@ class PVs(BasePVs):
|
||||
for bpm in bpmnames:
|
||||
for q in ["X", "Y", "Q"]:
|
||||
bpmpvname = bpm + "PM-DATA-BEAM-" + q
|
||||
PostMortemLinks.append(PV(bpmpvname))
|
||||
PostMortemLinks.append(PV_EXTERNAL(bpmpvname))
|
||||
|
||||
# MBFB modes
|
||||
# state of injection, state of pulsed magnets
|
||||
@@ -396,18 +399,18 @@ class PVs(BasePVs):
|
||||
|
||||
for pvname in names_circ_buffer_ioc:
|
||||
pvname = "AGEBD-POSTMORTEMLOG:BUFFER-" + pvname + "-LAST.VAL"
|
||||
PostMortemLinks.append(PV(pvname))
|
||||
PostMortemLinks.append(PV_EXTERNAL(pvname))
|
||||
|
||||
# Prepare machine for accumulation
|
||||
master_trig = PV("AGETI-CVME-MASTER-TMA:SR-Inj-Status-Sel.VAL")
|
||||
reset_bucket = PV("AGEBD-TIMING:ZERO-TARGET-BUCKET.VAL")
|
||||
ID_gap_ena = PV("AGEOP-STATUS:LIGHT-DELIVERY.VAL")
|
||||
master_trig = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:SR-Inj-Status-Sel.VAL")
|
||||
reset_bucket = PV_EXTERNAL("AGEBD-TIMING:ZERO-TARGET-BUCKET.VAL")
|
||||
ID_gap_ena = PV_EXTERNAL("AGEOP-STATUS:LIGHT-DELIVERY.VAL")
|
||||
|
||||
def __init__(self, service_name: str, pv_factory=PV):
|
||||
super().__init__(service_name, pv_factory)
|
||||
PV = pv_factory
|
||||
|
||||
self.CallbackPV = PV("AGESA-SBDC-0000:INT-COUNTER.VAL", auto_monitor=True)
|
||||
self.CallbackPV = PV_EXTERNAL("AGESA-SBDC-0000:INT-COUNTER.VAL", auto_monitor=True)
|
||||
|
||||
|
||||
class vals:
|
||||
|
||||
Reference in New Issue
Block a user