Files
x06da/script/flux_diode.py
2016-03-17 10:54:59 +01:00

87 lines
2.7 KiB
Python

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