51 const std::vector<CKFToSVDState*>& states)
const
53 std::vector<CKFToSVDState*> possibleNextStates;
54 possibleNextStates.reserve(states.size());
56 const CKFToSVDState::stateCache& currentStateCache = currentState->
getStateCache();
57 const unsigned int currentLayer = currentStateCache.geoLayer;
58 const unsigned int nextPossibleLayer = std::max(
static_cast<int>(currentLayer) - 1 -
m_param_hitJumping, 0);
61 if (currentState == nextState) {
65 const CKFToSVDState::stateCache& nextStateCache = nextState->getStateCache();
66 const unsigned int nextLayer = nextStateCache.geoLayer;
68 if (std::max(currentLayer, nextPossibleLayer) >= nextLayer and nextLayer >= std::min(currentLayer, nextPossibleLayer)) {
70 if (currentLayer == nextLayer) {
73 const unsigned int fromLadderNumber = currentStateCache.ladder;
81 const int direction = -1;
82 const unsigned int overlappingLadder =
83 ((fromLadderNumber + maximumLadderNumber - 1) + direction) % maximumLadderNumber + 1;
85 if (nextStateCache.ladder != overlappingLadder) {
98 if (currentStateCache.localNormalizedu > 0.2f) {
102 if (nextStateCache.localNormalizedu <= 0.8f) {
108 TrackFindingCDC::Weight weight =
m_prefilter(std::make_pair(currentState, nextState));
109 if (std::isnan(weight)) {
114 possibleNextStates.push_back(nextState);
118 return possibleNextStates;