Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ struct TrackerParamConfig : public o2::conf::ConfigurableParamHelper<TrackerPara
bool overrideBeamEstimation = false; // use beam position from meanVertex CCDB object
int trackingMode = -1; // -1: unset, 0=sync, 1=async, 2=cosmics used by gpuwf only
bool doUPCIteration = false; // Perform an additional iteration for UPC events on tagged vertices. You want to combine this config with VertexerParamConfig.nIterations=2
int nIterations = MaxIter; // overwrite the number of iterations

int nThreads = 1;
bool printMemory = false;
Expand Down
4 changes: 4 additions & 0 deletions Detectors/ITSMFT/ITS/tracking/src/Configuration.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,10 @@ std::vector<TrackingParameters> TrackingMode::getTrackingParameters(TrackingMode
}
}

if (trackParams.size() > tc.nIterations) {
trackParams.resize(tc.nIterations);
}

return trackParams;
}

Expand Down
41 changes: 17 additions & 24 deletions Detectors/ITSMFT/ITS/workflow/src/RecoWorkflow.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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<InputSpec>;
static CompletionPolicyData gPolicyData;
static std::shared_ptr<o2::gpu::GPURecoWorkflowSpec> gTask;

namespace o2
{
namespace its
{
namespace reco_workflow
namespace o2::its::reco_workflow
{

framework::WorkflowSpec getWorkflow(bool useMC,
Expand All @@ -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<o2::base::GRPGeomRequest>(false, true, false, true, true,
Expand All @@ -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<o2::gpu::GPURecoWorkflowSpec>(&gPolicyData, cfg, std::vector<int>(), 0, ggRequest);
gTask = task;
static std::vector<InputSpec> policyData;
static std::shared_ptr<o2::gpu::GPURecoWorkflowSpec> task = std::make_shared<o2::gpu::GPURecoWorkflowSpec>(&policyData, cfg, std::vector<int>(), 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<o2::gpu::GPURecoWorkflowSpec>(task)},
taskOptions});
.name = "its-gpu-tracker",
.inputs = taskInputs,
.outputs = task->outputs(),
.algorithm = AlgorithmSpec{adoptTask<o2::gpu::GPURecoWorkflowSpec>(task)},
.options = taskOptions});
} else {
specs.emplace_back(o2::its::getTrackerSpec(useMC, useGeom, useTrig, trmode, overrideBeamPosition, dtype));
}
Expand All @@ -99,6 +94,4 @@ framework::WorkflowSpec getWorkflow(bool useMC,
return specs;
}

} // namespace reco_workflow
} // namespace its
} // namespace o2
} // namespace o2::its::reco_workflow