87 lines
2.7 KiB
Python
Executable File
87 lines
2.7 KiB
Python
Executable File
# from Clemens' flux calc & Robin's paper [Owen et al, JSR 16, 2009, Silicon PIN diodes]
|
|
#--------- formula --------------------------------------------
|
|
# flux = I_ph * eps_Si /e/E/( 1-exp(A_Si*rsi*t_Si ) )
|
|
# with Al and air atten:
|
|
# flux= flux * exp(A_Al*ral*t_Al) * exp(A_air*rair*t_air)
|
|
#
|
|
# with A_ being the photoelectric cross sections of the materials
|
|
|
|
#--------- parameters -----------------------------------------
|
|
# density of Si
|
|
rsi = 2.33 # g/cm^3
|
|
# density of Al
|
|
ral = 2.699 # g/cm^3
|
|
# density of air
|
|
rair = 1.205e-3 # g/cm^3
|
|
|
|
eps_si = 3.62 # eV energy req. for charge separation in Si (generation of el/hole pairs)
|
|
e = 1.602e-19 # As , elementary charge
|
|
|
|
t_si = 0.0012 # thickness of diode in cm (== 12 micron) ; [* 10000]
|
|
t_al = 0.002 # thickness of diode in cm ; (== 20 micron)
|
|
|
|
#--------- input---------------------------------------------------
|
|
|
|
cur = float(get_string('Please enter the measured diode current [in mA]', 0.1))
|
|
ep = float(get_string('Please enter the photon energy [in keV]', 12.4 ))
|
|
t_si= float(get_string('Please enter the thickness of the Si layer [in micron]', t_si))
|
|
t_si = t_si/10000. # --> cm
|
|
t_al = float(get_string('Please enter the thickness of the Al layer [in micron, 0 if not available]', t_al))
|
|
t_al = t_al/10000
|
|
t_air = float(get_string('Please enter the pathway in air [in mm]', 165.+100.))
|
|
|
|
|
|
#--------- calc----------------------------------------------------
|
|
# energy deposit in Silicon
|
|
|
|
polys=[4.158,- 2.238, - 0.477, 0.0789]
|
|
|
|
hlp_si= poly(math.log10(ep), polys)
|
|
A_Si= 10.0 ** hlp_si
|
|
efact=math.exp(-A_Si*rsi*t_si)
|
|
|
|
sifact=1.0-efact
|
|
|
|
#help, cur, eps_si, ep
|
|
|
|
fl0=cur* eps_si/1.602/ep/sifact *1.e13
|
|
|
|
|
|
# Aluminium attenuation
|
|
|
|
# ratio of photoelectric cross section to density for Aluminium
|
|
polyal= [4.106, - 2.349, - 0.413, 0.0638 ]
|
|
hlp_al= poly(math.log10(ep), polyal)
|
|
A_Al= 10.0 ** hlp_al
|
|
|
|
# attenuation due to aluminium
|
|
alfact=math.exp(-A_Al*ral*t_al)
|
|
|
|
# Air attenuation
|
|
|
|
# ratio of photoelectric cross section to density for air
|
|
polyair= [3.153, - 1.026, - 2.348, 0.928]
|
|
hlp_air= poly(math.log10(ep), polyair)
|
|
A_air= 10.0 ** hlp_air
|
|
|
|
# attenuation due to air
|
|
airfact=math.exp(-A_air*rair*t_air/10.)
|
|
|
|
# total flux from photocurrent
|
|
|
|
fl=fl0/alfact/airfact
|
|
|
|
f = fl
|
|
|
|
msg = ' Energy: ' + '%7.4f' % e + ' keV\n'
|
|
msg = msg+ ' Diodecurrent: ' + str(cur).strip() +' mA\n'
|
|
msg = msg+ '\n'
|
|
msg = msg+ ' Thickness of active Si layer: ' + str(t_si*10000.).strip() + ' micron\n'
|
|
msg = msg+ ' Thickness of Al layer in front of diode: ' + str(t_al*10000.).strip() + ' micron\n'
|
|
msg = msg+ ' Length of path in air in front of diode: ' + str(t_air).strip() + ' mm\n'
|
|
msg = msg+ '\n'
|
|
msg = msg+ ' ===> flux: %8.2E photons / s' % f
|
|
|
|
print msg
|
|
show_message(msg, "flux_diode", False)
|