@@ -58,7 +58,35 @@ framework::WorkflowSpec getWorkflow(bool useMC,
5858 }
5959 if (!trmode.empty ()) {
6060 if (useCAtracker) {
61- specs.emplace_back (o2::its::getTrackerSpec (useMC, useGeom, useTrig, trmode, overrideBeamPosition, dtype));
61+ if (useGPUWF) {
62+ o2::gpu::GPURecoWorkflowSpec::Config cfg;
63+ cfg.runITSTracking = true ;
64+ cfg.itsTriggerType = useTrig;
65+ cfg.itsOverrBeamEst = overrideBeamPosition;
66+
67+ Inputs ggInputs;
68+ auto ggRequest = std::make_shared<o2::base::GRPGeomRequest>(false , true , false , true , true ,
69+ useGeom ? o2::base::GRPGeomRequest::Aligned : o2::base::GRPGeomRequest::None,
70+ ggInputs, true );
71+ if (!useGeom) {
72+ ggRequest->addInput ({" itsTGeo" , " ITS" , " GEOMTGEO" , 0 , Lifetime::Condition, framework::ccdbParamSpec (" ITS/Config/Geometry" )}, ggInputs);
73+ }
74+
75+ auto task = std::make_shared<o2::gpu::GPURecoWorkflowSpec>(&gPolicyData , cfg, std::vector<int >(), 0 , ggRequest);
76+ gTask = task;
77+ Inputs taskInputs = task->inputs ();
78+ Options taskOptions = task->options ();
79+ std::move (ggInputs.begin (), ggInputs.end (), std::back_inserter (taskInputs));
80+
81+ specs.emplace_back (DataProcessorSpec{
82+ " its-tracker" ,
83+ taskInputs,
84+ task->outputs (),
85+ AlgorithmSpec{adoptTask<o2::gpu::GPURecoWorkflowSpec>(task)},
86+ taskOptions});
87+ } else {
88+ specs.emplace_back (o2::its::getTrackerSpec (useMC, useGeom, useTrig, trmode, overrideBeamPosition, dtype));
89+ }
6290 } else {
6391 specs.emplace_back (o2::its::getCookedTrackerSpec (useMC, useGeom, useTrig, trmode));
6492 }
0 commit comments