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 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 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 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 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