diff --git a/xgm.py b/xgm.py index 5446cbf9a9d7ba147a802b697161dc4d000eca10..4cd3a38ba466cdbc926b0175479793458fafedb8 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):