90 const std::vector<CKFToPXDState*>& states)
const
92 std::vector<CKFToPXDState*> possibleNextStates;
94 const CKFToPXDState::stateCache& currentStateCache = currentState->
getStateCache();
95 const unsigned int& currentLayer = currentStateCache.geoLayer;
100 if (m_hitJump == -1) {
104 const unsigned int& nextPossibleLayer = std::max(
static_cast<int>(currentLayer) - 1 - m_hitJump, 0);
109 int numberOfLaddersForLayer[2] = {8, 12};
112 const CKFToPXDState::stateCache& nextStateCache = nextState->getStateCache();
113 const unsigned int nextLayer = nextStateCache.geoLayer;
114 if (nextLayer < std::min(currentLayer, nextPossibleLayer) or std::max(currentLayer, nextPossibleLayer) < nextLayer) {
118 if (currentLayer == nextLayer) {
121 const unsigned int fromLadderNumber = currentStateCache.ladder;
122 const unsigned int maximumLadderNumber = numberOfLaddersForLayer[currentLayer - 1];
129 const int direction = 1;
130 const unsigned int overlappingLadder =
131 ((fromLadderNumber + maximumLadderNumber - 1) + direction) % maximumLadderNumber + 1;
133 if (nextStateCache.ladder != overlappingLadder) {
148 if (currentStateCache.localNormalizedu <= 0.8f) {
152 if (nextStateCache.localNormalizedu > 0.2f) {
158 TrackFindingCDC::Weight weight =
m_prefilter(std::make_pair(currentState, nextState));
159 if (std::isnan(weight)) {
163 possibleNextStates.push_back(nextState);
166 return possibleNextStates;