From 996b7b1ca22b5bb0a4de332ee819e2094732e259 Mon Sep 17 00:00:00 2001 From: David Rohr Date: Wed, 4 Mar 2026 11:15:14 +0100 Subject: [PATCH 1/5] Do not use random 1000 value for auto-setting of 83cm for trackReferenceX as default, just disable as default --- Detectors/GlobalTracking/src/MatchCosmics.cxx | 1 - Detectors/GlobalTracking/src/MatchTPCITS.cxx | 1 - Detectors/GlobalTrackingWorkflow/study/src/TPCTrackStudy.cxx | 1 - Detectors/GlobalTrackingWorkflow/study/src/TrackingStudy.cxx | 1 - Detectors/TPC/reconstruction/test/testGPUCATracking.cxx | 2 +- Detectors/TPC/workflow/src/TPCRefitter.cxx | 1 - Detectors/TRD/workflow/src/TRDGlobalTrackingSpec.cxx | 1 - Detectors/Vertexing/src/SVertexer.cxx | 1 - GPU/GPUTracking/DataTypes/GPUO2ConfigurableParam.cxx | 3 --- GPU/GPUTracking/Definitions/GPUSettingsList.h | 2 +- GPU/Workflow/src/GPUWorkflowSpec.cxx | 3 +++ 11 files changed, 5 insertions(+), 12 deletions(-) diff --git a/Detectors/GlobalTracking/src/MatchCosmics.cxx b/Detectors/GlobalTracking/src/MatchCosmics.cxx index 90964fb1c05fa..3c20ecad2f36c 100644 --- a/Detectors/GlobalTracking/src/MatchCosmics.cxx +++ b/Detectors/GlobalTracking/src/MatchCosmics.cxx @@ -96,7 +96,6 @@ void MatchCosmics::refitWinners(const o2::globaltracking::RecoContainer& data) mTPCCorrMapsHelper, mBz, tpcClusRefs.data(), 0, tpcClusShMap.data(), tpcClusOccMap.data(), tpcClusOccMap.size(), nullptr, o2::base::Propagator::Instance()); - tpcRefitter->setTrackReferenceX(900); // disable propagation after refit by setting reference to value > 500 } const auto& itsClusters = prepareITSClusters(data); diff --git a/Detectors/GlobalTracking/src/MatchTPCITS.cxx b/Detectors/GlobalTracking/src/MatchTPCITS.cxx index 5f99ad2202073..73216c8ce1eac 100644 --- a/Detectors/GlobalTracking/src/MatchTPCITS.cxx +++ b/Detectors/GlobalTracking/src/MatchTPCITS.cxx @@ -505,7 +505,6 @@ bool MatchTPCITS::prepareTPCData() } mTPCRefitter = std::make_unique(mTPCClusterIdxStruct, mTPCCorrMapsHelper, mBz, mTPCTrackClusIdx.data(), 0, mTPCRefitterShMap.data(), mTPCRefitterOccMap.data(), mTPCRefitterOccMap.size(), nullptr, o2::base::Propagator::Instance()); - mTPCRefitter->setTrackReferenceX(900); // disable propagation after refit by setting reference to value > 500 mNTPCOccBinLength = mTPCRefitter->getParam()->rec.tpc.occupancyMapTimeBins; mTBinClOcc.clear(); if (mNTPCOccBinLength > 1 && mTPCRefitterOccMap.size()) { diff --git a/Detectors/GlobalTrackingWorkflow/study/src/TPCTrackStudy.cxx b/Detectors/GlobalTrackingWorkflow/study/src/TPCTrackStudy.cxx index 05e6a122adec9..ee475acbbcf70 100644 --- a/Detectors/GlobalTrackingWorkflow/study/src/TPCTrackStudy.cxx +++ b/Detectors/GlobalTrackingWorkflow/study/src/TPCTrackStudy.cxx @@ -188,7 +188,6 @@ void TPCTrackStudySpec::process(o2::globaltracking::RecoContainer& recoData) if (mTPCTracksArray.size()) { LOGP(info, "Found {} TPC tracks", mTPCTracksArray.size()); mTPCRefitter = std::make_unique(mTPCClusterIdxStruct, &mTPCCorrMapsLoader, prop->getNominalBz(), mTPCTrackClusIdx.data(), 0, mTPCRefitterShMap.data(), mTPCRefitterOccMap.data(), mTPCRefitterOccMap.size(), nullptr, o2::base::Propagator::Instance()); - mTPCRefitter->setTrackReferenceX(900); // disable propagation after refit by setting reference to value > 500 } float vdriftTB = mTPCVDriftHelper.getVDriftObject().getVDrift() * o2::tpc::ParameterElectronics::Instance().ZbinWidth; // VDrift expressed in cm/TimeBin float tpcTBBias = mTPCVDriftHelper.getVDriftObject().getTimeOffset() / (8 * o2::constants::lhc::LHCBunchSpacingMUS); diff --git a/Detectors/GlobalTrackingWorkflow/study/src/TrackingStudy.cxx b/Detectors/GlobalTrackingWorkflow/study/src/TrackingStudy.cxx index b8a8f97737b4d..c68e60059cd3f 100644 --- a/Detectors/GlobalTrackingWorkflow/study/src/TrackingStudy.cxx +++ b/Detectors/GlobalTrackingWorkflow/study/src/TrackingStudy.cxx @@ -163,7 +163,6 @@ void TrackingStudySpec::run(ProcessingContext& pc) mTPCRefitter = std::make_unique(&recoData.inputsTPCclusters->clusterIndex, &mTPCCorrMapsLoader, o2::base::Propagator::Instance()->getNominalBz(), recoData.getTPCTracksClusterRefs().data(), 0, recoData.clusterShMapTPC.data(), recoData.occupancyMapTPC.data(), recoData.occupancyMapTPC.size(), nullptr, o2::base::Propagator::Instance()); - mTPCRefitter->setTrackReferenceX(900); // disable propagation after refit by setting reference to value > 500 mNTPCOccBinLength = mTPCRefitter->getParam()->rec.tpc.occupancyMapTimeBins; mTBinClOccBef.clear(); mTBinClOccAft.clear(); diff --git a/Detectors/TPC/reconstruction/test/testGPUCATracking.cxx b/Detectors/TPC/reconstruction/test/testGPUCATracking.cxx index 5c66e4635987f..0debfa72dd7fa 100644 --- a/Detectors/TPC/reconstruction/test/testGPUCATracking.cxx +++ b/Detectors/TPC/reconstruction/test/testGPUCATracking.cxx @@ -51,7 +51,7 @@ BOOST_AUTO_TEST_CASE(CATracking_test1) GPUO2Interface tracker; float solenoidBz = -5.00668; // B-field - float refX = 1000.; // transport tracks to this x after tracking, >500 for disabling + float refX = 83.; // transport tracks to this x after tracking, >500 for disabling bool continuous = false; // time frame data v.s. triggered events GPUO2InterfaceConfiguration config; diff --git a/Detectors/TPC/workflow/src/TPCRefitter.cxx b/Detectors/TPC/workflow/src/TPCRefitter.cxx index 51ff2516524a9..43a55526246fe 100644 --- a/Detectors/TPC/workflow/src/TPCRefitter.cxx +++ b/Detectors/TPC/workflow/src/TPCRefitter.cxx @@ -336,7 +336,6 @@ void TPCRefitterSpec::process(o2::globaltracking::RecoContainer& recoData) } mTPCRefitter = std::make_unique(mTPCClusterIdxStruct, &mTPCCorrMapsLoader, prop->getNominalBz(), mTPCTrackClusIdx.data(), 0, mTPCRefitterShMap.data(), mTPCRefitterOccMap.data(), mTPCRefitterOccMap.size(), nullptr, prop); - mTPCRefitter->setTrackReferenceX(900); // disable propagation after refit by setting reference to value > 500 mVdriftTB = mTPCVDriftHelper.getVDriftObject().getVDrift() * o2::tpc::ParameterElectronics::Instance().ZbinWidth; // VDrift expressed in cm/TimeBin mTPCTBBias = mTPCVDriftHelper.getVDriftObject().getTimeOffset() / (8 * o2::constants::lhc::LHCBunchSpacingMUS); diff --git a/Detectors/TRD/workflow/src/TRDGlobalTrackingSpec.cxx b/Detectors/TRD/workflow/src/TRDGlobalTrackingSpec.cxx index 9e7ef089faeef..0f578efd3aa5b 100644 --- a/Detectors/TRD/workflow/src/TRDGlobalTrackingSpec.cxx +++ b/Detectors/TRD/workflow/src/TRDGlobalTrackingSpec.cxx @@ -294,7 +294,6 @@ void TRDGlobalTracking::run(ProcessingContext& pc) mTPCClusterIdxStruct = &inputTracks.inputsTPCclusters->clusterIndex; mTPCRefitter = std::make_unique(mTPCClusterIdxStruct, &mTPCCorrMapsLoader, o2::base::Propagator::Instance()->getNominalBz(), inputTracks.getTPCTracksClusterRefs().data(), 0, inputTracks.clusterShMapTPC.data(), inputTracks.occupancyMapTPC.data(), inputTracks.occupancyMapTPC.size(), nullptr, o2::base::Propagator::Instance()); - mTPCRefitter->setTrackReferenceX(900); // disable propagation after refit by setting reference to value > 500 auto tmpInputContainer = getRecoInputContainer(pc, &mChainTracking->mIOPtrs, &inputTracks, mUseMC); auto tmpContainer = GPUWorkflowHelper::fillIOPtr(mChainTracking->mIOPtrs, inputTracks, mUseMC, nullptr, GTrackID::getSourcesMask("TRD"), mTrkMask, GTrackID::mask_t{GTrackID::MASK_NONE}); mTrackletsRaw = inputTracks.getTRDTracklets(); diff --git a/Detectors/Vertexing/src/SVertexer.cxx b/Detectors/Vertexing/src/SVertexer.cxx index d9206fe54e068..2c625c9cfaf0a 100644 --- a/Detectors/Vertexing/src/SVertexer.cxx +++ b/Detectors/Vertexing/src/SVertexer.cxx @@ -459,7 +459,6 @@ void SVertexer::buildT2V(const o2::globaltracking::RecoContainer& recoData) // a mTPCRefitterShMap = recoData.clusterShMapTPC; mTPCRefitterOccMap = mRecoCont->occupancyMapTPC; mTPCRefitter = std::make_unique(mTPCClusterIdxStruct, mTPCCorrMapsHelper, o2::base::Propagator::Instance()->getNominalBz(), mTPCTrackClusIdx.data(), 0, mTPCRefitterShMap.data(), mTPCRefitterOccMap.data(), mTPCRefitterOccMap.size(), nullptr, o2::base::Propagator::Instance()); - mTPCRefitter->setTrackReferenceX(900); // disable propagation after refit by setting reference to value > 500 } std::unordered_map> tmap; diff --git a/GPU/GPUTracking/DataTypes/GPUO2ConfigurableParam.cxx b/GPU/GPUTracking/DataTypes/GPUO2ConfigurableParam.cxx index 60fdbe8042c2d..49cd25624b2c3 100644 --- a/GPU/GPUTracking/DataTypes/GPUO2ConfigurableParam.cxx +++ b/GPU/GPUTracking/DataTypes/GPUO2ConfigurableParam.cxx @@ -119,9 +119,6 @@ GPUSettingsO2 GPUO2InterfaceConfiguration::ReadConfigurableParam(GPUO2InterfaceC if (global.gpuDisplayfilterMacro != "") { obj.configDisplay.filterMacros.emplace_back(global.gpuDisplayfilterMacro); } - if (obj.configReconstruction.tpc.trackReferenceX == 1000.f) { - obj.configReconstruction.tpc.trackReferenceX = 83.f; - } obj.configDeviceBackend.deviceType = gpudatatypes::GetDeviceType(global.deviceType.c_str()); obj.configDeviceBackend.forceDeviceType = global.forceDeviceType; return global; diff --git a/GPU/GPUTracking/Definitions/GPUSettingsList.h b/GPU/GPUTracking/Definitions/GPUSettingsList.h index cf6b913551ab5..e34af48d7a85e 100644 --- a/GPU/GPUTracking/Definitions/GPUSettingsList.h +++ b/GPU/GPUTracking/Definitions/GPUSettingsList.h @@ -66,7 +66,7 @@ AddOptionRTC(sysClusErrorC12Box, float, 1.1e-05f, "", 0, "Systematic cluster for AddOptionRTC(minNClustersTrackSeed, int32_t, -1, "", 0, "required min number of clusters on the track after track following (before merging)") AddOptionRTC(minNClustersFinalTrack, int32_t, -1, "", 0, "required min number of clusters on the final track") AddOptionRTC(searchWindowDZDR, float, 2.5f, "", 0, "Use DZDR window for seeding instead of neighboursSearchArea") -AddOptionRTC(trackReferenceX, float, 1000.f, "", 0, "Transport all tracks to this X after tracking (disabled if > 500, auto = 1000)") +AddOptionRTC(trackReferenceX, float, 1000.f, "", 0, "Transport all tracks to this X after tracking (disabled if > 500)") AddOptionRTC(zsThreshold, float, 2.0f, "", 0, "Zero-Suppression threshold") AddOptionRTC(tubeProtectSigma2, float, 4.f * 4.f, "", 0, "Max sigma2 to mark adjacent cluster for protection") AddOptionRTC(tubeProtectMaxSize2, float, 2.f * 2.f, "", 0, "Square of max tube size (if smaller than tubeProtectChi2)") diff --git a/GPU/Workflow/src/GPUWorkflowSpec.cxx b/GPU/Workflow/src/GPUWorkflowSpec.cxx index 48210c440d01e..7f69513dea1d5 100644 --- a/GPU/Workflow/src/GPUWorkflowSpec.cxx +++ b/GPU/Workflow/src/GPUWorkflowSpec.cxx @@ -281,6 +281,9 @@ void GPURecoWorkflowSpec::init(InitContext& ic) mConfig->configProcessing.willProvideO2PropagatorLate = true; mConfig->configProcessing.o2PropagatorUseGPUField = true; + if (mConfig->configReconstruction.tpc.trackReferenceX == 1000.f) { + mConfig->configReconstruction.tpc.trackReferenceX = 83.f; + } if (mConfParam->printSettings && (mConfParam->printSettings > 1 || ic.services().get().inputTimesliceId == 0)) { mConfig->configProcessing.printSettings = true; From 72f884ecdb1ea378ed37a64a5f2c5e0cdd44a845 Mon Sep 17 00:00:00 2001 From: David Rohr Date: Wed, 4 Mar 2026 11:26:52 +0100 Subject: [PATCH 2/5] Add getter for individual GPU configKeyValues --- .../Interface/GPUO2InterfaceConfiguration.inc | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 GPU/GPUTracking/Interface/GPUO2InterfaceConfiguration.inc diff --git a/GPU/GPUTracking/Interface/GPUO2InterfaceConfiguration.inc b/GPU/GPUTracking/Interface/GPUO2InterfaceConfiguration.inc new file mode 100644 index 0000000000000..a8ec49df2a281 --- /dev/null +++ b/GPU/GPUTracking/Interface/GPUO2InterfaceConfiguration.inc @@ -0,0 +1,37 @@ +// Copyright 2019-2020 CERN and copyright holders of ALICE O2. +// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders. +// All rights not expressly granted are reserved. +// +// This software is distributed under the terms of the GNU General Public +// License v3 (GPL Version 3), copied verbatim in the file "COPYING". +// +// In applying this license CERN does not waive the privileges and immunities +// granted to it by virtue of its status as an Intergovernmental Organization +// or submit itself to any jurisdiction. + +/// \file GPUO2InterfaceConfiguration.inc +/// \author David Rohr + +// Note, this must potentionally be included first, before other GPU headers! +// Do not include in .h files! + +#ifndef GPUO2INTERFACECONFIGURATIONINC_H +#define GPUO2INTERFACECONFIGURATIONINC_H + +#ifdef GPUCA_STANDALONE +#define GPU_GET_CONFIG(configName) static_assert(false, "GPU_GET_CONFIG not available in standalone benchmark") +#else +#include "GPUO2ExternalUser.h" +#include "GPUCommonRtypes.h" +#include "GPUDefMacros.h" +#include "GPUO2InterfaceConfiguration.h" +#include "GPUO2ConfigurableParam.h" +#include + +#define GPU_GET_CONFIG(configName) []() -> decltype(auto) { \ + static_assert(!std::is_same_v); \ + return o2::gpu::GPUCA_M_CAT(GPUConfigurableParam, configName)::Instance(); \ +}() +#endif + +#endif From 09653722008c3a0148ff7f3516320f593b50bd6d Mon Sep 17 00:00:00 2001 From: David Rohr Date: Wed, 4 Mar 2026 13:24:16 +0100 Subject: [PATCH 3/5] Fix missing header --- Common/Utils/src/StringUtils.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/Common/Utils/src/StringUtils.cxx b/Common/Utils/src/StringUtils.cxx index 29c43ec18375b..89f834d9a8f2e 100644 --- a/Common/Utils/src/StringUtils.cxx +++ b/Common/Utils/src/StringUtils.cxx @@ -17,6 +17,7 @@ #include #endif #include +#include using namespace o2::utils; From 997f3871e5ebb9e2f22eff3a9c517a4783dea843 Mon Sep 17 00:00:00 2001 From: David Rohr Date: Wed, 4 Mar 2026 19:54:12 +0100 Subject: [PATCH 4/5] Fetch only GPUSettingsRecTRD for TRD tasks not all GPU ConfigurableParams --- Detectors/Align/src/AlignableDetectorTRD.cxx | 4 +--- .../SpacePoints/src/TrackInterpolation.cxx | 4 +--- Detectors/TRD/calibration/src/TrackBasedCalib.cxx | 4 +--- Detectors/TRD/qc/src/Tracking.cxx | 4 +--- GPU/GPUTracking/DataTypes/GPUTRDRecoParam.cxx | 12 +++++++++++- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Detectors/Align/src/AlignableDetectorTRD.cxx b/Detectors/Align/src/AlignableDetectorTRD.cxx index 080d0f72b2516..6fe8a60ef90f6 100644 --- a/Detectors/Align/src/AlignableDetectorTRD.cxx +++ b/Detectors/Align/src/AlignableDetectorTRD.cxx @@ -178,9 +178,7 @@ int AlignableDetectorTRD::processPoints(GIndex gid, int npntCut, bool inv) auto propagator = o2::base::Propagator::Instance(); // float version! static bool firstCall = true; if (firstCall) { - o2::gpu::GPUO2InterfaceConfiguration config; - config.ReadConfigurableParam(config); - mRecoParam.init(propagator->getNominalBz(), &config.configReconstruction); + mRecoParam.init(propagator->getNominalBz()); firstCall = false; } const auto* transformer = mController->getTRDTransformer(); diff --git a/Detectors/TPC/calibration/SpacePoints/src/TrackInterpolation.cxx b/Detectors/TPC/calibration/SpacePoints/src/TrackInterpolation.cxx index cd5e3960160a6..539ae25862865 100644 --- a/Detectors/TPC/calibration/SpacePoints/src/TrackInterpolation.cxx +++ b/Detectors/TPC/calibration/SpacePoints/src/TrackInterpolation.cxx @@ -126,9 +126,7 @@ void TrackInterpolation::init(o2::dataformats::GlobalTrackID::mask_t src, o2::da mFastTransform = std::move(TPCFastTransformHelperO2::instance()->create(0)); mBz = o2::base::Propagator::Instance()->getNominalBz(); - o2::gpu::GPUO2InterfaceConfiguration config; - config.ReadConfigurableParam(config); - mRecoParam.init(mBz, &config.configReconstruction); + mRecoParam.init(mBz); mGeoTRD = o2::trd::Geometry::instance(); mParams = &SpacePointsCalibConfParam::Instance(); diff --git a/Detectors/TRD/calibration/src/TrackBasedCalib.cxx b/Detectors/TRD/calibration/src/TrackBasedCalib.cxx index ae1f7b33c6bba..0d551e7b5f33d 100644 --- a/Detectors/TRD/calibration/src/TrackBasedCalib.cxx +++ b/Detectors/TRD/calibration/src/TrackBasedCalib.cxx @@ -36,9 +36,7 @@ void TrackBasedCalib::reset() void TrackBasedCalib::init() { bz = o2::base::Propagator::Instance()->getNominalBz(); - o2::gpu::GPUO2InterfaceConfiguration config; - config.ReadConfigurableParam(config); - mRecoParam.init(bz, &config.configReconstruction); + mRecoParam.init(bz); } void TrackBasedCalib::setInput(const o2::globaltracking::RecoContainer& input) diff --git a/Detectors/TRD/qc/src/Tracking.cxx b/Detectors/TRD/qc/src/Tracking.cxx index 9a0df7efa323b..da2d05794e2d8 100644 --- a/Detectors/TRD/qc/src/Tracking.cxx +++ b/Detectors/TRD/qc/src/Tracking.cxx @@ -26,9 +26,7 @@ using namespace o2::trd::constants; void Tracking::init() { - o2::gpu::GPUO2InterfaceConfiguration config; - config.ReadConfigurableParam(config); - mRecoParam.init(o2::base::Propagator::Instance()->getNominalBz(), &config.configReconstruction); + mRecoParam.init(o2::base::Propagator::Instance()->getNominalBz()); } void Tracking::setInput(const o2::globaltracking::RecoContainer& input) diff --git a/GPU/GPUTracking/DataTypes/GPUTRDRecoParam.cxx b/GPU/GPUTracking/DataTypes/GPUTRDRecoParam.cxx index 674b7a317b477..f7adc2401df79 100644 --- a/GPU/GPUTracking/DataTypes/GPUTRDRecoParam.cxx +++ b/GPU/GPUTracking/DataTypes/GPUTRDRecoParam.cxx @@ -13,6 +13,7 @@ /// \brief Error parameterizations and helper functions for TRD reconstruction /// \author Ole Schmidt +#include "GPUO2InterfaceConfiguration.inc" #include "GPUSettings.h" #include "GPUTRDRecoParam.h" #include "GPUCommonLogger.h" @@ -23,7 +24,16 @@ using namespace o2::gpu; // error parameterizations taken from http://cds.cern.ch/record/2724259 Appendix A void GPUTRDRecoParam::init(float bz, const GPUSettingsRec* rec) { - float resRPhiIdeal2 = rec ? rec->trd.trkltResRPhiIdeal * rec->trd.trkltResRPhiIdeal : 1.6e-3f; + float resRPhiIdeal2 = 1.6e-3f; + if (rec) { + resRPhiIdeal2 = rec->trd.trkltResRPhiIdeal * rec->trd.trkltResRPhiIdeal; + } +#ifndef GPUCA_STANDALONE + else { + const auto& rtrd = GPU_GET_CONFIG(GPUSettingsRecTRD); + resRPhiIdeal2 = rtrd.trkltResRPhiIdeal * rtrd.trkltResRPhiIdeal; + } +#endif if (CAMath::Abs(CAMath::Abs(bz) - 2) < 0.1) { if (bz > 0) { From 5d871186bb886b468ff02f9733fb5c013f4b1748 Mon Sep 17 00:00:00 2001 From: David Rohr Date: Thu, 5 Mar 2026 10:27:26 +0100 Subject: [PATCH 5/5] Avoid unintended usage of GPUO2ConfigurableParam.h --- Detectors/TPC/workflow/src/CalibdEdxSpec.cxx | 7 ++-- .../TPC/workflow/src/CalibratordEdxSpec.cxx | 7 ++-- .../DataTypes/GPUO2ConfigurableParam.cxx | 4 +-- .../DataTypes/GPUO2ConfigurableParam.h | 13 ++++++-- .../GPUTrackingLinkDef_O2_DataTypes.h | 32 +++++++++---------- .../Interface/GPUO2InterfaceConfiguration.inc | 2 +- 6 files changed, 37 insertions(+), 28 deletions(-) diff --git a/Detectors/TPC/workflow/src/CalibdEdxSpec.cxx b/Detectors/TPC/workflow/src/CalibdEdxSpec.cxx index 7c2e2db8188e8..15ea241a7b350 100644 --- a/Detectors/TPC/workflow/src/CalibdEdxSpec.cxx +++ b/Detectors/TPC/workflow/src/CalibdEdxSpec.cxx @@ -13,6 +13,7 @@ /// \brief Workflow for time based dE/dx calibration. /// \author Thiago BadarĂ³ +#include "GPUO2InterfaceConfiguration.inc" #include "TPCWorkflow/CalibdEdxSpec.h" // o2 includes @@ -26,7 +27,6 @@ #include "Framework/DataProcessorSpec.h" #include "Framework/ConfigParamRegistry.h" #include "Framework/CCDBParamSpec.h" -#include "GPUO2ConfigurableParam.h" #include "TPCCalibration/CalibdEdx.h" #include "TPCWorkflow/ProcessingHelpers.h" #include "TPCBaseRecSim/CDBTypes.h" @@ -70,8 +70,9 @@ class CalibdEdxDevice : public Task mCalib->setElectronCut(fitThreshold, fitPasses, fitThresholdLowFactor); mCalib->setMaterialType(mMatType); - mCustomdEdxFileName = o2::gpu::GPUConfigurableParamGPUSettingsO2::Instance().dEdxCorrFile; - mDisableTimeGain = o2::gpu::GPUConfigurableParamGPUSettingsO2::Instance().dEdxDisableResidualGain; + const auto& gpuConfig = GPU_GET_CONFIG(GPUSettingsO2); + mCustomdEdxFileName = gpuConfig.dEdxCorrFile; + mDisableTimeGain = gpuConfig.dEdxDisableResidualGain; if (mDisableTimeGain) { LOGP(info, "TimeGain correction was disabled via GPU_global.dEdxDisableResidualGain=1"); diff --git a/Detectors/TPC/workflow/src/CalibratordEdxSpec.cxx b/Detectors/TPC/workflow/src/CalibratordEdxSpec.cxx index 87e339f0643f4..dea1d85899675 100644 --- a/Detectors/TPC/workflow/src/CalibratordEdxSpec.cxx +++ b/Detectors/TPC/workflow/src/CalibratordEdxSpec.cxx @@ -13,6 +13,7 @@ /// \brief Workflow for time based dE/dx calibration. /// \author Thiago BadarĂ³ +#include "GPUO2InterfaceConfiguration.inc" #include "TPCWorkflow/CalibratordEdxSpec.h" #include @@ -29,7 +30,6 @@ #include "Framework/DataProcessorSpec.h" #include "Framework/ConfigParamRegistry.h" #include "Framework/CCDBParamSpec.h" -#include "GPUO2ConfigurableParam.h" #include "TPCCalibration/CalibratordEdx.h" #include "TPCWorkflow/ProcessingHelpers.h" #include "DetectorsBase/GRPGeomHelper.h" @@ -86,8 +86,9 @@ class CalibratordEdxDevice : public Task mCalibrator->setTrackDebug(trackDebug); mCalibrator->setMakeGaussianFits(makeGaussianFits); - mCustomdEdxFileName = o2::gpu::GPUConfigurableParamGPUSettingsO2::Instance().dEdxCorrFile; - mDisableTimeGain = o2::gpu::GPUConfigurableParamGPUSettingsO2::Instance().dEdxDisableResidualGain; + const auto& gpuConfig = GPU_GET_CONFIG(GPUSettingsO2); + mCustomdEdxFileName = gpuConfig.dEdxCorrFile; + mDisableTimeGain = gpuConfig.dEdxDisableResidualGain; if (mDisableTimeGain) { LOGP(info, "TimeGain correction was disabled via GPU_global.dEdxDisableResidualGain=1"); diff --git a/GPU/GPUTracking/DataTypes/GPUO2ConfigurableParam.cxx b/GPU/GPUTracking/DataTypes/GPUO2ConfigurableParam.cxx index 49cd25624b2c3..f3b7e07c4c43b 100644 --- a/GPU/GPUTracking/DataTypes/GPUO2ConfigurableParam.cxx +++ b/GPU/GPUTracking/DataTypes/GPUO2ConfigurableParam.cxx @@ -29,7 +29,7 @@ using namespace o2::gpu; #define AddOptionArray(name, type, count, default, optname, optnameshort, help, ...) #define AddOptionArrayRTC(...) AddOptionArray(__VA_ARGS__) #define AddSubConfig(name, instance) -#define BeginSubConfig(name, instance, parent, preoptname, preoptnameshort, descr, o2prefix) O2ParamImpl(GPUCA_M_CAT(GPUConfigurableParam, name)) +#define BeginSubConfig(name, instance, parent, preoptname, preoptnameshort, descr, o2prefix) O2ParamImpl(internal::GPUCA_M_CAT(GPUConfigurableParam, name)) #define BeginHiddenConfig(...) #define EndConfig() #define AddCustomCPP(...) @@ -73,7 +73,7 @@ GPUSettingsO2 GPUO2InterfaceConfiguration::ReadConfigurableParam(GPUO2InterfaceC #define BeginSubConfig(name, instance, parent, preoptname, preoptnameshort, descr, o2prefix) \ name instance; \ { \ - const auto& src = GPUCA_M_CAT(GPUConfigurableParam, name)::Instance(); \ + const auto& src = internal::GPUCA_M_CAT(GPUConfigurableParam, name)::Instance(); \ name& dst = instance; #define BeginHiddenConfig(name, instance) { #define EndConfig() } diff --git a/GPU/GPUTracking/DataTypes/GPUO2ConfigurableParam.h b/GPU/GPUTracking/DataTypes/GPUO2ConfigurableParam.h index 8bc0d98910f54..503ba3e0d51ae 100644 --- a/GPU/GPUTracking/DataTypes/GPUO2ConfigurableParam.h +++ b/GPU/GPUTracking/DataTypes/GPUO2ConfigurableParam.h @@ -29,6 +29,7 @@ #include "GPUDefMacros.h" #include +// clang-format off #define BeginNamespace(name) \ namespace name \ { @@ -42,12 +43,17 @@ #define AddOptionArray(name, type, count, default, optname, optnameshort, help, ...) type name[count] = {GPUCA_M_STRIP(default)}; #define AddSubConfig(name, instance) #define BeginSubConfig(name, instance, parent, preoptname, preoptnameshort, descr, o2prefix) \ + namespace internal \ + { \ struct GPUCA_M_CAT(GPUConfigurableParam, name) : public o2::conf::ConfigurableParamHelper { \ O2ParamDef(GPUCA_M_CAT(GPUConfigurableParam, name), GPUCA_M_STR(GPUCA_M_CAT(GPU_, o2prefix))) public: -#define BeginHiddenConfig(name, instance) struct GPUCA_M_CAT(GPUConfigurableParam, name) { +#define BeginHiddenConfig(name, instance) \ + namespace internal \ + { \ + struct GPUCA_M_CAT(GPUConfigurableParam, name) { #define EndConfig() \ - } \ - ; + }; \ + } // namespace internal #define AddCustomCPP(...) __VA_ARGS__ #define AddHelp(...) #define AddShortcut(...) @@ -71,5 +77,6 @@ #undef AddCustomCPP #undef AddHelp #undef AddShortcut +// clang-format on #endif diff --git a/GPU/GPUTracking/GPUTrackingLinkDef_O2_DataTypes.h b/GPU/GPUTracking/GPUTrackingLinkDef_O2_DataTypes.h index 7bd2c689c5354..5318e23e7d10f 100644 --- a/GPU/GPUTracking/GPUTrackingLinkDef_O2_DataTypes.h +++ b/GPU/GPUTracking/GPUTrackingLinkDef_O2_DataTypes.h @@ -22,22 +22,22 @@ #pragma link C++ class o2::gpu::GPUTRDTrack_t < o2::gpu::trackInterface < o2::track::TrackParCov>> + ; #pragma link C++ class std::vector < o2::gpu::GPUTRDTrack_t < o2::gpu::trackInterface < o2::track::TrackParCov>>> + ; #ifdef GPUCA_O2_LIB -#pragma link C++ class o2::gpu::GPUConfigurableParamGPUSettingsO2 + ; -#pragma link C++ class o2::gpu::GPUConfigurableParamGPUSettingsRec + ; -#pragma link C++ class o2::gpu::GPUConfigurableParamGPUSettingsRecTPC + ; -#pragma link C++ class o2::gpu::GPUConfigurableParamGPUSettingsRecTRD + ; -#pragma link C++ class o2::gpu::GPUConfigurableParamGPUSettingsRecDynamic + ; -#pragma link C++ class o2::gpu::GPUConfigurableParamGPUSettingsProcessing + ; -#pragma link C++ class o2::gpu::GPUConfigurableParamGPUSettingsProcessingParam + ; -#pragma link C++ class o2::gpu::GPUConfigurableParamGPUSettingsProcessingRTC + ; -#pragma link C++ class o2::gpu::GPUConfigurableParamGPUSettingsProcessingRTCtechnical + ; -#pragma link C++ class o2::gpu::GPUConfigurableParamGPUSettingsProcessingNNclusterizer + ; -#pragma link C++ class o2::gpu::GPUConfigurableParamGPUSettingsDisplay + ; -#pragma link C++ class o2::gpu::GPUConfigurableParamGPUSettingsDisplayLight + ; -#pragma link C++ class o2::gpu::GPUConfigurableParamGPUSettingsDisplayHeavy + ; -#pragma link C++ class o2::gpu::GPUConfigurableParamGPUSettingsDisplayRenderer + ; -#pragma link C++ class o2::gpu::GPUConfigurableParamGPUSettingsDisplayVulkan + ; -#pragma link C++ class o2::gpu::GPUConfigurableParamGPUSettingsQA + ; +#pragma link C++ class o2::gpu::internal::GPUConfigurableParamGPUSettingsO2 + ; +#pragma link C++ class o2::gpu::internal::GPUConfigurableParamGPUSettingsRec + ; +#pragma link C++ class o2::gpu::internal::GPUConfigurableParamGPUSettingsRecTPC + ; +#pragma link C++ class o2::gpu::internal::GPUConfigurableParamGPUSettingsRecTRD + ; +#pragma link C++ class o2::gpu::internal::GPUConfigurableParamGPUSettingsRecDynamic + ; +#pragma link C++ class o2::gpu::internal::GPUConfigurableParamGPUSettingsProcessing + ; +#pragma link C++ class o2::gpu::internal::GPUConfigurableParamGPUSettingsProcessingParam + ; +#pragma link C++ class o2::gpu::internal::GPUConfigurableParamGPUSettingsProcessingRTC + ; +#pragma link C++ class o2::gpu::internal::GPUConfigurableParamGPUSettingsProcessingRTCtechnical + ; +#pragma link C++ class o2::gpu::internal::GPUConfigurableParamGPUSettingsProcessingNNclusterizer + ; +#pragma link C++ class o2::gpu::internal::GPUConfigurableParamGPUSettingsDisplay + ; +#pragma link C++ class o2::gpu::internal::GPUConfigurableParamGPUSettingsDisplayLight + ; +#pragma link C++ class o2::gpu::internal::GPUConfigurableParamGPUSettingsDisplayHeavy + ; +#pragma link C++ class o2::gpu::internal::GPUConfigurableParamGPUSettingsDisplayRenderer + ; +#pragma link C++ class o2::gpu::internal::GPUConfigurableParamGPUSettingsDisplayVulkan + ; +#pragma link C++ class o2::gpu::internal::GPUConfigurableParamGPUSettingsQA + ; #endif #pragma link C++ class o2::gpu::GPUTPCGMMergedTrackHit + ; #pragma link C++ class o2::tpc::CalibdEdxTrackTopologyPol + ; diff --git a/GPU/GPUTracking/Interface/GPUO2InterfaceConfiguration.inc b/GPU/GPUTracking/Interface/GPUO2InterfaceConfiguration.inc index a8ec49df2a281..30f6d56a17f1a 100644 --- a/GPU/GPUTracking/Interface/GPUO2InterfaceConfiguration.inc +++ b/GPU/GPUTracking/Interface/GPUO2InterfaceConfiguration.inc @@ -30,7 +30,7 @@ #define GPU_GET_CONFIG(configName) []() -> decltype(auto) { \ static_assert(!std::is_same_v); \ - return o2::gpu::GPUCA_M_CAT(GPUConfigurableParam, configName)::Instance(); \ + return o2::gpu::internal::GPUCA_M_CAT(GPUConfigurableParam, configName)::Instance(); \ }() #endif