Skip to content

Commit 73d9a50

Browse files
committed
GPU Standalone: Fix corner cases when no TRD data present, TRDRecoParam missing, and address sanitizer warnings
1 parent 5fc295d commit 73d9a50

File tree

3 files changed

+7
-3
lines changed

3 files changed

+7
-3
lines changed

GPU/GPUTracking/Global/GPUChainTracking.cxx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,10 @@ bool GPUChainTracking::ValidateSteps()
215215
GPUError("Input for TRD Tracker missing");
216216
return false;
217217
}
218+
if ((GetRecoSteps() & gpudatatypes::RecoStep::TRDTracking) && (processors()->calibObjects.trdRecoParam == nullptr)) {
219+
GPUError("TRD Reco Parameters are missing");
220+
return false;
221+
}
218222
if ((GetRecoStepsOutputs() & gpudatatypes::InOutType::TPCRaw) || (GetRecoStepsOutputs() & gpudatatypes::InOutType::TRDTracklets)) {
219223
GPUError("TPC Raw / TPC Clusters / TRD Tracklets cannot be output");
220224
return false;

GPU/GPUTracking/display/render/GPUDisplayDraw.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ GPUDisplay::vboList GPUDisplay::DrawSpacePointsTRD(int32_t iSector, int32_t sele
7676
size_t startCount = mVertexBufferStart[iSector].size();
7777
size_t startCountInner = mVertexBuffer[iSector].size();
7878

79-
if (iCol == 0) {
79+
if (iCol == 0 && mCurrentSpacePointsTRD > 0) {
8080
for (uint32_t i = 0; i < mIOPtrs->nTRDTracklets; i++) {
8181
int32_t iSec = trdGeometry()->GetSector(mIOPtrs->trdTracklets[i].GetDetector());
8282
bool draw = iSector == iSec && mGlobalPosTRD[i].w == select;
@@ -195,7 +195,7 @@ void GPUDisplay::DrawClusters(int32_t iSector)
195195
for (int32_t i = 0; i < N_POINTS_TYPE_TPC; i++) {
196196
uint32_t count = vertexCache[iCol][i].size();
197197
mClusterBufferSizeCache[iSector][iCol][i] = std::max(mClusterBufferSizeCache[iSector][iCol][i], count);
198-
memcpy((void*)&mVertexBuffer[iSector][startCountInner], (const void*)vertexCache[iCol][i].data(), count * sizeof(vertexCache[iCol][i][0]));
198+
memcpy((void*)(mVertexBuffer[iSector].data() + startCountInner), (const void*)vertexCache[iCol][i].data(), count * sizeof(vertexCache[iCol][i][0]));
199199
size_t startCount = mVertexBufferStart[iSector].size();
200200
insertVertexList(iSector, startCountInner, startCountInner + count);
201201
startCountInner += count;

GPU/GPUTracking/display/render/GPUDisplayImportEvent.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ void GPUDisplay::DrawGLScene_updateEventData()
5555
mGlobalPos = mGlobalPosPtr.get();
5656
}
5757

58-
mCurrentSpacePointsTRD = mIOPtrs->nTRDTracklets;
58+
mCurrentSpacePointsTRD = mIOPtrs->trdSpacePoints ? mIOPtrs->nTRDTracklets : 0;
5959
if (mCurrentSpacePointsTRD > mNMaxSpacePointsTRD) {
6060
mNMaxSpacePointsTRD = mCurrentSpacePointsTRD;
6161
mGlobalPosPtrTRD.reset(new float4[mNMaxSpacePointsTRD]);

0 commit comments

Comments
 (0)