-
Simplified calibrate_xgm(), removed unused XGM functions, moved TIM functions in digitizer, removed tim.py
Simplified calibrate_xgm(), removed unused XGM functions, moved TIM functions in digitizer, removed tim.py
The bunch pattern table is an array of 2700 values per train (the maximum number of pulses at 4.5 MHz provided by the machine) and contains information on how the pulses are distributed among SASE 1, 2, 3, and the various lasers at European XFEL. The data stored in the bunch pattern table (mnemonic bunchPatternTable) can be extracted using the wrappers to the euxfel_bunch_pattern package as follows:
import toolbox_scs as tb
import toolbox_scs.misc as tbm
proposalNB = 2511
runNB = 176
run, data = tb.load(proposalNB, runNB, "bunchPatternTable")
ppl_mask = tbm.is_ppl(data.bunchPatternTable)
ppl_mask is a boolean DataArray of dimensions trainId x 2700, where True values indicate where a laser pulse from the PP laser was triggered.
Note
The position of the PP laser pulses with respect to that of the SASE 3 pulses is arbitrary. The PP laser pattern always starts at pulse Id 0, while that of SASE 3 can vary, depending on the machine parameters.
From this mask, one can obtain the number of pulses per train by summing along the 'pulse_slot' dimension:
ppl_npulses = ppl_mask.sum(dim='pulse_slot')