AFL.automation.EpicsADLiveProcess.EpicsADLiveProcessDaemon#

Classes

CollateDaemon(app, reduction_queue, **kwargs)

EpicsADLiveProcessDaemon(app, results[, ...])

Overall EPICS AD interface

ReduceDaemon(app, reduction_queue, ...[, ...])

class AFL.automation.EpicsADLiveProcess.EpicsADLiveProcessDaemon.EpicsADLiveProcessDaemon(app, results, debug_mode=True)[source]#

Overall EPICS AD interface

spawns two main threads: collateDaemon and reduceDaemon

also holds the instance of EpicsAD that this all talks to (or does that sit in collateDaemon?)

flow: EpicsAD has callbacks hooked to detector params that auto-fire on change.

the callback responders are strong interrupts, so need to be fast, so they just shove the raw event data into a queue

collatedaemon tracks the state of the detector internally, changes it according to events in the queue, and when a new image arrives, it puts it into the ReduceDaemon queue.

ReduceDaemon runs the data through whatever reduction routines you specify (from just making a log-scale jpeg to fully reducing with pyfai and classifying with ML.)

__init__(app, results, debug_mode=True)[source]#

This constructor should always be called with keyword arguments. Arguments are:

group should be None; reserved for future extension when a ThreadGroup class is implemented.

target is the callable object to be invoked by the run() method. Defaults to None, meaning nothing is called.

name is the thread name. By default, a unique name is constructed of the form “Thread-N” where N is a small decimal number.

args is a list or tuple of arguments for the target invocation. Defaults to ().

kwargs is a dictionary of keyword arguments for the target invocation. Defaults to {}.

If a subclass overrides the constructor, it must make sure to invoke the base class constructor (Thread.__init__()) before doing anything else to the thread.

terminate()[source]#
run()[source]#

Method representing the thread’s activity.

You may override this method in a subclass. The standard run() method invokes the callable object passed to the object’s constructor as the target argument, if any, with sequential and keyword arguments taken from the args and kwargs arguments, respectively.