42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
import zmq
|
|
import time
|
|
import psana
|
|
import numpy as np
|
|
|
|
context = zmq.Context()
|
|
socket = context.socket(zmq.REP)
|
|
socket.bind("tcp://*:12322")
|
|
poller = zmq.Poller()
|
|
poller.register(socket, zmq.POLLIN)
|
|
|
|
#run = 8
|
|
#ds = psana.DataSource('exp=xppl3816:run=%d:smd' %run)
|
|
ds = psana.DataSource('shmem=XPP.0:stop=no')
|
|
epics = ds.env().epicsStore()
|
|
opal_0_detector = psana.Detector('opal_0')
|
|
opal_1_detector = psana.Detector('opal_1')
|
|
#ipm3_src = psana.Source('BldInfo(XppSb3_Ipm)')
|
|
|
|
t0 = time.time()
|
|
for i, evt in enumerate(ds.events()):
|
|
events = dict(poller.poll(0))
|
|
if socket in events and events[socket] == zmq.POLLIN:
|
|
opal_0 = opal_0_detector.raw(evt)
|
|
opal_1 = opal_1_detector.raw(evt)
|
|
cntr = ds.env().configStore().get(psana.ControlData.ConfigV3, psana.Source()).pvControls()
|
|
if len(cntr) > 0:
|
|
cpvName = cntr[0].name()
|
|
cpvValue = cntr[0].value()
|
|
else:
|
|
cpvName = None
|
|
cpvValue = None
|
|
|
|
if opal_0 is None or opal_1 is None:
|
|
print 'missing opal'
|
|
continue
|
|
message = socket.recv()
|
|
socket.send_pyobj( dict( opal0 = opal_0, opal1 = opal_1, cPv = dict(name=cpvName,value=cpvValue)) )
|
|
print 'Shot',i, 'sent; time since starting:', time.time()-t0
|
|
|
|
|