@@ -560,6 +560,12 @@ struct skimmerPrimaryMuon {
560560 float phiMatchedMCHMID = propmuonAtPV_Matched.getPhi ();
561561 o2::math_utils::bringTo02Pi (phiMatchedMCHMID);
562562
563+ o2::dataformats::GlobalFwdTrack propmuonAtDCA_Matched = propagateMuon (fwdtrack, fwdtrack, collision, propagationPoint::kToDCA , matchingZ, mBz , mZShift );
564+ float dcaX_Matched = propmuonAtDCA_Matched.getX () - collision.posX ();
565+ float dcaY_Matched = propmuonAtDCA_Matched.getY () - collision.posY ();
566+ float dcaXY_Matched = std::sqrt (dcaX_Matched * dcaX_Matched + dcaY_Matched * dcaY_Matched);
567+ float pDCA = fwdtrack.p () * dcaXY_Matched;
568+
563569 float min_chi2MatchMCHMFT = 1e+10 ;
564570 std::tuple<int , int , int > tupleIds_at_min_chi2mftmch;
565571 for (const auto & muon_tmp : muons_per_MCHMID) {
@@ -587,12 +593,6 @@ struct skimmerPrimaryMuon {
587593 float dcaY = propmuonAtPV.getY () - collision.posY ();
588594 float dcaXY = std::sqrt (dcaX * dcaX + dcaY * dcaY);
589595
590- o2::dataformats::GlobalFwdTrack propmuonAtDCA_Matched = propagateMuon (mchtrack, mchtrack, collision, propagationPoint::kToDCA , matchingZ, mBz , mZShift );
591- float dcaX_Matched = propmuonAtDCA_Matched.getX () - collision.posX ();
592- float dcaY_Matched = propmuonAtDCA_Matched.getY () - collision.posY ();
593- float dcaXY_Matched = std::sqrt (dcaX_Matched * dcaX_Matched + dcaY_Matched * dcaY_Matched);
594- float pDCA = mchtrack.p () * dcaXY_Matched;
595-
596596 // LOGF(info, "muon_tmp.globalIndex() = %d, muon_tmp.matchMCHTrackId() = %d, muon_tmp.matchMFTTrackId() = %d, muon_tmp.chi2MatchMCHMFT() = %f", muon_tmp.globalIndex(), muon_tmp.matchMCHTrackId(), muon_tmp.matchMFTTrackId(), muon_tmp.chi2MatchMCHMFT());
597597
598598 if (cfgApplyPreselectionInBestMatch && !isSelected (pt, eta, muon_tmp.rAtAbsorberEnd (), pDCA, muon_tmp.chi2 () / ndf, muon_tmp.trackType (), dcaXY)) {
@@ -613,37 +613,37 @@ struct skimmerPrimaryMuon {
613613 // LOGF(info, "min: muon_tmp.globalIndex() = %d, muon_tmp.matchMCHTrackId() = %d, muon_tmp.matchMFTTrackId() = %d, muon_tmp.chi2MatchMCHMFT() = %f", std::get<0>(tupleIds_at_min), std::get<1>(tupleIds_at_min), std::get<2>(tupleIds_at_min), min_chi2MatchMCHMFT);
614614 }
615615
616- // PresliceUnsorted<aod::FwdTracks> perMFTTrack = o2::aod::fwdtrack::matchMFTTrackId;
617- template <typename TFwdTrack, typename TFwdTracks, typename TMFTTracks>
618- bool isBestMatch (TFwdTrack const & fwdtrack, TFwdTracks const & fwdtracks, TMFTTracks const &)
619- {
620- if (fwdtrack.trackType () == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack) {
621- std::map<int , float > map_chi2MCHMFT;
622- map_chi2MCHMFT[fwdtrack.globalIndex ()] = fwdtrack.chi2MatchMCHMFT (); // add myself
623- // LOGF(info, "add myself: fwdtrack.globalIndex() = %d, fwdtrack.chi2MatchMCHMFT() = %f", fwdtrack.globalIndex(), fwdtrack.chi2MatchMCHMFT());
624-
625- auto glMuonsPerMFT = std::views::filter (vec_min_chi2MatchMCHMFT, [&](std::tuple<int , int , int > t) { return std::get<2 >(t) == fwdtrack.matchMFTTrackId () && std::get<1 >(t) != fwdtrack.matchMCHTrackId () && std::get<0 >(t) != fwdtrack.globalIndex (); });
626- for (const auto & candidate : glMuonsPerMFT) {
627- map_chi2MCHMFT[std::get<0 >(candidate)] = fwdtracks.rawIteratorAt (std::get<0 >(candidate)).chi2MatchMCHMFT ();
628- // LOGF(info, "same MFT found: candidate.globalIndex() = %d, candidate.chi2MatchMCHMFT() = %f", std::get<0>(candidate), fwdtracks.rawIteratorAt(std::get<0>(candidate)).chi2MatchMCHMFT());
629- }
630-
631- auto it = std::min_element (map_chi2MCHMFT.begin (), map_chi2MCHMFT.end (), [](decltype (map_chi2MCHMFT)::value_type& l, decltype (map_chi2MCHMFT)::value_type& r) -> bool { return l.second < r.second ; });
632-
633- // LOGF(info, "min: globalIndex = %d, chi2 = %f", it->first, it->second);
634- // LOGF(info, "bool = %d", it->first == fwdtrack.globalIndex());
635-
636- if (it->first == fwdtrack.globalIndex ()) { // search for minimum matching-chi2
637- map_chi2MCHMFT.clear ();
638- return true ;
639- } else {
640- map_chi2MCHMFT.clear ();
641- return false ;
642- }
643- } else {
644- return true ;
645- }
646- }
616+ // // PresliceUnsorted<aod::FwdTracks> perMFTTrack = o2::aod::fwdtrack::matchMFTTrackId;
617+ // template <typename TFwdTrack, typename TFwdTracks, typename TMFTTracks>
618+ // bool isBestMatch(TFwdTrack const& fwdtrack, TFwdTracks const& fwdtracks, TMFTTracks const&)
619+ // {
620+ // if (fwdtrack.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack) {
621+ // std::map<int, float> map_chi2MCHMFT;
622+ // map_chi2MCHMFT[fwdtrack.globalIndex()] = fwdtrack.chi2MatchMCHMFT(); // add myself
623+ // // LOGF(info, "add myself: fwdtrack.globalIndex() = %d, fwdtrack.chi2MatchMCHMFT() = %f", fwdtrack.globalIndex(), fwdtrack.chi2MatchMCHMFT());
624+
625+ // auto glMuonsPerMFT = std::views::filter(vec_min_chi2MatchMCHMFT, [&](std::tuple<int, int, int> t) { return std::get<2>(t) == fwdtrack.matchMFTTrackId() && std::get<1>(t) != fwdtrack.matchMCHTrackId() && std::get<0>(t) != fwdtrack.globalIndex(); });
626+ // for (const auto& candidate : glMuonsPerMFT) {
627+ // map_chi2MCHMFT[std::get<0>(candidate)] = fwdtracks.rawIteratorAt(std::get<0>(candidate)).chi2MatchMCHMFT();
628+ // // LOGF(info, "same MFT found: candidate.globalIndex() = %d, candidate.chi2MatchMCHMFT() = %f", std::get<0>(candidate), fwdtracks.rawIteratorAt(std::get<0>(candidate)).chi2MatchMCHMFT());
629+ // }
630+
631+ // auto it = std::min_element(map_chi2MCHMFT.begin(), map_chi2MCHMFT.end(), [](decltype(map_chi2MCHMFT)::value_type& l, decltype(map_chi2MCHMFT)::value_type& r) -> bool { return l.second < r.second; });
632+
633+ // // LOGF(info, "min: globalIndex = %d, chi2 = %f", it->first, it->second);
634+ // // LOGF(info, "bool = %d", it->first == fwdtrack.globalIndex());
635+
636+ // if (it->first == fwdtrack.globalIndex()) { // search for minimum matching-chi2
637+ // map_chi2MCHMFT.clear();
638+ // return true;
639+ // } else {
640+ // map_chi2MCHMFT.clear();
641+ // return false;
642+ // }
643+ // } else {
644+ // return true;
645+ // }
646+ // }
647647
648648 SliceCache cache;
649649 Preslice<aod::FwdTracks> perCollision = o2::aod::fwdtrack::collisionId;
@@ -684,9 +684,9 @@ struct skimmerPrimaryMuon {
684684 continue ;
685685 }
686686
687- if (!isBestMatch (fwdtrack, fwdtracks, mfttracks)) {
688- continue ;
689- }
687+ // if (!isBestMatch(fwdtrack, fwdtracks, mfttracks)) {
688+ // continue;
689+ // }
690690
691691 if (!fillFwdTrackTable<false , false , MyFwdTracks, aod::MFTTracks, false >(collision, fwdtrack, nullptr , false )) {
692692 continue ;
@@ -770,9 +770,9 @@ struct skimmerPrimaryMuon {
770770 if (fwdtrack.trackType () == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && std::find (vec_min_chi2MatchMCHMFT.begin (), vec_min_chi2MatchMCHMFT.end (), std::make_tuple (fwdtrack.globalIndex (), fwdtrack.matchMCHTrackId (), fwdtrack.matchMFTTrackId ())) == vec_min_chi2MatchMCHMFT.end ()) {
771771 continue ;
772772 }
773- if (!isBestMatch (fwdtrack, fwdtracks, mfttracks)) {
774- continue ;
775- }
773+ // if (!isBestMatch(fwdtrack, fwdtracks, mfttracks)) {
774+ // continue;
775+ // }
776776
777777 if (!fillFwdTrackTable<false , false , MyFwdTracks, aod::MFTTracks, false >(collision, fwdtrack, nullptr , mapAmb[fwdtrack.globalIndex ()])) {
778778 continue ;
@@ -861,9 +861,9 @@ struct skimmerPrimaryMuon {
861861 if (fwdtrack.trackType () == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && std::find (vec_min_chi2MatchMCHMFT.begin (), vec_min_chi2MatchMCHMFT.end (), std::make_tuple (fwdtrack.globalIndex (), fwdtrack.matchMCHTrackId (), fwdtrack.matchMFTTrackId ())) == vec_min_chi2MatchMCHMFT.end ()) {
862862 continue ;
863863 }
864- if (!isBestMatch (fwdtrack, fwdtracks, mfttracks)) {
865- continue ;
866- }
864+ // if (!isBestMatch(fwdtrack, fwdtracks, mfttracks)) {
865+ // continue;
866+ // }
867867
868868 if (!fillFwdTrackTable<false , true , MyFwdTracks, aod::MFTTracks, false >(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex ()])) {
869869 continue ;
@@ -943,9 +943,9 @@ struct skimmerPrimaryMuon {
943943 if (fwdtrack.trackType () == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && std::find (vec_min_chi2MatchMCHMFT.begin (), vec_min_chi2MatchMCHMFT.end (), std::make_tuple (fwdtrack.globalIndex (), fwdtrack.matchMCHTrackId (), fwdtrack.matchMFTTrackId ())) == vec_min_chi2MatchMCHMFT.end ()) {
944944 continue ;
945945 }
946- if (!isBestMatch (fwdtrack, fwdtracks, mfttracks)) {
947- continue ;
948- }
946+ // if (!isBestMatch(fwdtrack, fwdtracks, mfttracks)) {
947+ // continue;
948+ // }
949949
950950 if (!fillFwdTrackTable<false , false , MyFwdTracks, aod::MFTTracks, false >(collision, fwdtrack, nullptr , false )) {
951951 continue ;
@@ -1031,9 +1031,9 @@ struct skimmerPrimaryMuon {
10311031 if (fwdtrack.trackType () == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && std::find (vec_min_chi2MatchMCHMFT.begin (), vec_min_chi2MatchMCHMFT.end (), std::make_tuple (fwdtrack.globalIndex (), fwdtrack.matchMCHTrackId (), fwdtrack.matchMFTTrackId ())) == vec_min_chi2MatchMCHMFT.end ()) {
10321032 continue ;
10331033 }
1034- if (!isBestMatch (fwdtrack, fwdtracks, mfttracks)) {
1035- continue ;
1036- }
1034+ // if (!isBestMatch(fwdtrack, fwdtracks, mfttracks)) {
1035+ // continue;
1036+ // }
10371037
10381038 if (!fillFwdTrackTable<false , false , MyFwdTracks, aod::MFTTracks, false >(collision, fwdtrack, nullptr , mapAmb[fwdtrack.globalIndex ()])) {
10391039 continue ;
@@ -1123,9 +1123,9 @@ struct skimmerPrimaryMuon {
11231123 if (fwdtrack.trackType () == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && std::find (vec_min_chi2MatchMCHMFT.begin (), vec_min_chi2MatchMCHMFT.end (), std::make_tuple (fwdtrack.globalIndex (), fwdtrack.matchMCHTrackId (), fwdtrack.matchMFTTrackId ())) == vec_min_chi2MatchMCHMFT.end ()) {
11241124 continue ;
11251125 }
1126- if (!isBestMatch (fwdtrack, fwdtracks, mfttracks)) {
1127- continue ;
1128- }
1126+ // if (!isBestMatch(fwdtrack, fwdtracks, mfttracks)) {
1127+ // continue;
1128+ // }
11291129
11301130 if (!fillFwdTrackTable<false , true , MyFwdTracks, aod::MFTTracks, false >(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex ()])) {
11311131 continue ;
@@ -1206,9 +1206,9 @@ struct skimmerPrimaryMuon {
12061206 if (fwdtrack.trackType () == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && std::find (vec_min_chi2MatchMCHMFT.begin (), vec_min_chi2MatchMCHMFT.end (), std::make_tuple (fwdtrack.globalIndex (), fwdtrack.matchMCHTrackId (), fwdtrack.matchMFTTrackId ())) == vec_min_chi2MatchMCHMFT.end ()) {
12071207 continue ;
12081208 }
1209- if (!isBestMatch (fwdtrack, fwdtracks, mfttracks)) {
1210- continue ;
1211- }
1209+ // if (!isBestMatch(fwdtrack, fwdtracks, mfttracks)) {
1210+ // continue;
1211+ // }
12121212
12131213 if (!fillFwdTrackTable<true , false , MyFwdTracksMC, MFTTracksMC, false >(collision, fwdtrack, nullptr , false )) {
12141214 continue ;
@@ -1297,9 +1297,9 @@ struct skimmerPrimaryMuon {
12971297 if (fwdtrack.trackType () == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && std::find (vec_min_chi2MatchMCHMFT.begin (), vec_min_chi2MatchMCHMFT.end (), std::make_tuple (fwdtrack.globalIndex (), fwdtrack.matchMCHTrackId (), fwdtrack.matchMFTTrackId ())) == vec_min_chi2MatchMCHMFT.end ()) {
12981298 continue ;
12991299 }
1300- if (!isBestMatch (fwdtrack, fwdtracks, mfttracks)) {
1301- continue ;
1302- }
1300+ // if (!isBestMatch(fwdtrack, fwdtracks, mfttracks)) {
1301+ // continue;
1302+ // }
13031303
13041304 if (!fillFwdTrackTable<true , false , MyFwdTracksMC, MFTTracksMC, false >(collision, fwdtrack, nullptr , mapAmb[fwdtrack.globalIndex ()])) {
13051305 continue ;
@@ -1392,9 +1392,9 @@ struct skimmerPrimaryMuon {
13921392 if (fwdtrack.trackType () == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && std::find (vec_min_chi2MatchMCHMFT.begin (), vec_min_chi2MatchMCHMFT.end (), std::make_tuple (fwdtrack.globalIndex (), fwdtrack.matchMCHTrackId (), fwdtrack.matchMFTTrackId ())) == vec_min_chi2MatchMCHMFT.end ()) {
13931393 continue ;
13941394 }
1395- if (!isBestMatch (fwdtrack, fwdtracks, mfttracks)) {
1396- continue ;
1397- }
1395+ // if (!isBestMatch(fwdtrack, fwdtracks, mfttracks)) {
1396+ // continue;
1397+ // }
13981398
13991399 if (!fillFwdTrackTable<true , true , MyFwdTracksMC, MFTTracksMC, false >(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex ()])) {
14001400 continue ;
0 commit comments