beg= int(sys.argv[1]) if len(sys.argv[:])>2: end = int(sys.argv[2])+1 else: end = beg+1 runs = np.arange(beg,end,1)) lst = np.concatenate((np.linspace(10,100,10,dtype=int),np.linspace(200,1000,9,dtype=int))) for i in runs: path='./'+str(i)+'/' for rise in lst: for top in lst: pars=str(rise)+'-'+str(top) print('combining parts of run: '+str(i)+'-'+pars) run=str(i) name='Run_'+run x=[x for x in os.listdir(path) if x.startswith('Run_'+str(run)) and x.endswith(pars+'-comb.bin') and x!='Run_'+str(run)+'_0-'+pars+'-comb.bin'] x=sorted(x) print(x) header= np.zeros(1,dtype=[('theader','Q'),('formats','10i')]) data,header['theader'],header['formats'] = fr.gen_output(path+name+'_0-'+pars+'-comb.bin') for fyle in x: print(fyle) if os.stat(path+fyle).st_size>1000: data=np.concatenate((fr.gen_output(path+fyle)[0],data)) print(data) output=path+'Run_'+run+'-'+pars+'-all.dat' print('\n'+output) with open(path+'Run_'+run+'-'+pars+'-all.dat','wb') as f: header.tofile(f) data.tofile(f)
print('BOARD = ' + str(bd) + ' CHANNEL = ' + str(ch)) sigs = np.zeros((361, 8)) psigs = np.zeros((361, 8)) count = 0 lst = np.concatenate( (np.linspace(10, 100, 10, dtype=int), np.linspace(200, 1000, 9, dtype=int))) path = './run48/' for i in lst: for j in lst: if i > 00 or j > 00: pars = [0, 0, 0] sigs[count, 0:2] = i, j name = str(i) + '-' + str(j) + '-all.dat' fname = 'Run_48-' data = fr.gen_output(path + fname + name)[0] #data=pd.precuts(data) #uncomment this line for nonpulser data hist, bins = np.histogram(pd.pixcut(data, 'energy', bd, ch), ebins, erange) bins = pd.cbins(bins) start = len(bins) - np.sum(bins > 1000) amax = np.argmax(hist[start:]) window = 12 beg, end = bins[start + amax] - window * 5 * 0.5, bins[ start + amax] + window * 5 * 0.5 fitbins = bins[pd.land(bins > beg, bins < end)] fithist = hist[pd.land(bins > beg, bins < end)] weights = np.sqrt(fithist) weights[weights == 0] = 1 pars = [hist[start + amax], bins[start + amax], 30, 1, 1] pars = curve_fit(
import matplotlib.pyplot as plt import numpy as np import fileread as fr import predefined as pd bd,ch=4,3 ebins,erange=1000,[0,5000] rbins,rrange=100,[0,100] x=fr.gen_output('./testing/Run_131-200-70-all.dat')[0] x=pd.precuts(x) x=pd.single_pixel(x,board=bd,channel=ch) fsize=25 plt.figure(figsize=(20,20)) for i in np.linspace(0,2000,5,dtype=int): beg,end=i+0.,i+500. hist,bins=np.histogram(x['risetime'][pd.land(x['energy']>beg,x['energy']<end)],rbins,rrange) bins=pd.cbins(bins) plt.plot(bins,hist,ls='steps',label='%0.0d < E (ADC) < %0.0d' %(beg,end) ) plt.legend(fontsize=fsize) plt.title(pd.pixel(bd,ch),fontsize=fsize) plt.tick_params(labelsize=fsize) plt.xlabel('Risetime (4ns timebins)',fontsize=fsize) plt.xlim((0,100)) plt.yscale('log') plt.savefig('./testing/rises'+pd.pixel(bd,ch))
return (energy_type-b)*m def sim_calibrate(energy_type,p1=0,p2=0): return energy_type/6.25 if run==0: vec_calibrate=np.vectorize(sim_calibrate) else: vec_calibrate=np.vectorize(calibrate) path='/home/noah/Desktop/large_analysis/ca_analysis/cur_data/' data=fr.gen_output(path+'Run_'+str(run)+'-all.dat')[0] data=data[pd.good_timestamps(data)] data.sort(order='timestamp') beg=time.time() energy_type='energy' multi=data.copy() if run == 0: trutharray=np.load(path+'run_{:d}-DAQ_mask.npy'.format(runMask)) multi=multi[trutharray] multi[energy_type]=vec_calibrate(multi[energy_type],multi['board'],multi['channel']) multi=multi[multi[energy_type]>threshold] multi=multi[multi['t0']>600] multi.sort(order='timestamp') multi=multi[pd.lor(multi['pilediff']<twindow,multi['pileup']<2)] if rmDoubles: multi=multi[pd.doubles(multi,energy_type)]
import sys sys.path.insert(0, '/home/noah/Desktop/large_analysis/ca_analysis/') from matplotlib.pyplot import * import fileread as fr import predefined as pd dataloc = '/home/noah/Desktop/large_analysis/ca_analysis/cur_data/' runs = [120] for run in runs: data = fr.gen_output(dataloc + 'Run_' + str(run) + '-all.dat')