added adhoc lxt; switch to Channels.from_file; more detector cfg; adjusted condition; added spreadsheet; update pvs on launch; added sfxdaq/sfxgui/pedestalgui; added PVAdj that presses go button

This commit is contained in:
2025-01-28 17:43:00 +01:00
parent 3774256c30
commit 46c8803ce3

View File

@ -1,6 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
from slic.core.acquisition import SFAcquisition from slic.core.acquisition import SFAcquisition
from slic.core.adjustable import PVAdjustable
#from slic.core.acquisition import BSAcquisition, DBAcquisition, DIAAcquisition, PVAcquisition, SFAcquisition #from slic.core.acquisition import BSAcquisition, DBAcquisition, DIAAcquisition, PVAcquisition, SFAcquisition
#from slic.core.acquisition.bschannels import BSChannels #from slic.core.acquisition.bschannels import BSChannels
from slic.core.scanner import Scanner from slic.core.scanner import Scanner
@ -12,6 +13,8 @@ from slic.utils import Config, Elog, Screenshot, load_channels
from slic.core.condition import PVCondition from slic.core.condition import PVCondition
from slic.gui import GUI from slic.gui import GUI
from slic.core.acquisition.spreadsheet import Spreadsheet
from slic.utils import devices from slic.utils import devices
from slic.utils import Marker, as_shortcut from slic.utils import Marker, as_shortcut
@ -19,9 +22,6 @@ from devices import *
from adhoc import * from adhoc import *
adhoc_lxt = PVAdjustable("SLAAR01-LTIM-PDLY:DELAYNS", pvname_done_moving="SLAAR01-LTIM-PDLY:WAITING", name="adhoc lxt")
#TODO: why do we need this suddenly? #TODO: why do we need this suddenly?
try: try:
from IPython import get_ipython from IPython import get_ipython
@ -51,24 +51,38 @@ pvs = PVChannels.from_file(fn_pvs)
#fn_channels = "/sf/alvra/config/com/channel_lists/laser_channel_list_BS" #fn_channels = "/sf/alvra/config/com/channel_lists/laser_channel_list_BS"
#fn_pvs = "/sf/alvra/config/com/channel_lists/laser_channel_list_PV" #fn_pvs = "/sf/alvra/config/com/channel_lists/laser_channel_list_PV"
# #
#channels = Channels(fn_channels) #channels = BSChannels.from_file(fn_channels)
#detectors = None #detectors = None
#pvs = Channels(fn_pvs) #pvs = PVChannels.from_file(fn_pvs)
detectors_raw = DetectorConfig("JF06T32V02", "JF02T09V03") #detectors_raw = DetectorConfig("JF06T32V02", "JF02T09V03")
detectors_raw = DetectorConfig()
detectors_config = DetectorConfig() detectors_config = DetectorConfig()
#detectors_config.add("JF06T32V02", remove_raw_files=True) #detectors_config.add("JF06T32V02", remove_raw_files=True)
#detectors_config.add("JF06T32V03") #detectors_config.add("JF06T32V07", adc_to_energy=True, geometry=True, compression=True, double_pixels_action='mask', factor=7.1, remove_raw_files=True) ## this is for LaB6
detectors_config.add("JF06T32V07", adc_to_energy=True, compression=True, crystfel_lists_laser=True, double_pixels_action='mask', factor=8.0, remove_raw_files=True, save_dap_results=True) ## this is for CrystFEL
#detectors_config.add("JF06T32V07", adc_to_energy=True, geometry=True, compression=True, double_pixels_action='mask', factor=0.25, downsample=(2,2), remove_raw_files=True) ## this is for XSS
#detectors_config.add("JF06T08V03") #detectors_config.add("JF06T08V06")
detectors_config.add("JF06T08V03", adc_to_energy=True, compression=True, crystfel_lists_laser=True, double_pixels_action='mask', factor=0.25, remove_raw_files=True) #detectors_config.add("JF06T08V07", adc_to_energy=True, geometry=True, compression=True, double_pixels_action='mask', factor=8.01, remove_raw_files=True) ## this is for LaB6
#detectors_config.add("JF06T08V07", adc_to_energy=True, compression=True, crystfel_lists_laser=True, double_pixels_action='mask', factor=8.01, remove_raw_files=True, save_dap_results=True) ## this is for CrystFEL
#detectors_config.add("JF02T09V03", disabled_modules=[0, 3, 4, 7, 8], remove_raw_files=True) #detectors_config.add("JF02T09V03", disabled_modules=[0, 3, 4, 7, 8], remove_raw_files=True)
#detectors_config.add("JF02T09V03") #detectors_config.add("JF02T09V03")
#detectors_config.add("JF02T09V03", adc_to_energy=True, geometry=True, roi={'Cr2UP':[290, 320, 2800, 3500], 'Cr2DW':[200, 230, 2800, 3500]}) #detectors_config.add("JF02T09V03", adc_to_energy=True, geometry=True, roi={
#'LbUP1':[280, 330, 5800, 6600],
#'LbDW1':[160, 210, 5800, 6600],
#'LbUP2':[280, 360, 2600, 3400],
#'LbDW2':[140, 220, 2700, 3500],
#'LbUP1_bkg':[350, 400, 5800, 6600],
#'LbDW1_bkg':[90, 140, 5800, 6600],
#'LbUP2_bkg':[380, 460, 2600, 3400],
#'LbDW2_bkg':[40, 120, 2700, 3500]
#})
@ -78,12 +92,50 @@ detectors = detectors_config
#check_intensity = PVCondition("SARFE10-PBPG050:HAMP-INTENSITY-CAL", vmin=0, vmax=1500, wait_time=0.25, required_fraction=0.8)# #check_intensity = PVCondition("SARFE10-PBPG050:HAMP-INTENSITY-CAL", vmin=0, vmax=1500, wait_time=0.25, required_fraction=0.8)#
check_intensity = PVCondition("SARFE10-PBPG050:PHOTON-ENERGY-PER-PULSE-US", vmin=0, vmax=2000, wait_time=0.5, required_fraction=0.8) check_intensity = PVCondition("SARFE10-PBPG050:PHOTON-ENERGY-PER-PULSE-US", vmin=50, vmax=2000, wait_time=0.5, required_fraction=0.9)
#check_intensity = PVCondition("SARFE10-PBPS053:INTENSITY", vmin=0.05,vmax=2, wait_time=0.5, required_fraction=0.8) #check_intensity = PVCondition("SARFE10-PBPS053:INTENSITY", vmin=0.05,vmax=10, wait_time=0.5, required_fraction=0.8)
#check_intensity = PVCondition("SAROP11-PBPS110:INTENSITY", vmin=0.05,vmax=20, wait_time=0.5, required_fraction=0.8) #check_intensity = PVCondition("SAROP11-PBPS110:INTENSITY", vmin=0.05,vmax=20, wait_time=0.5, required_fraction=0.8)
#check_intensity = PVCondition("SAROP11-PBPS122:INTENSITY", vmin=0.1,vmax=10, wait_time=0.5, required_fraction=0.8) #check_intensity = PVCondition("SAROP11-PBPS110:INTENSITY", vmin=0.1, vmax=10, wait_time=0.5, required_fraction=0.9)
#check_intensity = PVCondition("SAROP11-PBPS122:INTENSITY", vmin=0.1, vmax=10, wait_time=0.5, required_fraction=0.9)
#check_intensity = None
daq = SFAcquisition(cfg.instrument, cfg.pgroup, default_channels=channels, default_pvs=list(pvs), default_detectors=detectors, append_user_tag_to_data_dir=True, rate_multiplicator=1) from datetime import datetime
class Date:
def __str__(self):
dt = datetime.now()
return str(dt).split()[0]
class Time:
def __str__(self):
dt = datetime.now()
return str(dt).split()[1]
spear_adjs = {
"Date": Date(),
"Time": Time(),
"Energy": mono_und,
"Laser Wavelength": 600,
"Sample": "Cu Ni",
"Edge": "Ni K",
"Concentration": "2 mM",
"Topas Delay": PVAdjustable("SLAAR01-LTIM-PDLY:SYS_MOVED"),
#"vOD Filter": laser.motion.vOD_filter,
}
spreadsheet = Spreadsheet(
host="saresa-vcons-01.psi.ch", port=9090, adjs=spear_adjs,
placeholders=("Laser Energy", 'Comment')
)
#daq = SFAcquisition(cfg.instrument, cfg.pgroup, default_channels=channels, default_pvs=list(pvs), default_detectors=detectors, api_address='http://sf-daq-8:10002', append_user_tag_to_data_dir=True, rate_multiplicator=1, spreadsheet=spreadsheet) #, cell_file="lyso"
daq = SFAcquisition(cfg.instrument, cfg.pgroup, default_channels=channels, default_pvs=list(pvs), default_detectors=detectors, append_user_tag_to_data_dir=True, rate_multiplicator=1, spreadsheet=spreadsheet) #, cell_file="lyso"
#daq = SFAcquisition(cfg.instrument, cfg.pgroup, default_channels=channels, default_pvs=None, default_detectors=detectors, append_user_tag_to_data_dir=True, rate_multiplicator=1, spreadsheet=spreadsheet) #, cell_file="lyso"
daq.update_config_pvs()
#daq.client.address = 'http://sf-daq-8:10002'
scan = Scanner( scan = Scanner(
scan_info_dir="/sf/alvra/data/{}/res/scan_info".format(cfg.pgroup), scan_info_dir="/sf/alvra/data/{}/res/scan_info".format(cfg.pgroup),
@ -93,7 +145,9 @@ scan = Scanner(
default_sensor=None default_sensor=None
) )
gui = GUI(scan, show_spec=True, show_goto=True, show_run=True) gui = GUI(scan, show_spec=True, show_goto=True, show_run=True, show_sfx=True, extras={"Mono": "Special"})
sfx_gui = GUI(scan, show_static=False, show_scan=False, show_spec=False, show_scan2D=False, show_tweak=True, show_goto=True, show_run=False, show_sfx=True, title="SFX GUI")
pedestal_gui = GUI(scan, tabs={}, title="Pedestal GUI")
bsdaqJF = Deprecator("bsdaqJF", "daq") bsdaqJF = Deprecator("bsdaqJF", "daq")
@ -110,6 +164,19 @@ scansJF = Deprecator("scansJF", "scan")
# default_acquisitions=[daqBS], # default_acquisitions=[daqBS],
#) #)
class PVAdjustableWithGo(PVAdjustable):
def __init__(self, *args, pvname_go=None, **kwargs):
super().__init__(*args, **kwargs)
self.adj_go = None if pvname_go is None else PVAdjustable(pvname_go)
def set_target_value(self, value):
super().set_target_value(value)
if self.adj_go is not None:
self.adj_go.set_target_value(1).wait()
#att_ns = PVAdjustableWithGo("SLAAR03-PLAS-EKSPLA:HOLD_ATTN", pvname_go="SLAAR03-PLAS-EKSPLA:EXE_SET_ATTN.PROC", name="OPO transmission")
from CTAstuff import CCAcquisition, ccta from CTAstuff import CCAcquisition, ccta