69 m_trackSegmentHits.isRequired(m_trackSegmentHitsName);
70 m_ndFinderTracks.registerInDataStore(m_ndFinderTracksName);
71 m_ndFinderTracks.registerRelationTo(m_trackSegmentHits);
73 m_minSuperAxial, m_minSuperStereo,
74 m_iterations, m_omegaTrim, m_phiTrim,
76 m_axialFile, m_stereoFile
78 m_NDFinder.init(ndFinderParameters);
88 if (hit.getPriorityPosition() == 0)
continue;
94 m_NDFinder.addHit(hitInfo);
97 m_NDFinder.findTracks();
99 std::vector<RawFinderTrack>* rawFinderTracks = m_NDFinder.getFinderTracks();
102 constexpr double z = 0.0;
104 rawFinderTrack.phi, rawFinderTrack.omega, z, rawFinderTrack.cot);
107 ndFinderTrack->setQuadrant(getNDFinderQuadrant(*ndFinderTrack));
108 ndFinderTrack->setTotalMomentum(getNDFinderTotalMomentum(*ndFinderTrack));
109 ndFinderTrack->setValidTrackBit(
true);
112 const HoughPeak& peak = rawFinderTrack.peak;
113 unsigned int peakWeight = peak.weight;
114 cell_index peakCell = peak.cell;
115 std::array<int, 4> raw3DHMaximum = {
116 static_cast<int>(peakCell[0]),
117 static_cast<int>(peakCell[1]),
118 static_cast<int>(peakCell[2]),
119 static_cast<int>(peakWeight)
121 ndFinderTrack->setRaw3DHMaximum(raw3DHMaximum);
124 ndFinderTrack->setHoughSpace(std::move(rawFinderTrack.houghSpace));
127 const std::vector<unsigned short>& relatedHits = peak.hits;
128 std::array<unsigned short, 9> tsVector{0};
129 for (
unsigned short hitIdx = 0; hitIdx < relatedHits.size(); ++hitIdx) {
130 ndFinderTrack->addRelationTo(m_trackSegmentHits[relatedHits[hitIdx]]);
131 unsigned short superLayer = m_trackSegmentHits[relatedHits[hitIdx]]->getISuperLayer();
132 tsVector[superLayer] = m_trackSegmentHits[relatedHits[hitIdx]]->getLeftRight();
134 ndFinderTrack->setTSVector(tsVector);