From 0c69d282a0582c2a47aedb4439e375fc32c19c69 Mon Sep 17 00:00:00 2001
From: "se.gorbunov" <se.gorbunov@gsi.de>
Date: Sun, 30 Oct 2022 23:34:45 +0000
Subject: [PATCH] L1: update of trd2d tracker
---
reco/L1/CbmL1.cxx | 18 +++++++++++++++++-
reco/L1/L1Algo/L1CATrackFinder.cxx | 7 +++++--
2 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/reco/L1/CbmL1.cxx b/reco/L1/CbmL1.cxx
index a4d7d25bc8..413f6a8cd5 100644
--- a/reco/L1/CbmL1.cxx
+++ b/reco/L1/CbmL1.cxx
@@ -860,12 +860,28 @@ InitStatus CbmL1::Init()
trd2dIter2.SetExtendTracksFlag(true);
//trd2dIter2.SetFirstStationIndex(12);
+ auto trd2dIter3 = L1CAIteration("trd2dIter3");
+ trd2dIter3.SetMinNhits(4);
+ trd2dIter3.SetMinNhitsStation0(4);
+ trd2dIter3.SetTrackChi2Cut(100 * 7.f); //10.f
+ trd2dIter3.SetTripletChi2Cut(0.5 * 23.4450f); // = 7.815 * 3; // prob = 0.05
+ trd2dIter3.SetDoubletChi2Cut(0.7 * 7.56327f); // = 1.3449 * 2.f / 3.f; // prob = 0.1
+ trd2dIter3.SetPickGather(3.0f);
+ trd2dIter3.SetTripletLinkChi2(10 * 300.);
+ trd2dIter3.SetMaxInvMom(1.0 / 0.05); //(1.0 / 0.5);
+ trd2dIter3.SetMaxSlopePV(0 * .5f);
+ trd2dIter3.SetMaxSlope(.4); //.5f);
+ trd2dIter3.SetMaxDZ(0.05);
+ trd2dIter3.SetTargetPosSigmaXY(7 * 10, 6 * 10); //(1, 1);
+ trd2dIter3.SetPrimaryFlag(false);
+ trd2dIter3.SetExtendTracksFlag(true);
+
// Initialize CA track finder iterations sequence
fInitManager.SetCAIterationsNumberCrosscheck(1);
//fInitManager.PushBackCAIteration(trackingIterFastPrim);
//fInitManager.PushBackCAIteration(globalIterPrimFast);
- fInitManager.PushBackCAIteration(trd2dIter2);
+ fInitManager.PushBackCAIteration(trd2dIter3);
/*
fInitManager.SetCAIterationsNumberCrosscheck(5);
fInitManager.PushBackCAIteration(trackingIterFastPrim);
diff --git a/reco/L1/L1Algo/L1CATrackFinder.cxx b/reco/L1/L1Algo/L1CATrackFinder.cxx
index f9cde9c94e..20ec8e43c1 100644
--- a/reco/L1/L1Algo/L1CATrackFinder.cxx
+++ b/reco/L1/L1Algo/L1CATrackFinder.cxx
@@ -72,7 +72,7 @@ using std::endl;
bool L1Algo::checkTripletMatch(const L1Triplet& l, const L1Triplet& r, fscal& dchi2) const
{
- dchi2 = 0.;
+ dchi2 = 1.e20;
if (r.GetMHit() != l.GetRHit()) return false;
if (r.GetLHit() != l.GetMHit()) return false;
@@ -109,6 +109,7 @@ bool L1Algo::checkTripletMatch(const L1Triplet& l, const L1Triplet& r, fscal& dc
if (dty * dty > fTripletLinkChi2 * Cty) return false;
if (dtx * dtx > fTripletLinkChi2 * Ctx) return false;
+
dchi2 = 0.5f * (dtx * dtx / Ctx + dty * dty / Cty);
}
@@ -1216,6 +1217,8 @@ inline void L1Algo::findTripletsStep3( // input
L1Triplet& tr1 = fTriplets[istal][Thread].back();
tr1.SetIsMomentumFitted(isMomentumFitted);
tr1.SetLevel(0);
+ tr1.SetFNeighbour(0);
+ tr1.SetNNeighbours(0);
fHitNtriplets[ihitl]++;
@@ -1969,7 +1972,7 @@ void L1Algo::CATrackFinder()
i1G_2) //schedule(dynamic, 2)
#endif
for (Tindex ip = 0; ip < (Tindex) fSingletPortionSize[istal].size(); ++ip) {
- Tindex n_2 = 0; /// number of doublets in portion
+ Tindex n_2 = 0; /// number of doublets in portion
hitsm_2.clear();
i1_2.clear();
--
GitLab