@@ -159,7 +159,7 @@ struct CorrelationTask {
159159 {
160160 registry.add (" yields" , " multiplicity/centrality vs pT vs eta" , {HistType::kTH3F , {{100 , 0 , 100 , " /multiplicity/centrality" }, {40 , 0 , 20 , " p_{T}" }, {100 , -2 , 2 , " #eta" }}});
161161 registry.add (" etaphi" , " multiplicity/centrality vs eta vs phi" , {HistType::kTH3F , {{100 , 0 , 100 , " multiplicity/centrality" }, {100 , -2 , 2 , " #eta" }, {200 , 0 , o2::constants::math::TwoPI, " #varphi" }}});
162- if (doprocessSame2ProngDerived || doprocessSame2Prong2Prong || doprocessSame2Prong2ProngML) {
162+ if (doprocessSame2ProngDerived || doprocessSame2ProngDerivedML || doprocessSame2Prong2Prong || doprocessSame2Prong2ProngML) {
163163 registry.add (" yieldsTrigger" , " multiplicity/centrality vs pT vs eta (triggers)" , {HistType::kTH3F , {{100 , 0 , 100 , " /multiplicity/centrality" }, {40 , 0 , 20 , " p_{T}" }, {100 , -2 , 2 , " #eta" }}});
164164 registry.add (" etaphiTrigger" , " multiplicity/centrality vs eta vs phi (triggers)" , {HistType::kTH3F , {{100 , 0 , 100 , " multiplicity/centrality" }, {100 , -2 , 2 , " #eta" }, {200 , 0 , o2::constants::math::TwoPI, " #varphi" }}});
165165 registry.add (" invMass" , " 2-prong invariant mass (GeV/c^2)" , {HistType::kTH3F , {axisInvMassHistogram, axisPtTrigger, axisMultiplicity}});
@@ -412,7 +412,7 @@ struct CorrelationTask {
412412 }
413413
414414 if constexpr (std::experimental::is_detected<HasMlProbD0, typename TTracks1::iterator>::value) {
415- if (doprocessSame2Prong2ProngML || doprocessMixed2Prong2ProngML) {
415+ if (doprocessSame2ProngDerivedML || doprocessSame2Prong2ProngML || doprocessMixed2ProngDerivedML || doprocessMixed2Prong2ProngML) {
416416 auto it = std::lower_bound (cfgPtDepMLbkg->begin (), cfgPtDepMLbkg->end (), track1.pt ());
417417 int idx = std::distance (cfgPtDepMLbkg->begin (), it) - 1 ;
418418 if (track1.decay () == 0 && track1.mlProbD0 ()[0 ] > cfgPtCentDepMLbkgSel->at (idx)) {
@@ -536,7 +536,7 @@ struct CorrelationTask {
536536 float deltaPhi = RecoDecay::constrainAngle (track1.phi () - track2.phi (), -o2::constants::math::PIHalf);
537537
538538 if constexpr (std::experimental::is_detected<HasMlProbD0, typename TTracks2::iterator>::value) {
539- if (doprocessSame2Prong2ProngML || doprocessMixed2Prong2ProngML) {
539+ if (doprocessSame2ProngDerivedML || doprocessSame2Prong2ProngML || doprocessMixed2ProngDerivedML || doprocessMixed2Prong2ProngML) {
540540 auto it = std::lower_bound (cfgPtDepMLbkg->begin (), cfgPtDepMLbkg->end (), track2.pt ());
541541 int idx = std::distance (cfgPtDepMLbkg->begin (), it) - 1 ;
542542 if (track2.decay () == 0 && track2.mlProbD0 ()[0 ] > cfgPtCentDepMLbkgSel->at (idx)) {
@@ -548,7 +548,7 @@ struct CorrelationTask {
548548 } // ML selection
549549
550550 // last param is the weight
551- if (cfgMassAxis && (doprocessSame2Prong2Prong || doprocessMixed2Prong2Prong || doprocessSame2Prong2ProngML || doprocessMixed2Prong2ProngML) && !(doprocessSame2ProngDerived || doprocessMixed2ProngDerived)) {
551+ if (cfgMassAxis && (doprocessSame2Prong2Prong || doprocessMixed2Prong2Prong || doprocessSame2Prong2ProngML || doprocessMixed2Prong2ProngML) && !(doprocessSame2ProngDerived || doprocessSame2ProngDerivedML || doprocessMixed2ProngDerived || doprocessMixed2ProngDerivedML )) {
552552 if constexpr (std::experimental::is_detected<HasInvMass, typename TTracks1::iterator>::value && std::experimental::is_detected<HasInvMass, typename TTracks2::iterator>::value)
553553 target->getPairHist ()->Fill (step, track1.eta () - track2.eta (), track2.pt (), track1.pt (), multiplicity, deltaPhi, posZ, track2.invMass (), track1.invMass (), associatedWeight);
554554 else
@@ -659,7 +659,8 @@ struct CorrelationTask {
659659 }
660660 PROCESS_SWITCH (CorrelationTask, processSameDerived, " Process same event on derived data" , false );
661661
662- void processSame2ProngDerived (DerivedCollisions::iterator const & collision, soa::Filtered<aod::CFTracks> const & tracks, soa::Filtered<aod::CF2ProngTracks> const & p2tracks)
662+ template <class p2type >
663+ void processSame2ProngDerivedT (DerivedCollisions::iterator const & collision, soa::Filtered<aod::CFTracks> const & tracks, p2type const & p2tracks)
663664 {
664665 BinningTypeDerived configurableBinningDerived{{axisVertex, axisMultiplicity}, true }; // true is for 'ignore overflows' (true by default). Underflows and overflows will have bin -1.
665666 if (cfgVerbosity > 0 ) {
@@ -681,8 +682,19 @@ struct CorrelationTask {
681682 fillCorrelations<CorrelationContainer::kCFStepCorrected >(same, p2tracks, tracks, multiplicity, collision.posZ (), 0 , 1 .0f );
682683 }
683684 }
685+
686+ void processSame2ProngDerived (DerivedCollisions::iterator const & collision, soa::Filtered<aod::CFTracks> const & tracks, soa::Filtered<aod::CF2ProngTracks> const & p2tracks)
687+ {
688+ processSame2ProngDerivedT (collision, tracks, p2tracks);
689+ }
684690 PROCESS_SWITCH (CorrelationTask, processSame2ProngDerived, " Process same event on derived data" , false );
685691
692+ void processSame2ProngDerivedML (DerivedCollisions::iterator const & collision, soa::Filtered<aod::CFTracks> const & tracks, soa::Filtered<soa::Join<aod::CF2ProngTracks, aod::CF2ProngTrackmls>> const & p2tracks)
693+ {
694+ processSame2ProngDerivedT (collision, tracks, p2tracks);
695+ }
696+ PROCESS_SWITCH (CorrelationTask, processSame2ProngDerivedML, " Process same event on derived data with ML scores" , false );
697+
686698 template <class p2type >
687699 void processSame2Prong2ProngT (DerivedCollisions::iterator const & collision, p2type const & p2tracks)
688700 {
@@ -717,7 +729,7 @@ struct CorrelationTask {
717729 {
718730 processSame2Prong2ProngT (collision, p2tracks);
719731 }
720- PROCESS_SWITCH (CorrelationTask, processSame2Prong2ProngML, " Process same event on derived data" , false );
732+ PROCESS_SWITCH (CorrelationTask, processSame2Prong2ProngML, " Process same event on derived data with ML scores " , false );
721733
722734 using BinningTypeAOD = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentRun2V0M>;
723735 void processMixedAOD (AodCollisions const & collisions, AodTracks const & tracks, aod::BCsWithTimestamps const &)
@@ -804,12 +816,13 @@ struct CorrelationTask {
804816 }
805817 PROCESS_SWITCH (CorrelationTask, processMixedDerived, " Process mixed events on derived data" , false );
806818
807- void processMixed2ProngDerived (DerivedCollisions const & collisions, DerivedTracks const & tracks, soa::Filtered<aod::CF2ProngTracks> const & p2tracks)
819+ template <class p2type >
820+ void processMixed2ProngDerivedT (DerivedCollisions const & collisions, DerivedTracks const & tracks, p2type const & p2tracks)
808821 {
809822 BinningTypeDerived configurableBinningDerived{{axisVertex, axisMultiplicity}, true }; // true is for 'ignore overflows' (true by default). Underflows and overflows will have bin -1.
810823 // Strictly upper categorised collisions, for cfgNoMixedEvents combinations per bin, skipping those in entry -1
811824 auto tracksTuple = std::make_tuple (p2tracks, tracks);
812- Pair<DerivedCollisions, soa::Filtered<aod::CF2ProngTracks> , DerivedTracks, BinningTypeDerived> pairs{configurableBinningDerived, cfgNoMixedEvents, -1 , collisions, tracksTuple, &cache}; // -1 is the number of the bin to skip
825+ Pair<DerivedCollisions, p2type , DerivedTracks, BinningTypeDerived> pairs{configurableBinningDerived, cfgNoMixedEvents, -1 , collisions, tracksTuple, &cache}; // -1 is the number of the bin to skip
813826
814827 for (auto it = pairs.begin (); it != pairs.end (); it++) {
815828 auto & [collision1, tracks1, collision2, tracks2] = *it;
@@ -841,8 +854,19 @@ struct CorrelationTask {
841854 }
842855 }
843856 }
857+
858+ void processMixed2ProngDerived (DerivedCollisions const & collisions, DerivedTracks const & tracks, soa::Filtered<aod::CF2ProngTracks> const & p2tracks)
859+ {
860+ processMixed2ProngDerivedT (collisions, tracks, p2tracks);
861+ }
844862 PROCESS_SWITCH (CorrelationTask, processMixed2ProngDerived, " Process mixed events on derived data" , false );
845863
864+ void processMixed2ProngDerivedML (DerivedCollisions const & collisions, DerivedTracks const & tracks, soa::Filtered<soa::Join<aod::CF2ProngTracks, aod::CF2ProngTrackmls>> const & p2tracks)
865+ {
866+ processMixed2ProngDerivedT (collisions, tracks, p2tracks);
867+ }
868+ PROCESS_SWITCH (CorrelationTask, processMixed2ProngDerivedML, " Process mixed events on derived data with ML scores" , false );
869+
846870 template <class p2type >
847871 void processMixed2Prong2ProngT (DerivedCollisions const & collisions, p2type const & p2tracks)
848872 {
@@ -892,7 +916,7 @@ struct CorrelationTask {
892916 {
893917 processMixed2Prong2ProngT (collisions, p2tracks);
894918 }
895- PROCESS_SWITCH (CorrelationTask, processMixed2Prong2ProngML, " Process mixed events on derived data" , false );
919+ PROCESS_SWITCH (CorrelationTask, processMixed2Prong2ProngML, " Process mixed events on derived data with ML scores " , false );
896920
897921 // Version with combinations
898922 /* void processWithCombinations(soa::Join<aod::Collisions, aod::CentRun2V0Ms>::iterator const& collision, aod::BCsWithTimestamps const&, soa::Filtered<aod::Tracks> const& tracks)
0 commit comments