Skip to content

Commit 4404428

Browse files
authored
[PWGEM/Dilepton] fix mc label of muon (#13458)
1 parent 630fed0 commit 4404428

File tree

2 files changed

+36
-29
lines changed

2 files changed

+36
-29
lines changed

PWGEM/Dilepton/TableProducer/associateMCinfoDilepton.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -531,13 +531,13 @@ struct AssociateMCInfoDilepton {
531531

532532
// mc label for tracks registered in MFT in global muons
533533
if (o2track.matchMFTTrackId() > -1) {
534-
const auto& o2mfttrack = o2track.template matchMFTTrack_as<TMFTTracks>();
534+
auto o2mfttrack = o2track.template matchMFTTrack_as<TMFTTracks>();
535535
if (!o2mfttrack.has_mcParticle()) {
536536
emmftmclabels(-1, 0);
537537
break;
538538
}
539539

540-
const auto& mco2mfttrack = o2mfttrack.template mcParticle_as<aod::McParticles>();
540+
auto mco2mfttrack = o2mfttrack.template mcParticle_as<aod::McParticles>();
541541
if (!(fNewLabels.find(mco2mfttrack.globalIndex()) != fNewLabels.end())) {
542542
fNewLabels[mco2mfttrack.globalIndex()] = fCounters[0];
543543
fNewLabelsReversed[fCounters[0]] = mco2mfttrack.globalIndex();

PWGEM/Dilepton/TableProducer/skimmerPrimaryMuon.cxx

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ struct skimmerPrimaryMuon {
132132
const double centerMFT[3] = {0, 0, -61.4};
133133
o2::field::MagneticField* field = static_cast<o2::field::MagneticField*>(TGeoGlobalMagField::Instance()->GetField());
134134
mBz = field->getBz(centerMFT); // Get field at centre of MFT
135-
LOGF(info, "Bz at center of MFT = %f kZG", mBz); // this is dummy comment. // dummy2
135+
LOGF(info, "Bz at center of MFT = %f kZG", mBz);
136136
}
137137

138138
void addHistograms()
@@ -213,7 +213,7 @@ struct skimmerPrimaryMuon {
213213
return true;
214214
}
215215

216-
template <bool withMFTCov, typename TFwdTracks, typename TMFTTracks, typename TCollision, typename TFwdTrack, typename TMFTTracksCov>
216+
template <bool isMC, bool withMFTCov, typename TFwdTracks, typename TMFTTracks, typename TCollision, typename TFwdTrack, typename TMFTTracksCov>
217217
void fillFwdTrackTable(TCollision const& collision, TFwdTrack fwdtrack, TMFTTracksCov const& mftCovs, const bool isAmbiguous)
218218
{
219219
if (fwdtrack.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && fwdtrack.chi2MatchMCHMFT() > maxMatchingChi2MCHMFT) {
@@ -284,8 +284,15 @@ struct skimmerPrimaryMuon {
284284
return;
285285
}
286286

287-
const auto& mchtrack = fwdtrack.template matchMCHTrack_as<TFwdTracks>(); // MCH-MID
288-
const auto& mfttrack = fwdtrack.template matchMFTTrack_as<TMFTTracks>(); // MFTsa
287+
auto mchtrack = fwdtrack.template matchMCHTrack_as<TFwdTracks>(); // MCH-MID
288+
auto mfttrack = fwdtrack.template matchMFTTrack_as<TMFTTracks>(); // MFTsa
289+
290+
if constexpr (isMC) {
291+
if (!mfttrack.has_mcParticle()) {
292+
return;
293+
}
294+
}
295+
289296
nClustersMFT = mfttrack.nClusters();
290297
mftClusterSizesAndTrackFlags = mfttrack.mftClusterSizesAndTrackFlags();
291298
ndf_mchmft = 2.f * (mchtrack.nClusters() + nClustersMFT) - 5.f;
@@ -510,7 +517,7 @@ struct skimmerPrimaryMuon {
510517
continue;
511518
}
512519

513-
fillFwdTrackTable<false, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr, false);
520+
fillFwdTrackTable<false, false, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr, false);
514521
} // end of fwdtrack loop
515522
} // end of collision loop
516523

@@ -549,7 +556,7 @@ struct skimmerPrimaryMuon {
549556
continue;
550557
}
551558

552-
fillFwdTrackTable<false, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]);
559+
fillFwdTrackTable<false, false, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]);
553560
} // end of fwdtrack loop
554561
} // end of collision loop
555562

