Coolphy / ADRESS_RIXS

simple scripts to plot RIXS spectra
0 stars 0 forks source link

data_dict #7

Closed Coolphy closed 1 year ago

Coolphy commented 1 year ago

%%

path = 'C:/Users/Yuan/Desktop/plotRIXS-master/test' base = 'Fe' energy_dispersion = 0.00457 #eV/subpixel

%%

%matplotlib nbagg

%pylab agg

import h5py from scipy.signal import correlate from scipy.signal import find_peaks

import numpy as np import matplotlib.pyplot as plt

from scipy.optimize import curve_fit

%%

def load_xas(scan_number, path=path.replace("\", "/"), base=base): filename = f"{base}{scan_number:04d}" data = np.loadtxt(f"{path}/XAS/{file_name}.xas", comments="#") EN = data[:, 0] TEY = data[:, 1] TFY = data[:, 2] RMU = data[:, 3] return EN, TEY, TFY, RMU

%%

rixs_dict = {}

def load_h5(file_name, path=path.replace("\", "/")): print(f"{path}/RIXS/{file_name}.h5") f = h5py.File(f"{path}/RIXS/{file_name}.h5", 'r') ccd = np.array(f['entry']['analysis']['spectrum'][()]) print(ccd) return ccd

def load_raw(scan_number, base=base, rixs_dict=rixs_dict): temp_dict = {} for i in range(1, 4): filename = f"{base}{scan_number:04d}_d{i}" temp_dict[i] = load_h5(file_name) rixs_dict[scan_number] = temp_dict return temp_dict[1], temp_dict[2], temp_dict[3]

%%

def x_corr(refData, uncorrData): corr = correlate(refData, uncorrData) lag = np.argmax(corr) corrData = np.roll(uncorrData, lag) return corrData

def elastic_shift(pixelData, energy_dispersion=energy_dispersion): xdataPixel = np.arange(len(pixelData))

#try to find peak
peaks, _ = find_peaks(pixelData, height=10,
                      width=3)  #try to find peak with height
#     peaks = xdataPixel[pixelData>50]    #try to find peak with right edge

#chop data
xdataPixel = xdataPixel[(peaks[-1] - 2000):(peaks[-1] + 200)]
energyData = pixelData[(peaks[-1] - 2000):(peaks[-1] + 200)]

xDataEnergy = (xdataPixel - peaks[-1]) * energy_dispersion
return xDataEnergy, energyData

%%

def load_rixs(scan_number, rixs_dict=rixs_dict): if scan_number not in rixs_dict: ccd1, ccd2, ccd3 = load_raw(scan_number) else: ccd1 = rixs_dict[scan_number][1] ccd2 = rixs_dict[scan_number][2] ccd3 = rixs_dict[scan_number][3] ccd1 = x_corr(ccd2, ccd1) ccd3 = x_corr(ccd2, ccd3) xdata, tempData = elastic_shift(ccd1 + ccd2 + ccd3) return xdata, tempData

def combine_rixs(scans): for i, scannumber in enumerate(scans): if i == 0: xdata, ydata = loadrixs(scannumber) refdata = ydata sumdata = ydata else: , ydata = load_rixs(scannumber) ydata = x_corr(refdata, ydata) sumdata = sumdata + ydata return xdata, sumdata