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 TRACKINGITSU_INCLUDE_CONFIGURATION_H_
17#define TRACKINGITSU_INCLUDE_CONFIGURATION_H_
18
19#include <cstdint>
20#ifndef GPUCA_GPUCODE_DEVICE
21#include <limits>
22#include <string>
23#include <vector>
24#endif
25
30
31namespace o2::its
32{
33
34// Steering of dedicated steps in an iteration
47
50 {
51 return LayerMask::span(0, NLayers - 1) & ~InactiveLayerMask;
52 }
53
55 {
56 const auto activeLayers = getActiveLayerMask();
57 return SeedingLayers.empty() ? activeLayers : (SeedingLayers & activeLayers);
58 }
59
61 {
62 return ~(getSeedingLayerMask());
63 }
64
65 int getNSeedingLayers() const noexcept
66 {
67 return getSeedingLayerMask().count();
68 }
69
70 int getMinSeedingClusters() const noexcept
71 {
72 const int minClusters = MinTrackLength - (MaxHoles > 0 ? MaxHoles : 0);
73 const int minClustersWithCells = minClusters > constants::ClustersPerCell ? minClusters : constants::ClustersPerCell;
74 const int nSeedingLayers = getNSeedingLayers();
75 return minClustersWithCells < nSeedingLayers ? minClustersWithCells : nSeedingLayers;
76 }
77
78 int CellMinimumLevel() const noexcept
79 {
81 }
82 int NeighboursPerRoad() const noexcept { return getNSeedingLayers() - 3; }
83 int CellsPerRoad() const noexcept { return getNSeedingLayers() - 2; }
84 int TrackletsPerRoad() const noexcept { return getNSeedingLayers() - 1; }
85 std::string asString() const;
86
88 int NLayers = 7;
89 std::vector<uint32_t> AddTimeError = {0, 0, 0, 0, 0, 0, 0};
90 std::vector<float> LayerZ = {16.333f + 1, 16.333f + 1, 16.333f + 1, 42.140f + 1, 42.140f + 1, 73.745f + 1, 73.745f + 1};
91 std::vector<float> LayerRadii = {2.33959f, 3.14076f, 3.91924f, 19.6213f, 24.5597f, 34.388f, 39.3329f};
92 std::vector<float> LayerxX0 = {5.e-3f, 5.e-3f, 5.e-3f, 1.e-2f, 1.e-2f, 1.e-2f, 1.e-2f};
93 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};
94 std::vector<float> SystErrorY2 = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
95 std::vector<float> SystErrorZ2 = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
96 int ZBins{256};
97 int PhiBins{128};
98 bool UseDiamond = false;
99 float Diamond[3] = {0.f, 0.f, 0.f};
100 float DiamondCov[6] = {25.e-6f, 0.f, 0.f, 25.e-6f, 0.f, 36.f};
101
104 int MaxHoles = 0;
108 float NSigmaCut = 5;
109 float PVres = 1.e-2f;
111 float TrackletMinPt = 0.3f;
117 float MaxChi2NDF = 30.f;
118 int ReseedIfShorter = 6; // reseed for the final fit track with the length shorter than this
119 std::vector<float> MinPt = {0.f, 0.f, 0.f, 0.f};
121 bool RepeatRefitOut = false; // repeat outward refit using inward refit as a seed
122 bool ShiftRefToCluster = true; // TrackFit: after update shift the linearization reference to cluster
124 bool SaveTimeBenchmarks = false;
125 bool DoUPCIteration = false;
131 bool PrintMemory = false; // print allocator usage in epilog report
132 size_t MaxMemory = std::numeric_limits<size_t>::max();
133 bool DropTFUponFailure = false;
134
135 // Selections on tracks sharing clusters
137 float SharedClusterMaxDeltaPhi = 0.05f; // For tracks sharing clusters, maximum allowed delta phi at the cluster position
138 float SharedClusterMaxDeltaEta = 0.03f; // For tracks sharing clusters, maximum allowed delta eta at the cluster position
139 bool SharedClusterOppositeSign = false; // For tracks sharing clusters, require opposite sign of the tracklets
140 int SharedMaxClusters = 0; // Maximal allowed shared clusters (excluding first cluster)
141};
142
144 std::string asString() const;
145
147 std::vector<float> LayerZ = {16.333f + 1, 16.333f + 1, 16.333f + 1, 42.140f + 1, 42.140f + 1, 73.745f + 1, 73.745f + 1};
148 std::vector<float> LayerRadii = {2.33959f, 3.14076f, 3.91924f, 19.6213f, 24.5597f, 34.388f, 39.3329f};
149 int vertPerRofThreshold = 0; // Maximum number of vertices per ROF to trigger second a round
150 int ZBins = 1;
151 int PhiBins = 128;
152 float zCut = -1.f;
153 float phiCut = -1.f;
154 float pairCut = -1.f;
155 float clusterCut = -1.f;
156 float coarseZWindow = -1.f;
157 float seedDedupZCut = -1.f;
158 float refitDedupZCut = -1.f;
159 float duplicateZCut = -1.f;
160 float finalSelectionZCut = -1.f;
162 float tanLambdaCut = -1.f;
163 float NSigmaCut = -1;
170 int phiSpan = -1;
171 int zSpan = -1;
172 bool SaveTimeBenchmarks = false;
173
174 bool useTruthSeeding = false; // overwrite found vertices with MC events
175
176 int nThreads = 1;
177 bool PrintMemory = false; // print allocator usage in epilog report
178 size_t MaxMemory = std::numeric_limits<size_t>::max();
179 bool DropTFUponFailure = false;
180};
181
182namespace TrackingMode
183{
184enum Type : int8_t {
185 Unset = -1, // Special value to leave a default in case we want to override via Configurable Params
186 Sync = 0,
187 Async = 1,
189 Off = 3,
190};
191
192Type fromString(std::string_view str);
193std::string toString(Type mode);
194
195std::vector<TrackingParameters> getTrackingParameters(Type mode);
196std::vector<VertexingParameters> getVertexingParameters(Type mode);
197
198}; // namespace TrackingMode
199
200} // namespace o2::its
201
202#endif /* TRACKINGITSU_INCLUDE_CONFIGURATION_H_ */
GLenum mode
Definition glcorearb.h:266
std::vector< VertexingParameters > getVertexingParameters(Type mode)
Type fromString(std::string_view str)
std::string toString(Type mode)
std::vector< TrackingParameters > getTrackingParameters(Type mode)
constexpr int ClustersPerCell
Definition Constants.h:31
std::string asString() const
std::vector< float > LayerRadii
int MinTrackLength
General parameters.
std::vector< float > SystErrorY2
std::vector< float > LayerZ
LayerMask getActiveLayerMask() const noexcept
float CellDeltaTanLambdaSigma
Cell finding cuts.
std::vector< float > SystErrorZ2
float TrackletMinPt
Trackleting cuts.
LayerMask getSeedingLayerMask() const noexcept
std::vector< float > LayerResolution
int CellMinimumLevel() const noexcept
std::vector< float > LayerxX0
LayerMask getNonSeedingLayerMask() const noexcept
std::vector< float > MinPt
o2::base::PropagatorImpl< float >::MatCorrType CorrType
Fitter parameters.
int CellsPerRoad() const noexcept
int NeighboursPerRoad() const noexcept
int getNSeedingLayers() const noexcept
int TrackletsPerRoad() const noexcept
std::vector< uint32_t > AddTimeError
int getMinSeedingClusters() const noexcept
std::string asString() const
std::vector< float > LayerZ
std::vector< float > LayerRadii
const std::string str