From 0532df2dfcd00b772ae79891224716450a2ba7bb Mon Sep 17 00:00:00 2001 From: David Rohr Date: Sat, 13 Jun 2026 11:02:19 +0200 Subject: [PATCH] EXPERIMENTAL! GPU: Process dEdx with full qTot range --- .../Detectors/TPC/include/DataFormatsTPC/ClusterNative.h | 7 +++++++ GPU/GPUTracking/Definitions/GPUDefParametersWrapper.h | 2 +- GPU/GPUTracking/Merger/GPUTPCGMTrackParam.cxx | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/DataFormats/Detectors/TPC/include/DataFormatsTPC/ClusterNative.h b/DataFormats/Detectors/TPC/include/DataFormatsTPC/ClusterNative.h index 7939387bc76a8..a9b7655f875f2 100644 --- a/DataFormats/Detectors/TPC/include/DataFormatsTPC/ClusterNative.h +++ b/DataFormats/Detectors/TPC/include/DataFormatsTPC/ClusterNative.h @@ -87,6 +87,13 @@ struct ClusterNative { } GPUd() uint16_t getQmax() const { return qMax; } + GPUd() float getFullQtot() const + { + if (isSaturated()) [[unlikely]] { + return getSaturatedQtot(); + } + return qTot; + } GPUd() uint16_t getQtot() const { if (isSaturated()) [[unlikely]] { diff --git a/GPU/GPUTracking/Definitions/GPUDefParametersWrapper.h b/GPU/GPUTracking/Definitions/GPUDefParametersWrapper.h index 8a54ab2163eab..f4a3217fc25cf 100644 --- a/GPU/GPUTracking/Definitions/GPUDefParametersWrapper.h +++ b/GPU/GPUTracking/Definitions/GPUDefParametersWrapper.h @@ -37,7 +37,7 @@ namespace o2::gpu #endif #define GPUCA_PAR_MERGER_INTERPOLATION_ERROR_TYPE_A GPUCA_DETERMINISTIC_CODE(float, GPUCA_PAR_MERGER_INTERPOLATION_ERROR_TYPE) -#define GPUCA_PAR_DEDX_STORAGE_TYPE_A GPUCA_DETERMINISTIC_CODE(float, GPUCA_PAR_DEDX_STORAGE_TYPE) +#define GPUCA_PAR_DEDX_STORAGE_TYPE_A float // #define GPUCA_TRACKLET_CONSTRUCTOR_DO_PROFILE // Output Profiling Data for Tracklet Constructor Tracklet Scheduling diff --git a/GPU/GPUTracking/Merger/GPUTPCGMTrackParam.cxx b/GPU/GPUTracking/Merger/GPUTPCGMTrackParam.cxx index 53e7f6c918309..642b7906ca5ad 100644 --- a/GPU/GPUTracking/Merger/GPUTPCGMTrackParam.cxx +++ b/GPU/GPUTracking/Merger/GPUTPCGMTrackParam.cxx @@ -294,7 +294,7 @@ GPUd() bool GPUTPCGMTrackParam::Fit(GPUTPCGMMerger* GPUrestrict() merger, int32_ const int32_t clusterCount = (ihit - ihitMergeFirst) * wayDirection + 1; for (int32_t iTmp = ihitMergeFirst; iTmp != ihit + wayDirection; iTmp += wayDirection) { const ClusterNative& cl = merger->GetConstantMem()->ioPtrs.clustersNative->clustersLinear[cluster.num]; - qtot += cl.qTot; + qtot += cl.getFullQtot(); qmax = CAMath::Max(qmax, cl.qMax); pad += cl.getPad(); relTime += cl.getTime();