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
45
47 int CellMinimumLevel() const noexcept
48 {
49 const int minClusters = MinTrackLength - (MaxHoles > 0 ? MaxHoles : 0);
50 const int effectiveMinClusters = minClusters > constants::ClustersPerCell ? minClusters : constants::ClustersPerCell;
51 return effectiveMinClusters - constants::ClustersPerCell + 1;
52 }
53 int NeighboursPerRoad() const noexcept { return NLayers - 3; }
54 int CellsPerRoad() const noexcept { return NLayers - 2; }
55 int TrackletsPerRoad() const noexcept { return NLayers - 1; }
56 std::string asString() const;
57
59 int NLayers = 7;
60 std::vector<uint32_t> AddTimeError = {0, 0, 0, 0, 0, 0, 0};
61 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};
62 std::vector<float> LayerRadii = {2.33959f, 3.14076f, 3.91924f, 19.6213f, 24.5597f, 34.388f, 39.3329f};
63 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};
64 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};
65 std::vector<float> SystErrorY2 = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
66 std::vector<float> SystErrorZ2 = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
67 int ZBins{256};
68 int PhiBins{128};
69 bool UseDiamond = false;
70 float Diamond[3] = {0.f, 0.f, 0.f};
71 float DiamondCov[6] = {25.e-6f, 0.f, 0.f, 25.e-6f, 0.f, 36.f};
72
75 int MaxHoles = 0;
77 float NSigmaCut = 5;
78 float PVres = 1.e-2f;
80 float TrackletMinPt = 0.3f;
86 float MaxChi2NDF = 30.f;
87 int ReseedIfShorter = 6; // reseed for the final fit track with the length shorter than this
88 std::vector<float> MinPt = {0.f, 0.f, 0.f, 0.f};
90 bool RepeatRefitOut = false; // repeat outward refit using inward refit as a seed
91 bool ShiftRefToCluster = true; // TrackFit: after update shift the linearization reference to cluster
93 bool SaveTimeBenchmarks = false;
94 bool DoUPCIteration = false;
97 bool PrintMemory = false; // print allocator usage in epilog report
98 size_t MaxMemory = std::numeric_limits<size_t>::max();
99 bool DropTFUponFailure = false;
100
101 // Selections on tracks sharing clusters
103 float SharedClusterMaxDeltaPhi = 0.05f; // For tracks sharing clusters, maximum allowed delta phi at the cluster position
104 float SharedClusterMaxDeltaEta = 0.03f; // For tracks sharing clusters, maximum allowed delta eta at the cluster position
105 bool SharedClusterOppositeSign = false; // For tracks sharing clusters, require opposite sign of the tracklets
106 int SharedMaxClusters = 0; // Maximal allowed shared clusters (excluding first cluster)
107};
108
110 std::string asString() const;
111
113 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};
114 std::vector<float> LayerRadii = {2.33959f, 3.14076f, 3.91924f, 19.6213f, 24.5597f, 34.388f, 39.3329f};
115 int vertPerRofThreshold = 0; // Maximum number of vertices per ROF to trigger second a round
116 int ZBins = 1;
117 int PhiBins = 128;
118 float zCut = -1.f;
119 float phiCut = -1.f;
120 float pairCut = -1.f;
121 float clusterCut = -1.f;
122 float coarseZWindow = -1.f;
123 float seedDedupZCut = -1.f;
124 float refitDedupZCut = -1.f;
125 float duplicateZCut = -1.f;
126 float finalSelectionZCut = -1.f;
128 float tanLambdaCut = -1.f;
129 float NSigmaCut = -1;
136 int phiSpan = -1;
137 int zSpan = -1;
138 bool SaveTimeBenchmarks = false;
139
140 bool useTruthSeeding = false; // overwrite found vertices with MC events
141
142 int nThreads = 1;
143 bool PrintMemory = false; // print allocator usage in epilog report
144 size_t MaxMemory = std::numeric_limits<size_t>::max();
145 bool DropTFUponFailure = false;
146};
147
148namespace TrackingMode
149{
150enum Type : int8_t {
151 Unset = -1, // Special value to leave a default in case we want to override via Configurable Params
152 Sync = 0,
153 Async = 1,
155 Off = 3,
156};
157
158Type fromString(std::string_view str);
159std::string toString(Type mode);
160
161std::vector<TrackingParameters> getTrackingParameters(Type mode);
162std::vector<VertexingParameters> getVertexingParameters(Type mode);
163
164}; // namespace TrackingMode
165
166} // namespace o2::its
167
168#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
float CellDeltaTanLambdaSigma
Cell finding cuts.
std::vector< float > SystErrorZ2
float TrackletMinPt
Trackleting cuts.
std::vector< float > LayerResolution
int CellMinimumLevel() const noexcept
std::vector< float > LayerxX0
std::vector< float > MinPt
o2::base::PropagatorImpl< float >::MatCorrType CorrType
Fitter parameters.
int CellsPerRoad() const noexcept
int NeighboursPerRoad() const noexcept
int TrackletsPerRoad() const noexcept
std::vector< uint32_t > AddTimeError
std::string asString() const
std::vector< float > LayerZ
std::vector< float > LayerRadii
const std::string str