diff --git a/Detectors/TPC/qc/src/Tracking.cxx b/Detectors/TPC/qc/src/Tracking.cxx index e5773804105ce..a3ae6320fe9e0 100644 --- a/Detectors/TPC/qc/src/Tracking.cxx +++ b/Detectors/TPC/qc/src/Tracking.cxx @@ -55,7 +55,10 @@ void Tracking::initialize(outputModes outputMode, bool postprocessOnly) } else { throw std::runtime_error("Failed to initialize run parameters from GRP"); } - mQAConfig->ReadConfigurableParam(); + auto global = mQAConfig->ReadConfigurableParam(); + if (grp->isDetReadOut(o2::detectors::DetID::TPC) && global.tpcTriggeredMode ^ !grp->isDetContinuousReadOut(o2::detectors::DetID::TPC)) { + throw std::runtime_error("TPC triggered mode (GPU_global.tpcTriggeredMode) not set correctly"); + } mQAConfig->configQA.shipToQCAsCanvas = mOutputMode == outputLayout; mQA = std::make_unique(mQAConfig.get()); if (!postprocessOnly) { diff --git a/GPU/GPUTracking/DataTypes/GPUSettings.h b/GPU/GPUTracking/DataTypes/GPUSettings.h index 0d0f932c95e88..448646c22a2eb 100644 --- a/GPU/GPUTracking/DataTypes/GPUSettings.h +++ b/GPU/GPUTracking/DataTypes/GPUSettings.h @@ -53,11 +53,11 @@ class GPUSettings #ifdef GPUCA_NOCOMPAT // Settings describing the global run parameters struct GPUSettingsGRP { - // All new members must be sizeof(int) resp. sizeof(float) for alignment reasons! + // All new members must be sizeof(int) resp. sizeof(float) for alignment reasons!, default value for newly added members for old data will be 0. float solenoidBzNominalGPU = -5.00668f; // solenoid field strength int constBz = 0; // for test-MC events with constant Bz int homemadeEvents = 0; // Toy-MC events - int continuousMaxTimeBin = 0; // 0 for triggered events, -1 for default of 23ms + int continuousMaxTimeBin = 0; // 0 for triggered events, -1 for default TF length int needsClusterer = 0; // Set to true if the data requires the clusterizer int doCompClusterDecode = 0; // Set to true if the data contains compressed TPC clusters }; diff --git a/GPU/GPUTracking/Interface/GPUO2InterfaceConfigurableParam.cxx b/GPU/GPUTracking/Interface/GPUO2InterfaceConfigurableParam.cxx index 764424d50362c..b254c2fd5808f 100644 --- a/GPU/GPUTracking/Interface/GPUO2InterfaceConfigurableParam.cxx +++ b/GPU/GPUTracking/Interface/GPUO2InterfaceConfigurableParam.cxx @@ -103,10 +103,12 @@ GPUSettingsO2 GPUO2InterfaceConfiguration::ReadConfigurableParam(GPUO2InterfaceC obj.configReconstruction = rec; obj.configDisplay = display; obj.configQA = QA; - if (global.continuousMaxTimeBin) { - obj.configGRP.continuousMaxTimeBin = global.continuousMaxTimeBin; - } else { - obj.configGRP.continuousMaxTimeBin = global.tpcTriggeredMode ? 0 : -1; + if (obj.configGRP.continuousMaxTimeBin == 0 || obj.configGRP.continuousMaxTimeBin == -1) { + if (global.continuousMaxTimeBin) { + obj.configGRP.continuousMaxTimeBin = global.continuousMaxTimeBin; + } else { + obj.configGRP.continuousMaxTimeBin = global.tpcTriggeredMode ? 0 : -1; + } } if (global.solenoidBzNominalGPU > -1e6f) { obj.configGRP.solenoidBzNominalGPU = global.solenoidBzNominalGPU; diff --git a/GPU/GPUTracking/Interface/GPUO2InterfaceUtils.cxx b/GPU/GPUTracking/Interface/GPUO2InterfaceUtils.cxx index cc4254f7156cf..f56e3dde1ea48 100644 --- a/GPU/GPUTracking/Interface/GPUO2InterfaceUtils.cxx +++ b/GPU/GPUTracking/Interface/GPUO2InterfaceUtils.cxx @@ -85,8 +85,10 @@ std::unique_ptr GPUO2InterfaceUtils::getFullParam(float solenoidBz, un if (!pConfiguration) { tmpConfig = std::make_unique(); pConfiguration = &tmpConfig; + (*pConfiguration)->configGRP.continuousMaxTimeBin = -1; } else if (!*pConfiguration) { *pConfiguration = std::make_unique(); + (*pConfiguration)->configGRP.continuousMaxTimeBin = -1; } (*pConfiguration)->configGRP.solenoidBzNominalGPU = solenoidBz; if (pO2Settings && *pO2Settings) {