From a7d17af5141aa8640cfbae3ac7fe0c176d9664ba Mon Sep 17 00:00:00 2001 From: Felix Schlepper Date: Wed, 27 Aug 2025 10:31:49 +0200 Subject: [PATCH] ITS: skip processing entirely if no clusters/rofs in TF Signed-off-by: Felix Schlepper --- .../ITS/tracking/src/TrackingInterface.cxx | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/Detectors/ITSMFT/ITS/tracking/src/TrackingInterface.cxx b/Detectors/ITSMFT/ITS/tracking/src/TrackingInterface.cxx index d6ac3b5229509..f673d8f446350 100644 --- a/Detectors/ITSMFT/ITS/tracking/src/TrackingInterface.cxx +++ b/Detectors/ITSMFT/ITS/tracking/src/TrackingInterface.cxx @@ -99,7 +99,7 @@ void ITSTrackingInterface::run(framework::ProcessingContext& pc) irFrames.reserve(trackROFvec.size()); int nBCPerTF = alpParams.roFrameLengthInBC; - LOGP(info, "ITSTracker pulled {} clusters, {} RO frames", compClusters.size(), trackROFvec.size()); + LOGP(info, "ITSTracker pulled {} clusters, {} RO frames {}", compClusters.size(), trackROFvec.size(), compClusters.empty() ? " -> received no processable data will skip" : ""); const dataformats::MCTruthContainer* labels = nullptr; gsl::span mc2rofs; if (mIsMC) { @@ -157,7 +157,9 @@ void ITSTrackingInterface::run(framework::ProcessingContext& pc) if (mRunVertexer) { vertROFvec.reserve(trackROFvec.size()); // Run seeding vertexer - vertexerElapsedTime = mVertexer->clustersToVertices(logger); + if (!compClusters.empty()) { + vertexerElapsedTime = mVertexer->clustersToVertices(logger); + } } else { // cosmics mTimeFrame->resetRofPV(); } @@ -226,7 +228,7 @@ void ITSTrackingInterface::run(framework::ProcessingContext& pc) mTimeFrame->addPrimaryVertices(vtxVecLoc, 0); } } - if (mRunVertexer) { + if (mRunVertexer && !compClusters.empty()) { LOG(info) << fmt::format(" - Vertex seeding total elapsed time: {} ms for {} ({} + {}) vertices found in {}/{} ROFs", vertexerElapsedTime, mTimeFrame->getPrimaryVerticesNum(), @@ -244,14 +246,15 @@ void ITSTrackingInterface::run(framework::ProcessingContext& pc) if (mCosmicsProcessing && compClusters.size() > 1500 * trackROFspan.size()) { LOG(error) << "Cosmics processing was requested with an average detector occupancy exceeding 1.e-7, skipping TF processing."; } else { - - mTimeFrame->setMultiplicityCutMask(processingMask); - mTimeFrame->setROFMask(processUPCMask); - // Run CA tracker - if (mMode == o2::its::TrackingMode::Async && o2::its::TrackerParamConfig::Instance().fataliseUponFailure) { - mTracker->clustersToTracks(logger, fatalLogger); - } else { - mTracker->clustersToTracks(logger, errorLogger); + if (!compClusters.empty()) { + mTimeFrame->setMultiplicityCutMask(processingMask); + mTimeFrame->setROFMask(processUPCMask); + // Run CA tracker + if (mMode == o2::its::TrackingMode::Async && o2::its::TrackerParamConfig::Instance().fataliseUponFailure) { + mTracker->clustersToTracks(logger, fatalLogger); + } else { + mTracker->clustersToTracks(logger, errorLogger); + } } size_t totTracks{mTimeFrame->getNumberOfTracks()}, totClusIDs{mTimeFrame->getNumberOfUsedClusters()}; if (totTracks) {