From 61302cc217e2ea5feeb0e21f688a5558cbc6a77a Mon Sep 17 00:00:00 2001 From: Valentina <v.akishina@gsi.de> Date: Tue, 7 Sep 2021 05:15:30 +0200 Subject: [PATCH] L1: do not use MVD time measurement --- reco/L1/L1Algo/L1Algo.cxx | 6 +++-- reco/L1/L1Algo/L1Algo.h | 4 +-- reco/L1/L1Algo/L1CATrackFinder.cxx | 39 +++++++++++++++--------------- reco/L1/L1Algo/L1Extrapolation.h | 21 ++++++---------- reco/L1/L1Algo/L1Filtration.h | 12 ++++----- reco/L1/L1Algo/L1Station.h | 2 ++ 6 files changed, 41 insertions(+), 43 deletions(-) diff --git a/reco/L1/L1Algo/L1Algo.cxx b/reco/L1/L1Algo/L1Algo.cxx index 2aacf0a3cb..6595844999 100644 --- a/reco/L1/L1Algo/L1Algo.cxx +++ b/reco/L1/L1Algo/L1Algo.cxx @@ -115,8 +115,10 @@ void L1Algo::Init(const L1Vector<fscal>& geo, const bool UseHitErrors, const boo std::cout << "L1Algo Input " << NStations << " Stations:" << std::endl; #endif // TBB2 for (int i = 0; i < NStations; i++) { - L1Station& st = vStations[i]; - st.type = geo[ind++]; + L1Station& st = vStations[i]; + st.type = geo[ind++]; + st.timeInfo = 1; + if (st.type == 0) st.timeInfo = 0; st.z = geo[ind++]; st.materialInfo.thick = geo[ind++]; st.Rmin = geo[ind++]; diff --git a/reco/L1/L1Algo/L1Algo.h b/reco/L1/L1Algo/L1Algo.h index d004043835..2cc45aa584 100644 --- a/reco/L1/L1Algo/L1Algo.h +++ b/reco/L1/L1Algo/L1Algo.h @@ -204,7 +204,7 @@ public: int NFStations {0}; // ? L1Station vStations[fkMaxNstations] _fvecalignment; // station info - L1Vector<L1Material> fRadThick {"fRadThick"}; // material for each station + L1Vector<L1Material> fRadThick {"fRadThick"}; // material for each station int NStsStrips {0}; // number of strips L1Vector<L1Hit>* vStsHits {nullptr}; // hits as a combination of front-, backstrips and z-position @@ -441,7 +441,7 @@ private: /// Find the doublets. Reformat data in the portion of doublets. void f20( // input - Tindex n1, L1Station& stam, L1HitPoint* vStsHits_m, L1TrackPar* T_1, THitI* hitsl_1, + Tindex n1, L1Station& stal, L1Station& stam, L1HitPoint* vStsHits_m, L1TrackPar* T_1, THitI* hitsl_1, // output Tindex& n2, L1Vector<THitI>& i1_2, diff --git a/reco/L1/L1Algo/L1CATrackFinder.cxx b/reco/L1/L1Algo/L1CATrackFinder.cxx index 6edecd4454..d98a0989c0 100644 --- a/reco/L1/L1Algo/L1CATrackFinder.cxx +++ b/reco/L1/L1Algo/L1CATrackFinder.cxx @@ -368,7 +368,7 @@ inline void L1Algo::f11( /// input 1st stage of singlet search if ((istam >= NMvdStations) && (istal <= NMvdStations - 1)) { fit.L1AddPipeMaterial(T, MaxInvMom, 1); } fvec dz = zstam - zl; - L1ExtrapolateTime(T, dz); + L1ExtrapolateTime(T, dz, stam.timeInfo); if (fGlobal || fmCBMmode) // extrapolate to left hit @@ -387,7 +387,7 @@ inline void L1Algo::f11( /// input 1st stage of singlet search /// Find the doublets. Reformat data in the portion of doublets. inline void L1Algo::f20( /// input - Tindex n1, L1Station& stam, L1HitPoint* vStsHits_m, L1TrackPar* T_1, THitI* hitsl_1, + Tindex n1, L1Station& stal, L1Station& stam, L1HitPoint* vStsHits_m, L1TrackPar* T_1, THitI* hitsl_1, /// output Tindex& n2, L1Vector<THitI>& i1_2, #ifdef DOUB_PERFORMANCE @@ -436,8 +436,10 @@ inline void L1Algo::f20( // check y-boundaries - if (fabs(time - hitm.time) > sqrt(timeError + hitm.timeEr * hitm.timeEr) * 5) continue; - if (fabs(time - hitm.time) > 30) continue; + if ((stam.timeInfo) && (stal.timeInfo)) + if (fabs(time - hitm.time) > sqrt(timeError + hitm.timeEr * hitm.timeEr) * 5) continue; + if ((stam.timeInfo) && (stal.timeInfo)) + if (fabs(time - hitm.time) > 30) continue; #ifdef USE_EVENT_NUMBER if ((Event[i1_V][i1_4] != hitm.n)) continue; @@ -631,7 +633,7 @@ inline void L1Algo::f30( // input fvec dz = zPos_2 - T2.z; - L1ExtrapolateTime(T2, dz); + L1ExtrapolateTime(T2, dz, stam.timeInfo); // add middle hit L1ExtrapolateLine(T2, zPos_2); @@ -661,7 +663,7 @@ inline void L1Algo::f30( // input L1Filter(T2, info, u_back_2); - FilterTime(T2, timeM, timeMEr); + FilterTime(T2, timeM, timeMEr, stam.timeInfo); #ifdef USE_RL_TABLE if (!fmCBMmode) fit.L1AddMaterial(T2, fRadThick[istam].GetRadThick(T2.x, T2.y), T2.qp, 1); @@ -673,7 +675,7 @@ inline void L1Algo::f30( // input if ((istar >= NMvdStations) && (istam <= NMvdStations - 1)) { fit.L1AddPipeMaterial(T2, T2.qp, 1); } fvec dz2 = star.z - T2.z; - L1ExtrapolateTime(T2, dz2); + L1ExtrapolateTime(T2, dz2, stam.timeInfo); // extrapolate to the right hit station @@ -741,12 +743,14 @@ inline void L1Algo::f30( // input fvec dz3 = zr - T_cur.z; - L1ExtrapolateTime(T_cur, dz3); + L1ExtrapolateTime(T_cur, dz3, star.timeInfo); L1ExtrapolateLine(T_cur, zr); - if (fabs(T_cur.t[i2_4] - hitr.time) > sqrt(T_cur.C55[i2_4] + hitr.timeEr) * 5) continue; - if (fabs(T_cur.t[i2_4] - hitr.time) > 30) continue; + if ((star.timeInfo) && (stam.timeInfo)) + if (fabs(T_cur.t[i2_4] - hitr.time) > sqrt(T_cur.C55[i2_4] + hitr.timeEr) * 5) continue; + if ((star.timeInfo) && (stam.timeInfo)) + if (fabs(T_cur.t[i2_4] - hitr.time) > 30) continue; // - check whether hit belong to the window ( track position +\- errors ) - @@ -805,7 +809,7 @@ inline void L1Algo::f30( // input L1FilterChi2(info, x, y, C00, C10, C11, chi2, hitr.V()); - FilterTime(T_cur, hitr.time, hitr.timeEr); + FilterTime(T_cur, hitr.time, hitr.timeEr, star.timeInfo); #ifdef DO_NOT_SELECT_TRIPLETS @@ -877,7 +881,7 @@ inline void L1Algo::f31( // input fvec dz = z_Pos[i3_V] - T_3[i3_V].z; - L1ExtrapolateTime(T_3[i3_V], dz); + L1ExtrapolateTime(T_3[i3_V], dz, star.timeInfo); L1ExtrapolateLine(T_3[i3_V], z_Pos[i3_V]); @@ -907,7 +911,7 @@ inline void L1Algo::f31( // input else L1Filter(T_3[i3_V], info, u_back_[i3_V]); - if (!fmCBMmode) FilterTime(T_3[i3_V], timeR[i3_V], timeER[i3_V]); + if (!fmCBMmode) FilterTime(T_3[i3_V], timeR[i3_V], timeER[i3_V], star.timeInfo); // FilterTime(T_3[i3_V], timeR[i3_V], timeER[i3_V]); } @@ -1301,6 +1305,7 @@ inline void L1Algo::DupletsStaPort( /// @&hitsm_2 - index of middle hit in hits array indexed by doublet index if (istam < NStations) { + L1Station& stal = vStations[istal]; L1Station& stam = vStations[istam]; // prepare data @@ -1344,7 +1349,7 @@ inline void L1Algo::DupletsStaPort( #endif // DOUB_PERFORMANCE f20( // input - n1, stam, vStsHits_m, T_1, hitsl_1, + n1, stal, stam, vStsHits_m, T_1, hitsl_1, // output n_2, i1_2, #ifdef DOUB_PERFORMANCE @@ -1654,12 +1659,6 @@ void L1Algo::CATrackFinder() const float& time = (*vStsHits)[ih].t; if ((lasttime < time) && (!std::isinf(time))) lasttime = time; if ((starttime > time) && (time > 0)) starttime = time; - - if (ist < NMvdStations) { - L1Hit& h = (*vStsHits)[ih]; - h.t = 0; - h.dt = 100; - } } diff --git a/reco/L1/L1Algo/L1Extrapolation.h b/reco/L1/L1Algo/L1Extrapolation.h index 4958db054d..9696e97572 100644 --- a/reco/L1/L1Algo/L1Extrapolation.h +++ b/reco/L1/L1Algo/L1Extrapolation.h @@ -699,34 +699,29 @@ inline void L1Extrapolate0(L1TrackPar& T, // input track parameters (x,y,tx,ty, inline void L1ExtrapolateTime(L1TrackPar& T, // input track parameters (x,y,tx,ty,Q/p) and cov.matrix - fvec dz // extrapolate to this z position -) + fvec dz, // extrapolate to this z position + fvec timeInfo = 1.) { cnst c_light = 29.9792458; - T.t += sqrt((T.tx * T.tx) + (T.ty * T.ty) + 1) * dz / c_light; + const fvec mask = (timeInfo > 0); + fvec dz_mask = mask & dz; - const fvec k1 = T.tx * dz / (c_light * sqrt((T.tx * T.tx) + (T.ty * T.ty) + 1)); - const fvec k2 = T.ty * dz / (c_light * sqrt((T.tx * T.tx) + (T.ty * T.ty) + 1)); + T.t += sqrt((T.tx * T.tx) + (T.ty * T.ty) + 1) * dz_mask / c_light; + + const fvec k1 = dz_mask & T.tx / (c_light * sqrt((T.tx * T.tx) + (T.ty * T.ty) + 1)); + const fvec k2 = dz_mask & T.ty / (c_light * sqrt((T.tx * T.tx) + (T.ty * T.ty) + 1)); fvec c52 = T.C52; fvec c53 = T.C53; - // cout<<k1<<" k1 "<<k2<<" k2 "<<endl; - - // fvec ha = T.C53; - // fvec ha2 = T.C54; - T.C50 += k1 * T.C20 + k2 * T.C30; T.C51 += k1 * T.C21 + k2 * T.C31; T.C52 += k1 * T.C22 + k2 * T.C32; T.C53 += k1 * T.C32 + k2 * T.C33; T.C54 += k1 * T.C42 + k2 * T.C43; T.C55 += k1 * (T.C52 + c52) + k2 * (T.C53 + c53); - - // cout<<ha<<" c53 "<<T.C53<<endl; - // cout<<ha2<<" c54 "<<T.C54<<endl; } inline void L1ExtrapolateLine(L1TrackPar& T, fvec z_out) diff --git a/reco/L1/L1Algo/L1Filtration.h b/reco/L1/L1Algo/L1Filtration.h index 08e77162c2..0f2e448cef 100644 --- a/reco/L1/L1Algo/L1Filtration.h +++ b/reco/L1/L1Algo/L1Filtration.h @@ -14,7 +14,7 @@ #define cnst const fvec -inline void FilterTime(L1TrackPar& T, fvec t0, fvec dt0, fvec w = 1.) +inline void FilterTime(L1TrackPar& T, fvec t0, fvec dt0, fvec timeInfo = 1., fvec w = 1.) { fvec wi, zeta, zetawi, HCH; fvec F0, F1, F2, F3, F4, F5; @@ -33,11 +33,11 @@ inline void FilterTime(L1TrackPar& T, fvec t0, fvec dt0, fvec w = 1.) F4 = T.C54; F5 = T.C55; -#if 0 // use mask - const fvec mask = (HCH < info.sigma2 * 16.); - wi = w/( (mask & info.sigma2) +HCH ); - zetawi = zeta *wi; - T.chi2 += mask & (zeta * zetawi); +#if 1 // use mask + const fvec mask = (timeInfo > 0); + wi = mask & w / (dt0 * dt0 + HCH); + zetawi = zeta * wi; + T.chi2 += mask & (zeta * zetawi); #else wi = w / (dt0 * dt0 + HCH); zetawi = zeta * wi; diff --git a/reco/L1/L1Algo/L1Station.h b/reco/L1/L1Algo/L1Station.h index 8464a1df9d..c409f632ec 100644 --- a/reco/L1/L1Algo/L1Station.h +++ b/reco/L1/L1Algo/L1Station.h @@ -15,6 +15,7 @@ class L1Station { public: L1Station() : type(0) + , timeInfo(0) , z(0) , Rmin(0) , Rmax(0) @@ -31,6 +32,7 @@ public: } int type; + int timeInfo; fvec z, Rmin, Rmax, Sy; L1MaterialInfo materialInfo; L1FieldSlice fieldSlice; -- GitLab