Skip to content

Commit

Permalink
Added a fix to comparing duplicate tracks that switches a '<' to a '<…
Browse files Browse the repository at this point in the history
…=' which accounts for duplicate tracks with the same seed rank
  • Loading branch information
Daniel Ally committed Dec 17, 2024
1 parent db1a0a9 commit 997de64
Showing 1 changed file with 3 additions and 38 deletions.
41 changes: 3 additions & 38 deletions L1Trigger/TrackFindingTracklet/src/PurgeDuplicate.cc
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,8 @@ void PurgeDuplicate::execute(std::vector<Track>& outputtracks, unsigned int iSec
}

// Initialize all-false 2D array of tracks being duplicates to other tracks
std::vector<std::vector<bool>> dupMap(numStublists, std::vector<bool>(numStublists, false)); // Ends up symmetric
std::vector<std::vector<bool>> dupMap(numStublists,
std::vector<bool>(numStublists, false)); // Ends up symmetric

//Flag to check if track will be merged into another track
std::vector<bool> mergedTrack(numStublists, false);
Expand Down Expand Up @@ -304,7 +305,7 @@ void PurgeDuplicate::execute(std::vector<Track>& outputtracks, unsigned int iSec
if (nShareLay >= settings_.minIndStubs()) { // For number of shared stub merge condition
dupMap[seedRankIdx[itrk]][seedRankIdx[jtrk]] = true;
dupMap[seedRankIdx[jtrk]][seedRankIdx[itrk]] = true;
if (seedRank[itrk] < seedRank[jtrk]) {
if (seedRank[itrk] <= seedRank[jtrk]) {
mergedTrack[seedRankIdx[jtrk]] = true;
}
}
Expand Down Expand Up @@ -332,42 +333,6 @@ void PurgeDuplicate::execute(std::vector<Track>& outputtracks, unsigned int iSec
trackBinInfo[seedRankIdx[preftrk]] = true;
trackBinInfo[seedRankIdx[rejetrk]] = true;
} else {
// Get a merged stub list
std::vector<const Stub*> newStubList;
std::vector<const Stub*> stubsTrk1 = sortedinputstublists_[preftrk];
std::vector<const Stub*> stubsTrk2 = sortedinputstublists_[rejetrk];
std::vector<unsigned int> stubsTrk1indices;
std::vector<unsigned int> stubsTrk2indices;
for (unsigned int stub1it = 0; stub1it < stubsTrk1.size(); stub1it++) {
stubsTrk1indices.push_back(stubsTrk1[stub1it]->l1tstub()->uniqueIndex());
}
for (unsigned int stub2it = 0; stub2it < stubsTrk2.size(); stub2it++) {
stubsTrk2indices.push_back(stubsTrk2[stub2it]->l1tstub()->uniqueIndex());
}
newStubList = stubsTrk1;
for (unsigned int stub2it = 0; stub2it < stubsTrk2.size(); stub2it++) {
if (find(stubsTrk1indices.begin(), stubsTrk1indices.end(), stubsTrk2indices[stub2it]) ==
stubsTrk1indices.end()) {
newStubList.push_back(stubsTrk2[stub2it]);
}
}
// Overwrite stublist of preferred track with merged list
sortedinputstublists_[preftrk] = newStubList;

std::vector<std::pair<int, int>> newStubidsList;
std::vector<std::pair<int, int>> stubidsTrk1 = sortedmergedstubidslists_[preftrk];
std::vector<std::pair<int, int>> stubidsTrk2 = sortedmergedstubidslists_[rejetrk];
newStubidsList = stubidsTrk1;

for (unsigned int stub2it = 0; stub2it < stubsTrk2.size(); stub2it++) {
if (find(stubsTrk1indices.begin(), stubsTrk1indices.end(), stubsTrk2indices[stub2it]) ==
stubsTrk1indices.end()) {
newStubidsList.push_back(stubidsTrk2[stub2it]);
}
}
// Overwrite stubidslist of preferred track with merged list
sortedmergedstubidslists_[preftrk] = newStubidsList;

// Mark that rejected track has been merged into another track
trackInfo[seedRankIdx[jtrk]].second = true;
}
Expand Down

0 comments on commit 997de64

Please sign in to comment.