@@ -566,14 +566,14 @@ struct HStrangeCorrelation {
566566
567567 return dPhiStarMean;
568568 }
569- void fillTriggerHistogram (std::shared_ptr<TH2> hist, double pt, double mult, float eff, float effUncert)
569+ void fillTriggerHistogram (std::shared_ptr<TH2> hist, double pt, double mult, float eff, float effUncert, float purity, float purityErr )
570570 {
571571 int binx = hist->GetXaxis ()->FindBin (pt);
572572 int biny = hist->GetYaxis ()->FindBin (mult);
573573 float previousContent = hist->GetBinContent (binx, biny);
574574 float previousUncert = hist->GetBinError (binx, biny);
575- float newContent = previousContent + 1 / eff;
576- float newUncert = std::sqrt (previousUncert * previousUncert + 1 / std::pow (eff, 2 ) + std::pow (effUncert, 2 ) / std::pow (eff, 4 ));
575+ float newContent = previousContent + purity / eff;
576+ float newUncert = std::sqrt (previousUncert * previousUncert + std::pow (purity / eff, 2 ) + std::pow (purityErr / eff, 2 ) + std::pow (effUncert, 2 ) / std::pow (eff, 4 ));
577577 hist->SetBinContent (binx, biny, newContent);
578578 hist->SetBinError (binx, biny, newUncert);
579579 }
@@ -600,16 +600,23 @@ struct HStrangeCorrelation {
600600 if (!mixing) {
601601 float efficiency = 1 .0f ;
602602 float efficiencyError = 0 .0f ;
603+ float purity = 1 .0f ;
604+ float purityErr = 0.0 ;
603605 if (efficiencyFlags.applyEfficiencyForTrigger ) {
604606 efficiency = hEfficiencyTrigger->Interpolate (trigg.pt (), trigg.eta ());
605- if (efficiencyFlags.applyEfficiencyPropagation )
607+ if (efficiencyFlags.applyPurityTrigger )
608+ purity = hPurityHadron->Interpolate (trigg.pt ());
609+ if (efficiencyFlags.applyEfficiencyPropagation ) {
606610 efficiencyError = hEfficiencyUncertaintyTrigger->Interpolate (trigg.pt (), trigg.eta ());
611+ if (efficiencyFlags.applyPurityTrigger )
612+ purityErr = hPurityHadron->Interpolate (trigg.pt ());
613+ }
607614 if (efficiency == 0 ) { // check for zero efficiency, do not apply if the case
608615 efficiency = 1 ;
609616 efficiencyError = 0 ;
610617 }
611618 }
612- fillTriggerHistogram (histos.get <TH2>(HIST (" sameEvent/TriggerParticlesV0" )), trigg.pt (), mult, efficiency, efficiencyError);
619+ fillTriggerHistogram (histos.get <TH2>(HIST (" sameEvent/TriggerParticlesV0" )), trigg.pt (), mult, efficiency, efficiencyError, purity, purityErr );
613620 }
614621
615622 double triggSign = trigg.sign ();
@@ -808,16 +815,23 @@ struct HStrangeCorrelation {
808815 if (!mixing) {
809816 float efficiency = 1 .0f ;
810817 float efficiencyError = 0 .0f ;
818+ float purity = 1 .0f ;
819+ float purityErr = 0 .0f ;
811820 if (efficiencyFlags.applyEfficiencyForTrigger ) {
812821 efficiency = hEfficiencyTrigger->Interpolate (trigg.pt (), trigg.eta ());
813- if (efficiencyFlags.applyEfficiencyPropagation )
822+ if (efficiencyFlags.applyPurityTrigger )
823+ purity = hPurityHadron->Interpolate (trigg.pt ());
824+ if (efficiencyFlags.applyEfficiencyPropagation ) {
814825 efficiencyError = hEfficiencyUncertaintyTrigger->Interpolate (trigg.pt (), trigg.eta ());
826+ if (efficiencyFlags.applyPurityTrigger )
827+ purityErr = hPurityUncertaintyHadron->Interpolate (trigg.pt ());
828+ }
815829 if (efficiency == 0 ) { // check for zero efficiency, do not apply if the case
816830 efficiency = 1 ;
817831 efficiencyError = 0 ;
818832 }
819833 }
820- fillTriggerHistogram (histos.get <TH2>(HIST (" sameEvent/TriggerParticlesCascade" )), trigg.pt (), mult, efficiency, efficiencyError);
834+ fillTriggerHistogram (histos.get <TH2>(HIST (" sameEvent/TriggerParticlesCascade" )), trigg.pt (), mult, efficiency, efficiencyError, purity, purityErr );
821835 }
822836 double triggSign = trigg.sign ();
823837 double triggForDeltaPhiStar[] = {trigg.phi (), trigg.pt (), triggSign};
@@ -985,19 +999,26 @@ struct HStrangeCorrelation {
985999 if (!mixing) {
9861000 float efficiency = 1 .0f ;
9871001 float efficiencyError = 0 .0f ;
1002+ float purity = 1 .0f ;
1003+ float purityError = 0 .0f ;
9881004 if (efficiencyFlags.applyEfficiencyForTrigger ) {
9891005 efficiency = hEfficiencyTrigger->Interpolate (trigg.pt (), trigg.eta ());
990- if (efficiencyFlags.applyEfficiencyPropagation )
1006+ if (efficiencyFlags.applyPurityTrigger )
1007+ purity = hPurityHadron->Interpolate (trigg.pt ());
1008+ if (efficiencyFlags.applyEfficiencyPropagation ) {
9911009 hEfficiencyUncertaintyTrigger->Interpolate (trigg.pt (), trigg.eta ());
1010+ if (efficiencyFlags.applyPurityTrigger )
1011+ purityError = hPurityUncertaintyHadron->Interpolate (trigg.pt ());
1012+ }
9921013 if (efficiency == 0 ) { // check for zero efficiency, do not apply if the case
9931014 efficiency = 1 ;
9941015 efficiencyError = 0 ;
9951016 }
9961017 }
9971018 if constexpr (requires { triggerTrack.extra (); })
998- fillTriggerHistogram (histos.get <TH2>(HIST (" sameEvent/TriggerParticlesPion" )), trigg.pt (), mult, efficiency, efficiencyError);
1019+ fillTriggerHistogram (histos.get <TH2>(HIST (" sameEvent/TriggerParticlesPion" )), trigg.pt (), mult, efficiency, efficiencyError, purity, purityError );
9991020 else
1000- fillTriggerHistogram (histos.get <TH2>(HIST (" sameEvent/TriggerParticlesHadron" )), trigg.pt (), mult, efficiency, efficiencyError);
1021+ fillTriggerHistogram (histos.get <TH2>(HIST (" sameEvent/TriggerParticlesHadron" )), trigg.pt (), mult, efficiency, efficiencyError, purity, purityError );
10011022 }
10021023 double triggSign = trigg.sign ();
10031024 double triggForDeltaPhiStar[] = {trigg.phi (), trigg.pt (), triggSign};
@@ -1073,9 +1094,9 @@ struct HStrangeCorrelation {
10731094 if (efficiencyFlags.applyPurityTrigger )
10741095 purityTrigger = hPurityHadron->Interpolate (pttrigger);
10751096 if (efficiencyFlags.applyEfficiencyPropagation ) {
1076- triggerEfficiencyUncert = hEfficiencyUncertaintyTrigger->Interpolate (ptassoc, assoc .eta ());
1097+ triggerEfficiencyUncert = hEfficiencyUncertaintyTrigger->Interpolate (pttrigger, trigg .eta ());
10771098 if (efficiencyFlags.applyPurityTrigger )
1078- triggerPurityUncertainty = hPurityUncertaintyHadron->Interpolate (ptassoc );
1099+ triggerPurityUncertainty = hPurityUncertaintyHadron->Interpolate (pttrigger );
10791100 }
10801101 }
10811102 if (efficiency == 0 ) { // check for zero efficiency, do not apply if the case
0 commit comments