10#include <tracking/trackFindingCDC/findlets/base/Findlet.h>
12#include <tracking/ckf/cdc/findlets/CDCCKFStateCreator.h>
13#include <tracking/ckf/cdc/findlets/CDCCKFStateFilter.h>
14#include <tracking/ckf/cdc/findlets/CDCCKFPathMerger.h>
15#include <tracking/ckf/cdc/findlets/CDCCKFPathSelector.h>
17#include <tracking/ckf/cdc/entities/CDCCKFState.h>
18#include <tracking/ckf/cdc/entities/CDCCKFPath.h>
20#include <tracking/trackFindingCDC/utilities/StringManipulation.h>
21#include <framework/core/ModuleParamList.h>
30 class StackTreeSearcher :
public
45 m_stateFilter.exposeParameters(moduleParamList, TrackFindingCDC::prefixed(
"state", prefix));
47 m_pathSelector.exposeParameters(moduleParamList, TrackFindingCDC::prefixed(
"path", prefix));
51 void apply(std::vector<CDCCKFPath>& paths,
52 const std::vector<const TrackFindingCDC::CDCWireHit*>& wireHits)
override
59 std::vector<CDCCKFPath> newPaths;
60 std::vector<CDCCKFState> nextStates;
63 B2DEBUG(29,
"Testing one path from " << path.back());
68 for (
const auto& nextState : nextStates) {
69 path.push_back(nextState);
71 B2DEBUG(29,
"will go to " << nextState);
72 newPaths.push_back(path);
75 B2DEBUG(29,
"Now having " << newPaths.size() <<
" in flight");
79 B2DEBUG(29,
"Having found " << newPaths.size() <<
" new paths");
80 for (
const auto& path : newPaths) {
85 B2DEBUG(29,
"Having found " << newPaths.size() <<
" new paths after merging");
86 for (
const auto& path : newPaths) {
91 B2DEBUG(29,
"Having found " << newPaths.size() <<
" new paths after selection");
92 for (
const auto& path : newPaths) {
96 if (newPaths.empty()) {
100 paths.swap(newPaths);
103 apply(paths, wireHits);
Select the m_maximalCandidatesInFlight paths for further processing.
Create CKF states, based on the current path. Perform some basic selection at this stage (based on ph...
A stack of pre-, helix-extrapolation- , Kalman-extrapolation- and Kalman-update-filters.
The Module parameter list class.
void apply(std::vector< CDCCKFPath > &paths, const std::vector< const TrackFindingCDC::CDCWireHit * > &wireHits) override
Main method to update the paths. Input: vector of the selected paths and a vector of CDC wirehits to ...
CDCCKFStateCreator m_stateCreator
algorithm to create CDC-CDF states while traversing the path
CDCCKFStateFilter m_stateFilter
algorithm to perform state filtering
CDCCKFPathSelector m_pathSelector
algorithm to select N best paths, for further processing.
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) override
Expose the parameters of the sub findlets.
CDCCKFPathMerger m_pathMerger
algorithm to merge similar paths
void addProcessingSignalListener(ProcessingSignalListener *psl)
Register a processing signal listener to be notified.
Interface for a minimal algorithm part that wants to expose some parameters to a module.
std::vector< CDCCKFState > CDCCKFPath
Shortcut for the collection of CDC CKF-algorithm states.
Abstract base class for different kinds of events.