diff --git a/reco/L1/CbmL1.cxx b/reco/L1/CbmL1.cxx index a4d7d25bc8da0ffe4a11917e0585459e2a7e1d56..413f6a8cd5512c5d363ed02922c625210df87e1a 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 f9cde9c94e0664ad839dba6412296907a9934c58..20ec8e43c1aba3079b6953eae2b7020c4afb677e 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();