diff --git a/Load.py b/Load.py index a618b94d729626fc545af340f7000cc50181712d..d41edee6eb785999edad7f61f05050be4ac31b42 100644 --- a/Load.py +++ b/Load.py @@ -10,7 +10,6 @@ from karabo_data import by_index, RunDirectory from karabo_data.read_machinery import find_proposal import xarray as xr import os -import euxfel_bunch_pattern as bp mnemonics = { # Machine @@ -377,8 +376,10 @@ mnemonics = { } def extractSaseBunchPattern(runDir, sase=3): - ''' generate the "saseX" and "npulse_saseX" arrays directly from the bunch pattern table and not using the - MDL device BUNCH_DECODER. + ''' generate the "saseX" and "npulse_saseX" arrays directly from the bunch pattern + table and not using the MDL device BUNCH_DECODER. This is inspired from the + euxfel_bunch_pattern project, + https://git.xfel.eu/gitlab/karaboDevices/euxfel_bunch_pattern.git Inputs: runDir: run directory obtained by karabo_data.runDirectory() sase: int, sase number between 1 and 3 @@ -390,18 +391,23 @@ def extractSaseBunchPattern(runDir, sase=3): ''' if not (1 <= sase <= 3): raise ValueError("Invalid SASE value {!r}, expected 1-3") + # define relevant masks, see euxfel_bunch_pattern project for details + DESTINATION_MASK = 0xf << 18 + DESTINATION_T4D = 4 << 18 # SASE1/3 dump + DESTINATION_T5D = 2 << 18 # SASE2 dump + PHOTON_LINE_DEFLECTION = 1 << 27 # Soft kick (e.g. SA3) bp_mnemo = mnemonics['bunchPatternTable'] bp_table = runDir.get_array(bp_mnemo['source'],bp_mnemo['key'], extra_dims=bp_mnemo['dim']) - destination = bp.DESTINATION_T5D if (sase == 2) else bp.DESTINATION_T4D - matched = (bp_table & bp.DESTINATION_MASK) == destination + destination = DESTINATION_T5D if (sase == 2) else DESTINATION_T4D + matched = (bp_table & DESTINATION_MASK) == destination if sase == 1: # Pulses to SASE 1 when soft kick is off - matched &= (bp_table & bp.PHOTON_LINE_DEFLECTION) == 0 + matched &= (bp_table & PHOTON_LINE_DEFLECTION) == 0 elif sase == 3: # Pulses to SASE 3 when soft kick is on - matched &= (bp_table & bp.PHOTON_LINE_DEFLECTION) != 0 + matched &= (bp_table & PHOTON_LINE_DEFLECTION) != 0 nz = np.nonzero(matched.values) dim_pId = matched.shape[1]