diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bf08b9f1c699dcc6b02b3128dfdb522e9ac0593e..b7496667573fc7294ca60f45f84e088f4e2e4806 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -57,7 +57,7 @@ Julia 1.9: docs: - image: docker.km3net.de/base/julia:1.8-tex + image: docker.km3net.de/base/julia:1.9-tex stage: docs script: - | diff --git a/Project.toml b/Project.toml index c4ee45ae3d0a23810d5eb51e60160447c54b00ff..53c98506189b4e03174bc82184ea3280c3d662d5 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "KM3io" uuid = "2cab5852-6f21-4982-99b0-6a4792870cfb" authors = ["Tamas Gal", "Johannes Schumann"] -version = "0.16.2" +version = "0.16.3" [deps] Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" diff --git a/docs/src/api.md b/docs/src/api.md index a7c8e419e66a09cf0349bdc2c9396615cd4043eb..bb64c27229eaf9a225e10f7ac3b774d49bf14f93 100644 --- a/docs/src/api.md +++ b/docs/src/api.md @@ -150,3 +150,8 @@ bestaashower RecStageRange hashistory ``` + +### Math +```@docs +angle +``` diff --git a/src/KM3io.jl b/src/KM3io.jl index 75df8d56f9287e45870109ec9961c1822fc31b16..4584cd8a4bfb2ee85b5e2454cce1a2b347236ff0 100644 --- a/src/KM3io.jl +++ b/src/KM3io.jl @@ -102,6 +102,7 @@ include("tools/general.jl") include("tools/daq.jl") include("tools/trigger.jl") include("tools/reconstruction.jl") +include("tools/math.jl") include("tools/helpers.jl") include("physics.jl") diff --git a/src/tools/math.jl b/src/tools/math.jl new file mode 100644 index 0000000000000000000000000000000000000000..114bb448ff49efabd714983bbd5af1574dd6e1f2 --- /dev/null +++ b/src/tools/math.jl @@ -0,0 +1,7 @@ +""" +Calculate the angle between two vectors. +""" +Base.angle(d1::Direction, d2::Direction) = acos(min(dot(normalize(d1), normalize(d2)), 1)) +Base.angle(a::T, b::T) where {T<:Union{KM3io.AbstractCalibratedHit, KM3io.PMT}} = Base.angle(a.dir, b.dir) +Base.angle(a, b::Union{KM3io.AbstractCalibratedHit, KM3io.PMT}) = Base.angle(a, b.dir) +Base.angle(a::Union{KM3io.AbstractCalibratedHit, KM3io.PMT}, b) = Base.angle(a.dir, b) diff --git a/test/tools.jl b/test/tools.jl index 83507ed4438643a205b52c20d4bf62208fceeacf..59221d304e70ba6fb7b76ed30f691b201ea81b7d 100644 --- a/test/tools.jl +++ b/test/tools.jl @@ -327,3 +327,11 @@ end @assert 111 == length(mc_event.mc_hits) @assert 4 == length(mc_event.mc_trks) end + + +@testset "math" begin + @test 0 == angle(Direction(1.,0,0), Direction(1.,0,0)) + @test π/2 ≈ angle(Direction(1.,0,0), Direction(0.,1,0)) + @test π/2 ≈ angle(Direction(1.,0,0), Direction(0.,0,1)) + @test π ≈ angle(Direction(1.,0,0), Direction(-1.,0,0)) +end