Entry 32106
ThNat.py
Submitted by anonymous
on Jan. 31, 2012 at 12:29 a.m.
Language: Python. Code size: 5.7 KB.
# This script is for subtracting natural thorium from spectrum # Calculation of half lives is also included Directory = "C:\\HYPC\\Spectra\\" # List of files file_sam = ["a2th1p2","a2th2p2","a2th3p2",\ "a2th4p2","a2th5p2","a2th6p2",\ "a2th7p2","a2th8p2","a2th9p2"] file_nat = "athnat.fon" for k in range(0,len(file_sam)): # Open files filename_sam = Directory + file_sam[k] + ".pkl" filename_nat = Directory + file_nat sam = open(filename_sam, "r") nat = open(filename_nat, "r") # Read file in line by line sample = sam.readlines() natural = nat.readlines() # Close output file sam.close() nat.close() # Define variables for peak properties E_sam = []; E_sam_unc = []; FWHM_sam = []; i_sam = []; i_sam_rel = [] E_nat = []; E_nat_unc = []; i_nat = []; i_nat_abs = [] # Read data from sample for s in sample[14:len(sample)]: E_sam.append(float(s[28:37])) E_sam_unc.append(float(s[40:46])) FWHM_sam.append(float(s[48:53])) i_sam.append(float(s[61:72])) i_sam_rel.append(float(s[75:80])) # Read data from Natural Thorium for s in natural[4:len(natural)]: E_nat.append(float(s[1:10])) E_nat_unc.append(float(s[12:18])) i_nat.append(float(s[23:31])) i_nat_abs.append(float(s[36:41])) # Match the peak energies match = [] nomatch = [] areas_1 = []; areas_2 = []; areas_3 = []; areas_4 = [] #sam, sam_unc, nat, nat_unc vars()[file_sam[k]] = [] #vars()[file_sam[k]+"_en"] = [] #vars()[file_sam[k]+"_en_unc"] = [] #vars()[file_sam[k]+"_area"] = [] #vars()[file_sam[k]+"_area_unc"] = [] j = 0 for s in E_sam: for i in range(0,len(E_nat)): if (E_nat[i]-E_nat_unc[i]-E_sam_unc[j]-(0.5*FWHM_sam[j])) \ < s < \ (E_nat[i]+E_nat_unc[i]+E_sam_unc[j]+(0.5*FWHM_sam[j])): match.append(s) #print "match ", s areas_1.append(i_sam[j]); areas_2.append(i_sam_rel[j]) areas_3.append(i_nat[i]); areas_4.append(i_nat_abs[i]) if s not in match: nomatch.append(s) vars()[file_sam[k]].append([E_sam[j],E_sam_unc[j],\ i_sam[j],i_sam_rel[j],k+1]) #vars()[file_sam[k]+"_en"].append(E_sam[j]) #vars()[file_sam[k]+"_en_unc"].append(E_sam_unc[j]) #vars()[file_sam[k]+"_area"].append(i_sam[j]) #vars()[file_sam[k]+"_area_unc"].append(i_sam_rel[j]) #print "----nomatch ", s j = j + 1 #print len(vars()[file_sam[k]]) #print (vars()[file_sam[k]]) #print (sample[6][11:-5]) vars()["livetime_"+file_sam[k]] = float(sample[6][11:-5]) livetime_nat = 143620.6 # Combine lists together combined = [] for k in range(0,len(file_sam)): for s in vars()[file_sam[k]]: combined.append(s) #print combined # Sort all lists sortedc = sorted(combined) # Create new lists based on peak energy i = 0 # position in sortedc j = 1 # peak number # If peak within boundaries of before peak then append to list # If peak disagrees with previous peak then create new list # Fifth index will be added and will be spectrum number for i in range(0,len(sortedc)): if i == 0: vars()["Peak_"+str(j)] = [] vars()["Peak_"+str(j)].append(sortedc[i]) elif (sortedc[i][0]-sortedc[i-1][1]-sortedc[i][1])<\ sortedc[i-1][0]<\ sortedc[i][0]+sortedc[i-1][1]+sortedc[i][1]: vars()["Peak_"+str(j)].append(sortedc[i]) else: if len(vars()["Peak_"+str(j)])<2: del vars()["Peak_"+str(j)] j = j-1 #print j j = j+1 vars()["Peak_"+str(j)] = [] for k in range(1,j): for s in (vars()["Peak_"+str(k)]): if s[4] == 1: s[2] = s[2]/livetime_a2th1p2 s[3] = s[2]*s[3]/100 elif s[4] == 2: s[2] = s[2]/livetime_a2th2p2 s[3] = s[2]*s[3]/100 elif s[4] == 3: s[2] = s[2]/livetime_a2th3p2 s[3] = s[2]*s[3]/100 elif s[4] == 4: s[2] = s[2]/livetime_a2th4p2 s[3] = s[2]*s[3]/100 elif s[4] == 5: s[2] = s[2]/livetime_a2th5p2 s[3] = s[2]*s[3]/100 elif s[4] == 6: s[2] = s[2]/livetime_a2th6p2 s[3] = s[2]*s[3]/100 elif s[4] == 7: s[2] = s[2]/livetime_a2th7p2 s[3] = s[2]*s[3]/100 elif s[4] == 8: s[2] = s[2]/livetime_a2th8p2 s[3] = s[2]*s[3]/100 elif s[4] == 9: s[2] = s[2]/livetime_a2th9p2 s[3] = s[2]*s[3]/100 #print k vars()["Peak_"+str(k)] = sorted(vars()["Peak_"+str(k)], key=lambda s: s[4]) #print (vars()["Peak_"+str(k)]) # Plot decay curves x = [] y = [] yerr = [] for s in Peak_1: y.append(s[2]) yerr.append(s[3]) if s[4] == 1: x.append( 4741 ) if s[4] == 2: x.append( 10386 ) if s[4] == 3: x.append( 15764 ) if s[4] == 4: x.append( 24871 ) if s[4] == 5: x.append( 74823 ) if s[4] == 6: x.append( 134562 ) if s[4] == 7: x.append( 174408 ) if s[4] == 8: x.append( 354230 ) if s[4] == 9: x.append( 820970 ) from numpy import * from matplotlib.pyplot import * gcf().close(1) # closes figure errorbar((x),(y),yerr=yerr,marker='o') #gca().set_yscale('log'); gca().set_xscale('log'); title("Peak Energy: "+str(s[0])); xlabel('T delay (s)'); ylabel('log(Activity)') show()
This snippet took 0.03 seconds to highlight.
Back to the Entry List or Home.