def rawspectrum(run,name,mins=(183,227),maxs=(234,302)): p = PelFile(basedir+"%04i/" % run + name+".pel") mon = MonFile(basedir+"%04i/" % run + name+".pel.txt",False) spectrum_total = np.sum(mon.spec) #get the data spectrum val = p.make1d(mins,maxs) val = rebin(val) err = np.sqrt(val) # get the background spectrum bval = p.make1d((412,412),(512,512)) bval = rebin(bval) berr = np.sqrt(bval) #normalize background to beam size bval *= (maxs[0]-mins[0])/100*(maxs[1]-mins[1])/100 berr *= (maxs[0]-mins[0])/100*(maxs[1]-mins[1])/100 val -= bval err = np.sqrt(err**2+berr**2) val /= spectrum_total err = np.sqrt((err/spectrum_total)**2+ (err*np.sqrt(spectrum_total)/spectrum_total**2)**2) return (val,err)
def makePel(self): """Create a blank Pel object for loading detector data""" data = PelFile() def statusfunc(x): self.progress.SetValue(x) self.Yield() data.statusfunc = statusfunc return data
def raw(run,name,start=50,end=100,size=512): p = PelFile(basedir+"%04i/" % run + name+".pel") mon = MonFile(basedir+"%04i/" % run + name+ ".pel.txt",False) val = np.sum(p.make3d(size)[:,:,start:end],axis=2) print val.shape spectrum_total = np.sum(mon.spec) return val/spectrum_total,np.sqrt(val)/spectrum_total
def simple_spectrum(run,mins=(0,0),maxs=(16,128),mask=None): p = PelFile(basedir+"SESAME_%i/SESAME_%i_neutron_event.dat"%(run,run)) mon = MonFile(basedir+"SESAME_%i/SESAME_%i_bmon_histo.dat"%(run,run),False) data = p.make1d(mins,maxs,mask) err = np.sqrt(data)/np.sum(mon.spec) data /= np.sum(mon.spec) return (data,err)
def fr(run,name,mins=(183,227),maxs=(234,302)): p = PelFile(basedir+"%04i/" % run + name+"up.pel") mon = MonFile(basedir+"%04i/" % run + name+"up.pel.txt",False) up = p.make1d(mins,maxs)/np.sum(mon.spec) p = PelFile(basedir+"%04i/" % run + name+"down.pel") mon = MonFile(basedir+"%04i/" % run + name+"down.pel.txt",False) down = p.make1d(mins,maxs)/np.sum(mon.spec) return np.sum(up[50:100])/np.sum(down[50:100])
def spectrum(run,name,mins=(183,227),maxs=(234,302)): p = PelFile(basedir+"%04i/" % run + name+"up.pel") mon = MonFile(basedir+"%04i/" % run + name+"up.pel.txt",False) up = p.make1d(mins,maxs)/np.sum(mon.spec) p = PelFile(basedir+"%04i/" % run + name+"down.pel") mon = MonFile(basedir+"%04i/" % run + name+"down.pel.txt",False) down = p.make1d(mins,maxs)/np.sum(mon.spec) return (up-down)/(up+down)
def spectrum(run,name,mins=(0,0),maxs=(16,128),mask=None): name = normalize_name(name) p = PelFile(basedir+"SESAME_%i/" % run + name+"up_neutron_event.dat") mon = MonFile(basedir+"SESAME_%i/" % run + name+"up_bmon_histo.dat",False) up = p.make1d(mins,maxs,mask) uperr = np.sqrt(up)/np.sum(mon.spec) up /= np.sum(mon.spec) p = PelFile(basedir+"SESAME_%i/" % run + name+"down_neutron_event.dat") mon = MonFile(basedir+"SESAME_%i/" % run + name+"down_bmon_histo.dat",False) down = p.make1d(mins,maxs,mask) downerr = np.sqrt(down)/np.sum(mon.spec) down /= np.sum(mon.spec) return (up-down)/(up+down)
def getIntegratedSpectra(run,name,mins,maxs,mask): name = normalize_name(name) p = PelFile(basedir+"SESAME_%i/" % run + name+"up_neutron_event.dat") mon = MonFile(basedir+"SESAME_%i/" % run + name+"up_bmon_histo.dat",False) up = np.sum(p.make1d(mins,maxs,mask)[40:90]) uperr = np.sqrt(up)/np.sum(mon.spec) up /= np.sum(mon.spec) p = PelFile(basedir+"SESAME_%i/" % run + name+"down_neutron_event.dat") mon = MonFile(basedir+"SESAME_%i/" % run + name+"down_bmon_histo.dat",False) down = np.sum(p.make1d(mins,maxs,mask)[40:90]) downerr = np.sqrt(down)/np.sum(mon.spec) down /= np.sum(mon.spec) return (up,uperr,down,downerr)
def spectrum(run,mins=(0,0),maxs=(16,128),mask=None): eventfile = basedir+"SESAME_%i/SESAME_%i" % (run,run) + "_neutron_event.dat" if not os.path.isfile(eventfile): return None p = PelFile(eventfile) mon = MonFile(basedir+"SESAME_%i/SESAME_%i" % (run,run) +"_bmon_histo.dat",False) up = p.make1d(mins,maxs,mask) manifestFile = basedir+"SESAME_%i/SESAME_%i" % (run,run) + "_runinfo.xml" text = ET.parse(manifestFile).getroot().find(".//"+XMLNS+"Notes").text text = HTMLParser.HTMLParser().unescape(text) manifest = json.loads(text) return up,np.sum(mon.spec),manifest
def spectrum(up,down,mins=(183,227),maxs=(234,302)): p = PelFile(up) mon = MonFile(up+".txt",False) up = p.make1d(mins,maxs) uperr = np.sqrt(up) up /= np.sum(mon.spec) uperr /= np.sum(mon.spec) p = PelFile(down) mon = MonFile(down+".txt",False) down = p.make1d(mins,maxs) downerr = np.sqrt(down) down /= np.sum(mon.spec) downerr /= np.sum(mon.spec) del p p = (up-down)/(up+down) e = 2 * up /(up**2-down**2)*np.sqrt(uperr**2+downerr**2) return (p,e)
def get_2d_int(run,name): p = PelFile(basedir+"SESAME_%i/" % run + name+"_neutron_event.dat") mon = MonFile(basedir+"SESAME_%i/" % run + name+"_bmon_histo.dat",False) return np.sum(p.make3d(),axis=2) / np.sum(mon.spec)
from reader import PelFile from optparse import OptionParser import numpy as np basedir = "C:/Documents and Settings/sesaadmin/My Documents/Neutron Data/" if __name__=='__main__': parser = OptionParser() (options,runs) = parser.parse_args() p = PelFile(basedir + "%04i/0001.pel"%int(runs[0])) x = p.data & 0x7FF y = p.data & 0x3FF800 >> 11 t = p.convertTime(p.data >> 32 & 0x7FFFFFFF) for i in range(len(x)): print "%i\t%i\t%f"%(x[i],y[i],t[i])
import __future__ from reader import PelFile import glob import numpy as np import sys files = glob.glob(sys.argv[1]) print(files) files = [x for x in files if x[-3:]=="pel"] for file in files: data = PelFile(file) hist = data.make3d() np.save(file+".npy",hist) print(file)
print(b) print("Orthonormed") return b def project(data,basis): co = [] #coefficients for x in basis: co.append(np.inner(data,x)) return co if __name__ == "__main__": dir = "C:/Documents and Settings/adlwashi/My Documents/Variable Gains" files = ["11122009n.pel","11122009r.pel","11122009t.pel","11122009u.pel", "11122009y.pel","11132009c.pel","11132009g.pel"] files = [dir+"/"+file for file in files] data = PelFile() ws = [data.getgains(data.peakheader(file)) for file in files] alphas = [] for file in files[:2]: data = PelFile() data.readfileimage(file) alphas.append(data.make2d(0,0x7FFFFFFF).reshape(256*256)) print(alphas) betas = orthonorm(alphas) perfect = np.ones(shape=(256*256),dtype=np.double) # perfect=perfect/np.linalg.norm(perfect) # print(perfect) co = project(perfect,betas) print(co) a = np.zeros(shape=(256*256),dtype=np.double)