From 8aed5ca1d4c4916b1f576d2aad2fb71474cf502c Mon Sep 17 00:00:00 2001 From: Tamas Gal <himself@tamasgal.com> Date: Fri, 1 Dec 2023 22:21:16 +0100 Subject: [PATCH] Allow 0 prefits --- src/scanfit.jl | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/scanfit.jl b/src/scanfit.jl index 02d4e7a..3eed0ff 100644 --- a/src/scanfit.jl +++ b/src/scanfit.jl @@ -63,16 +63,18 @@ function (msf::MuonScanfit)(hits::Vector{T}) where T<:KM3io.AbstractHit # TODO: currently disabled until all the allocations are minimised # here, reusing a Vector{Direction} (attached to msf as buffer) might be a good idea. # By doing so, we need `fibonaccicone!` and `fibonaccisphere!` as mutating functions - directions = Vector{Vector{Direction{Float64}}}() - for idx in 1:min(msf.params.nprefits, length(candidates)) - most_likely_dir = candidates[idx].dir - push!(directions, fibonaccicone(most_likely_dir, msf.params.α₂, msf.params.θ)) - end - directionset = DirectionSet(vcat(directions...), msf.params.α₂) - candidates = scanfit(msf.params, rhits, directionset) + if msf.params.nprefits > 0 + directions = Vector{Vector{Direction{Float64}}}() + for idx in 1:min(msf.params.nprefits, length(candidates)) + most_likely_dir = candidates[idx].dir + push!(directions, fibonaccicone(most_likely_dir, msf.params.α₂, msf.params.θ)) + end + directionset = DirectionSet(vcat(directions...), msf.params.α₂) + candidates = scanfit(msf.params, rhits, directionset) - isempty(candidates) && return candidates - sort!(candidates, by=m->m.Q; rev=true) + isempty(candidates) && return candidates + sort!(candidates, by=m->m.Q; rev=true) + end candidates[1:msf.params.nfits] end -- GitLab