102 m_matched = float(recoTrack.getMatchingStatus() == RecoTrack::MatchingStatus::c_matched);
103 m_background = float(recoTrack.getMatchingStatus() == RecoTrack::MatchingStatus::c_background);
104 m_ghost = float(recoTrack.getMatchingStatus() == RecoTrack::MatchingStatus::c_ghost);
105 m_fake = float((recoTrack.getMatchingStatus() == RecoTrack::MatchingStatus::c_background)
106 || (recoTrack.getMatchingStatus() == RecoTrack::MatchingStatus::c_ghost));
107 m_clone = float(recoTrack.getMatchingStatus() == RecoTrack::MatchingStatus::c_clone);
113 std::vector<RecoTrack*> allCDCTracks;
115 for (
auto* cdcHit : cdcHitList) {
118 for (
unsigned int index = 0; index < relatedCDCTracks.
size(); ++index) {
119 RecoTrack* relatedCDCTrack = relatedCDCTracks[index];
120 if (std::find(allCDCTracks.begin(), allCDCTracks.end(), relatedCDCTrack) == allCDCTracks.end()) {
121 allCDCTracks.push_back(relatedCDCTrack);
128 const RecoTrack* cdcRecoTrackPtr =
nullptr;
129 for (
const RecoTrack* foundCDCTrack : allCDCTracks) {
130 const auto& foundCDCTrackHitList = foundCDCTrack->getCDCHitList();
131 if (foundCDCTrackHitList.size() == cdcHitList.size() and
132 std::equal(foundCDCTrackHitList.begin(), foundCDCTrackHitList.end(), cdcHitList.begin())) {
133 cdcRecoTrackPtr = foundCDCTrack;
139 std::vector<RecoTrack*> allSVDTracks;
141 for (
auto* svdHit : svdHitList) {
143 for (
unsigned int index = 0; index < relatedSVDTracks.
size(); ++index) {
144 RecoTrack* relatedSVDTrack = relatedSVDTracks[index];
145 if (std::find(allSVDTracks.begin(), allSVDTracks.end(), relatedSVDTrack) == allSVDTracks.end()) {
146 allSVDTracks.push_back(relatedSVDTrack);
154 RecoTrack* svdRecoTrackBeforePtr =
nullptr;
156 for (
RecoTrack* foundSVDTrack : allSVDTracks) {
157 const auto& foundSVDTrackHitList = foundSVDTrack->getSVDHitList();
158 if (foundSVDTrackHitList.size() != svdHitList.size())
160 if (std::equal(foundSVDTrackHitList.begin(), foundSVDTrackHitList.end(), svdHitList.begin())) {
161 svdRecoTrackPtr = foundSVDTrack;
165 if (svdRecoTrackPtr ==
nullptr) {
167 for (
RecoTrack* foundSVDTrackBefore : allSVDTracks) {
168 const auto& foundSVDTrackBeforeHitList = foundSVDTrackBefore->getSVDHitList();
169 auto sizeBefore = foundSVDTrackBeforeHitList.size();
170 if (sizeBefore >= svdHitList.size())
172 if (not std::equal(foundSVDTrackBeforeHitList.begin(), foundSVDTrackBeforeHitList.end(), svdHitList.begin()))
174 auto rest = svdHitList.size() - sizeBefore;
175 for (
RecoTrack* foundSVDTrackAfter : allSVDTracks) {
176 const auto& foundSVDTrackAfterHitList = foundSVDTrackAfter->getSVDHitList();
177 if (foundSVDTrackBefore == foundSVDTrackAfter)
179 if (foundSVDTrackAfterHitList.size() != rest)
181 if (std::equal(foundSVDTrackAfterHitList.begin(), foundSVDTrackAfterHitList.end(), svdHitList.begin() + sizeBefore)) {
182 svdRecoTrackPtr = foundSVDTrackAfter;
183 svdRecoTrackBeforePtr = foundSVDTrackBefore;
187 if (svdRecoTrackBeforePtr)
193 if (svdRecoTrackPtr) {
196 std::vector<SpacePoint const*> sortedHits;
206 if (svdRecoTrackBeforePtr) {
209 std::vector<SpacePoint const*> sortedHitsBefore;
211 sortedHitsBefore = spacePointTrackCandBefore->
getSortedHits();