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