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
29
30namespace o2::its
31{
32
33// Steering of dedicated steps in an iteration
44
46 int CellMinimumLevel() const noexcept
47 {
48 const int minClusters = MinTrackLength - (MaxHoles > 0 ? MaxHoles : 0);
49 const int effectiveMinClusters = minClusters > constants::ClustersPerCell ? minClusters : constants::ClustersPerCell;
50 return effectiveMinClusters - constants::ClustersPerCell + 1;
51 }
52 int NeighboursPerRoad() const noexcept { return NLayers - 3; }
53 int CellsPerRoad() const noexcept { return NLayers - 2; }
54 int TrackletsPerRoad() const noexcept { return NLayers - 1; }
55 std::string asString() const;
56
58 int NLayers = 7;
59 std::vector<uint32_t> AddTimeError = {0, 0, 0, 0, 0, 0, 0};
60 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};
61 std::vector<float> LayerRadii = {2.33959f, 3.14076f, 3.91924f, 19.6213f, 24.5597f, 34.388f, 39.3329f};
62 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};
63 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};
64 std::vector<float> SystErrorY2 = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
65 std::vector<float> SystErrorZ2 = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
66 int ZBins{256};
67 int PhiBins{128};
68 bool UseDiamond = false;
69 float Diamond[3] = {0.f, 0.f, 0.f};
70 float DiamondCov[6] = {25.e-6f, 0.f, 0.f, 25.e-6f, 0.f, 36.f};
71
76 int MaxHoles = 0;
77 uint16_t HoleLayerMask = 0;
78 float NSigmaCut = 5;
79 float PVres = 1.e-2f;
81 float TrackletMinPt = 0.3f;
87 float MaxChi2NDF = 30.f;
88 int ReseedIfShorter = 6; // reseed for the final fit track with the length shorter than this
89 std::vector<float> MinPt = {0.f, 0.f, 0.f, 0.f};
90 uint16_t StartLayerMask = 0x7F;
91 bool RepeatRefitOut = false; // repeat outward refit using inward refit as a seed
92 bool ShiftRefToCluster = true; // TrackFit: after update shift the linearization reference to cluster
94 bool SaveTimeBenchmarks = false;
95 bool DoUPCIteration = false;
98 bool PrintMemory = false; // print allocator usage in epilog report
99 size_t MaxMemory = std::numeric_limits<size_t>::max();
100 bool DropTFUponFailure = false;
101};
102
104 std::string asString() const;
105
107 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};
108 std::vector<float> LayerRadii = {2.33959f, 3.14076f, 3.91924f, 19.6213f, 24.5597f, 34.388f, 39.3329f};
109 int vertPerRofThreshold = 0; // Maximum number of vertices per ROF to trigger second a round
110 int ZBins = 1;
111 int PhiBins = 128;
112 float zCut = -1.f;
113 float phiCut = -1.f;
114 float pairCut = -1.f;
115 float clusterCut = -1.f;
116 float coarseZWindow = -1.f;
117 float seedDedupZCut = -1.f;
118 float refitDedupZCut = -1.f;
119 float duplicateZCut = -1.f;
120 float finalSelectionZCut = -1.f;
122 float tanLambdaCut = -1.f;
123 float NSigmaCut = -1;
130 int phiSpan = -1;
131 int zSpan = -1;
132 bool SaveTimeBenchmarks = false;
133
134 bool useTruthSeeding = false; // overwrite found vertices with MC events
135
136 int nThreads = 1;
137 bool PrintMemory = false; // print allocator usage in epilog report
138 size_t MaxMemory = std::numeric_limits<size_t>::max();
139 bool DropTFUponFailure = false;
140};
141
142namespace TrackingMode
143{
144enum Type : int8_t {
145 Unset = -1, // Special value to leave a default in case we want to override via Configurable Params
146 Sync = 0,
147 Async = 1,
149 Off = 3,
150};
151
152Type fromString(std::string_view str);
153std::string toString(Type mode);
154
155std::vector<TrackingParameters> getTrackingParameters(Type mode);
156std::vector<VertexingParameters> getVertexingParameters(Type mode);
157
158}; // namespace TrackingMode
159
160} // namespace o2::its
161
162#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
bool AllowSharingFirstCluster
General parameters.
std::vector< float > LayerRadii
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