@@ -592,7 +599,7 @@ struct skimmerPrimaryMuon {
592599
continue;
593600
}
594601

595-
fillFwdTrackTable<true, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]);
602+
fillFwdTrackTable<false, true, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]);
596603
} // end of fwdtrack loop
597604
} // end of collision loop
598605
mapAmb.clear();
@@ -627,7 +634,7 @@ struct skimmerPrimaryMuon {
627634
continue;
628635
}
629636

630-
fillFwdTrackTable<false, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr, false);
637+
fillFwdTrackTable<false, false, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr, false);
631638
} // end of fwdtrack loop
632639
} // end of collision loop
633640
map_mfttrackcovs.clear();
@@ -667,7 +674,7 @@ struct skimmerPrimaryMuon {
667674
continue;
668675
}
669676

670-
fillFwdTrackTable<false, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]);
677+
fillFwdTrackTable<false, false, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]);
671678
} // end of fwdtrack loop
672679
} // end of collision loop
673680
mapAmb.clear();
@@ -686,13 +693,13 @@ struct skimmerPrimaryMuon {
686693

687694
std::unordered_map<int64_t, bool> mapAmb; // fwdtrack.globalIndex() -> bool isAmb;
688695
for (const auto& fwdtrack : fwdtracks) {
689-
const auto& fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex());
696+
auto fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex());
690697
mapAmb[fwdtrack.globalIndex()] = fwdtrackIdsPerFwdTrack.size() > 1;
691698
// LOGF(info, "fwdtrack.globalIndex() = %d, ntimes = %d, isAmbiguous = %d", fwdtrack.globalIndex(), fwdtrackIdsPerFwdTrack.size(), mapAmb[fwdtrack.globalIndex()]);
692699
} // end of fwdtrack loop
693700

694701
for (const auto& collision : collisions) {
695-
const auto& bc = collision.template bc_as<aod::BCsWithTimestamps>();
702+
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
696703
initCCDB(bc);
697704
if (!collision.isSelected()) {
698705
continue;
@@ -701,17 +708,17 @@ struct skimmerPrimaryMuon {
701708
continue;
702709
}
703710

704-
const auto& fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex());
711+
auto fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex());
705712
for (const auto& fwdtrackId : fwdtrackIdsThisCollision) {
706-
const auto& fwdtrack = fwdtrackId.template fwdtrack_as<MyFwdTracks>();
713+
auto fwdtrack = fwdtrackId.template fwdtrack_as<MyFwdTracks>();
707714
if (fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) {
708715
continue;
709716
}
710717
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()) {
711718
continue;
712719
}
713720

714-
fillFwdTrackTable<true, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]);
721+
fillFwdTrackTable<false, true, MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]);
715722
} // end of fwdtrack loop
716723
} // end of collision loop
717724
mapAmb.clear();
@@ -726,7 +733,7 @@ struct skimmerPrimaryMuon {
726733
findBestMatchPerMCHMID(fwdtracks);
727734

728735
for (const auto& collision : collisions) {
729-
const auto& bc = collision.template bc_as<aod::BCsWithTimestamps>();
736+
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
730737
initCCDB(bc);
731738
if (!collision.isSelected()) {
732739
continue;
@@ -735,7 +742,7 @@ struct skimmerPrimaryMuon {
735742
continue;
736743
}
737744

738-
const auto& fwdtracks_per_coll = fwdtracks.sliceBy(perCollision, collision.globalIndex());
745+
auto fwdtracks_per_coll = fwdtracks.sliceBy(perCollision, collision.globalIndex());
739746
for (const auto& fwdtrack : fwdtracks_per_coll) {
740747
if (!fwdtrack.has_mcParticle()) {
741748
continue;
@@ -747,7 +754,7 @@ struct skimmerPrimaryMuon {
747754
continue;
748755
}
749756

750-
fillFwdTrackTable<false, MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, nullptr, false);
757+
fillFwdTrackTable<true, false, MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, nullptr, false);
751758
} // end of fwdtrack loop
752759
} // end of collision loop
753760
map_mfttrackcovs.clear();
@@ -762,13 +769,13 @@ struct skimmerPrimaryMuon {
762769

763770
std::unordered_map<int64_t, bool> mapAmb; // fwdtrack.globalIndex() -> bool isAmb;
764771
for (const auto& fwdtrack : fwdtracks) {
765-
const auto& fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex());
772+
auto fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex());
766773
mapAmb[fwdtrack.globalIndex()] = fwdtrackIdsPerFwdTrack.size() > 1;
767774
// LOGF(info, "fwdtrack.globalIndex() = %d, ntimes = %d, isAmbiguous = %d", fwdtrack.globalIndex(), fwdtrackIdsPerFwdTrack.size(), mapAmb[fwdtrack.globalIndex()]);
768775
} // end of fwdtrack loop
769776

