Skip to content

Commit 155bb92

Browse files
committed
ITS: testing different configuration of reconstruction
1 parent f87bce2 commit 155bb92

3 files changed

Lines changed: 31 additions & 8 deletions

File tree

Detectors/ITSMFT/ITS/tracking/include/ITStracking/Constants.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ constexpr int UnusedIndex = -1; // global unused flag
3333
constexpr float UnsetValue = -999.f; // global unset value
3434
constexpr float Radl = 9.36f; // Radiation length of Si [cm]
3535
constexpr float Rho = 2.33f; // Density of Si [g/cm^3]
36-
constexpr int MaxIter = 4; // Max. supported iterations
36+
constexpr int MaxIter = 8; // Max. supported iterations
3737
constexpr int MaxSelectedTrackletsPerCluster = 100; // vertexer: max lines per cluster
3838
constexpr int GPUBlocks = 60; // default CUDA/HIP launch blocks
3939
constexpr int GPUThreads = 256; // default CUDA/HIP launch threads

Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackingConfigParam.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ struct TrackerParamConfig : public o2::conf::ConfigurableParamHelper<TrackerPara
9191
bool overrideBeamEstimation = false; // use beam position from meanVertex CCDB object
9292
int trackingMode = -1; // -1: unset, 0=sync, 1=async, 2=cosmics used by gpuwf only
9393
bool doUPCIteration = false; // Perform an additional iteration for UPC events on tagged vertices. You want to combine this config with VertexerParamConfig.nIterations=2
94-
int nIterations = constants::MaxIter; // overwrite the number of iterations
94+
int nIterations = 0; // overwrite the number of iterations, 0 keeps the mode default
9595
int reseedIfShorter = 6; // for the final refit reseed the track with circle if they are shorter than this value
9696
bool shiftRefToCluster{true}; // TrackFit: after update shift the linearization reference to cluster
9797
bool repeatRefitOut{false}; // repeat outward refit using inward refit as a seed

Detectors/ITSMFT/ITS/tracking/src/Configuration.cxx

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ std::vector<TrackingParameters> TrackingMode::getTrackingParameters(TrackingMode
141141
std::vector<TrackingParameters> trackParams;
142142

143143
if (mode == TrackingMode::Async) {
144-
trackParams.resize(tc.doUPCIteration ? 4 : 3);
144+
trackParams.resize(tc.doUPCIteration ? 5 : 3);
145145
trackParams[1].TrackletMinPt = 0.2f;
146146
trackParams[1].CellDeltaTanLambdaSigma *= 2.;
147147
trackParams[2].TrackletMinPt = 0.1f;
@@ -157,10 +157,29 @@ std::vector<TrackingParameters> TrackingMode::getTrackingParameters(TrackingMode
157157
trackParams[2].MinPt[3] = 1.f / 6; // 4cl
158158

159159
trackParams[2].StartLayerMask = (1 << 6) + (1 << 3);
160+
trackParams[3] = trackParams[2];
161+
162+
trackParams[2].SeedingLayers = 15;
163+
trackParams[2].TrackFollowerNSigmaCutPhi = 5.f;
164+
trackParams[2].TrackFollowerNSigmaCutZ = 5.f;
165+
160166
if (tc.doUPCIteration) {
161-
trackParams[3].MinTrackLength = 4;
162-
trackParams[3].TrackletMinPt = 0.1f;
163-
trackParams[3].CellDeltaTanLambdaSigma *= 4.;
167+
trackParams[4].MinTrackLength = 4;
168+
trackParams[4].TrackletMinPt = 0.1f;
169+
trackParams[4].CellDeltaTanLambdaSigma *= 4.;
170+
}
171+
if (tc.nIterations > static_cast<int>(trackParams.size())) {
172+
const auto requestedIterations = std::min(tc.nIterations, constants::MaxIter);
173+
const auto extraIteration = trackParams[2];
174+
if (tc.doUPCIteration) {
175+
const auto bottomExtensionIteration = trackParams[trackParams.size() - 2];
176+
const auto upcIteration = trackParams.back();
177+
trackParams.resize(requestedIterations, extraIteration);
178+
trackParams[trackParams.size() - 2] = bottomExtensionIteration;
179+
trackParams.back() = upcIteration;
180+
} else {
181+
trackParams.resize(requestedIterations, extraIteration);
182+
}
164183
}
165184
for (int ip = 0; ip < (int)trackParams.size(); ip++) {
166185
auto& param = trackParams[ip];
@@ -204,8 +223,12 @@ std::vector<TrackingParameters> TrackingMode::getTrackingParameters(TrackingMode
204223
param.PassFlags.reset();
205224
}
206225
trackParams[0].PassFlags.set(IterationStep::FirstPass, IterationStep::RebuildClusterLUT);
226+
if (trackParams.size() > 2) {
227+
trackParams[2].PassFlags.set(IterationStep::TrackFollowerTop);
228+
}
207229
if (trackParams.size() > 3 && tc.doUPCIteration) {
208-
trackParams[3].PassFlags.set(IterationStep::UseUPCMask, IterationStep::RebuildClusterLUT, IterationStep::SelectUPCVertices);
230+
trackParams[trackParams.size() - 2].PassFlags.set(IterationStep::TrackFollowerBot);
231+
trackParams.back().PassFlags.set(IterationStep::UseUPCMask, IterationStep::RebuildClusterLUT, IterationStep::SelectUPCVertices);
209232
}
210233
float bFactor = std::abs(o2::base::Propagator::Instance()->getNominalBz()) / 5.0066791f;
211234
float bFactorTracklets = bFactor < 0.01f ? 1.f : bFactor; // for tracklets only
@@ -280,7 +303,7 @@ std::vector<TrackingParameters> TrackingMode::getTrackingParameters(TrackingMode
280303
p.UseDiamond = tc.useDiamond;
281304
}
282305

283-
if (trackParams.size() > tc.nIterations) {
306+
if (tc.nIterations > 0 && trackParams.size() > static_cast<size_t>(tc.nIterations)) {
284307
trackParams.resize(tc.nIterations);
285308
}
286309

0 commit comments

Comments
 (0)