Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Common/Utils/src/StringUtils.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#include <fmt/format.h>
#endif
#include <unistd.h>
#include <cstring>

using namespace o2::utils;

Expand Down
4 changes: 1 addition & 3 deletions Detectors/Align/src/AlignableDetectorTRD.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
1 change: 0 additions & 1 deletion Detectors/GlobalTracking/src/MatchCosmics.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
1 change: 0 additions & 1 deletion Detectors/GlobalTracking/src/MatchTPCITS.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -505,7 +505,6 @@ bool MatchTPCITS::prepareTPCData()
}

mTPCRefitter = std::make_unique<o2::gpu::GPUO2InterfaceRefit>(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()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<o2::gpu::GPUO2InterfaceRefit>(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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,6 @@ void TrackingStudySpec::run(ProcessingContext& pc)
mTPCRefitter = std::make_unique<o2::gpu::GPUO2InterfaceRefit>(&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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down
2 changes: 1 addition & 1 deletion Detectors/TPC/reconstruction/test/testGPUCATracking.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
7 changes: 4 additions & 3 deletions Detectors/TPC/workflow/src/CalibdEdxSpec.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
/// \brief Workflow for time based dE/dx calibration.
/// \author Thiago Badaró <thiago.saramela@usp.br>

#include "GPUO2InterfaceConfiguration.inc"
#include "TPCWorkflow/CalibdEdxSpec.h"

// o2 includes
Expand All @@ -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"
Expand Down Expand Up @@ -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");
Expand Down
7 changes: 4 additions & 3 deletions Detectors/TPC/workflow/src/CalibratordEdxSpec.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
/// \brief Workflow for time based dE/dx calibration.
/// \author Thiago Badaró <thiago.saramela@usp.br>

#include "GPUO2InterfaceConfiguration.inc"
#include "TPCWorkflow/CalibratordEdxSpec.h"

#include <vector>
Expand All @@ -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"
Expand Down Expand Up @@ -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");
Expand Down
1 change: 0 additions & 1 deletion Detectors/TPC/workflow/src/TPCRefitter.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,6 @@ void TPCRefitterSpec::process(o2::globaltracking::RecoContainer& recoData)
}

mTPCRefitter = std::make_unique<o2::gpu::GPUO2InterfaceRefit>(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);
Expand Down
4 changes: 1 addition & 3 deletions Detectors/TRD/calibration/src/TrackBasedCalib.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
4 changes: 1 addition & 3 deletions Detectors/TRD/qc/src/Tracking.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
1 change: 0 additions & 1 deletion Detectors/TRD/workflow/src/TRDGlobalTrackingSpec.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,6 @@ void TRDGlobalTracking::run(ProcessingContext& pc)

mTPCClusterIdxStruct = &inputTracks.inputsTPCclusters->clusterIndex;
mTPCRefitter = std::make_unique<o2::gpu::GPUO2InterfaceRefit>(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();
Expand Down
1 change: 0 additions & 1 deletion Detectors/Vertexing/src/SVertexer.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -459,7 +459,6 @@ void SVertexer::buildT2V(const o2::globaltracking::RecoContainer& recoData) // a
mTPCRefitterShMap = recoData.clusterShMapTPC;
mTPCRefitterOccMap = mRecoCont->occupancyMapTPC;
mTPCRefitter = std::make_unique<o2::gpu::GPUO2InterfaceRefit>(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<GIndex, std::pair<int, int>> tmap;
Expand Down
7 changes: 2 additions & 5 deletions GPU/GPUTracking/DataTypes/GPUO2ConfigurableParam.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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(...)
Expand Down Expand Up @@ -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() }
Expand Down Expand Up @@ -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;
Expand Down
13 changes: 10 additions & 3 deletions GPU/GPUTracking/DataTypes/GPUO2ConfigurableParam.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include "GPUDefMacros.h"
#include <vector>

// clang-format off
#define BeginNamespace(name) \
namespace name \
{
Expand All @@ -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<GPUCA_M_CAT(GPUConfigurableParam, name)> { \
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(...)
Expand All @@ -71,5 +77,6 @@
#undef AddCustomCPP
#undef AddHelp
#undef AddShortcut
// clang-format on

#endif
12 changes: 11 additions & 1 deletion GPU/GPUTracking/DataTypes/GPUTRDRecoParam.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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) {
Expand Down
2 changes: 1 addition & 1 deletion GPU/GPUTracking/Definitions/GPUSettingsList.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)")
Expand Down
32 changes: 16 additions & 16 deletions GPU/GPUTracking/GPUTrackingLinkDef_O2_DataTypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 + ;
Expand Down
37 changes: 37 additions & 0 deletions GPU/GPUTracking/Interface/GPUO2InterfaceConfiguration.inc
Original file line number Diff line number Diff line change
@@ -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 <type_traits>

#define GPU_GET_CONFIG(configName) []() -> decltype(auto) { \
static_assert(!std::is_same_v<o2::gpu::configName, o2::gpu::GPUSettingsProcessing>); \
return o2::gpu::internal::GPUCA_M_CAT(GPUConfigurableParam, configName)::Instance(); \
}()
#endif

#endif
Loading