Skip to content

Commit 7262b17

Browse files
authored
[PWGEM/Dilepton] quick fix in ele and mu (#14972)
1 parent 4d56dae commit 7262b17

File tree

2 files changed

+70
-68
lines changed

2 files changed

+70
-68
lines changed

PWGEM/Dilepton/TableProducer/skimmerPrimaryElectron.cxx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -682,6 +682,7 @@ struct skimmerPrimaryElectron {
682682
{
683683
stored_trackIds.reserve(tracks.size());
684684

685+
initCCDB(bcs.iteratorAt(0));
685686
mTOFResponse->processSetup(bcs.iteratorAt(0));
686687

687688
calculateTOFNSigmaWithReassociation<false>(collisions, bcs, tracks, nullptr);
@@ -738,10 +739,7 @@ struct skimmerPrimaryElectron {
738739
{
739740
stored_trackIds.reserve(tracks.size() * 2);
740741

741-
// for (const auto& collision : collisions) {
742-
// auto bc = collision.template foundBC_as<aod::BCsWithTimestamps>();
743-
// initCCDB(bc);
744-
// }
742+
initCCDB(bcs.iteratorAt(0));
745743
mTOFResponse->processSetup(bcs.iteratorAt(0));
746744

747745
for (const auto& track : tracks) {
@@ -805,6 +803,7 @@ struct skimmerPrimaryElectron {
805803
void processRec_SA_SWT(MyCollisionsWithSWT const& collisions, aod::BCsWithTimestamps const& bcs, MyFilteredTracks const& tracks)
806804
{
807805
stored_trackIds.reserve(tracks.size());
806+
initCCDB(bcs.iteratorAt(0));
808807
mTOFResponse->processSetup(bcs.iteratorAt(0));
809808
calculateTOFNSigmaWithReassociation<false>(collisions, bcs, tracks, nullptr);
810809

@@ -863,6 +862,7 @@ struct skimmerPrimaryElectron {
863862
void processRec_TTCA_SWT(MyCollisionsWithSWT const& collisions, aod::BCsWithTimestamps const& bcs, MyTracks const& tracks, aod::TrackAssoc const& trackIndices)
864863
{
865864
stored_trackIds.reserve(tracks.size() * 2);
865+
initCCDB(bcs.iteratorAt(0));
866866
mTOFResponse->processSetup(bcs.iteratorAt(0));
867867
for (const auto& track : tracks) {
868868
if (mapCollisionTime.find(track.collisionId()) == mapCollisionTime.end()) {
@@ -933,6 +933,7 @@ struct skimmerPrimaryElectron {
933933
void processMC_SA(soa::Join<MyCollisions, aod::McCollisionLabels> const& collisions, aod::McCollisions const&, aod::BCsWithTimestamps const& bcs, MyFilteredTracksMC const& tracks, aod::McParticles const&)
934934
{
935935
stored_trackIds.reserve(tracks.size());
936+
initCCDB(bcs.iteratorAt(0));
936937
mTOFResponse->processSetup(bcs.iteratorAt(0));
937938
calculateTOFNSigmaWithReassociation<false>(collisions, bcs, tracks, nullptr);
938939

@@ -989,6 +990,7 @@ struct skimmerPrimaryElectron {
989990
void processMC_TTCA(soa::Join<MyCollisions, aod::McCollisionLabels> const& collisions, aod::McCollisions const&, aod::BCsWithTimestamps const& bcs, MyTracksMC const& tracks, aod::TrackAssoc const& trackIndices, aod::McParticles const&)
990991
{
991992
stored_trackIds.reserve(tracks.size() * 2);
993+
initCCDB(bcs.iteratorAt(0));
992994
mTOFResponse->processSetup(bcs.iteratorAt(0));
993995
for (const auto& track : tracks) {
994996
if (mapCollisionTime.find(track.collisionId()) == mapCollisionTime.end()) {

PWGEM/Dilepton/TableProducer/skimmerPrimaryMuon.cxx

Lines changed: 64 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)