50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
import time
|
|
from collections import defaultdict, deque
|
|
from functools import partial
|
|
from logging import getLogger
|
|
from threading import Thread
|
|
|
|
import epics
|
|
import numpy as np
|
|
from cam_server.utils import create_thread_pvs, epics_lock
|
|
|
|
_logger = getLogger(__name__)
|
|
|
|
initialized = False
|
|
output_pv = None
|
|
sent_pid = -1
|
|
|
|
|
|
def initialize(params):
|
|
global initialized
|
|
global output_pvname
|
|
epics.ca.clear_cache()
|
|
output_pvname = params["out_PV"]
|
|
initialized = True
|
|
|
|
|
|
|
|
def process(data, pulse_id, timestamp, params):
|
|
if not initialized:
|
|
initialize(params)
|
|
try:
|
|
intensity = data[params["intensity"]]
|
|
except BaseException as e:
|
|
print("bad intensity channel")
|
|
logging.info("no intensity channel")
|
|
try:
|
|
FWHM = data[params["FWHM"]]
|
|
except BaseException as e:
|
|
print("bad FWHM channel")
|
|
logging.info("no FWHM channel")
|
|
spectral_brightness = intensity/FWHM
|
|
output = {}
|
|
output["Intensity"] = data[params["intensity"]]
|
|
output["FWHM"] = data[params["FWHM"]]
|
|
output["spectral_brightness"] = spectral_brightness
|
|
# try update pv
|
|
try:
|
|
output_pv = epics.PV(params["out_PV"])
|
|
output_pv.put(str(spectral_brightness))
|
|
return output
|