diff --git a/reco/L1/CbmL1.cxx b/reco/L1/CbmL1.cxx index 78abe8256f4785fc766a510187a7ff1b254ad781..d315c13d71ceda63406ac527fe256e380207e39a 100644 --- a/reco/L1/CbmL1.cxx +++ b/reco/L1/CbmL1.cxx @@ -641,7 +641,7 @@ InitStatus CbmL1::Init() trackingIterFastPrim.SetTripletChi2Cut(23.4450f); // = 7.815 * 3; // prob = 0.05 trackingIterFastPrim.SetDoubletChi2Cut(7.56327f); // = 1.3449 * 2.f / 3.f; // prob = 0.1 trackingIterFastPrim.SetPickGather(3.0f); - trackingIterFastPrim.SetPickNeighbour(5.0f); + trackingIterFastPrim.SetTripletLinkChi2(25.); trackingIterFastPrim.SetMaxInvMom(1.0 / 0.5); trackingIterFastPrim.SetMaxSlopePV(1.1f); trackingIterFastPrim.SetMaxSlope(2.748f); @@ -657,7 +657,7 @@ InitStatus CbmL1::Init() trackingIterAllPrim.SetTripletChi2Cut(23.4450f); trackingIterAllPrim.SetDoubletChi2Cut(7.56327f); trackingIterAllPrim.SetPickGather(4.0f); - trackingIterAllPrim.SetPickNeighbour(5.0f); + trackingIterAllPrim.SetTripletLinkChi2(25.); trackingIterAllPrim.SetMaxInvMom(1.0 / 0.05); trackingIterAllPrim.SetMaxSlopePV(1.1f); trackingIterAllPrim.SetMaxSlope(2.748f); @@ -673,7 +673,7 @@ InitStatus CbmL1::Init() trackingIterFastPrim2.SetTripletChi2Cut(21.1075f); trackingIterFastPrim2.SetDoubletChi2Cut(7.56327f); trackingIterFastPrim2.SetPickGather(3.0f); - trackingIterFastPrim2.SetPickNeighbour(5.0f); + trackingIterFastPrim2.SetTripletLinkChi2(25.); trackingIterFastPrim2.SetMaxInvMom(1.0 / 0.5); trackingIterFastPrim2.SetMaxSlopePV(1.1f); trackingIterFastPrim2.SetMaxSlope(2.748f); @@ -689,7 +689,7 @@ InitStatus CbmL1::Init() trackingIterAllSec.SetTripletChi2Cut(18.7560f); // = 6.252 * 3; // prob = 0.1 trackingIterAllSec.SetDoubletChi2Cut(7.56327f); trackingIterAllSec.SetPickGather(4.0f); - trackingIterAllSec.SetPickNeighbour(5.0f); + trackingIterAllSec.SetTripletLinkChi2(25.); trackingIterAllSec.SetMaxInvMom(1.0 / 0.1); trackingIterAllSec.SetMaxSlopePV(1.5f); trackingIterAllSec.SetMaxSlope(2.748f); @@ -705,7 +705,7 @@ InitStatus CbmL1::Init() trackingIterFastPrimJump.SetTripletChi2Cut(21.1075f); // prob = 0.01 trackingIterFastPrimJump.SetDoubletChi2Cut(7.56327f); trackingIterFastPrimJump.SetPickGather(3.0f); - trackingIterFastPrimJump.SetPickNeighbour(5.0f); + trackingIterFastPrimJump.SetTripletLinkChi2(25.); trackingIterFastPrimJump.SetMaxInvMom(1.0 / 0.5); trackingIterFastPrimJump.SetMaxSlopePV(1.1f); trackingIterFastPrimJump.SetMaxSlope(2.748f); @@ -722,7 +722,7 @@ InitStatus CbmL1::Init() trackingIterAllPrimJump.SetTripletChi2Cut(18.7560f); trackingIterAllPrimJump.SetDoubletChi2Cut(7.56327f); trackingIterAllPrimJump.SetPickGather(4.0f); - trackingIterAllPrimJump.SetPickNeighbour(5.0f); + trackingIterAllPrimJump.SetTripletLinkChi2(25.); trackingIterAllPrimJump.SetMaxInvMom(1.0 / 0.1); trackingIterAllPrimJump.SetMaxSlopePV(1.1f); trackingIterAllPrimJump.SetMaxSlope(2.748f); @@ -739,7 +739,7 @@ InitStatus CbmL1::Init() trackingIterAllSecJump.SetTripletChi2Cut(21.1075f); trackingIterAllSecJump.SetDoubletChi2Cut(7.56327f); trackingIterAllSecJump.SetPickGather(4.0f); - trackingIterAllSecJump.SetPickNeighbour(5.0f); + trackingIterAllSecJump.SetTripletLinkChi2(25.); trackingIterAllSecJump.SetMaxInvMom(1.0 / 0.1); trackingIterAllSecJump.SetMaxSlopePV(1.5f); trackingIterAllSecJump.SetMaxSlope(2.748f); @@ -756,7 +756,7 @@ InitStatus CbmL1::Init() trackingIterAllPrimE.SetTripletChi2Cut(23.4450f); trackingIterAllPrimE.SetDoubletChi2Cut(7.56327f); trackingIterAllPrimE.SetPickGather(4.0f); - trackingIterAllPrimE.SetPickNeighbour(5.0f); + trackingIterAllPrimE.SetTripletLinkChi2(25.); trackingIterAllPrimE.SetMaxInvMom(1.0 / 0.05); trackingIterAllPrimE.SetMaxSlopePV(1.1f); trackingIterAllPrimE.SetMaxSlope(2.748f); @@ -773,7 +773,7 @@ InitStatus CbmL1::Init() trackingIterAllSecE.SetTripletChi2Cut(18.7560f); trackingIterAllSecE.SetDoubletChi2Cut(7.56327f); trackingIterAllSecE.SetPickGather(4.0f); - trackingIterAllSecE.SetPickNeighbour(5.0f); + trackingIterAllSecE.SetTripletLinkChi2(25.); trackingIterAllSecE.SetMaxInvMom(1.0 / 0.05); trackingIterAllSecE.SetMaxSlopePV(1.5f); trackingIterAllSecE.SetMaxSlope(2.748f); @@ -830,7 +830,7 @@ InitStatus CbmL1::Init() it.SetTripletChi2Cut(23.4450f); // = 7.815 * 3; // prob = 0.05 it.SetDoubletChi2Cut(7.56327f); // = 1.3449 * 2.f / 3.f; // prob = 0.1 it.SetPickGather(3.0f); - it.SetPickNeighbour(4.0f); + it.SetTripletLinkChi2(16.0); it.SetMaxInvMom(1.0 / 0.1); //(1.0 / 0.5); it.SetMaxSlopePV(.1f); it.SetMaxSlope(.5f); @@ -850,7 +850,7 @@ InitStatus CbmL1::Init() trd2dIter2.SetTripletChi2Cut(2 * 23.4450f); // = 7.815 * 3; // prob = 0.05 trd2dIter2.SetDoubletChi2Cut(4. * 7.56327f); // = 1.3449 * 2.f / 3.f; // prob = 0.1 trd2dIter2.SetPickGather(3.0f); - trd2dIter2.SetPickNeighbour(4.0f); + trd2dIter2.SetTripletLinkChi2(16.); trd2dIter2.SetMaxInvMom(1.0 / 0.05); //(1.0 / 0.5); trd2dIter2.SetMaxSlopePV(.5f); trd2dIter2.SetMaxSlope(.5f); diff --git a/reco/L1/L1Algo/L1Algo.h b/reco/L1/L1Algo/L1Algo.h index a9ee938f8134b6da6be3efa2be38c6aa6e8d9d31..6a4d8da4159767d1832763cbdada9791ea704bf8 100644 --- a/reco/L1/L1Algo/L1Algo.h +++ b/reco/L1/L1Algo/L1Algo.h @@ -407,6 +407,8 @@ public: int GetMcTrackIdForUnusedHit(int iHit); private: + bool checkTripletMatch(const L1Triplet& l, const L1Triplet& r, fscal& dchi2) const; + int fNstationsBeforePipe {0}; ///< number of stations before pipe (MVD stations in CBM) int fNfieldStations {0}; ///< number of stations in the field region //alignas(16) L1StationsArray_t fStations {}; ///< array of L1Station objects @@ -560,11 +562,11 @@ private: /// parameters which are different for different iterations. Set in the begin of CAL1TrackFinder - float fPickGather {L1Utils::kNaN}; ///< same for attaching additional hits to track - float fPickNeighbour {L1Utils::kNaN}; ///< (fPickNeighbour < dp/dp_error) => triplets are neighbours - fvec fMaxInvMom {L1Utils::kNaN}; ///< max considered q/p for tracks - fvec fMaxSlopePV {L1Utils::kNaN}; ///< max slope (tx\ty) in prim vertex - float fMaxSlope {L1Utils::kNaN}; ///< max slope (tx\ty) in 3d hit position of a triplet + float fPickGather {L1Utils::kNaN}; ///< same for attaching additional hits to track + float fTripletLinkChi2 {L1Utils::kNaN}; ///< (dp2/dp_error2 < fTripletLinkChi2) => triplets are neighbours + fvec fMaxInvMom {L1Utils::kNaN}; ///< max considered q/p for tracks + fvec fMaxSlopePV {L1Utils::kNaN}; ///< max slope (tx\ty) in prim vertex + float fMaxSlope {L1Utils::kNaN}; ///< max slope (tx\ty) in 3d hit position of a triplet fvec fTargX {L1Utils::kNaN}; ///< target position x coordinate for the current iteration (modifiable) fvec fTargY {L1Utils::kNaN}; ///< target position y coordinate for the current iteration (modifiable) diff --git a/reco/L1/L1Algo/L1CAIteration.cxx b/reco/L1/L1Algo/L1CAIteration.cxx index 2239687a2b81cd381242b80eb2196253d6f01bed..6fc58614647e525a2b8c787b0894a9987f0a27c4 100644 --- a/reco/L1/L1Algo/L1CAIteration.cxx +++ b/reco/L1/L1Algo/L1CAIteration.cxx @@ -34,7 +34,7 @@ bool L1CAIteration::Check() const res = this->CheckValueLimits<float>("triplet_chi2_cut", fTripletChi2Cut, 0.f, kMaxFloat) && res; res = this->CheckValueLimits<float>("doublet_chi2_cut", fDoubletChi2Cut, 0.f, kMaxFloat) && res; res = this->CheckValueLimits<float>("pick_gather", fPickGather, 0.f, kMaxFloat) && res; - res = this->CheckValueLimits<float>("pick_neighbour", fPickNeighbour, 0.f, kMaxFloat) && res; + res = this->CheckValueLimits<float>("triplet_link_chi2", fTripletLinkChi2, 0.f, kMaxFloat) && res; res = this->CheckValueLimits<float>("min_momentum", fMaxInvMom, 1.f / kMaxFloat, 1.f / 0.001f) && res; res = this->CheckValueLimits<float>("max_slope_pv", fMaxSlopePV, 0.f, kMaxFloat) && res; res = this->CheckValueLimits<float>("max_slope", fMaxSlope, 0.f, kMaxFloat) && res; @@ -82,7 +82,7 @@ std::string L1CAIteration::ToString(int indentLevel) const aStream << indent << indCh << "Triplet chi2 cut: " << fTripletChi2Cut << '\n'; aStream << indent << indCh << "Doublet chi2 cut: " << fDoubletChi2Cut << '\n'; aStream << indent << indCh << "Pick gather: " << fPickGather << '\n'; - aStream << indent << indCh << "Pick neighbour: " << fPickNeighbour << '\n'; + aStream << indent << indCh << "Triplet link chi2: " << fTripletLinkChi2 << '\n'; aStream << indent << indCh << "Max inverse momentum: " << fMaxInvMom << '\n'; aStream << indent << indCh << "Max slope at primary vertex: " << fMaxSlopePV << '\n'; aStream << indent << indCh << "Max slope: " << fMaxSlope << '\n'; diff --git a/reco/L1/L1Algo/L1CAIteration.h b/reco/L1/L1Algo/L1CAIteration.h index dabec209a6c83a1198f9f8c09f9adddf039f5940..a6e3d59f0360f8f44bd00f6ee50e23619ad17fcb 100644 --- a/reco/L1/L1Algo/L1CAIteration.h +++ b/reco/L1/L1Algo/L1CAIteration.h @@ -87,7 +87,7 @@ public: float GetPickGather() const { return fPickGather; } /// Gets min value of dp/dp_error, for which two tiplets are neighbours - float GetPickNeighbour() const { return fPickNeighbour; } + float GetTripletLinkChi2() const { return fTripletLinkChi2; } /// Checks flag: true - only primary tracks are searched, false - [all or only secondary?] bool GetPrimaryFlag() const { return fIsPrimary; } @@ -161,7 +161,7 @@ public: void SetPickGather(float input) { fPickGather = input; } /// Sets min value of dp/dp_error, for which two tiplets are neighbours - void SetPickNeighbour(float input) { fPickNeighbour = input; } + void SetTripletLinkChi2(float input) { fTripletLinkChi2 = input; } /// Sets flag: primary tracks - true, secondary tracks - false void SetPrimaryFlag(bool flag) { fIsPrimary = flag; } @@ -209,18 +209,18 @@ private: // NOTE: For each new cut one should not forget to create a setter and a getter, insert the value // initialization in the copy constructor and the Swap operator as well as a string repre- // sentation to the ToString method (S.Zharko) - float fTrackChi2Cut = 10.f; ///< Track chi2 upper cut - float fTripletChi2Cut = 21.1075f; ///< Triplet chi2 upper cut - float fDoubletChi2Cut = 11.3449 * 2.f / 3.f; ///< Doublet chi2 upper cut - float fPickGather = 3.0; ///< Size of region to attach new hits to the created track - float fPickNeighbour = 5.0; ///< Min value of dp/dp_error, for which two tiplets are neighbours - float fMaxInvMom = 1.0 / 0.5; ///< Max considered q/p for tracks - float fMaxSlopePV = 1.1; ///< Max slope (tx\ty) in primary vertex - float fMaxSlope = 2.748; ///< Max slope (tx\ty) in 3D hit position of a triplet - float fMaxDZ = 0.f; ///< Correction for accounting overlaping and iff z [cm] - float fTargetPosSigmaX = 0; ///< Constraint on target position in X direction [cm] - float fTargetPosSigmaY = 0; ///< Constraint on target position in Y direction [cm] - int fFirstStationIndex = 0; ///< First station, used for tracking + float fTrackChi2Cut = 10.f; ///< Track chi2 upper cut + float fTripletChi2Cut = 21.1075f; ///< Triplet chi2 upper cut + float fDoubletChi2Cut = 11.3449 * 2.f / 3.f; ///< Doublet chi2 upper cut + float fPickGather = 3.0; ///< Size of region to attach new hits to the created track + float fTripletLinkChi2 = 25.0; ///< Min value of dp^2/dp_error^2, for which two tiplets are neighbours + float fMaxInvMom = 1.0 / 0.5; ///< Max considered q/p for tracks + float fMaxSlopePV = 1.1; ///< Max slope (tx\ty) in primary vertex + float fMaxSlope = 2.748; ///< Max slope (tx\ty) in 3D hit position of a triplet + float fMaxDZ = 0.f; ///< Correction for accounting overlaping and iff z [cm] + float fTargetPosSigmaX = 0; ///< Constraint on target position in X direction [cm] + float fTargetPosSigmaY = 0; ///< Constraint on target position in Y direction [cm] + int fFirstStationIndex = 0; ///< First station, used for tracking bool fIsPrimary = false; ///< Flag: true - only primary tracks are searched for bool fIsElectron = false; ///< Flag: true - only electrons are searched for @@ -252,7 +252,7 @@ private: ar& fTripletChi2Cut; ar& fDoubletChi2Cut; ar& fPickGather; - ar& fPickNeighbour; + ar& fTripletLinkChi2; ar& fMaxInvMom; ar& fMaxSlopePV; ar& fMaxSlope; diff --git a/reco/L1/L1Algo/L1CATrackFinder.cxx b/reco/L1/L1Algo/L1CATrackFinder.cxx index 5706968165f255f4708bda888d7fb05734a0b721..6ecdb20e68dd4b4f927c6b7d6dd3f13bc40c72be 100644 --- a/reco/L1/L1Algo/L1CATrackFinder.cxx +++ b/reco/L1/L1Algo/L1CATrackFinder.cxx @@ -74,6 +74,54 @@ using std::cout; using std::endl; +bool L1Algo::checkTripletMatch(const L1Triplet& l, const L1Triplet& r, fscal& dchi2) const +{ + dchi2 = 0.; + + if (r.GetMHit() != l.GetRHit()) return false; + if (r.GetLHit() != l.GetMHit()) return false; + + if (r.GetMSta() != l.GetRSta()) return false; + if (r.GetLSta() != l.GetMSta()) return false; + + fscal dqp = fabs(l.GetQp() - r.GetQp()); + fscal Cqp = l.GetCqp() + r.GetCqp(); + + fscal dtx = fabs(l.GetTx() - r.GetTx()); + fscal Ctx = l.GetCtx() + r.GetCtx(); + + fscal dty = fabs(l.GetTy() - r.GetTy()); + fscal Cty = l.GetCty() + r.GetCty(); + + if (kGlobal != fTrackingMode && kMcbm != fTrackingMode) { + if (!std::isfinite(dqp)) return false; + if (!std::isfinite(Cqp)) return false; + if (dqp * dqp > fTripletLinkChi2 * Cqp) { + return false; // bad neighbour // CHECKME why do we need recheck it?? (it really change result) + } + } + else { + + // it shouldn't happen, but happens sometimes + + if (!std::isfinite(dtx)) return false; + if (!std::isfinite(dty)) return false; + if (!std::isfinite(Ctx)) return false; + if (!std::isfinite(Cty)) return false; + + if (dty * dty > fTripletLinkChi2 * Cty) return false; + if (dtx * dtx > fTripletLinkChi2 * Ctx) return false; + } + + if (kGlobal == fTrackingMode || kMcbm == fTrackingMode) { dchi2 = dtx * dtx / Ctx + dty * dty / Cty; } + else { + dchi2 = dqp * dqp / Cqp; + } + if (!std::isfinite(dchi2)) return false; + + return true; +} + inline void L1Algo::findSingletsStep0( // input Tindex start_lh, Tindex n1_l, L1HitPoint* Hits_l, // output @@ -1204,7 +1252,8 @@ inline void L1Algo::findTripletsStep3( // input L1Triplet& curNeighbour = fTriplets[neighStation][neighThread][neighTriplet]; - if ((curNeighbour.GetMHit() != ihitr)) continue; + fscal dchi2 = 0.; + if (!checkTripletMatch(tr1, curNeighbour, dchi2)) continue; if (tr1.GetFNeighbour() == 0) tr1.SetFNeighbour(neighLocation); @@ -1278,9 +1327,8 @@ inline void L1Algo::f5( // input // if (neigh.GetMSta() != istar) continue; // neighbours should have 2 common hits // if (neigh.GetMHit() != ihitr) continue; //!!! - if (fabs(trip.GetQp() - neigh.GetQp()) > fPickNeighbour * sqrt(trip.GetCqp() + neigh.GetCqp())) { - continue; // neighbours should have same qp - } + fscal dchi2 = 0.; + if (!checkTripletMatch(trip, neigh, dchi2)) continue; // calculate level unsigned char jlevel = neigh.GetLevel(); @@ -1818,15 +1866,15 @@ void L1Algo::CATrackFinder() { // --- SET PARAMETERS FOR THE ITERATION --- - fFirstCAstation = caIteration.GetFirstStationIndex(); - fTrackChi2Cut = caIteration.GetTrackChi2Cut(); - fDoubletChi2Cut = caIteration.GetDoubletChi2Cut(); //11.3449 * 2.f / 3.f; // prob = 0.1 - fTripletChi2Cut = caIteration.GetTripletChi2Cut(); //21.1075; // prob = 0.01% - fPickGather = caIteration.GetPickGather(); //3.0; - fPickNeighbour = caIteration.GetPickNeighbour(); //5.0; - fMaxInvMom = caIteration.GetMaxInvMom(); //1.0 / 0.5; // max considered q/p - fMaxSlopePV = caIteration.GetMaxSlopePV(); //1.1; - fMaxSlope = caIteration.GetMaxSlope(); //2.748; // corresponds to 70 grad + fFirstCAstation = caIteration.GetFirstStationIndex(); + fTrackChi2Cut = caIteration.GetTrackChi2Cut(); + fDoubletChi2Cut = caIteration.GetDoubletChi2Cut(); //11.3449 * 2.f / 3.f; // prob = 0.1 + fTripletChi2Cut = caIteration.GetTripletChi2Cut(); //21.1075; // prob = 0.01% + fPickGather = caIteration.GetPickGather(); //3.0; + fTripletLinkChi2 = caIteration.GetTripletLinkChi2(); //5.0; + fMaxInvMom = caIteration.GetMaxInvMom(); //1.0 / 0.5; // max considered q/p + fMaxSlopePV = caIteration.GetMaxSlopePV(); //1.1; + fMaxSlope = caIteration.GetMaxSlope(); //2.748; // corresponds to 70 grad // define the target fTargX = fParameters.GetTargetPositionX(); @@ -2652,42 +2700,9 @@ inline void L1Algo::CAFindTrack(int ista, L1Branch& best_tr, unsigned char& best unsigned int Triplet = TripletId2Triplet(ID); const L1Triplet& new_trip = fTriplets[Station][Thread][Triplet]; - if ((new_trip.GetMHit() != curr_trip->GetRHit())) continue; - if ((new_trip.GetLHit() != curr_trip->GetMHit())) continue; - - fscal dqp = fabs(curr_trip->GetQp() - new_trip.GetQp()); - fscal Cqp = curr_trip->GetCqp() + new_trip.GetCqp(); - - fscal dtx = fabs(curr_trip->GetTx() - new_trip.GetTx()); - fscal Ctx = curr_trip->GetCtx() + new_trip.GetCtx(); - - fscal dty = fabs(curr_trip->GetTy() - new_trip.GetTy()); - fscal Cty = curr_trip->GetCty() + new_trip.GetCty(); - - if (kGlobal != fTrackingMode && kMcbm != fTrackingMode) { - if (!std::isfinite(dqp)) continue; - if (!std::isfinite(Cqp)) continue; - if (dqp > fPickNeighbour * sqrt(Cqp)) { - continue; // bad neighbour // CHECKME why do we need recheck it?? (it really change result) - } - } - else { - - // it shouldn't happen, but happens sometimes - - if (!std::isfinite(dtx)) continue; - if (!std::isfinite(dty)) continue; - if (!std::isfinite(Ctx)) continue; - if (!std::isfinite(Cty)) continue; - assert(std::isfinite(dtx)); - assert(std::isfinite(dty)); - assert(std::isfinite(Ctx)); - assert(std::isfinite(Cty)); - - if (dty > fPickNeighbour * sqrt(Cty)) continue; - if (dtx > fPickNeighbour * sqrt(Ctx)) continue; - } + fscal dchi2 = 0.; + if (!checkTripletMatch(*curr_trip, new_trip, dchi2)) continue; if (fvHitKeyFlags[(*vHitsUnused)[new_trip.GetLHit()].f] || fvHitKeyFlags[(*vHitsUnused)[new_trip.GetLHit()].b]) { //hits are used @@ -2702,21 +2717,8 @@ inline void L1Algo::CAFindTrack(int ista, L1Branch& best_tr, unsigned char& best else { // hit is not used: add the left hit from the new triplet to the current track unsigned char new_L = curr_L + 1; - fscal new_chi2 = curr_chi2; + fscal new_chi2 = curr_chi2 + dchi2; - if (kGlobal == fTrackingMode || kMcbm == fTrackingMode) { - dtx = dtx / sqrt(Ctx); - dty = dty / sqrt(Cty); - - assert(std::isfinite(dtx)); - assert(std::isfinite(dty)); - new_chi2 += dtx * dtx; - new_chi2 += dty * dty; - } - else { - dqp = dqp / sqrt(Cqp); - new_chi2 += dqp * dqp; - } if (0) { //SGtrd2d debug!! int mc01 = GetMcTrackIdForUnusedHit(curr_trip->GetLHit()); diff --git a/reco/L1/L1Algo/L1ConfigRW.cxx b/reco/L1/L1Algo/L1ConfigRW.cxx index 9a57f57063f151f4679f08c90014f169a517ef86..79c5ac68fe8b7615b3965b16d5bfd57884eb1f21 100644 --- a/reco/L1/L1Algo/L1ConfigRW.cxx +++ b/reco/L1/L1Algo/L1ConfigRW.cxx @@ -65,7 +65,7 @@ void L1ConfigRW::ReadCAIterations(const YAML::Node& node) caIter.SetTripletChi2Cut(input["triplet_chi2_cut"].as<float>(caIter.GetTripletChi2Cut())); caIter.SetDoubletChi2Cut(input["doublet_chi2_cut"].as<float>(caIter.GetDoubletChi2Cut())); caIter.SetPickGather(input["pick_gather"].as<float>(caIter.GetPickGather())); - caIter.SetPickNeighbour(input["pick_neighbour"].as<float>(caIter.GetPickNeighbour())); + caIter.SetTripletLinkChi2(input["triplet_link_chi2"].as<float>(caIter.GetTripletLinkChi2())); caIter.SetMaxInvMom(1. / input["min_momentum"].as<float>(caIter.GetMaxInvMom())); caIter.SetMaxSlopePV(input["max_slope_pv"].as<float>(caIter.GetMaxSlopePV())); caIter.SetMaxSlope(input["max_slope"].as<float>(caIter.GetMaxSlope())); diff --git a/reco/L1/L1Algo/L1Triplet.h b/reco/L1/L1Algo/L1Triplet.h index 933758eb80f3f0d49ffcfc492f3d1a5d1673801d..1e0102cde333652ea2aeda4861d7f9cb0671bbdd 100644 --- a/reco/L1/L1Algo/L1Triplet.h +++ b/reco/L1/L1Algo/L1Triplet.h @@ -92,7 +92,7 @@ private: /// level k = k-ths triplet along the track counting upstream, from right to left. unsigned char fLevel = 0; - unsigned char fSta = 0; ///< packed station numbers: staL (4b), staM-1-staL (2b), staR-2-staL (2b) + unsigned short fSta = 0; ///< packed station numbers: staL (12b), staM-1-staL (2b), staR-2-staL (2b) }; #endif