예제 #1
0
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)
예제 #2
0
파일: pelvis.py 프로젝트: rprospero/PelVis
 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
예제 #3
0
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
예제 #4
0
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)
예제 #5
0
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])
예제 #6
0
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)
예제 #7
0
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)
예제 #8
0
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)
예제 #9
0
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
예제 #10
0
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)
예제 #11
0
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)    
예제 #12
0
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])
예제 #13
0
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)
예제 #14
0
    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)