From 5dbb3b2daed6af2f7e7ff7b90295457bc411f143 Mon Sep 17 00:00:00 2001 From: shahoian Date: Fri, 17 Jan 2025 13:27:24 +0100 Subject: [PATCH 1/2] Define/use unbiased GPUTPCGeometry LinearY2PadC and LinearPad2YC --- GPU/GPUTracking/DataTypes/GPUTPCGeometry.h | 12 ++++++++++++ GPU/GPUTracking/Merger/GPUTPCGMTrackParam.cxx | 2 +- .../SliceTracker/GPUTPCTrackletConstructor.cxx | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/GPU/GPUTracking/DataTypes/GPUTPCGeometry.h b/GPU/GPUTracking/DataTypes/GPUTPCGeometry.h index 515905abe48b5..de47d69764133 100644 --- a/GPU/GPUTracking/DataTypes/GPUTPCGeometry.h +++ b/GPU/GPUTracking/DataTypes/GPUTPCGeometry.h @@ -127,6 +127,12 @@ class GPUTPCGeometry // TODO: Make values constexpr return (slice >= GPUCA_NSLICES / 2) ? -u : u; } + GPUd() float LinearPad2YC(int32_t slice, int32_t row, float pad) const + { + const float u = (pad - 0.5f * (mNPads[row] - 1)) * PadWidth(row); + return (slice >= GPUCA_NSLICES / 2) ? -u : u; + } + GPUd() static float LinearTime2Z(int32_t slice, float time) { const float v = 250.f - time * FACTOR_T2Z; // Used in compression, must remain constant at 250cm! @@ -139,6 +145,12 @@ class GPUTPCGeometry // TODO: Make values constexpr return u / PadWidth(row) + 0.5f * mNPads[row]; } + GPUd() float LinearY2PadC(int32_t slice, int32_t row, float y) const + { + const float u = (slice >= GPUCA_NSLICES / 2) ? -y : y; + return u / PadWidth(row) + 0.5f * (mNPads[row] - 1); // unbiased version of LinearY2Pad + } + GPUd() static float LinearZ2Time(int32_t slice, float z) { const float v = (slice >= GPUCA_NSLICES / 2) ? -z : z; diff --git a/GPU/GPUTracking/Merger/GPUTPCGMTrackParam.cxx b/GPU/GPUTracking/Merger/GPUTPCGMTrackParam.cxx index 74cc12e9bbd9a..d22c188ec8912 100644 --- a/GPU/GPUTracking/Merger/GPUTPCGMTrackParam.cxx +++ b/GPU/GPUTracking/Merger/GPUTPCGMTrackParam.cxx @@ -669,7 +669,7 @@ GPUd() bool GPUTPCGMTrackParam::AttachClustersPropagate(const GPUTPCGMMerger* GP if (dodEdx && iRow + step == toRow) { float yUncorrected, zUncorrected; Merger->GetConstantMem()->calibObjects.fastTransformHelper->InverseTransformYZtoNominalYZ(slice, iRow, mP[0], mP[1], yUncorrected, zUncorrected); - uint32_t pad = CAMath::Float2UIntRn(Merger->Param().tpcGeometry.LinearY2Pad(slice, iRow, yUncorrected)); + uint32_t pad = CAMath::Float2UIntRn(Merger->Param().tpcGeometry.LinearY2PadC(slice, iRow, yUncorrected)); if (pad >= Merger->Param().tpcGeometry.NPads(iRow) || (Merger->GetConstantMem()->calibObjects.dEdxCalibContainer && Merger->GetConstantMem()->calibObjects.dEdxCalibContainer->isDead(slice, iRow, pad))) { dodEdx = false; } diff --git a/GPU/GPUTracking/SliceTracker/GPUTPCTrackletConstructor.cxx b/GPU/GPUTracking/SliceTracker/GPUTPCTrackletConstructor.cxx index 05e75232297a3..34d920f117b4d 100644 --- a/GPU/GPUTracking/SliceTracker/GPUTPCTrackletConstructor.cxx +++ b/GPU/GPUTracking/SliceTracker/GPUTPCTrackletConstructor.cxx @@ -393,7 +393,7 @@ GPUdic(2, 1) void GPUTPCTrackletConstructor::UpdateTracklet(int32_t /*nBlocks*/, (void)found; #if defined(GPUCA_HAVE_O2HEADERS) && !defined(__OPENCL1__) if (!found && tracker.GetConstantMem()->calibObjects.dEdxCalibContainer) { - uint32_t pad = CAMath::Float2UIntRn(tracker.Param().tpcGeometry.LinearY2Pad(tracker.ISlice(), iRow, yUncorrected)); + uint32_t pad = CAMath::Float2UIntRn(tracker.Param().tpcGeometry.LinearY2PadC(tracker.ISlice(), iRow, yUncorrected)); if (pad < tracker.Param().tpcGeometry.NPads(iRow) && tracker.GetConstantMem()->calibObjects.dEdxCalibContainer->isDead(tracker.ISlice(), iRow, pad)) { r.mNMissed--; rowHit = CALINK_DEAD_CHANNEL; From 95564cc327217559699681962cf690e420e832c9 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Fri, 17 Jan 2025 15:11:16 +0000 Subject: [PATCH 2/2] Please consider the following formatting changes --- GPU/GPUTracking/DataTypes/GPUTPCGeometry.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GPU/GPUTracking/DataTypes/GPUTPCGeometry.h b/GPU/GPUTracking/DataTypes/GPUTPCGeometry.h index de47d69764133..43a6f8cc8b889 100644 --- a/GPU/GPUTracking/DataTypes/GPUTPCGeometry.h +++ b/GPU/GPUTracking/DataTypes/GPUTPCGeometry.h @@ -148,7 +148,7 @@ class GPUTPCGeometry // TODO: Make values constexpr GPUd() float LinearY2PadC(int32_t slice, int32_t row, float y) const { const float u = (slice >= GPUCA_NSLICES / 2) ? -y : y; - return u / PadWidth(row) + 0.5f * (mNPads[row] - 1); // unbiased version of LinearY2Pad + return u / PadWidth(row) + 0.5f * (mNPads[row] - 1); // unbiased version of LinearY2Pad } GPUd() static float LinearZ2Time(int32_t slice, float z)