] from ophyd.scaler import ScalerCH from ..session_logs import logger logger.info(__file__) scaler = ScalerCH("sky:scaler1", name="scaler", labels=("detectors", )) if len(scaler.channels.chan01.chname.get()) == 0: scaler.channels.chan01.chname.put("clock") scaler.channels.chan02.chname.put("I0") scaler.channels.chan03.chname.put("scint") scaler.channels.chan05.chname.put("diode") scaler.channels.chan08.chname.put("I0Mon") scaler.channels.chan10.chname.put("ROI1") scaler.channels.chan11.chname.put("ROI2") scaler.select_channels(None) # name some channels for convenience clock = scaler.channels.chan01.s I0 = scaler.channels.chan02.s scint = scaler.channels.chan03.s diode = scaler.channels.chan05.s I0Mon = scaler.channels.chan08.s ROI1 = scaler.channels.chan10.s ROI2 = scaler.channels.chan11.s for obj in (clock, I0, scint, diode, I0Mon, ROI1, ROI2): obj._ophyd_labels_ = set(list(obj._ophyd_labels_) + ["counter"])
scaler1.wait_for_connection() if not len(scaler1.channels.chan01.chname.get()): # CAUTION: define channel names JUST for this simulation. # For a real instrument, the names are assigned when the # detector pulse cables are connected to the scaler channels. logger.info( f"{scaler1.name} has no channel names. Assigning channel names.") scaler1.channels.chan01.chname.put("timebase") scaler1.channels.chan02.chname.put("I0") scaler1.channels.chan03.chname.put("scint") scaler1.channels.chan04.chname.put("diode") scaler1.channels.chan05.chname.put("I000") scaler1.channels.chan06.chname.put("I00") time.sleep(1) # wait for IOC # choose just the channels with EPICS names scaler1.select_channels() # examples: make shortcuts to specific channels assigned in EPICS timebase = scaler1.channels.chan01.s I0 = scaler1.channels.chan02.s scint = scaler1.channels.chan03.s diode = scaler1.channels.chan04.s I000 = scaler1.channels.chan05.s I00 = scaler1.channels.chan06.s for item in (timebase, I0, I00, I000, scint, diode): item._ophyd_labels_ = set(["channel", "counter"])