Skip to content

Commit e1b7092

Browse files
davidrohrshahor02
authored andcommitted
GPU: Automatically adapt cuts depending on Bz in TPC tracking
1 parent 342ce3b commit e1b7092

File tree

11 files changed

+46
-38
lines changed

11 files changed

+46
-38
lines changed

GPU/GPUTracking/Base/GPUParam.cxx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,11 +134,16 @@ void GPUParam::UpdateGRPSettings(const GPUSettingsGRP* g, const GPUSettingsProce
134134
GPUTPCGMPolynomialFieldManager::GetPolynomialField(par.bzkG, polynomialField);
135135
}
136136
}
137+
par.earlyTpcTransform = rec.tpc.forceEarlyTransform == -1 ? (!par.continuousTracking) : rec.tpc.forceEarlyTransform;
138+
par.qptB5Scaler = CAMath::Abs(par.bzkG) > 0.1 ? CAMath::Abs(par.bzkG) / 5.006680f : 1.f;
137139
if (p) {
138140
par.debugLevel = p->debugLevel;
139141
par.resetTimers = p->resetTimers;
142+
if (p->automaticQPtThresholds) {
143+
rec.maxTrackQPt = 1.f / GPUCA_MIN_TRACK_PTB5_DEFAULT / par.qptB5Scaler;
144+
rec.tpc.rejectQPt = 1.f / GPUCA_MIN_TRACK_PTB5_REJECT / par.qptB5Scaler;
145+
}
140146
}
141-
par.earlyTpcTransform = rec.tpc.forceEarlyTransform == -1 ? (!par.continuousTracking) : rec.tpc.forceEarlyTransform;
142147
}
143148

144149
void GPUParam::SetDefaults(const GPUSettingsGRP* g, const GPUSettingsRec* r, const GPUSettingsProcessing* p, const GPURecoStepConfiguration* w)

GPU/GPUTracking/Definitions/GPUDefConstantsAndSettings.h

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,17 @@
3030
#error Invalid Compile Definitions, need to build for either AliRoot or O2 or Standalone
3131
#endif
3232

33-
#define GPUCA_TRACKLET_SELECTOR_MIN_HITS(QPT) (CAMath::Abs(QPT) > 10 ? 10 : (CAMath::Abs(QPT) > 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
33+
#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

3535
#define GPUCA_GLOBAL_TRACKING_RANGE 45 // Number of rows from the upped/lower limit to search for global track candidates in for
36-
#define GPUCA_GLOBAL_TRACKING_Y_RANGE_UPPER 0.85 // Inner portion of y-range in slice that is not used in searching for global track candidates
37-
#define GPUCA_GLOBAL_TRACKING_Y_RANGE_LOWER 0.85
36+
#define GPUCA_GLOBAL_TRACKING_Y_RANGE_UPPER 0.85f // Inner portion of y-range in slice that is not used in searching for global track candidates
37+
#define GPUCA_GLOBAL_TRACKING_Y_RANGE_LOWER 0.85f
3838
#define GPUCA_GLOBAL_TRACKING_MIN_ROWS 10 // Min num of rows an additional global track must span over
3939
#define GPUCA_GLOBAL_TRACKING_MIN_HITS 8 // Min num of hits for an additional global track
4040

4141
#define GPUCA_MERGER_CE_ROWLIMIT 5 //Distance from first / last row in order to attempt merging accross CE
42-
#define GPUCA_MERGER_LOOPER_QPT_LIMIT 4 // Min Q/Pt to run special looper merging procedure
43-
#define GPUCA_MERGER_HORIZONTAL_DOUBLE_QPT_LIMIT 2 // Min Q/Pt to attempt second horizontal merge between slices after a vertical merge was found
42+
#define GPUCA_MERGER_LOOPER_QPTB5_LIMIT 4 // Min Q/Pt (@B=0.5T) to run special looper merging procedure
43+
#define GPUCA_MERGER_HORIZONTAL_DOUBLE_QPTB5_LIMIT 2 // Min Q/Pt (@B=0.5T) to attempt second horizontal merge between slices after a vertical merge was found
4444
#define GPUCA_MERGER_MAX_TRACK_CLUSTERS 1000 // Maximum number of clusters a track may have after merging
4545

