Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
9225954
GPU TPC: Remove option to retry refit if cluster rejection breaks the…
davidrohr Sep 4, 2025
13d32d2
GPU TPC: Add possibility to run last way of TPC fit in separate kerne…
davidrohr Sep 4, 2025
92b5997
GPU TPC: Search hit closest to interpolated point in track rebuilding
davidrohr Sep 23, 2025
cffcc9e
GPU TPC: Fix index for hit interpolation in rows with multiple clusters
davidrohr Oct 5, 2025
411082b
GPU TPC: Implement ambiguity solving for rebuild tracks cluster assoc…
davidrohr Sep 29, 2025
05f5e44
GPU: Additional debug dumps
davidrohr Feb 19, 2026
d9dd5a1
GPU TPC: Split TPC Merger Fit() into multiple functions
davidrohr Oct 6, 2025
0781fc1
GPU: Add looperFollowMode option
davidrohr Oct 23, 2025
9decb19
GPU: simplifaction, refactoring and some minor improvements
davidrohr Oct 23, 2025
859fab9
GPU TPC: Refactor cluster merging
davidrohr Oct 27, 2025
f21965a
GPU: Change indexing of interpolated hit temporary data
davidrohr Oct 24, 2025
4dc0585
GPU: Move some functionality to CAMath
davidrohr Oct 27, 2025
65998d1
GPU TPC: Store track position for interpolation also when not updatin…
davidrohr Oct 29, 2025
a5f6035
GPU TPC: Extract CE crossing handling in function, and apply before s…
davidrohr Oct 30, 2025
d275257
GPU TPC: If value from other side of interpolation not stored, use on…
davidrohr Oct 30, 2025
7fb7431
GPU TPC: Mark clusters of rebuilt track as high incli when interpolat…
davidrohr Oct 30, 2025
bf97683
GPU TPC: Pick up best hit from interpolation only, if current positio…
davidrohr Oct 30, 2025
2c7f246
GPU TPC: Interpolate missing pad rows when rebuilding track
davidrohr Oct 31, 2025
253e977
Revert "GPU TPC: Remove option to retry refit if cluster rejection br…
davidrohr Oct 31, 2025
28dc47e
GPU TPC: Relax chi2cut for single-pad clusters
davidrohr Nov 2, 2025
d8bcfd4
GPU TPC: Clean up and fix resetT0 code
davidrohr Nov 2, 2025
e1f3404
GPU TPC: Don't break for high sinPhi if only the linearization model …
davidrohr Nov 2, 2025
2fa0c98
GPU: Add option to steer which attachment steps to run during rebuild
davidrohr Nov 18, 2025
bc83277
GPU TPC: Extrapolate track inward and outward when rebuilding
davidrohr Nov 2, 2025
93d580d
GPU: Add debug option to create temporary MC labels for collected mer…
davidrohr Dec 4, 2025
c00a4e0
GPU TPC: Correctly handle rowGap and fit Failures when interpolating …
davidrohr Nov 10, 2026
34dbef1
GPU TPC: Improve track extrapolation for better efficiency / less fak…
davidrohr Nov 10, 2026
4916a5b
GPU TPC: Let fallback clusters compete for ambiguity solving as all o…
davidrohr Nov 11, 2026
627ea9e
GPU TPC: Add debug option to dump merged track ncl to text file
davidrohr Nov 11, 2026
3154cde
GPU TPC: Continuous and less strict (during refit) NCl cut for given Pt
davidrohr Nov 12, 2026
1226e8e
GPU GPUCA_CADEBUG: add possibility to have a condition for the debug …
davidrohr Nov 12, 2026
325d8e8
GPU TPC: Make extrapolation more robust by stopping early when there …
davidrohr Nov 12, 2026
4fca10b
GPU TPC: revert state after extrapolation in case of problems
davidrohr Nov 12, 2026
8c95b22
GPU TPC: Fix some cases of fit failues after track rebuild (bad initi…
davidrohr Nov 12, 2026
fcdecb0
GPU TPC: Fix deltaTimeFwd/deltaTimeBwd after track rebuild
davidrohr Nov 12, 2026
499c633
GPU TPC: Fix storing OuterParam after implementing track rebuild
davidrohr Nov 13, 2026
e830c60
GPU TPC: Option to run interpolation-rejection after track rebuild
davidrohr Nov 13, 2026
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
1 change: 1 addition & 0 deletions GPU/Common/GPUCommonMath.h
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ class GPUCommonMath
GPUd() constexpr static double Copysignd(double x, double y);
GPUd() constexpr static float TwoPi() { return 6.2831853f; }
GPUd() constexpr static float Pi() { return 3.1415927f; }
GPUd() constexpr static float Deg2Rad() { return Pi() / 180.f; }
GPUd() constexpr static float Round(float x);
GPUd() constexpr static float Floor(float x) { return GPUCA_CHOICE(floorf(x), floorf(x), floor(x)); }
GPUd() static uint32_t Float2UIntReint(const float& x);
Expand Down
1 change: 1 addition & 0 deletions GPU/GPUTracking/Base/GPUParam.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ void GPUParam::UpdateSettings(const GPUSettingsGRP* g, const GPUSettingsProcessi
if (d) {
rec.dyn = *d;
}
rec.tpc.nWays = 1 + 2 * ((rec.tpc.mergerInitial3wayFit > 0) + (rec.tpc.mergerInterpolateErrors > 0) + (rec.tpc.rebuildTrackInFit > 0));
}

void GPUParam::UpdateBzOnly(float newSolenoidBz, bool assumeConstantBz)
Expand Down
4 changes: 2 additions & 2 deletions GPU/GPUTracking/Base/GPUParam.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@ struct GPUParam : public internal::GPUParam_t<GPUSettingsRec, GPUSettingsParam>
void UpdateRun3ClusterErrors(const float* yErrorParam, const float* zErrorParam);
#endif

GPUd() constexpr uint32_t tpcMinHitsB5(float qPtB5) const { return CAMath::Abs(qPtB5) > 10 ? 10 : (CAMath::Abs(qPtB5) > 5 ? 15 : 29); } // Minimum hits should depend on Pt, low Pt tracks can have few hits. 29 Hits default, 15 for < 200 mev, 10 for < 100 mev
GPUd() constexpr float Alpha(int32_t iSector) const // TODO: Check if this is faster, or the lookup from GPUTPCGeometry
GPUd() constexpr uint32_t tpcMinHitsB5Abs(float qPtB5) const { return qPtB5 > 10.f ? 10 : (qPtB5 > 5.f ? (uint32_t)(20 - qPtB5) : (qPtB5 > 3.6f ? (uint32_t)(65 - 10.f * qPtB5) : 29)); }
GPUd() constexpr float Alpha(int32_t iSector) const // TODO: Check if this is faster, or the lookup from GPUTPCGeometry
{
if (iSector >= (int32_t)o2::tpc::constants::MAXSECTOR / 2) {
iSector -= o2::tpc::constants::MAXSECTOR / 2;
Expand Down
2 changes: 1 addition & 1 deletion GPU/GPUTracking/Base/GPUReconstruction.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ int32_t GPUReconstruction::InitPhaseBeforeDevice()
if (GetProcessingSettings().deterministicGPUReconstruction && GetProcessingSettings().debugLevel >= 6) {
mProcessingSettings->nTPCClustererLanes = 1;
}
if (GetProcessingSettings().createO2Output > 1 && GetProcessingSettings().runQA && GetProcessingSettings().qcRunFraction == 100.f) {
if (GetProcessingSettings().createO2Output > 1 && ((GetProcessingSettings().runQA && GetProcessingSettings().qcRunFraction == 100.f) || GetProcessingSettings().debug.mergerDumpTrackNCl)) {
mProcessingSettings->createO2Output = 1;
}
if (!GetProcessingSettings().createO2Output || !IsGPU()) {
Expand Down
4 changes: 2 additions & 2 deletions GPU/GPUTracking/Base/GPUReconstructionCPU.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -216,10 +216,10 @@ int32_t GPUReconstructionCPU::ExitDevice()
int32_t GPUReconstructionCPU::RunChains()
{
mMemoryScalers->temporaryFactor = 1.;
if (GetProcessingSettings().memoryScalingFuzz) {
if (GetProcessingSettings().debug.memoryScalingFuzz) {
static std::mt19937 rng;
static std::uniform_int_distribution<uint64_t> dist(0, 1000000);
uint64_t fuzzFactor = GetProcessingSettings().memoryScalingFuzz == 1 ? dist(rng) : GetProcessingSettings().memoryScalingFuzz;
uint64_t fuzzFactor = GetProcessingSettings().debug.memoryScalingFuzz == 1 ? dist(rng) : GetProcessingSettings().debug.memoryScalingFuzz;
GPUInfo("Fuzzing memory scaling factor with %lu", fuzzFactor);
mMemoryScalers->fuzzScalingFactor(fuzzFactor);
}
Expand Down
6 changes: 6 additions & 0 deletions GPU/GPUTracking/DataTypes/GPUTPCGeometry.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@
#define GPUTPCGEOMETRY_H

#include "GPUCommonDef.h"
#include "GPUCommonMath.h"
#include "DataFormatsTPC/Constants.h"
#ifndef GPUCA_GPUCODE_DEVICE
#include <cmath>
#endif

namespace o2::gpu
{
Expand Down Expand Up @@ -174,6 +178,8 @@ class GPUTPCGeometry
const float v = (sector >= NSECTORS / 2) ? -z : z;
return (250.f - v) * FACTOR_Z2T; // Used in compression, must remain constant at 250cm
}

GPUd() static constexpr float kSectAngle() { return 2 * CAMath::Pi() / 18.f; }
};

} // namespace o2::gpu
Expand Down
22 changes: 18 additions & 4 deletions GPU/GPUTracking/Definitions/GPUDef.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,16 +70,30 @@
#ifdef CADEBUG
#undef CADEBUG
#endif
#if GPUCA_CADEBUG == 1 && !defined(GPUCA_GPUCODE)
#define CADEBUG(...) __VA_ARGS__
#define CADEBUG2(cmd, ...) {__VA_ARGS__; cmd;}
#define GPUCA_CADEBUG_ENABLED
#ifdef CADEBUG2
#undef CADEBUG2
#endif
#ifdef CADEBUG3
#undef CADEBUG3
#endif
#if GPUCA_CADEBUG >= 1 && !defined(GPUCA_GPUCODE)
#if GPUCA_CADEBUG >= 2
#define CADEBUG(...) if (CADEBUG_CONDITION) {__VA_ARGS__;}
#define CADEBUG2(cmd, ...) if (CADEBUG_CONDITION) {__VA_ARGS__; cmd;}
#define GPUCA_CADEBUG_ENABLED 2
#else
#define CADEBUG(...) __VA_ARGS__
#define CADEBUG2(cmd, ...) {__VA_ARGS__; cmd;}
#define GPUCA_CADEBUG_ENABLED 1
#endif
#define CADEBUG3(...) __VA_ARGS__
#endif
#undef GPUCA_CADEBUG
#endif

#ifndef CADEBUG
#define CADEBUG(...)
#define CADEBUG2(cmd, ...) {cmd;}
#define CADEBUG3(...)
#endif
// clang-format on
Loading
Loading