10#include <tracking/trackingUtilities/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/trackingUtilities/utilities/StringManipulation.h>
21#include <framework/core/ModuleParamList.h>
30 class StackTreeSearcher :
public
45 m_stateFilter.exposeParameters(moduleParamList, TrackingUtilities::prefixed(
"state", prefix));
47 m_pathSelector.exposeParameters(moduleParamList, TrackingUtilities::prefixed(
"path", prefix));
68 m_stateCreator.setMaximalLayerJumpBackwardSeed(maximalLayerJumpBackwardSeed);
86 m_pathSelector.setMaximalCandidatesInFlight(pathMaximalCandidatesInFlight);
95 m_stateFilter.setMaximalHitCandidates(stateMaximalHitCandidates);
99 void apply(std::vector<CDCCKFPath>& paths,
100 const std::vector<const TrackingUtilities::CDCWireHit*>& wireHits)
override
107 std::vector<CDCCKFPath> newPaths;
108 std::vector<CDCCKFState> nextStates;
111 B2DEBUG(29,
"Testing one path from " << path.back());
116 for (
const auto& nextState : nextStates) {
117 path.push_back(nextState);
119 B2DEBUG(29,
"will go to " << nextState);
120 newPaths.push_back(path);
123 B2DEBUG(29,
"Now having " << newPaths.size() <<
" in flight");
127 B2DEBUG(29,
"Having found " << newPaths.size() <<
" new paths");
128 for (
const auto& path : newPaths) {
133 B2DEBUG(29,
"Having found " << newPaths.size() <<
" new paths after merging");
134 for (
const auto& path : newPaths) {
139 B2DEBUG(29,
"Having found " << newPaths.size() <<
" new paths after selection");
140 for (
const auto& path : newPaths) {
144 if (newPaths.empty()) {
148 paths.swap(newPaths);
151 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 setPathMaximalCandidatesInFlight(size_t pathMaximalCandidatesInFlight)
Set maximal candidates in flight for path selection.
void setMaximalLayerJump(int maximalLayerJump)
Set maximal layer jump for state creation.
CDCCKFStateCreator m_stateCreator
algorithm to create CDC-CDF states while traversing the path
CDCCKFStateFilter m_stateFilter
algorithm to perform state filtering
void setMaximalDeltaPhi(double maximalDeltaPhi)
Set maximal delta phi for state creation.
void setMaximalLayerJumpBackwardSeed(int maximalLayerJumpBackwardSeed)
Set maximal layer jump for backward seed tracks.
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 apply(std::vector< CDCCKFPath > &paths, const std::vector< const TrackingUtilities::CDCWireHit * > &wireHits) override
Main method to update the paths. Input: vector of the selected paths and a vector of CDC wirehits to ...
void setStateMaximalHitCandidates(size_t stateMaximalHitCandidates)
Set maximal hit candidates for state filtering.
void setHitFindingDirection(const std::string &hitFindingDirection)
Set hit finding direction.
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.