770777
for (const auto& collision : collisions) {
771-
const auto& bc = collision.template bc_as<aod::BCsWithTimestamps>();
778+
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
772779
initCCDB(bc);
773780
if (!collision.isSelected()) {
774781
continue;
@@ -777,9 +784,9 @@ struct skimmerPrimaryMuon {
777784
continue;
778785
}
779786

780-
const auto& fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex());
787+
auto fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex());
781788
for (const auto& fwdtrackId : fwdtrackIdsThisCollision) {
782-
const auto& fwdtrack = fwdtrackId.template fwdtrack_as<MyFwdTracksMC>();
789+
auto fwdtrack = fwdtrackId.template fwdtrack_as<MyFwdTracksMC>();
783790
if (!fwdtrack.has_mcParticle()) {
784791
continue;
785792
}
@@ -790,7 +797,7 @@ struct skimmerPrimaryMuon {
790797
continue;
791798
}
792799

793-
fillFwdTrackTable<false, MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]);
800+
fillFwdTrackTable<true, false, MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]);
794801
} // end of fwdtrack loop
795802
} // end of collision loop
796803
mapAmb.clear();
@@ -809,13 +816,13 @@ struct skimmerPrimaryMuon {
809816

810817
std::unordered_map<int64_t, bool> mapAmb; // fwdtrack.globalIndex() -> bool isAmb;
811818
for (const auto& fwdtrack : fwdtracks) {
812-
const auto& fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex());
819+
auto fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex());
813820
mapAmb[fwdtrack.globalIndex()] = fwdtrackIdsPerFwdTrack.size() > 1;
814821
// LOGF(info, "fwdtrack.globalIndex() = %d, ntimes = %d, isAmbiguous = %d", fwdtrack.globalIndex(), fwdtrackIdsPerFwdTrack.size(), mapAmb[fwdtrack.globalIndex()]);
815822
} // end of fwdtrack loop
816823

817824
for (const auto& collision : collisions) {
818-
const auto& bc = collision.template bc_as<aod::BCsWithTimestamps>();
825+
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
819826
initCCDB(bc);
820827
if (!collision.isSelected()) {
821828
continue;
@@ -824,9 +831,9 @@ struct skimmerPrimaryMuon {
824831
continue;
825832
}
826833

827-
const auto& fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex());
834+
auto fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex());
828835
for (const auto& fwdtrackId : fwdtrackIdsThisCollision) {
829-
const auto& fwdtrack = fwdtrackId.template fwdtrack_as<MyFwdTracksMC>();
836+
auto fwdtrack = fwdtrackId.template fwdtrack_as<MyFwdTracksMC>();
830837
if (!fwdtrack.has_mcParticle()) {
831838
continue;
832839
}
@@ -837,7 +844,7 @@ struct skimmerPrimaryMuon {
837844
continue;
838845
}
839846

840-
fillFwdTrackTable<true, MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]);
847+
fillFwdTrackTable<true, true, MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]);
841848
} // end of fwdtrack loop
842849
} // end of collision loop
843850
mapAmb.clear();

0 commit comments

Comments
 (0)