Skip to content

Commit 3ae5278

Browse files
authored
PWGLF: Update lambda1520SpherocityAnalysis.cxx (#4606)
1 parent 65aced0 commit 3ae5278

File tree

1 file changed

+73
-27
lines changed

1 file changed

+73
-27
lines changed

PWGLF/Tasks/Resonances/lambda1520SpherocityAnalysis.cxx

Lines changed: 73 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,13 @@ struct lambdaAnalysis {
3939
Preslice<aod::Tracks> perCollision = aod::track::collisionId;
4040

4141
// Configurables.
42-
Configurable<int> nBinsPt{"nBinsPt", 100, "N bins in pT histogram"};
43-
Configurable<int> nBinsInvM{"nBinsInvM", 120, "N bins in InvMass histogram"};
42+
Configurable<int> nBinsPt{"nBinsPt", 500, "N bins in pT histogram"};
43+
Configurable<int> nBinsInvM{"nBinsInvM", 300, "N bins in InvMass histogram"};
4444
Configurable<int> nBinsSp{"nBinsSp", 120, "N bins in spherocity histogram"};
4545
Configurable<bool> doRotate{"doRotate", true, "rotated inv mass spectra"};
4646

4747
// Tracks
48-
Configurable<float> cPtMin{"cPtMin", 0.15, "Minimum Track pT"};
48+
Configurable<float> cPtMin{"cPtMin", 0.2, "Minimum Track pT"};
4949
Configurable<float> cEtaCut{"cEtaCut", 0.8, "Pseudorapidity cut"};
5050
Configurable<float> cDcaz{"cDcazMin", 1., "Minimum DCAz"};
5151
Configurable<float> cDcaxy{"cDcaxyMin", 0.1, "Minimum DCAxy"};
@@ -61,23 +61,23 @@ struct lambdaAnalysis {
6161
Configurable<float> cRejNsigmaTpc{"cRejNsigmaTpc", 3.0, "Reject tracks to improve purity of TPC PID"}; // Reject missidentified particles when tpc bands merge
6262
Configurable<float> cRejNsigmaTof{"cRejNsigmaTof", 3.0, "Reject tracks to improve purity of TOF PID"}; // Reject missidentified particles when tpc bands merge
6363
// Proton
64-
Configurable<double> cMaxTPCnSigmaProton{"cMaxTPCnSigmaProton", 3.0, "TPC nSigma cut for Proton"}; // TPC
64+
Configurable<double> cMaxTPCnSigmaProton{"cMaxTPCnSigmaProton", 4.0, "TPC nSigma cut for Proton"}; // TPC
6565
Configurable<double> cMaxTOFnSigmaProton{"cMaxTOFnSigmaProton", 3.0, "TOF nSigma cut for Proton"}; // TOF
6666
Configurable<double> nsigmaCutCombinedProton{"nsigmaCutCombinedProton", 3.0, "Combined nSigma cut for Proton"}; // Combined
67-
Configurable<std::vector<float>> protonTPCPIDp{"protonTPCPIDp", {0, 0.5, 0.7, 0.8}, "p dependent TPC cuts protons"};
68-
Configurable<std::vector<float>> protonTPCPIDcut{"protonTPCPIDcut", {5., 3.5, 2.5}, "TPC nsigma cuts protons"};
67+
Configurable<std::vector<float>> protonTPCPIDp{"protonTPCPIDp", {0.15, 0.5, 0.62, 0.72, 0.90, 1.0}, "p dependent TPC cuts protons"};
68+
Configurable<std::vector<float>> protonTPCPIDcut{"protonTPCPIDcut", {5, 3.5, 2.8, 2.5, 2}, "TPC nsigma cuts protons"};
6969
// Kaon
70-
Configurable<double> cMaxTPCnSigmaKaon{"cMaxTPCnSigmaKaon", 3.0, "TPC nSigma cut for Kaon"}; // TPC
70+
Configurable<double> cMaxTPCnSigmaKaon{"cMaxTPCnSigmaKaon", 4.0, "TPC nSigma cut for Kaon"}; // TPC
7171
Configurable<double> cMaxTOFnSigmaKaon{"cMaxTOFnSigmaKaon", 3.0, "TOF nSigma cut for Kaon"}; // TOF
7272
Configurable<double> nsigmaCutCombinedKaon{"nsigmaCutCombinedKaon", 3.0, "Combined nSigma cut for Kaon"}; // Combined
73-
Configurable<std::vector<float>> kaonTPCPIDp{"kaonTPCPIDp", {0., 0.25, 0.3, 0.45}, "pT dependent TPC cuts kaons"};
74-
Configurable<std::vector<float>> kaonTPCPIDcut{"kaonTPCPIDcut", {6, 3.5, 2.5}, "TPC nsigma cuts kaons"};
73+
Configurable<std::vector<float>> kaonTPCPIDp{"kaonTPCPIDp", {0.15, 0.3, 0.35, 0.40}, "p dependent TPC cuts kaons"};
74+
Configurable<std::vector<float>> kaonTPCPIDcut{"kaonTPCPIDcut", {5., 4., 3.}, "TPC nsigma cuts kaons"};
7575
// Event Mixing.
7676
Configurable<bool> cMixSph{"cMixSph", true, "Include Sph Bins to be mixed"};
7777
Configurable<int> cNumMixEv{"cNumMixEv", 20, "Number of Events to be mixed"};
7878
ConfigurableAxis cMixVtxBins{"cMixVtxBins", {VARIABLE_WIDTH, -10.0f, -9.f, -8.f, -7.f, -6.f, -5.f, -4.f, -3.f, -2.f, -1.f, 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f}, "Mixing bins - z-vertex"};
79-
ConfigurableAxis cMixMultBins{"cMixMultBins", {VARIABLE_WIDTH, 0.0f, 10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f, 90.0f, 100.0f, 200.0f}, "Mixing bins - multiplicity"};
80-
ConfigurableAxis cMixSphBins{"cMixSphBins", {VARIABLE_WIDTH, 0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f}, "Mixing bins - spherocity"};
79+
ConfigurableAxis cMixMultBins{"cMixMultBins", {VARIABLE_WIDTH, 0.0f, 10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f, 90.0f, 100.0f}, "Mixing bins - multiplicity"};
80+
ConfigurableAxis cMixSphBins{"cMixSphBins", {VARIABLE_WIDTH, 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1.0f}, "Mixing bins - spherocity"};
8181

8282
// Histogram Registry.
8383
HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject};
@@ -86,19 +86,21 @@ struct lambdaAnalysis {
8686
{
8787

8888
// Define Axis.
89+
const AxisSpec axisPosZ(240, -12., 12., "V_{z} (cm)");
8990
const AxisSpec axisSp(nBinsSp, 0., 1., "S_{0}");
9091
const AxisSpec axisCent(105, 0, 105, "FT0M (%)");
91-
const AxisSpec axisP_pid(200, 0., 10., "p (GeV/c)");
92-
const AxisSpec axisPt_pid(200, 0., 10., "p_{T} (GeV/c)");
92+
const AxisSpec axisP_pid(600, 0., 6., "p (GeV/c)");
93+
const AxisSpec axisPt_pid(600, 0., 6., "p_{T} (GeV/c)");
9394
const AxisSpec axisPt(nBinsPt, 0., 10., "p_{T} (GeV/c)");
9495
const AxisSpec axisEta(40, -1, 1, "#eta");
96+
const AxisSpec axisPhi(128, -0.05, 6.35, "#phi (rad)");
9597
const AxisSpec axisDCAz(500, -0.5, 0.5, {"DCA_{z} (cm)"});
9698
const AxisSpec axisDCAxy(240, -0.12, 0.12, {"DCA_{xy} (cm)"});
9799
const AxisSpec axisTPCNCls(200, 0, 200, {"TPCNCls"});
98100
const AxisSpec axisTPCNsigma(401, -10.025, 10.025, {"n#sigma^{TPC}"});
99101
const AxisSpec axisTOFNsigma(401, -10.025, 10.025, {"n#sigma^{TOF}"});
100102
const AxisSpec axisdEdx(380, 10, 200, {"#frac{dE}{dx}"});
101-
const AxisSpec axisInvM(nBinsInvM, 1.44, 2.04, {"M_{inv} (GeV/c^{2})"});
103+
const AxisSpec axisInvM(nBinsInvM, 1.425, 2.025, {"M_{inv} (GeV/#it{c}^{2})"});
102104

103105
// Create Histograms.
104106
// Event
@@ -137,20 +139,18 @@ struct lambdaAnalysis {
137139
// QA checks for protons and kaons
138140
histos.add("QAChecks/h1d_pr_pt", "p_{T}-spectra Protons", kTH1F, {axisPt_pid});
139141
histos.add("QAChecks/h1d_ka_pt", "p_{T}-spectra Kaons", kTH1F, {axisPt_pid});
140-
histos.add("QAChecks/h1d_pr_rec_pt", "Reconstructed p_{T}-spectra Protons", kTH1F, {axisPt_pid});
141-
histos.add("QAChecks/h1d_ka_rec_pt", "Recondstucted p_{T}-spectra Kaons", kTH1F, {axisPt_pid});
142-
histos.add("QAChecks/h1d_pr_gen_pt", "Generated p_{T}-spectra Protons", kTH1F, {axisPt_pid});
143-
histos.add("QAChecks/h1d_ka_gen_pt", "Generated p_{T}-spectra Kaons", kTH1F, {axisPt_pid});
144142

145143
// Analysis
146144
// Lambda Invariant Mass
147145
histos.add("Analysis/h1d_lstar_invm_US", "#Lambda(1520) M_{inv}", kTH1D, {axisInvM});
146+
histos.add("Analysis/h1d_lstar_invm_LS", "Like Signs M_{inv} p/#bar{p} K^{#mp}", kTH1D, {axisInvM});
148147
histos.add("Analysis/h1d_lstar_invm_PP", "Like Signs M_{inv} p K^{+}", kTH1D, {axisInvM});
149148
histos.add("Analysis/h1d_lstar_invm_MM", "Like Signs M_{inv} #bar{p} K^{-}", kTH1D, {axisInvM});
150149
histos.add("Analysis/h1d_lstar_invm_rot", "Rotated Spectra", kTH1D, {axisInvM});
151150
histos.add("Analysis/h1d_lstar_invm_US_mix", "Mixed Events M_{inv}", kTH1D, {axisInvM});
152151
histos.add("Analysis/h1d_lstar_invm_LS_mix", "Mixed Events M_{inv}", kTH1D, {axisInvM});
153152
histos.add("Analysis/h4d_lstar_invm_US", "THn #Lambda(1520)", kTHnSparseD, {axisInvM, axisPt, axisSp, axisCent});
153+
histos.add("Analysis/h4d_lstar_invm_LS", "THn Like Signs p/#bar{p} K^{#mp}", kTHnSparseD, {axisInvM, axisPt, axisSp, axisCent});
154154
histos.add("Analysis/h4d_lstar_invm_PP", "THn Like Signs p K^{+}", kTHnSparseD, {axisInvM, axisPt, axisSp, axisCent});
155155
histos.add("Analysis/h4d_lstar_invm_MM", "THn Like Signs #bar{p} K^{-}", kTHnSparseD, {axisInvM, axisPt, axisSp, axisCent});
156156
histos.add("Analysis/h4d_lstar_invm_rot", "THn Rotated", kTHnSparseD, {axisInvM, axisPt, axisSp, axisCent});
@@ -160,7 +160,20 @@ struct lambdaAnalysis {
160160
// MC
161161
if (doprocessMC) {
162162
histos.add("Event/h1d_rec_sph", "Reconstructed S_{0}", kTH1F, {axisSp});
163-
histos.add("Event/h1d_rec_sph_vs_cent", "Reconstructed S_{0} vs FT0M(%)", kTH2F, {axisCent, axisSp});
163+
164+
// histos.add("MCTruth/h1d_gen_sph", "Reconstructed S_{0}", kTH1F, {axisSp});
165+
histos.add("MCTruth/h1d_gen_posZ", "Generated PosZ", kTH1F, {axisPosZ});
166+
histos.add("MCTruth/h1d_ch_gen_phi", "Generated #phi distribution", kTH1F, {axisPhi});
167+
histos.add("MCTruth/h1d_pr_gen_eta", "Generated #eta Protons", kTH1F, {axisEta});
168+
histos.add("MCTruth/h1d_ka_gen_eta", "Generated #eta Kaons", kTH1F, {axisEta});
169+
170+
// QAChecks
171+
histos.add("QAChecks/h1d_pr_rec_pt", "Reconstructed p_{T}-spectra Protons", kTH1F, {axisPt_pid});
172+
histos.add("QAChecks/h1d_ka_rec_pt", "Recondstucted p_{T}-spectra Kaons", kTH1F, {axisPt_pid});
173+
histos.add("QAChecks/h1d_pr_gen_pt", "Generated p_{T}-spectra Protons", kTH1F, {axisPt_pid});
174+
histos.add("QAChecks/h1d_ka_gen_pt", "Generated p_{T}-spectra Kaons", kTH1F, {axisPt_pid});
175+
176+
// lstar
164177
histos.add("Analysis/h1d_gen_lstar", "Generated #Lambda(1520) p_{T}", kTH1D, {axisPt});
165178
histos.add("Analysis/h1d_gen_lstar_anti", "Generated #bar{#Lambda}(1520) p_{T}", kTH1D, {axisPt});
166179
histos.add("Analysis/h1d_rec_lstar", "Reconstructed #Lambda(1520) p_{T}", kTH1D, {axisPt});
@@ -244,6 +257,9 @@ struct lambdaAnalysis {
244257
tpcPIDPassed = true;
245258
}
246259
}
260+
if (tpcPIDPassed && ((tpcNsigmaPr > tpcNsigmaKa) || (tpcNsigmaPr > tpcNsigmaPi))) {
261+
tpcPIDPassed = false;
262+
}
247263
}
248264
}
249265
if (tpcPIDPassed && tofPIDPassed) {
@@ -297,6 +313,9 @@ struct lambdaAnalysis {
297313
tpcPIDPassed = true;
298314
}
299315
}
316+
if (tpcPIDPassed && ((tpcNsigmaKa > tpcNsigmaPr) || (tpcNsigmaKa > tpcNsigmaPi))) {
317+
tpcPIDPassed = false;
318+
}
300319
}
301320
}
302321
if (tpcPIDPassed && tofPIDPassed) {
@@ -407,9 +426,13 @@ struct lambdaAnalysis {
407426
}
408427
} else {
409428
if (trkPr.sign() == 1) {
429+
histos.fill(HIST("Analysis/h1d_lstar_invm_LS"), p.M());
430+
histos.fill(HIST("Analysis/h4d_lstar_invm_LS"), p.M(), p.Pt(), sph, mult);
410431
histos.fill(HIST("Analysis/h1d_lstar_invm_PP"), p.M());
411432
histos.fill(HIST("Analysis/h4d_lstar_invm_PP"), p.M(), p.Pt(), sph, mult);
412433
} else {
434+
histos.fill(HIST("Analysis/h1d_lstar_invm_LS"), p.M());
435+
histos.fill(HIST("Analysis/h4d_lstar_invm_LS"), p.M(), p.Pt(), sph, mult);
413436
histos.fill(HIST("Analysis/h1d_lstar_invm_MM"), p.M());
414437
histos.fill(HIST("Analysis/h4d_lstar_invm_MM"), p.M(), p.Pt(), sph, mult);
415438
}
@@ -485,16 +508,9 @@ struct lambdaAnalysis {
485508
histos.fill(HIST("Event/h1d_rec_sph"), collision.spherocity());
486509
fillDataHistos<false, true>(tracks, tracks, collision.spherocity(), collision.cent());
487510

488-
// get MC pT-spectra
511+
// get MC reco pT-spectra
489512
for (auto const& track : tracks) {
490513

491-
// get the generated level pT spectra of protons and kaons
492-
if (std::abs(track.pdgCode()) == 321)
493-
histos.fill(HIST("QAChecks/h1d_ka_gen_pt"), track.pt());
494-
495-
if (std::abs(track.pdgCode()) == 2212)
496-
histos.fill(HIST("QAChecks/h1d_pr_gen_pt"), track.pt());
497-
498514
// get the reconstructed level pT spectra of protons and kaons
499515
if (!selTracks(track))
500516
continue;
@@ -512,6 +528,36 @@ struct lambdaAnalysis {
512528
}
513529
PROCESS_SWITCH(lambdaAnalysis, processMC, "Process Event for MC", false);
514530

531+
void processMCTrueDaughters(aod::McCollisions::iterator const& McCollision, aod::McParticles const& McParts)
532+
{
533+
534+
// IP range selection
535+
if (std::abs(McCollision.posZ()) > 10.)
536+
return;
537+
538+
histos.fill(HIST("MCTruth/h1d_gen_posZ"), McCollision.posZ());
539+
540+
for (auto const& part : McParts) {
541+
542+
// kinematic acceptance of particles
543+
if (part.pt() < cPtMin || std::abs(part.eta()) > cEtaCut || !part.isPhysicalPrimary())
544+
continue;
545+
546+
histos.fill(HIST("MCTruth/h1d_ch_gen_phi"), part.phi());
547+
548+
if (std::abs(part.pdgCode()) == 321) {
549+
histos.fill(HIST("MCTruth/h1d_ka_gen_eta"), part.eta());
550+
histos.fill(HIST("QAChecks/h1d_ka_gen_pt"), part.pt());
551+
}
552+
553+
if (std::abs(part.pdgCode()) == 2212) {
554+
histos.fill(HIST("MCTruth/h1d_pr_gen_eta"), part.eta());
555+
histos.fill(HIST("QAChecks/h1d_pr_gen_pt"), part.pt());
556+
}
557+
}
558+
}
559+
PROCESS_SWITCH(lambdaAnalysis, processMCTrueDaughters, "Process Event for MC truth of protons and kaons", false);
560+
515561
void processMCTrue(aod::ResoMCParents const& resoParents)
516562
{
517563

0 commit comments

Comments
 (0)