@@ -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