1818#define PWGJE_CORE_JETDERIVEDDATAUTILITIES_H_
1919
2020#include " Common/CCDB/EventSelectionParams.h"
21+ #include " Common/CCDB/RCTSelectionFlags.h"
2122#include " Common/CCDB/TriggerAliases.h"
2223
2324#include < Rtypes.h>
@@ -53,11 +54,16 @@ enum JCollisionSubGeneratorId {
5354};
5455
5556template <typename T>
56- bool selectCollision (T const & collision, std::vector<int > eventSelectionMaskBits, bool skipMBGapEvents = true )
57+ bool selectCollision (T const & collision, const std::vector<int >& eventSelectionMaskBits, bool skipMBGapEvents = true , bool rctSelection = true , std::string rctLabel = " CBT_hadronPID " , bool rejectLimitedAcceptanceRct = false , bool requireZDCRct = false )
5758{
5859 if (skipMBGapEvents && collision.subGeneratorId () == JCollisionSubGeneratorId::mbGap) {
5960 return false ;
6061 }
62+ o2::aod::rctsel::RCTFlagsChecker rctChecker;
63+ rctChecker.init (rctLabel, requireZDCRct, rejectLimitedAcceptanceRct);
64+ if (rctSelection && !rctChecker.checkTable (collision)) { // CBT_hadronPID given as default so that TOF is included in RCT selection to benefit from better timing for tracks. Impact of this for inclusive jets should be studied
65+ return false ;
66+ }
6167 if (eventSelectionMaskBits.size () == 0 ) {
6268 return true ;
6369 }
@@ -69,7 +75,7 @@ bool selectCollision(T const& collision, std::vector<int> eventSelectionMaskBits
6975 return true ;
7076}
7177
72- bool eventSelectionMasksContainSelection (std::string eventSelectionMasks, std::string selection)
78+ bool eventSelectionMasksContainSelection (const std::string& eventSelectionMasks, std::string selection)
7379{
7480 size_t position = 0 ;
7581 while ((position = eventSelectionMasks.find (selection, position)) != std::string::npos) {
@@ -83,7 +89,7 @@ bool eventSelectionMasksContainSelection(std::string eventSelectionMasks, std::s
8389 return false ;
8490}
8591
86- std::vector<int > initialiseEventSelectionBits (std::string eventSelectionMasks)
92+ std::vector<int > initialiseEventSelectionBits (const std::string& eventSelectionMasks)
8793{
8894 std::vector<int > eventSelectionMaskBits;
8995 if (eventSelectionMasksContainSelection (eventSelectionMasks, " sel8" )) {
@@ -230,7 +236,7 @@ enum JTrigSel {
230236};
231237
232238template <typename T>
233- bool selectTrigger (T const & collision, std::vector<int > triggerMaskBits)
239+ bool selectTrigger (T const & collision, const std::vector<int >& triggerMaskBits)
234240{
235241 if (triggerMaskBits.size () == 0 ) {
236242 return true ;
@@ -252,7 +258,7 @@ bool selectTrigger(T const& collision, int triggerMaskBit)
252258 return collision.triggerSel () & (1 << triggerMaskBit);
253259}
254260
255- bool triggerMasksContainTrigger (std::string triggerMasks, std::string trigger)
261+ bool triggerMasksContainTrigger (const std::string& triggerMasks, std::string trigger)
256262{
257263 size_t position = 0 ;
258264 while ((position = triggerMasks.find (trigger, position)) != std::string::npos) {
@@ -266,7 +272,7 @@ bool triggerMasksContainTrigger(std::string triggerMasks, std::string trigger)
266272 return false ;
267273}
268274
269- std::vector<int > initialiseTriggerMaskBits (std::string triggerMasks)
275+ std::vector<int > initialiseTriggerMaskBits (const std::string& triggerMasks)
270276{
271277 std::vector<int > triggerMaskBits;
272278 if (triggerMasksContainTrigger (triggerMasks, " fJetChLowPt" )) {
@@ -335,7 +341,7 @@ std::vector<int> initialiseTriggerMaskBits(std::string triggerMasks)
335341 return triggerMaskBits;
336342}
337343
338- uint64_t setTriggerSelectionBit (std::vector<bool > triggerDecisions)
344+ uint64_t setTriggerSelectionBit (const std::vector<bool >& triggerDecisions)
339345{
340346 uint64_t bit = 0 ;
341347 for (std::vector<bool >::size_type i = 0 ; i < triggerDecisions.size (); i++) {
@@ -363,7 +369,7 @@ bool selectChargedTrigger(T const& collision, int triggerSelection)
363369 return (collision.chargedTriggerSel () & (1 << triggerSelection));
364370}
365371
366- int initialiseChargedTriggerSelection (std::string triggerSelection)
372+ int initialiseChargedTriggerSelection (const std::string& triggerSelection)
367373{
368374 if (triggerSelection == " jetChLowPt" ) {
369375 return JTrigSelCh::jetChLowPt;
@@ -428,7 +434,7 @@ bool selectFullTrigger(T const& collision, int triggerSelection)
428434 return (collision.fullTriggerSel () & (1 << triggerSelection));
429435}
430436
431- int initialiseFullTriggerSelection (std::string triggerSelection)
437+ int initialiseFullTriggerSelection (const std::string& triggerSelection)
432438{
433439 if (triggerSelection == " emcalReadout" ) {
434440 return JTrigSelFull::emcalReadout;
@@ -523,7 +529,7 @@ bool selectChargedHFTrigger(T const& collision, int triggerSelection)
523529 return (collision.chargedHFTriggerSel () & (1 << triggerSelection));
524530}
525531
526- int initialiseChargedHFTriggerSelection (std::string triggerSelection)
532+ int initialiseChargedHFTriggerSelection (const std::string& triggerSelection)
527533{
528534 if (triggerSelection == " jetD0ChLowPt" ) {
529535 return JTrigSelChHF::jetD0ChLowPt;
@@ -586,7 +592,7 @@ bool selectTrack(T const& track, int trackSelection)
586592 return (track.trackSel () & (1 << trackSelection));
587593}
588594
589- int initialiseTrackSelection (std::string trackSelection)
595+ int initialiseTrackSelection (const std::string& trackSelection)
590596{
591597 if (trackSelection == " globalTracks" ) {
592598 return JTrackSel::globalTrack;
0 commit comments