Skip to content

Commit fc218b9

Browse files
committed
ITS: distinguish inactive layers from track holes
Add an InactiveLayerMask to TrackingParameters to represent detector layers that are absent for a given input or configuration. Inactive layers remain skippable, but they do not inflate the effective seed length or consume the ordinary hole budget. Guard the multiple-scattering helper against zero material so inactive layers can be configured with no material budget.
1 parent 478e887 commit fc218b9

5 files changed

Lines changed: 9 additions & 2 deletions

File tree

Detectors/ITSMFT/ITS/tracking/GPU/cuda/TrackerTraitsGPU.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ void TrackerTraitsGPU<NLayers>::findRoads(const int iteration)
308308
const bool extendTop = this->mTrkParams[iteration].PassFlags[IterationStep::TrackFollowerTop];
309309
const bool extendBot = this->mTrkParams[iteration].PassFlags[IterationStep::TrackFollowerBot];
310310
const bool extendTracks = extendTop || extendBot;
311-
const auto nonCountingLayers = ~this->mTrkParams[iteration].getSeedingLayerMask();
311+
const auto nonCountingLayers = this->mTrkParams[iteration].InactiveLayerMask | ~this->mTrkParams[iteration].getSeedingLayerMask();
312312
for (int startLevel{this->mTrkParams[iteration].CellsPerRoad()}; startLevel >= this->mTrkParams[iteration].CellMinimumLevel(); --startLevel) {
313313
bounded_vector<TrackSeed<NLayers>> trackSeeds(this->getMemoryPool().get());
314314
for (int startCellTopologyId{0}; startCellTopologyId < hostTopology.nCells; ++startCellTopologyId) {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ struct TrackingParameters {
8787
int MinTrackLength = 7;
8888
int MaxHoles = 0;
8989
LayerMask HoleLayerMask = 0;
90+
LayerMask InactiveLayerMask = 0;
9091
LayerMask SeedingLayers = 0;
9192
float NSigmaCut = 5;
9293
float PVres = 1.e-2f;

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,9 @@ GPUhdi() constexpr float SqDiff(float x, float y)
122122

123123
GPUhdi() float MSangle(float mass, float p, float xX0)
124124
{
125+
if (xX0 <= 0.f) {
126+
return 0.f;
127+
}
125128
float beta = p / o2::gpu::CAMath::Hypot(mass, p);
126129
return 0.0136f * o2::gpu::CAMath::Sqrt(xX0) * (1.f + 0.038f * o2::gpu::CAMath::Log(xX0)) / (beta * p);
127130
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ std::string TrackingParameters::asString() const
5959
if (MaxHoles) {
6060
str += std::format(" MaxHoles:{} HoleMask:{}", MaxHoles, HoleLayerMask.asString());
6161
}
62+
if (!InactiveLayerMask.empty()) {
63+
str += std::format(" InactiveMask:{}", InactiveLayerMask.asString());
64+
}
6265
if (!SeedingLayers.empty()) {
6366
str += std::format(" SeedingLayers:{}", SeedingLayers.asString());
6467
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -759,7 +759,7 @@ void TrackerTraits<NLayers>::findRoads(const int iteration)
759759
unsortedClusters[iLayer] = mTimeFrame->getUnsortedClusters()[iLayer].data();
760760
}
761761
const auto topology = mTimeFrame->getTrackingTopologyView();
762-
const auto nonCountingLayers = ~mTrkParams[iteration].getSeedingLayerMask();
762+
const auto nonCountingLayers = mTrkParams[iteration].InactiveLayerMask | ~mTrkParams[iteration].getSeedingLayerMask();
763763
for (int startLevel{mTrkParams[iteration].CellsPerRoad()}; startLevel >= mTrkParams[iteration].CellMinimumLevel(); --startLevel) {
764764

765765
const track::TrackSeedSelector<NLayers> seedFilter{1.e3f, mTrkParams[iteration].MaxChi2NDF * ((startLevel + 2) * 2 - 5), mTrkParams[iteration].MaxHoles, mTrkParams[iteration].MinTrackLength, mTrkParams[iteration].HoleLayerMask, nonCountingLayers};

0 commit comments

Comments
 (0)