Skip to content

Commit e5b3ec4

Browse files
committed
ALICE3: use track extension + allow configuring passes via JSON
1 parent 492495f commit e5b3ec4

2 files changed

Lines changed: 43 additions & 4 deletions

File tree

Detectors/Upgrades/ALICE3/GlobalReconstruction/workflow/README.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,10 @@ The tracking configuration is provided via a JSON file that specifies:
8181
"SaveTimeBenchmarks": false,
8282
"DoUPCIteration": false,
8383
"FataliseUponFailure": true,
84-
"UseTrackFollower": true,
85-
"UseTrackFollowerTop": false,
86-
"UseTrackFollowerBot": false,
87-
"UseTrackFollowerMix": true,
84+
"TrackFollower": "mix",
8885
"TrackFollowerNSigmaCutZ": 1.0,
8986
"TrackFollowerNSigmaCutPhi": 1.0,
87+
"TrackFollowerBeamWidth": 1,
9088
"createArtefactLabels": false,
9189
"PrintMemory": false,
9290
"DropTFUponFailure": false

Detectors/Upgrades/ALICE3/GlobalReconstruction/workflow/src/TrackerSpec.cxx

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,15 @@ std::vector<o2::its::TrackingParameters> TrackerDPL::createTrackingParamsFromCon
9696
auto loadTrackingParamsFromJson = [](std::vector<o2::its::TrackingParameters>& trackingParams, const nlohmann::json& paramConfigJson) {
9797
for (const auto& paramConfig : paramConfigJson) {
9898
o2::its::TrackingParameters params;
99+
auto applyPassFlag = [&](const char* name, o2::its::IterationStep step) {
100+
if (paramConfig.contains(name)) {
101+
if (paramConfig[name].get<bool>()) {
102+
params.PassFlags.set(step);
103+
} else {
104+
params.PassFlags.reset(step);
105+
}
106+
}
107+
};
99108

100109
if (paramConfig.contains("NLayers")) {
101110
params.NLayers = paramConfig["NLayers"].get<int>();
@@ -165,6 +174,37 @@ std::vector<o2::its::TrackingParameters> TrackerDPL::createTrackingParamsFromCon
165174
if (paramConfig.contains("CreateArtefactLabels")) {
166175
params.CreateArtefactLabels = paramConfig["CreateArtefactLabels"].get<bool>();
167176
}
177+
if (paramConfig.contains("TrackFollower")) {
178+
const auto mode = paramConfig["TrackFollower"].get<std::string>();
179+
if (mode == "top" || mode == "outward") {
180+
params.PassFlags.set(o2::its::IterationStep::TrackFollowerTop);
181+
} else if (mode == "bot" || mode == "bottom" || mode == "inward") {
182+
params.PassFlags.set(o2::its::IterationStep::TrackFollowerBot);
183+
} else if (mode == "mix" || mode == "both") {
184+
params.PassFlags.set(o2::its::IterationStep::TrackFollowerTop);
185+
params.PassFlags.set(o2::its::IterationStep::TrackFollowerBot);
186+
} else if (mode != "off") {
187+
LOGP(fatal, "Invalid ALICE3 TRK tracking parameter TrackFollower: {}", mode);
188+
}
189+
}
190+
if (paramConfig.contains("TrackFollowerNSigmaCutZ")) {
191+
params.TrackFollowerNSigmaCutZ = paramConfig["TrackFollowerNSigmaCutZ"].get<float>();
192+
}
193+
if (paramConfig.contains("TrackFollowerNSigmaCutPhi")) {
194+
params.TrackFollowerNSigmaCutPhi = paramConfig["TrackFollowerNSigmaCutPhi"].get<float>();
195+
}
196+
if (paramConfig.contains("TrackFollowerBeamWidth")) {
197+
params.TrackFollowerBeamWidth = std::max(1, paramConfig["TrackFollowerBeamWidth"].get<int>());
198+
}
199+
applyPassFlag("FirstPass", o2::its::IterationStep::FirstPass);
200+
applyPassFlag("RebuildClusterLUT", o2::its::IterationStep::RebuildClusterLUT);
201+
applyPassFlag("UseUPCMask", o2::its::IterationStep::UseUPCMask);
202+
applyPassFlag("SelectUPCVertices", o2::its::IterationStep::SelectUPCVertices);
203+
applyPassFlag("ResetVertices", o2::its::IterationStep::ResetVertices);
204+
applyPassFlag("SkipROFsAboveThreshold", o2::its::IterationStep::SkipROFsAboveThreshold);
205+
applyPassFlag("MarkVerticesAsUPC", o2::its::IterationStep::MarkVerticesAsUPC);
206+
applyPassFlag("TrackFollowerTop", o2::its::IterationStep::TrackFollowerTop);
207+
applyPassFlag("TrackFollowerBot", o2::its::IterationStep::TrackFollowerBot);
168208
if (paramConfig.contains("PrintMemory")) {
169209
params.PrintMemory = paramConfig["PrintMemory"].get<bool>();
170210
}
@@ -282,6 +322,7 @@ void TrackerDPL::run(ProcessingContext& pc)
282322
trackerTraits.adoptTimeFrame(static_cast<o2::its::TimeFrame<11>*>(&timeFrame));
283323
itsTracker.adoptTimeFrame(timeFrame);
284324
trackerTraits.updateTrackingParameters(trackingParams);
325+
timeFrame.initTrackerTopologies(trackingParams, 11);
285326

286327
int nRofs{0};
287328
if (!mHitRecoConfig.empty()) {

0 commit comments

Comments
 (0)