From 6c8481d32e187623e3a941a0b19bfc28fa704f86 Mon Sep 17 00:00:00 2001 From: nzardosh Date: Thu, 19 Feb 2026 20:15:34 +0100 Subject: [PATCH] adding or condition possibility for JE event selection --- PWGJE/Core/JetDerivedDataUtilities.h | 40 +++++++++++++++++++--------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/PWGJE/Core/JetDerivedDataUtilities.h b/PWGJE/Core/JetDerivedDataUtilities.h index dc64fb4aada..1d342bc8f96 100644 --- a/PWGJE/Core/JetDerivedDataUtilities.h +++ b/PWGJE/Core/JetDerivedDataUtilities.h @@ -91,20 +91,31 @@ bool selectCollision(T const& collision, const std::vector& eventSelectionM if (eventSelectionMaskBits.size() == 0) { return true; } + bool isOrCondition = false; for (auto eventSelectionMaskBit : eventSelectionMaskBits) { - if (!(collision.eventSel() & (1 << eventSelectionMaskBit))) { - return false; + if (eventSelectionMaskBit == -1) { + isOrCondition = true; + continue; + } + if (!isOrCondition) { + if (!(collision.eventSel() & (1ULL << eventSelectionMaskBit))) { + return false; + } + } else { + if (collision.eventSel() & (1ULL << eventSelectionMaskBit)) { + return true; + } } } - return true; + return !isOrCondition; } bool eventSelectionMasksContainSelection(const std::string& eventSelectionMasks, std::string selection) { size_t position = 0; while ((position = eventSelectionMasks.find(selection, position)) != std::string::npos) { - bool validStart = (position == 0 || eventSelectionMasks[position - 1] == '+'); - bool validEnd = (position + selection.length() == eventSelectionMasks.length() || eventSelectionMasks[position + selection.length()] == '+'); + bool validStart = (position == 0 || eventSelectionMasks[position - 1] == '+' || eventSelectionMasks[position - 1] == '|'); + bool validEnd = (position + selection.length() == eventSelectionMasks.length() || eventSelectionMasks[position + selection.length()] == '+' || eventSelectionMasks[position + selection.length()] == '|'); if (validStart && validEnd) { return true; } @@ -116,6 +127,9 @@ bool eventSelectionMasksContainSelection(const std::string& eventSelectionMasks, std::vector initialiseEventSelectionBits(const std::string& eventSelectionMasks) { std::vector eventSelectionMaskBits; + if (eventSelectionMasks.find('|') != std::string::npos) { // needs to be first if statement evaluated + eventSelectionMaskBits.push_back(-1); + } if (eventSelectionMasksContainSelection(eventSelectionMasks, "sel8")) { eventSelectionMaskBits.push_back(JCollisionSel::sel8); } @@ -286,7 +300,7 @@ bool selectTrigger(T const& collision, const std::vector& triggerMaskBits) return true; } for (auto triggerMaskBit : triggerMaskBits) { - if (collision.triggerSel() & (1 << triggerMaskBit)) { + if (collision.triggerSel() & (1ULL << triggerMaskBit)) { return true; } } @@ -299,7 +313,7 @@ bool selectTrigger(T const& collision, int triggerMaskBit) if (triggerMaskBit == -1) { return true; } - return collision.triggerSel() & (1 << triggerMaskBit); + return collision.triggerSel() & (1ULL << triggerMaskBit); } bool triggerMasksContainTrigger(const std::string& triggerMasks, std::string trigger) @@ -410,7 +424,7 @@ bool selectChargedTrigger(T const& collision, int triggerSelection) if (triggerSelection == -1) { return true; } - return (collision.chargedTriggerSel() & (1 << triggerSelection)); + return (collision.chargedTriggerSel() & (1ULL << triggerSelection)); } int initialiseChargedTriggerSelection(const std::string& triggerSelection) @@ -475,7 +489,7 @@ bool selectFullTrigger(T const& collision, int triggerSelection) if (triggerSelection == -1) { return true; } - return (collision.fullTriggerSel() & (1 << triggerSelection)); + return (collision.fullTriggerSel() & (1ULL << triggerSelection)); } int initialiseFullTriggerSelection(const std::string& triggerSelection) @@ -570,7 +584,7 @@ bool selectChargedHFTrigger(T const& collision, int triggerSelection) if (triggerSelection == -1) { return true; } - return (collision.chargedHFTriggerSel() & (1 << triggerSelection)); + return (collision.chargedHFTriggerSel() & (1ULL << triggerSelection)); } int initialiseChargedHFTriggerSelection(const std::string& triggerSelection) @@ -632,16 +646,16 @@ bool applyTrackKinematics(T const& track, float pTMin = 0.15, float pTMax = 100. template bool selectTrack(T const& track, int trackSelection, bool isEmbedded = false) { - if (!(track.trackSel() & (1 << JTrackSel::notBadMcTrack))) { + if (!(track.trackSel() & (1ULL << JTrackSel::notBadMcTrack))) { return false; } - if (isEmbedded && !(track.trackSel() & (1 << JTrackSel::embeddedTrack))) { // will get rid of non embedded tracks + if (isEmbedded && !(track.trackSel() & (1ULL << JTrackSel::embeddedTrack))) { // will get rid of non embedded tracks return false; } if (trackSelection == -1) { return true; } - return (track.trackSel() & (1 << trackSelection)); + return (track.trackSel() & (1ULL << trackSelection)); } int initialiseTrackSelection(const std::string& trackSelection)