#!/usr/bin/env python
#------------------------------
"""
:py:class:`PyDataAccess` contains methods to access psana data objects
=======================================================================
This software was developed for the SIT project.
If you use all or part of it, please give an appropriate acknowledgment.
Created by Mikhail Dubrovin
"""
#import sys
import _psana
from time import strftime, localtime
##-----------------------------
[docs]def get_cspad_data_object(evt, src) :
"""get cspad data object
"""
o = evt.get(_psana.CsPad.DataV2, src)
if o is not None : return o
o = evt.get(_psana.CsPad.DataV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_cspad_config_object(env, src) :
"""get cspad config object
"""
cfg = env.configStore()
o = cfg.get(_psana.CsPad.ConfigV5, src)
if o is not None : return o
o = cfg.get(_psana.CsPad.ConfigV4, src)
if o is not None : return o
o = cfg.get(_psana.CsPad.ConfigV3, src)
if o is not None : return o
o = cfg.get(_psana.CsPad.ConfigV2, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_cspad2x2_data_object(evt, src) :
"""get cspad2x2 data object
"""
o = evt.get(_psana.CsPad2x2.ElementV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_cspad2x2_config_object(env, src) :
"""get cspad2x2 config object
"""
cfg = env.configStore()
o = cfg.get(_psana.CsPad2x2.ConfigV2, src)
if o is not None : return o
o = cfg.get(_psana.CsPad2x2.ConfigV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_camera_data_object(evt, src) :
"""get camera data object
"""
o = evt.get(_psana.Camera.FrameV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_camera_config_object(env, src) :
"""get camera config object
"""
cfg = env.configStore()
o = cfg.get(_psana.Camera.FrameFexConfigV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_opal1k_config_object(env, src) :
"""get camera config object
"""
cfg = env.configStore()
o = cfg.get(_psana.Opal1k.ConfigV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_princeton_data_object(evt, src) :
"""get princeton data object
"""
o = evt.get(_psana.Princeton.FrameV2, src)
if o is not None : return o
o = evt.get(_psana.Princeton.FrameV1, src)
if o is not None : return o
o = evt.get(_psana.Pimax.FrameV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_princeton_config_object(env, src) :
"""get princeton config object
"""
cfg = env.configStore()
o = cfg.get(_psana.Princeton.ConfigV5, src)
if o is not None : return o
o = cfg.get(_psana.Princeton.ConfigV4, src)
if o is not None : return o
o = cfg.get(_psana.Princeton.ConfigV3, src)
if o is not None : return o
o = cfg.get(_psana.Princeton.ConfigV2, src)
if o is not None : return o
o = cfg.get(_psana.Princeton.ConfigV1, src)
if o is not None : return o
o = cfg.get(_psana.Pimax.ConfigV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_pnccd_data_object(evt, src) :
"""get pnccd data object
"""
o = evt.get(_psana.PNCCD.FramesV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_pnccd_config_object(env, src) :
"""get pnccd config object
"""
cfg = env.configStore()
o = cfg.get(_psana.PNCCD.ConfigV2, src)
if o is not None : return o
o = cfg.get(_psana.PNCCD.ConfigV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_andor_data_object(evt, src) :
"""get andor data object
"""
o = evt.get(_psana.Andor3d.FrameV1, src)
if o is not None : return o
o = evt.get(_psana.Andor.FrameV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_andor_config_object(env, src) :
"""get andor config object
"""
cfg = env.configStore()
o = cfg.get(_psana.Andor3d.ConfigV1, src)
if o is not None : return o
o = cfg.get(_psana.Andor.ConfigV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_fccd_data_object(env, src) :
"""get fccd data object
"""
return get_camera_data_object(evt, src)
##-----------------------------
[docs]def get_fccd_config_object(env, src) :
"""get fccd config object
"""
cfg = env.configStore()
o = cfg.get(_psana.FCCD.FccdConfigV2, src)
if o is not None : return o
o = cfg.get(_psana.FCCD.FccdConfigV1, src)
if o is not None : return o
o = cfg.get(_psana.FCCD.FccdConfig, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_fccd960_data_object(env, src) :
"""get fccd960 data object
"""
return get_camera_data_object(evt, src)
##-----------------------------
[docs]def get_fccd960_config_object(env, src) :
"""get fccd960 config object
"""
return get_fccd_config_object(env, src)
##-----------------------------
[docs]def get_epix_data_object(evt, src) :
"""get epix data object
"""
o = evt.get(_psana.Epix.ElementV3, src)
if o is not None : return o
o = evt.get(_psana.Epix.ElementV2, src)
if o is not None : return o
o = evt.get(_psana.Epix.ElementV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_epix_config_object(env, src) :
"""get epix config object
"""
cfg = env.configStore()
o = cfg.get(_psana.Epix.Config100aV2, src)
if o is not None : return o
o = cfg.get(_psana.Epix.Config100aV1, src)
if o is not None : return o
o = cfg.get(_psana.Epix.Config10KV1, src)
if o is not None : return o
o = cfg.get(_psana.Epix.ConfigV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_tm6740_config_object(env, src) :
"""get pulnix tm6740 config object
"""
cfg = env.configStore()
o = cfg.get(_psana.Pulnix.TM6740ConfigV1, src)
if o is not None : return o
o = cfg.get(_psana.Pulnix.TM6740ConfigV2, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_quartz_data_object(evt, src) :
"""get quartz data object
"""
return get_camera_data_object(evt, src)
##-----------------------------
[docs]def get_quartz_config_object(env, src) :
"""get quartz config object
"""
cfg = env.configStore()
o = cfg.get(_psana.Quartz.ConfigV2, src)
if o is not None : return o
o = cfg.get(_psana.Quartz.ConfigV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_rayonix_data_object(evt, src) :
"""get rayonix data object
"""
return get_camera_data_object(evt, src)
##-----------------------------
[docs]def get_rayonix_config_object(env, src) :
"""get rayonix config object
"""
cfg = env.configStore()
o = cfg.get(_psana.Rayonix.ConfigV2, src)
if o is not None : return o
o = cfg.get(_psana.Rayonix.ConfigV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_timepix_data_object(evt, src) :
"""get timepix data object
"""
o = evt.get(_psana.Timepix.DataV2, src)
if o is not None : return o
o = evt.get(_psana.Timepix.DataV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_timepix_config_object(env, src) :
"""get timepix config object
"""
cfg = env.configStore()
o = cfg.get(_psana.Timepix.ConfigV3, src)
if o is not None : return o
o = cfg.get(_psana.Timepix.ConfigV2, src)
if o is not None : return o
o = cfg.get(_psana.Timepix.ConfigV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_fli_data_object(evt, src) :
"""get fli data object
"""
o = evt.get(_psana.Fli.FrameV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_fli_config_object(env, src) :
"""get fli config object
"""
cfg = env.configStore()
o = cfg.get(_psana.Fli.ConfigV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_pimax_data_object(evt, src) :
"""get pimax data object
"""
o = evt.get(_psana.Pimax.FrameV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_pimax_config_object(env, src) :
"""get pimax config object
"""
cfg = env.configStore()
o = cfg.get(_psana.Pimax.ConfigV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_orca_config_object(env, src) :
"""get orca config object
"""
cfg = env.configStore()
o = cfg.get(_psana.Orca.ConfigV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_zyla_data_object(evt, src) :
"""get zyla data object
"""
o = evt.get(_psana.Zyla.FrameV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_zyla_config_object(env, src) :
"""get zyla config object
"""
cfg = env.configStore()
o = cfg.get(_psana.Zyla.ConfigV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_jungfrau_data_object(evt, src) :
"""get jungfrau data object
"""
o = evt.get(_psana.Jungfrau.ElementV2, src)
if o is not None : return o
o = evt.get(_psana.Jungfrau.ElementV1, src)
if o is not None : return o
return None
##-----------------------------
def get_jungfrau_config_object(env, src) :
cfg = env.configStore()
o = cfg.get(_psana.Jungfrau.ConfigV3, src)
if o is not None : return o
o = cfg.get(_psana.Jungfrau.ConfigV2, src)
if o is not None : return o
o = cfg.get(_psana.Jungfrau.ConfigV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_jungfrau_gain_mode_object(env, src) :
"""Returns gain mode object, usage: gmo=..., gmo.name, gmo.names.iteritems(), gm.values.iteritems(), etc.
"""
co = get_jungfrau_config_object(env, _psana.Source(src))
return co.gainMode()
##-----------------------------
[docs]def get_epicscam_config_object(env, src) :
"""get epics camera config object
"""
cfg = env.configStore()
o = cfg.get(_psana.Camera.ControlsCameraConfigV1, src)
if o is not None : return o
return None
##-----------------------------
##-----------------------------
##---- For WFDetector.py ------
##-----------------------------
##-----------------------------
[docs]def get_acqiris_data_object(evt, src) :
"""get acqiris data object
"""
o = evt.get(_psana.Acqiris.DataDescV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_acqiris_config_object(env, src) :
"""get acqiris config object
"""
cfg = env.configStore()
o = cfg.get(_psana.Acqiris.ConfigV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_imp_data_object(evt, src) :
"""get imp data object
"""
o = evt.get(_psana.Imp.ElementV1, src)
if o is not None : return o
return None
##-----------------------------
[docs]def get_imp_config_object(env, src) :
"""get imp config object
"""
cfg = env.configStore()
o = cfg.get(_psana.Imp.ConfigV1, src)
if o is not None : return o
return None
##-----------------------------
##-----------------------------
##----- Other data objects ----
##-----------------------------
##-----------------------------
[docs]def get_evr_data_object(evt, src) :
"""get evr data object for event codes
"""
o = evt.get(_psana.EvrData.DataV4, src)
if o is not None : return o
o = evt.get(_psana.EvrData.DataV3, src)
if o is not None : return o
return None
##-----------------------------
[docs]def time_pars_evt(evt):
"""Returns time parameters from psana.Event object.
Parameter
- evt (psana.Event) - psana event object
Returns tuple of the event time parameters:
- tsec (int) - time in sec since 1970
- tnsec (int) - time in nanosecond
- fid (uint16) - fiducials
- date (str) - date in format YYYY-MM-DD
- time (str) - date in format MM:MM:SS
"""
evtid = evt.get(_psana.EventId)
tsec, tnsec = evtid.time()
fid = evtid.fiducials()
date = strftime('%Y-%m-%d', localtime(tsec))
time = strftime('%H:%M:%S', localtime(tsec))
return tsec, tnsec, fid, date, time
##-----------------------------