Skip to content
Snippets Groups Projects
Commit 44693057 authored by Laurent Mercadier's avatar Laurent Mercadier
Browse files

Merge branch 'tim_checkApd' into 'master'

Fixed bug and improved checkTimApdWindow()

See merge request SCS/ToolBox!20
parents 73db4b60 5d99e1e3
No related branches found
No related tags found
1 merge request!20Fixed bug and improved checkTimApdWindow()
......@@ -667,38 +667,42 @@ def checkTimApdWindow(data, mcp=1, use_apd=True, intstart=None, intstop=None):
Output:
Plot
'''
mcpToChannel={1:'D', 2:'C', 3:'B', 4:'A'}
apdChannels={1:3, 2:2, 3:1, 4:0}
npulses_max = data['npulses_sase3'].max().values
tid = data['npulses_sase3'].where(data['npulses_sase3'] == npulses_max,
drop=True)[0].trainId.values
if 'MCP{}raw'.format(mcp) not in data:
tid, data_from_train = data.attrs['run'].train_from_id(tid)
trace = data_from_train['SCS_UTC1_ADQ/ADC/1:network']['digitizers.channel_1_D.raw.samples']
print('no raw data for MCP{}. Loading trace from MCP1'.format(mcp))
label_trace='MCP1 Voltage [V]'
trace = data_from_train['SCS_UTC1_ADQ/ADC/1:network']['digitizers.channel_1_'
+'{}.raw.samples'.format(mcpToChannel[mcp])]
print('no raw data for MCP{}. Loading trace from MCP{}'.format(mcp, mcp))
else:
idx = np.argwhere(data['MCP{}raw'.format(mcp)].trainId.values == tid)[0]
trace = data['MCP{}raw'.format(mcp)][idx].T
label_trace='MCP{} Voltage [V]'.format(mcp)
trace = data['MCP{}raw'.format(mcp)].sel(trainId=tid).T
if use_apd:
pulseStart = data.attrs['run'].get_array(
'SCS_UTC1_ADQ/ADC/1', 'board1.apd.channel_0.pulseStart.value')[0].values
'SCS_UTC1_ADQ/ADC/1',
'board1.apd.channel_{}.pulseStart.value'.format(apdChannels[mcp]))[0].values
pulseStop = data.attrs['run'].get_array(
'SCS_UTC1_ADQ/ADC/1', 'board1.apd.channel_0.pulseStop.value')[0].values
'SCS_UTC1_ADQ/ADC/1',
'board1.apd.channel_{}.pulseStop.value'.format(apdChannels[mcp]))[0].values
initialDelay = data.attrs['run'].get_array(
'SCS_UTC1_ADQ/ADC/1', 'board1.apd.channel_0.initialDelay.value')[0].values
'SCS_UTC1_ADQ/ADC/1',
'board1.apd.channel_{}.initialDelay.value'.format(apdChannels[mcp]))[0].values
upperLimit = data.attrs['run'].get_array(
'SCS_UTC1_ADQ/ADC/1', 'board1.apd.channel_0.upperLimit.value')[0].values
nsamples = upperLimit - initialDelay
'SCS_UTC1_ADQ/ADC/1',
'board1.apd.channel_{}.upperLimit.value'.format(apdChannels[mcp]))[0].values
else:
pulseStart = intstart
pulseStop = intstop
if npulses_max > 1:
sa3 = data['sase3'].where(data['sase3']>1)
step = sa3.where(data['npulses_sase3']>1, drop=True)[0,:2].values
step = int(step[1] - step[0])
nsamples = 440 * step
else:
nsamples = 0
if npulses_max > 1:
sa3 = data['sase3'].where(data['sase3']>1)
step = sa3.where(data['npulses_sase3']>1, drop=True)[0,:2].values
step = int(step[1] - step[0])
nsamples = 440 * step
print(nsamples)
else:
nsamples = 0
fig, ax = plt.subplots(figsize=(5,3))
ax.plot(trace[:pulseStop+25], color='C1', label='first pulse')
......@@ -707,7 +711,7 @@ def checkTimApdWindow(data, mcp=1, use_apd=True, intstart=None, intstop=None):
ax.axvline(pulseStop, color='gray', ls='--')
ax.set_xlim(pulseStart-25, pulseStop+25)
ax.locator_params(axis='x', nbins=4)
ax.set_ylabel(label_trace)
ax.set_ylabel('MCP{} Voltage [V]'.format(mcp))
ax.set_xlabel('First pulse sample #')
if npulses_max > 1:
pulseStart = pulseStart + nsamples*(npulses_max-1)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment