Skip to content

Commit c359630

Browse files
committed
ITS: implement caclulation of lookup window with vertex error
1 parent 0cf11a2 commit c359630

File tree

9 files changed

+147
-97
lines changed

9 files changed

+147
-97
lines changed

Detectors/ITSMFT/ITS/tracking/include/ITStracking/Configuration.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,6 @@ struct TrackingParameters {
5454
int ClusterSharing = 0;
5555
int MinTrackLength = 7;
5656
float NSigmaCut = 5;
57-
float NSigmaCutZ = 5;
58-
float NSigmaCutPhi = 5;
5957
int NTimeSlices{1};
6058
/// Trackleting cuts
6159
float TrackletMinPt = 0.3f;

Detectors/ITSMFT/ITS/tracking/include/ITStracking/Definitions.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ using maybe_const = std::conditional_t<IsConst, const T, T>;
3434

3535
// simple implemnetion of logging with exp. backoff
3636
struct LogLogThrottler {
37-
uint32_t evCount{0};
38-
uint32_t nextLog{1};
37+
uint64_t evCount{0};
38+
uint64_t nextLog{1};
3939
int32_t iteration{-1};
4040
int32_t layer{-1};
4141
bool needToLog(int32_t iter, int32_t lay)

Detectors/ITSMFT/ITS/tracking/include/ITStracking/TimeFrame.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,14 +151,14 @@ struct TimeFrame {
151151
mROFOverlapTable = std::move(table);
152152
mROFOverlapTableView = mROFOverlapTable.getView();
153153
}
154-
auto& getROFVertexLookupTable() { return mROFVertexLookupTable; }
155154
const auto& getROFVertexLookupTable() const { return mROFVertexLookupTable; }
156155
const auto& getROFVertexLookupTableView() const { return mROFVertexLookupTableView; }
157156
void setROFVertexLookupTable(ROFVertexLookupTableN& table)
158157
{
159158
mROFVertexLookupTable = std::move(table);
160159
mROFVertexLookupTableView = mROFVertexLookupTable.getView();
161160
}
161+
void updateROFVertexLookupTable() { mROFVertexLookupTable.update(mPrimaryVertices.data(), mPrimaryVertices.size()); }
162162
const auto& getROFTimeSliceTable() const { return mROFTimeSliceTable; }
163163
const auto& getROFTimeSliceTableView() const { return mROFTimeSliceTableView; }
164164
void setROFTimeSliceTable(ROFTimeSliceTableN& table)

Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackerTraits.h

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ class TrackerTraits
8888

8989
// Others
9090
GPUhd() static consteval int4 getEmptyBinsRect() { return int4{0, 0, 0, 0}; }
91-
const int4 getBinsRect(const int iteration, int layer, float phi, float maxdeltaphi, float z, float maxdeltaz) const noexcept { return getBinsRect(iteration, layer, phi, maxdeltaphi, z, z, maxdeltaz); }
92-
const int4 getBinsRect(const int iteration, const Cluster& cls, int layer, float z1, float z2, float maxdeltaz, float maxdeltaphi) const noexcept { return getBinsRect(iteration, layer, cls.phi, maxdeltaphi, z1, z2, maxdeltaz); }
91+
int4 getBinsRect(const int iteration, int layer, float phi, float maxdeltaphi, float z, float maxdeltaz) const noexcept { return getBinsRect(iteration, layer, phi, maxdeltaphi, z, z, maxdeltaz); }
92+
int4 getBinsRect(const int iteration, const Cluster& cls, int layer, float z1, float z2, float maxdeltaz, float maxdeltaphi) const noexcept { return getBinsRect(iteration, layer, cls.phi, maxdeltaphi, z1, z2, maxdeltaz); }
9393
const int4 getBinsRect(const int iteration, int layer, float phi, float maxdeltaphi, float z1, float z2, float maxdeltaz) const noexcept;
9494

9595
void SetRecoChain(o2::gpu::GPUChainITS* chain) { mChain = chain; }
@@ -106,23 +106,24 @@ class TrackerTraits
106106
private:
107107
track::TrackParCov buildTrackSeed(const Cluster& cluster1, const Cluster& cluster2, const TrackingFrameInfo& tf3);
108108
bool fitTrack(TrackITSExt& track, int start, int end, int step, float chi2clcut = o2::constants::math::VeryBig, float chi2ndfcut = o2::constants::math::VeryBig, float maxQoverPt = o2::constants::math::VeryBig, int nCl = 0);
109-
110-
std::shared_ptr<BoundedMemoryResource> mMemoryPool;
111-
std::shared_ptr<tbb::task_arena> mTaskArena;
109+
void sortSeeds();
112110

113111
// Debug output
114112
inline void debugComputeLayerTracklets(int iteration, int layer, const Cluster& currentCls, const Cluster& nextCls, const Vertex& pv, float sigmaZ, float sigmaPhi, bool accepted);
115113
inline void debugComputeLayerCells(int iteration, int layer, int currentTrkl, int nextTrkl, bool accepted);
116114
inline void debugFindCellsNeighbours(int iteration, int layer, int currentCell, int nextCell, bool accepted);
117115

116+
std::shared_ptr<BoundedMemoryResource> mMemoryPool;
117+
std::shared_ptr<tbb::task_arena> mTaskArena;
118+
dbscan::DBSCAN mDBScan;
119+
118120
protected:
119121
o2::gpu::GPUChainITS* mChain = nullptr;
120122
TimeFrame<NLayers>* mTimeFrame;
121123
std::vector<RecoIteration> mRecoParams;
122124

123125
float mBz{-999.f};
124126
bool mIsZeroField{false};
125-
dbscan::DBSCAN mDBScan{};
126127
};
127128

128129
template <int NLayers>

Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackingConfigParam.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ struct TrackerParamConfig : public o2::conf::ConfigurableParamHelper<TrackerPara
7272
bool seedingUseMCTruth{false}; // skip seeding and impose MC event information
7373

7474
bool createArtefactLabels{false}; // create on-the-fly labels for the artefacts
75+
int nIterations{-1}; // reduce the number of iterations
7576

7677
int nThreads = 1;
7778
bool printMemory = false;

Detectors/ITSMFT/ITS/tracking/src/Configuration.cxx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,6 @@ std::vector<RecoIteration> TrackingMode::getRecoIterations(TrackingMode::Type mo
167167
p.PhiBins = tc.LUTbinsPhi > 0 ? tc.LUTbinsPhi : p.PhiBins;
168168
p.ZBins = tc.LUTbinsZ > 0 ? tc.LUTbinsZ : p.ZBins;
169169
p.NSigmaCut *= tc.nSigmaCut > 0 ? tc.nSigmaCut : 1.f;
170-
p.NSigmaCutZ *= tc.nSigmaCutZ > 0 ? tc.nSigmaCutZ : 1.f;
171-
p.NSigmaCutPhi *= tc.nSigmaCutPhi > 0 ? tc.nSigmaCutPhi : 1.f;
172170
p.CellDeltaTanLambdaSigma *= tc.deltaTanLres > 0 ? tc.deltaTanLres : 1.f;
173171
p.TrackletMinPt *= tc.minPt > 0 ? tc.minPt : 1.f;
174172
p.PerPrimaryVertexProcessing = tc.perPrimaryVertexProcessing;
@@ -211,6 +209,7 @@ std::vector<RecoIteration> TrackingMode::getRecoIterations(TrackingMode::Type mo
211209
recoIterations[0].params.SeedingDBScanMinPt = tc.seedingDBScanMinPt;
212210
recoIterations[0].params.SeedingDBScanEpsZ = tc.seedingDBScanEpsZ;
213211
recoIterations[0].params.SeedingDBScanEpsT = tc.seedingDBScanEpsT;
212+
recoIterations[0].params.PerPrimaryVertexProcessing = false;
214213

215214
if (tc.seedingUseMCTruth) {
216215
recoIterations[0].name = "MC_SEEDING";
@@ -280,6 +279,11 @@ std::vector<RecoIteration> TrackingMode::getRecoIterations(TrackingMode::Type mo
280279
recoIterations[0].params.MaxChi2NDF = 40.;
281280
}
282281

282+
// opt. suppress layer iterations
283+
if (tc.nIterations >= 0 && tc.nIterations < recoIterations.size()) {
284+
recoIterations.resize(tc.nIterations);
285+
}
286+
283287
return recoIterations;
284288
}
285289

Detectors/ITSMFT/ITS/tracking/src/Tracker.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ void Tracker<NLayers>::clustersToTracks(const LogFunc& logger, const LogFunc& er
7676
mMemoryPool->setMaxMemory(reco.params.MaxMemory);
7777
// rebuilt rof -> vertex lookup table
7878
if (reco.steps[kUpdateVertexTable] && mTimeFrame->getROFVertexLookupTable().needsUpdate()) {
79-
mTimeFrame->getROFVertexLookupTable().update(mTimeFrame->getPrimaryVertices().data(), mTimeFrame->getPrimaryVertices().size());
79+
mTimeFrame->updateROFVertexLookupTable();
8080
}
8181
if (reco.params.PerPrimaryVertexProcessing) { // find the largest span of seeding vertices found
8282
maxNvertices = mTimeFrame->getROFVertexLookupTableView().getMaxVerticesPerROF();

0 commit comments

Comments
 (0)