Project
Loading...
Searching...
No Matches
TrackingConfigParam.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.
11
12#ifndef ALICEO2_ITSDPLTRACKINGPARAM_H_
13#define ALICEO2_ITSDPLTRACKINGPARAM_H_
14
17
18namespace o2::its
19{
20
21struct VertexerParamConfig : public o2::conf::ConfigurableParamHelper<VertexerParamConfig> {
22 bool saveTimeBenchmarks = false; // dump metrics on file
23
24 int nIterations = 1; // Number of vertexing passes to perform.
25 int vertPerRofThreshold = 0; // Maximum number of vertices per ROF to trigger second a iteration.
26 bool allowSingleContribClusters = false; // attempt to find vertices in case of a single tracklet found.
27 int deltaRof = 0; // Number of ROFs to be considered for the vertexing.
28
29 // geometrical cuts for tracklet selection
30 float zCut = 0.002f;
31 float phiCut = 0.005f;
32 float pairCut = 0.04f;
33 float clusterCut = 0.8f;
34 float histPairCut = 0.04f;
35 float tanLambdaCut = 0.002f; // tanLambda = deltaZ/deltaR
36 float lowMultBeamDistCut = 0.1f; // XY cut for low-multiplicity pile up
37 int vertNsigmaCut = 4; // N sigma cut for vertex XY
38 float vertRadiusSigma = 0.05f; // sigma of vertex XY
39 float trackletSigma = 0.01f; // tracklet to vertex sigma
40 float maxZPositionAllowed = 25.f; // 4x sZ of the beam
41
42 // Artefacts selections
43 int clusterContributorsCut = 16; // minimum number of contributors for the second vertex found in the same ROF (pileup cut)
45 int phiSpan = -1;
46 int zSpan = -1;
47 int ZBins = 1; // z-phi index table configutation: number of z bins
48 int PhiBins = 128; // z-phi index table configutation: number of phi bins
49
50 int nThreads = 1;
51 bool printMemory = false;
52 size_t maxMemory = 12000000000UL;
53 bool dropTFUponFailure = false;
54
55 O2ParamDef(VertexerParamConfig, "ITSVertexerParam");
56};
57
58struct TrackerParamConfig : public o2::conf::ConfigurableParamHelper<TrackerParamConfig> {
59 // Use TGeo for mat. budget
60 static const int MaxIter = 4;
61 static const int MinTrackLength = 4;
62 static const int MaxTrackLength = 7;
63 bool useMatCorrTGeo = false; // use full geometry to corect for material budget accounting in the fits. Default is to use the material budget LUT.
64 bool useFastMaterial = false; // use faster material approximation for material budget accounting in the fits.
65 int deltaRof = 0; // configure the width of the window in ROFs to be considered for the tracking.
66 int minTrackLgtIter[MaxIter] = {}; // minimum track length at each iteration, used only if >0, otherwise use code defaults
67 uint8_t startLayerMask[MaxIter] = {}; // mask of start layer for this iteration (if >0)
68 float minPtIterLgt[MaxIter * (MaxTrackLength - MinTrackLength + 1)] = {}; // min.pT for given track length at this iteration, used only if >0, otherwise use code defaults
69 float sysErrY2[7] = {0}; // systematic error^2 in Y per layer
70 float sysErrZ2[7] = {0}; // systematic error^2 in Z per layer
72 float maxChi2NDF = -1.f;
73 float nSigmaCut = -1.f;
74 float deltaTanLres = -1.f;
75 float minPt = -1.f;
76 float pvRes = -1.f;
77 int LUTbinsPhi = -1;
78 int LUTbinsZ = -1;
79 float diamondPos[3] = {0.f, 0.f, 0.f}; // override the position of the vertex
80 bool useDiamond = false; // enable overriding the vertex position
81 int useTrackFollower = -1; // bit 0: allow mixing implies bits 1&2; bit 1: topwards; bit2: downwards; => 0 off
82 float trackFollowerNSigmaZ = 1.f; // sigma in z-cut for track-following search rectangle
83 float trackFollowerNSigmaPhi = 1.f; // sigma in phi-cut for track-following search rectangle
87 int nROFsPerIterations = 0; // size of the slice of ROFs to be processed at a time, preferably integer divisors of nROFs per TF, to balance the iterations.
88 int nOrbitsPerIterations = 0; // not implemented: size of the slice of ROFs to be processed at a time, computed using the number of ROFs per orbit.
89 bool perPrimaryVertexProcessing = false; // perform the full tracking considering the vertex hypotheses one at the time.
90 bool saveTimeBenchmarks = false; // dump metrics on file
91 bool overrideBeamEstimation = false; // use beam position from meanVertex CCDB object
92 int trackingMode = -1; // -1: unset, 0=sync, 1=async, 2=cosmics used by gpuwf only
93 bool doUPCIteration = false; // Perform an additional iteration for UPC events on tagged vertices. You want to combine this config with VertexerParamConfig.nIterations=2
94
95 int nThreads = 1;
96 bool printMemory = false;
97 size_t maxMemory = 12000000000UL;
98 bool dropTFUponFailure = false;
99 bool fataliseUponFailure = true; // granular management of the fatalisation in async mode
100
101 O2ParamDef(TrackerParamConfig, "ITSCATrackerParam");
102};
103
104struct ITSGpuTrackingParamConfig : public o2::conf::ConfigurableParamHelper<ITSGpuTrackingParamConfig> {
105 // GPU-specific parameters
106 int nBlocks = 20;
107 int nThreads = 256;
108
109 O2ParamDef(ITSGpuTrackingParamConfig, "ITSGpuTrackingParam");
110};
111
112} // namespace o2::its
113#endif
O2ParamDef(ITSGpuTrackingParamConfig, "ITSGpuTrackingParam")
O2ParamDef(TrackerParamConfig, "ITSCATrackerParam")
float minPtIterLgt[MaxIter *(MaxTrackLength - MinTrackLength+1)]
O2ParamDef(VertexerParamConfig, "ITSVertexerParam")