Beispiel #1
0
    "scaler",
    "clock",
    "I0",
    "scint",
    "diode",
    "I0Mon",
    "ROI1",
    "ROI2",
]

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
Beispiel #2
0
def scaler_ch(cleanup, scaler_test_ioc):
    ch = ScalerCH(scaler_test_ioc.pvs['scaler_prefix'])
    ch.wait_for_connection()
    cleanup.add(scaler)
    return ch
Beispiel #3
0
"""
lesson 2 : create the motor and scaler
"""

__all__ = [
    'm1',
    'scaler',
]

from ...session_logs import logger
logger.info(__file__)

from apstools.devices import use_EPICS_scaler_channels
from ophyd import EpicsMotor
from ophyd.scaler import ScalerCH

m1 = EpicsMotor("sky:m1", name="m1")
scaler = ScalerCH("sky:scaler1", name="scaler")

m1.wait_for_connection()
scaler.wait_for_connection()

scaler.match_names()
use_EPICS_scaler_channels(scaler)
    timebase I0 I00 I000 scint diode
""".split()

from ..session_logs import logger

logger.info(__file__)

from .. import iconfig
from ophyd.scaler import ScalerCH
import time

IOC = iconfig.get("GP_IOC_PREFIX", "gp:")

# make an instance of the entire scaler, for general control
scaler1 = ScalerCH(f"{IOC}scaler1",
                   name="scaler1",
                   labels=["scalers", "detectors"])
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")
Beispiel #5
0
"""
lesson 3 : create the motor and scaler
"""

__all__ = [
    'm1',
    'scaler',
]

from ...session_logs import logger
logger.info(__file__)

from ophyd import EpicsMotor
from ophyd.scaler import ScalerCH

P = "sky:"
m1 = EpicsMotor(f"{P}m1", name="m1")
scaler = ScalerCH(f"{P}scaler1", name="scaler")

m1.wait_for_connection()
scaler.wait_for_connection()

scaler.select_channels(None)
Beispiel #6
0
# PV parameter loadings
pv_names = loadPV()

# beam=EpicsSignal(pv_names['Beam_Current'],name='beam')


class Accelerator(Device):
    beam_current = Cpt(EpicsSignal, pv_names['Beam']['Current'])
    life_time = Cpt(EpicsSignal, pv_names['Beam']['LifeTime'])
    topup_count = Cpt(EpicsSignal, pv_names['Beam']['TopUpCount'])


accelerator = Accelerator('', name='accelerator')

# Scaler
scaler = ScalerCH(pv_names['Scaler']['scaler'], name='scaler')

# only select named channels
scaler.select_channels(None)

# Stage signal to set counting mode to "single shot"
scaler.stage_sigs["count_mode"] = 0
scaler.stage_sigs["count"] = 0

preset_time = scaler.preset_time

# Step-Scan Counter
I0 = EpicsSignalRO(pv_names['Scaler']['I0_counter_cal'], name='I0_calc')
It = EpicsSignalRO(pv_names['Scaler']['It_counter_cal'], name='It_calc')
If = EpicsSignalRO(pv_names['Scaler']['If_counter_cal'], name='If_calc')
Ir = EpicsSignalRO(pv_names['Scaler']['Ir_counter_cal'], name='Ir_calc')
Beispiel #7
0
s2ao = EpicsMotor('29idb:m14', name='s2ao', labels=('motor', ))  # Sl2A out
s2ab = EpicsMotor('29idb:m15', name='s2ab', labels=('motor', ))  # Sl2A bot
s2at = EpicsMotor('29idb:m16', name='s2at', labels=('motor', ))  # Sl2A top
slit3b = EpicsMotor('29idb:m26', name='slit3b',
                    labels=('motor', ))  # Sl3D bottom
slit3t = EpicsMotor('29idb:m27', name='slit3t', labels=('motor', ))  # Sl3D top
d4d = EpicsMotor('29idb:m25', name='d4d', labels=('motor', ))  # D4-D
d5d = EpicsMotor('29idb:m28', name='d5d', labels=('motor', ))  # D5-D
mmesh = EpicsMotor('29idb:m5', name='mmesh', labels=('motor', ))  # mesh
vdiag = EpicsMotor('29idb:m4', name='vdiag', labels=('motor', ))  # Vdiag
samx = EpicsMotor('29idKappa:m2', name='samx', labels=('motor', ))  # SampleX
samy = EpicsMotor('29idKappa:m3', name='samy', labels=('motor', ))  # SampleY
samz = EpicsMotor('29idKappa:m4', name='samz', labels=('motor', ))  # SampleZ
# Macro Motor: SpecMotor(mne='iexmono', config_line='24', name='IEXmono', macro_prefix='Mono')  # IEXmono # read_mode=7

scaler1 = ScalerCH('29idMZ0:scaler1', name='scaler1', labels=('detectors', ))
# counter: sec = SpecCounter(mne='sec', config_line='0', name='Seconds', unit='0', chan='0', pvname=29idMZ0:scaler1.S1)
mon = EpicsSignal('29idMZ0:scaler1.S14', name='mon',
                  labels=('detectors', ))  # Monitor
srs2 = EpicsSignal('29idMZ0:scaler1.S2', name='srs2',
                   labels=('detectors', ))  # SRS2
srs3 = EpicsSignal('29idMZ0:scaler1.S3', name='srs3',
                   labels=('detectors', ))  # SRS3
srs4 = EpicsSignal('29idMZ0:scaler1.S4', name='srs4',
                   labels=('detectors', ))  # SRS4
mcp = EpicsSignal('29idMZ0:scaler1.S5', name='mcp',
                  labels=('detectors', ))  # MCP
samT = EpicsSignal('29idd:LS331:TC1:SampleA',
                   name='samT',
                   labels=('detectors', ))  # TA
cryoT = EpicsSignal('29idd:LS331:TC1:SampleB',
Beispiel #8
0
"""
our diffractometer
"""

__all__ = [
    'scalerd',
    #'scalerb',
    ]

from ..session_logs import logger
logger.info(__file__)

from ophyd.scaler import ScalerCH

scalerd = ScalerCH('xxx:scaler1', name='scalerd', labels=('detectors','counters'))
scalerd.select_channels(None)

#scalerb = ScalerCH('4idb:scaler1', name='scalerb', labels=('detectors','counters'))
#scalerb.select_channels(None)

# TODO: name the other channels, watch out for python keywords such as del!
# TODO: How should we handle the scalers? What is scaler3?
Beispiel #9
0
def scaler_ch(cleanup, scaler_test_ioc):
    ch = ScalerCH(scaler_test_ioc.pvs['scaler_prefix'])
    ch.wait_for_connection()
    cleanup.add(scaler)
    return ch
Beispiel #10
0
"""
scaler support (area detectors handled separately)
"""

__all__ = [
    'scaler',
]

from ..session_logs import logger
logger.info(__file__)

from ophyd.scaler import ScalerCH
from ..utils import safeOphydName

scaler = ScalerCH('3idb:scaler1', name='scaler', labels=[
    "detectors",
])
scaler.select_channels()
Beispiel #11
0
http://nsls-ii.github.io/bluesky/async.html#flying
"""

import asyncio
from collections import deque

P = "xxx:"

from ophyd.scaler import ScalerCH
from ophyd import EpicsMotor
from apstools.synApps_ophyd import userCalcsDevice
from apstools.synApps_ophyd import sscanDevice
from apstools.synApps_ophyd import SaveData
from apstools.synApps_ophyd import swait_setup_lorentzian

scaler = ScalerCH(f"{P}scaler1", name="scaler")
scaler.select_channels(None)
m1 = EpicsMotor(f"{P}m1", name="m1")
calcs = userCalcsDevice(P, name="calcs")
scans = sscanDevice(P, name="scans")
scans.select_channels()
save_data = SaveData(f"{P}saveData_", name="save_data")

# configure saveData for data collection into MDA files:
save_data.file_system.put("/tmp")
save_data.subdirectory.put("saveData")
save_data.base_name.put("sscan1_")
save_data.next_scan_number.put(1)
save_data.comment1.put("testing")
save_data.comment2.put("configured and run from ophyd")
Beispiel #12
0
    'scaler',
    'clock',
    'I0',
    'scint',
    'diode',
    'I0Mon',
    'ROI1',
    'ROI2'
]

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