1 #ifndef FASTSIMULATION_TRACKING_SEEDFINDER_H
2 #define FASTSIMULATION_TRACKING_SEEDFINDER_H
37 std::vector<unsigned int>
getSeed(
const std::vector<const FastTrackerRecHit*>& trackerRecHits)
const {
51 std::vector<TrajectorySeedHitCandidate> seedHitCandidates;
54 seedHitCandidates.push_back(seedHitCandidate);
56 return iterateHits(0, seedHitCandidates, hitIndicesInTree,
true);
64 std::vector<int>& hitIndicesInTree,
66 unsigned int trackerHit)
const {
68 if (hitIndicesInTree[node->
getIndex()] < 0) {
79 std::vector<const FastTrackerRecHit*> seedCandidateHitList(node->
getDepth() + 1);
80 seedCandidateHitList[node->
getDepth()] = currentTrackerHit.
hit();
82 while (parentNode !=
nullptr) {
83 seedCandidateHitList[parentNode->
getDepth()] =
84 trackerRecHits[hitIndicesInTree[parentNode->
getIndex()]].hit();
90 if (!selectorFunction->pass(seedCandidateHitList)) {
98 hitIndicesInTree[node->
getIndex()] = trackerHit;
105 for (
unsigned int ichild = 0; ichild < node->
getChildrenSize(); ++ichild) {
118 const std::vector<TrajectorySeedHitCandidate>& trackerRecHits,
119 std::vector<int> hitIndicesInTree,
120 bool processSkippedHits)
const {
121 for (
unsigned int irecHit =
start; irecHit < trackerRecHits.size(); ++irecHit) {
128 unsigned int currentHitIndex = irecHit;
130 for (
unsigned int inext = currentHitIndex + 1; inext < trackerRecHits.size(); ++inext) {
132 if (trackerRecHits[currentHitIndex].getTrackingLayer() == trackerRecHits[inext].getTrackingLayer()) {
133 if (processSkippedHits) {
135 std::vector<unsigned int> seedHits =
iterateHits(inext, trackerRecHits, hitIndicesInTree,
false);
136 if (!seedHits.empty()) {
153 std::vector<unsigned int> seedIndices(seedNode->
getDepth() + 1);
162 return std::vector<unsigned int>();