trout
Phlex-based reconstruction framework for the SHiP experiment.
Loading...
Searching...
No Matches
fit_seed.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 CERN for the benefit of the SHiP Collaboration
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#pragma once
6
8#include "phlex/core/product_selector.hpp"
9
10namespace SHiP::trout {
11
12// fit_seed (seed layer, transform): takes one seed (a SeedHitPair) and the
13// SpillContext of the spill it came from (a spill-layer input, which phlex
14// hands to every seed of that spill), runs ckf.findCandidateHits() for just
15// that seed, and refits every surviving
16// CKF candidate branch (SpectrometerCkf::refit(), a real
17// forward+backward-smoothed Acts::KalmanFitter — the CKF exploration itself
18// has no smoother, see SpectrometerCkf.hpp) in a plain loop, returning all
19// of them as one track_fit_result vector.
20//
21// A seed can yield zero, one, or several CKF candidates, and fit_seed loops
22// over them in plain C++ rather than unfolding them into a third "track"
23// layer. The loop was originally a workaround: phlex 0.3.2 crashed when an
24// unfold produced no children for some parents while a product from a
25// higher layer was also fed into those children, which is what a chained
26// track unfold does. phlex 0.4.1 handles that combination, so a track layer
27// is now possible if per-track data cells are wanted.
28void register_fit_seed(ModuleProxy const& m, phlex::experimental::identifier const& layer,
29 phlex::experimental::identifier const& seedLayer);
30
31} // namespace SHiP::trout
Definition fit_seed.cpp:16
phlex::detail::module_graph_proxy< phlex::detail::void_tag > ModuleProxy
Definition PhlexModuleProxy.hpp:16
void register_fit_seed(ModuleProxy const &m, phlex::experimental::identifier const &layer, phlex::experimental::identifier const &seedLayer)
Definition fit_seed.cpp:29