112 std::vector<RecoTrack*> allCDCTracks;
114 for (
auto* cdcHit : cdcHitList) {
117 for (
unsigned int index = 0; index < relatedCDCTracks.
size(); ++index) {
118 RecoTrack* relatedCDCTrack = relatedCDCTracks[index];
119 if (std::find(allCDCTracks.begin(), allCDCTracks.end(), relatedCDCTrack) == allCDCTracks.end()) {
120 allCDCTracks.push_back(relatedCDCTrack);
128 for (
RecoTrack* foundCDCTrack : allCDCTracks) {
129 const auto& foundCDCTrackHitList = foundCDCTrack->getCDCHitList();
130 if (foundCDCTrackHitList.size() == cdcHitList.size() and
131 std::equal(foundCDCTrackHitList.begin(), foundCDCTrackHitList.end(), cdcHitList.begin())) {
132 cdcRecoTrackPtr = foundCDCTrack;
138 std::vector<RecoTrack*> allSVDTracks;
140 for (
auto* svdHit : svdHitList) {
142 for (
unsigned int index = 0; index < relatedSVDTracks.
size(); ++index) {
143 RecoTrack* relatedSVDTrack = relatedSVDTracks[index];
144 if (std::find(allSVDTracks.begin(), allSVDTracks.end(), relatedSVDTrack) == allSVDTracks.end()) {
145 allSVDTracks.push_back(relatedSVDTrack);
153 RecoTrack* svdRecoTrackBeforePtr =
nullptr;
155 for (
RecoTrack* foundSVDTrack : allSVDTracks) {
156 const auto& foundSVDTrackHitList = foundSVDTrack->getSVDHitList();
157 if (foundSVDTrackHitList.size() != svdHitList.size())
159 if (std::equal(foundSVDTrackHitList.begin(), foundSVDTrackHitList.end(), svdHitList.begin())) {
160 svdRecoTrackPtr = foundSVDTrack;
164 if (svdRecoTrackPtr ==
nullptr) {
166 for (
RecoTrack* foundSVDTrackBefore : allSVDTracks) {
167 const auto& foundSVDTrackBeforeHitList = foundSVDTrackBefore->getSVDHitList();
168 auto sizeBefore = foundSVDTrackBeforeHitList.size();
169 if (sizeBefore >= svdHitList.size())
171 if (not std::equal(foundSVDTrackBeforeHitList.begin(), foundSVDTrackBeforeHitList.end(), svdHitList.begin()))
173 auto rest = svdHitList.size() - sizeBefore;
174 for (
RecoTrack* foundSVDTrackAfter : allSVDTracks) {
175 const auto& foundSVDTrackAfterHitList = foundSVDTrackAfter->getSVDHitList();
176 if (foundSVDTrackBefore == foundSVDTrackAfter)
178 if (foundSVDTrackAfterHitList.size() != rest)
180 if (std::equal(foundSVDTrackAfterHitList.begin(), foundSVDTrackAfterHitList.end(), svdHitList.begin() + sizeBefore)) {
181 svdRecoTrackPtr = foundSVDTrackAfter;
182 svdRecoTrackBeforePtr = foundSVDTrackBefore;
186 if (svdRecoTrackBeforePtr)
192 if (svdRecoTrackPtr) {
195 std::vector<SpacePoint const*> sortedHits;
205 if (svdRecoTrackBeforePtr) {
208 std::vector<SpacePoint const*> sortedHitsBefore;
210 sortedHitsBefore = spacePointTrackCandBefore->
getSortedHits();
224 const float qualityIndicator =
m_mvaExpert->predict();
226 recoTrack.setQualityIndicator(qualityIndicator);