Skip to content

Commit 4754e51

Browse files
authored
[PWGLF] Add histograms for antineutron closure test (#17799)
1 parent 76a21fd commit 4754e51

1 file changed

Lines changed: 88 additions & 3 deletions

File tree

PWGLF/TableProducer/Nuspex/nucleiAntineutronCex.cxx

Lines changed: 88 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,11 @@ struct NucleiAntineutronCex {
8282
histos.add("antin_eta", "Pseudorapidity;#eta;Entries", kTH1F, {{100, -10., 10.}});
8383
histos.add("antin_p_ITScuts", "Momentum with ITS cuts;|p| (GeV/c);Entries", kTH1F, {{100, 0., 10.}});
8484

85+
histos.add("antin_pt", "Antineutron transverse momentum;p_{T,#bar{n}} (GeV/c);Entries", kTH1F, {{100, 0., 10.}});
86+
histos.add("antin_pt_ITScuts", "Antineutron transverse momentum with ITS cuts;p_{T,#bar{n}} (GeV/c);Entries", kTH1F, {{100, 0., 10.}});
87+
histos.add("antin_pt_closureA", "Generated antineutron p_{T}, closure sample A;p_{T,#bar{n}} (GeV/c);Entries", kTH1F, {{100, 0., 10.}});
88+
histos.add("antin_pt_closureB", "Generated antineutron p_{T}, closure sample B;p_{T,#bar{n}} (GeV/c);Entries", kTH1F, {{100, 0., 10.}});
89+
8590
// Primary neutrons
8691
histos.add("n_p", "Total momentum;|p| (GeV/c);Entries", kTH1F, {{100, 0., 10.}});
8792
histos.add("n_px", "p_{x};p_{x} (GeV/c);Entries", kTH1F, {{100, -10., 10.}});
@@ -120,6 +125,11 @@ struct NucleiAntineutronCex {
120125
histos.add("cex_pairmc_vtxz", "MC secondary vertex Z;Z (cm);Entries", kTH1F, {{200, -60., 60.}});
121126
histos.add("cexPairMcPITScuts", "CEX pair momentum (ITS cuts);|p| (GeV/c);Entries", kTH1F, {{100, 0., 10.}});
122127

128+
histos.add("cexMotherMcP", "Antineutron momentum for true CEX;p_{#bar{n}} (GeV/c);Entries", kTH1F, {{100, 0., 10.}});
129+
histos.add("cexMotherMcPt", "Antineutron transverse momentum for true CEX;p_{T,#bar{n}} (GeV/c);Entries", kTH1F, {{100, 0., 10.}});
130+
histos.add("cexMotherMcPt_closureA", "Antineutron p_{T} for true CEX, closure sample A;p_{T,#bar{n}} (GeV/c);Entries", kTH1F, {{100, 0., 10.}});
131+
histos.add("cexMotherMcPt_closureB", "Antineutron p_{T} for true CEX, closure sample B;p_{T,#bar{n}} (GeV/c);Entries", kTH1F, {{100, 0., 10.}});
132+
123133
// CEX pair normalized to antineutron (MC)
124134
histos.add("cexn_pairmc_p", "Pair p / antineutron p;p/p_{#bar{n}};Entries", kTH1F, {{100, 0., 2.}});
125135
histos.add("cexn_pairmc_pt", "Pair p_{T} / antineutron p_{T};p_{T}/p_{T,#bar{n}};Entries", kTH1F, {{100, 0., 2.}});
@@ -137,6 +147,16 @@ struct NucleiAntineutronCex {
137147

138148
// Pi0 events
139149
histos.add("cexn_pairmc_p_pi0", "Pair p / antineutron p for CEX + #pi^{0};p/p_{#bar{n}};Entries", kTH1F, {{100, 0., 2.}});
150+
histos.add("cexn_pairmc_pt_pi0", "Pair p_{T} / antineutron p_{T} for CEX + #pi^{0};p_{T}/p_{T,#bar{n}};Entries", kTH1F, {{100, 0., 2.}});
151+
152+
histos.add("cexn_pairmc_p_noPi0", "Pair p / antineutron p for two-body CEX;p/p_{#bar{n}};Entries", kTH1F, {{100, 0., 2.}});
153+
histos.add("cexn_pairmc_pt_noPi0", "Pair p_{T} / antineutron p_{T} for two-body CEX;p_{T}/p_{T,#bar{n}};Entries", kTH1F, {{100, 0., 2.}});
154+
155+
histos.add("cexn_pairtrk_p_pi0", "Reconstructed pair p / antineutron p for CEX + #pi^{0};p_{p#bar{p}}^{reco}/p_{#bar{n}};Entries", kTH1F, {{100, 0., 2.}});
156+
histos.add("cexn_pairtrk_pt_pi0", "Reconstructed pair p_{T} / antineutron p_{T} for CEX + #pi^{0};p_{T,p#bar{p}}^{reco}/p_{T,#bar{n}};Entries", kTH1F, {{100, 0., 2.}});
157+
158+
histos.add("cexn_pairtrk_p_noPi0", "Reconstructed pair p / antineutron p for two-body CEX;p_{p#bar{p}}^{reco}/p_{#bar{n}};Entries", kTH1F, {{100, 0., 2.}});
159+
histos.add("cexn_pairtrk_pt_noPi0", "Reconstructed pair p_{T} / antineutron p_{T} for two-body CEX;p_{T,p#bar{p}}^{reco}/p_{T,#bar{n}};Entries", kTH1F, {{100, 0., 2.}});
140160

141161
// CEX pair from antineutron (TRK)
142162
histos.add("cex_pairtrk_angle", "Pair opening angle (tracks);Angle (°);Entries", kTH1F, {{180, 0., 180.}});
@@ -148,6 +168,17 @@ struct NucleiAntineutronCex {
148168
histos.add("cex_pairtrkVtxfitDistToPv", "Distance from secondary vertex to PV;dist (cm);Entries", kTH1F, {{240, 0., 120.}});
149169
histos.add("cex_pairtrk_vtxfit_secVtxXY", "Secondary vertex (PCA);X (cm);Y (cm)", kTH2F, {{200, -60., 60.}, {200, -60., 60.}});
150170
histos.add("cex_pairtrk_vtxfit_secVtxZ", "Secondary vertex Z (PCA);Z (cm);Entries", kTH1F, {{240, -60., 60.}});
171+
histos.add("cexMotherTrkP", "Antineutron momentum for reconstructed CEX;p_{#bar{n}} (GeV/c);Entries", kTH1F, {{100, 0., 10.}});
172+
histos.add("cexMotherTrkPt", "Antineutron transverse momentum for reconstructed CEX;p_{T,#bar{n}} (GeV/c);Entries", kTH1F, {{100, 0., 10.}});
173+
histos.add("cexMotherTrkPt_closureA", "Antineutron p_{T} for reconstructed CEX, closure sample A;p_{T,#bar{n}} (GeV/c);Entries", kTH1F, {{100, 0., 10.}});
174+
histos.add("cexMotherTrkPt_closureB", "Antineutron p_{T} for reconstructed CEX, closure sample B;p_{T,#bar{n}} (GeV/c);Entries", kTH1F, {{100, 0., 10.}});
175+
histos.add("cexResponseP", "CEX momentum response;p_{#bar{n}}^{MC} (GeV/c);p_{p#bar{p}}^{reco} (GeV/c)", kTH2F, {{100, 0., 10.}, {100, 0., 10.}});
176+
histos.add("cexResponsePt", "CEX transverse-momentum response;p_{T,#bar{n}}^{MC} (GeV/c);p_{T,p#bar{p}}^{reco} (GeV/c)", kTH2F, {{100, 0., 10.}, {100, 0., 10.}});
177+
178+
// CEX reconstructed pair normalized to antineutron
179+
histos.add("cexn_pairtrk_p", "Reconstructed pair p / antineutron p;p_{p#bar{p}}^{reco}/p_{#bar{n}};Entries", kTH1F, {{100, 0., 2.}});
180+
histos.add("cexn_pairtrk_pt", "Reconstructed pair p_{T} / antineutron p_{T};p_{T,p#bar{p}}^{reco}/p_{T,#bar{n}};Entries", kTH1F, {{100, 0., 2.}});
181+
histos.add("cexn_pairtrk_pz", "Reconstructed pair p_{z} / antineutron p_{z};p_{z,p#bar{p}}^{reco}/p_{z,#bar{n}};Entries", kTH1F, {{100, -2., 2.}});
151182

152183
// BG pair (not from antineutron) (TRK)
153184
histos.add("cexbg_pairtrk_angle", "Background opening angle (tracks);Angle (°);Entries", kTH1F, {{180, 0., 180.}});
@@ -209,6 +240,8 @@ struct NucleiAntineutronCex {
209240
double pvtxZ = 0;
210241
for (auto const& col : cols) {
211242
const auto colId = col.globalIndex();
243+
const bool isSampleA = (colId % 2 == 0);
244+
212245
auto mcPartsThis = particles.sliceBy(perMcByColl, colId);
213246

214247
if (std::isfinite(col.posX()) && std::isfinite(col.posY()) && std::isfinite(col.posZ())) {
@@ -225,12 +258,20 @@ struct NucleiAntineutronCex {
225258
// Primary antineutrons
226259
if (particle.pdgCode() == -kNeutron && particle.isPhysicalPrimary()) {
227260
histos.fill(HIST("antin_p"), particle.p());
261+
histos.fill(HIST("antin_pt"), particle.pt());
228262
histos.fill(HIST("antin_px"), particle.px());
229263
histos.fill(HIST("antin_py"), particle.py());
230264
histos.fill(HIST("antin_pz"), particle.pz());
231265
histos.fill(HIST("antin_eta"), particle.eta());
232-
if (std::abs(particle.eta()) < kAccMaxEta && std::abs(particle.vz()) < kAccMaxVz)
266+
if (std::abs(particle.eta()) < kAccMaxEta && std::abs(particle.vz()) < kAccMaxVz) {
233267
histos.fill(HIST("antin_p_ITScuts"), particle.p());
268+
histos.fill(HIST("antin_pt_ITScuts"), particle.pt());
269+
}
270+
if (isSampleA) {
271+
histos.fill(HIST("antin_pt_closureA"), particle.pt());
272+
} else {
273+
histos.fill(HIST("antin_pt_closureB"), particle.pt());
274+
}
234275
}
235276
// Primary neutrons
236277
if (particle.pdgCode() == kNeutron && particle.isPhysicalPrimary()) {
@@ -509,6 +550,13 @@ struct NucleiAntineutronCex {
509550
histos.fill(HIST("cex_pairmc_angle"), mcangleDeg);
510551
histos.fill(HIST("cex_pairmc_vtx"), antipVx, antipVy);
511552
histos.fill(HIST("cex_pairmc_vtxz"), antipVz);
553+
histos.fill(HIST("cexMotherMcP"), motherP);
554+
histos.fill(HIST("cexMotherMcPt"), motherPt);
555+
if (isSampleA) {
556+
histos.fill(HIST("cexMotherMcPt_closureA"), motherPt);
557+
} else {
558+
histos.fill(HIST("cexMotherMcPt_closureB"), motherPt);
559+
}
512560
if (std::abs(motherEta) < kStrictEta && std::abs(motherVz) < kAccMaxVz)
513561
histos.fill(HIST("cexPairMcPITScuts"), cexPairMcP);
514562
// CEX pair normalized
@@ -518,8 +566,17 @@ struct NucleiAntineutronCex {
518566
histos.fill(HIST("cexn_pairmc_pt"), cexPairMcPt / motherPt);
519567
if (motherPz != 0)
520568
histos.fill(HIST("cexn_pairmc_pz"), cexPairMcPz / motherPz);
521-
if (motherP != 0 && pion0)
522-
histos.fill(HIST("cexn_pairmc_p_pi0"), cexPairMcP / motherP);
569+
if (pion0) {
570+
if (motherP != 0.)
571+
histos.fill(HIST("cexn_pairmc_p_pi0"), cexPairMcP / motherP);
572+
if (motherPt != 0.)
573+
histos.fill(HIST("cexn_pairmc_pt_pi0"), cexPairMcPt / motherPt);
574+
} else {
575+
if (motherP != 0.)
576+
histos.fill(HIST("cexn_pairmc_p_noPi0"), cexPairMcP / motherP);
577+
if (motherPt != 0.)
578+
histos.fill(HIST("cexn_pairmc_pt_noPi0"), cexPairMcPt / motherPt);
579+
}
523580
}
524581
// BG mother
525582
if (motherPdg != -kNeutron) {
@@ -793,6 +850,34 @@ struct NucleiAntineutronCex {
793850
histos.fill(HIST("cex_pairtrkVtxfitDistToPv"), distToPrimary);
794851
histos.fill(HIST("cex_pairtrk_vtxfit_secVtxXY"), secX, secY);
795852
histos.fill(HIST("cex_pairtrk_vtxfit_secVtxZ"), secZ);
853+
histos.fill(HIST("cexMotherTrkP"), motherP);
854+
histos.fill(HIST("cexMotherTrkPt"), motherPt);
855+
// Response matrices
856+
histos.fill(HIST("cexResponseP"), motherP, cexPairTrkP);
857+
histos.fill(HIST("cexResponsePt"), motherPt, cexPairTrkPt);
858+
// Pi0 track
859+
if (pion0) {
860+
if (motherP != 0.)
861+
histos.fill(HIST("cexn_pairtrk_p_pi0"), cexPairTrkP / motherP);
862+
if (motherPt != 0.)
863+
histos.fill(HIST("cexn_pairtrk_pt_pi0"), cexPairTrkPt / motherPt);
864+
} else {
865+
if (motherP != 0.)
866+
histos.fill(HIST("cexn_pairtrk_p_noPi0"), cexPairTrkP / motherP);
867+
if (motherPt != 0.)
868+
histos.fill(HIST("cexn_pairtrk_pt_noPi0"), cexPairTrkPt / motherPt);
869+
}
870+
if (isSampleA) {
871+
histos.fill(HIST("cexMotherTrkPt_closureA"), motherPt);
872+
} else {
873+
histos.fill(HIST("cexMotherTrkPt_closureB"), motherPt);
874+
}
875+
if (motherP != 0.)
876+
histos.fill(HIST("cexn_pairtrk_p"), cexPairTrkP / motherP);
877+
if (motherPt != 0.)
878+
histos.fill(HIST("cexn_pairtrk_pt"), cexPairTrkPt / motherPt);
879+
if (motherPz != 0.)
880+
histos.fill(HIST("cexn_pairtrk_pz"), cexPairTrkPz / motherPz);
796881
} else {
797882
histos.fill(HIST("cexbg_pairtrk_p"), cexPairTrkP);
798883
histos.fill(HIST("cexbg_pairtrk_pt"), cexPairTrkPt);

0 commit comments

Comments
 (0)