Skip to content

Commit ce7c8d5

Browse files
authored
[PWGCF] track--2-prong correlations with ML scores (#10635)
1 parent 35b39f6 commit ce7c8d5

File tree

1 file changed

+33
-9
lines changed

1 file changed

+33
-9
lines changed

PWGCF/Tasks/correlations.cxx

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)