Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion HeterogeneousCore/AlpakaMath/interface/deltaPhi.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ namespace cms::alpakatools {

template <alpaka::concepts::Acc TAcc, typename T>
ALPAKA_FN_HOST_ACC inline T deltaPhi(TAcc const& acc, T x1, T y1, T x2, T y2) {
return reducePhiRange(acc, alpaka::math::atan2(acc, -y2, -x2) - alpaka::math::atan2(acc, -y1, -x1));
return alpaka::math::atan2(acc, x1 * y2 - x2 * y1, x1 * x2 + y1 * y2);
}

template <alpaka::concepts::Acc TAcc, typename T>
Expand Down
1 change: 1 addition & 0 deletions RecoTracker/LSTCore/interface/alpaka/Common.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst {
HOST_DEVICE_CONSTANT float kStripPSZpitch = 2.4;
HOST_DEVICE_CONSTANT float kStrip2SZpitch = 5.0;
HOST_DEVICE_CONSTANT float kWidth2S = 0.009;
HOST_DEVICE_CONSTANT float kDisks2SMinRadius = 60.0;
HOST_DEVICE_CONSTANT float kWidthPS = 0.01;
HOST_DEVICE_CONSTANT float kPt_betaMax = 7.0;
HOST_DEVICE_CONSTANT int kNTripletThreshold = 1000;
Expand Down
39 changes: 23 additions & 16 deletions RecoTracker/LSTCore/src/alpaka/Kernels.h
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,10 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst {
if (quintuplets.isDup()[ix] & 1)
continue;

bool isPT5_ix = quintuplets.partOfPT5()[ix];
const bool isPT5_ix = quintuplets.partOfPT5()[ix];
const float eta1 = __H2F(quintuplets.eta()[ix]);
const float phi1 = __H2F(quintuplets.phi()[ix]);
const float score_rphisum1 = __H2F(quintuplets.score_rphisum()[ix]);

for (unsigned int jx1 = 0; jx1 < nQuintuplets_lowmod2; jx1++) {
unsigned int jx = quintupletModuleIndices_lowmod2 + jx1;
Expand All @@ -257,31 +260,24 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst {
if (quintuplets.isDup()[jx] & 1)
continue;

bool isPT5_jx = quintuplets.partOfPT5()[jx];
const bool isPT5_jx = quintuplets.partOfPT5()[jx];

if (isPT5_ix && isPT5_jx)
continue;

float eta1 = __H2F(quintuplets.eta()[ix]);
float phi1 = __H2F(quintuplets.phi()[ix]);
float score_rphisum1 = __H2F(quintuplets.score_rphisum()[ix]);

float eta2 = __H2F(quintuplets.eta()[jx]);
float phi2 = __H2F(quintuplets.phi()[jx]);
float score_rphisum2 = __H2F(quintuplets.score_rphisum()[jx]);

float dEta = alpaka::math::abs(acc, eta1 - eta2);
float dPhi = cms::alpakatools::deltaPhi(acc, phi1, phi2);

const float eta2 = __H2F(quintuplets.eta()[jx]);
const float dEta = alpaka::math::abs(acc, eta1 - eta2);
if (dEta > 0.1f)
continue;

const float phi2 = __H2F(quintuplets.phi()[jx]);
const float dPhi = cms::alpakatools::deltaPhi(acc, phi1, phi2);
if (alpaka::math::abs(acc, dPhi) > 0.1f)
continue;

float dR2 = dEta * dEta + dPhi * dPhi;
int nMatched = checkHitsT5(ix, jx, quintuplets);
const int minNHitsForDup_T5 = 5;
const float dR2 = dEta * dEta + dPhi * dPhi;
const int nMatched = checkHitsT5(ix, jx, quintuplets);
constexpr int minNHitsForDup_T5 = 5;

float d2 = 0.f;
CMS_UNROLL_LOOP
Expand All @@ -291,6 +287,7 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst {
}

if (((dR2 < 0.001f || nMatched >= minNHitsForDup_T5) && d2 < 1.0f) || (dR2 < 0.02f && d2 < 0.1f)) {
const float score_rphisum2 = __H2F(quintuplets.score_rphisum()[jx]);
if (isPT5_jx || score_rphisum1 > score_rphisum2) {
rmQuintupletFromMemory(quintuplets, ix, true);
} else if (isPT5_ix || score_rphisum1 < score_rphisum2) {
Expand Down Expand Up @@ -458,11 +455,21 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE::lst {
ALPAKA_FN_ACC void operator()(Acc2D const& acc, PixelQuintuplets pixelQuintuplets) const {
unsigned int nPixelQuintuplets = pixelQuintuplets.nPixelQuintuplets();
for (unsigned int ix : cms::alpakatools::uniform_elements_y(acc, nPixelQuintuplets)) {
float eta1 = __H2F(pixelQuintuplets.eta()[ix]);
float phi1 = __H2F(pixelQuintuplets.phi()[ix]);
float score1 = __H2F(pixelQuintuplets.score()[ix]);
for (unsigned int jx : cms::alpakatools::uniform_elements_x(acc, nPixelQuintuplets)) {
if (ix == jx)
continue;

float eta2 = __H2F(pixelQuintuplets.eta()[jx]);
if (alpaka::math::abs(acc, eta1 - eta2) > 0.2f)
continue;

float phi2 = __H2F(pixelQuintuplets.phi()[jx]);
if (alpaka::math::abs(acc, cms::alpakatools::deltaPhi(acc, phi1, phi2)) > 0.2f)
continue;

int nMatched = checkHitspT5(ix, jx, pixelQuintuplets);
float score2 = __H2F(pixelQuintuplets.score()[jx]);
const int minNHitsForDup_pT5 = 7;
Expand Down
Loading