Project
Loading...
Searching...
No Matches
Configuration.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
15
16#ifndef ALICEO2_ITSMFT_TRACKING_CONFIGURATION_H_
17#define ALICEO2_ITSMFT_TRACKING_CONFIGURATION_H_
18
19#include <cstddef>
20#include <cstdint>
21
22#ifndef GPUCA_GPUCODE_DEVICE
23#include <limits>
24#include <string>
25#include <string_view>
26#include <vector>
27#endif
28
33
34namespace o2::itsmft
35{
36
37inline constexpr int ClustersPerCell = 3;
38
39// Dedicated steps in an iteration.
40enum class IterationStep : uint16_t {
41 FirstPass = 0,
43 UseUPCMask = 2,
45};
47
48// Time-frame execution policy, invariant across tracking passes. Thread
49// scheduling remains in the workflow's resolved TrackerOptions.
51 size_t MaxMemory = std::numeric_limits<size_t>::max();
52 bool DropTFUponFailure = false;
53};
54
55// Parameters that may change from one tracking pass to the next.
58 {
59 return tracking::LayerMask::span(0, NLayers - 1) & ~InactiveLayerMask;
60 }
61
63 {
64 const auto activeLayers = getActiveLayerMask();
65 return SeedingLayers.empty() ? activeLayers : (SeedingLayers & activeLayers);
66 }
67
68 int getNSeedingLayers() const noexcept
69 {
70 return getSeedingLayerMask().count();
71 }
72
73 int getMinSeedingClusters() const noexcept
74 {
75 const int minClusters = MinTrackLength - (MaxHoles > 0 ? MaxHoles : 0);
76 const int minClustersWithCells = minClusters > ClustersPerCell ? minClusters : ClustersPerCell;
77 const int nSeedingLayers = getNSeedingLayers();
78 return minClustersWithCells < nSeedingLayers ? minClustersWithCells : nSeedingLayers;
79 }
80
81 int CellMinimumLevel() const noexcept
82 {
84 }
87 bool UseDiamond = false;
88 float Diamond[3] = {0.f, 0.f, 0.f};
89 float DiamondCov[6] = {25.e-6f, 0.f, 0.f, 25.e-6f, 0.f, 36.f};
90
93 int MaxHoles = 0;
94 // Positional static-graph surfaces disabled for this tracking pass.
96 // Positional layers used to build tracklets, cells, and roads. Empty means all active layers.
98 float NSigmaCut = 5;
99 float PVres = 1.e-2f;
101 float TrackletMinPt = 0.3f;
104 float MaxChi2NDF = 30.f;
105 std::vector<float> MinPt = {0.f, 0.f, 0.f, 0.f};
107 bool RepeatRefitOut = false; // Repeat outward refit using inward refit as a seed.
108 bool ShiftRefToCluster = true; // Shift the linearization reference to the cluster after an update.
111 // Track-sharing selections.
113 float SharedClusterMaxDeltaPhi = 0.05f; // Maximum delta phi at a shared cluster.
114 float SharedClusterMaxDeltaEta = 0.03f; // Maximum delta eta at a shared cluster.
115 bool SharedClusterOppositeSign = false; // Require opposite-sign tracklets.
116 int SharedMaxClusters = 0; // Maximum shared clusters, excluding the first.
117};
118
119// Detector inputs accepted by the configuration interface. Tracker consumes
120// these once to construct DetectorConfiguration; they are not retained in the
121// per-iteration configuration.
123 std::vector<uint32_t> AddTimeError = {0, 0, 0, 0, 0, 0, 0};
124 std::vector<float> LayerResolution = {5.e-4f, 5.e-4f, 5.e-4f, 5.e-4f, 5.e-4f, 5.e-4f, 5.e-4f};
125 std::vector<float> SystError2Row = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}; // Systematic row error squared per layer (ALPIDE X).
126 std::vector<float> SystError2Col = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}; // Systematic column error squared per layer (ALPIDE Z).
127 int ColBins{256}; // ITS: ZBins
128 int RowBins{128}; // ITS: PhiBins
129};
130
131// Single-pass host defaults/input bundle. Production plans store detector
132// inputs and execution policy once, separately from the iteration records.
135
141
142namespace TrackingMode
143{
144enum Type : int8_t {
145 Unset = -1,
146 Sync = 0,
147 Async = 1,
149 Off = 3,
150};
151
152Type fromString(std::string_view str);
153std::string toString(Type mode);
155
156} // namespace TrackingMode
157
158} // namespace o2::itsmft
159
160#endif /* ALICEO2_ITSMFT_TRACKING_CONFIGURATION_H_ */
int ID
Detector identifiers: continuous, starting from 0.
Definition DetID.h:63
GLenum mode
Definition glcorearb.h:266
std::string toString(Type mode)
TrackingPlan getTrackingPlan(o2::detectors::DetID::ID detId, Type mode)
Type fromString(std::string_view str)
constexpr int ITSNLayers
ITS CA layer count.
constexpr int ClustersPerCell
std::vector< uint32_t > AddTimeError
std::vector< float > SystError2Col
std::vector< float > SystError2Row
std::vector< float > LayerResolution
int MinTrackLength
General parameters.
int getMinSeedingClusters() const noexcept
int getNSeedingLayers() const noexcept
int CellMinimumLevel() const noexcept
tracking::LayerMask SeedingLayers
float TrackletMinPt
Trackleting cuts.
tracking::LayerMask getActiveLayerMask() const noexcept
tracking::LayerMask getSeedingLayerMask() const noexcept
tracking::LayerMask StartLayerMask
tracking::LayerMask InactiveLayerMask
float MaxChi2ClusterAttachment
Fitter parameters.
TrackingExecutionPolicy execution
DetectorParameters detector
std::vector< IterationParameters > iterations
const std::string str