Project
Loading...
Searching...
No Matches
Tracker.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 ALICEO2_ITSMFT_TRACKING_TRACKER_H_
17#define ALICEO2_ITSMFT_TRACKING_TRACKER_H_
18
19#include <array>
20#include <cstdint>
21#include <memory>
22#include <vector>
23
24#include <gsl/span>
25
26#include <oneapi/tbb/task_arena.h>
27
34
36{
37
38struct TrackerTestAccess;
39
43 float elapsedMs{0.f};
44 // Accepted-result counts are indexed by configured iteration.
45 std::vector<std::size_t> acceptedTrackCounts;
46};
47
50 // First position of each component; zero is always required.
51 std::vector<uint16_t> componentOffsets{0};
54 std::shared_ptr<BoundedMemoryResource> memoryPool;
55};
56
58{
59 public:
62 bool initialize(TimeFrame& frame, const TrackerInitialization& configuration);
63
64 gsl::span<const IterationConfiguration> getIterationConfigurations() const noexcept { return mIterations; }
65 const TrackingExecutionPolicy& getExecutionPolicy() const noexcept { return mExecutionPolicy; }
66 const IterationConfiguration* getIterationConfiguration(std::size_t iteration) const noexcept
67 {
68 return iteration < mIterations.size() ? &mIterations[iteration] : nullptr;
69 }
70 bool isConfiguredFor(const TimeFrame& frame) const noexcept;
71
76 bool run(TimeFrame& frame, TrackerTraits& traits);
77 const TrackingStatistics& getRunStatistics() const noexcept { return mRunStatistics; }
78
79 private:
80 friend struct TrackerTestAccess;
81 gsl::span<const gsl::span<const GlobalMeasurement>> prepareTimeFrame(
82 TimeFrame& frame, std::array<gsl::span<const GlobalMeasurement>, MaxLayoutSurfaces>& measurements) const;
83 void configureBeamPosition(TimeFrame& frame) const;
84 void initializeIteration(IterationContext& context) const;
85 void computeTracksMClabels(TimeFrame& frame) const;
86 TrackingExecutionPolicy mExecutionPolicy;
87 std::vector<IterationConfiguration> mIterations;
88 TrackingStatistics mRunStatistics;
89 const TimeFrame* mFrame = nullptr;
90};
91} // namespace o2::itsmft::tracking
92
93#endif /* ALICEO2_ITSMFT_TRACKING_TRACKER_H_ */
Shared CA tracking configuration for ITS and MFT.
Passive common TimeFrame owner.
Runtime-plan-owned, detector-neutral CA workspace.
const IterationConfiguration * getIterationConfiguration(std::size_t iteration) const noexcept
Definition Tracker.h:66
bool initialize(TimeFrame &frame, const TrackerInitialization &configuration)
Definition Tracker.cxx:414
const TrackingExecutionPolicy & getExecutionPolicy() const noexcept
Definition Tracker.h:65
const TrackingStatistics & getRunStatistics() const noexcept
Definition Tracker.h:77
bool run(TimeFrame &frame, TrackerTraits &traits)
Definition Tracker.cxx:572
bool isConfiguredFor(const TimeFrame &frame) const noexcept
Definition Tracker.cxx:490
gsl::span< const IterationConfiguration > getIterationConfigurations() const noexcept
Definition Tracker.h:64
Shared CA tracker traits: same ITS-style tracklet/cell/road logic; MFT uses x-y LUT and forward refit...
uint32_t trackClusterIndicesSize noexcept
constexpr uint32_t MaxLayoutSurfaces
Definition IdTypes.h:70
std::shared_ptr< BoundedMemoryResource > memoryPool
Definition Tracker.h:54
std::vector< uint16_t > componentOffsets
Definition Tracker.h:51
std::vector< std::size_t > acceptedTrackCounts
Definition Tracker.h:45