4646
#define GPUCA_Y_FACTOR 4 // Weight of y residual vs z residual in tracklet constructor
@@ -49,7 +49,8 @@
4949
#define GPUCA_TRACKLET_CONSTRUCTOR_MAX_ROW_GAP_SEED 2 // Same, but during fit of seed
5050
#define GPUCA_MERGER_MAXN_MISSED_HARD 10 // Hard limit for number of missed rows in fit / propagation
5151
#define GPUCA_MERGER_COV_LIMIT 1000 // Abort fit when y/z cov exceed the limit
52-
#define GPUCA_MIN_TRACK_PT_DEFAULT 0.010 // Default setting for minimum track Pt at some places
52+
#define GPUCA_MIN_TRACK_PTB5_DEFAULT 0.010 // Default setting for minimum track Pt at some places (at B=0.5T)
53+
#define GPUCA_MIN_TRACK_PTB5_REJECT 0.050f // Default setting for Pt (at B=0.5T) where tracks are rejected
5354

5455
#define GPUCA_MAX_SIN_PHI_LOW 0.99f // Limits for maximum sin phi during fit
5556
#define GPUCA_MAX_SIN_PHI 0.999f // Must be preprocessor define because c++ pre 11 cannot use static constexpr for initializes

GPU/GPUTracking/Definitions/GPUSettingsList.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ BeginNamespace(gpu)
3636
// Settings concerning the reconstruction
3737
// There must be no bool in here, use char, as sizeof(bool) is compiler dependent and fails on GPUs!!!!!!
3838
BeginSubConfig(GPUSettingsRecTPC, tpc, configStandalone.rec, "RECTPC", 0, "Reconstruction settings", rec_tpc)
39-
AddOptionRTC(rejectQPt, float, 1.f / 0.05f, "", 0, "QPt threshold to reject clusters of TPC tracks (Inverse Pt!!!)")
39+
AddOptionRTC(rejectQPt, float, 1.f / GPUCA_MIN_TRACK_PTB5_REJECT, "", 0, "QPt threshold to reject clusters of TPC tracks (Inverse Pt!!!)")
4040
AddOptionRTC(hitPickUpFactor, float, 2., "", 0, "multiplier for the chi2 window for hit pick up procedure")
4141
AddOptionRTC(neighboursSearchArea, float, 3., "", 0, "area in cm for the search of neighbours")
4242
AddOptionRTC(clusterError2CorrectionY, float, 1., "", 0, "correction for the squared cluster error during tracking")
@@ -91,7 +91,7 @@ AddHelp("help", 'h')
9191
EndConfig()
9292

