Skip to content
Snippets Groups Projects
Verified Commit 9b6582e1 authored by Tamas Gal's avatar Tamas Gal :speech_balloon:
Browse files

Add dispersion functions

parent fe2ad338
No related branches found
No related tags found
No related merge requests found
......@@ -28,7 +28,24 @@ const DispersionARCA = BaileyDispersion(350)
dp.a0 + dp.a1 * dp.P + x * (dp.a2 + x * (dp.a3 + x * dp.a4))
end
@inline function refractionindexgroup(dp::BaileyDispersion, λ)
error("Not implemented yet")
n = refractionindexphase(dp, λ)
y = dispersionphase(dp, λ)
n / (1.0 + y*λ/n)
end
@inline function dispersionphase(dp::BaileyDispersion, λ)
x = 1.0 / λ
-(x^2)*(dp.a2 + x*(2.0*dp.a3 + x*3.0*dp.a4))
end
@inline function dispersiongroup(dp::BaileyDispersion, λ)
x = 1.0 / λ
n = refractionindexphase(dp, λ)
np = dispersionphase(dp, λ)
npp = x^3*(2.0*dp.a2 + x*(6.0*dp.a3 + x*12.0*dp.a4))
ng = n / (1.0 + np*λ/n)
ng^2 * (2*np^2 - n*npp) * λ / (n^3);
end
......@@ -5,6 +5,7 @@ The parameter set for light detection.
- `minimum_distance`: the minimum distance [m] between muon track and PMT
- `lambda_min`: minimum wavelength [ns]
- `lambda_max`: maximum wavelength [ns]
- `n`: average index of refraction of medium (default: water) corresponding to the group velocity
- `legendre_coefficients`: a tuple of two vectors which contain the Legendre coefficients
- `dispersion_model`: the dispersion model
- `scattering_model`: the scattering model
......@@ -14,6 +15,7 @@ Base.@kwdef struct LMParameters{D<:DispersionModel,S<:ScatteringModel,A<:Absorpt
minimum_distance::Float64 = 1.0e-1
lambda_min::Float64 = 300.0
lambda_max::Float64 = 700.0
n::Float64 = 1.3800851282
legendre_coefficients::Tuple{Vector{Float64},Vector{Float64}} = gausslegendre(5)
dispersion_model::D = BaileyDispersion()
scattering_model::S = Kopelevich()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment