17#ifndef O2_MID_TRACKER_H
18#define O2_MID_TRACKER_H
21#include <unordered_set>
43 void process(gsl::span<const Cluster>
clusters,
bool accumulate =
false);
44 void process(gsl::span<const Cluster>
clusters, gsl::span<const ROFRecord> rofRecords);
45 bool init(
bool keepAll =
false);
48 const std::vector<Track>&
getTracks() {
return mTracks; }
51 const std::vector<Cluster>&
getClusters() {
return mClusters; }
60 void processSide(
bool isRight,
bool isInward);
61 void tryAddTrack(
const Track& track);
62 void followTrackKeepAll(
Track& track,
bool isRight,
bool isInward);
63 bool findAllClusters(
const Track& track,
bool isRight,
int chamber,
int firstRPC,
int lastRPC,
int nextChamber,
64 std::unordered_set<int>& excludedClusters,
bool excludeClusters);
65 void followTrackKeepBest(
Track& track,
bool isRight,
bool isInward);
66 void findNextCluster(
const Track& track,
bool isRight,
bool isInward,
int chamber,
int firstRPC,
int lastRPC,
Track& bestTrack)
const;
67 int getFirstNeighbourRPC(
int rpc)
const;
68 int getLastNeighbourRPC(
int rpc)
const;
69 bool loadClusters(gsl::span<const Cluster>&
clusters);
71 void runKalmanFilter(
Track& track,
const Cluster& cluster)
const;
72 bool tryOneCluster(
const Track& track,
int chamber,
int clIdx,
Track& newTrack)
const;
73 void excludeUsedClusters(
const Track& track,
int ch1,
int ch2, std::unordered_set<int>& excludedClusters)
const;
74 bool skipOneChamber(
Track& track)
const;
76 static constexpr float SMT11Z = -1603.5;
78 float mImpactParamCut = 210.;
82 std::vector<int> mClusterIndexes[72];
83 std::vector<Cluster> mClusters{};
85 std::vector<Track> mTracks{};
86 std::vector<ROFRecord> mTrackROFRecords{};
87 std::vector<ROFRecord> mClusterROFRecords{};
88 size_t mFirstTrackOffset{0};
89 size_t mTrackOffset{0};
92 GeometryTransformer mTransformer{};
95 TrackerMemFn mFollowTrack{&Tracker::followTrackKeepAll};
This class defines the MID track.
Tracking algorithm for MID.
const std::vector< ROFRecord > & getClusterROFRecords()
Gets the vector of cluster RO frame records.
bool init(bool keepAll=false)
const std::vector< Cluster > & getClusters()
Gets the array of associated clusters.
float getSigmaCut() const
Gets number of sigmas for cuts.
float getImpactParamCut() const
Gets the impact parameter cut.
const std::vector< Track > & getTracks()
Gets the array of reconstructes tracks.
const std::vector< ROFRecord > & getTrackROFRecords()
Gets the vector of tracks RO frame records.
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
o2::track::TrackParCov Track
std::vector< Cluster > clusters
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
cluster structure for MID