예제 #1
0
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)
예제 #2
0
 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(
예제 #3
0
파일: rises.py 프로젝트: nbirge/ca_analysis
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))
    
예제 #4
0
    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)]
예제 #5
0
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')