diff --git a/PWGCF/TwoParticleCorrelations/Tasks/lambdaR2Correlation.cxx b/PWGCF/TwoParticleCorrelations/Tasks/lambdaR2Correlation.cxx index 7d4222a57cf..bcf8852121d 100644 --- a/PWGCF/TwoParticleCorrelations/Tasks/lambdaR2Correlation.cxx +++ b/PWGCF/TwoParticleCorrelations/Tasks/lambdaR2Correlation.cxx @@ -123,36 +123,6 @@ DECLARE_SOA_TABLE(LambdaTracks, "AOD", "LAMBDATRACKS", o2::soa::Index<>, lambdatrack::CorrFact); using LambdaTrack = LambdaTracks::iterator; -namespace kaontrack -{ -DECLARE_SOA_INDEX_COLUMN(LambdaCollision, lambdaCollision); -DECLARE_SOA_COLUMN(Pt, pt, float); -DECLARE_SOA_COLUMN(Eta, eta, float); -DECLARE_SOA_COLUMN(Phi, phi, float); -DECLARE_SOA_COLUMN(Rap, rap, float); -DECLARE_SOA_COLUMN(Px, px, float); -DECLARE_SOA_COLUMN(Py, py, float); -DECLARE_SOA_COLUMN(Pz, pz, float); -DECLARE_SOA_COLUMN(Mass, mass, float); -DECLARE_SOA_COLUMN(KaonTrackId, kaonTrackId, int64_t); -DECLARE_SOA_COLUMN(PartType, partType, int8_t); -DECLARE_SOA_COLUMN(CorrFact, corrFact, float); -} // namespace kaontrack -DECLARE_SOA_TABLE(KaonTracks, "AOD", "KAONTRACKS", o2::soa::Index<>, - kaontrack::LambdaCollisionId, - kaontrack::Pt, - kaontrack::Eta, - kaontrack::Phi, - kaontrack::Rap, - kaontrack::Px, - kaontrack::Py, - kaontrack::Pz, - kaontrack::Mass, - kaontrack::KaonTrackId, - kaontrack::PartType, - kaontrack::CorrFact); -using KaonTrack = KaonTracks::iterator; - namespace lambdatrackext { DECLARE_SOA_COLUMN(LambdaSharingDaughter, lambdaSharingDaughter, bool); @@ -166,18 +136,6 @@ DECLARE_SOA_TABLE(LambdaTracksExt, "AOD", "LAMBDATRACKSEXT", using LambdaTrackExt = LambdaTracksExt::iterator; -namespace kaontrackext -{ -DECLARE_SOA_COLUMN(KaonSharingLambdaDau, kaonSharingLambdaDau, bool); -DECLARE_SOA_COLUMN(KaonSharingLambdaDauIds, kaonSharingLambdaDauIds, std::vector); -DECLARE_SOA_COLUMN(TrueKaonFlag, trueKaonFlag, bool); -} // namespace kaontrackext -DECLARE_SOA_TABLE(KaonTracksExt, "AOD", "KAONTRACKSEXT", - kaontrackext::KaonSharingLambdaDau, - kaontrackext::KaonSharingLambdaDauIds, - kaontrackext::TrueKaonFlag); -using KaonTrackExt = KaonTracksExt::iterator; - namespace lambdamcgentrack { DECLARE_SOA_INDEX_COLUMN(LambdaMcGenCollision, lambdaMcGenCollision); @@ -197,25 +155,6 @@ DECLARE_SOA_TABLE(LambdaMcGenTracks, "AOD", "LMCGENTRACKS", o2::soa::Index<>, lambdatrack::PartType, lambdatrack::CorrFact); using LambdaMcGenTrack = LambdaMcGenTracks::iterator; - -namespace kaonmcgentrack -{ -DECLARE_SOA_INDEX_COLUMN(LambdaMcGenCollision, lambdaMcGenCollision); -} -DECLARE_SOA_TABLE(KaonMcGenTracks, "AOD", "KMCGENTRACKS", o2::soa::Index<>, - kaonmcgentrack::LambdaMcGenCollisionId, - kaontrack::Pt, - kaontrack::Eta, - kaontrack::Phi, - kaontrack::Rap, - kaontrack::Px, - kaontrack::Py, - kaontrack::Pz, - kaontrack::Mass, - kaontrack::KaonTrackId, - kaontrack::PartType, - kaontrack::CorrFact); -using KaonMcGenTrack = KaonMcGenTracks::iterator; } // namespace o2::aod enum CollisionLabels { @@ -236,15 +175,6 @@ enum LambdaLabels { kGenLambdaNoDau, }; -enum KaonLabels { - kKaonAllChargedTracks = 1, - kKaonPassKinSel, - kKaonPassGlobalSel, - kKaonPassDcaSel, - kKaonPassElRejSel, - kKaonPassAllSel -}; - enum EffCorrType { kEffCorrPtCent = 0, kEffCorrPtRapCent @@ -257,19 +187,13 @@ enum CentEstType { enum ParticleType { kLambda = 0, - kAntiLambda, - kKaonPlus, - kKaonMinus + kAntiLambda }; enum ParticlePairType { kLambdaAntiLambda = 0, kLambdaLambda, kAntiLambdaAntiLambda, - kLambdaKaonPlus, - kLambdaKaonMinus, - kAntiLambdaKaonPlus, - kAntiLambdaKaonMinus }; enum ShareDauLambda { @@ -291,10 +215,8 @@ struct LambdaTableProducer { // Table Producers Produces lambdaCollisionTable; Produces lambdaTrackTable; - Produces kaonTrackTable; Produces lambdaMCGenCollisionTable; Produces lambdaMCGenTrackTable; - Produces kaonMCGenTrackTable; // Centrality Axis ConfigurableAxis cCentBins{"cCentBins", {VARIABLE_WIDTH, 0.0f, 10.0f, 20.0f, 30.0f, 40.0f, 50.f, 60.0f, 70.0f, 80.0f, 90.0f, 100.f}, "Variable Centrality Bins"}; @@ -314,21 +236,6 @@ struct LambdaTableProducer { Configurable cTpcNsigmaCut{"cTpcNsigmaCut", 3.0, "TPC NSigma Selection Cut"}; Configurable cRemoveAmbiguousTracks{"cRemoveAmbiguousTracks", false, "Remove Ambiguous Tracks"}; - // Kaon Tracks - Configurable cKaonMinPt{"cKaonMinPt", 0.3, "Kaon Min pT"}; - Configurable cKaonMaxPt{"cKaonMaxPt", 2.4, "Kaon Max pT"}; - Configurable cKaonRapCut{"cKaonRapCut", 0.5, "Kaon |y| cut"}; - Configurable cKaonGlobalSel{"cKaonGlobalSel", true, "Global Track"}; - Configurable cKaonDcaXYCut{"cKaonDcaXYCut", 0.1, "DcaXY Cut"}; - Configurable cKaonDcaZCut{"cKaonDcaZCut", 1., "DcaZ Cut"}; - Configurable cTpcElRejCutMin{"cTpcElRejCutMin", -3., "Electron Rejection Cut Minimum"}; - Configurable cTpcElRejCutMax{"cTpcElRejCutMax", 5., "Electron Rejection Cut Maximum"}; - Configurable cKaonTpcNSigmaCut{"cKaonTpcNSigmaCut", 2, "TPC Kaon NSigma Cut"}; - Configurable cTpcRejCut{"cTpcRejCut", 3, "TPC Rej Cut"}; - Configurable cKaonTofNSigmaCut{"cKaonTofNSigmaCut", 2, "TOF Kaon NSigma Cut"}; - Configurable cTofRejCut{"cTofRejCut", 3, "TOF Rej Cut"}; - Configurable cKaonTpcPtSel{"cKaonTpcPtSel", 0.7, "Kaon TPC pT cutoff"}; - // V0s Configurable cMinDcaProtonToPV{"cMinDcaProtonToPV", 0.02, "Minimum Proton DCAr to PV"}; Configurable cMinDcaPionToPV{"cMinDcaPionToPV", 0.06, "Minimum Pion DCAr to PV"}; @@ -372,19 +279,19 @@ struct LambdaTableProducer { HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject}; // Initialize corr_factor objects - std::vector> vCorrFactStrings = {{"hEffVsPtCentLambda", "hEffVsPtCentAntiLambda", "hEffVsPtCentKaonPlus", "hEffVsPtCentKaonMinus"}, {"hEffVsPtYCentLambda", "hEffVsPtYCentAntiLambda", "hEffVsPtYCentKaonPlus", "hEffVsPtYCentKaonMinus"}}; + std::vector> vCorrFactStrings = {{"hEffVsPtCentLambda", "hEffVsPtCentAntiLambda"}, {"hEffVsPtYCentLambda", "hEffVsPtYCentAntiLambda"}}; // Store correction histograms struct CorrHist { - std::array vPtCentCorrHists{}; - std::array vPtRapCentCorrHists{}; + std::array vPtCentCorrHists{}; + std::array vPtRapCentCorrHists{}; } corrHist; // Initialize Global Variables float cent = 0.; TList* ccdbObjRecoEff = nullptr; TList* ccdbObjMatchEff = nullptr; - static constexpr auto SubDir = std::array{"QA/Lambda/", "QA/AntiLambda/", "QA/KaonPlus/", "QA/KaonMinus/"}; + static constexpr auto SubDir = std::array{"QA/Lambda/", "QA/AntiLambda/"}; void init(InitContext const&) { @@ -404,7 +311,7 @@ struct LambdaTableProducer { const AxisSpec axisV0Eta(48, -1.2, 1.2, "#eta"); const AxisSpec axisV0Phi(36, 0., TwoPI, "#phi (rad)"); - const AxisSpec axisRadius(200, 0, 200, "r(cm)"); + const AxisSpec axisRadius(5000, 0, 5, "r(cm)"); const AxisSpec axisCosPA(100, 0.99, 1.0, "cos(#theta_{PA})"); const AxisSpec axisDcaV0PV(100, 0., 0.1, "dca (cm)"); const AxisSpec axisDcaProngPV(5000, -50., 50., "dca (cm)"); @@ -414,15 +321,12 @@ struct LambdaTableProducer { const AxisSpec axisQtarm(40, 0, 0.4, "q_{T}"); const AxisSpec axisDcaLambda(100, 0., cMaxDcaV0ToPV, "Dca_{V^{0}}"); - const AxisSpec axisDcaKaon(100, -cKaonDcaXYCut, cKaonDcaXYCut, "Dca_{K}"); - const AxisSpec axisITSTPCTrackPt(100, 0, 10, "p_{T} (GeV/#it{c})"); const AxisSpec axisTrackPt(40, 0, 4, "p_{T} (GeV/#it{c})"); const AxisSpec axisTrackDCA(200, -1, 1, "dca_{XY} (cm)"); const AxisSpec axisMomPID(80, 0, 4, "p_{T} (GeV/#it{c})"); const AxisSpec axisTrackNsigma(401, -10.025, 10.025, {"n#sigma"}); const AxisSpec axisTrackdEdx(360, 20, 200, "#frac{dE}{dx}"); - const AxisSpec axisTrackTofSignal(240, 0, 1.2, "#beta"); // Create Histograms. // Event histograms @@ -432,7 +336,6 @@ struct LambdaTableProducer { // QA histos.add("Tracks/h1f_lambda_info", "Lambda selection info", kTH1F, {axisTrks}); - histos.add("Tracks/h1f_kaon_info", "Kaon selection info", kTH1F, {axisTrks}); histos.add("Tracks/h1f_effcorr_info", "Efficiency correction info", kTH1F, {axisEffChecks}); histos.add("Tracks/h2f_armpod_before_sel", "Armentros-Podolanski Plot", kTH2F, {axisAlpha, axisQtarm}); histos.add("Tracks/h2f_armpod_after_sel", "Armentros-Podolanski Plot", kTH2F, {axisAlpha, axisQtarm}); @@ -458,13 +361,6 @@ struct LambdaTableProducer { // Dca analysis histogram histos.add("QA/Lambda/DCA/h3f_Dca_vs_pT_cent", "DCA", kTH3F, {axisCent, axisV0Pt, axisDcaLambda}); - histos.add("QA/KaonPlus/DCA/h3f_Dca_vs_pT_cent", "DCA", kTH3F, {axisCent, axisV0Pt, axisDcaKaon}); - - // QA Kaons - histos.add("QA/KaonPlus/hdEdX", "dE/dx vs pT", kTH2F, {axisMomPID, axisTrackdEdx}); - histos.add("QA/KaonPlus/hTOFSignal", "#beta_{TOF} vs p_{T}", kTH2F, {axisMomPID, axisTrackTofSignal}); - histos.add("QA/KaonPlus/hTPCNSigma", "n#sigma_{TPC} vs p_{T}", kTH2F, {axisMomPID, axisTrackNsigma}); - histos.add("QA/KaonPlus/hTOFNSigma", "n#sigma_{TOF} vs p_{T}", kTH2F, {axisMomPID, axisTrackNsigma}); // MC Generated Histograms if (doprocessMCRecoGen || doprocessMCReco) { @@ -472,9 +368,6 @@ struct LambdaTableProducer { histos.add("QA/Lambda/DCA/h3f_Prm_Dca_vs_pT_cent", "Primary DCA", kTH3F, {axisCent, axisV0Pt, axisDcaLambda}); histos.add("QA/Lambda/DCA/h3f_Scd_Dca_vs_pT_cent", "Weak Decay DCA", kTH3F, {axisCent, axisV0Pt, axisDcaLambda}); histos.add("QA/Lambda/DCA/h3f_Mat_Dca_vs_pT_cent", "Material DCA", kTH3F, {axisCent, axisV0Pt, axisDcaLambda}); - histos.add("QA/KaonPlus/DCA/h3f_Prm_Dca_vs_pT_cent", "Primary DCA", kTH3F, {axisCent, axisV0Pt, axisDcaKaon}); - histos.add("QA/KaonPlus/DCA/h3f_Scd_Dca_vs_pT_cent", "Weak Decay DCA", kTH3F, {axisCent, axisV0Pt, axisDcaKaon}); - histos.add("QA/KaonPlus/DCA/h3f_Mat_Dca_vs_pT_cent", "Material DCA", kTH3F, {axisCent, axisV0Pt, axisDcaKaon}); // McGen Histos histos.add("McGen/h1f_collision_recgen", "# of Reco Collision Associated to One Mc Generator Collision", kTH1F, {axisMult}); @@ -497,9 +390,6 @@ struct LambdaTableProducer { // QA Anti-Lambda histos.addClone("QA/Lambda/", "QA/AntiLambda/"); - // QA KaonMinus - histos.addClone("QA/KaonPlus/", "QA/KaonMinus/"); - // Set bin labels histos.get(HIST("Events/h1f_collisions_info"))->GetXaxis()->SetBinLabel(CollisionLabels::kTotCol, "kTotCol"); histos.get(HIST("Events/h1f_collisions_info"))->GetXaxis()->SetBinLabel(CollisionLabels::kPassSelCol, "kPassSelCol"); @@ -509,12 +399,6 @@ struct LambdaTableProducer { histos.get(HIST("Tracks/h1f_lambda_info"))->GetXaxis()->SetBinLabel(LambdaLabels::kPassV0KinCuts, "kPassV0KinCuts"); histos.get(HIST("Tracks/h1f_lambda_info"))->GetXaxis()->SetBinLabel(LambdaLabels::kPassV0TopoSel, "kPassV0TopoSel"); histos.get(HIST("Tracks/h1f_lambda_info"))->GetXaxis()->SetBinLabel(LambdaLabels::kAllSelPassed, "kAllSelPassed"); - histos.get(HIST("Tracks/h1f_kaon_info"))->GetXaxis()->SetBinLabel(KaonLabels::kKaonAllChargedTracks, "kKaonAllChargedTracks"); - histos.get(HIST("Tracks/h1f_kaon_info"))->GetXaxis()->SetBinLabel(KaonLabels::kKaonPassKinSel, "kKaonPassKinSel"); - histos.get(HIST("Tracks/h1f_kaon_info"))->GetXaxis()->SetBinLabel(KaonLabels::kKaonPassGlobalSel, "kKaonPassGlobalSel"); - histos.get(HIST("Tracks/h1f_kaon_info"))->GetXaxis()->SetBinLabel(KaonLabels::kKaonPassDcaSel, "kKaonPassDcaSel"); - histos.get(HIST("Tracks/h1f_kaon_info"))->GetXaxis()->SetBinLabel(KaonLabels::kKaonPassElRejSel, "kKaonPassElRejSel"); - histos.get(HIST("Tracks/h1f_kaon_info"))->GetXaxis()->SetBinLabel(KaonLabels::kKaonPassAllSel, "kKaonPassAllSel"); // Load correction factor if (cGetCorrectionFlag) { @@ -751,53 +635,6 @@ struct LambdaTableProducer { return true; } - template - bool selKaonTrack(T const& track, float const& rap) - { - // Kinematic selection - if (track.pt() <= cKaonMinPt || track.pt() >= cKaonMaxPt || std::abs(rap) >= cKaonRapCut) { - return false; - } - - histos.fill(HIST("Tracks/h1f_kaon_info"), kKaonPassKinSel); - - // Global track selection - if (cKaonGlobalSel && !track.isGlobalTrackWoDCA()) { - return false; - } - - histos.fill(HIST("Tracks/h1f_kaon_info"), kKaonPassGlobalSel); - - // Dca selection - if (std::abs(track.dcaXY()) >= cKaonDcaXYCut || std::abs(track.dcaZ()) >= cKaonDcaZCut) { - return false; - } - - histos.fill(HIST("Tracks/h1f_kaon_info"), kKaonPassDcaSel); - - // Electron rejection - if (std::abs(track.tpcNSigmaPi()) > cTpcRejCut && std::abs(track.tpcNSigmaKa()) > cTpcRejCut && std::abs(track.tpcNSigmaPr()) > cTpcRejCut && track.tpcNSigmaEl() > cTpcElRejCutMin && track.tpcNSigmaEl() < cTpcElRejCutMax) { - return false; - } - - histos.fill(HIST("Tracks/h1f_kaon_info"), kKaonPassElRejSel); - - // Kaon PID TPC + TOF - if (track.hasTOF()) { - if (std::abs(track.tofNSigmaKa()) >= cKaonTofNSigmaCut || std::abs(track.tofNSigmaPi()) < cTofRejCut || std::abs(track.tofNSigmaPr()) < cTofRejCut || std::abs(track.tpcNSigmaKa()) >= cKaonTpcNSigmaCut) { - return false; - } - } else { - if (track.pt() >= cKaonTpcPtSel || std::abs(track.tpcNSigmaKa()) >= cKaonTpcNSigmaCut || std::abs(track.tpcNSigmaPi()) < cTpcRejCut || std::abs(track.tpcNSigmaPr()) < cTpcRejCut) { - return false; - } - } - - histos.fill(HIST("Tracks/h1f_kaon_info"), kKaonPassAllSel); - - return true; - } - // Correction factors template float getCorrectionFactors(V const& v, float const& rap) @@ -851,18 +688,6 @@ struct LambdaTableProducer { histos.fill(HIST(SubDir[part]) + HIST("h2f_neg_prong_tpc_nsigma_pi_vs_p"), negtrack.tpcInnerParam(), negtrack.tpcNSigmaPi()); } - // Kaon QA - template - void fillKaonQA(T const& track) - { - histos.fill(HIST(SubDir[part]) + HIST("hdEdX"), track.pt(), track.tpcSignal()); - histos.fill(HIST(SubDir[part]) + HIST("hTPCNSigma"), track.pt(), track.tpcNSigmaKa()); - if (track.hasTOF()) { - histos.fill(HIST(SubDir[part]) + HIST("hTOFSignal"), track.pt(), track.beta()); - histos.fill(HIST(SubDir[part]) + HIST("hTOFNSigma"), track.pt(), track.tofNSigmaKa()); - } - } - // Dca analysis template void getDcaHist(T const& track, float const& dca) @@ -973,61 +798,6 @@ struct LambdaTableProducer { v0.template posTrack_as().index(), v0.template negTrack_as().index(), posTrackKin, negTrackKin, (int8_t)partType, lambdaCorrFact); } - - // Loop over tracks to select Kaon - float kaonCorrFact = 1.; - for (auto const& track : tracks) { - // Check corresponding MC particle - if constexpr (dmc == kMC) { - if (!track.has_mcParticle()) { - continue; - } - } - - // All charged tracks - histos.fill(HIST("Tracks/h1f_kaon_info"), kKaonAllChargedTracks); - - // Kaon rapidity - std::array mom = {track.px(), track.py(), track.pz()}; - float rap = RecoDecay::y(mom, MassKPlus); - if (!selKaonTrack(track, rap)) { // Kaon selection - continue; - } - - // MC matching - if constexpr (dmc == kMC) { - auto mcpart = track.mcParticle(); - if (cSelPrimaryParticle && !mcpart.isPhysicalPrimary()) { // Primary kaon selection - continue; - } - - if (cSelTrueParticle && std::abs(mcpart.pdgCode()) != kKPlus) { // True kaon selection - continue; - } - } - - // K+ / K- - if (track.sign() >= 0) { - getDcaHist(track, track.dcaXY()); - fillKaonQA(track); - partType = kKaonPlus; - } else if (track.sign() <= 0) { - getDcaHist(track, track.dcaXY()); - fillKaonQA(track); - partType = kKaonMinus; - } else { - continue; - } - - // Get Kaon correction factor - if (cGetCorrectionFlag) { - kaonCorrFact = (partType == kKaonPlus) ? getCorrectionFactors(track, rap) : getCorrectionFactors(track, rap); - } - - // Fill table - kaonTrackTable(lambdaCollisionTable.lastIndex(), track.pt(), track.eta(), track.phi(), rap, track.px(), track.py(), track.pz(), MassKaonCharged, - track.globalIndex(), (int8_t)partType, kaonCorrFact); - } } // MC Generater Level Tables @@ -1042,65 +812,46 @@ struct LambdaTableProducer { // Loop over MC particles for (auto const& mcpart : mcParticles) { - // Check for Primary Lambda/Anti-Lambda/K+/K- + // Check for Primary Lambda/Anti-Lambda if (mcpart.isPhysicalPrimary() && mcpart.pdgCode() == kLambda0) { partType = kLambda; } else if (mcpart.isPhysicalPrimary() && mcpart.pdgCode() == kLambda0Bar) { partType = kAntiLambda; - } else if (mcpart.isPhysicalPrimary() && mcpart.pdgCode() == kKPlus) { - partType = kKaonPlus; - } else if (mcpart.isPhysicalPrimary() && mcpart.pdgCode() == kKMinus) { - partType = kKaonMinus; } else { continue; } - // Fill Lambda Table - if (partType == kLambda || partType == kAntiLambda) { - // Kinematic selection - if (mcpart.pt() <= cLambdaMinPt || mcpart.pt() >= cLambdaMaxPt || std::abs(mcpart.y()) >= cLambdaRapCut) { - continue; - } + // Kinematic selection + if (mcpart.pt() <= cLambdaMinPt || mcpart.pt() >= cLambdaMaxPt || std::abs(mcpart.y()) >= cLambdaRapCut) { + continue; + } - histos.fill(HIST("Tracks/h1f_lambda_info"), kGenTotAccLambda); + histos.fill(HIST("Tracks/h1f_lambda_info"), kGenTotAccLambda); - // get daughter track info and check for decay channel flag - if (!mcpart.has_daughters()) { - histos.fill(HIST("Tracks/h1f_lambda_info"), kGenLambdaNoDau); - continue; - } - auto dautracks = mcpart.template daughters_as(); - std::vector daughterPDGs, daughterIDs; - for (auto const& dautrack : dautracks) { - daughterPDGs.push_back(dautrack.pdgCode()); - daughterIDs.push_back(dautrack.globalIndex()); - } - - if (partType == kLambda) { - histos.fill(HIST("McGen/h1f_lambda_daughter_PDG"), daughterPDGs[0]); - histos.fill(HIST("McGen/h1f_lambda_daughter_PDG"), daughterPDGs[1]); - histos.fill(HIST("McGen/h1f_lambda_daughter_PDG"), mcpart.pdgCode()); - } else { - histos.fill(HIST("McGen/h1f_antilambda_daughter_PDG"), daughterPDGs[0]); - histos.fill(HIST("McGen/h1f_antilambda_daughter_PDG"), daughterPDGs[1]); - histos.fill(HIST("McGen/h1f_antilambda_daughter_PDG"), mcpart.pdgCode()); - } - // Fill table - lambdaMCGenTrackTable(lambdaMCGenCollisionTable.lastIndex(), mcpart.pt(), mcpart.eta(), mcpart.phi(), mcpart.y(), mcpart.px(), mcpart.py(), mcpart.pz(), RecoDecay::m(mcpart.p(), mcpart.e()), - daughterIDs[0], daughterIDs[1], (int8_t)partType, 1.); + // get daughter track info and check for decay channel flag + if (!mcpart.has_daughters()) { + histos.fill(HIST("Tracks/h1f_lambda_info"), kGenLambdaNoDau); + continue; + } + auto dautracks = mcpart.template daughters_as(); + std::vector daughterPDGs, daughterIDs; + for (auto const& dautrack : dautracks) { + daughterPDGs.push_back(dautrack.pdgCode()); + daughterIDs.push_back(dautrack.globalIndex()); } - // Fill Kaon Table - if (partType == kKaonPlus || partType == kKaonMinus) { - // Kinematic selection - if (mcpart.pt() <= cKaonMinPt || mcpart.pt() >= cKaonMaxPt || std::abs(mcpart.y()) >= cKaonRapCut) { - continue; - } - - // Fill table - kaonMCGenTrackTable(lambdaMCGenCollisionTable.lastIndex(), mcpart.pt(), mcpart.eta(), mcpart.phi(), mcpart.y(), mcpart.px(), mcpart.py(), mcpart.pz(), RecoDecay::m(mcpart.p(), mcpart.e()), - mcpart.globalIndex(), (int8_t)partType, 1.); + if (partType == kLambda) { + histos.fill(HIST("McGen/h1f_lambda_daughter_PDG"), daughterPDGs[0]); + histos.fill(HIST("McGen/h1f_lambda_daughter_PDG"), daughterPDGs[1]); + histos.fill(HIST("McGen/h1f_lambda_daughter_PDG"), mcpart.pdgCode()); + } else { + histos.fill(HIST("McGen/h1f_antilambda_daughter_PDG"), daughterPDGs[0]); + histos.fill(HIST("McGen/h1f_antilambda_daughter_PDG"), daughterPDGs[1]); + histos.fill(HIST("McGen/h1f_antilambda_daughter_PDG"), mcpart.pdgCode()); } + // Fill table + lambdaMCGenTrackTable(lambdaMCGenCollisionTable.lastIndex(), mcpart.pt(), mcpart.eta(), mcpart.phi(), mcpart.y(), mcpart.px(), mcpart.py(), mcpart.pz(), RecoDecay::m(mcpart.p(), mcpart.e()), + daughterIDs[0], daughterIDs[1], (int8_t)partType, 1.); } } @@ -1177,13 +928,10 @@ struct LambdaTableProducer { struct LambdaTracksExtProducer { // Tables Produces lambdaTrackExtTable; - Produces kaonTrackExtTable; // Configurables Configurable cAcceptAllLambda{"cAcceptAllLambda", false, "Accept all Lambda"}; Configurable cRejAllLambdaShaDau{"cRejAllLambdaShaDau", true, "Reject all Lambda sharing daughters"}; - Configurable cAcceptAllKaon{"cAcceptAllKaon", false, "Accept all Kaons"}; - Configurable cRejAllKaonShaLaDau{"cRejAllKaonShaLaDau", true, "Reject all Kaons sharing Lambda daughters"}; // Histogram Registry. HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject}; @@ -1200,20 +948,9 @@ struct LambdaTracksExtProducer { histos.add("h1i_totantilambda_mult", "Multiplicity", kTH1I, {axisMult}); histos.add("h1i_lambda_mult", "Multiplicity", kTH1I, {axisMult}); histos.add("h1i_antilambda_mult", "Multiplicity", kTH1I, {axisMult}); - - histos.add("h1i_totkaplus_mult", "Multiplicity", kTH1I, {axisMult}); - histos.add("h1i_totkaminus_mult", "Multiplicity", kTH1I, {axisMult}); - histos.add("h1i_kaplus_mult", "Multiplicity", kTH1I, {axisMult}); - histos.add("h1i_kaminus_mult", "Multiplicity", kTH1I, {axisMult}); - histos.add("h2d_n2_etaphi_LaP_LaM", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi}); histos.add("h2d_n2_etaphi_LaP_LaP", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi}); histos.add("h2d_n2_etaphi_LaM_LaM", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi}); - - histos.add("h2d_n2_etaphi_KaPLaP", "#rho_{2}", kTH2D, {axisDEta, axisDPhi}); - histos.add("h2d_n2_etaphi_KaPLaM", "#rho_{2}", kTH2D, {axisDEta, axisDPhi}); - histos.add("h2d_n2_etaphi_KaMLaP", "#rho_{2}", kTH2D, {axisDEta, axisDPhi}); - histos.add("h2d_n2_etaphi_KaMLaM", "#rho_{2}", kTH2D, {axisDEta, axisDPhi}); } void processDummy(aod::LambdaCollisions::iterator const&) {} @@ -1291,75 +1028,6 @@ struct LambdaTracksExtProducer { } PROCESS_SWITCH(LambdaTracksExtProducer, processLambdaTrackExt, "Process for lambda track extension", false); - - void processKaonTrackExt(aod::LambdaCollisions::iterator const&, aod::LambdaTracks const& lambdaTracks, aod::KaonTracks const& kaonTracks) - { - int nTotKaonPlus = 0, nTotKaonMinus = 0, nSelKaonPlus = 0, nSelKaonMinus = 0; - - for (auto const& kaonTrack : kaonTracks) { - bool kaonSharingLambdaDauFlag = false, trueKaonFlag = false; - std::vector vKaonShareDauLambdaIndex; - - if (kaonTrack.partType() == kKaonPlus) { - ++nTotKaonPlus; - } else if (kaonTrack.partType() == kKaonMinus) { - ++nTotKaonMinus; - } - - for (auto const& lambdaTrack : lambdaTracks) { - // Removal based on shared track index - if (kaonTrack.kaonTrackId() == lambdaTrack.posTrackId() || kaonTrack.kaonTrackId() == lambdaTrack.negTrackId()) { - vKaonShareDauLambdaIndex.push_back(kaonTrack.kaonTrackId()); - kaonSharingLambdaDauFlag = true; - - // Fill Deta-Dphi Histogram - if (kaonTrack.partType() == kKaonPlus && lambdaTrack.partType() == kLambda) { - histos.fill(HIST("h2d_n2_etaphi_KaPLaP"), kaonTrack.eta() - lambdaTrack.eta(), RecoDecay::constrainAngle(kaonTrack.phi() - lambdaTrack.phi(), -PIHalf)); - } else if (kaonTrack.partType() == kKaonPlus && lambdaTrack.partType() == kAntiLambda) { - histos.fill(HIST("h2d_n2_etaphi_KaPLaM"), kaonTrack.eta() - lambdaTrack.eta(), RecoDecay::constrainAngle(kaonTrack.phi() - lambdaTrack.phi(), -PIHalf)); - } else if (kaonTrack.partType() == kKaonMinus && lambdaTrack.partType() == kLambda) { - histos.fill(HIST("h2d_n2_etaphi_KaMLaP"), kaonTrack.eta() - lambdaTrack.eta(), RecoDecay::constrainAngle(kaonTrack.phi() - lambdaTrack.phi(), -PIHalf)); - } else if (kaonTrack.partType() == kKaonMinus && lambdaTrack.partType() == kAntiLambda) { - histos.fill(HIST("h2d_n2_etaphi_KaMLaM"), kaonTrack.eta() - lambdaTrack.eta(), RecoDecay::constrainAngle(kaonTrack.phi() - lambdaTrack.phi(), -PIHalf)); - } - } - } - - // Accept / Reject - trueKaonFlag = cAcceptAllKaon || (cRejAllKaonShaLaDau && !kaonSharingLambdaDauFlag); - - // Multiplicity of selected kaons - if (trueKaonFlag) { - if (kaonTrack.partType() == kKaonPlus) { - ++nSelKaonPlus; - } else if (kaonTrack.partType() == kKaonMinus) { - ++nSelKaonMinus; - } - } - - // Fill LambdaTrackExt table - kaonTrackExtTable(kaonSharingLambdaDauFlag, vKaonShareDauLambdaIndex, trueKaonFlag); - } - - // Fill multiplicity histograms - if (nTotKaonPlus != 0) { - histos.fill(HIST("h1i_totkaplus_mult"), nTotKaonPlus); - } - - if (nTotKaonMinus != 0) { - histos.fill(HIST("h1i_totkaminus_mult"), nTotKaonMinus); - } - - if (nSelKaonPlus != 0) { - histos.fill(HIST("h1i_kaplus_mult"), nSelKaonPlus); - } - - if (nSelKaonMinus != 0) { - histos.fill(HIST("h1i_kaminus_mult"), nSelKaonMinus); - } - } - - PROCESS_SWITCH(LambdaTracksExtProducer, processKaonTrackExt, "Process for kaon track extension", false); }; struct LambdaR2Correlation { @@ -1367,9 +1035,6 @@ struct LambdaR2Correlation { Configurable cLambdaNPtBins{"cLambdaNPtBins", 34, "N pT Bins"}; Configurable cLambdaPtMin{"cLambdaPtMin", 0.7, "Lambda pT Min"}; Configurable cLambdaPtMax{"cLambdaPtMax", 3.4, "Lambda pT Max"}; - Configurable cKaonNPtBins{"cKaonNPtBins", 20, "N pT Bins"}; - Configurable cKaonPtMin{"cKaonPtMin", 0.3, "Kaon pT Min"}; - Configurable cKaonPtMax{"cKaonPtMax", 2.2, "Kaon pT Max"}; Configurable cNRapBins{"cNRapBins", 10, "N Rapidity Bins"}; Configurable cMinRap{"cMinRap", -0.5, "Minimum Rapidity"}; @@ -1382,7 +1047,7 @@ struct LambdaR2Correlation { // Lambda Kaon femtoscopic correction Configurable cApplyFemtoSel{"cApplyFemtoSel", false, "Femto qinv selection"}; - Configurable cFemtoCut{"cFemtoCut", 0.1, "Kaon--Lambda Femto qinv cut"}; + Configurable cFemtoCut{"cFemtoCut", 0.1, "Femto qinv cut"}; // Lambda Kaon two-track cuts Configurable cApplyTwoTrackCut{"cApplyTwoTrackCut", false, "Flag for two track cut"}; @@ -1434,8 +1099,6 @@ struct LambdaR2Correlation { const AxisSpec axisDPhi(640, -PIHalf, 3. * PIHalf, "#Delta#varphi"); const AxisSpec axisMass(100, 1.06, 1.16, "M_{#Lambda} (GeV/#it{c}^{2})"); const AxisSpec axisPtLambda(cLambdaNPtBins, cLambdaPtMin, cLambdaPtMax, "p_{T} (GeV/#it{c})"); - const AxisSpec axisPtKaon(cKaonNPtBins, cKaonPtMin, cKaonPtMax, "p_{T} (GeV/#it{c})"); - const AxisSpec axisEta(cNRapBins, cMinRap, cMaxRap, "#eta"); const AxisSpec axisRap(cNRapBins, cMinRap, cMaxRap, "y"); const AxisSpec axisPhi(cNPhiBins, 0., TwoPI, "#varphi (rad)"); const AxisSpec axisRapPhi(knrapphibins, kminrapphi, kmaxrapphi, "y #varphi"); @@ -1444,7 +1107,6 @@ struct LambdaR2Correlation { // Event histos.add("Event/Reco/h1f_collision_posz", "V_{Z} Distribution", kTH1F, {axisPosZ}); histos.add("Event/Reco/h1f_ft0m_mult_percentile", "FT0M (%)", kTH1F, {axisCent}); - histos.add("Event/Reco/h2f_Mult_vs_Centrality", "N_{ch} vs FT0M(%)", kTProfile, {axisCent}); // Two track cut histos.add("QA/TwoTrackCut/Before/h2d_n2_detadphi", "#rho_{2}", kTH2D, {axisDEta, axisDPhi}); @@ -1457,16 +1119,10 @@ struct LambdaR2Correlation { if (cAnaEff) { histos.add("Reco/Efficiency/h2f_n1_centpt_LaP", "#rho_{1}^{#Lambda}", kTH2F, {axisCent, axisPtLambda}); histos.add("Reco/Efficiency/h2f_n1_centpt_LaM", "#rho_{1}^{#bar{#Lambda}}", kTH2F, {axisCent, axisPtLambda}); - histos.add("Reco/Efficiency/h2f_n1_centpt_KaP", "#rho_{1}^{K^{#plus}}", kTH2F, {axisCent, axisPtKaon}); - histos.add("Reco/Efficiency/h2f_n1_centpt_KaM", "#rho_{1}^{K^{#minus}}", kTH2F, {axisCent, axisPtKaon}); histos.add("Reco/Efficiency/h3f_n1_centptrap_LaP", "#rho_{1}^{#Lambda}", kTH3F, {axisCent, axisPtLambda, axisRap}); histos.add("Reco/Efficiency/h3f_n1_centptrap_LaM", "#rho_{1}^{#bar{#Lambda}}", kTH3F, {axisCent, axisPtLambda, axisRap}); - histos.add("Reco/Efficiency/h3f_n1_centptrap_KaP", "#rho_{1}^{K^{#plus}}", kTH3F, {axisCent, axisPtKaon, axisRap}); - histos.add("Reco/Efficiency/h3f_n1_centptrap_KaM", "#rho_{1}^{K^{#minus}}", kTH3F, {axisCent, axisPtKaon, axisRap}); histos.add("Reco/Efficiency/h4f_n1_centvzptrap_LaP", "#rho_{1}^{#Lambda}", kTHnSparseF, {axisCent, axisVz, axisPtLambda, axisRap}); histos.add("Reco/Efficiency/h4f_n1_centvzptrap_LaM", "#rho_{1}^{#bar{#Lambda}}", kTHnSparseF, {axisCent, axisVz, axisPtLambda, axisRap}); - histos.add("Reco/Efficiency/h4f_n1_centvzptrap_KaP", "#rho_{1}^{K^{#plus}}", kTHnSparseF, {axisCent, axisVz, axisPtKaon, axisRap}); - histos.add("Reco/Efficiency/h4f_n1_centvzptrap_KaM", "#rho_{1}^{K^{#minus}}", kTHnSparseF, {axisCent, axisVz, axisPtKaon, axisRap}); } // Single and Two Particle Densities @@ -1475,24 +1131,16 @@ struct LambdaR2Correlation { histos.add("Reco/h3f_n1_centptmass_LaM", "#rho_{1}^{#bar{#Lambda}}", kTH3F, {axisCent, axisPtLambda, axisMass}); histos.add("Reco/h3f_n1_centptrap_LaP", "#rho_{1}^{#Lambda}", kTH3F, {axisCent, axisPtLambda, axisRap}); histos.add("Reco/h3f_n1_centptrap_LaM", "#rho_{1}^{#bar{#Lambda}}", kTH3F, {axisCent, axisPtLambda, axisRap}); - histos.add("Reco/h3f_n1_centptrap_KaP", "#rho_{1}^{K^{#plus}}", kTH3F, {axisCent, axisPtKaon, axisRap}); - histos.add("Reco/h3f_n1_centptrap_KaM", "#rho_{1}^{K^{#minus}}", kTH3F, {axisCent, axisPtKaon, axisRap}); // rho1 for R2 RapPhi histos.add("Reco/h3f_n1_rapphi_LaP", "#rho_{1}^{#Lambda}", kTH3F, {axisCent, axisRap, axisPhi}); histos.add("Reco/h3f_n1_rapphi_LaM", "#rho_{1}^{#bar{#Lambda}}", kTH3F, {axisCent, axisRap, axisPhi}); - histos.add("Reco/h3f_n1_rapphi_KaP", "#rho_{1}^{K^{#plus}}", kTH3F, {axisCent, axisRap, axisPhi}); - histos.add("Reco/h3f_n1_rapphi_KaM", "#rho_{1}^{K^{#minus}}", kTH3F, {axisCent, axisRap, axisPhi}); if (cAnaPairs) { // rho2 for R2 Rap1Phi1Rap2Phi2 histos.add("Reco/h3f_n2_rapphi_LaP_LaM", "#rho_{2}^{#Lambda#bar{#Lambda}}", kTH3F, {axisCent, axisRapPhi, axisRapPhi}); histos.add("Reco/h3f_n2_rapphi_LaP_LaP", "#rho_{2}^{#Lambda#Lambda}", kTH3F, {axisCent, axisRapPhi, axisRapPhi}); histos.add("Reco/h3f_n2_rapphi_LaM_LaM", "#rho_{2}^{#bar{#Lambda}#bar{#Lambda}}", kTH3F, {axisCent, axisRapPhi, axisRapPhi}); - histos.add("Reco/h3f_n2_rapphi_LaP_KaM", "#rho_{2}^{#LambdaK^{#minus}}", kTH3F, {axisCent, axisRapPhi, axisRapPhi}); - histos.add("Reco/h3f_n2_rapphi_LaP_KaP", "#rho_{2}^{#LambdaK^{#plus}}", kTH3F, {axisCent, axisRapPhi, axisRapPhi}); - histos.add("Reco/h3f_n2_rapphi_LaM_KaM", "#rho_{2}^{#bar{#Lambda}K^{#plus}}", kTH3F, {axisCent, axisRapPhi, axisRapPhi}); - histos.add("Reco/h3f_n2_rapphi_LaM_KaP", "#rho_{2}^{#bar{#Lambda}K^{#minus}}", kTH3F, {axisCent, axisRapPhi, axisRapPhi}); } // MCGen @@ -1531,29 +1179,24 @@ struct LambdaR2Correlation { return (std::abs(deta) < cDEtaCut && std::abs(dphistar) < cDPhiStarCut); } - template - bool isClosePair(V const& lambda, T const& track) + template + bool isClosePair(V const& l1, V const& l2) { // Before - histos.fill(HIST("QA/TwoTrackCut/Before/h2d_n2_detadphi"), track.eta() - lambda.eta(), RecoDecay::constrainAngle(track.phi() - lambda.phi(), -PIHalf)); - - // Close pair flag - bool retFlag = false; + histos.fill(HIST("QA/TwoTrackCut/Before/h2d_n2_detadphi"), l1.eta() - l2.eta(), RecoDecay::constrainAngle(l1.phi() - l2.phi(), -PIHalf)); // Assign kinematics - std::array trackKin = {track.pt(), track.eta(), track.phi()}; - std::array lambdaPosTrackKin = {lambda.posTrackKin()[0], lambda.posTrackKin()[1], lambda.posTrackKin()[2]}; - std::array lambdaNegTrackKin = {lambda.negTrackKin()[0], lambda.negTrackKin()[1], lambda.negTrackKin()[2]}; - - if (track.partType() == kKaonPlus) { - retFlag = checkClosePair(trackKin, lambdaPosTrackKin, 1, 1) || checkClosePair(trackKin, lambdaNegTrackKin, 1, -1); - } else if (track.partType() == kKaonMinus) { - retFlag = checkClosePair(trackKin, lambdaPosTrackKin, -1, 1) || checkClosePair(trackKin, lambdaNegTrackKin, -1, -1); - } + std::array posTrackKinLambda1 = {l1.posTrackKin()[0], l1.posTrackKin()[1], l1.posTrackKin()[2]}; + std::array negTrackKinLambda1 = {l1.negTrackKin()[0], l1.negTrackKin()[1], l1.negTrackKin()[2]}; + std::array posTrackKinLambda2 = {l2.posTrackKin()[0], l2.posTrackKin()[1], l2.posTrackKin()[2]}; + std::array negTrackKinLambda2 = {l2.negTrackKin()[0], l2.negTrackKin()[1], l2.negTrackKin()[2]}; + + // Check close pair + bool retFlag = checkClosePair(posTrackKinLambda1, posTrackKinLambda2, 1, 1) && checkClosePair(negTrackKinLambda1, negTrackKinLambda2, -1, -1); // Fill QA if (!retFlag) { // Pair accept - histos.fill(HIST("QA/TwoTrackCut/After/h2d_n2_detadphi"), track.eta() - lambda.eta(), RecoDecay::constrainAngle(track.phi() - lambda.phi(), -PIHalf)); + histos.fill(HIST("QA/TwoTrackCut/After/h2d_n2_detadphi"), l1.eta() - l2.eta(), RecoDecay::constrainAngle(l1.phi() - l2.phi(), -PIHalf)); } // Pair reject @@ -1585,7 +1228,7 @@ struct LambdaR2Correlation { void fillPairHistos(T1& p1, T2& p2) { static constexpr auto SubDirRecGen = std::array{"Reco/", "McGen/"}; - static constexpr auto SubDirHist = std::array{"LaP_LaM", "LaP_LaP", "LaM_LaM", "LaP_KaP", "LaP_KaM", "LaM_KaP", "LaM_KaM", "KaP_KaM", "KaP_KaP", "KaM_KaM"}; + static constexpr auto SubDirHist = std::array{"LaP_LaM", "LaP_LaP", "LaM_LaM"}; const auto rapbin1 = static_cast((p1.rap() - kminrap) / rapbinwidth); const auto rapbin2 = static_cast((p2.rap() - kminrap) / rapbinwidth); @@ -1608,7 +1251,7 @@ struct LambdaR2Correlation { void analyzeSingles(T const& tracks) { static constexpr auto SubDirRecGen = std::array{"Reco/", "McGen/"}; - static constexpr auto SubDirHist = std::array{"LaP", "LaM", "KaP", "KaM"}; + static constexpr auto SubDirHist = std::array{"LaP", "LaM"}; for (auto const& track : tracks) { // Efficiency Plots @@ -1619,9 +1262,7 @@ struct LambdaR2Correlation { } // QA Plots - if (part == kLambda || part == kAntiLambda) { - histos.fill(HIST(SubDirRecGen[rec_gen]) + HIST("h3f_n1_centptmass_") + HIST(SubDirHist[part]), cent, track.pt(), track.mass()); - } + histos.fill(HIST(SubDirRecGen[rec_gen]) + HIST("h3f_n1_centptmass_") + HIST(SubDirHist[part]), cent, track.pt(), track.mass()); histos.fill(HIST(SubDirRecGen[rec_gen]) + HIST("h3f_n1_centptrap_") + HIST(SubDirHist[part]), cent, track.pt(), track.rap(), track.corrFact()); // Rho1 for N1RapPhi @@ -1639,17 +1280,15 @@ struct LambdaR2Correlation { continue; } - // Lambda-Kaon close pair rejection + // Lambda close pair rejection if constexpr (rec_gen == kRec) { - if constexpr (partpair == kLambdaKaonPlus || partpair == kLambdaKaonMinus || partpair == kAntiLambdaKaonPlus || partpair == kAntiLambdaKaonMinus) { - // Close pair - if (cApplyTwoTrackCut && isClosePair(trk_1, trk_2)) { - continue; - } - // Femto selection - if (cApplyFemtoSel && isCloseQinv(trk_1, trk_2)) { - continue; - } + // Close pair + if (cApplyTwoTrackCut && isClosePair(trk_1, trk_2)) { + continue; + } + // Femto selection + if (cApplyFemtoSel && isCloseQinv(trk_1, trk_2)) { + continue; } } @@ -1661,19 +1300,16 @@ struct LambdaR2Correlation { using LambdaCollisions = aod::LambdaCollisions; using LambdaTracks = soa::Join; - using KaonTracks = soa::Join; SliceCache cache; Partition partLambdaTracks = (aod::lambdatrack::partType == (int8_t)kLambda) && (aod::lambdatrackext::trueLambdaFlag == true); Partition partAntiLambdaTracks = (aod::lambdatrack::partType == (int8_t)kAntiLambda) && (aod::lambdatrackext::trueLambdaFlag == true); - Partition partKaonPlusTracks = (aod::kaontrack::partType == (int8_t)kKaonPlus) && (aod::kaontrackext::trueKaonFlag == true); - Partition partKaonMinusTracks = (aod::kaontrack::partType == (int8_t)kKaonMinus) && (aod::kaontrackext::trueKaonFlag == true); void processDummy(aod::LambdaCollisions::iterator const&) {} PROCESS_SWITCH(LambdaR2Correlation, processDummy, "Dummy Process", true); - void processDataReco(LambdaCollisions::iterator const& collision, LambdaTracks const&, KaonTracks const&) + void processDataReco(LambdaCollisions::iterator const& collision, LambdaTracks const&) { histos.fill(HIST("Event/Reco/h1f_collision_posz"), collision.posZ()); histos.fill(HIST("Event/Reco/h1f_ft0m_mult_percentile"), collision.cent()); @@ -1684,23 +1320,15 @@ struct LambdaR2Correlation { auto lambdaTracks = partLambdaTracks->sliceByCached(aod::lambdatrack::lambdaCollisionId, collision.globalIndex(), cache); auto antiLambdaTracks = partAntiLambdaTracks->sliceByCached(aod::lambdatrack::lambdaCollisionId, collision.globalIndex(), cache); - auto kaonPlusTracks = partKaonPlusTracks->sliceByCached(aod::kaontrack::lambdaCollisionId, collision.globalIndex(), cache); - auto kaonMinusTracks = partKaonMinusTracks->sliceByCached(aod::kaontrack::lambdaCollisionId, collision.globalIndex(), cache); analyzeSingles(lambdaTracks); analyzeSingles(antiLambdaTracks); - analyzeSingles(kaonPlusTracks); - analyzeSingles(kaonMinusTracks); if (cAnaPairs) { // Pairs Only analyzePairs(lambdaTracks, antiLambdaTracks); analyzePairs(lambdaTracks, lambdaTracks); analyzePairs(antiLambdaTracks, antiLambdaTracks); - analyzePairs(lambdaTracks, kaonPlusTracks); - analyzePairs(lambdaTracks, kaonMinusTracks); - analyzePairs(antiLambdaTracks, kaonPlusTracks); - analyzePairs(antiLambdaTracks, kaonMinusTracks); } } @@ -1708,15 +1336,12 @@ struct LambdaR2Correlation { using LambdaMcGenCollisions = aod::LambdaMcGenCollisions; using LambdaMcGenTracks = aod::LambdaMcGenTracks; - using KaonMcGenTracks = aod::KaonMcGenTracks; SliceCache cachemc; Partition partMcLambdaTracks = (aod::lambdatrack::partType == (int8_t)kLambda); Partition partMcAntiLambdaTracks = (aod::lambdatrack::partType == (int8_t)kAntiLambda); - Partition partMcKaonPlusTracks = (aod::kaontrack::partType == (int8_t)kKaonPlus); - Partition partMcKaonMinusTracks = (aod::kaontrack::partType == (int8_t)kKaonMinus); - void processMCGen(LambdaMcGenCollisions::iterator const& mcgencol, LambdaMcGenTracks const&, KaonMcGenTracks const&) + void processMCGen(LambdaMcGenCollisions::iterator const& mcgencol, LambdaMcGenTracks const&) { histos.fill(HIST("Event/McGen/h1f_collision_posz"), mcgencol.posZ()); histos.fill(HIST("Event/McGen/h1f_ft0m_mult_percentile"), mcgencol.cent()); @@ -1726,22 +1351,14 @@ struct LambdaR2Correlation { auto lambdaTracks = partMcLambdaTracks->sliceByCached(aod::lambdamcgentrack::lambdaMcGenCollisionId, mcgencol.globalIndex(), cache); auto antiLambdaTracks = partMcAntiLambdaTracks->sliceByCached(aod::lambdamcgentrack::lambdaMcGenCollisionId, mcgencol.globalIndex(), cache); - auto kaonPlusTracks = partMcKaonPlusTracks->sliceByCached(aod::kaonmcgentrack::lambdaMcGenCollisionId, mcgencol.globalIndex(), cache); - auto kaonMinusTracks = partMcKaonMinusTracks->sliceByCached(aod::kaonmcgentrack::lambdaMcGenCollisionId, mcgencol.globalIndex(), cache); analyzeSingles(lambdaTracks); analyzeSingles(antiLambdaTracks); - analyzeSingles(kaonPlusTracks); - analyzeSingles(kaonMinusTracks); if (cAnaPairs) { analyzePairs(lambdaTracks, antiLambdaTracks); analyzePairs(lambdaTracks, lambdaTracks); analyzePairs(antiLambdaTracks, antiLambdaTracks); - analyzePairs(lambdaTracks, kaonPlusTracks); - analyzePairs(lambdaTracks, kaonMinusTracks); - analyzePairs(antiLambdaTracks, kaonPlusTracks); - analyzePairs(antiLambdaTracks, kaonMinusTracks); } }