script for convert .t3pa files to .t3pa_cls
.t3pa file example:
Index $\quad$ Matrix $\quad$ Index $\quad$ ToA $\quad$ ToT $\quad$ FToA $\quad$ Overflow
0 $\quad$ 4574 $\quad$ 832 $\quad$ 29 $\quad$ 6 $\quad$ 0
1 $\quad$ 4831 $\quad$ 832 $\quad$ 35 $\quad$ 7 $\quad$ 0
2 $\quad$ 4575 $\quad$ 832 $\quad$ 100 $\quad$ 8 $\quad$ 0
3 $\quad$ 31031 $\quad$ 1745 $\quad$ 22 $\quad$ 11 $\quad$ 0
.
.
.
.t3pa_cls file example:
% Index $\quad$ Matrix Index $\quad$ [ RowNo, ClmNo ] $\quad$ ToA $\quad$ FToA $\quad$ ( ToA_in_ns ) $\quad$ ToT ( ToT_in_keV ) $\quad$ Overflow
# 1, $\quad$ Nunmasked = 3, $\quad$ Nmasked = 0, $\quad$ Ntot = 3 # Tfirst = 2.0787500000000000e+04 ns, $\quad$ Tlast = 2.0790625000000000e+04 ns, $\quad$ dT = 3.125000 ns, $\quad$ Etot = 64.428148 keV
2 $\quad$ 4575 $\quad$ [ 17, 223 ] $\quad$ 832 $\quad$ 8 $\quad$ ( 2.0787500000000000e+04 ns ) $\quad$ 100 $\quad$ ( 37.867914 keV ) $\quad$ 0
1 $\quad$ 4831 $\quad$ [ 18, 223 ] $\quad$ 832 $\quad$ 7 $\quad$ ( 2.0789062500000000e+04 ns ) $\quad$ 35 $\quad$ ( 14.733453 keV ) $\quad$ 0
0 $\quad$ 4574 $\quad$ [ 17, 222 ] $\quad$ 832 $\quad$ 6 $\quad$ ( 2.0790625000000000e+04 ns ) $\quad$ 29 $\quad$ ( 11.826781 keV ) $\quad$ 0
# 2, $\quad$ Nunmasked = 3, $\quad$ Nmasked = 0, $\quad$ Ntot = 3 # Tfirst = 4.3601562500000000e+04 ns, $\quad$ Tlast = 4.3607812500000000e+04 ns, $\quad$ dT = 6.250000 ns, $\quad$ Etot = 63.577435 keV
5 $\quad$ 30775 $\quad$ [ 120, 55 ] $\quad$ 1745 $\quad$ 15 $\quad$ ( 4.3601562500000000e+04 ns ) $\quad$ 99 $\quad$ ( 37.617059 keV ) $\quad$ 0
4 $\quad$ 30776 $\quad$ [ 120, 56 ] $\quad$ 1745 $\quad$ 13 $\quad$ ( 4.3604687500000000e+04 ns ) $\quad$ 44 $\quad$ ( 14.715446 keV ) $\quad$ 0
3 $\quad$ 31031 $\quad$ [ 121, 55 ] $\quad$ 1745 $\quad$ 11 $\quad$ ( 4.3607812500000000e+04 ns ) $\quad$2 2 $\quad$ ( 11.244929 keV ) $\quad$ 0
.
.
.
import numpy as np
import math
#import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
#from matplotlib.mlab import griddata
from urllib.error import HTTPError # recognise the error stemming from missing data
#import urllib
import urllib.request
t3pa2cls_XII - upravena fce energy(a, b, c, t, ToT, pocet_udalosti, RowNo, ClmNo) - nyni je se pocita i s pripadem "nan" t3pa2cls_XV_pc - zkousim vyzobat vysoke energie (jednotlive interakce) - funkce single_interaction. Dale delam prumernou velikost stopy stopy interakce pro danou energii - funkce size_of_interactions_average. Dale delam spektra 2 casti vyboje podle zadaneho casu - primarne pro double breakdown, tj. funkce energy_spectra_doublebreakdown
#Define an exception which will be raised if the data is missing and stop the notebook execution
class StopExecution(Exception):
def _render_traceback_(self):
pass
#shot_no = 44395 #test discharge for which the notebook will definitely work
shot_no = 48474
shot = shot_no
identifier='H03-W0051_shot_'+str(shot)+'_450V'
detector = 'H03-W0051'
ds = np.DataSource('/tmp') # temporary storage for downloaded files
scalars_URL = 'http://golem.fjfi.cvut.cz/shots/{shot_no}/Diagnostics/PlasmaDetection/Results/{name}'
def get_scalar(shot_no, name):
return float(ds.open(scalars_URL.format(shot_no=shot_no, name=name)).read())
t_plasma_start = get_scalar(shot_no, 't_plasma_start')
t_plasma_end = get_scalar(shot_no, 't_plasma_end')
is_plasma = get_scalar(shot_no, 'b_plasma')
--------------------------------------------------------------------------- FileNotFoundError Traceback (most recent call last) <ipython-input-1-f0dc2bc9364b> in <module> 1 def get_scalar(shot_no, name): 2 return float(ds.open(scalars_URL.format(shot_no=shot_no, name=name)).read()) ----> 3 t_plasma_start = get_scalar(shot_no, 't_plasma_start') 4 t_plasma_end = get_scalar(shot_no, 't_plasma_end') 5 is_plasma = get_scalar(shot_no, 'b_plasma') <ipython-input-1-f0dc2bc9364b> in get_scalar(shot_no, name) 1 def get_scalar(shot_no, name): ----> 2 return float(ds.open(scalars_URL.format(shot_no=shot_no, name=name)).read()) 3 t_plasma_start = get_scalar(shot_no, 't_plasma_start') 4 t_plasma_end = get_scalar(shot_no, 't_plasma_end') 5 is_plasma = get_scalar(shot_no, 'b_plasma') /opt/anaconda3/lib/python3.8/site-packages/numpy/lib/_datasource.py in open(self, path, mode, encoding, newline) 531 encoding=encoding, newline=newline) 532 else: --> 533 raise FileNotFoundError(f"{path} not found.") 534 535 FileNotFoundError: http://golem.fjfi.cvut.cz/shots/48474/Diagnostics/PlasmaDetection/Results/t_plasma_start not found.
def get_file(shot, identifier):
#Pick the discharge to analyse
URL = 'http://golem.fjfi.cvut.cz/shots/{shot}/Diagnostics/TimepixDetector/H03/{identifier}.t3pa'
url = URL.format(shot=shot, identifier=identifier)
try:
file_name_t3pa=url
with urllib.request.urlopen(file_name_t3pa) as ft3pa:
line = ft3pa.readline()
line = line.decode('utf‐8')
ft3pa.close
except HTTPError:
print('File not found at %s. Aborting notebook execution.' % url)
raise StopExecution
return file_name_t3pa
def get_file_calib(name_calib):
#Pick the discharge to analyse
URL = 'http://golem.fjfi.cvut.cz/shots/{shot}/Diagnostics/TimepixDetector/calib_matrix_H03/{name_calib}.txt'
url = URL.format(shot=shot, name_calib=name_calib)
#print(url)
try:
file_calib=url
with urllib.request.urlopen(file_calib) as calib:
line = calib.readline()
line = line.decode('utf‐8')
calib.close
except HTTPError:
print('File not found at %s. Aborting notebook execution.' % url)
raise StopExecution
return file_calib
def load_calib(file_calib):
with urllib.request.urlopen(file_calib) as fc:
calib=[] #vytvoreni 1D pole
for i in range(0,256): #tj. rozsah 0-255
temp = [] # docasne pole
for j in range(0,256):
temp.append(0) #naplneni docasneho pole 0
calib.append(temp) #naplneni pole a[] docasnym polem temp
for i in range(0,256): #nacteni calib matice do pole calib
line = fc.readline()
line = line.decode('utf‐8')
word=line.strip().split(' ')
for j in range(0,256):
#calib[i][j]=float(word[j]) #i = radek, j = sloupec0
calib[j][i]=float(word[j]) #j = radek, i = sloupec0 - pouze pro stavajici kalibraci - verze XV
fc.close
return calib
def load_t3pa_file(file_t3pa):
index=[]
matrix_index=[]
ToA=[]
ToT=[]
FToA=[]
overflow=[]
pocet_udalosti = 0
with urllib.request.urlopen(file_t3pa) as ft3pa:
line = ft3pa.readline()
line = line.decode('utf‐8')
while True:
line = ft3pa.readline()
line = line.decode('utf‐8')
word=line.strip().split('\t') #v t3pa souboru je oddelovac \t
if line == '':
break
index.append(word[0])
matrix_index.append(word[1])
ToA.append(float(word[2]))
ToT.append(float(word[3]))
FToA.append(float(word[4]))
overflow.append(float(word[5]))
pocet_udalosti = pocet_udalosti + 1
ft3pa.close
return index, matrix_index, ToA, ToT, FToA, overflow, pocet_udalosti
def noise(index, matrix_index, ToA, ToT, FToA, overflow, pocet_udalosti): #tuto fci nemus9m explicitn2 volat - volam ji v fci load_t3pa
pocet=int(0) #pocet sumicich pixelu
konst=int(len(index)/1000)+1
noise_matrix_index=[]
for i in range(0,konst):
pom = [] # pomocne pole
k=0 #pomocna promenna - udava, kolik je v czklu ve skutecnosti udalosti - aby nebyla chyba 'list index out of range'
for j in range(0,1001):
if i*1000+j>=len(index):
break
pom.append(matrix_index[i*1000+j])
k=k+1
for m in range(0,k):
count=int(0) #pocet vvyskytu stejneho matrix index behem 1000 udalosti
index_=int(-1) #budu testovat, jestli pixel na ktery koukam je sumici (abych ho nezapocital 2x)
for p in range(0,pocet):
#index=int(p)
if pom[m]==noise_matrix_index[p]:
index_=p #pixel na ktery jsem uz koukal a byl sumici
break
if index_ >=0 and pom[m]==noise_matrix_index[index_]:
continue
for l in range(0,k):
if pom[m]==pom[l]:
count=count+1
####podminka na sumici pixely
if count>=50: #kdyz se pixel vyskytne behem tisice udalosti vicekrat nez toto cislo, je sumici
noise_matrix_index.append(pom[m])
#noise_matrix_index[pocet]=pom[i]
pocet=pocet+1
pom.clear()
pocet_udalosti=len(index)
for n in range (0,pocet_udalosti):
for o in range(0,len(noise_matrix_index)):
if n >=pocet_udalosti:
break
if(matrix_index[n]==noise_matrix_index[o]):
del matrix_index[n]
del index[n]
del ToA[n]
del ToT[n]
del FToA[n]
del overflow[n]
pocet_udalosti=pocet_udalosti-1
continue
return pocet_udalosti,index, matrix_index, ToA, ToT, FToA, overflow
def t3pa_data(pocet_udalosti,index, matrix_index, ToA, ToT, FToA, overflow):
#rovnou vyhodim sumici pixely
pocet_udalosti,index, matrix_index, ToA, ToT, FToA, overflow=noise(index, matrix_index, ToA, ToT, FToA, overflow, pocet_udalosti)
RowNo=[]
ClmNo=[]
for i in range(0,len(matrix_index)):
#RowNo.append(int(int(matrix_index[i]))//int(256))
#ClmNo.append(int(int(matrix_index[i]))%int(256))
ClmNo.append(int(int(matrix_index[i]))//int(256)) #ver XV - bude pro novou kalibraci - nyn9 to bere 3patnou kalibraci jednotlivych pixelu (cislovani radku a sloupcu stejne jako v pixetu)
RowNo.append(int(int(matrix_index[i]))%int(256)) ##ver XV - bude super pro novou kalibraci - odpovida radkum a sloupcum v pixetu. Nyni bere spatne kalibrace pixelu (viz fce load_calib)
return index, matrix_index, ToA, ToT, FToA, overflow, pocet_udalosti, RowNo, ClmNo
def hit_map(detector,hit_map_fig,RowNo,ClmNo):
plt.hist2d(RowNo,ClmNo,bins=(256,256),cmap='Blues')
cb=plt.colorbar()
cb.set_label('Counts in pixel')
plt.xlabel('x [pixel]')
plt.ylabel('y [pixel]')
plt.title(detector)
plt.savefig(hit_map_fig, dpi = 1000)
return
def energy(a, b, c, t, ToT, pocet_udalosti, RowNo, ClmNo):
E=[] #energy in keV
#for i in range (0,pocet_udalosti):
pom=0
for i in range (0,len(ToT)):
Sqrt=float(0.0)
e1=float(0.0)
e2=float(0.0)
# promenna sqrt je vnitrek odmocniny
Sqrt = (((float(b[RowNo[i]][ClmNo[i]])+float(a[RowNo[i]][ClmNo[i]])*float(t[RowNo[i]][ClmNo[i]])-float(ToT[i])))*(((float(b[RowNo[i]][ClmNo[i]])+float(a[RowNo[i]][ClmNo[i]])*float(t[RowNo[i]][ClmNo[i]])-float(ToT[i])))) + (float(4)*float(a[RowNo[i]][ClmNo[i]])*float(c[RowNo[i]][ClmNo[i]]))) #zmena oproti verzi VI
if float(Sqrt)<float(0):
E.append(float(0))
else:
'''
V kalibracni matici a se obcas vyskytne 0 -> ve vypoctu energie
je tim padem deleni nulou -> energie diverguje. Jak to vyresit?
zatim polozim energii = 0 (kdyz a=0), pak se uvidi
nakonec udelam limitu vyrazu energie pro a->0 (L'hopital)
'''
if a[RowNo[i]][ClmNo[i]]==0:
e1=((float(t[RowNo[i]][ClmNo[i]]))/float(2)) + ((((float(b[RowNo[i]][ClmNo[i]])+float(a[RowNo[i]][ClmNo[i]])*float(t[RowNo[i]][ClmNo[i]])-float(ToT[i]))*(float(t[RowNo[i]][ClmNo[i]]))) - 2*(float(c[RowNo[i]][ClmNo[i]])))/(float(2)*np.sqrt(float(Sqrt))))
e2=((float(t[RowNo[i]][ClmNo[i]]))/float(2)) - ((((float(b[RowNo[i]][ClmNo[i]])+float(a[RowNo[i]][ClmNo[i]])*float(t[RowNo[i]][ClmNo[i]])-float(ToT[i]))*(float(t[RowNo[i]][ClmNo[i]]))) - 2*(float(c[RowNo[i]][ClmNo[i]])))/(float(2)*np.sqrt(float(Sqrt))))
else:
e1=((-(float(b[RowNo[i]][ClmNo[i]]) - (float(a[RowNo[i]][ClmNo[i]])*float(t[RowNo[i]][ClmNo[i]]))-float(ToT[i])))+np.sqrt(float(Sqrt)))/(float(2)*float(a[RowNo[i]][ClmNo[i]]))
e2=((-(float(b[RowNo[i]][ClmNo[i]]) - (float(a[RowNo[i]][ClmNo[i]])*float(t[RowNo[i]][ClmNo[i]]))-float(ToT[i])))-np.sqrt(float(Sqrt)))/(float(2)*float(a[RowNo[i]][ClmNo[i]]))
if a[RowNo[i]][ClmNo[i]]<0:
e1=-1
e2=-1
if math.isnan(e1):
e1=-1
if math.isnan(e2):
e2=-1
if e1<0 and e2<0:
E.append(float(0))
if e1>=0 and e1>e2:
E.append(float(e1))
if e2>=0 and e2>e1:
E.append(float(e2))
if e1>=0 and e2==e1:
E.append(float(e1))
return E
def Time(ToA, FToA, pocet_udalosti, RowNo, ClmNo):
T=[] #time in ns
for i in range (0,pocet_udalosti):
Time=float(0.0)
Time=(float(ToA[i])-((float(FToA[i])/float(16))))*float(25)
T.append(float(Time))
return T
def Timewalk_parameters_Si():
#SI - korekce na TimeWalk - parametry
A = -1.21988
B = 4.33638
C = 29.5075
D = 1
sigma_A=0.7013
sigma_B=0.1366
sigma_C=4.753
sigma_D=0
return A, B, C, D, sigma_A, sigma_B, sigma_C, sigma_D
def Timewalk(E,T):
i=0
A, B, C, D, sigma_A, sigma_B, sigma_C, sigma_D = Timewalk_parameters_Si()
while i < len(T):
timewalk=float(0)
timewalk = (C / (E[i] - B)) + A
if(timewalk<0):
timewalk=0
T[i]=T[i]-timewalk
i=i+1
return E,T
def remove_interactions_with_zero_energy(index, matrix_index, ToA, ToT, FToA, overflow, RowNo, ClmNo, E, T):
i=0
treshold=5.015347
while i < len(T):
if E[i]<treshold: #E[i] < energy treshold
index.pop(i)
matrix_index.pop(i)
ToA.pop(i)
ToT.pop(i)
FToA.pop(i)
overflow.pop(i)
RowNo.pop(i)
ClmNo.pop(i)
E.pop(i)
T.pop(i)
continue
i=i+1
return index, matrix_index, ToA, ToT, FToA, overflow, RowNo, ClmNo, E, T
def clustering_new(index, matrix_index, ToA, ToT, FToA, overflow, RowNo, ClmNo, E, T):
dT=float(50)
indexCl, TCl,ECl, matrix_indexCl, ToACl,ToTCl,FToACl,RowNoCl,ClmNoCl,overflowCl=[],[],[],[],[],[],[],[],[],[]
StartLastElem=len(T)-1
indexCl.append(int(index[StartLastElem]))
TCl.append(float(T[StartLastElem]))
ECl.append(float(E[StartLastElem]))
matrix_indexCl.append(int(matrix_index[StartLastElem]))
RowNoCl.append(int(RowNo[StartLastElem]))
ClmNoCl.append(int(ClmNo[StartLastElem]))
ToACl.append(float(ToA[StartLastElem]))
ToTCl.append(float(ToT[StartLastElem]))
FToACl.append(float(FToA[StartLastElem]))
overflowCl.append(float(overflow[StartLastElem]))
del index[StartLastElem]
del T[StartLastElem]
del E[StartLastElem]
del matrix_index[StartLastElem]
del RowNo[StartLastElem]
del ClmNo[StartLastElem]
del ToA[StartLastElem]
del ToT[StartLastElem]
del FToA[StartLastElem]
del overflow[StartLastElem]
j=1
pom=float(TCl[0]+dT)
while(j >0):
if(len(T) == 0):
break
k=0
j=0
while (k<=(len(TCl)-1)):
i=len(T)-1
if(len(T) == 0):
break
pocet_sousedu=0 #pocet sousednich pixelu - mohou byt maximalne 4
delka=0
# verze X
count=0 #pomocna promanna, kterou urcuji, ze se ma nasledujici cyklus while projit jeste jednou, pokud je i = -1
while(float(T[i])<=(pom)):
delka=delka+1
if(((((int(RowNoCl[k]))==(int(RowNo[i])+1))or((int(RowNoCl[k]))==(int(RowNo[i])-1))) and ((int(ClmNoCl[k]))==(int(ClmNo[i])))) or (((int(RowNoCl[k]))==(int(RowNo[i]))) and (((int(ClmNoCl[k]))==(int(ClmNo[i])+1))or((int(ClmNoCl[k]))==(int(ClmNo[i])-1))))):
#beru jen pixely, které mají společnou jednu stranu.
#pixely, kter0 spolu sousedí přes roh neuvažuji
indexCl.append(int(index[i]))
TCl.append(float(T[i]))
ECl.append(float(E[i]))
matrix_indexCl.append(int(matrix_index[i]))
RowNoCl.append(int(RowNo[i]))
ClmNoCl.append(int(ClmNo[i]))
ToACl.append(float(ToA[i]))
ToTCl.append(float(ToT[i]))
FToACl.append(float(FToA[i]))
overflowCl.append(float(overflow[i]))
# Removes i-th Row
del index[i]
del T[i]
del E[i]
del matrix_index[i]
del RowNo[i]
del ClmNo[i]
del ToA[i]
del ToT[i]
del FToA[i]
del overflow[i]
j=j+1
i=len(T)-1
pocet_sousedu=pocet_sousedu+1
if(len(T) == 0):
break
if(pocet_sousedu==4):
break
continue
i=i-1
if(i==-1): # verze X
count=count+1
if(i<0 and len(T)>0): # verze X
i=0
if(count>1):
break
if(i>=len(T)):
break
k=k+1
if(len(TCl)>2):
indexCl, TCl, ECl, matrix_indexCl, RowNoCl, ClmNoCl, ToACl, ToTCl, FToACl, overflowCl = insertionSort(indexCl, TCl, ECl, matrix_indexCl, RowNoCl, ClmNoCl, ToACl, ToTCl, FToACl, overflowCl)
return T, indexCl,TCl, ECl, matrix_indexCl, RowNoCl, ClmNoCl, ToACl, ToTCl, FToACl, overflowCl
def insertionSort(indexCl, TCl, ECl, matrix_indexCl, RowNoCl, ClmNoCl, ToACl, ToTCl, FToACl, overflowCl):
# Function to do insertion sort
# Traverse through 1 to len(arr)
for i in range(1, len(TCl)):
key = TCl[i]
# Move elements of arr[0..i-1], that are
# greater than key, to one position ahead
# of their current position
#ostatni
key1 = indexCl[i]
key2 = ECl[i]
key3 = matrix_indexCl[i]
key4 = RowNoCl[i]
key5 = ClmNoCl[i]
key6 = ToACl[i]
key7 = ToTCl[i]
key8 = FToACl[i]
key9 = overflowCl[i]
j = i-1
while j >= 0 and key < TCl[j] :
TCl[j + 1] = TCl[j]
#ostatni
indexCl[j + 1] = indexCl[j]
ECl[j + 1] = ECl[j]
matrix_indexCl[j + 1] = matrix_indexCl[j]
RowNoCl[j + 1] = RowNoCl[j]
ClmNoCl[j + 1] = ClmNoCl[j]
ToACl[j + 1] = ToACl[j]
ToTCl[j + 1] = ToTCl[j]
FToACl[j + 1] = FToACl[j]
overflowCl[j + 1] = overflowCl[j]
j -= 1
TCl[j + 1] = key
#ostatni
indexCl[j + 1] = key1
ECl[j + 1] = key2
matrix_indexCl[j + 1] = key3
RowNoCl[j + 1] =key4
ClmNoCl[j + 1] = key5
ToACl[j + 1] = key6
ToTCl[j + 1] = key7
FToACl[j + 1] = key8
overflowCl [j + 1] = key9
return indexCl, TCl, ECl, matrix_indexCl, RowNoCl, ClmNoCl, ToACl, ToTCl, FToACl, overflowCl
def file_t3pa_cls_new(file_t3pa_cls,T):
with open(file_t3pa_cls, "w", encoding="utf-8") as t3pa_cls:
t3pa_cls.write('%\n')
t3pa_cls.write('% Index Matrix Index [ RowNo, ClmNo ] ToA FToA ( ToA_in_ns ) ToT ( ToT_in_keV ) Overflow\n')
t3pa_cls.write('\n')
i=1
T_first=[]
E_tot=[]
N_tot=[]
eventNo=0 #for high_energy_event function
while(len(T) > 0):
T, indexCl,TCl, ECl, matrix_indexCl, RowNoCl, ClmNoCl, ToACl, ToTCl, FToACl, overflowCl = clustering_new(index, matrix_index, ToA, ToT, FToA, overflow, RowNo, ClmNo, E, T)
Tfirst=float(TCl[0])
Tlast=float(TCl[len(TCl)-1])
dT=Tlast-Tfirst
Etot=float(0)
for k in range(0,len(TCl)):
Etot=Etot+float(ECl[k])
T_first.append(float(Tfirst))
dT=Tlast-Tfirst
E_tot.append(float(Etot))
N_tot.append(len(TCl)) #new in ver. XV
t3pa_cls.write('# '+str(i)+', Nunmasked = '+str(len(TCl))+', Nmasked = 0, Ntot = '+str(len(TCl))+'\n')
t3pa_cls.write('# Tfirst = '+str(Tfirst)+' ns, Tlast = '+str(Tlast)+' ns, dT = '+str(dT)+' ns, Etot = '+str(Etot)+' keV\n')
for j in range(0,len(TCl)):
t3pa_cls.write(str(indexCl[j])+' '+str(matrix_indexCl[j])+' [ '+str(RowNoCl[j])+', '+str(ClmNoCl[j])+' ] '+str(ToACl[j])+' '+str(FToACl[j])+' ( '+str(TCl[j])+' ns ) '+str(ToTCl[j])+' ( '+str(ECl[j])+' keV ) '+str(overflowCl[j])+'\n')
t3pa_cls.write('\n')
#eventNo=single_interaction(eventNo,Etot, Tfirst, ECl, TCl, RowNoCl, ClmNoCl,path)
i=i+1
t3pa_cls.close
return T_first, E_tot, N_tot
def energy_spectrum_in_time(Tfirst, Etot): #dela histogram - energie zaznamenana v case
pom = 0
dt=100 #(ns) time width of 1 bin
T_first=0 #cas, kdy prisel trigger a yacalo mereni
T_last=(max(Tfirst)) #posledni z Tfirst
Delta_T = T_last - T_first
poc = int(int(Delta_T) / float(dt)) + 1 #pocet casovych oken
T_int_first=[] #cas
E=[] #energie
for i in range(0,poc):
T_int_first.append((i*dt) + dt/2)
E.append(0)
#XII
for j in range(0,len(Tfirst)):
time_index=0
time_index=int(((Tfirst[j]-T_first)/dt))
if float(Tfirst[j]-T_first) >= (T_int_first[time_index] - dt / 2) and float(Tfirst[j]-T_first) < (T_int_first[time_index] + dt / 2):
E[time_index]=float(E[time_index])+float(Etot[j])
pom=pom+1
for l in range(0,len(T_int_first)):
T_int_first[l]=T_int_first[l]+T_first
caption, T_int_first = energy_in_time_hist(T_int_first, E, figure_E_in_time_hist, t_plasma_start, t_plasma_end, is_plasma, dt)
return dt, caption, T_int_first, E
def energy_in_time_hist(T_int_first, E,figure_E_in_time_hist, t_plasma_start, t_plasma_end, is_plasma, dt):
plt.rcParams.update({'font.size': 20})
fig, ax = plt.subplots(figsize =(10, 7))
for k in range(0,len(T_int_first)):
T_int_first[k] = T_int_first[k] / 1000000
plt.plot(T_int_first, E, drawstyle='steps-mid')
plt.title(detector+', #'+str(shot_no))
plt.xlabel('Time [ms]')
plt.ylabel('Energy [keV]')
if is_plasma == 1:
for t in (t_plasma_start, t_plasma_end):
plt.axvline(t, color='k', linestyle='--')
plt.xlim([0, (t_plasma_start + t_plasma_end)])
else:
plt.xlim(0,)
plt.ylim(0,) #10 000 keV
plt.savefig(figure_E_in_time_hist, dpi = 1000)
caption = '# x = time in ms, count = energy in keV, dT= '+str(dt)+' ns'
return caption, T_int_first
def hits_in_time_hist_new(T, dt, t_plasma_start, t_plasma_end, is_plasma,figure_count_in_time_hist):
pom = 0
T_first=0 #cas, kdy prisel trigger a yacalo mereni
T_last=(max(T)) #posledni z Tfirst
Delta_T = T_last - T_first
poc = int(int(Delta_T) / float(dt)) + 1 #pocet casovych oken
T_hit=[] #cas
count=[] #energie
for i in range(0,poc):
T_hit.append((i*dt) + dt/2)
count.append(0)
for j in range(0,len(T)):
time_index=0
time_index=int(((T[j]-T_first)/dt))
k=time_index
for j in range(0,len(T)):
time_index=0
time_index=int(((T[j]-T_first)/dt))
if float(T[j]-T_first) >= (T_hit[time_index] - dt / 2) and float(T[j]-T_first) < (T_hit[time_index] + dt / 2):
count[time_index] = count[time_index] + 1
pom=pom+1
for l in range(0,len(T_hit)):
T_hit[l]=T_hit[l]+T_first
plt.rcParams.update({'font.size': 20})
fig, ax = plt.subplots(figsize =(10, 7))
for k in range(0,len(T_hit)):
T_hit[k] = T_hit[k] / 1000000
#plt.plot(T_hit, count)
plt.plot(T_hit, count, drawstyle='steps-mid')
plt.title(detector+', #'+str(shot_no))
plt.xlabel('Time [ms]')
plt.ylabel('Count')
if is_plasma == 1:
for t in (t_plasma_start, t_plasma_end):
plt.axvline(t, color='k', linestyle='--')
plt.xlim([0, (t_plasma_start + t_plasma_end)])
else:
plt.xlim(0,)
plt.ylim(0,) #10 000 keV
plt.savefig(figure_count_in_time_hist, dpi = 1000)
caption = '# x = time in ms, dT= '+str(dt)+' ns'
return caption, T_hit,count
def energy_spectrum(Etot):
E_min=0
dE=5 #keV
E_max=max(Etot)
pocet=(E_max//dE) + 3
pocet=int(pocet)
E_max=float(dE*pocet)
xle=[]
xre=[]
xmean=[]
for p in range (0,pocet):
xle.append(E_min + (p * (E_max - E_min)) / pocet)
xre.append(xle[p]+dE)
xmean.append((xle[p] + xre[p]) / 2)
count=[]
for l in range(0,pocet):
count.append(0)
#XII
for i in range(0,len(Etot)):
E_index=int(((Etot[i]-E_min)/dE))
if ((xle[E_index] <= Etot[i]) and (Etot[i] < xre[E_index])):
count[E_index]=count[E_index]+1
plt.rcParams.update({'font.size': 20})
fig, ax = plt.subplots(figsize =(10, 7))
#ax.hist(Etot, bins = xle)
plt.fill_between(xmean, count,step='mid') #pre mid post
plt.plot(xmean, count, drawstyle='steps-mid')
plt.title(detector+', #'+str(shot_no))
plt.xlabel('Energy [keV]')
plt.ylabel('Count')
plt.xlim(0,)
ax.set_yscale('log') #log scale y
caption = '# x = energy in keV, dE= '+str(dE)+' keV'
plt.savefig(figure_E_hist, dpi = 1000)
return caption, xmean,count, xle, Etot
def hist_file(file_hist, xmean, count, caption ):
with open(file_hist, "w", encoding="utf-8") as hist:
hist.write('#\n')
hist.write('#'+str(caption)+'\n')
hist.write('# x_mean count\n')
hist.write('\n')
for m in range(0,len(xmean)):
hist.write(str(xmean[m])+' '+str(count[m])+'\n')
hist.close
return T_first, E_tot
def multiplot(icon_fig, x1,y1,x2,y2):
plt.rcParams.update({'font.size': 20})
fig, ax = plt.subplots(nrows=2,figsize =(10, 7))
ax[0].plot(x1, y1, drawstyle='steps-mid')
ax[0].set_xlabel('Time [ms]')
ax[0].set_ylabel('Energy [keV]')
if is_plasma == 1:
for t in (t_plasma_start, t_plasma_end):
ax[0].axvline(t, color='k', linestyle='--')
ax[0].set_xlim([0, (t_plasma_start + t_plasma_end)])
else:
ax[0].set_xlim(0,)
ax[0].set_ylim(0,) #keV
#ax[1].hist(y2, bins = x2)
ax[1].fill_between(x2, y2,step='mid') #pre mid post
ax[1].plot(x2, y2, drawstyle='steps-mid')
ax[1].set_xlabel('Energy [keV]')
ax[1].set_ylabel('Count')
ax[1].set_xlim(0,)
#ax[1].set_ylim(0,)
ax[1].set_yscale('log') #log scale y
fig.subplots_adjust(hspace=0.3)
plt.savefig(icon_fig, dpi = 1000)
return
def single_interaction(eventNo,Etot, Tfirst, ECl, TCl, RowNoCl, ClmNoCl,path): # ver XV
#tuto funkci volam ve funkci file_t3pa_cls_new(file_t3pa_cls,T):
#This function is calling in function file_t3pa_cls_new(file_t3pa_cls,T)
high_E = 1500 #[keV] - zadani, jaka energie je pro me vysoka
if(Etot>=high_E or len(ECl)>15):
#if (len(ECl)>15): #len(ECl) = pocet pixelu dane interakce
print("Total energy of track: "+str(Etot)+" keV\n")
A, B, C, D, sigma_A, sigma_B, sigma_C, sigma_D = Timewalk_parameters_Si()
######################
#SI - rekonstrukce z(t) - parametry
a=0.0193947
b=-0.0273934
sigma_a=0.0004163
sigma_b=0.009832
#######################
time=[]
sigma_time=[]
time_min = []
time_max=[]
z_rec=[]
z_rec_min=[]
z_rec_max=[]
sigma_z_rec=[]
for i in range(0, len(TCl)):
time.append(TCl[i] - Tfirst)
#chyba urceni casu = chyba timewalk ->
sigma_time.append(np.sqrt(((sigma_C / (pow((ECl[i] - B), D)))*(sigma_C / (pow((ECl[i] - B), D)))) + (((sigma_B*C*D) / (pow((ECl[i] - B), (D + 1))))*((sigma_B*C*D) / (pow((ECl[i] - B), (D + 1))))) + (((sigma_D*C*math.log(ECl[i] - B)) / (pow((ECl[i] - B), D)))* ((sigma_D*C*math.log(ECl[i] - B)) / (pow((ECl[i] - B), D)))) + (sigma_A*sigma_A)))
time_min.append(time[i] - sigma_time[i])
time_max.append(time[i] + sigma_time[i])
#//
#//rekonstrukce hloubky interakce
z_rec.append(a * time[i] + (b))
sigma_z_rec.append(np.sqrt(((time[i]*time[i])*(sigma_a*sigma_a)) + (sigma_b*sigma_b) + (a*a)*(sigma_time[i]*sigma_time[i])))
z_rec_min.append(z_rec[i] - sigma_z_rec[i])
z_rec_max.append(z_rec[i] + sigma_z_rec[i])
#//
single_interaction_file=str(path)+'event'+str(eventNo)+'.txt'
single_interaction_2D_fig=str(path)+'2D_event'+str(eventNo)+'.png'
single_interaction_3D_fig=str(path)+'3D_event'+str(eventNo)+'.png'
with open(single_interaction_file, "w", encoding="utf-8") as f:
f.write('#\n')
f.write('# x_mean y_mean z_rec z_rec_min z_rec_max sigma_z_rec\n')
f.write('#E_tot='+str(Etot)+'\n')
f.write('\n')
for m in range(0,len(TCl)):
#print(str(RowNoCl[m])+' '+str(ClmNoCl[m])+' '+str(z_rec[m])+' '+str(z_rec_min[m])+' '+str(z_rec_max[m])+' '+str(sigma_z_rec[m])+' '+str(ECl[m])+'\n')
f.write(str(RowNoCl[m])+' '+str(ClmNoCl[m])+' '+str(z_rec[m])+' '+str(z_rec_min[m])+' '+str(z_rec_max[m])+' '+str(sigma_z_rec[m])+' '+str(ECl[m])+'\n')
f.close
############################### plot
#binwidth=1
if ((max(RowNoCl)-min(RowNoCl))>=(max(ClmNoCl)-min(ClmNoCl))):
rang=max(RowNoCl)-min(RowNoCl)
#bins=(range((min(RowNoCl)-1), (max(RowNoCl)+3), binwidth), range((min(ClmNoCl)-1), (min(ClmNoCl)+rang+3), binwidth))
x_min=min(RowNoCl)-1
x_max=max(RowNoCl)+2
y_min=min(ClmNoCl)-1
y_max=min(ClmNoCl)+rang+2
else:
rang = max(ClmNoCl)-min(ClmNoCl)
#bins=(range((min(RowNoCl)-1), (min(RowNoCl)+rang+3), binwidth), range((min(ClmNoCl)-1), (max(ClmNoCl)+3), binwidth))
x_min=min(RowNoCl)-1
x_max=min(RowNoCl)+rang+2
y_min=min(ClmNoCl)-1
y_max=max(ClmNoCl)+2
###############$$$$$$$$$$$$$$$$$$$$
rows, cols = (x_max-x_min, x_max-x_min)
#arrECl = [[0]*cols]*rows
arrECl= [[0] * cols for _ in range(rows)]
for i in range (x_min,x_max):
for j in range (y_min,y_max):
for k in range(0,len(RowNoCl)):
if ((i==RowNoCl[k]) and (j==ClmNoCl[k])):
#print(str(i)+" "+str(j)+" "+str(RowNoCl[k])+" "+str(ClmNoCl[k])+"\n")
arrECl[i-x_min][j-y_min]=ECl[k]
arrECl=np.transpose(arrECl)
arrECl[arrECl == 0] = np.nan
#2D plot
plt.imshow(arrECl,cmap='jet', interpolation='none', origin=[(x_min-0.2),(y_min-0.2)], aspect='equal', extent=[x_min-0.2,x_max,y_min-0.2,y_max])
###############$$$$$$$$$$$$$$$$$$$$
cb=plt.colorbar(pad=0.005)
plt.tick_params(axis="x",direction="in")
plt.tick_params(axis="y",direction="in")
cb.ax.tick_params(axis='y', direction='in')
cb.set_label('Energy in pixel [keV]')
plt.xlabel('x [pixel]')
plt.ylabel('y [pixel]')
plt.title('$E_{tot}$ = '+str(round(Etot, 2))+' keV, $N_{tot}$ = '+str(len(ECl)))
plt.savefig(single_interaction_2D_fig, dpi = 1000)
plt.show()
plt.close()
############################### plot
############## 3D plot
# Creating figure
fig = plt.figure(figsize = (16, 9))
ax = plt.axes(projection ="3d")
# Add x, y gridlines
ax.grid(b = True, color ='grey', #
linestyle ='-.', linewidth = 0.3,
alpha = 0.2)
# Creating plot
sctt = ax.scatter3D(RowNoCl, ClmNoCl, z_rec,
alpha = 0.8,
c = ECl,
cmap = 'jet',
s = 4000, #size of bubbles in plot
marker ='o')
plt.title('$E_{tot}$ = '+str(round(Etot, 2))+' keV, $N_{tot}$ = '+str(len(ECl)))
ax.set_xlabel('x [pixel]', fontweight ='bold')
ax.set_ylabel('y [pixel]', fontweight ='bold')
ax.set_zlabel('z [mm]', fontweight ='bold')
cb=fig.colorbar(sctt, ax = ax, shrink = 0.5,aspect = 10,pad=0.00005) #
cb.ax.tick_params(axis='y', direction='in')
cb.set_label('Energy in pixel [keV]', fontweight ='bold')
plt.savefig(single_interaction_3D_fig, dpi = 1000)
# show plot
plt.show()
plt.close()
############## 3D plot
eventNo=eventNo+1
return eventNo
def size_of_interactions_average(Etot, Ntot,file_hist): #ver XV
E_min=0
dE=5 #keV
E_max=max(Etot)
pocet=(E_max//dE) + 3
pocet=int(pocet)
E_max=float(dE*pocet)
xle=[]
xre=[]
xmean=[]
count=[]
nop=[] #number of pixels
nop_mean=[] #mean number of pixels in dE
sigma=[] #root mean square error of the mean - stredni kvadraticka chyba prumeru
for p in range (0,pocet):
xle.append(E_min + (p * (E_max - E_min)) / pocet)
xre.append(xle[p]+dE)
xmean.append((xle[p] + xre[p]) / 2)
count.append(0)
nop.append(0)
nop_mean.append(0)
sigma.append(0)
#XII
for i in range(0,len(Etot)):
E_index=int(((Etot[i]-E_min)/dE))
if ((xle[E_index] <= Etot[i]) and (Etot[i] < xre[E_index])):
count[E_index]=count[E_index]+1
nop[E_index]=nop[E_index]+Ntot[i] #ver XV
for l in range(0,pocet):
if nop[l]!=0:
nop_mean[l]=float(nop[l])/float(count[l])
#####Computing sigma
for i in range(0,len(Etot)):
E_index=int(((Etot[i]-E_min)/dE))
if ((xle[E_index] <= Etot[i]) and (Etot[i] < xre[E_index])):
if nop_mean[E_index]!=0:
sigma[E_index]=sigma[E_index]+((float(Ntot[i])-float(nop_mean[E_index]))*(float(Ntot[i])-float(nop_mean[E_index])))
for l in range(0,pocet):
if nop[l]!=0 and count[l]>1:
sigma[l]=np.sqrt(sigma[l]/(float(count[l])*(float(count[l])-1)))
if nop[l]!=0 and count[l]==1:
sigma[l]=10
#####Computing sigma
#####write to file
with open(file_hist, "w", encoding="utf-8") as hist:
hist.write('# x_mean [keV] mean_size_of_interaction [pixel] sigma_mean_size_of_interaction\n')
for m in range(0,len(xmean)):
hist.write(str(xmean[m])+' '+str(nop_mean[m])+' '+str(sigma[m])+'\n')
hist.close
#####write to file
plt.rcParams.update({'font.size': 20})
fig, ax = plt.subplots(figsize =(10, 7))
#plt.fill_between(xmean, nop,step='mid',color='blue', alpha=0.3) #pre mid post
#plt.fill_between(xmean, nop,step='mid') #pre mid post
plt.plot(xmean, nop_mean, drawstyle='steps-mid')
plt.errorbar(xmean, nop_mean, yerr = sigma,fmt ='.', linewidth=0.7)
plt.title(detector+', #'+str(shot_no))
plt.xlabel('Energy [keV]')
plt.ylabel('Average size of interaction [pixel]')
plt.xlim(0,500)
plt.ylim(0,17)
#ax.set_yscale('log') #log scale y
caption = '# x = energy in keV, dE= '+str(dE)+' keV'
plt.savefig(figure_size_interaction, dpi = 1000)
return
def energy_spectra_doublebreakdown(Etot, Tfirst, file_hist):
#this function separates discharge into two parts acording to time Tsep and creates energy spectrum for each part.
#This is for discharges with double brakdown
Tsep=14636000 # [ns]
E_min=0
dE=5 #keV
E_max=max(Etot)
pocet=(E_max//dE) + 3
pocet=int(pocet)
E_max=float(dE*pocet)
xle=[]
xre=[]
xmean=[]
for p in range (0,pocet):
xle.append(E_min + (p * (E_max - E_min)) / pocet)
xre.append(xle[p]+dE)
xmean.append((xle[p] + xre[p]) / 2)
count_first=[]
count_second=[]
for l in range(0,pocet):
count_first.append(0)
count_second.append(0)
#XII
for i in range(0,len(Etot)):
E_index=int(((Etot[i]-E_min)/dE))
if ((xle[E_index] <= Etot[i]) and (Etot[i] < xre[E_index])):
if(Tfirst[i]<Tsep):
count_first[E_index]=count_first[E_index]+1
else:
count_second[E_index]=count_second[E_index]+1
caption = '# x = energy in keV, dE= '+str(dE)+' keV'
with open(file_hist, "w", encoding="utf-8") as hist:
hist.write('#\n')
hist.write('#'+str(caption)+'\n')
hist.write('# x_mean count_before_2nd_breakdown count_2nd_breakdown\n')
hist.write('\n')
for m in range(0,len(xmean)):
hist.write(str(xmean[m])+' '+str(count_first[m])+' '+str(count_second[m])+'\n')
hist.close
plt.rcParams.update({'font.size': 20})
fig, ax = plt.subplots(figsize =(10, 7))
#plt.fill_between(xmean, count_first,step='mid') #pre mid post
plt.plot(xmean, count_first, label='Before 2nd breakdown', drawstyle='steps-mid')
plt.plot(xmean, count_second, label='2nd breakdown', drawstyle='steps-mid')
plt.legend(loc='best')
plt.title(detector+', #'+str(shot_no))
plt.xlabel('Energy [keV]')
plt.ylabel('Count')
plt.xlim(0,500)
ax.set_yscale('log') #log scale y
plt.savefig(figure_energy_spectra_doublebreakdown, dpi = 1000)
return
#soubory, ktere ctu
#read files
t3pa=get_file(shot, identifier)
name_calib='caliba'
caliba=get_file_calib(name_calib)
name_calib='calibb'
calibb=get_file_calib(name_calib)
name_calib='calibc'
calibc=get_file_calib(name_calib)
name_calib='calibt'
calibt=get_file_calib(name_calib)
#vytvorene soubory:
#created files
t3pa_cls= 'H03-W0051_shot_'+str(shot)+'_450V.t3pa_cls'
E_hist= 'H03-W0051_shot_'+str(shot)+'_450V_E_hist.txt'
E_in_time_hist= 'H03-W0051_shot_'+str(shot)+'_450V_discharge_energy.txt'
count_in_time_hist= 'H03-W0051_shot_'+str(shot)+'_450V_discharge_hits.txt'
size_interaction= 'H03-W0051_shot_'+str(shot)+'size_interaction.txt'
file_energy_spectra_doublebreakdown= 'H03-W0051_shot_'+str(shot)+'energy_spectra_doublebreakdown.txt'
#created figures
icon_fig='icon-fig'
figure_E_in_time_hist='discharge_energy'
figure_count_in_time_hist='discharge_hits'
figure_E_hist='Energy_spectrum'
hit_map_fig='hit-map'
figure_size_interaction= 'H03-W0051_shot_'+str(shot)+'size_interaction'
figure_energy_spectra_doublebreakdown= 'H03-W0051_shot_'+str(shot)+'energy_spectra_doublebreakdown'
#nactu jednotlive kalibracni matice - abych to nemusel delat v kazde funkci
a=load_calib(caliba)
b=load_calib(calibb)
c=load_calib(calibc)
t=load_calib(calibt)
#nactu a urcim jednotlive hodnoty - abych to nemusel delat v kazde funkci
index, matrix_index, ToA, ToT, FToA, overflow, pocet_udalosti = load_t3pa_file(t3pa)
index, matrix_index, ToA, ToT, FToA, overflow, pocet_udalosti, RowNo, ClmNo = t3pa_data(pocet_udalosti,index, matrix_index, ToA, ToT, FToA, overflow)
raw data
#hit map
hit_map(detector,hit_map_fig,RowNo,ClmNo)
Energy and time calculation from raw data.
E=energy(a, b, c, t, ToT, pocet_udalosti, RowNo, ClmNo)
T=Time(ToA, FToA, pocet_udalosti, RowNo, ClmNo)
index, matrix_index, ToA, ToT, FToA, overflow, RowNo, ClmNo, E, T = remove_interactions_with_zero_energy(index, matrix_index, ToA, ToT, FToA, overflow, RowNo, ClmNo, E, T)
E,T=Timewalk(E,T)
#sort by time
T, index, matrix_index, ToA, ToT, FToA, overflow, RowNo, ClmNo, E = (list(t) for t in zip(*sorted(zip(T, index, matrix_index, ToA, ToT, FToA, overflow, RowNo, ClmNo, E), reverse=True))) #serazeni od nejvetsiho po nejmensi
T_pom=T.copy()
#save to file
T_first, E_tot, Ntot = file_t3pa_cls_new(t3pa_cls,T)
dt, caption, T_int_first, E = energy_spectrum_in_time(T_first, E_tot)
hist_file(E_in_time_hist, T_int_first, E, caption);
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-1-6ef7f609a74f> in <module> ----> 1 dt, caption, T_int_first, E = energy_spectrum_in_time(T_first, E_tot) 2 hist_file(E_in_time_hist, T_int_first, E, caption); <ipython-input-1-39af94339401> in energy_spectrum_in_time(Tfirst, Etot) 27 T_int_first[l]=T_int_first[l]+T_first 28 ---> 29 caption, T_int_first = energy_in_time_hist(T_int_first, E, figure_E_in_time_hist, t_plasma_start, t_plasma_end, is_plasma, dt) 30 return dt, caption, T_int_first, E NameError: name 't_plasma_start' is not defined
caption, xmean,count, xle, Etot = energy_spectrum(E_tot)
hist_file(E_hist, xmean, count, caption);
([6003590.625, 6050268.31300574, 6052494.779638429, 6081360.9375, 6081435.958165841, 6082084.375, 6082097.314992263, 6186291.690395716, 6210880.8308236925, 6216600.394010617, 6250071.067749476, 6253059.375, 6272009.394876788, 6285836.743858851, 6332019.770764491, 6335012.458215902, 6382753.625329085, 6387059.877573022, 6387808.639279995, 6389132.256416976, 6389542.095684249, 6397536.882288186, 6410632.441096233, 6412629.6875, 6486083.041307997, 6540334.323672007, 6540662.5, 6540967.983820171, 6541461.660357964, 6541660.9375, 6541721.037624588, 6542032.961059521, 6542406.25, 6542551.563454605, 6543489.0625, 6575206.827334198, 6578338.780041376, 6583856.25, 6602254.6875, 6605657.442744204, 6606379.6875, 6609784.15871937, 6612357.1343054315, 6616789.645303432, 6618410.724052456, 6691165.76343968, 6730896.875, 6753922.092877797, 6759692.909394849, 6759698.4375, 6764802.418624744, 6764840.3455307875, 6769388.907485362, 6770299.835744761, 6791200.0, 6791260.9375, 6791515.117314909, 6795393.625500818, 6795734.689047052, 6796835.9375, 6816121.875, 6835484.237030705, 6836058.294672387, 6871931.61277433, 6872421.875, 6872773.4375, 6874007.8125, 6874791.619296838, 6874838.032045433, 6875303.125, 6875460.9375, 6875825.873590393, 6877002.927244927, 6877129.19236074, 6877135.9375, 6877254.6875, 6877359.726920295, 6877510.632180371, 6877603.125, 6877702.602695237, 6877985.045996529, 6878165.625, 6878450.466130173, 6880406.02640919, 6880421.875, 6962165.917714395, 7126035.9375, 7196496.274767645, 7201851.0762813045, 7257920.787868089, 7261889.990082544, 7279325.096373752, 7305882.440371681, 7317637.5, 7317895.502279323, 7320807.324044473, 7332992.1875, 7334403.9997183485, 7336204.5421741465, 7339277.725692248, 7340346.813125993, 7340369.420581036, 7340455.6734825, 7340847.2119893385, 7341941.741849133, 7343842.339750889, 7344000.323857926, 7344214.0625, 7345366.817048224, 7347603.125, 7350374.461399606, 7390435.623570581, 7391728.125, 7391825.0, 7396851.120746262, 7399917.216835599, 7400634.375, 7400635.629645873, 7400732.8125, 7400840.587132015, 7400960.9375, 7401013.615693794, 7401153.058946667, 7401413.943737318, 7401761.223576978, 7401839.364592141, 7401942.653306172, 7402424.076813115, 7402471.491858973, 7402701.145273023, 7402729.975646807, 7402737.217201722, 7402868.267819416, 7402909.375, 7403131.767848984, 7403151.18805896, 7403293.032851899, 7403344.127908998, 7403721.539049594, 7403942.599390308, 7404401.152534412, 7404551.5625, 7404711.297408968, 7404838.846789152, 7405085.9375, 7405205.521485213, 7405289.0625, 7405515.293550406, 7406078.844599122, 7406110.888236748, 7406728.019599166, 7406751.1631323965, 7408000.25476238, 7409670.3125, 7410059.324852124, 7410685.927732324, 7416695.78864597, 7417001.5625, 7417066.963431216, 7418402.129755766, 7419503.125, 7420137.5, 7445702.952439213, 7447748.747186804, 7448095.3125, 7448406.25, 7448435.74950511, 7448437.5, 7448768.75, 7448827.213318566, 7449381.292602511, 7449407.647163746, 7449776.5625, 7449894.462662741, 7450382.732860016, 7451151.5625, 7456164.0625, 7457157.8125, 7502723.4375, 7577857.409784255, 7578335.9375, 7579125.275534823, 7581934.375, 7581950.508446881, 7590124.072211468, 7598312.242091057, 7662789.0625, 7682653.02492224, 7700246.3714894615, 7703917.1875, 7727620.992463734, 7763156.347175491, 7765478.125, 7849551.422800481, 7876573.229567538, 7876600.572213885, 7880529.6875, 7882356.216106515, 7885102.342232032, 7885930.6878318135, 7889613.365034853, 7889978.596410838, 7890015.625, 7890216.004866553, 7890364.14755922, 7890710.9375, 7891150.0, 7891573.4375, 7891976.535936167, 7892249.448457963, 7892427.812552525, 7892535.9375, 7893133.686012467, 7893415.136828139, 7893615.625, 7893652.818495558, 7893926.717976268, 7894134.012043359, 7894381.769057957, 7902548.4375, 7903155.165221804, 7903418.75, 7903457.493493231, 7903840.625, 7918518.321519985, 7932228.125, 7938179.388371603, 7938813.60191671, 7939753.653682293, 7941613.223740346, 7966597.514929581, 7966660.069488064, 7967493.75, 7987081.25, 7991828.072296892, 7998757.8125, 8010513.365233188, 8011199.156463097, 8012935.9375, 8014027.964741059, 8014564.650548376, 8014717.1875, 8015804.6875, 8015893.75, 8016142.692472119, 8016423.292989713, 8017021.6259973785, 8017114.943091749, 8017190.268931576, 8017542.1875, 8031217.659345543, 8040125.736595095, 8042834.375, 8044512.594833076, 8047095.745122928, 8048692.1875, 8051354.6875, 8054714.881859509, 8063369.364793467, 8070426.5625, 8100717.220135557, 8109241.864173157, 8109849.413023697, 8109869.215376179, 8114121.80474235, 8121357.726952007, 8121876.71823797, 8122124.837735291, 8123595.3125, 8124243.179286592, 8125040.625, 8125807.8125, 8125869.802750677, 8126138.507274869, 8126644.353687044, 8126925.6198779745, 8126980.483810824, 8126983.357676279, 8127012.792321467, 8127268.75, 8127728.125, 8127791.474157828, 8127898.4375, 8128415.559332794, 8128418.289655982, 8128440.063356542, 8128454.8178768745, 8128771.647714629, 8128862.5, 8130039.0625, 8131070.446353318, 8131179.6875, 8134257.8125, 8139530.512039015, 8144112.041012618, 8146070.557671908, 8147467.1875, 8153454.063262046, 8155093.75, 8155255.503911003, 8155258.533025801, 8155700.526942659, 8155870.926270536, 8156550.0, 8156620.3125, 8156878.1260242285, 8156937.381024545, 8158360.4763099365, 8160254.7001596615, 8187922.422141565, 8190970.3125, 8191721.256936318, 8191931.25, 8195647.596077069, 8210015.714784935, 8211514.501906047, 8211929.391999999, 8212767.1875, 8214303.0278171245, 8214698.4375, 8214802.319546929, 8215430.543651087, 8216333.982873519, 8220996.6462131385, 8223764.4666460715, 8227338.877601273, 8230703.036864242, 8232427.765995807, 8233114.86669645, 8233259.134872677, 8234458.046993945, 8234614.578647237, 8235271.875, 8235342.1875, 8235465.335159269, 8235487.5, 8235575.0, 8236040.625, 8236114.900315672, 8236235.9375, 8236430.389029672, 8236439.412949984, 8236455.836428615, 8236858.443154078, 8236893.75, 8236944.709836236, 8237018.965128539, 8237050.0, 8237603.125, 8237772.036272833, 8237886.552455874, 8238000.0, 8238009.193825948, 8238107.117573849, 8238122.935607471, 8238685.071710684, 8238692.1875, 8238773.4375, 8238985.9375, 8239240.424521007, 8239437.538168406, 8240505.902499576, 8240521.809794507, 8240709.655008807, 8241046.44130438, 8241222.495780082, 8241436.597060739, 8241444.754665461, 8241670.3125, 8241832.22772804, 8245457.8125, 8249173.906716815, 8251428.929655514, 8251446.63526376, 8251509.375, 8254853.100049645, 8254860.9375, 8254987.5, 8255084.910800205, 8255099.850538065, 8255101.5625, 8255242.1875, 8255517.8928462, 8256012.5, 8256238.829998866, 8256946.67353575, 8257238.108854838, 8258243.798407467, 8258603.125, 8258810.329167912, 8260562.9769702805, 8263052.3824073095, 8263154.3290686365, 8264535.446086887, 8267939.335948607, 8269926.5625, 8269963.529840212, 8270108.181613427, 8270519.229712114, 8271790.625, 8271819.052908704, 8271968.070490367, 8273053.11430205, 8273246.631398518, 8274443.266549592, 8275110.141650716, 8279039.029224582, 8279953.096244665, 8280957.8125, 8281532.8125, 8282051.974343033, 8283476.900555339, 8285052.16788994, 8285339.369403985, 8285460.9375, 8285671.875, 8285686.320355772, 8285716.567602755, 8286085.224391794, 8286198.4375, 8286703.973082276, 8286734.223304049, 8287237.81033851, 8287323.503603908, 8287463.98216323, 8287519.9338789955, 8289289.232306277, 8289361.826172369, 8291540.90522332, 8293034.375, 8293200.0, 8293400.578477044, 8293525.0, 8293529.6875, 8293940.625, 8294087.7360810945, 8294999.809899292, 8296105.190734904, 8296107.8125, 8297200.232035799, 8298634.831300192, 8298877.822668563, 8299526.5625, 8300100.0, 8300892.1875, 8303451.5625, 8303718.510211509, 8304132.261755552, 8304398.904507048, 8304454.680163279, 8304954.6875, 8305299.1113490565, 8305346.813300817, 8305375.0, 8305506.25, 8305632.397801811, 8305648.345992664, 8305725.712102168, 8305741.263550519, 8305806.25, 8305845.3125, 8305920.3125, 8306069.832152766, 8306088.56207443, 8306340.617695834, 8306518.524317421, 8306594.059409936, 8306613.198049535, 8306616.841345005, 8306766.674696561, 8306776.5625, 8306848.261776003, 8306896.875, 8306995.226265733, 8307000.0, 8307000.880027924, 8307183.263705361, 8307212.706982385, 8307321.960593307, 8307365.976859036, 8307376.5625, 8307421.335711394, 8307484.209339013, 8307688.968481312, 8307689.0625, 8307730.791946105, 8307792.777836752, 8307867.1875, 8307931.25, 8307972.381878226, 8307981.25, 8308005.763208969, 8308017.1875, 8308070.024559691, 8308081.318522906, 8308167.877857146, 8308190.19569459, 8308225.0, 8308321.584738465, 8308361.538118883, 8308481.026003482, 8308515.625, 8308628.125, 8308686.741078582, 8309022.630416911, 8309107.8125, 8309165.164284367, 8309168.101594184, 8309461.806664191, 8309832.8125, 8310032.673836032, 8310244.965809419, 8310268.682071379, 8310416.385699565, 8310439.199670145, 8310497.773580596, 8310537.5, 8310918.554451228, 8311163.423819448, 8311700.522109116, 8311874.487312693, 8313143.736962718, 8313365.625, 8313618.41428207, 8313976.195334158, 8314551.749560521, 8314625.0, 8314632.277642683, 8314731.959125433, 8314773.06053748, 8314840.423365527, 8315821.875, 8316403.125, 8316523.15177708, 8316537.5, 8316958.4350751, 8317196.666220364, 8317260.9375, 8317294.188820143, 8317463.550853763, 8318149.256590744, 8319269.348316029, 8319835.9375, 8320256.25, 8320363.813293472, 8320833.992983077, 8320930.725441373, 8320939.995383488, 8320961.649635577, 8321454.6875, 8321615.904411892, 8321933.265956501, 8322062.198978218, 8322190.148108847, 8322778.473639852, 8323531.754905395, 8324651.804750366, 8324679.581021166, 8324684.256481037, 8324687.32614571, 8326364.0625, 8330090.243765399, 8330970.197272808, 8331620.05834381, 8331846.464148292, 8332367.1875, 8332865.625, 8336614.0625, 8338000.0034717405, 8339344.3972103875, 8339460.9375, 8339971.875, 8340782.332166485, 8341925.350100092, 8342501.5625, 8345301.732508338, 8346645.917387763, 8346690.4034297485, 8353132.699095033, 8354700.635427612, 8359051.415987568, 8359071.875, 8359173.4375, 8359996.875, 8360546.905978106, 8365579.7397903, 8365735.279934119, 8375077.960803334, 8375857.8125, 8377657.8125, 8380779.834472933, 8381215.398705296, 8381700.11959931, 8381742.181317326, 8382975.0, 8385438.313471033, 8386265.749578577, 8386359.186390344, 8390265.02052807, 8390910.378864799, 8392558.612481993, 8392719.678509716, 8392743.75, 8392859.061738927, 8393057.935556596, 8393164.0625, 8393982.845950782, 8394359.270671979, 8394615.93981724, 8394686.265889015, 8394728.091304306, 8395198.28478376, 8395255.966109991, 8395278.125, 8395326.659278944, 8395537.967161687, 8395762.316706004, 8396174.388650514, 8396371.131674537, 8396537.360958098, 8396580.444009107, 8396943.189777052, 8397446.204649454, 8397557.8125, 8397597.491229903, 8397609.440220304, 8397830.646560224, 8397938.374540063, 8398062.5, 8398092.458110131, 8398389.0625, 8398598.4375, 8398918.75, 8399011.465151187, 8399046.564059962, 8399438.338926451, 8399559.375, 8400392.177859703, 8400548.294644471, 8400885.414873514, 8401410.718278293, 8401620.395809598, 8402026.37088516, 8402248.416469606, 8402387.520829547, 8402439.907632824, 8402493.75, 8402708.314037517, 8403434.375, 8403986.669993568, 8404104.6875, 8404255.756030938, 8404451.886727504, 8404474.759216981, 8404810.922137603, 8404817.1875, 8404818.75, 8404874.993677847, 8405376.016192965, 8405443.75, 8407093.157093735, 8407850.184119906, 8413525.790117912, 8415506.51876255, 8415790.417036492, 8419130.851519791, 8421654.281032473, 8422435.9375, 8423436.058658905, 8423642.1875, 8423957.762331683, 8424297.013609018, 8425139.311475448, 8425188.786925629, 8425297.663282335, 8425398.4375, 8425401.5625, 8425454.01110424, 8425456.25, 8425477.378440797, 8425493.016945923, 8425587.922909942, 8426092.330555608, 8426213.4775776, 8426326.884727467, 8426443.675550716, 8426522.227929885, 8426567.904716864, 8426630.603466315, 8426706.680020394, 8426786.584231593, 8426912.5, 8427009.375, 8427034.20896534, 8427059.98335661, 8427320.049431233, 8428188.014033547, 8428198.4375, 8428225.103470312, 8428658.12883765, 8428726.5625, 8429351.05903812, 8429484.308045711, 8429733.729912335, 8429758.528993895, 8429791.033228533, 8429794.386782084, 8430755.98505436, 8430952.952864148, 8432383.905266631, 8433472.413055474, 8433906.663213449, 8434326.852671407, 8435420.406137323, 8435558.136061387, 8437264.902083475, 8437441.068491284, 8437688.887856292, 8437847.370551577, 8438886.593115564, 8439187.641586345, 8439251.593715904, 8439589.42268908, 8439721.46572858, 8440165.625, 8442943.227665083, 8444415.172207607, 8445434.209656684, 8447968.75, 8455064.760624269, 8456357.8125, 8457809.0093332, 8459226.021905398, 8459507.324004142, 8460948.012372496, 8461043.66368319, 8461350.515380401, 8461449.18793391, 8461997.050334051, 8462628.184677238, 8463339.0625, 8464151.678607302, 8464478.172619306, 8465134.063331831, 8465982.8125, 8466454.397971211, 8466946.387998423, 8471768.345585639, 8472221.825668426, 8473546.131696327, 8473880.387044726, 8473881.111737778, 8476775.0, 8477834.787980214, 8479268.379930466, 8480798.7073317, 8485273.889046216, 8485494.527952746, 8488237.162256278, 8490953.125, 8507023.4375, 8508367.07158697, 8514076.5625, 8514460.03400348, 8520916.14273139, 8524138.53488948, 8559654.53591364, 8561678.941334452, 8569549.860864822, 8596768.744325314, 8625875.0, 8629180.398214228, 8630136.786066521, 8641243.357320566, 8648573.24078655, 8655893.75, 8663231.15651672, 8664703.56594669, 8669880.968826728, 8670631.439191287, 8675115.625, 8680585.400145506, 8680942.007073976, 8682622.819608534, 8684859.146388503, 8694141.168059781, 8695756.25, 8698545.3125, 8699854.6875, 8700272.759745218, 8700509.520707712, 8701681.685994947, 8701787.5, 8702507.727786427, 8708428.125, 8709866.336803894, 8709960.9375, 8712015.625, 8714725.0, 8730369.293292819, 8730441.947633807, 8730530.55821578, 8732567.060237443, 8734977.933272569, 8752134.988065325, 8752156.25, 8754479.327727038, 8754537.5, 8754997.98657241, 8755008.163137527, 8756168.470071742, 8757247.116622403, 8759318.75, 8759660.9375, 8759698.697191888, 8759926.611896766, 8760244.172202336, 8760656.25, 8764624.147945676, 8780467.263149643, 8783215.558566084, 8786067.727543034, 8787532.114176624, 8801588.631345693, 8804278.730427677, 8804849.036822675, 8806626.335401854, 8806715.625, 8823862.5, 8827256.134074913, 8828580.799952745, 8828729.30198019, 8829457.8125, 8830249.533280075, 8832256.857158141, 8838533.806575732, 8838763.999443235, 8847367.1875, 8851857.96174512, 8855678.254475169, 8860112.194447575, 8861249.485016612, 8861258.218171014, 8862383.320509277, 8862498.4375, 8862769.884801988, 8874214.989279004, 8880247.769394571, 8880360.411726063, 8880368.6956535, 8880488.254864022, 8880531.25, 8880643.75, 8880644.144404091, 8880871.94195757, 8881048.29247874, 8881256.793431884, 8881420.3125, 8881423.217055084, 8881535.9375, 8881770.952598542, 8882054.935462201, 8882073.347681332, 8882396.597466206, 8882483.952304736, 8882651.89125054, 8886056.25, 8886546.521313358, 8886733.899601948, 8887213.4459416, 8887760.027518403, 8887767.066147214, 8887809.174048161, 8891063.326134315, 8891778.222433606, 8892439.0625, 8892893.287671, 8893117.94618399, 8893360.831687385, 8893366.272945205, 8894694.179430664, 8895276.92329569, 8896188.386346858, 8896830.319493245, 8903852.391882176, 8908206.074855037, 8908348.4375, 8909857.058183568, 8909875.134089714, 8911580.947501482, 8912579.220555803, 8913279.555843161, 8918437.070554141, 8919133.867681589, 8919164.670041861, 8919903.537079953, 8920079.293601895, 8920241.617212368, 8920254.195970014, 8920348.010085966, 8920383.30400799, 8920438.777750105, 8920446.07677219, 8920447.092355562, 8920526.88457334, 8920591.122818338, 8920612.411173163, 8920632.688656436, 8920632.8125, 8920684.343107276, 8920777.740441019, 8920783.42137198, 8920829.364924734, 8920920.225538185, 8920927.539012577, 8920959.653485032, 8920969.87743544, 8921034.2904562, 8921057.8125, 8921068.131942792, 8921180.338351874, 8921197.704872036, 8921198.758920679, 8921215.95431394, 8921242.526308317, 8921252.11628409, 8921253.125, 8921334.954332868, 8921396.215476071, 8921403.084133144, 8921448.432422655, 8921545.114061886, 8921579.6875, 8921630.842209203, 8921633.436595257, 8921638.682940701, 8921716.194252329, 8921718.816781392, 8921720.3283919, 8921742.889260756, 8921879.611179546, 8921949.447727976, 8922007.8125, 8922056.25, 8922091.532912778, 8922091.76759835, 8922096.67720539, 8922141.642457366, 8922155.724188754, 8922174.84586831, 8922217.1875, 8922241.10755158, 8922241.701567372, 8922252.791757058, 8922260.376090366, 8922374.789419984, 8922455.804606872, 8922530.396037286, 8922536.901143769, 8922649.533415409, 8922656.47806203, 8922688.208530556, 8922817.18546985, 8922841.370464958, 8922868.434455696, 8922973.719616644, 8923033.231527032, 8923067.1875, 8923107.088651303, 8923156.25, 8923167.1875, 8923171.875, 8923192.1875, 8923212.5, 8923212.5, 8923263.81935399, 8923389.172347289, 8923395.824939888, 8923404.452158106, 8923490.782242127, 8923594.075678447, 8923630.741643094, 8923631.535567371, 8923665.625, 8923717.1875, 8923720.3125, 8923778.125, 8923784.375, 8923801.497918464, 8923851.177993266, 8923923.209953804, 8923928.125, 8923957.49705281, 8923963.848399324, 8924098.4375, 8924127.848492065, 8924134.375, 8924134.648420611, 8924137.5, 8924178.545743521, ...], [31.917413809910247, 56.76932915841101, 21.171434571780424, 78.22757629929401, 26.19885767621624, 54.040182651400734, 11.892935267256998, 7.432822485177422, 39.81580689569163, 28.944929835539632, 5.570893382408425, 50.085180069055184, 46.120957580726866, 43.488033826743546, 69.04252041418736, 14.784604313028725, 6.332550908181242, 54.26180495457724, 8.778206854573222, 64.2196649998144, 20.849122131664352, 42.501516563882646, 13.69260166240747, 87.58862283911452, 11.505229324994698, 14.749414818798643, 39.698116834938496, 49.34551536509707, 8.70979094220195, 50.873860856763926, 40.4632840121578, 5.347038175969206, 48.523014294766995, 7.60358298390186, 44.85068724839932, 12.168401573600814, 14.58194274983203, 42.32265861220297, 38.18138306641816, 58.8439976643257, 43.647580813228366, 75.6553614288458, 6.953900164701166, 7.8285668288645995, 24.923091057084044, 32.97232545218364, 34.806640619190155, 44.58891573789693, 5.569173060753685, 44.2516265887107, 41.30022667684539, 10.71727786173486, 61.17010581812377, 25.654744835062235, 59.10629937871309, 53.067089644271434, 62.477054995930956, 5.804825465879644, 5.211497404089725, 44.4141572748471, 41.92920246793688, 37.40455352075212, 5.215882754195603, 5.105663799819361, 37.61515429561967, 54.853275183985446, 66.15450679068194, 20.8386885184345, 17.44887466727311, 59.62347521887247, 60.971998936866456, 32.10850439014781, 7.533245459188099, 56.94689624737397, 33.33982145794471, 48.76999259480293, 34.28510672282668, 85.93808044234106, 61.81682497622889, 5.378875270559759, 47.948770919797774, 41.33546972326656, 5.4821354801977344, 9.149239319770116, 61.46606661982095, 14.60953807862521, 38.26566429952285, 7.992772711875487, 58.800686759583265, 17.126734425258377, 45.45761845841714, 42.963258489673784, 22.871144955974053, 42.82095619950964, 15.615631856898597, 53.877306765699686, 44.94993160200898, 10.199579642976843, 43.75914633846399, 66.34499736347703, 43.7708993281838, 24.30141375305714, 20.762310231847383, 8.473202138743622, 13.477401637617284, 33.06048460569946, 58.73551024157686, 39.97350397427789, 37.36433895406713, 59.00534740249455, 7.419397495096545, 23.57442850970517, 44.27699461160324, 36.04522910870328, 80.39895803760419, 5.463027065776611, 35.947266093933834, 23.65093184704665, 47.516433314956, 51.25540393945552, 37.16891261090732, 13.4741311586336, 39.51325078583319, 39.99636647228022, 8.44388404879708, 16.23318459459193, 6.562676637776674, 12.29939913097655, 13.657910248569094, 18.117743939146873, 90.96062075030294, 29.4199531156598, 10.449313427348823, 48.08047269465394, 5.0503799964827225, 58.13684720525183, 19.569767672196434, 5.731238798292676, 13.798975733777661, 34.62076928292344, 6.684330073751954, 30.115329313014122, 22.57817084147142, 58.392133685016134, 91.54993320797978, 61.790855725835065, 63.10510873520322, 61.6886792407119, 44.356685486256815, 22.36476278735563, 26.60147222513342, 55.76173983335727, 9.556527900810966, 39.20302942180293, 14.753753204271941, 51.08744609450096, 7.252505664730071, 60.77082317874373, 5.9201269400279815, 47.027830951008475, 42.98918879369814, 35.332006688617334, 25.527586313883173, 34.86817559694802, 44.72294930657864, 62.973678607082775, 25.295273592524534, 70.09578930913844, 33.21721661832684, 25.304236847819414, 15.106415201769991, 7.544513321842921, 102.20005547607883, 37.789698655352915, 7.574685013797425, 62.290916256309, 69.94858427260138, 50.79889601173907, 57.0139793760503, 7.019466438552985, 64.75106019668847, 5.834652714058307, 38.91764334944895, 7.798103548072806, 63.59693208699353, 14.041871993669409, 32.18718883691805, 6.743689947730135, 8.939094681143176, 55.92892620614775, 63.84679721646844, 9.414944782788472, 71.40665793510587, 9.21600824175782, 25.00260948135743, 5.109887346716496, 74.77519437390727, 7.112570502475699, 19.17942155039775, 5.583682696742152, 69.40701086997151, 7.783127610047499, 41.206708699942, 5.8426321564145045, 7.143992100806085, 45.77465236158252, 33.90037611371679, 45.146214281698825, 14.841218031956606, 5.438581442962356, 93.44839598641424, 28.98441036848451, 12.83663234295506, 10.441735550432107, 38.51668054664255, 13.889181521869016, 9.466420657113689, 63.95262282021072, 7.264925172226189, 54.14994151996485, 9.770884149804626, 42.05967364598417, 23.51095515488732, 44.55779662168647, 85.70280754349066, 83.08881252317693, 23.761881563473292, 6.674911133955034, 41.86335269488815, 7.887803726039771, 8.656689547349824, 18.24654375515442, 100.05603614561241, 82.38317271568016, 37.399843265994434, 46.12581512788724, 8.804067801667715, 51.14085136299951, 59.223494477980275, 14.363943893883777, 17.783527041372317, 85.86201565306895, 76.0490838636116, 59.073516612265145, 5.0501575943952295, 31.52814311275052, 24.424778879956666, 12.854002630337234, 7.030895475632562, 43.61869414169962, 37.74009354256226, 6.9200465557939514, 65.09856573195725, 15.315723184646824, 16.894061112257702, 45.210466181769405, 57.9653950899275, 15.62177948172646, 6.8927827539909305, 66.48343193665815, 7.6150842106572325, 13.837437727727478, 166.8563927776185, 81.14125139750524, 11.019637090220836, 5.931989954868447, 23.58752511137559, 42.81971239165628, 31.60437234690036, 56.39351114866544, 34.32054723907392, 50.75734327888695, 13.299424008022324, 26.433016065875073, 12.223570088729822, 44.12065898130193, 19.193616775317626, 17.525835980327578, 50.30338753483335, 41.86805538857816, 52.82374266187364, 41.049497289807974, 94.54121759622262, 65.01664235839903, 5.44234897462118, 13.160331257638914, 10.853001796470988, 8.169934117131401, 73.35542113855357, 40.2288841657645, 15.477479768780343, 29.32683650399019, 40.33573593651272, 75.23340822373224, 13.439791160531326, 5.8323463718830055, 67.80861384387514, 125.09234705910514, 53.29171700862306, 18.504741900058484, 10.025280992073993, 72.78037075722284, 14.23661348800831, 76.04797245700253, 61.42277096794786, 56.63248207423322, 21.85861946924683, 10.476011676477809, 17.834937909335245, 5.078982817097631, 36.81184607666868, 13.013924097378375, 66.91570378356288, 7.886665706560962, 80.98147879510947, 6.135017459909858, 13.923335954587545, 29.77661452775701, 40.67126603495194, 53.252410924762835, 7.902097505801481, 12.794331517213413, 66.19363067679902, 10.787986750217287, 16.74369605238797, 7.073681084670886, 40.36881582212694, 23.025211095792425, 10.118554932577261, 6.45009665623972, 15.917549394114806, 17.356887199585344, 107.5767084230653, 155.26567783803202, 13.940995873518345, 61.37770707269892, 36.19525867104035, 33.84298598324924, 19.510730148264397, 43.88785773998134, 18.51688093007318, 6.12531723341981, 9.004585496673357, 7.848456003528472, 55.690024406526476, 20.526663373952818, 50.590926384221646, 46.74211276227204, 58.61894456236895, 9.471595746011772, 28.393888776587794, 43.654242229568275, 18.84839939758131, 5.08501998789284, 5.275831875952815, 63.05347429497624, 73.89383398155067, 64.90862544951472, 74.2166478966285, 54.50517870291149, 46.54589555102459, 57.69528399686894, 5.1291110692942805, 16.12819573218751, 22.181043194491398, 12.259771061072437, 24.88209460615265, 8.012083696184545, 100.35654668940902, 20.687178191984046, 60.029702150026125, 17.092721703477753, 8.763462697669812, 10.77257846352487, 47.88664042861231, 16.240038631203323, 46.09354522727744, 73.97318188844659, 76.08246587285659, 14.400872102683925, 54.14924794435595, 41.310313737751926, 17.7691624646831, 64.15901282212154, 47.381065816169055, 25.33367629304505, 12.234479909775235, 80.05479790596276, 59.073361835354945, 50.196580077667846, 17.135623340456217, 64.63580429682597, 10.610151332113475, 23.22572738501411, 16.09736321614818, 77.9931474427711, 18.275274897898658, 29.594041562942966, 121.2471168655413, 49.93614145953227, 67.24401699269245, 6.953594852413356, 72.6756129126202, 44.455016982017135, 21.659795267001368, 12.58277721448906, 7.11273194811614, 98.47582212679855, 90.89079911685937, 59.451257062089624, 16.783981706643925, 9.634598688281912, 6.346839902087467, 5.631251469987534, 57.9353299605256, 61.73899228814084, 11.783961918314384, 65.48739286018973, 26.994956723814457, 83.04156086390677, 99.35850058752193, 25.849953472330814, 11.650098318336426, 11.232627751764584, 11.00441493059116, 9.030540879174863, 25.108340559811474, 5.433569736904781, 7.197115060297059, 59.82572033358499, 58.48461138377196, 70.90347431814163, 61.923625625105686, 33.9453258960811, 61.562652201815, 7.184924533847542, 72.38774184641301, 29.877750093898992, 28.839938950758143, 15.906386898595821, 17.021886270411773, 6.229741973226505, 66.63224626295036, 59.15767746691798, 70.97912935470502, 63.77984442278844, 29.530943163447166, 10.363700991229651, 6.5628783681649665, 6.087336594527818, 89.5737513631225, 12.374312792142234, 44.12432966628759, 81.52942928226012, 50.07505900044373, 9.003753467893297, 14.603831904035763, 18.589297914296537, 18.100301181369286, 51.98754019661682, 33.19681703054864, 62.42851457578223, 10.45163604320271, 5.379681730718239, 61.494502772673194, 10.792368620264858, 17.116341726020533, 79.47826741210068, 105.74727794475294, 60.36246121724438, 59.81138774859196, 25.479555337778265, 50.543323001708075, 14.622705470126727, 52.94846329305829, 38.459660240191454, 6.325939203310322, 5.4707211425178635, 7.634491491219917, 16.476781353180726, 51.23277121057256, 13.219716511447679, 25.633115561902187, 80.85720388731639, 61.05084324986976, 71.30966175866973, 28.45340110495882, 64.99163247297037, 81.56110475445738, 19.087179378696487, 53.254513510753256, 21.62588656359436, 54.08403815916028, 13.946940798079332, 5.131969357885015, 20.71654807078169, 22.228546529557324, 67.27101278895145, 23.87593925480607, 5.993475291265332, 10.794751086333019, 57.61786146713812, 35.686072033942516, 19.24818455254756, 6.612409465943235, 134.97779484478758, 58.25524060198081, 10.245815406892875, 12.825998144669887, 65.46199967679257, 42.78718913908935, 23.172109680909834, 51.76730482268907, 68.52828027476447, 5.467684997229706, 7.379551293574193, 92.00441895573849, 52.19985226191008, 10.257347487590584, 59.333676771672735, 8.932515614907892, 43.49457566539095, 37.49613428044462, 47.5044259239768, 66.74507500273603, 5.718767367360674, 49.80429129984576, 5.439268794994017, 43.90109011043849, 10.585529537429883, 5.239536785835042, 92.04599562883486, 32.211611445825355, 90.44875056739218, 78.70392856512034, 17.99849364612981, 111.49355865126475, 72.59993571381261, 8.533115712974347, 41.398770076487224, 31.117829700625823, 9.894327721200945, 63.10399263631066, 56.54306522668536, 91.40344678774481, 5.786244851001139, 49.856256669954135, 50.04280763409115, 29.503979608872648, 75.46129177232928, 16.12538358744395, 27.158709050651, 69.01863783292727, 21.726762879099713, 8.479970075565664, 44.72192023045464, 5.1032541624947045, 9.242963412826843, 14.50822685537893, 62.255854477967446, 43.989370115500115, 14.383368896465196, 5.527514214156278, 6.062062060174603, 6.4245591977042595, 61.481876565154494, 96.80925739334691, 75.86339184097547, 7.604493835407618, 5.997822466138994, 49.89414850877849, 84.09627297367929, 8.047915538297028, 7.734968885887588, 39.94034095458078, 44.30497566107557, 18.697412801232282, 41.00199314085115, 88.54053670911102, 8.653843685845514, 25.931566942414396, 52.87532563195537, 66.65798272506923, 41.707863902733, 11.176475284194892, 9.37601244121353, 20.053211203327955, 14.350543329902795, 32.3724342210343, 81.44515748013131, 8.365858966482017, 8.170427580135152, 6.100625428635088, 100.81623416029933, 67.74082597953293, 71.3099308323823, 12.263842919753287, 14.268255709670113, 83.32501067058544, 27.88419315467165, 7.92069406948289, 10.26292524393465, 70.87302290084216, 6.056117579621185, 18.681759427385096, 41.47802535465922, 60.618733412276214, 26.619510383173495, 16.294535833485437, 21.663419897933345, 7.591095821395809, 25.833961833401215, 10.711183660365199, 94.78061188174978, 73.26604177188935, 20.3197274064402, 36.51407392643573, 56.23196232371351, 29.069155750486892, 8.214393256202115, 18.901720814802708, 143.65336422580538, 51.510845417133076, 46.93117916779465, 17.95847388573073, 11.23120391042728, 6.648731441002935, 5.500597961698351, 93.52318418027315, 11.578781940968527, 112.40733033335346, 63.00504368413322, 31.780445965890408, 7.267424933070978, 10.67414644288832, 19.519403043234043, 65.03047959520904, 55.09557304663224, 14.423601939172446, 8.925411140688, 61.07657770320161, 11.260470701862467, 25.241521950655848, 42.462612120918045, 7.1269378977076085, 6.380225314851915, 84.68583103234758, 12.013941945954683, 104.94048552007719, 6.1677350338734565, 35.624254978852846, 48.77513177631827, 29.97577693312519, 14.096852662835055, 6.2652593885803105, 120.6979869516731, 57.61118720418373, 74.77979033589648, 18.236838824394084, 60.871713359950945, 34.592770060317434, 28.091926641308746, 12.637216813032376, 16.07543758346327, 15.37004294620193, 40.317122318700655, 22.47979615905705, 52.2553146954703, 15.424335098563299, 107.98957972391318, 91.44021062205769, 15.497520738970346, 6.814251814871259, 24.067841271557846, 19.064215012966507, 75.67657326192305, 61.6795394471264, 23.387566265505576, 126.95676144713426, 78.64805737657623, 19.445696974540724, 19.038308590043783, 22.005555401736203, 6.975737919188522, 7.208812402987497, 11.013298172271744, 97.61517912078936, 21.059561295705812, 5.320244925782165, 70.98646362301488, 18.15302692835042, 51.75685256983643, 57.39720437168589, 9.19484951900724, 106.41725689490143, 9.11844709379756, 12.038985770424992, 31.893330741488235, 13.646701553012416, 24.056702131938387, 53.093122311193426, 10.422481337202619, 27.266682869930154, 10.24974497189789, 41.08418564336003, 7.757876029451574, 6.591770901175825, 24.209083703986447, 25.534055263108527, 13.409710678232774, 25.64091480170545, 47.16306757546273, 74.08678479566191, 6.782345633437064, 8.465429038907669, 59.424098362301784, 9.736837720934195, 8.196332709704889, 12.77325840560751, 18.21074216127276, 15.510104212103835, 6.491995755764313, 7.738922710782433, 22.44856995716764, 28.65641313896808, 89.86747808351015, 21.977312043316164, 25.63799949558645, 65.32710073942836, 12.427818575393509, 38.5962495821693, 58.80484934855066, 5.8936704555589055, 20.287355561608006, 7.456388097977337, 19.94940503679962, 17.35248287182389, 5.756242214670635, 64.5564283387006, 5.710566581285355, 65.32926813152307, 44.20243272914035, 58.47854331720519, 31.18676041995927, 70.70875258604799, 23.885424784923245, 6.038878362235492, 82.90432470856544, 112.9946778567791, 61.54706590595815, 12.430971522857849, 26.06274968653428, 97.58677413469654, 5.845182536257199, 46.88023521369148, 8.434616396497978, 6.32598492907484, 30.18701658061689, 15.263020361509394, 61.511616964972816, 116.6110221500486, 8.226217210782337, 35.45223240781156, 124.80660387900352, 27.97834442375188, 21.222022389158585, 9.20643509700395, 32.51369868166651, 26.048793865766953, 71.36043809655521, 59.47948361204382, 20.696877263553453, 16.95860939302385, 8.089292807156244, 6.067878881642437, 67.15340305880646, 6.078431431563884, 16.93870349059446, 23.994243285342442, 43.973798895650454, 48.89558004869689, 6.660768904390077, 106.7959665147757, 6.026117511514888, 6.0646439584388006, 63.92814846592478, 71.28890165926637, 47.004466090581964, 49.676996094439566, 8.817305747855402, 8.365162889986777, 57.71927134577969, 50.29051975560705, 14.628161296751683, 42.5014837994823, 32.88861350857084, 97.84706289183556, 39.20383242753702, 39.80887353312876, 17.514741359469962, 24.550510478310162, 5.085079670108638, 14.477660045249172, 25.23985452353192, 17.938602096746894, 56.59734853113475, 19.454350801065146, 49.0702469262843, 53.387267827121775, 8.481132776058761, 24.01056157556499, 6.5256466606826615, 61.26178257924186, 78.2427885213032, 5.545818364195673, 21.44526781912835, 29.629852555334505, 44.52600887010479, 15.348228435451182, 15.23790919544539, 77.11117537809163, 17.818011027244697, 12.813833206902574, 57.22127890690038, 12.227241403498175, 17.852974204710886, 48.90851354368989, 45.51878535267496, 71.74260190806285, 119.52489326997066, 18.332655312752372, 22.716536658357022, 52.34326589021973, 105.2312805738561, 64.76815832607167, 19.80342968470656, 11.030554979038467, 42.81736647811722, 94.34158980731493, 75.24964702497202, 60.36000826572443, 21.344923844685038, 57.151869135898636, 8.574824115684978, 84.41085342955515, 60.0898426042321, 16.16331835373341, 24.736425411339887, 6.662891224964217, 5.934686637309953, 6.612312405471316, 64.51108356702727, 54.5854868243119, 16.69307919551514, 13.365436562622246, 25.955159955183365, 7.81237014566154, 39.604454286370014, 10.799775387451023, 38.531171443014095, 73.73657768588082, 15.97909337537936, 16.21642156178069, 7.505850808651611, 10.525584861482601, 16.362441995150355, 116.45094219698704, 47.69270011719881, 27.015405288240228, 10.283748003941357, 5.863891914634146, 17.238904588463217, 36.89202410334286, 19.42011934152259, 11.283495340864315, 53.612047376921915, 28.80354257409403, 14.055404807434083, 126.22129979899688, 12.317992236703464, 34.71345719480239, 16.52158448181788, 12.868176224484749, 11.82267654259087, 7.357987349510615, 14.313472458428164, 78.52207808065147, 31.64929697791372, 15.478474264559768, 10.68565839135564, 84.35391932318652, 26.1689332512217, 52.348107404008665, 8.035360328253706, 9.90400286408771, 45.013607872296134, 7.466724730943699, 20.81947325138529, 68.10699910292901, 5.590828225029022, 17.216846421608597, 5.688872291234802, 18.957749513332843, 5.626183015196335, 16.329803619505476, 49.41996343858656, 26.88344644918955, 10.939495985107914, 67.07524536142327, 73.67099426873317, 20.09491701188259, 71.71819378933353, 98.95274805959593, 34.68126628659877, 88.78669162296077, 8.43954776223743, 76.31458942947368, 8.24236949440279, 57.54304872444503, 6.192146581396845, 9.949876074048843, 19.65854289952009, 16.326622886535596, 9.626295838679988, 121.39167705864851, 17.576779418565255, 35.24873877734566, 12.172558639476222, 8.829745567330363, 47.72874455321856, 9.327113679506622, 25.14095107997258, 89.42570257751849, 5.2786549181705, 74.76860545992129, 6.690024641195494, 12.15163684376839, 152.0186913495057, 82.16595200542872, 18.518455885509454, 109.17272828091335, 12.602214710241284, 78.04906619309683, 56.2458428356804, 124.41628098623175, 115.46668353536714, 32.95515649426492, 21.055243153322913, 6.989767217510926, 76.07189297277662, 63.522327890791736, 11.976201577122811, 5.276309479546342, 45.61188907223576, 13.16094829821996, 60.782307416678215, 42.62424343302315, 61.33282461050482, 5.031594479677265, 60.31022331841845, 5.170707250610873, 35.47260659161524, 61.401223736592044, 46.64639712398737, 10.667885048416347, 61.528300693004645, 9.71276526059367, 41.481058707741326, 10.15785946073512, 76.35302729927494, 70.4086695851372, 81.18526842234037, 54.12099345478848, 46.75674735383697, 169.57625904367413, 24.505194356522615, 11.303858650275153, 5.307183031382543, 10.778753466835834, 9.467996085034304, 11.67801231346727, 6.9939383543332605, 12.073004342751009, 78.17954190360692, 58.61767966997384, 35.847287560238954, 104.46809419529804, 99.03412927498076, 9.277386371600134, 78.64106604240251, 86.41036514443911, 66.73990665298933, 23.555410436653347, 27.124752369364522, 83.22970310685531, 9.108054441056057, 41.118731574495555, 5.629351649939985, 71.8824250573567, 26.561639067183226, ...])
caption, T_hit,count1 = hits_in_time_hist_new(T_pom, dt, t_plasma_start, t_plasma_end, is_plasma, figure_count_in_time_hist)
hist_file(count_in_time_hist, T_hit, count1, caption);
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-1-de9a7f74f7fd> in <module> ----> 1 caption, T_hit,count1 = hits_in_time_hist_new(T_pom, dt, t_plasma_start, t_plasma_end, is_plasma, figure_count_in_time_hist) 2 hist_file(count_in_time_hist, T_hit, count1, caption); NameError: name 'dt' is not defined
Detected energies during the discharge + Energy spectrum
multiplot(icon_fig, T_int_first,E,xmean,count)
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-1-ae6815994e51> in <module> ----> 1 multiplot(icon_fig, T_int_first,E,xmean,count) NameError: name 'T_int_first' is not defined
size_of_interactions_average(Etot, Ntot,size_interaction)
#energy_spectra_doublebreakdown(Etot, T_first, file_energy_spectra_doublebreakdown)