diff --git a/GPU/GPUTracking/Base/GPUReconstruction.cxx b/GPU/GPUTracking/Base/GPUReconstruction.cxx index e3f39012b2044..7bcce9d14ac47 100644 --- a/GPU/GPUTracking/Base/GPUReconstruction.cxx +++ b/GPU/GPUTracking/Base/GPUReconstruction.cxx @@ -302,7 +302,7 @@ int GPUReconstruction::InitPhaseBeforeDevice() if (mProcessingSettings.debugLevel > 3 || !mProcessingSettings.fullMergerOnGPU || mProcessingSettings.deterministicGPUReconstruction) { mProcessingSettings.delayedOutput = false; } - if (!mProcessingSettings.fullMergerOnGPU && GetRecoStepsGPU() & RecoStep::TPCMerging) { + if (!mProcessingSettings.fullMergerOnGPU && (GetRecoStepsGPU() & RecoStep::TPCMerging)) { param().rec.tpc.looperInterpolationInExtraPass = 0; if (param().rec.tpc.retryRefit == 1) { param().rec.tpc.retryRefit = 2; diff --git a/GPU/GPUTracking/Definitions/GPUSettingsList.h b/GPU/GPUTracking/Definitions/GPUSettingsList.h index 3fed4a6fba5e4..c24fef1b91365 100644 --- a/GPU/GPUTracking/Definitions/GPUSettingsList.h +++ b/GPU/GPUTracking/Definitions/GPUSettingsList.h @@ -134,7 +134,7 @@ AddOptionRTC(dropLoopers, unsigned char, 0, "", 0, "Drop looping tracks starting AddOptionRTC(mergerCovSource, unsigned char, 2, "", 0, "Method to obtain covariance in track merger: 0 = simple filterErrors method, 1 = use cov from track following, 2 = refit (default)") AddOptionRTC(mergerInterpolateErrors, unsigned char, 1, "", 0, "Use interpolation instead of extrapolation for chi2 based cluster rejection") AddOptionRTC(mergeCE, unsigned char, 1, "", 0, "Merge tracks accross the central electrode") -AddOptionRTC(retryRefit, char, 1, "", 0, "Retry refit with seeding errors and without cluster rejection when fit fails") +AddOptionRTC(retryRefit, char, 1, "", 0, "Retry refit with seeding errors and without cluster rejection when fit fails (=2 means retry in same kernel, =1 for separate kernel") AddOptionRTC(looperInterpolationInExtraPass, char, -1, "", 0, "Perform looper interpolation in an extra pass") AddOptionRTC(mergerReadFromTrackerDirectly, char, 1, "", 0, "Forward data directly from tracker to merger on GPU") AddOptionRTC(dropSecondaryLegsInOutput, char, 1, "", 0, "Do not store secondary legs of looping track in TrackTPC") diff --git a/GPU/GPUTracking/Merger/GPUTPCGMMergerDump.cxx b/GPU/GPUTracking/Merger/GPUTPCGMMergerDump.cxx index 90097d0db959a..80dc82b1ea8a6 100644 --- a/GPU/GPUTracking/Merger/GPUTPCGMMergerDump.cxx +++ b/GPU/GPUTracking/Merger/GPUTPCGMMergerDump.cxx @@ -199,6 +199,9 @@ void GPUTPCGMMerger::DumpRefit(std::ostream& out) const out << "\nTPC Merger Refit\n"; for (unsigned int i = 0; i < mMemory->nOutputTracks; i++) { const auto& trk = mOutputTracks[i]; + if (trk.NClusters() == 0) { + continue; + } const auto& p = trk.GetParam(); const auto& po = trk.OuterParam(); out << " Track " << i << ": OK " << trk.OK() << " Alpha " << trk.GetAlpha() << " X " << p.GetX() << " offset " << p.GetTZOffset() << " Y " << p.GetY() << " Z " << p.GetZ() << " SPhi " << p.GetSinPhi() << " Tgl " << p.GetDzDs() << " QPt " << p.GetQPt() << " NCl " << trk.NClusters() << " / " << trk.NClustersFitted() << " Cov " << p.GetErr2Y() << "/" << p.GetErr2Z() @@ -215,6 +218,9 @@ void GPUTPCGMMerger::DumpFinal(std::ostream& out) const out << "\nTPC Merger Finalized\n"; for (unsigned int j = 0; j < mMemory->nOutputTracks; j++) { const auto& trk = mOutputTracks[j]; + if (trk.NClusters() == 0) { + continue; + } out << " Track " << j << ": "; for (unsigned int i = trk.FirstClusterRef(); i < trk.FirstClusterRef() + trk.NClusters(); i++) { if (mClusters[i].state != 0) {