diff --git a/xgm.py b/xgm.py index bac031752f24f06c6f0a714b7baef6ccd71214db..400ae78eda4661fdc424216a1a50e9898f026e87 100644 --- a/xgm.py +++ b/xgm.py @@ -251,7 +251,24 @@ def selectSASEinXGM(data, sase='sase3', xgm='SCS_XGM', sase3First=True, npulses= elif pulseIdmin_sa3 > pulseIdmax_sa1: sa3First = False else: - print('Interleaved mode') + print('Interleaved mode, but no sase-dedicated XGM data loaded.') + saseStr = 'SA{}'.format(sase[4]) + xgmStr = xgm.split('_')[0] + print('Loading {}_{} data...'.format(xgmStr, saseStr)) + try: + if npulses == None: + npulses = data['npulses_sase{}'.format(sase[4])].max().values + if xgmStr == 'XTD10': + source = 'SA3_XTD10_XGM/XGM/DOOCS:output' + if xgmStr == 'SCS': + source = 'SCS_BLU_XGM/XGM/DOOCS:output' + key = 'data.intensitySa{}TD'.format(sase[4]) + result = data.attrs['run'].get_array(source, key, extra_dims=['XGMbunchId']) + result = result.isel(XGMbunchId=slice(0, npulses)) + return result + except: + print('Could not load {}_{} data. '.format(xgmStr, saseStr) + + 'Interleaved mode and no sase-dedicated data is not yet supported.') #take the derivative along the trainId to track changes in pulse number: diff = npulses_sa3.diff(dim='trainId') @@ -578,6 +595,8 @@ def getTIMapd(data, mcp=1, use_apd=True, intstart=None, intstop=None, sa3 = data['sase3'].where(data['sase3']>1, drop=True) npulses_sa3 = data['npulses_sase3'] maxpulses = int(npulses_sa3.max().values) + if npulses is not None: + maxpulses = np.min([npulses, maxpulses]) step = 1 if maxpulses > 1: #Calculate the number of non-lasing pulses between two lasing pulses (step) @@ -599,7 +618,7 @@ def getTIMapd(data, mcp=1, use_apd=True, intstart=None, intstop=None, sa3 -= sa3[:,0] sa3 = sa3.astype(int) if np.all(npulses_sa3 == npulses_sa3[0]): - tim = apd[:, sa3[0].values] + tim = apd[:, sa3[0].values[:maxpulses]] return tim stride = 1