@@ -216,6 +216,7 @@ struct HStrangeCorrelation {
216216 TH2F* hEfficiencyOmegaMinus;
217217 TH2F* hEfficiencyOmegaPlus;
218218 TH2F* hEfficiencyHadron;
219+ TH1F* hPurityHadron;
219220
220221 using BinningType = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentFT0M>;
221222 using BinningTypePbPb = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentFT0C>;
@@ -295,6 +296,7 @@ struct HStrangeCorrelation {
295296 hEfficiencyOmegaPlus = static_cast <TH2F*>(listEfficiencies->FindObject (" hEfficiencyOmegaPlus" ));
296297 hEfficiencyHadron = static_cast <TH2F*>(listEfficiencies->FindObject (" hEfficiencyHadron" ));
297298 hEfficiencyPion = static_cast <TH2F*>(listEfficiencies->FindObject (" hEfficiencyPion" ));
299+ hPurityHadron = static_cast <TH1F*>(listEfficiencies->FindObject (" hPurityHadron" ));
298300 LOG (info) << " Efficiencies now loaded for " << mRunNumber ;
299301 }
300302
@@ -941,20 +943,23 @@ struct HStrangeCorrelation {
941943 continue ;
942944
943945 float efficiency = 1 ;
946+ float purity = 1 .0f ;
944947 if (applyEfficiencyCorrection) {
945948 if constexpr (requires { assocTrack.nSigmaTPCPi (); }) {
946949 efficiency = hEfficiencyPion->Interpolate (ptassoc, assoc.eta ());
947950 } else {
948951 efficiency = hEfficiencyHadron->Interpolate (ptassoc, assoc.eta ());
952+ purity = hPurityHadron->Interpolate (ptassoc);
949953 }
950954 }
951955 if (applyEfficiencyForTrigger) {
952956 efficiency = efficiency * hEfficiencyTrigger->Interpolate (pttrigger, trigg.eta ());
957+ purity = purity * hPurityHadron->Interpolate (pttrigger);
953958 }
954959 if (efficiency == 0 ) { // check for zero efficiency, do not apply if the case
955960 efficiency = 1 ;
956961 }
957- float weight = (applyEfficiencyCorrection || applyEfficiencyForTrigger) ? 1 . / efficiency : 1 .0f ;
962+ float weight = (applyEfficiencyCorrection || applyEfficiencyForTrigger) ? purity / efficiency : 1 .0f ;
958963 double deltaPhiStar = calculateAverageDeltaPhiStar (triggForDeltaPhiStar, assocForDeltaPhiStar, bField);
959964 if (!mixing) {
960965 if constexpr (requires { assocTrack.nSigmaTPCPi (); }) {
@@ -998,6 +1003,7 @@ struct HStrangeCorrelation {
9981003 hEfficiencyOmegaPlus = 0x0 ;
9991004
10001005 hEfficiencyHadron = 0x0 ;
1006+ hPurityHadron = 0x0 ;
10011007
10021008 // set bitmap for convenience
10031009 doCorrelation = 0 ;
@@ -1547,13 +1553,15 @@ struct HStrangeCorrelation {
15471553 if (!isValidAssocHadron (assoc))
15481554 continue ;
15491555 float efficiency = 1 .0f ;
1556+ float purity = 1 .0f ;
15501557 if (applyEfficiencyCorrection) {
15511558 efficiency = hEfficiencyHadron->Interpolate (assoc.pt (), assoc.eta ());
1559+ purity = hPurityHadron->Interpolate (assoc.pt ());
15521560 }
15531561 if (efficiency == 0 ) { // check for zero efficiency, do not apply if the case
15541562 efficiency = 1 ;
15551563 }
1556- float weight = applyEfficiencyCorrection ? 1 . / efficiency : 1 .0f ;
1564+ float weight = applyEfficiencyCorrection ? purity / efficiency : 1 .0f ;
15571565 histos.fill (HIST (" hAssocHadronsAllSelectedEtaVsPt" ), assoc.pt (), assoc.eta (), collision.centFT0M ());
15581566 histos.fill (HIST (" hAssocPtResolution" ), assoc.pt (), assocTrack.mcOriginalPt ());
15591567 if (doAssocPhysicalPrimary && !assocTrack.mcPhysicalPrimary ())
0 commit comments