Skip to content

Commit 636e88c

Browse files
committed
GPU TPC: Keep merged track legs as individual track segments during refit
1 parent b7fb1cd commit 636e88c

File tree

8 files changed

+284
-338
lines changed

8 files changed

+284
-338
lines changed

GPU/GPUTracking/DataTypes/GPUMemorySizeScalers.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ struct GPUMemorySizeScalers {
4747
double tpcSectorTracksPerHit = 0.02;
4848
double tpcSectorTrackHitsPerHit = 0.8;
4949
double tpcSectorTrackHitsPerHitWithRejection = 1.0;
50-
double tpcMergedTrackPerSectorTrack = 0.9;
50+
double tpcMergedTrackPerSectorTrack = 1.0;
5151
double tpcMergedTrackHitPerSectorHit = 1.1;
5252
size_t tpcCompressedUnattachedHitsBase1024[3] = {900, 900, 500}; // No ratio, but integer fraction of 1024 for exact computation
5353

GPU/GPUTracking/Definitions/GPUDefConstantsAndSettings.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
#define GPUCA_TRACKLET_SELECTOR_MIN_HITS_B5(QPTB5) (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
3434

35-
#define GPUCA_MERGER_MAX_TRACK_CLUSTERS 1000 // Maximum number of clusters a track may have after merging
35+
#define GPUCA_MERGER_MAX_TRACK_CLUSTERS 512 // Maximum number of clusters a track may have after merging
3636

3737
#define GPUCA_MAXN 40 // Maximum number of neighbor hits to consider in one row in neightbors finder
3838
#define GPUCA_MIN_TRACK_PTB5_DEFAULT 0.010f // Default setting for minimum track Pt at some places (at B=0.5T)

GPU/GPUTracking/Merger/GPUTPCGMMergedTrack.h

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,18 @@ class GPUTPCGMMergedTrack
4545
GPUd() bool Looper() const { return mFlags & 0x02; }
4646
GPUd() bool CSide() const { return mFlags & 0x04; }
4747
GPUd() bool CCE() const { return mFlags & 0x08; }
48-
GPUd() bool MergedLooper() const { return mFlags & 0x10; }
48+
GPUd() bool MergedLooperUnconnected() const { return mFlags & 0x10; }
49+
GPUd() bool MergedLooperConnected() const { return mFlags & 0x20; }
50+
GPUd() bool MergedLooper() const { return mFlags & 0x30; }
51+
GPUd() int32_t PrevSegment() const { return mPrevSegment; }
52+
GPUd() uint8_t Flags() const { return mFlags; }
4953

5054
GPUd() void SetNClusters(int32_t v) { mNClusters = v; }
5155
GPUd() void SetNClustersFitted(int32_t v) { mNClustersFitted = v; }
5256
GPUd() void SetFirstClusterRef(int32_t v) { mFirstClusterRef = v; }
5357
GPUd() void SetParam(const GPUTPCGMTrackParam& v) { mParam = v; }
5458
GPUd() void SetAlpha(float v) { mAlpha = v; }
59+
GPUd() void SetPrevSegment(int32_t v) { mPrevSegment = v; }
5560
GPUd() void SetOK(bool v)
5661
{
5762
if (v) {
@@ -84,18 +89,23 @@ class GPUTPCGMMergedTrack
8489
mFlags &= 0xF7;
8590
}
8691
}
87-
GPUd() void SetMergedLooper(bool v)
92+
GPUd() void SetMergedLooperUnconnected(bool v)
8893
{
8994
if (v) {
9095
mFlags |= 0x10;
9196
} else {
9297
mFlags &= 0xEF;
9398
}
9499
}
100+
GPUd() void SetMergedLooperConnected(bool v)
101+
{
102+
if (v) {
103+
mFlags |= 0x20;
104+
} else {
105+
mFlags &= 0xDF;
106+
}
107+
}
95108
GPUd() void SetFlags(uint8_t v) { mFlags = v; }
96-
GPUd() void SetLegs(uint8_t v) { mLegs = v; }
97-
GPUd() uint8_t Legs() const { return mLegs; }
98-
GPUd() uint8_t Flags() const { return mFlags; }
99109

100110
GPUd() const gputpcgmmergertypes::GPUTPCOuterParam& OuterParam() const { return mOuterParam; }
101111
GPUd() gputpcgmmergertypes::GPUTPCOuterParam& OuterParam() { return mOuterParam; }
@@ -106,11 +116,11 @@ class GPUTPCGMMergedTrack
106116

107117
float mAlpha; //* alpha angle
108118
uint32_t mFirstClusterRef; //* index of the first track cluster in corresponding cluster arrays
119+
int32_t mPrevSegment; //* next segment in case of looping track
109120
// TODO: Change to 8 bit
110121
uint32_t mNClusters; //* number of track clusters
111122
uint32_t mNClustersFitted; //* number of clusters used in fit
112123
uint8_t mFlags;
113-
uint8_t mLegs;
114124

115125
#if !defined(GPUCA_STANDALONE)
116126
ClassDefNV(GPUTPCGMMergedTrack, 0);

0 commit comments

Comments
 (0)