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#ifndef GPUCA_GPUCODE_DEVICE
20#include <array>
21#include <climits>
22#include <vector>
23#include <cmath>
24#endif
25
28
29namespace o2
30{
31namespace its
32{
33
34enum class TrackingMode {
35 Sync,
36 Async,
37 Cosmics,
38 Unset, // Special value to leave a default in case we want to override via Configurable Params
39};
40
41std::string asString(TrackingMode mode);
42std::ostream& operator<<(std::ostream& os, TrackingMode v);
43
44template <typename Param>
45class Configuration : public Param
46{
47 public:
49 {
50 static Configuration<Param> instance;
51 return instance;
52 }
55
56 private:
57 Configuration() = default;
58};
59
62 int CellsPerRoad() const { return NLayers - 2; }
63 int TrackletsPerRoad() const { return NLayers - 1; }
64 std::string asString() const;
65
66 int NLayers = 7;
67 int DeltaROF = 0;
68 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};
69 std::vector<float> LayerRadii = {2.33959f, 3.14076f, 3.91924f, 19.6213f, 24.5597f, 34.388f, 39.3329f};
70 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};
71 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};
72 std::vector<float> SystErrorY2 = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
73 std::vector<float> SystErrorZ2 = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
74 int ZBins{256};
75 int PhiBins{128};
77 bool UseDiamond = false;
78 float Diamond[3] = {0.f, 0.f, 0.f};
79
83 float NSigmaCut = 5;
84 float PVres = 1.e-2f;
86 float TrackletMinPt = 0.3f;
94 float MaxChi2NDF = 30.f;
95 std::vector<float> MinPt = {0.f, 0.f, 0.f, 0.f};
96 unsigned char StartLayerMask = 0x7F;
97 bool FindShortTracks = false;
99 bool SaveTimeBenchmarks = false;
100 bool DoUPCIteration = false;
103 bool UseTrackFollower = false;
109
110 bool PrintMemory = false; // print allocator usage in epilog report
111 size_t MaxMemory = 12000000000UL;
112 bool DropTFUponFailure = false;
113};
114
116 std::string asString() const;
117
118 int nIterations = 1; // Number of vertexing passes to perform
119 int vertPerRofThreshold = 0; // Maximum number of vertices per ROF to trigger second a round
121 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};
122 std::vector<float> LayerRadii = {2.33959f, 3.14076f, 3.91924f, 19.6213f, 24.5597f, 34.388f, 39.3329f};
123 int ZBins{1};
124 int PhiBins{128};
125 int deltaRof = 0;
126 float zCut = 0.002f;
127 float phiCut = 0.005f;
128 float pairCut = 0.04f;
129 float clusterCut = 0.8f;
130 float histPairCut = 0.04f;
131 float tanLambdaCut = 0.002f; // tanLambda = deltaZ/deltaR
132 float lowMultBeamDistCut = 0.1f; // XY cut for low-multiplicity pile up
133 int vertNsigmaCut = 6; // N sigma cut for vertex XY
134 float vertRadiusSigma = 0.33f; // sigma of vertex XY
135 float trackletSigma = 0.01f; // tracklet to vertex sigma
139 int phiSpan = -1;
140 int zSpan = -1;
141 bool SaveTimeBenchmarks = false;
142
143 int nThreads = 1;
144 bool PrintMemory = false; // print allocator usage in epilog report
145 size_t MaxMemory = 12000000000UL;
146 bool DropTFUponFailure = false;
147};
148
150 std::string asString() const;
151
152 size_t tmpCUBBufferSize = 1e5; // In average in pp events there are required 4096 bytes
158 size_t maxNeighboursSize = 1e2;
160 size_t maxRoadPerRofSize = 1e3; // pp!
161 size_t maxLinesCapacity = 1e2;
163 size_t nMaxROFs = 1e3;
165 size_t nROFsPerChunk = 768; // pp defaults
167};
168
169} // namespace its
170} // namespace o2
171
172#endif /* TRACKINGITSU_INCLUDE_CONFIGURATION_H_ */
const Configuration< Param > & operator=(const Configuration< Param > &)=delete
static Configuration< Param > & getInstance()
Configuration(const Configuration< Param > &)=delete
GLenum mode
Definition glcorearb.h:266
const GLdouble * v
Definition glcorearb.h:832
constexpr int ClustersPerCell
Definition Constants.h:53
std::string asString(TrackingMode mode)
std::ostream & operator<<(std::ostream &os, Detector &source)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::string asString() const
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
std::vector< float > LayerxX0
int ClusterSharing
General parameters.
std::vector< float > MinPt
o2::base::PropagatorImpl< float >::MatCorrType CorrType
Fitter parameters.
bool UseTrackFollower
Cluster attachment.
std::string asString() const
std::vector< float > LayerZ
std::string asString() const
std::vector< float > LayerRadii