diff --git a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackingConfigParam.h b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackingConfigParam.h index 8de80d5e4cd07..0497fdfc9f55f 100644 --- a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackingConfigParam.h +++ b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackingConfigParam.h @@ -94,6 +94,7 @@ struct TrackerParamConfig : public o2::conf::ConfigurableParamHelper TrackingMode::getTrackingParameters(TrackingMode } } + if (trackParams.size() > tc.nIterations) { + trackParams.resize(tc.nIterations); + } + return trackParams; } diff --git a/Detectors/ITSMFT/ITS/workflow/src/RecoWorkflow.cxx b/Detectors/ITSMFT/ITS/workflow/src/RecoWorkflow.cxx index a72c26a3681e1..948d2c1b53009 100644 --- a/Detectors/ITSMFT/ITS/workflow/src/RecoWorkflow.cxx +++ b/Detectors/ITSMFT/ITS/workflow/src/RecoWorkflow.cxx @@ -17,21 +17,15 @@ #include "ITSWorkflow/TrackerSpec.h" #include "ITSWorkflow/CookedTrackerSpec.h" #include "ITSWorkflow/TrackWriterSpec.h" +#include "ITStracking/TrackingConfigParam.h" #include "ITSMFTWorkflow/DigitReaderSpec.h" #include "GlobalTrackingWorkflowWriters/IRFrameWriterSpec.h" #include "GPUWorkflow/GPUWorkflowSpec.h" #include "Framework/CCDBParamSpec.h" // Dummy TPC completion policy data -using CompletionPolicyData = std::vector; -static CompletionPolicyData gPolicyData; -static std::shared_ptr gTask; -namespace o2 -{ -namespace its -{ -namespace reco_workflow +namespace o2::its::reco_workflow { framework::WorkflowSpec getWorkflow(bool useMC, @@ -56,14 +50,15 @@ framework::WorkflowSpec getWorkflow(bool useMC, if (!disableRootOutput) { specs.emplace_back(o2::its::getClusterWriterSpec(useMC)); } - if (trmode != TrackingMode::Off) { + if ((trmode != TrackingMode::Off) && (TrackerParamConfig::Instance().trackingMode != TrackingMode::Off)) { if (useCAtracker) { if (useGPUWF) { - o2::gpu::GPURecoWorkflowSpec::Config cfg; - cfg.runITSTracking = true; - cfg.itsTriggerType = useTrig; - cfg.itsOverrBeamEst = overrideBeamPosition; - cfg.processMC = useMC; + o2::gpu::GPURecoWorkflowSpec::Config cfg{ + .itsTriggerType = useTrig, + .processMC = useMC, + .runITSTracking = true, + .itsOverrBeamEst = overrideBeamPosition, + }; Inputs ggInputs; auto ggRequest = std::make_shared(false, true, false, true, true, @@ -73,18 +68,18 @@ framework::WorkflowSpec getWorkflow(bool useMC, ggRequest->addInput({"itsTGeo", "ITS", "GEOMTGEO", 0, Lifetime::Condition, framework::ccdbParamSpec("ITS/Config/Geometry")}, ggInputs); } - auto task = std::make_shared(&gPolicyData, cfg, std::vector(), 0, ggRequest); - gTask = task; + static std::vector policyData; + static std::shared_ptr task = std::make_shared(&policyData, cfg, std::vector(), 0, ggRequest); Inputs taskInputs = task->inputs(); Options taskOptions = task->options(); std::move(ggInputs.begin(), ggInputs.end(), std::back_inserter(taskInputs)); specs.emplace_back(DataProcessorSpec{ - "its-gpu-tracker", - taskInputs, - task->outputs(), - AlgorithmSpec{adoptTask(task)}, - taskOptions}); + .name = "its-gpu-tracker", + .inputs = taskInputs, + .outputs = task->outputs(), + .algorithm = AlgorithmSpec{adoptTask(task)}, + .options = taskOptions}); } else { specs.emplace_back(o2::its::getTrackerSpec(useMC, useGeom, useTrig, trmode, overrideBeamPosition, dtype)); } @@ -99,6 +94,4 @@ framework::WorkflowSpec getWorkflow(bool useMC, return specs; } -} // namespace reco_workflow -} // namespace its -} // namespace o2 +} // namespace o2::its::reco_workflow