9393
BeginSubConfig(GPUSettingsRec, rec, configStandalone, "REC", 0, "Reconstruction settings", rec)
94-
AddOptionRTC(maxTrackQPt, float, 1.f / GPUCA_MIN_TRACK_PT_DEFAULT, "", 0, "required max Q/Pt (==min Pt) of tracks")
94+
AddOptionRTC(maxTrackQPt, float, 1.f / GPUCA_MIN_TRACK_PTB5_DEFAULT, "", 0, "required max Q/Pt (==min Pt) of tracks")
9595
AddOptionRTC(nonConsecutiveIDs, char, false, "", 0, "Non-consecutive cluster IDs as in HLT, disables features that need access to slice data in TPC merger")
9696
AddOptionRTC(fwdTPCDigitsAsClusters, unsigned char, 0, "", 0, "Forward TPC digits as clusters (if they pass the ZS threshold)")
9797
AddOptionRTC(bz0Pt, unsigned char, 60, "", 0, "Nominal Pt to set when bz = 0 (in 10 MeV)")
@@ -167,6 +167,7 @@ AddOption(clearO2OutputFromGPU, bool, false, "", 0, "Free the GPU memory used fo
167167
AddOption(ignoreNonFatalGPUErrors, bool, false, "", 0, "Continue running after having received non fatal GPU errors, e.g. abort due to overflow")
168168
AddOption(tpcIncreasedMinClustersPerRow, unsigned int, 0, "", 0, "Impose a minimum buffer size for the clustersPerRow during TPC clusterization")
169169
AddOption(noGPUMemoryRegistration, bool, false, "", 0, "Do not register input / output memory for GPU dma transfer")
170+
AddOption(automaticQPtThresholds, bool, true, "", 0, "Update the QPt thresholde at initialization accoding to the B field (i.e. lower to 40% for B=0.2T)")
170171
AddVariable(eventDisplay, GPUCA_NAMESPACE::gpu::GPUDisplayBackend*, nullptr)
171172
AddSubConfig(GPUSettingsProcessingRTC, rtc)
172173
AddHelp("help", 'h')
@@ -424,6 +425,7 @@ AddVariableRTC(dodEdx, char, 0) // Do dEdx computation
424425
AddVariableRTC(earlyTpcTransform, char, 0) // do Early TPC transformation
425426
AddVariableRTC(debugLevel, char, 0) // Debug level
426427
AddVariableRTC(continuousMaxTimeBin, int, 0) // Max time bin for continuous tracking
428+
AddVariableRTC(qptB5Scaler, float, 1.f) // Scaling factor for QPt to B=0.5T
427429
EndConfig()
428430

429431
EndNamespace() // gpu

GPU/GPUTracking/Merger/GPUTPCGMMerger.cxx

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,7 @@ GPUd() void GPUTPCGMMerger::MakeBorderTracks(int nBlocks, int nThreads, int iBlo
679679
continue;
680680
}
681681
if (useOrigTrackParam) { // TODO: Check how far this makes sense with slice track refit
682-
if (CAMath::Abs(track->QPt()) < GPUCA_MERGER_LOOPER_QPT_LIMIT) {
682+
if (CAMath::Abs(track->QPt()) * Param().par.qptB5Scaler < GPUCA_MERGER_LOOPER_QPTB5_LIMIT) {
683683
continue;
684684
}
685685
const GPUTPCGMSliceTrack* trackMin = track;
@@ -697,7 +697,7 @@ GPUd() void GPUTPCGMMerger::MakeBorderTracks(int nBlocks, int nThreads, int iBlo
697697
trackTmp.Set(this, trackMin->OrigTrack(), trackMin->Alpha(), trackMin->Slice());
698698
}
699699
} else {
700-
if (CAMath::Abs(track->QPt()) < GPUCA_MERGER_HORIZONTAL_DOUBLE_QPT_LIMIT) {
700+
if (CAMath::Abs(track->QPt()) * Param().par.qptB5Scaler < GPUCA_MERGER_HORIZONTAL_DOUBLE_QPTB5_LIMIT) {
701701
if (iBorder == 0 && track->NextNeighbour() >= 0) {
702702
continue;
703703
}
@@ -735,7 +735,7 @@ GPUd() void GPUTPCGMMerger::MergeBorderTracks<0>(int nBlocks, int nThreads, int
735735
for (int itr = iBlock * nThreads + iThread; itr < N1; itr += nThreads * nBlocks) {
736736
GPUTPCGMBorderTrack& b = B1[itr];
737737
float d = CAMath::Max(0.5f, 3.5f * CAMath::Sqrt(b.Cov()[1]));
738-
if (CAMath::Abs(b.Par()[4]) >= 20) {
738+
if (CAMath::Abs(b.Par()[4]) * Param().par.qptB5Scaler >= 20) {
739739
d *= 2;
740740
} else if (d > 3) {
741741
d = 3;
@@ -755,7 +755,7 @@ GPUd() void GPUTPCGMMerger::MergeBorderTracks<0>(int nBlocks, int nThreads, int
755755
for (int itr = iBlock * nThreads + iThread; itr < N2; itr += nThreads * nBlocks) {
756756
GPUTPCGMBorderTrack& b = B2[itr];
757757
float d = CAMath::Max(0.5f, 3.5f * CAMath::Sqrt(b.Cov()[1]));
758-
if (CAMath::Abs(b.Par()[4]) >= 20) {
758+
if (CAMath::Abs(b.Par()[4]) * Param().par.qptB5Scaler >= 20) {
759759
d *= 2;
760760
} else if (d > 3) {
761761
d = 3;
@@ -907,15 +907,15 @@ GPUd() void GPUTPCGMMerger::MergeBorderTracks<2>(int nBlocks, int nThreads, int
907907
if (!b1.CheckChi2QPt(b2, factor2k)) {
908908
CADEBUG2(continue, printf("!QPt\n"));
909909
}
910-
float fys = CAMath::Abs(b1.Par()[4]) < 20 ? factor2ys : (2. * factor2ys);
911-
float fzt = CAMath::Abs(b1.Par()[4]) < 20 ? factor2zt : (2. * factor2zt);
910+
float fys = CAMath::Abs(b1.Par()[4]) * Param().par.qptB5Scaler < 20 ? factor2ys : (2. * factor2ys);
911+
float fzt = CAMath::Abs(b1.Par()[4]) * Param().par.qptB5Scaler < 20 ? factor2zt : (2. * factor2zt);
912912
if (!b1.CheckChi2YS(b2, fys)) {
913913
CADEBUG2(continue, printf("!YS\n"));
914914
}
915915
if (!b1.CheckChi2ZT(b2, fzt)) {
916916
CADEBUG2(continue, printf("!ZT\n"));
917917
}
918-
if (CAMath::Abs(b1.Par()[4]) < 20) {
918+
if (CAMath::Abs(b1.Par()[4]) * Param().par.qptB5Scaler < 20) {
919919
if (b2.NClusters() < minNPartHits) {
920920
CADEBUG2(continue, printf("!NCl2\n"));
921921
}
@@ -1176,7 +1176,7 @@ GPUd() void GPUTPCGMMerger::ResolveMergeSlices(GPUResolveSharedMemory& smem, int
11761176
GPUTPCGMSliceTrack* track1Base = track1;
11771177
GPUTPCGMSliceTrack* track2Base = track2;
11781178

1179-
bool sameSegment = CAMath::Abs(track1->NClusters() > track2->NClusters() ? track1->QPt() : track2->QPt()) < 2 || track1->QPt() * track2->QPt() > 0;
1179+
bool sameSegment = CAMath::Abs(track1->NClusters() > track2->NClusters() ? track1->QPt() : track2->QPt()) * Param().par.qptB5Scaler < 2 || track1->QPt() * track2->QPt() > 0;
11801180
// GPUInfo("\nMerge %d with %d - same segment %d", itr, itr2, (int) sameSegment);
11811181
// PrintMergeGraph(track1, std::cout);
11821182
// PrintMergeGraph(track2, std::cout);
@@ -1310,7 +1310,7 @@ GPUd() void GPUTPCGMMerger::MergeCEFill(const GPUTPCGMSliceTrack* track, const G
13101310
}
13111311

13121312
#ifdef GPUCA_MERGER_CE_ROWLIMIT
1313-
if (CAMath::Abs(track->QPt()) < 0.3 && (cls.row < GPUCA_MERGER_CE_ROWLIMIT || cls.row >= GPUCA_ROW_COUNT - GPUCA_MERGER_CE_ROWLIMIT)) {
1313+
if (CAMath::Abs(track->QPt()) * Param().par.qptB5Scaler < 0.3 && (cls.row < GPUCA_MERGER_CE_ROWLIMIT || cls.row >= GPUCA_ROW_COUNT - GPUCA_MERGER_CE_ROWLIMIT)) {
13141314
return;
13151315
}
13161316
#endif
@@ -1363,7 +1363,7 @@ GPUd() void GPUTPCGMMerger::MergeCE(int nBlocks, int nThreads, int iBlock, int i
13631363
if (!trk[1]->OK() || trk[1]->CCE()) {
13641364
continue;
13651365
}
1366-
bool looper = trk[0]->Looper() || trk[1]->Looper() || (trk[0]->GetParam().GetQPt() > 1 && trk[0]->GetParam().GetQPt() * trk[1]->GetParam().GetQPt() < 0);
1366+
bool looper = trk[0]->Looper() || trk[1]->Looper() || (trk[0]->GetParam().GetQPt() * Param().par.qptB5Scaler > 1 && trk[0]->GetParam().GetQPt() * trk[1]->GetParam().GetQPt() < 0);
13671367
if (!looper && trk[0]->GetParam().GetPar(3) * trk[1]->GetParam().GetPar(3) < 0) {
13681368
continue;
13691369
}
@@ -1603,7 +1603,7 @@ GPUd() void GPUTPCGMMerger::CollectMergedTracks(int nBlocks, int nThreads, int i
16031603
}
16041604
nHits += nTrackHits;
16051605
}
1606-
if (nHits < GPUCA_TRACKLET_SELECTOR_MIN_HITS(track.QPt())) {
1606+
if (nHits < GPUCA_TRACKLET_SELECTOR_MIN_HITS_B5(track.QPt() * Param().par.qptB5Scaler)) {
16071607
continue;
16081608
}
16091609

@@ -2014,7 +2014,7 @@ GPUd() void GPUTPCGMMerger::MergeLoopersInit(int nBlocks, int nThreads, int iBlo
20142014
const auto& trk = mOutputTracks[i];
20152015
const auto& p = trk.GetParam();
20162016
const float qptabs = CAMath::Abs(p.GetQPt());
2017-
if (trk.NClusters() && qptabs > 5.f && qptabs <= lowPtThresh) {
2017+
if (trk.NClusters() && qptabs * Param().par.qptB5Scaler > 5.f && qptabs <= lowPtThresh) {
20182018
const int slice = mClusters[trk.FirstClusterRef() + trk.NClusters() - 1].slice;
20192019
const float refz = p.GetZ() + (Param().par.earlyTpcTransform ? p.GetTZOffset() : GetConstantMem()->calibObjects.fastTransform->convVertexTimeToZOffset(slice, p.GetTZOffset(), Param().par.continuousMaxTimeBin)) + (trk.CSide() ? -100 : 100);
20202020
float sinA, cosA;

GPU/GPUTracking/Merger/GPUTPCGMO2Output.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ GPUdii() void GPUTPCGMO2Output::Thread<GPUTPCGMO2Output::prepare>(int nBlocks, i
5353
if (nCl == 0) {
5454
continue;
5555
}
56-
if (merger.Param().rec.tpc.dropSecondaryLegsInOutput && nCl + 2 < GPUCA_TRACKLET_SELECTOR_MIN_HITS(tracks[i].GetParam().GetQPt())) { // Give 2 hits tolerance in the primary leg, compared to the full fit of the looper
56+
if (merger.Param().rec.tpc.dropSecondaryLegsInOutput && nCl + 2 < GPUCA_TRACKLET_SELECTOR_MIN_HITS_B5(tracks[i].GetParam().GetQPt() * merger.Param().par.qptB5Scaler)) { // Give 2 hits tolerance in the primary leg, compared to the full fit of the looper
5757
continue;
5858
}
5959
unsigned int myId = CAMath::AtomicAdd(&merger.Memory()->nO2Tracks, 1u);

GPU/GPUTracking/Merger/GPUTPCGMTrackParam.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ GPUd() bool GPUTPCGMTrackParam::Fit(GPUTPCGMMerger* GPUrestrict() merger, int iT
313313
ihitStart = ihit;
314314
float dy = mP[0] - prop.Model().Y();
315315
float dz = mP[1] - prop.Model().Z();
316-
if (CAMath::Abs(mP[4]) > 10 && --resetT0 <= 0 && CAMath::Abs(mP[2]) < 0.15f && dy * dy + dz * dz > 1) {
316+
if (CAMath::Abs(mP[4]) * merger->Param().par.qptB5Scaler > 10 && --resetT0 <= 0 && CAMath::Abs(mP[2]) < 0.15f && dy * dy + dz * dz > 1) {
317317
CADEBUG(printf("Reinit linearization\n"));
318318
prop.SetTrack(this, prop.GetAlpha());
319319
}
@@ -347,7 +347,7 @@ GPUd() bool GPUTPCGMTrackParam::Fit(GPUTPCGMMerger* GPUrestrict() merger, int iT
347347
}
348348
ConstrainSinPhi();
349349

350-
if (!(N + NTolerated >= GPUCA_TRACKLET_SELECTOR_MIN_HITS(mP[4]) && 2 * NTolerated <= CAMath::Max(10, N) && CheckNumericalQuality(covYYUpd))) {
350+
if (!(N + NTolerated >= GPUCA_TRACKLET_SELECTOR_MIN_HITS_B5(mP[4] * merger->Param().par.qptB5Scaler) && 2 * NTolerated <= CAMath::Max(10, N) && CheckNumericalQuality(covYYUpd))) {
351351
return (false); // TODO: NTolerated should never become that large, check what is going wrong!
352352
}
353353
// TODO: we have looping tracks here with 0 accepted clusters in the primary leg. In that case we should refit the track using only the primary leg.

GPU/GPUTracking/SliceTracker/GPUTPCTrackerComponent.cxx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ const AliHLTComponentDataType GPUTPCDefinitions::fgkTrackletsDataType = AliHLTCo
4444
ClassImp(GPUTPCTrackerComponent);
4545

4646
GPUTPCTrackerComponent::GPUTPCTrackerComponent()
47-
: fSolenoidBz(0), fMinNTrackClusters(-1), fMinTrackPt(GPUCA_MIN_TRACK_PT_DEFAULT), fClusterZCut(500.), mNeighboursSearchArea(0), fClusterErrorCorrectionY(0), fClusterErrorCorrectionZ(0), fBenchmark("CATracker"), fAllowGPU(0), fGPUHelperThreads(-1), fCPUTrackers(0), fGlobalTracking(0), fGPUDeviceNum(-1), fGPUType("CPU"), fGPUStuckProtection(0), fAsync(0), fSearchWindowDZDR(0.), fRec(0), fChain(0), fAsyncProcessor()
47+
: fSolenoidBz(0), fMinNTrackClusters(-1), fMinTrackPt(GPUCA_MIN_TRACK_PTB5_DEFAULT), fClusterZCut(500.), mNeighboursSearchArea(0), fClusterErrorCorrectionY(0), fClusterErrorCorrectionZ(0), fBenchmark("CATracker"), fAllowGPU(0), fGPUHelperThreads(-1), fCPUTrackers(0), fGlobalTracking(0), fGPUDeviceNum(-1), fGPUType("CPU"), fGPUStuckProtection(0), fAsync(0), fSearchWindowDZDR(0.), fRec(0), fChain(0), fAsyncProcessor()
4848
{
4949
// see header file for class documentation
5050
// or
@@ -54,7 +54,7 @@ GPUTPCTrackerComponent::GPUTPCTrackerComponent()
5454
}
5555

5656
GPUTPCTrackerComponent::GPUTPCTrackerComponent(const GPUTPCTrackerComponent&)
57-
: AliHLTProcessor(), fSolenoidBz(0), fMinNTrackClusters(-1), fMinTrackPt(GPUCA_MIN_TRACK_PT_DEFAULT), fClusterZCut(500.), mNeighboursSearchArea(0), fClusterErrorCorrectionY(0), fClusterErrorCorrectionZ(0), fBenchmark("CATracker"), fAllowGPU(0), fGPUHelperThreads(-1), fCPUTrackers(0), fGlobalTracking(0), fGPUDeviceNum(-1), fGPUType("CPU"), fGPUStuckProtection(0), fAsync(0), fSearchWindowDZDR(0.), fRec(0), fChain(0), fAsyncProcessor()
57+
: AliHLTProcessor(), fSolenoidBz(0), fMinNTrackClusters(-1), fMinTrackPt(GPUCA_MIN_TRACK_PTB5_DEFAULT), fClusterZCut(500.), mNeighboursSearchArea(0), fClusterErrorCorrectionY(0), fClusterErrorCorrectionZ(0), fBenchmark("CATracker"), fAllowGPU(0), fGPUHelperThreads(-1), fCPUTrackers(0), fGlobalTracking(0), fGPUDeviceNum(-1), fGPUType("CPU"), fGPUStuckProtection(0), fAsync(0), fSearchWindowDZDR(0.), fRec(0), fChain(0), fAsyncProcessor()
5858
{
5959
// see header file for class documentation
6060
HLTFatal("copy constructor untested");
@@ -121,7 +121,7 @@ void GPUTPCTrackerComponent::SetDefaultConfiguration()
121121

122122
fSolenoidBz = -5.00668;
123123
fMinNTrackClusters = -1;
124-
fMinTrackPt = GPUCA_MIN_TRACK_PT_DEFAULT;
124+
fMinTrackPt = GPUCA_MIN_TRACK_PTB5_DEFAULT;
125125
fClusterZCut = 500.;
126126
mNeighboursSearchArea = 0;
127127
fClusterErrorCorrectionY = 0;

GPU/GPUTracking/SliceTracker/GPUTPCTrackletConstructor.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ MEM_CLASS_PRE23()
5858
GPUd() void GPUTPCTrackletConstructor::StoreTracklet(int /*nBlocks*/, int /*nThreads*/, int /*iBlock*/, int /*iThread*/, GPUsharedref() MEM_LOCAL(GPUSharedMemory) & s, GPUTPCThreadMemory& GPUrestrict() r, GPUconstantref() MEM_LG2(GPUTPCTracker) & GPUrestrict() tracker, MEM_LG3(GPUTPCTrackParam) & GPUrestrict() tParam, calink* rowHits)
5959
{
6060
// reconstruction of tracklets, tracklet store step
61-
if (r.mNHits == 0 || (r.mNHits < GPUCA_TRACKLET_SELECTOR_MIN_HITS(tParam.QPt()) || !CheckCov(tParam) || CAMath::Abs(tParam.GetQPt()) > tracker.Param().rec.maxTrackQPt)) {
61+
if (r.mNHits == 0 || (r.mNHits < GPUCA_TRACKLET_SELECTOR_MIN_HITS_B5(tParam.QPt() * tracker.Param().par.qptB5Scaler) || !CheckCov(tParam) || CAMath::Abs(tParam.GetQPt()) > tracker.Param().rec.maxTrackQPt)) {
6262
return;
6363
}
6464

GPU/GPUTracking/SliceTracker/GPUTPCTrackletSelector.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ GPUdii() void GPUTPCTrackletSelector::Thread<0>(int nBlocks, int nThreads, int i
5858
int gap = 0;
5959
int nShared = 0;
6060
int nHits = 0;
61-
const int minHits = tracker.Param().rec.tpc.minNTrackClusters == -1 ? GPUCA_TRACKLET_SELECTOR_MIN_HITS(tracklet.Param().QPt()) : tracker.Param().rec.tpc.minNTrackClusters;
61+
const int minHits = tracker.Param().rec.tpc.minNTrackClusters == -1 ? GPUCA_TRACKLET_SELECTOR_MIN_HITS_B5(tracklet.Param().QPt() * tracker.Param().par.qptB5Scaler) : tracker.Param().rec.tpc.minNTrackClusters;
6262

6363
GPUCA_UNROLL(, U(1))
6464
for (irow = firstRow; irow <= lastRow && lastRow - irow + nHits >= minHits; irow++) {

GPU/GPUTracking/oldFiles/GPUTPCGMOfflineFitter.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ bool GPUTPCGMOfflineFitter::FitOffline(const GPUTPCGMPolynomialField* field, GPU
260260

261261
t.ConstrainSinPhi();
262262

263-
bool ok1 = N >= GPUCA_TRACKLET_SELECTOR_MIN_HITS(t.GetQPt()) && t.CheckNumericalQuality(covYYUpd);
263+
bool ok1 = N >= GPUCA_TRACKLET_SELECTOR_MIN_HITS_B5(t.GetQPt()) && t.CheckNumericalQuality(covYYUpd);
264264
if (!ok1) {
265265
return (false);
266266
}

0 commit comments

Comments
 (0)