Skip to content

Commit 0c6ff73

Browse files
committed
Online efficiency correction
1 parent 11467c6 commit 0c6ff73

File tree

1 file changed

+48
-42
lines changed

1 file changed

+48
-42
lines changed

PWGLF/Tasks/Strangeness/phik0shortanalysis.cxx

Lines changed: 48 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ struct Phik0shortanalysis {
161161
Configurable<std::vector<double>> binspTPi{"binspTPi", {0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1.0, 1.2, 1.5, 2.0, 3.0}, "pT bin limits for pions"};
162162

163163
// Configurables for delta y selection
164-
Configurable<int> nBinsY{"nBinsY", 80, "Number of bins in y axis"};
164+
Configurable<int> nBinsY{"nBinsY", 20, "Number of bins in y axis"};
165165
Configurable<int> nBinsDeltaY{"nBinsDeltaY", 20, "Number of bins in deltay axis"};
166166
Configurable<float> cfgYAcceptance{"cfgYAcceptance", 0.5f, "Rapidity acceptance"};
167167
Configurable<float> cfgYAcceptanceSmear{"cfgYAcceptanceSmear", 0.8f, "Rapidity acceptance for smearing matrix study"};
@@ -180,7 +180,7 @@ struct Phik0shortanalysis {
180180
// Configurables to choose the filling method
181181
Configurable<bool> fillMethodMultipleWeights{"fillMethodMultipleWeights", true, "Fill method Multiple Weights"};
182182
Configurable<bool> fillMethodSingleWeight{"fillMethodSingleWeight", false, "Fill method Single Weight"};
183-
Configurable<bool> useEfficiency{"useEfficiency", false, "Use efficiency for filling histograms"};
183+
Configurable<bool> applyEfficiency{"applyEfficiency", false, "Use efficiency for filling histograms"};
184184

185185
// Configurable for event mixing
186186
Configurable<int> cfgNoMixedEvents{"cfgNoMixedEvents", 5, "Number of mixed events per event"};
@@ -268,9 +268,9 @@ struct Phik0shortanalysis {
268268
std::vector<std::vector<TF1*>> phiPurityFunctions = std::vector<std::vector<TF1*>>(binsMult->size(), std::vector<TF1*>(binspTPhi->size(), nullptr));
269269

270270
// Efficiecy maps
271-
TH2F* effMapPhi;
272-
TH2F* effMapK0S;
273-
TH2F* effMapPion;
271+
TH3F* effMapPhi;
272+
TH3F* effMapK0S;
273+
TH3F* effMapPion;
274274

275275
void init(InitContext&)
276276
{
@@ -280,7 +280,7 @@ struct Phik0shortanalysis {
280280
AxisSpec sigmassPhiAxis = {nBinsMPhi, lowMPhi, upMPhi, "#it{M}_{inv} [GeV/#it{c}^{2}]"};
281281
AxisSpec vertexZAxis = {100, -15.f, 15.f, "vrtx_{Z} [cm]"};
282282
AxisSpec etaAxis = {16, -trackConfigs.etaMax, trackConfigs.etaMax, "#eta"};
283-
AxisSpec yAxis = {nBinsY, -cfgYAcceptanceSmear, cfgYAcceptanceSmear, "#it{y}"};
283+
AxisSpec yAxis = {nBinsY, -cfgYAcceptance, cfgYAcceptance, "#it{y}"};
284284
AxisSpec deltayAxis = {nBinsDeltaY, -1.0f, 1.0f, "#Delta#it{y}"};
285285
AxisSpec multAxis = {120, 0.0f, 120.0f, "centFT0M"};
286286
AxisSpec binnedmultAxis{(std::vector<double>)binsMult, "centFT0M"};
@@ -578,22 +578,22 @@ struct Phik0shortanalysis {
578578
closureMCPhiK0SHist.add("h5PhiK0SMCClosureNewProc", "2D Invariant mass of Phi and K0Short in MC Closure Test", kTHnSparseF, {deltayAxis, binnedmultAxis, binnedptK0SAxis, massK0SAxis, massPhiAxis});
579579
closureMCPhiPionHist.add("h6PhiPiMCClosureNewProc", "Phi Invariant mass vs Pion nSigma TPC/TOF in MC Closure Test", kTHnSparseF, {deltayAxis, binnedmultAxis, binnedptPiAxis, {100, -10.0f, 10.0f}, {100, -10.0f, 10.0f}, massPhiAxis});
580580

581-
mcPhiHist.add("h2PhiMCRecoNewProc", "Phi in MCReco", kTH2F, {binnedmultAxis, binnedpTPhiAxis});
582-
mcK0SHist.add("h2K0SMCRecoNewProc", "K0S in MCReco", kTH2F, {binnedmultAxis, binnedptK0SAxis});
583-
mcPionHist.add("h2PiMCRecoNewProc", "Pion in MCReco", kTH2F, {binnedmultAxis, binnedptPiAxis});
584-
mcPionHist.add("h2PiMCReco2NewProc", "Pion in MCReco", kTH2F, {binnedmultAxis, binnedptPiAxis});
581+
mcPhiHist.add("h3PhiMCRecoNewProc", "Phi in MCReco", kTH3F, {binnedmultAxis, binnedpTPhiAxis, yAxis});
582+
mcK0SHist.add("h3K0SMCRecoNewProc", "K0S in MCReco", kTH3F, {binnedmultAxis, binnedptK0SAxis, yAxis});
583+
mcPionHist.add("h3PiMCRecoNewProc", "Pion in MCReco", kTH3F, {binnedmultAxis, binnedptPiAxis, yAxis});
584+
mcPionHist.add("h3PiMCReco2NewProc", "Pion in MCReco", kTH3F, {binnedmultAxis, binnedptPiAxis, yAxis});
585585

586-
mcPhiHist.add("h2PhiMCGenNewProc", "Phi in MCGen", kTH2F, {binnedmultAxis, binnedpTPhiAxis});
587-
mcK0SHist.add("h2K0SMCGenNewProc", "K0S in MCGen", kTH2F, {binnedmultAxis, binnedptK0SAxis});
588-
mcPionHist.add("h2PiMCGenNewProc", "Pion in MCGen", kTH2F, {binnedmultAxis, binnedptPiAxis});
586+
mcPhiHist.add("h3PhiMCGenNewProc", "Phi in MCGen", kTH3F, {binnedmultAxis, binnedpTPhiAxis, yAxis});
587+
mcK0SHist.add("h3K0SMCGenNewProc", "K0S in MCGen", kTH3F, {binnedmultAxis, binnedptK0SAxis, yAxis});
588+
mcPionHist.add("h3PiMCGenNewProc", "Pion in MCGen", kTH3F, {binnedmultAxis, binnedptPiAxis, yAxis});
589589

590-
mcPhiHist.add("h2PhiMCGenAssocRecoNewProc", "Phi in MCGen Associated MCReco", kTH2F, {binnedmultAxis, binnedpTPhiAxis});
591-
mcK0SHist.add("h2K0SMCGenAssocRecoNewProc", "K0S in MCGen Associated MCReco", kTH2F, {binnedmultAxis, binnedptK0SAxis});
592-
mcPionHist.add("h2PiMCGenAssocRecoNewProc", "Pion in MCGen Associated MCReco", kTH2F, {binnedmultAxis, binnedptPiAxis});
590+
mcPhiHist.add("h3PhiMCGenAssocRecoNewProc", "Phi in MCGen Associated MCReco", kTH3F, {binnedmultAxis, binnedpTPhiAxis, yAxis});
591+
mcK0SHist.add("h3K0SMCGenAssocRecoNewProc", "K0S in MCGen Associated MCReco", kTH3F, {binnedmultAxis, binnedptK0SAxis, yAxis});
592+
mcPionHist.add("h3PiMCGenAssocRecoNewProc", "Pion in MCGen Associated MCReco", kTH3F, {binnedmultAxis, binnedptPiAxis, yAxis});
593593

594-
mcPhiHist.add("h2PhiMCGenAssocRecoCheckNewProc", "Phi in MCGen Associated MCReco Check", kTH2F, {binnedmultAxis, binnedpTPhiAxis});
595-
mcK0SHist.add("h2K0SMCGenAssocRecoCheckNewProc", "K0S in MCGen Associated MCReco Check", kTH2F, {binnedmultAxis, binnedptK0SAxis});
596-
mcPionHist.add("h2PiMCGenAssocRecoCheckNewProc", "Pion in MCGen Associated MCReco Check", kTH2F, {binnedmultAxis, binnedptPiAxis});
594+
mcPhiHist.add("h3PhiMCGenAssocRecoCheckNewProc", "Phi in MCGen Associated MCReco Check", kTH3F, {binnedmultAxis, binnedpTPhiAxis, yAxis});
595+
mcK0SHist.add("h3K0SMCGenAssocRecoCheckNewProc", "K0S in MCGen Associated MCReco Check", kTH3F, {binnedmultAxis, binnedptK0SAxis, yAxis});
596+
mcPionHist.add("h3PiMCGenAssocRecoCheckNewProc", "Pion in MCGen Associated MCReco Check", kTH3F, {binnedmultAxis, binnedptPiAxis, yAxis});
597597

598598
mePhiK0SHist.add("h5PhiK0SMENewProc", "2D Invariant mass of Phi and K0Short in ME", kTHnSparseF, {deltayAxis, binnedmultAxis, binnedptK0SAxis, massK0SAxis, massPhiAxis});
599599
mePhiPionHist.add("h6PhiPiMENewProc", "Phi Invariant mass vs Pion nSigma TPC/TOF in ME", kTHnSparseF, {deltayAxis, binnedmultAxis, binnedptPiAxis, {100, -10.0f, 10.0f}, {100, -10.0f, 10.0f}, massPhiAxis});
@@ -608,7 +608,7 @@ struct Phik0shortanalysis {
608608
if (fillMethodSingleWeight)
609609
getPhiPurityFunctionsFromCCDB();
610610

611-
if (useEfficiency)
611+
if (applyEfficiency)
612612
getEfficiencyMapsFromCCDB();
613613
else {
614614
effMapPhi = nullptr;
@@ -966,17 +966,17 @@ struct Phik0shortanalysis {
966966
if (!listEfficiencyMaps)
967967
LOG(error) << "Problem getting TList object with efficiency maps!";
968968

969-
effMapPhi = static_cast<TH2F*>(listEfficiencyMaps->FindObject("h2EfficiencyPhi"));
969+
effMapPhi = static_cast<TH3F*>(listEfficiencyMaps->FindObject("h3EfficiencyPhi"));
970970
if (!effMapPhi) {
971971
LOG(error) << "Problem getting efficiency map for Phi!";
972972
return;
973973
}
974-
effMapK0S = static_cast<TH2F*>(listEfficiencyMaps->FindObject("h2EfficiencyK0S"));
974+
effMapK0S = static_cast<TH3F*>(listEfficiencyMaps->FindObject("h3EfficiencyK0S"));
975975
if (!effMapK0S) {
976976
LOG(error) << "Problem getting efficiency map for K0S!";
977977
return;
978978
}
979-
effMapPion = static_cast<TH2F*>(listEfficiencyMaps->FindObject("h2EfficiencyPion"));
979+
effMapPion = static_cast<TH3F*>(listEfficiencyMaps->FindObject("h3EfficiencyPion"));
980980
if (!effMapPion) {
981981
LOG(error) << "Problem getting efficiency map for Pion!";
982982
return;
@@ -2516,7 +2516,8 @@ struct Phik0shortanalysis {
25162516
isCountedPhi = true;
25172517
}
25182518

2519-
dataPhiHist.fill(HIST("h3PhiDataNewProc"), multiplicity, recPhi.Pt(), recPhi.M());
2519+
float weightPhi = applyEfficiency ? 1.0f / (effMapPhi->Interpolate(multiplicity, recPhi.Pt(), recPhi.Rapidity())) : 1.0f;
2520+
dataPhiHist.fill(HIST("h3PhiDataNewProc"), multiplicity, recPhi.Pt(), recPhi.M(), weightPhi);
25202521

25212522
// V0 already reconstructed by the builder
25222523
for (const auto& v0 : V0s) {
@@ -2543,7 +2544,8 @@ struct Phik0shortanalysis {
25432544
if (std::abs(v0.yK0Short()) > cfgYAcceptance)
25442545
continue;
25452546

2546-
dataPhiK0SHist.fill(HIST("h5PhiK0SDataNewProc"), v0.yK0Short() - recPhi.Rapidity(), multiplicity, v0.pt(), v0.mK0Short(), recPhi.M());
2547+
float weightPhiK0S = applyEfficiency ? 1.0f / (effMapPhi->Interpolate(multiplicity, recPhi.Pt(), recPhi.Rapidity()) * effMapK0S->Interpolate(multiplicity, v0.pt(), v0.yK0Short())) : 1.0f;
2548+
dataPhiK0SHist.fill(HIST("h5PhiK0SDataNewProc"), v0.yK0Short() - recPhi.Rapidity(), multiplicity, v0.pt(), v0.mK0Short(), recPhi.M(), weightPhiK0S);
25472549
}
25482550

25492551
isFilledhV0 = true;
@@ -2558,7 +2560,8 @@ struct Phik0shortanalysis {
25582560

25592561
float nSigmaTOFPi = (track.hasTOF() ? track.tofNSigmaPi() : -999);
25602562

2561-
dataPhiPionHist.fill(HIST("h6PhiPiDataNewProc"), track.rapidity(massPi) - recPhi.Rapidity(), multiplicity, track.pt(), track.tpcNSigmaPi(), nSigmaTOFPi, recPhi.M());
2563+
float weightPhiPion = applyEfficiency ? 1.0f / (effMapPhi->Interpolate(multiplicity, recPhi.Pt(), recPhi.Rapidity()) * effMapPion->Interpolate(multiplicity, track.pt(), track.rapidity(massPi))) : 1.0f;
2564+
dataPhiPionHist.fill(HIST("h6PhiPiDataNewProc"), track.rapidity(massPi) - recPhi.Rapidity(), multiplicity, track.pt(), track.tpcNSigmaPi(), nSigmaTOFPi, recPhi.M(), weightPhiPion);
25622565
}
25632566
}
25642567
}
@@ -2613,7 +2616,8 @@ struct Phik0shortanalysis {
26132616
isCountedPhi = true;
26142617
}
26152618

2616-
closureMCPhiHist.fill(HIST("h3PhiMCClosureNewProc"), genmultiplicity, recPhi.Pt(), recPhi.M());
2619+
float weightPhi = applyEfficiency ? 1.0f / (effMapPhi->Interpolate(genmultiplicity, recPhi.Pt(), recPhi.Rapidity())) : 1.0f;
2620+
closureMCPhiHist.fill(HIST("h3PhiMCClosureNewProc"), genmultiplicity, recPhi.Pt(), recPhi.M(), weightPhi);
26172621

26182622
// V0 already reconstructed by the builder
26192623
for (const auto& v0 : V0s) {
@@ -2636,7 +2640,8 @@ struct Phik0shortanalysis {
26362640
if (std::abs(v0.yK0Short()) > cfgYAcceptance)
26372641
continue;
26382642

2639-
closureMCPhiK0SHist.fill(HIST("h5PhiK0SMCClosureNewProc"), v0.yK0Short() - recPhi.Rapidity(), genmultiplicity, v0.pt(), v0.mK0Short(), recPhi.M());
2643+
float weightPhiK0S = applyEfficiency ? 1.0f / (effMapPhi->Interpolate(genmultiplicity, recPhi.Pt(), recPhi.Rapidity()) * effMapK0S->Interpolate(genmultiplicity, v0.pt(), v0.yK0Short())) : 1.0f;
2644+
closureMCPhiK0SHist.fill(HIST("h5PhiK0SMCClosureNewProc"), v0.yK0Short() - recPhi.Rapidity(), genmultiplicity, v0.pt(), v0.mK0Short(), recPhi.M(), weightPhiK0S);
26402645
}
26412646

26422647
// Loop over all primary pion candidates
@@ -2657,7 +2662,8 @@ struct Phik0shortanalysis {
26572662

26582663
float nSigmaTOFPi = (track.hasTOF() ? track.tofNSigmaPi() : -999);
26592664

2660-
closureMCPhiPionHist.fill(HIST("h6PhiPiMCClosureNewProc"), track.rapidity(massPi) - recPhi.Rapidity(), genmultiplicity, track.pt(), track.tpcNSigmaPi(), nSigmaTOFPi, recPhi.M());
2665+
float weightPhiPion = applyEfficiency ? 1.0f / (effMapPhi->Interpolate(genmultiplicity, recPhi.Pt(), recPhi.Rapidity()) * effMapPion->Interpolate(genmultiplicity, track.pt(), track.rapidity(massPi))) : 1.0f;
2666+
closureMCPhiPionHist.fill(HIST("h6PhiPiMCClosureNewProc"), track.rapidity(massPi) - recPhi.Rapidity(), genmultiplicity, track.pt(), track.tpcNSigmaPi(), nSigmaTOFPi, recPhi.M(), weightPhiPion);
26612667
}
26622668
}
26632669
}
@@ -2730,7 +2736,7 @@ struct Phik0shortanalysis {
27302736
if (pTMother < minPhiPt || std::abs(yMother) > cfgYAcceptance)
27312737
continue;
27322738

2733-
mcPhiHist.fill(HIST("h2PhiMCRecoNewProc"), genmultiplicity, recPhi.Pt());
2739+
mcPhiHist.fill(HIST("h3PhiMCRecoNewProc"), genmultiplicity, recPhi.Pt(), recPhi.Rapidity());
27342740
}
27352741
}
27362742

@@ -2755,7 +2761,7 @@ struct Phik0shortanalysis {
27552761
if (std::abs(v0mcparticle.y()) > cfgYAcceptance)
27562762
continue;
27572763

2758-
mcK0SHist.fill(HIST("h2K0SMCRecoNewProc"), genmultiplicity, v0mcparticle.pt());
2764+
mcK0SHist.fill(HIST("h3K0SMCRecoNewProc"), genmultiplicity, v0mcparticle.pt(), v0mcparticle.y());
27592765
}
27602766

27612767
// Defining tracks in the collision
@@ -2788,12 +2794,12 @@ struct Phik0shortanalysis {
27882794
continue;
27892795
}
27902796

2791-
mcPionHist.fill(HIST("h2PiMCRecoNewProc"), genmultiplicity, mcTrack.pt());
2797+
mcPionHist.fill(HIST("h3PiMCRecoNewProc"), genmultiplicity, mcTrack.pt(), mcTrack.y());
27922798

27932799
if (track.pt() >= trackConfigs.pTToUseTOF && !track.hasTOF())
27942800
continue;
27952801

2796-
mcPionHist.fill(HIST("h2PiMCReco2NewProc"), genmultiplicity, mcTrack.pt());
2802+
mcPionHist.fill(HIST("h3PiMCReco2NewProc"), genmultiplicity, mcTrack.pt(), mcTrack.y());
27972803
}
27982804

27992805
// Defining McParticles in the collision
@@ -2809,23 +2815,23 @@ struct Phik0shortanalysis {
28092815
if (mcParticle.pt() < minPhiPt)
28102816
continue;
28112817

2812-
mcPhiHist.fill(HIST("h2PhiMCGenAssocRecoCheckNewProc"), genmultiplicity, mcParticle.pt());
2818+
mcPhiHist.fill(HIST("h3PhiMCGenAssocRecoCheckNewProc"), genmultiplicity, mcParticle.pt(), mcParticle.y());
28132819

28142820
// K0S selection
28152821
if (mcParticle.pdgCode() != PDG_t::kK0Short)
28162822
continue;
28172823
if (!mcParticle.isPhysicalPrimary() || mcParticle.pt() < v0Configs.v0SettingMinPt)
28182824
continue;
28192825

2820-
mcK0SHist.fill(HIST("h2K0SMCGenAssocRecoCheckNewProc"), genmultiplicity, mcParticle.pt());
2826+
mcK0SHist.fill(HIST("h3K0SMCGenAssocRecoCheckNewProc"), genmultiplicity, mcParticle.pt(), mcParticle.y());
28212827

28222828
// Pion selection
28232829
if (std::abs(mcParticle.pdgCode()) != PDG_t::kPiPlus)
28242830
continue;
28252831
if (!mcParticle.isPhysicalPrimary() || mcParticle.pt() < trackConfigs.cMinPionPtcut)
28262832
continue;
28272833

2828-
mcPionHist.fill(HIST("h2PiMCGenAssocRecoCheckNewProc"), genmultiplicity, mcParticle.pt());
2834+
mcPionHist.fill(HIST("h3PiMCGenAssocRecoCheckNewProc"), genmultiplicity, mcParticle.pt(), mcParticle.y());
28292835
}
28302836
}
28312837
}
@@ -2862,29 +2868,29 @@ struct Phik0shortanalysis {
28622868
if (mcParticle.pt() < minPhiPt)
28632869
continue;
28642870

2865-
mcPhiHist.fill(HIST("h2PhiMCGenNewProc"), genmultiplicity, mcParticle.pt());
2871+
mcPhiHist.fill(HIST("h3PhiMCGenNewProc"), genmultiplicity, mcParticle.pt(), mcParticle.y());
28662872
if (isAssocColl)
2867-
mcPhiHist.fill(HIST("h2PhiMCGenAssocRecoNewProc"), genmultiplicity, mcParticle.pt());
2873+
mcPhiHist.fill(HIST("h3PhiMCGenAssocRecoNewProc"), genmultiplicity, mcParticle.pt(), mcParticle.y());
28682874

28692875
// K0S selection
28702876
if (mcParticle.pdgCode() != PDG_t::kK0Short)
28712877
continue;
28722878
if (!mcParticle.isPhysicalPrimary() || mcParticle.pt() < v0Configs.v0SettingMinPt)
28732879
continue;
28742880

2875-
mcK0SHist.fill(HIST("h2K0SMCGenNewProc"), genmultiplicity, mcParticle.pt());
2881+
mcK0SHist.fill(HIST("h3K0SMCGenNewProc"), genmultiplicity, mcParticle.pt(), mcParticle.y());
28762882
if (isAssocColl)
2877-
mcK0SHist.fill(HIST("h2K0SMCGenAssocRecoNewProc"), genmultiplicity, mcParticle.pt());
2883+
mcK0SHist.fill(HIST("h3K0SMCGenAssocRecoNewProc"), genmultiplicity, mcParticle.pt(), mcParticle.y());
28782884

28792885
// Pion selection
28802886
if (std::abs(mcParticle.pdgCode()) != PDG_t::kPiPlus)
28812887
continue;
28822888
if (!mcParticle.isPhysicalPrimary() || mcParticle.pt() < trackConfigs.cMinPionPtcut)
28832889
continue;
28842890

2885-
mcPionHist.fill(HIST("h2PiMCGenNewProc"), genmultiplicity, mcParticle.pt());
2891+
mcPionHist.fill(HIST("h3PiMCGenNewProc"), genmultiplicity, mcParticle.pt(), mcParticle.y());
28862892
if (isAssocColl)
2887-
mcPionHist.fill(HIST("h2PiMCGenAssocRecoNewProc"), genmultiplicity, mcParticle.pt());
2893+
mcPionHist.fill(HIST("h3PiMCGenAssocRecoNewProc"), genmultiplicity, mcParticle.pt(), mcParticle.y());
28882894
}
28892895
}
28902896

0 commit comments

Comments
 (0)