[PWGDQ] Adding new process function for electron-muon analysis#15490
[PWGDQ] Adding new process function for electron-muon analysis#15490Shunsuke-Kurita wants to merge 6 commits intoAliceO2Group:masterfrom
Conversation
|
@Shunsuke-Kurita Your PR fails the compilation and the formatting. Please test your changes before making a PR. |
|
Error while checking build/O2Physics/o2 for 189bde2 at 2026-03-23 12:36: Full log here. |
|
Dear @vkucera , |
|
O2 linter results: ❌ 167 errors, |
8946987 to
b83dbda
Compare
59b5474 to
b5ea9e1
Compare
|
|
||
| Preslice<soa::Join<aod::TrackAssoc, aod::BarrelTrackCuts, aod::Prefilter>> trackAssocsPerCollision = aod::track_association::collisionId; | ||
| // Preslice<soa::Join<aod::ReducedMuonsAssoc, aod::MuonTrackCuts>> muonAssocsPerCollision = aod::reducedtrack_association::reducedeventId; | ||
| Preslice<soa::Join<aod::TrackAssoc, aod::BarrelTrackCuts>> trackEmuAssocsPerCollision = aod::track_association::collisionId; |
There was a problem hiding this comment.
you do not want to use the prefilter for removing conversion electrons?
| // Events not passing the EMu filter bit are skipped entirely, reducing track/muon | ||
| // propagation and PID computation for the majority of collisions. | ||
| template <uint32_t TEventFillMap, typename TEvents> | ||
| void runEventSelectionWithFilter(TEvents const& events, BCsWithTimestamps const& bcs) |
There was a problem hiding this comment.
Its not clear to me what the difference is with respect to the other event selection function. Most if not all the code looks just duplicated.
| for (int iTrack = 0; iTrack < fNCutsBarrel; ++iTrack) { | ||
| if (!(a1.isBarrelSelected_raw() & (1u << iTrack))) | ||
| continue; | ||
| for (int iMuon = 0; iMuon < fNCutsMuon; ++iMuon) { | ||
| if (!(a2.isMuonSelected_raw() & (1u << iMuon))) | ||
| continue; | ||
| for (unsigned int iPairCut = 0; iPairCut < (fPairCuts.empty() ? 1u : static_cast<unsigned int>(fPairCuts.size())); iPairCut++) { | ||
| if (!fPairCuts.empty()) { | ||
| AnalysisCompositeCut cut = fPairCuts.at(iPairCut); | ||
| if (!cut.IsSelected(VarManager::fgValues)) | ||
| continue; | ||
| } | ||
| int index = iTrack * (fNCutsMuon * nPairCuts) + iMuon * nPairCuts + static_cast<int>(iPairCut); | ||
| auto itHist = histNames.find(index); | ||
| if (itHist == histNames.end()) | ||
| continue; | ||
| if (sign1 * sign2 < 0) { | ||
| fHistMan->FillHistClass(itHist->second[0].Data(), VarManager::fgValues); | ||
| } else if (sign1 > 0) { | ||
| fHistMan->FillHistClass(itHist->second[1].Data(), VarManager::fgValues); | ||
| } else { | ||
| fHistMan->FillHistClass(itHist->second[2].Data(), VarManager::fgValues); | ||
| } | ||
| } // end pair cut loop | ||
| } // end muon cut loop | ||
| } // end barrel cut loop |
There was a problem hiding this comment.
are you really using pair cuts ? Normally its easy to just plot in your histograms as a function of the variable you want to cut on (e.g. pt, mass) and then the pair cuts are not really needed. Its up to you, but if you do not need them, i would remove this to avoid complications.
This PR implements
processElectronMuonDirectinAnalysisSameEventPairingfor direct electron-muon pairing on AO2D tracks, completing thetableReader_withAssoc_directworkflow for EMu analyses. To support this, it also addsprocessDirectWithFiltertoAnalysisEventSelection— enablingfilterPPwithAssociationas an upstream pre-filter — and introduces a newAnalysisMuonSelectionstruct for direct muon selection on AO2D FwdTracks.