Skip to content
Snippets Groups Projects
Commit 76960bcb authored by Loïc Le Guyader's avatar Loïc Le Guyader
Browse files

Merge branch 'xas_binning' into 'master'

Xas binning

See merge request !81
parents 8e806941 a6385763
No related branches found
No related tags found
1 merge request!81Xas binning
...@@ -113,12 +113,12 @@ def binning(x, data, func, bins=100, bin_length=None): ...@@ -113,12 +113,12 @@ def binning(x, data, func, bins=100, bin_length=None):
dummy = func([]) dummy = func([])
res = np.empty((nb_bins), dtype=dummy.dtype) res = np.empty((nb_bins), dtype=dummy.dtype)
for k in range(nb_bins): for k in range(nb_bins):
res[k] = func(data[bin_idx == k]) res[k] = func(data[k+1==bin_idx])
return bins, res return bins, res
def xas(nrun, bins=None, Iokey='SCS_SA3', Itkey='MCP3apd', nrjkey='nrj', Iooffset=0, plot=False, def xas(nrun, bins=None, Iokey='SCS_SA3', Itkey='MCP3apd', nrjkey='nrj',
fluorescence = False): Iooffset=0, plot=False, fluorescence=False):
""" Compute the XAS spectra from a xarray nrun. """ Compute the XAS spectra from a xarray nrun.
Inputs: Inputs:
...@@ -130,12 +130,12 @@ def xas(nrun, bins=None, Iokey='SCS_SA3', Itkey='MCP3apd', nrjkey='nrj', Iooffse ...@@ -130,12 +130,12 @@ def xas(nrun, bins=None, Iokey='SCS_SA3', Itkey='MCP3apd', nrjkey='nrj', Iooffse
NRJkey: string for the nrj fields, typically 'nrj' NRJkey: string for the nrj fields, typically 'nrj'
Iooffset: offset to apply on Io Iooffset: offset to apply on Io
plot: boolean, displays a XAS spectrum if True plot: boolean, displays a XAS spectrum if True
fluorescnce: boolean, if True, absorption is the ratio, fluorescence: boolean, if True, absorption is the ratio,
if False, absorption is negative log if False, absorption is negative log
Outputs: Outputs:
a dictionnary containing: a dictionnary containing:
nrj: the bins center nrj: the mean of photon energy in each bin
muA: the absorption muA: the absorption
sigmaA: standard deviation on the absorption sigmaA: standard deviation on the absorption
sterrA: standard error on the absorption sterrA: standard error on the absorption
...@@ -189,12 +189,13 @@ def xas(nrun, bins=None, Iokey='SCS_SA3', Itkey='MCP3apd', nrjkey='nrj', Iooffse ...@@ -189,12 +189,13 @@ def xas(nrun, bins=None, Iokey='SCS_SA3', Itkey='MCP3apd', nrjkey='nrj', Iooffse
sterrA = nosample['sigmaA']/np.sqrt(nosample['counts']) sterrA = nosample['sigmaA']/np.sqrt(nosample['counts'])
bins_c = 0.5*(bins[1:] + bins[:-1]) bins_c = 0.5*(bins[1:] + bins[:-1])
bin_idx = np.digitize(rundata['nrj'], bins)
nrj = np.array([ np.mean(rundata['nrj'][idx+1==bin_idx]) for idx in range(len(bins)-1)])
if plot: if plot:
f = plt.figure(figsize=(6.5,6)) f = plt.figure(figsize=(6.5,6))
gs = gridspec.GridSpec(2,1,height_ratios=[4,1]) gs = gridspec.GridSpec(2,1,height_ratios=[4,1])
ax1 = plt.subplot(gs[0]) ax1 = plt.subplot(gs[0])
ax1.plot(bins_c, muA, color='C1', label=r'$\sigma$') ax1.plot(nrj, muA, color='C1', label=r'$\sigma$')
if fluorescence: if fluorescence:
ax1.set_ylabel('XAS (fluorescence)') ax1.set_ylabel('XAS (fluorescence)')
else: else:
...@@ -202,7 +203,7 @@ def xas(nrun, bins=None, Iokey='SCS_SA3', Itkey='MCP3apd', nrjkey='nrj', Iooffse ...@@ -202,7 +203,7 @@ def xas(nrun, bins=None, Iokey='SCS_SA3', Itkey='MCP3apd', nrjkey='nrj', Iooffse
ax1.set_xlabel('Energy (eV)') ax1.set_xlabel('Energy (eV)')
ax1.legend() ax1.legend()
ax1_twin = ax1.twinx() ax1_twin = ax1.twinx()
ax1_twin.bar(bins_c, nosample['muIo'], width=0.80*(bins_c[1]-bins_c[0]), ax1_twin.bar(nrj, nosample['muIo'], width=0.80*(bins_c[1]-bins_c[0]),
color='C1', alpha=0.2) color='C1', alpha=0.2)
ax1_twin.set_ylabel('Io') ax1_twin.set_ylabel('Io')
try: try:
...@@ -213,13 +214,13 @@ def xas(nrun, bins=None, Iokey='SCS_SA3', Itkey='MCP3apd', nrjkey='nrj', Iooffse ...@@ -213,13 +214,13 @@ def xas(nrun, bins=None, Iokey='SCS_SA3', Itkey='MCP3apd', nrjkey='nrj', Iooffse
f.suptitle(nrun.attrs['plot_title']) f.suptitle(nrun.attrs['plot_title'])
ax2 = plt.subplot(gs[1]) ax2 = plt.subplot(gs[1])
ax2.bar(bins_c, nosample['counts'], width=0.80*(bins_c[1]-bins_c[0]), ax2.bar(nrj, nosample['counts'], width=0.80*(bins_c[1]-bins_c[0]),
color='C0', alpha=0.2) color='C0', alpha=0.2)
ax2.set_xlabel('Energy (eV)') ax2.set_xlabel('Energy (eV)')
ax2.set_ylabel('counts') ax2.set_ylabel('counts')
plt.tight_layout() plt.tight_layout()
return {'nrj':bins_c, 'muA':muA, 'sterrA':sterrA, 'sigmaA':nosample['sigmaA'], return {'nrj':nrj, 'muA':muA, 'sterrA':sterrA, 'sigmaA':nosample['sigmaA'],
'muIo':nosample['muIo'], 'counts':nosample['counts']} 'muIo':nosample['muIo'], 'counts':nosample['counts']}
def xasxmcd(dataP, dataN): def xasxmcd(dataP, dataN):
......
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