diff --git a/PWGEM/Dilepton/TableProducer/associateMCinfoDilepton.cxx b/PWGEM/Dilepton/TableProducer/associateMCinfoDilepton.cxx index 6bd004a0e40..0d62389cdfc 100644 --- a/PWGEM/Dilepton/TableProducer/associateMCinfoDilepton.cxx +++ b/PWGEM/Dilepton/TableProducer/associateMCinfoDilepton.cxx @@ -531,13 +531,13 @@ struct AssociateMCInfoDilepton { // mc label for tracks registered in MFT in global muons if (o2track.matchMFTTrackId() > -1) { - const auto& o2mfttrack = o2track.template matchMFTTrack_as(); + auto o2mfttrack = o2track.template matchMFTTrack_as(); if (!o2mfttrack.has_mcParticle()) { emmftmclabels(-1, 0); break; } - const auto& mco2mfttrack = o2mfttrack.template mcParticle_as(); + auto mco2mfttrack = o2mfttrack.template mcParticle_as(); if (!(fNewLabels.find(mco2mfttrack.globalIndex()) != fNewLabels.end())) { fNewLabels[mco2mfttrack.globalIndex()] = fCounters[0]; fNewLabelsReversed[fCounters[0]] = mco2mfttrack.globalIndex(); diff --git a/PWGEM/Dilepton/TableProducer/skimmerPrimaryMuon.cxx b/PWGEM/Dilepton/TableProducer/skimmerPrimaryMuon.cxx index 0c97c573394..353fbc37fdd 100644 --- a/PWGEM/Dilepton/TableProducer/skimmerPrimaryMuon.cxx +++ b/PWGEM/Dilepton/TableProducer/skimmerPrimaryMuon.cxx @@ -132,7 +132,7 @@ struct skimmerPrimaryMuon { const double centerMFT[3] = {0, 0, -61.4}; o2::field::MagneticField* field = static_cast(TGeoGlobalMagField::Instance()->GetField()); mBz = field->getBz(centerMFT); // Get field at centre of MFT - LOGF(info, "Bz at center of MFT = %f kZG", mBz); // this is dummy comment. // dummy2 + LOGF(info, "Bz at center of MFT = %f kZG", mBz); } void addHistograms() @@ -213,7 +213,7 @@ struct skimmerPrimaryMuon { return true; } - template + template void fillFwdTrackTable(TCollision const& collision, TFwdTrack fwdtrack, TMFTTracksCov const& mftCovs, const bool isAmbiguous) { if (fwdtrack.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && fwdtrack.chi2MatchMCHMFT() > maxMatchingChi2MCHMFT) { @@ -284,8 +284,15 @@ struct skimmerPrimaryMuon { return; } - const auto& mchtrack = fwdtrack.template matchMCHTrack_as(); // MCH-MID - const auto& mfttrack = fwdtrack.template matchMFTTrack_as(); // MFTsa + auto mchtrack = fwdtrack.template matchMCHTrack_as(); // MCH-MID + auto mfttrack = fwdtrack.template matchMFTTrack_as(); // MFTsa + + if constexpr (isMC) { + if (!mfttrack.has_mcParticle()) { + return; + } + } + nClustersMFT = mfttrack.nClusters(); mftClusterSizesAndTrackFlags = mfttrack.mftClusterSizesAndTrackFlags(); ndf_mchmft = 2.f * (mchtrack.nClusters() + nClustersMFT) - 5.f; @@ -510,7 +517,7 @@ struct skimmerPrimaryMuon { continue; } - fillFwdTrackTable(collision, fwdtrack, nullptr, false); + fillFwdTrackTable(collision, fwdtrack, nullptr, false); } // end of fwdtrack loop } // end of collision loop @@ -549,7 +556,7 @@ struct skimmerPrimaryMuon { continue; } - fillFwdTrackTable(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]); + fillFwdTrackTable(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]); } // end of fwdtrack loop } // end of collision loop @@ -592,7 +599,7 @@ struct skimmerPrimaryMuon { continue; } - fillFwdTrackTable(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]); + fillFwdTrackTable(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]); } // end of fwdtrack loop } // end of collision loop mapAmb.clear(); @@ -627,7 +634,7 @@ struct skimmerPrimaryMuon { continue; } - fillFwdTrackTable(collision, fwdtrack, nullptr, false); + fillFwdTrackTable(collision, fwdtrack, nullptr, false); } // end of fwdtrack loop } // end of collision loop map_mfttrackcovs.clear(); @@ -667,7 +674,7 @@ struct skimmerPrimaryMuon { continue; } - fillFwdTrackTable(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]); + fillFwdTrackTable(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]); } // end of fwdtrack loop } // end of collision loop mapAmb.clear(); @@ -686,13 +693,13 @@ struct skimmerPrimaryMuon { std::unordered_map mapAmb; // fwdtrack.globalIndex() -> bool isAmb; for (const auto& fwdtrack : fwdtracks) { - const auto& fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex()); + auto fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex()); mapAmb[fwdtrack.globalIndex()] = fwdtrackIdsPerFwdTrack.size() > 1; // LOGF(info, "fwdtrack.globalIndex() = %d, ntimes = %d, isAmbiguous = %d", fwdtrack.globalIndex(), fwdtrackIdsPerFwdTrack.size(), mapAmb[fwdtrack.globalIndex()]); } // end of fwdtrack loop for (const auto& collision : collisions) { - const auto& bc = collision.template bc_as(); + auto bc = collision.template bc_as(); initCCDB(bc); if (!collision.isSelected()) { continue; @@ -701,9 +708,9 @@ struct skimmerPrimaryMuon { continue; } - const auto& fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex()); + auto fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex()); for (const auto& fwdtrackId : fwdtrackIdsThisCollision) { - const auto& fwdtrack = fwdtrackId.template fwdtrack_as(); + auto fwdtrack = fwdtrackId.template fwdtrack_as(); if (fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && fwdtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) { continue; } @@ -711,7 +718,7 @@ struct skimmerPrimaryMuon { continue; } - fillFwdTrackTable(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]); + fillFwdTrackTable(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]); } // end of fwdtrack loop } // end of collision loop mapAmb.clear(); @@ -726,7 +733,7 @@ struct skimmerPrimaryMuon { findBestMatchPerMCHMID(fwdtracks); for (const auto& collision : collisions) { - const auto& bc = collision.template bc_as(); + auto bc = collision.template bc_as(); initCCDB(bc); if (!collision.isSelected()) { continue; @@ -735,7 +742,7 @@ struct skimmerPrimaryMuon { continue; } - const auto& fwdtracks_per_coll = fwdtracks.sliceBy(perCollision, collision.globalIndex()); + auto fwdtracks_per_coll = fwdtracks.sliceBy(perCollision, collision.globalIndex()); for (const auto& fwdtrack : fwdtracks_per_coll) { if (!fwdtrack.has_mcParticle()) { continue; @@ -747,7 +754,7 @@ struct skimmerPrimaryMuon { continue; } - fillFwdTrackTable(collision, fwdtrack, nullptr, false); + fillFwdTrackTable(collision, fwdtrack, nullptr, false); } // end of fwdtrack loop } // end of collision loop map_mfttrackcovs.clear(); @@ -762,13 +769,13 @@ struct skimmerPrimaryMuon { std::unordered_map mapAmb; // fwdtrack.globalIndex() -> bool isAmb; for (const auto& fwdtrack : fwdtracks) { - const auto& fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex()); + auto fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex()); mapAmb[fwdtrack.globalIndex()] = fwdtrackIdsPerFwdTrack.size() > 1; // LOGF(info, "fwdtrack.globalIndex() = %d, ntimes = %d, isAmbiguous = %d", fwdtrack.globalIndex(), fwdtrackIdsPerFwdTrack.size(), mapAmb[fwdtrack.globalIndex()]); } // end of fwdtrack loop for (const auto& collision : collisions) { - const auto& bc = collision.template bc_as(); + auto bc = collision.template bc_as(); initCCDB(bc); if (!collision.isSelected()) { continue; @@ -777,9 +784,9 @@ struct skimmerPrimaryMuon { continue; } - const auto& fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex()); + auto fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex()); for (const auto& fwdtrackId : fwdtrackIdsThisCollision) { - const auto& fwdtrack = fwdtrackId.template fwdtrack_as(); + auto fwdtrack = fwdtrackId.template fwdtrack_as(); if (!fwdtrack.has_mcParticle()) { continue; } @@ -790,7 +797,7 @@ struct skimmerPrimaryMuon { continue; } - fillFwdTrackTable(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]); + fillFwdTrackTable(collision, fwdtrack, nullptr, mapAmb[fwdtrack.globalIndex()]); } // end of fwdtrack loop } // end of collision loop mapAmb.clear(); @@ -809,13 +816,13 @@ struct skimmerPrimaryMuon { std::unordered_map mapAmb; // fwdtrack.globalIndex() -> bool isAmb; for (const auto& fwdtrack : fwdtracks) { - const auto& fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex()); + auto fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy(fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex()); mapAmb[fwdtrack.globalIndex()] = fwdtrackIdsPerFwdTrack.size() > 1; // LOGF(info, "fwdtrack.globalIndex() = %d, ntimes = %d, isAmbiguous = %d", fwdtrack.globalIndex(), fwdtrackIdsPerFwdTrack.size(), mapAmb[fwdtrack.globalIndex()]); } // end of fwdtrack loop for (const auto& collision : collisions) { - const auto& bc = collision.template bc_as(); + auto bc = collision.template bc_as(); initCCDB(bc); if (!collision.isSelected()) { continue; @@ -824,9 +831,9 @@ struct skimmerPrimaryMuon { continue; } - const auto& fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex()); + auto fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex()); for (const auto& fwdtrackId : fwdtrackIdsThisCollision) { - const auto& fwdtrack = fwdtrackId.template fwdtrack_as(); + auto fwdtrack = fwdtrackId.template fwdtrack_as(); if (!fwdtrack.has_mcParticle()) { continue; } @@ -837,7 +844,7 @@ struct skimmerPrimaryMuon { continue; } - fillFwdTrackTable(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]); + fillFwdTrackTable(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex()]); } // end of fwdtrack loop } // end of collision loop mapAmb.clear();