1616#ifndef ALICEO2_ITSMFT_TRACKING_CONFIGURATION_H_
1717#define ALICEO2_ITSMFT_TRACKING_CONFIGURATION_H_
1818
19+ #include < cstddef>
1920#include < cstdint>
2021
21- #ifndef GPUCA_GPUCODE
22- #include < gsl/span>
23- #include " ITSMFTTracking/SurfaceDescriptor.h"
24- #endif
25-
2622#ifndef GPUCA_GPUCODE_DEVICE
2723#include < limits>
2824#include < string>
3127#endif
3228
3329#include " CommonUtils/EnumFlags.h"
34- #include " DetectorsBase/Propagator.h"
3530#include " DetectorsCommonDataFormats/DetID.h"
36- #include " GPUCommonMath.h"
37- #include " ITSMFTTracking/ITSMFTDetectorDefinitions.h"
3831#include " ITSMFTTracking/LayerMask.h"
3932#include " ITSMFTTracking/TrackingConfigParam.h"
40- #include " ITSMFTTracking/ITSTrackingConfigParam.h"
4133
4234namespace o2 ::itsmft
4335{
@@ -50,13 +42,6 @@ enum class IterationStep : uint16_t {
5042 RebuildClusterLUT = 1 ,
5143 UseUPCMask = 2 ,
5244 SelectUPCVertices = 3 ,
53- // Reserved for legacy vertexing/follower configurations; the common
54- // tracker does not implement these steps.
55- ResetVertices = 4 ,
56- SkipROFsAboveThreshold = 5 ,
57- MarkVerticesAsUPC = 6 ,
58- TrackFollowerTop = 7 ,
59- TrackFollowerBot = 8 ,
6045};
6146using IterationSteps = o2::utils::EnumFlags<IterationStep>;
6247
@@ -80,11 +65,6 @@ struct IterationParameters {
8065 return SeedingLayers.empty () ? activeLayers : (SeedingLayers & activeLayers);
8166 }
8267
83- tracking::LayerMask getNonSeedingLayerMask () const noexcept
84- {
85- return tracking::LayerMask::span (0 , NLayers - 1 ) & ~getSeedingLayerMask ();
86- }
87-
8868 int getNSeedingLayers () const noexcept
8969 {
9070 return getSeedingLayerMask ().count ();
@@ -120,17 +100,13 @@ struct IterationParameters {
120100 // / Trackleting cuts
121101 float TrackletMinPt = 0 .3f ;
122102 // / Fitter parameters
123- // Common tracking applies nominal descriptor material; NONE disables external providers only.
124- o2::base::PropagatorImpl<float >::MatCorrType CorrType = o2::base::PropagatorImpl<float >::MatCorrType::USEMatCorrNONE;
125103 float MaxChi2ClusterAttachment = 60 .f;
126104 float MaxChi2NDF = 30 .f;
127- int ReseedIfShorter = 6 ; // Reseed final fit tracks shorter than this.
128105 std::vector<float > MinPt = {0 .f , 0 .f , 0 .f , 0 .f };
129106 tracking::LayerMask StartLayerMask = 0x7F ;
130107 bool RepeatRefitOut = false ; // Repeat outward refit using inward refit as a seed.
131108 bool ShiftRefToCluster = true ; // Shift the linearization reference to the cluster after an update.
132109 bool PerPrimaryVertexProcessing = false ;
133- bool DoUPCIteration = false ;
134110 bool CreateArtefactLabels{false };
135111 // Track-sharing selections.
136112 bool AllowSharingFirstCluster = false ;
@@ -145,10 +121,6 @@ struct IterationParameters {
145121// per-iteration configuration.
146122struct DetectorParameters {
147123 std::vector<uint32_t > AddTimeError = {0 , 0 , 0 , 0 , 0 , 0 , 0 };
148- std::vector<float > LayerZ{tracking::kITSLookupZHalfExtent .begin (), tracking::kITSLookupZHalfExtent .end ()};
149- std::vector<float > LayerColHalfExtent{}; // Legacy PhiZ helper extent (cm); production lookup uses descriptor chartRange.
150- float IndexRowMin{0 .f }; // Reserved legacy bound; production phi lookup starts at 0.
151- float IndexRowMax{0 .f }; // Reserved legacy bound; production phi lookup ends at TwoPI.
152124 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 };
153125 std::vector<float > SystError2Row = {0 .f , 0 .f , 0 .f , 0 .f , 0 .f , 0 .f , 0 .f }; // Systematic row error squared per layer (ALPIDE X).
154126 std::vector<float > SystError2Col = {0 .f , 0 .f , 0 .f , 0 .f , 0 .f , 0 .f , 0 .f }; // Systematic column error squared per layer (ALPIDE Z).
@@ -159,7 +131,6 @@ struct DetectorParameters {
159131// Single-pass host defaults/input bundle. Production plans store detector
160132// inputs and execution policy once, separately from the iteration records.
161133struct TrackingParameters : IterationParameters, DetectorParameters, TrackingExecutionPolicy {
162- std::string asString () const ;
163134};
164135
165136struct TrackingPlan {
@@ -168,70 +139,6 @@ struct TrackingPlan {
168139 std::vector<IterationParameters> iterations;
169140};
170141
171- #ifndef GPUCA_GPUCODE
172-
173- inline bool isRecognizedMatCorrType (o2::base::PropagatorF::MatCorrType corrType) noexcept
174- {
175- return corrType == o2::base::PropagatorF::MatCorrType::USEMatCorrNONE ||
176- corrType == o2::base::PropagatorF::MatCorrType::USEMatCorrTGeo ||
177- corrType == o2::base::PropagatorF::MatCorrType::USEMatCorrLUT;
178- }
179-
180- struct AttachHitConfigView {
181- tracking::SurfaceCatalogView catalog;
182- o2::base::PropagatorF::MatCorrType corrType{o2::base::PropagatorF::MatCorrType::USEMatCorrNONE};
183-
184- bool isValid (size_t expectedLayers) const noexcept
185- {
186- if (catalog.nSurfaces < expectedLayers || !catalog.surfaces || !isRecognizedMatCorrType (corrType)) {
187- return false ;
188- }
189- for (size_t layer = 0 ; layer < expectedLayers; ++layer) {
190- const auto & material = catalog.surfaces [layer].material ;
191- if (!o2::gpu::GPUCommonMath::Finite (material.xOverX0 ) || material.xOverX0 < 0 .f ||
192- !o2::gpu::GPUCommonMath::Finite (material.arealDensityGPerCm2 ) || material.arealDensityGPerCm2 < 0 .f ) {
193- return false ;
194- }
195- }
196- return true ;
197- }
198- };
199-
200- inline AttachHitConfigView bindAttachHitConfig (tracking::SurfaceCatalogView catalog,
201- const IterationParameters& params) noexcept
202- {
203- return {catalog, params.CorrType };
204- }
205-
206- namespace tracking
207- {
208-
209- enum class MaterialCorrectionModeSupport : uint8_t {
210- Supported,
211- Unsupported,
212- InvalidMode,
213- InvalidSurfaceKind
214- };
215-
216- inline MaterialCorrectionModeSupport materialCorrectionModeSupport (
217- SurfaceKind kind, o2::base::PropagatorF::MatCorrType corrType) noexcept
218- {
219- if (!isRecognizedMatCorrType (corrType)) {
220- return MaterialCorrectionModeSupport::InvalidMode;
221- }
222- if (kind != SurfaceKind::Cylinder && kind != SurfaceKind::Disk) {
223- return MaterialCorrectionModeSupport::InvalidSurfaceKind;
224- }
225- if (corrType != o2::base::PropagatorF::MatCorrType::USEMatCorrNONE) {
226- return MaterialCorrectionModeSupport::Unsupported;
227- }
228- return MaterialCorrectionModeSupport::Supported;
229- }
230-
231- } // namespace tracking
232-
233- #endif
234-
235142// / Reset tracking parameters to detector geometry defaults.
236143void resetDetectorDefaults (TrackingParameters& params, o2::detectors::DetID::ID detId);
237144
@@ -247,35 +154,10 @@ enum Type : int8_t {
247154
248155Type fromString (std::string_view str);
249156std::string toString (Type mode);
250- // Field-independent validation of common-CA public aliases.
251- void validateCommonCAOptions (detectors::DetID::ID detId);
252157TrackingPlan getTrackingPlan (o2::detectors::DetID::ID detId, Type mode);
253158
254159} // namespace TrackingMode
255160
256161} // namespace o2::itsmft
257162
258- namespace o2 ::itsmft::tracking
259- {
260-
261- // / Detector-specific entry points for the common CA configuration.
262- template <o2::detectors::DetID::ID DetId>
263- struct TrackerParamRef ;
264-
265- template <>
266- struct TrackerParamRef <o2::detectors::DetID::MFT > {
267- using Type = o2::itsmft::TrackerParamConfig<o2::detectors::DetID::MFT >;
268- static const Type& get () { return Type::Instance (); }
269- static constexpr int nLayers () { return Type::getNLayers (); }
270- };
271-
272- template <>
273- struct TrackerParamRef <o2::detectors::DetID::ITS > {
274- using Type = o2::itsmft::ITSCommonCATrackerParam;
275- static const Type& get () { return Type::Instance (); }
276- static constexpr int nLayers () { return ITSNLayers; }
277- };
278-
279- } // namespace o2::itsmft::tracking
280-
281163#endif /* ALICEO2_ITSMFT_TRACKING_CONFIGURATION_H_ */
0 commit comments