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