From b4fc01386735ff7da4b001b1c41aa3ea5cffee51 Mon Sep 17 00:00:00 2001 From: mercadil <laurent.mercadier@xfel.eu> Date: Sun, 24 Mar 2019 01:32:20 +0100 Subject: [PATCH] Fixes mcpPeaks by calculating the t_offset from the 'sase3' bunchpattern --- xgm.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/xgm.py b/xgm.py index 5446cbf..4cd3a38 100644 --- a/xgm.py +++ b/xgm.py @@ -341,7 +341,7 @@ def calibrateXGMs(data, rollingWindow=200, plot=False): return np.array([sa3_calib_factor, scs_calib_factor]) -def mcpPeaks(data, intstart, intstop, bkgstart, bkgstop, t_offset=1760, mcp=1, npulses=None): +def mcpPeaks(data, intstart, intstop, bkgstart, bkgstop, mcp=1, t_offset=None, npulses=None): ''' Computes peak integration from raw MCP traces. Inputs: @@ -350,8 +350,8 @@ def mcpPeaks(data, intstart, intstop, bkgstart, bkgstop, t_offset=1760, mcp=1, n intstop: trace index of integration stop bkgstart: trace index of background start bkgstop: trace index of background stop - t_offset: index separation between two pulses mcp: MCP channel number + t_offset: index separation between two pulses npulses: number of pulses Output: @@ -361,10 +361,13 @@ def mcpPeaks(data, intstart, intstop, bkgstart, bkgstop, t_offset=1760, mcp=1, n keyraw = 'MCP{}raw'.format(mcp) if keyraw not in data: raise ValueError("Source not found: {}!".format(keyraw)) + sa3 = data['sase3'].where(data['sase3']>1) + step = sa3.where(data['npulses_sase3']>0, drop=True)[0,:2].values + step = int(step[1] - step[0]) + if t_offset is None: + t_offset = 440 * step if npulses is None: - npulses = int((data['sase3'].max().values + 1)/4) - sa3 = data['sase3'].where(data['sase3']>1)/4 - sa3 -= sa3[:,0] + npulses = int((sa3.max().values - sa3.min().values + step)/step) results = xr.DataArray(np.empty((sa3.shape[0], npulses)), coords=sa3.coords, dims=['trainId', 'MCP{}fromRaw'.format(mcp)]) for i in range(npulses): -- GitLab