@@ -106,6 +106,7 @@ struct HfTaskFlowCharmHadrons {
106106 using CandD0DataWMl = soa::Filtered<soa::Join<aod::HfCand2Prong, aod::HfSelD0, aod::HfMlD0>>;
107107 using CandD0Data = soa::Filtered<soa::Join<aod::HfCand2Prong, aod::HfSelD0>>;
108108 using CollsWithQvecs = soa::Join<aod::Collisions, aod::EvSels, aod::QvectorFT0Cs, aod::QvectorFT0As, aod::QvectorFT0Ms, aod::QvectorFV0As, aod::QvectorBPoss, aod::QvectorBNegs, aod::QvectorBTots, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs>;
109+ using BCs = soa::Join<aod::BCsWithTimestamps, aod::BcSels, aod::Run3MatchedToBCSparse>;
109110
110111 Filter filterSelectDsCandidates = aod::hf_sel_candidate_ds::isSelDsToKKPi >= selectionFlag || aod::hf_sel_candidate_ds::isSelDsToPiKK >= selectionFlag;
111112 Filter filterSelectDplusCandidates = aod::hf_sel_candidate_dplus::isSelDplusToPiKPi >= selectionFlag;
@@ -378,11 +379,11 @@ struct HfTaskFlowCharmHadrons {
378379 // / \return true if the collision is selected, false otherwise
379380 template <o2::hf_centrality::CentralityEstimator centEstimator>
380381 bool isCollSelected (CollsWithQvecs::iterator const & collision,
381- aod::BCsWithTimestamps const &,
382+ BCs const & bcs ,
382383 float & centrality)
383384 {
384385 float occupancy = getOccupancyColl (collision, occEstimator);
385- const auto rejectionMask = hfEvSel.getHfCollisionRejectionMask <true , centEstimator, aod::BCsWithTimestamps >(collision, centrality, ccdb, registry);
386+ const auto rejectionMask = hfEvSel.getHfCollisionRejectionMask <true , centEstimator, BCs >(collision, centrality, ccdb, registry, bcs );
386387 centrality = o2::hf_centrality::getCentralityColl (collision, centEstimator);
387388
388389 // / monitor the satisfied event selections
@@ -442,9 +443,10 @@ struct HfTaskFlowCharmHadrons {
442443 // / Compute the scalar product
443444 // / \param collision is the collision with the Q vector information and event plane
444445 // / \param candidates are the selected candidates
445- template <DecayChannel channel, typename T1>
446+ template <DecayChannel channel, typename T1, typename BCs >
446447 void runFlowAnalysis (CollsWithQvecs::iterator const & collision,
447- T1 const & candidates)
448+ T1 const & candidates,
449+ BCs const & bcs)
448450 {
449451 float cent = o2::hf_centrality::getCentralityColl (collision, centEstimator);
450452 if (cent < centralityMin || cent > centralityMax) {
@@ -455,7 +457,7 @@ struct HfTaskFlowCharmHadrons {
455457 if (occEstimator != 0 ) {
456458 occupancy = getOccupancyColl (collision, occEstimator);
457459 registry.fill (HIST (" trackOccVsFT0COcc" ), collision.trackOccupancyInTimeRange (), collision.ft0cOccupancyInTimeRange ());
458- hfevflag = hfEvSel.getHfCollisionRejectionMask <true , o2::hf_centrality::CentralityEstimator::None, aod::BCsWithTimestamps >(collision, cent, ccdb, registry);
460+ hfevflag = hfEvSel.getHfCollisionRejectionMask <true , o2::hf_centrality::CentralityEstimator::None, BCs >(collision, cent, ccdb, registry, bcs );
459461 }
460462
461463 std::vector<float > qVecs = getQvec (collision);
@@ -581,111 +583,121 @@ struct HfTaskFlowCharmHadrons {
581583
582584 // Ds with ML
583585 void processDsMl (CollsWithQvecs::iterator const & collision,
584- CandDsDataWMl const &)
586+ CandDsDataWMl const &,
587+ BCs const & bcs)
585588 {
586589 auto candsDsToKKPiWMl = selectedDsToKKPiWMl->sliceByCached (aod::hf_cand::collisionId, collision.globalIndex (), cache);
587590 auto candsDsToPiKKWMl = selectedDsToPiKKWMl->sliceByCached (aod::hf_cand::collisionId, collision.globalIndex (), cache);
588- runFlowAnalysis<DecayChannel::DsToKKPi>(collision, candsDsToKKPiWMl);
589- runFlowAnalysis<DecayChannel::DsToPiKK>(collision, candsDsToPiKKWMl);
591+ runFlowAnalysis<DecayChannel::DsToKKPi>(collision, candsDsToKKPiWMl, bcs );
592+ runFlowAnalysis<DecayChannel::DsToPiKK>(collision, candsDsToPiKKWMl, bcs );
590593 }
591594 PROCESS_SWITCH (HfTaskFlowCharmHadrons, processDsMl, " Process Ds candidates with ML" , false );
592595
593596 // Ds with rectangular cuts
594597 void processDs (CollsWithQvecs::iterator const & collision,
595- CandDsData const &)
598+ CandDsData const &,
599+ BCs const & bcs)
596600 {
597601 auto candsDsToKKPi = selectedDsToKKPi->sliceByCached (aod::hf_cand::collisionId, collision.globalIndex (), cache);
598602 auto candsDsToPiKK = selectedDsToPiKK->sliceByCached (aod::hf_cand::collisionId, collision.globalIndex (), cache);
599- runFlowAnalysis<DecayChannel::DsToKKPi>(collision, candsDsToKKPi);
600- runFlowAnalysis<DecayChannel::DsToPiKK>(collision, candsDsToPiKK);
603+ runFlowAnalysis<DecayChannel::DsToKKPi>(collision, candsDsToKKPi, bcs );
604+ runFlowAnalysis<DecayChannel::DsToPiKK>(collision, candsDsToPiKK, bcs );
601605 }
602606 PROCESS_SWITCH (HfTaskFlowCharmHadrons, processDs, " Process Ds candidates" , false );
603607
604608 // Dplus with ML
605609 void processDplusMl (CollsWithQvecs::iterator const & collision,
606- CandDplusDataWMl const & candidatesDplus)
610+ CandDplusDataWMl const & candidatesDplus,
611+ BCs const & bcs)
607612 {
608- runFlowAnalysis<DecayChannel::DplusToPiKPi>(collision, candidatesDplus);
613+ runFlowAnalysis<DecayChannel::DplusToPiKPi>(collision, candidatesDplus, bcs );
609614 }
610615 PROCESS_SWITCH (HfTaskFlowCharmHadrons, processDplusMl, " Process Dplus candidates with ML" , false );
611616
612617 // Dplus with rectangular cuts
613618 void processDplus (CollsWithQvecs::iterator const & collision,
614- CandDplusData const & candidatesDplus)
619+ CandDplusData const & candidatesDplus,
620+ BCs const & bcs)
615621 {
616- runFlowAnalysis<DecayChannel::DplusToPiKPi>(collision, candidatesDplus);
622+ runFlowAnalysis<DecayChannel::DplusToPiKPi>(collision, candidatesDplus, bcs );
617623 }
618624 PROCESS_SWITCH (HfTaskFlowCharmHadrons, processDplus, " Process Dplus candidates" , true );
619625
620626 // D0 with ML
621627 void processD0Ml (CollsWithQvecs::iterator const & collision,
622- CandD0DataWMl const &)
628+ CandD0DataWMl const &,
629+ BCs const & bcs)
623630 {
624631 auto candsD0ToPiKWMl = selectedD0ToPiKWMl->sliceByCached (aod::hf_cand::collisionId, collision.globalIndex (), cache);
625632 auto candsD0ToKPiWMl = selectedD0ToKPiWMl->sliceByCached (aod::hf_cand::collisionId, collision.globalIndex (), cache);
626- runFlowAnalysis<DecayChannel::D0ToPiK>(collision, candsD0ToPiKWMl);
627- runFlowAnalysis<DecayChannel::D0ToKPi>(collision, candsD0ToKPiWMl);
633+ runFlowAnalysis<DecayChannel::D0ToPiK>(collision, candsD0ToPiKWMl, bcs );
634+ runFlowAnalysis<DecayChannel::D0ToKPi>(collision, candsD0ToKPiWMl, bcs );
628635 }
629636 PROCESS_SWITCH (HfTaskFlowCharmHadrons, processD0Ml, " Process D0 candidates with ML" , false );
630637
631638 // D0 with rectangular cuts
632639 void processD0 (CollsWithQvecs::iterator const & collision,
633- CandD0Data const &)
640+ CandD0Data const &,
641+ BCs const & bcs)
634642 {
635643 auto candsD0ToPiK = selectedD0ToPiK->sliceByCached (aod::hf_cand::collisionId, collision.globalIndex (), cache);
636644 auto candsD0ToKPi = selectedD0ToKPi->sliceByCached (aod::hf_cand::collisionId, collision.globalIndex (), cache);
637- runFlowAnalysis<DecayChannel::D0ToPiK>(collision, candsD0ToPiK);
638- runFlowAnalysis<DecayChannel::D0ToKPi>(collision, candsD0ToKPi);
645+ runFlowAnalysis<DecayChannel::D0ToPiK>(collision, candsD0ToPiK, bcs );
646+ runFlowAnalysis<DecayChannel::D0ToKPi>(collision, candsD0ToKPi, bcs );
639647 }
640648 PROCESS_SWITCH (HfTaskFlowCharmHadrons, processD0, " Process D0 candidates" , false );
641649
642650 // Lc with ML
643651 void processLcMl (CollsWithQvecs::iterator const & collision,
644- CandLcDataWMl const &)
652+ CandLcDataWMl const &,
653+ BCs const & bcs)
645654 {
646655 auto candsLcToPKPiWMl = selectedLcToPKPiWMl->sliceByCached (aod::hf_cand::collisionId, collision.globalIndex (), cache);
647656 auto candsLcToPiKPWMl = selectedLcToPiKPWMl->sliceByCached (aod::hf_cand::collisionId, collision.globalIndex (), cache);
648- runFlowAnalysis<DecayChannel::LcToPKPi>(collision, candsLcToPKPiWMl);
649- runFlowAnalysis<DecayChannel::LcToPiKP>(collision, candsLcToPiKPWMl);
657+ runFlowAnalysis<DecayChannel::LcToPKPi>(collision, candsLcToPKPiWMl, bcs );
658+ runFlowAnalysis<DecayChannel::LcToPiKP>(collision, candsLcToPiKPWMl, bcs );
650659 }
651660 PROCESS_SWITCH (HfTaskFlowCharmHadrons, processLcMl, " Process Lc candidates with ML" , false );
652661
653662 // Lc with rectangular cuts
654663 void processLc (CollsWithQvecs::iterator const & collision,
655- CandLcData const &)
664+ CandLcData const &,
665+ BCs const & bcs)
656666 {
657667 auto candsLcToPKPi = selectedLcToPKPi->sliceByCached (aod::hf_cand::collisionId, collision.globalIndex (), cache);
658668 auto candsLcToPiKP = selectedLcToPiKP->sliceByCached (aod::hf_cand::collisionId, collision.globalIndex (), cache);
659- runFlowAnalysis<DecayChannel::LcToPKPi>(collision, candsLcToPKPi);
660- runFlowAnalysis<DecayChannel::LcToPiKP>(collision, candsLcToPiKP);
669+ runFlowAnalysis<DecayChannel::LcToPKPi>(collision, candsLcToPKPi, bcs );
670+ runFlowAnalysis<DecayChannel::LcToPiKP>(collision, candsLcToPiKP, bcs );
661671 }
662672 PROCESS_SWITCH (HfTaskFlowCharmHadrons, processLc, " Process Lc candidates" , false );
663673
664674 // Xic with ML
665675 void processXicMl (CollsWithQvecs::iterator const & collision,
666- CandXicDataWMl const &)
676+ CandXicDataWMl const &,
677+ BCs const & bcs)
667678 {
668679 auto candsXicToPKPiWMl = selectedXicToPKPiWMl->sliceByCached (aod::hf_cand::collisionId, collision.globalIndex (), cache);
669680 auto candsXicToPiKPWMl = selectedXicToPiKPWMl->sliceByCached (aod::hf_cand::collisionId, collision.globalIndex (), cache);
670- runFlowAnalysis<DecayChannel::XicToPKPi>(collision, candsXicToPKPiWMl);
671- runFlowAnalysis<DecayChannel::XicToPiKP>(collision, candsXicToPiKPWMl);
681+ runFlowAnalysis<DecayChannel::XicToPKPi>(collision, candsXicToPKPiWMl, bcs );
682+ runFlowAnalysis<DecayChannel::XicToPiKP>(collision, candsXicToPiKPWMl, bcs );
672683 }
673684 PROCESS_SWITCH (HfTaskFlowCharmHadrons, processXicMl, " Process Xic candidates with ML" , false );
674685
675686 // Xic with rectangular cuts
676687 void processXic (CollsWithQvecs::iterator const & collision,
677- CandXicData const &)
688+ CandXicData const &,
689+ BCs const & bcs)
678690 {
679691 auto candsXicToPKPi = selectedXicToPKPi->sliceByCached (aod::hf_cand::collisionId, collision.globalIndex (), cache);
680692 auto candsXicToPiKP = selectedXicToPiKP->sliceByCached (aod::hf_cand::collisionId, collision.globalIndex (), cache);
681- runFlowAnalysis<DecayChannel::XicToPKPi>(collision, candsXicToPKPi);
682- runFlowAnalysis<DecayChannel::XicToPiKP>(collision, candsXicToPiKP);
693+ runFlowAnalysis<DecayChannel::XicToPKPi>(collision, candsXicToPKPi, bcs );
694+ runFlowAnalysis<DecayChannel::XicToPiKP>(collision, candsXicToPiKP, bcs );
683695 }
684696 PROCESS_SWITCH (HfTaskFlowCharmHadrons, processXic, " Process Xic candidates" , false );
685697
686698 // Resolution
687699 void processResolution (CollsWithQvecs::iterator const & collision,
688- aod::BCsWithTimestamps const & bcs)
700+ BCs const & bcs)
689701 {
690702 float centrality{-1 .f };
691703 float xQVecFT0a = collision.qvecFT0ARe ();
@@ -708,7 +720,7 @@ struct HfTaskFlowCharmHadrons {
708720 float occupancy{-1 .f };
709721 occupancy = getOccupancyColl (collision, occEstimator);
710722 registry.fill (HIST (" trackOccVsFT0COcc" ), collision.trackOccupancyInTimeRange (), collision.ft0cOccupancyInTimeRange ());
711- uint16_t hfevflag = hfEvSel.getHfCollisionRejectionMask <true , o2::hf_centrality::CentralityEstimator::None, aod::BCsWithTimestamps >(collision, centrality, ccdb, registry);
723+ uint16_t hfevflag = hfEvSel.getHfCollisionRejectionMask <true , o2::hf_centrality::CentralityEstimator::None, BCs >(collision, centrality, ccdb, registry, bcs );
712724 std::vector<int > evtSelFlags = getEventSelectionFlags (hfevflag);
713725 registry.fill (HIST (" spReso/hSparseReso" ), centrality, xQVecFT0c * xQVecFV0a + yQVecFT0c * yQVecFV0a,
714726 xQVecFT0c * xQVecBTot + yQVecFT0c * yQVecBTot,
0 commit comments