From ee28694fb395e95fc47feb07ee574f10d57160af Mon Sep 17 00:00:00 2001 From: zhengqi-w Date: Mon, 13 Jan 2025 13:43:22 +0800 Subject: [PATCH 01/14] update on pidcme --- PWGCF/Flow/Tasks/pidcme.cxx | 259 ++++++++++++++++++++++++++++++++---- 1 file changed, 235 insertions(+), 24 deletions(-) diff --git a/PWGCF/Flow/Tasks/pidcme.cxx b/PWGCF/Flow/Tasks/pidcme.cxx index 8b4dda3f271..0935c61574c 100644 --- a/PWGCF/Flow/Tasks/pidcme.cxx +++ b/PWGCF/Flow/Tasks/pidcme.cxx @@ -523,14 +523,15 @@ struct pidcme { // o2-linter: disable=name/struct ConfigurableAxis cfgaxissumpt{"cfgaxissumpt", {7, 1, 8}, "Binning for #gamma and #delta pt(particle1 + particle2)"}; ConfigurableAxis cfgaxisdeltaeta{"cfgaxisdeltaeta", {5, 0, 1}, "Binning for #gamma and #delta |#eta(particle1 - particle2)|"}; - Configurable cfgkOpeanCME{"cfgkOpeanCME", true, "open PID CME"}; - Configurable cfgkOpeanPiPi{"cfgkOpeanPiPi", true, "open Pi-Pi"}; - Configurable cfgkOpeanKaKa{"cfgkOpeanKaKa", false, "open Ka-Ka"}; - Configurable cfgkOpeanPrPr{"cfgkOpeanPrPr", false, "open Pr-Pr"}; - Configurable cfgkOpeanPiKa{"cfgkOpeanPiKa", true, "open Pi-Ka"}; - Configurable cfgkOpeanPiPr{"cfgkOpeanPiPr", true, "open Pi-Pr"}; - Configurable cfgkOpeanKaPr{"cfgkOpeanKaPr", true, "open Ka-Pr"}; - Configurable cfgkOpeanHaHa{"cfgkOpeanHaHa", false, "open Ha-Ha"}; + Configurable cfgkOpenCME{"cfgkOpenCME", true, "open PID CME"}; + Configurable cfgkOpenPiPi{"cfgkOpenPiPi", true, "open Pi-Pi"}; + Configurable cfgkOpenKaKa{"cfgkOpenKaKa", false, "open Ka-Ka"}; + Configurable cfgkOpenPrPr{"cfgkOpenPrPr", false, "open Pr-Pr"}; + Configurable cfgkOpenPiKa{"cfgkOpenPiKa", true, "open Pi-Ka"}; + Configurable cfgkOpenPiPr{"cfgkOpenPiPr", true, "open Pi-Pr"}; + Configurable cfgkOpenKaPr{"cfgkOpenKaPr", true, "open Ka-Pr"}; + Configurable cfgkOpenHaHa{"cfgkOpenHaHa", false, "open Ha-Ha"}; + Configurable cfgkOpenSsOsCrossCheck{"cfgkOpenSsOsCrossCheck", false, "open check for matter an antimatter #gamma#delta"}; EventPlaneHelper helperEP; SliceCache cache; @@ -628,8 +629,8 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("V2/PID/histCosDetV2_Ka_Neg"), "", {HistType::kTH3F, {axisCentMerged, axisPt, axisCos}}); histosQA.add(Form("V2/PID/histCosDetV2_Pr_Neg"), "", {HistType::kTH3F, {axisCentMerged, axisPt, axisCos}}); - if (cfgkOpeanCME) { - if (cfgkOpeanPiPi) { + if (cfgkOpenCME) { + if (cfgkOpenPiPi) { histosQA.add(Form("PIDCME/histgamama_PiPi_ss"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiPi_os"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histdelta_PiPi_ss"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -638,8 +639,18 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_PiPi_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiPi_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiPi_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); + if (cfgkOpenSsOsCrossCheck){ + histosQA.add(Form("PIDCME/histgamama_PiPi_PP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_PiPi_NN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_PiPi_PN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_PiPi_NP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_PiPi_PP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_PiPi_NN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_PiPi_PN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_PiPi_NP"), "", {HistType::kTProfile, {axisCentMerged}}); + } } - if (cfgkOpeanKaKa) { + if (cfgkOpenKaKa) { histosQA.add(Form("PIDCME/histgamama_KaKa_ss"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_KaKa_os"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histdelta_KaKa_ss"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -648,8 +659,18 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_KaKa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_KaKa_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_KaKa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); + if (cfgkOpenSsOsCrossCheck){ + histosQA.add(Form("PIDCME/histgamama_KaKa_PP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_KaKa_NN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_KaKa_PN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_KaKa_NP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_KaKa_PP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_KaKa_NN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_KaKa_PN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_KaKa_NP"), "", {HistType::kTProfile, {axisCentMerged}}); + } } - if (cfgkOpeanPrPr) { + if (cfgkOpenPrPr) { histosQA.add(Form("PIDCME/histgamama_PrPr_ss"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PrPr_os"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histdelta_PrPr_ss"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -658,8 +679,18 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_PrPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PrPr_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PrPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); + if(cfgkOpenSsOsCrossCheck){ + histosQA.add(Form("PIDCME/histgamama_PrPr_PP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_PrPr_NN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_PrPr_PN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_PrPr_NP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_PrPr_PP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_PrPr_NN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_PrPr_PN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_PrPr_NP"), "", {HistType::kTProfile, {axisCentMerged}}); + } } - if (cfgkOpeanPiKa) { + if (cfgkOpenPiKa) { histosQA.add(Form("PIDCME/histgamama_PiKa_ss"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiKa_os"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histdelta_PiKa_ss"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -668,8 +699,18 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_PiKa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiKa_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiKa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); + if(cfgkOpenSsOsCrossCheck){ + histosQA.add(Form("PIDCME/histgamama_PiKa_PP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_PiKa_NN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_PiKa_PN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_PiKa_NP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_PiKa_PP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_PiKa_NN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_PiKa_PN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_PiKa_NP"), "", {HistType::kTProfile, {axisCentMerged}}); + } } - if (cfgkOpeanPiPr) { + if (cfgkOpenPiPr) { histosQA.add(Form("PIDCME/histgamama_PiPr_ss"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiPr_os"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histdelta_PiPr_ss"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -678,8 +719,18 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_PiPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiPr_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); + if(cfgkOpenSsOsCrossCheck){ + histosQA.add(Form("PIDCME/histgamama_PiPr_PP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_PiPr_NN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_PiPr_PN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_PiPr_NP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_PiPr_PP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_PiPr_NN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_PiPr_PN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_PiPr_NP"), "", {HistType::kTProfile, {axisCentMerged}}); + } } - if (cfgkOpeanKaPr) { + if (cfgkOpenKaPr) { histosQA.add(Form("PIDCME/histgamama_KaPr_ss"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_KaPr_os"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histdelta_KaPr_ss"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -688,8 +739,18 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_KaPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_KaPr_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_KaPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); + if(cfgkOpenSsOsCrossCheck){ + histosQA.add(Form("PIDCME/histgamama_KaPr_PP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_KaPr_NN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_KaPr_PN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_KaPr_NP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_KaPr_PP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_KaPr_NN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_KaPr_PN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_KaPr_NP"), "", {HistType::kTProfile, {axisCentMerged}}); + } } - if (cfgkOpeanHaHa) { + if (cfgkOpenHaHa) { histosQA.add(Form("PIDCME/histgamama_HaHa_ss"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_HaHa_os"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histdelta_HaHa_ss"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -698,6 +759,16 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_HaHa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_HaHa_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_HaHa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); + if(cfgkOpenSsOsCrossCheck){ + histosQA.add(Form("PIDCME/histgamama_HaHa_PP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_HaHa_NN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_HaHa_PN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histgamama_HaHa_NP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_HaHa_PP"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_HaHa_NN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_HaHa_PN"), "", {HistType::kTProfile, {axisCentMerged}}); + histosQA.add(Form("PIDCME/histdelta_HaHa_NP"), "", {HistType::kTProfile, {axisCentMerged}}); + } } } } @@ -809,8 +880,8 @@ struct pidcme { // o2-linter: disable=name/struct } } } - if (cfgkOpeanCME) { - if (cfgkOpeanPiPi) { + if (cfgkOpenCME) { + if (cfgkOpenPiPi) { for (const auto& trk1 : track1) { for (const auto& trk2 : track1) { if (trk1.globalIndex() == trk2.globalIndex()) @@ -823,6 +894,16 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPi_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() > 0){ + histosQA.fill(HIST("PIDCME/histgamama_PiPi_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPi_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + else { + histosQA.fill(HIST("PIDCME/histgamama_PiPi_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPi_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + } } else { histosQA.fill(HIST("PIDCME/histgamama_PiPi_os"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPi_os"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); @@ -830,12 +911,22 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPi_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() < 0){ + histosQA.fill(HIST("PIDCME/histgamama_PiPi_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPi_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + else { + histosQA.fill(HIST("PIDCME/histgamama_PiPi_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPi_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + } } } } } } - if (cfgkOpeanKaKa) { + if (cfgkOpenKaKa) { for (const auto& trk1 : track2) { for (const auto& trk2 : track2) { if (trk1.globalIndex() == trk2.globalIndex()) @@ -848,6 +939,16 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_KaKa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() > 0){ + histosQA.fill(HIST("PIDCME/histgamama_KaKa_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaKa_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + else { + histosQA.fill(HIST("PIDCME/histgamama_KaKa_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaKa_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + } } else { histosQA.fill(HIST("PIDCME/histgamama_KaKa_os"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaKa_os"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); @@ -855,12 +956,22 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_KaKa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() < 0){ + histosQA.fill(HIST("PIDCME/histgamama_KaKa_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaKa_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + else { + histosQA.fill(HIST("PIDCME/histgamama_KaKa_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaKa_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + } } } } } } - if (cfgkOpeanPrPr) { + if (cfgkOpenPrPr) { for (const auto& trk1 : track3) { for (const auto& trk2 : track3) { if (trk1.globalIndex() == trk2.globalIndex()) @@ -873,6 +984,16 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PrPr_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() > 0){ + histosQA.fill(HIST("PIDCME/histgamama_PrPr_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PrPr_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + else { + histosQA.fill(HIST("PIDCME/histgamama_PrPr_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PrPr_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + } } else { histosQA.fill(HIST("PIDCME/histgamama_PrPr_os"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PrPr_os"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); @@ -880,12 +1001,22 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PrPr_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() < 0){ + histosQA.fill(HIST("PIDCME/histgamama_PrPr_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PrPr_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + else { + histosQA.fill(HIST("PIDCME/histgamama_PrPr_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PrPr_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + } } } } } } - if (cfgkOpeanPiKa) { + if (cfgkOpenPiKa) { for (const auto& trk1 : track1) { for (const auto& trk2 : track2) { if (trk1.globalIndex() == trk2.globalIndex()) @@ -898,6 +1029,16 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiKa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() > 0){ + histosQA.fill(HIST("PIDCME/histgamama_PiKa_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiKa_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + else { + histosQA.fill(HIST("PIDCME/histgamama_PiKa_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiKa_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + } } else { histosQA.fill(HIST("PIDCME/histgamama_PiKa_os"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiKa_os"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); @@ -905,12 +1046,22 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiKa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() < 0){ + histosQA.fill(HIST("PIDCME/histgamama_PiKa_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiKa_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + else { + histosQA.fill(HIST("PIDCME/histgamama_PiKa_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiKa_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + } } } } } } - if (cfgkOpeanPiPr) { + if (cfgkOpenPiPr) { for (const auto& trk1 : track1) { for (const auto& trk3 : track3) { if (trk1.globalIndex() == trk3.globalIndex()) @@ -923,6 +1074,16 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPr_ss_Dif"), collision.centFT0C(), trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()), std::cos((trk1.phi() - trk3.phi()))); + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk3.sign() > 0){ + histosQA.fill(HIST("PIDCME/histgamama_PiPr_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPr_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); + } + else { + histosQA.fill(HIST("PIDCME/histgamama_PiPr_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPr_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); + } + } } else { histosQA.fill(HIST("PIDCME/histgamama_PiPr_os"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPr_os"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); @@ -930,12 +1091,22 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPr_os_Dif"), collision.centFT0C(), trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()), std::cos((trk1.phi() - trk3.phi()))); + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk3.sign() < 0){ + histosQA.fill(HIST("PIDCME/histgamama_PiPr_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPr_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); + } + else { + histosQA.fill(HIST("PIDCME/histgamama_PiPr_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPr_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); + } + } } } } } } - if (cfgkOpeanKaPr) { + if (cfgkOpenKaPr) { for (const auto& trk2 : track2) { for (const auto& trk3 : track3) { if (trk2.globalIndex() == trk3.globalIndex()) @@ -948,6 +1119,16 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_KaPr_ss_Dif"), collision.centFT0C(), trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()), std::cos((trk2.phi() - trk3.phi()))); + if(cfgkOpenSsOsCrossCheck){ + if(trk2.sign() > 0 && trk3.sign() > 0){ + histosQA.fill(HIST("PIDCME/histgamama_KaPr_PP"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaPr_PP"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); + } + else { + histosQA.fill(HIST("PIDCME/histgamama_KaPr_NN"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaPr_NN"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); + } + } } else { histosQA.fill(HIST("PIDCME/histgamama_KaPr_os"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaPr_os"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); @@ -955,6 +1136,16 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_KaPr_os_Dif"), collision.centFT0C(), trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()), std::cos((trk2.phi() - trk3.phi()))); + if(cfgkOpenSsOsCrossCheck){ + if(trk2.sign() > 0 && trk3.sign() < 0){ + histosQA.fill(HIST("PIDCME/histgamama_KaPr_PN"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaPr_PN"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); + } + else { + histosQA.fill(HIST("PIDCME/histgamama_KaPr_NP"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaPr_NP"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); + } + } } } } @@ -991,7 +1182,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.fill(HIST("V2/histCosDetV2"), collision.centFT0C(), trk.pt(), std::cos(static_cast(cfgnMods->at(i)) * (trk.phi() - psiNGlobal))); } - if (cfgkOpeanCME && cfgkOpeanHaHa && cfgnMods->at(i) == 2) { + if (cfgkOpenCME && cfgkOpenHaHa && cfgnMods->at(i) == 2) { for (const auto& trk1 : tracks) { for (const auto& trk2 : tracks) { if (trk1.globalIndex() == trk2.globalIndex()) @@ -1003,6 +1194,16 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); histosQA.fill(HIST("PIDCME/Differential/histdelta_HaHa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() > 0){ + histosQA.fill(HIST("PIDCME/histgamama_HaHa_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); + histosQA.fill(HIST("PIDCME/histdelta_HaHa_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + else { + histosQA.fill(HIST("PIDCME/histgamama_HaHa_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); + histosQA.fill(HIST("PIDCME/histdelta_HaHa_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + } } else { histosQA.fill(HIST("PIDCME/histgamama_HaHa_os"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); histosQA.fill(HIST("PIDCME/histdelta_HaHa_os"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); @@ -1010,6 +1211,16 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); histosQA.fill(HIST("PIDCME/Differential/histdelta_HaHa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() < 0){ + histosQA.fill(HIST("PIDCME/histgamama_HaHa_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); + histosQA.fill(HIST("PIDCME/histdelta_HaHa_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + else { + histosQA.fill(HIST("PIDCME/histgamama_HaHa_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); + histosQA.fill(HIST("PIDCME/histdelta_HaHa_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + } + } } } } From e114029b92ac0a246614b1d5c6f96e7c8a90c35f Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Mon, 13 Jan 2025 05:46:43 +0000 Subject: [PATCH 02/14] Please consider the following formatting changes --- PWGCF/Flow/Tasks/pidcme.cxx | 112 ++++++++++++++++-------------------- 1 file changed, 49 insertions(+), 63 deletions(-) diff --git a/PWGCF/Flow/Tasks/pidcme.cxx b/PWGCF/Flow/Tasks/pidcme.cxx index 0935c61574c..94d1f917d4d 100644 --- a/PWGCF/Flow/Tasks/pidcme.cxx +++ b/PWGCF/Flow/Tasks/pidcme.cxx @@ -639,7 +639,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_PiPi_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiPi_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiPi_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if (cfgkOpenSsOsCrossCheck){ + if (cfgkOpenSsOsCrossCheck) { histosQA.add(Form("PIDCME/histgamama_PiPi_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiPi_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiPi_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -659,7 +659,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_KaKa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_KaKa_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_KaKa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if (cfgkOpenSsOsCrossCheck){ + if (cfgkOpenSsOsCrossCheck) { histosQA.add(Form("PIDCME/histgamama_KaKa_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_KaKa_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_KaKa_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -679,7 +679,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_PrPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PrPr_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PrPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if(cfgkOpenSsOsCrossCheck){ + if (cfgkOpenSsOsCrossCheck) { histosQA.add(Form("PIDCME/histgamama_PrPr_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PrPr_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PrPr_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -699,7 +699,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_PiKa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiKa_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiKa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if(cfgkOpenSsOsCrossCheck){ + if (cfgkOpenSsOsCrossCheck) { histosQA.add(Form("PIDCME/histgamama_PiKa_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiKa_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiKa_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -719,7 +719,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_PiPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiPr_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if(cfgkOpenSsOsCrossCheck){ + if (cfgkOpenSsOsCrossCheck) { histosQA.add(Form("PIDCME/histgamama_PiPr_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiPr_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiPr_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -739,7 +739,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_KaPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_KaPr_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_KaPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if(cfgkOpenSsOsCrossCheck){ + if (cfgkOpenSsOsCrossCheck) { histosQA.add(Form("PIDCME/histgamama_KaPr_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_KaPr_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_KaPr_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -759,7 +759,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_HaHa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_HaHa_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_HaHa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if(cfgkOpenSsOsCrossCheck){ + if (cfgkOpenSsOsCrossCheck) { histosQA.add(Form("PIDCME/histgamama_HaHa_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_HaHa_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_HaHa_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -894,12 +894,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPi_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() > 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() > 0) { histosQA.fill(HIST("PIDCME/histgamama_PiPi_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPi_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_PiPi_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPi_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -911,12 +910,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPi_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() < 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() < 0) { histosQA.fill(HIST("PIDCME/histgamama_PiPi_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPi_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_PiPi_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPi_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -939,12 +937,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_KaKa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() > 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() > 0) { histosQA.fill(HIST("PIDCME/histgamama_KaKa_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaKa_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_KaKa_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaKa_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -956,12 +953,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_KaKa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() < 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() < 0) { histosQA.fill(HIST("PIDCME/histgamama_KaKa_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaKa_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_KaKa_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaKa_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -984,12 +980,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PrPr_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() > 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() > 0) { histosQA.fill(HIST("PIDCME/histgamama_PrPr_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PrPr_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_PrPr_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PrPr_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -1001,12 +996,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PrPr_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() < 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() < 0) { histosQA.fill(HIST("PIDCME/histgamama_PrPr_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PrPr_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_PrPr_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PrPr_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -1029,12 +1023,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiKa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() > 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() > 0) { histosQA.fill(HIST("PIDCME/histgamama_PiKa_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiKa_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_PiKa_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiKa_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -1046,12 +1039,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiKa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() < 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() < 0) { histosQA.fill(HIST("PIDCME/histgamama_PiKa_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiKa_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_PiKa_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiKa_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -1074,12 +1066,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPr_ss_Dif"), collision.centFT0C(), trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()), std::cos((trk1.phi() - trk3.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk3.sign() > 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk3.sign() > 0) { histosQA.fill(HIST("PIDCME/histgamama_PiPr_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPr_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_PiPr_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPr_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); } @@ -1091,12 +1082,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPr_os_Dif"), collision.centFT0C(), trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()), std::cos((trk1.phi() - trk3.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk3.sign() < 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk3.sign() < 0) { histosQA.fill(HIST("PIDCME/histgamama_PiPr_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPr_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_PiPr_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPr_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); } @@ -1119,12 +1109,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_KaPr_ss_Dif"), collision.centFT0C(), trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()), std::cos((trk2.phi() - trk3.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk2.sign() > 0 && trk3.sign() > 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk2.sign() > 0 && trk3.sign() > 0) { histosQA.fill(HIST("PIDCME/histgamama_KaPr_PP"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaPr_PP"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_KaPr_NN"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaPr_NN"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); } @@ -1136,12 +1125,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_KaPr_os_Dif"), collision.centFT0C(), trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()), std::cos((trk2.phi() - trk3.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk2.sign() > 0 && trk3.sign() < 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk2.sign() > 0 && trk3.sign() < 0) { histosQA.fill(HIST("PIDCME/histgamama_KaPr_PN"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaPr_PN"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_KaPr_NP"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaPr_NP"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); } @@ -1194,12 +1182,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); histosQA.fill(HIST("PIDCME/Differential/histdelta_HaHa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() > 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() > 0) { histosQA.fill(HIST("PIDCME/histgamama_HaHa_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); histosQA.fill(HIST("PIDCME/histdelta_HaHa_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_HaHa_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); histosQA.fill(HIST("PIDCME/histdelta_HaHa_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -1211,12 +1198,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); histosQA.fill(HIST("PIDCME/Differential/histdelta_HaHa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() < 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() < 0) { histosQA.fill(HIST("PIDCME/histgamama_HaHa_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); histosQA.fill(HIST("PIDCME/histdelta_HaHa_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_HaHa_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); histosQA.fill(HIST("PIDCME/histdelta_HaHa_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } From 89a5b29ca4256bf8c629dad36aec54e919c27182 Mon Sep 17 00:00:00 2001 From: zhengqi-w Date: Sun, 2 Feb 2025 16:30:40 +0800 Subject: [PATCH 03/14] Add enent cuts and track QA plots --- PWGCF/Flow/Tasks/pidcme.cxx | 1217 +++++++++++++++++++++++++---------- 1 file changed, 867 insertions(+), 350 deletions(-) diff --git a/PWGCF/Flow/Tasks/pidcme.cxx b/PWGCF/Flow/Tasks/pidcme.cxx index 94d1f917d4d..60b96fa8687 100644 --- a/PWGCF/Flow/Tasks/pidcme.cxx +++ b/PWGCF/Flow/Tasks/pidcme.cxx @@ -37,6 +37,7 @@ #include "Common/DataModel/EventSelection.h" #include "Common/DataModel/TrackSelectionTables.h" #include "Common/DataModel/Centrality.h" +#include "Common/DataModel/Multiplicity.h" #include "Common/Core/EventPlaneHelper.h" #include "Common/Core/TrackSelection.h" #include "Common/DataModel/PIDResponse.h" @@ -44,6 +45,8 @@ #include "CommonConstants/PhysicsConstants.h" +#include + // o2 includes. using namespace o2; @@ -55,25 +58,23 @@ namespace o2::aod namespace cme_track_pid_columns { DECLARE_SOA_COLUMN(NPidFlag, nPidFlag, int8_t); // Flag tracks without proper binning as -1, and indicate type of particle 0->un-Id, 1->pion, 2->kaon, 3->proton +DECLARE_SOA_COLUMN(AverClusterSizeCosl, averClusterSizeCosl, float); +DECLARE_SOA_COLUMN(NSigmaPiITS, nSigmaPiITS, float); +DECLARE_SOA_COLUMN(NSigmaKaITS, nSigmaKaITS, float); +DECLARE_SOA_COLUMN(NSigmaPrITS, nSigmaPrITS, float); +DECLARE_SOA_COLUMN(NSigmaPiTPC, nSigmaPiTPC, float); +DECLARE_SOA_COLUMN(NSigmaKaTPC, nSigmaKaTPC, float); +DECLARE_SOA_COLUMN(NSigmaPrTPC, nSigmaPrTPC, float); } // namespace cme_track_pid_columns -DECLARE_SOA_TABLE(Flags, "AOD", "Flags", cme_track_pid_columns::NPidFlag); +DECLARE_SOA_TABLE(Flags, "AOD", "Flags", cme_track_pid_columns::NPidFlag,cme_track_pid_columns::AverClusterSizeCosl,cme_track_pid_columns::NSigmaPiITS,cme_track_pid_columns::NSigmaKaITS,cme_track_pid_columns::NSigmaPrITS,cme_track_pid_columns::NSigmaPiTPC,cme_track_pid_columns::NSigmaKaTPC,cme_track_pid_columns::NSigmaPrTPC); } // namespace o2::aod using TracksPID = soa::Join; +using CollisionPID = soa::Join; struct FillPIDcolums { - Configurable cfgnSigmaCutTPCPi{"cfgnSigmaCutTPCPi", 3.0, "Value of the TPC Nsigma cut for pions"}; - Configurable cfgnSigmaCutTPCKa{"cfgnSigmaCutTPCKa", 3.0, "Value of the TPC Nsigma cut for kaons"}; - Configurable cfgnSigmaCutTPCPr{"cfgnSigmaCutTPCPr", 3.0, "Value of the TPC Nsigma cut for protons"}; - Configurable cfgnSigmaCutTOFPi{"cfgnSigmaCutTOFPi", 3.0, "Value of the TOF Nsigma cut for pions"}; - Configurable cfgnSigmaCutTOFKa{"cfgnSigmaCutTOFKa", 3.0, "Value of the TOF Nsigma cut for kaons"}; - Configurable cfgnSigmaCutTOFPr{"cfgnSigmaCutTOFPr", 3.0, "Value of the TOF Nsigma cut for protons"}; - Configurable cfgnSigmaCutCombine{"cfgnSigmaCutCombine", 3.0, "Value of the Combined Nsigma cut"}; Configurable cfgPtMaxforTPCOnlyPID{"cfgPtMaxforTPCOnlyPID", 0.4, "Maxmium track pt for TPC only PID,only when onlyTOF and onlyTOFHIT closed"}; Configurable cfgMinPtPID{"cfgMinPtPID", 0.15, "Minimum track #P_{t} for PID"}; Configurable cfgMaxEtaPID{"cfgMaxEtaPID", 0.8, "Maximum track #eta for PID"}; - Configurable cfgnSigmaCutITSPi{"cfgnSigmaCutITSPi", 3.0, "Value of the ITS Nsigma cut for Pions"}; - Configurable cfgnSigmaCutITSKa{"cfgnSigmaCutITSKa", 2.5, "Value of the ITS Nsigma cut for Kaons"}; - Configurable cfgnSigmaCutITSPr{"cfgnSigmaCutITSPr", 2.0, "Value of the ITS Nsigma cut for Protons"}; Configurable cfgAveClusSizeCoslMinPi{"cfgAveClusSizeCoslMinPi", 0, "Base line for minmum ITS cluster size x cos(#lambda) for Pions"}; Configurable cfgAveClusSizeCoslMaxPi{"cfgAveClusSizeCoslMaxPi", 1e9, "Base line for maxmum ITS cluster size x cos(#lambda) for Pions"}; Configurable cfgAveClusSizeCoslMinKa{"cfgAveClusSizeCoslMinKa", 0, "Base line for minmum ITS cluster size x cos(#lambda) for Kaons"}; @@ -83,16 +84,22 @@ struct FillPIDcolums { ConfigurableAxis cfgrigidityBins{"cfgrigidityBins", {200, -10.f, 10.f}, "Binning for rigidity #it{p}^{TPC}/#it{z}"}; ConfigurableAxis cfgdedxBins{"cfgdedxBins", {1000, 0.f, 1000.f}, "Binning for dE/dx"}; - ConfigurableAxis cfgnSigmaBins{"cfgnSigmaBins", {200, -5.f, 5.f}, "Binning for n sigma"}; + ConfigurableAxis cfgnSigmaBinsTPC{"cfgnSigmaBinsTPC", {200, -5.f, 5.f}, "Binning for n sigma TPC"}; + ConfigurableAxis cfgnSigmaBinsTOF{"cfgnSigmaBinsTOF", {200, -5.f, 5.f}, "Binning for n sigma TOF"}; + ConfigurableAxis cfgnSigmaBinsITS{"cfgnSigmaBinsITS", {200, -5.f, 5.f}, "Binning for n sigma ITS"}; ConfigurableAxis cfgnSigmaBinsCom{"cfgnSigmaBinsCom", {100, 0.f, 10.f}, "Combination Binning for TPC&TOF nsigma"}; - ConfigurableAxis cfgaxisptPID{"cfgaxisptPID", {24, 0, 12}, "Binning for P_{t} PID"}; + ConfigurableAxis cfgaxisptPID{"cfgaxisptPID", {120, 0, 12}, "Binning for P_{t} PID"}; ConfigurableAxis cfgaxispPID{"cfgaxispPID", {50, 0, 5}, "Binning for P PID"}; ConfigurableAxis cfgaxisAverClusterCosl{"cfgaxisAverClusterCosl", {50, 0, 10}, "Binning for average cluster size x cos(#lambda)"}; + ConfigurableAxis cfgaxisAverClusterCoslnSigma{"cfgaxisAverClusterCoslnSigma", {50, 0, 5}, "Binning for average cluster size x cos(#lambda) vs nSigam"}; + ConfigurableAxis cfgaxisetaPID{"cfgaxisetaPID", {90, -0.9, 0.9}, "Binning for Pt QA"}; - Configurable onlyTOF{"onlyTOF", false, "only TOF tracks"}; - Configurable onlyTOFHIT{"onlyTOFHIT", false, "accept only TOF hit tracks at high pt"}; - Configurable openITSCut{"openITSCut", true, "open ITSnsigma cut"}; - bool onlyTPC = true; + Configurable cfgOpenITSCut{"cfgOpenITSCut", true, "open ITSnsigma cut"}; + Configurable cfgOpenDetailPlots{"cfgOpenDetailPlots", true, "open detail TH3D plots for nSigmaTPC-ITS Pt-eta-Phi nSigmaITS-clustersize"}; + + Configurable> cfgnSigmaCutTPC{"cfgnSigmaCutTPC", {3,3,3}, "TPC cut for pi k p respectively at low pt"}; + Configurable> cfgnSigmaCutRMS{"cfgnSigmaCutRMS", {3,3,3}, "TPC_TOF combined cut for pi k p respectively at high pt"}; + Configurable> cfgnSigmaCutITS{"cfgnSigmaCutITS", {3,2.5,2}, "TPC_TOF combined cut for pi k p respectively at high pt"}; static float averageClusterSizeCosl(uint32_t itsClusterSizes, float eta) { @@ -137,177 +144,66 @@ struct FillPIDcolums { } template - bool selectionPid(const T& candidate, int8_t PID, float clustersize) + int selectionPidtpctof(const T& candidate) { - if (candidate.pt() > cfgPtMaxforTPCOnlyPID) { - onlyTPC = false; - } - - if (PID == 0) { - if (onlyTOF) { - if (candidate.hasTOF() && std::abs(candidate.tofNSigmaPi()) < cfgnSigmaCutTOFPi) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaPi()) < cfgnSigmaCutITSPi && clustersize > cfgAveClusSizeCoslMinPi && clustersize < cfgAveClusSizeCoslMaxPi) - return true; - } else { - return true; - } - } - } else if (onlyTOFHIT) { - if (candidate.hasTOF() && std::abs(candidate.tofNSigmaPi()) < cfgnSigmaCutTOFPi) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaPi()) < cfgnSigmaCutITSPi && clustersize > cfgAveClusSizeCoslMinPi && clustersize < cfgAveClusSizeCoslMaxPi) - return true; - } else { - return true; - } - } - if (!candidate.hasTOF() && std::abs(candidate.tpcNSigmaPi()) < cfgnSigmaCutTPCPi) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaPi()) < cfgnSigmaCutITSPi && clustersize > cfgAveClusSizeCoslMinPi && clustersize < cfgAveClusSizeCoslMaxPi) - return true; - } else { - return true; - } - } - } else if (onlyTPC) { - if (std::abs(candidate.tpcNSigmaPi()) < cfgnSigmaCutTPCPi) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaPi()) < cfgnSigmaCutITSPi && clustersize > cfgAveClusSizeCoslMinPi && clustersize < cfgAveClusSizeCoslMaxPi) - return true; - } else { - return true; - } - } - } else { - if (candidate.hasTOF() && (candidate.tofNSigmaPi() * candidate.tofNSigmaPi() + candidate.tpcNSigmaPi() * candidate.tpcNSigmaPi()) < (cfgnSigmaCutCombine * cfgnSigmaCutCombine)) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaPi()) < cfgnSigmaCutITSPi && clustersize > cfgAveClusSizeCoslMinPi && clustersize < cfgAveClusSizeCoslMaxPi) - return true; - } else { - return true; - } - } - if (!candidate.hasTOF() && std::abs(candidate.tpcNSigmaPi()) < cfgnSigmaCutTPCPi) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaPi()) < cfgnSigmaCutITSPi && clustersize > cfgAveClusSizeCoslMinPi && clustersize < cfgAveClusSizeCoslMaxPi) - return true; - } else { - return true; - } - } - } - } else if (PID == 1) { - if (onlyTOF) { - if (candidate.hasTOF() && std::abs(candidate.tofNSigmaKa()) < cfgnSigmaCutTOFKa) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaKa()) < cfgnSigmaCutITSKa && clustersize > cfgAveClusSizeCoslMinKa && clustersize < cfgAveClusSizeCoslMaxKa) - return true; - } else { - return true; - } - } - } else if (onlyTOFHIT) { - if (candidate.hasTOF() && std::abs(candidate.tofNSigmaKa()) < cfgnSigmaCutTOFKa) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaKa()) < cfgnSigmaCutITSKa && clustersize > cfgAveClusSizeCoslMinKa && clustersize < cfgAveClusSizeCoslMaxKa) - return true; - } else { - return true; - } - } - if (!candidate.hasTOF() && std::abs(candidate.tpcNSigmaKa()) < cfgnSigmaCutTPCPi) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaKa()) < cfgnSigmaCutITSKa && clustersize > cfgAveClusSizeCoslMinKa && clustersize < cfgAveClusSizeCoslMaxKa) - return true; - } else { - return true; - } - } - } else if (onlyTPC) { - if (std::abs(candidate.tpcNSigmaKa()) < cfgnSigmaCutTPCPi) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaKa()) < cfgnSigmaCutITSKa && clustersize > cfgAveClusSizeCoslMinKa && clustersize < cfgAveClusSizeCoslMaxKa) - return true; - } else { - return true; - } + float averClusSizeCosl = averageClusterSizeCosl(candidate.itsClusterSizes(), candidate.eta()); + std::array nSigmaTPC = {candidate.tpcNSigmaPi(), candidate.tpcNSigmaKa(), candidate.tpcNSigmaPr()}; + std::array nSigmaCombined = {std::hypot(candidate.tpcNSigmaPi(), candidate.tofNSigmaPi()), std::hypot(candidate.tpcNSigmaKa(), candidate.tofNSigmaKa()), std::hypot(candidate.tpcNSigmaPr(), candidate.tofNSigmaPr())}; + // Choose which nSigma to use + int pid = -1; + std::vector pidVector = (candidate.pt() > cfgPtMaxforTPCOnlyPID && candidate.hasTOF()) ? cfgnSigmaCutRMS.value : cfgnSigmaCutTPC.value; + float nsigma = pidVector[0]; + std::array nSigmaToUse = (candidate.pt() > cfgPtMaxforTPCOnlyPID && candidate.hasTOF()) ? nSigmaCombined : nSigmaTPC; + // Fill cross pid QA + for (int i = 0; i < 3; ++i) { + if (std::abs(nSigmaToUse[i]) < pidVector[i]) { + if(i == 0) { + histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_cross_Pi"), candidate.tpcNSigmaPi(), candidate.tofNSigmaPi(), candidate.pt()); + histosQA.fill(HIST("QA/PID/histdEdxTPC_cross_Pi"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal()); + histosQA.fill(HIST("QA/PID/histnSigma_cross_Pi"), candidate.tpcNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigma_Pt_cross_Pi"), candidate.pt(), candidate.tpcNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_cross_Pi"), candidate.itsNSigmaPi()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_cross_Pi"), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_cross_Pi"), candidate.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Pi"), candidate.tpcNSigmaPi(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histPhi_Dis_cross_Pi"), candidate.phi()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Pi"), candidate.tpcNSigmaPi(), candidate.itsNSigmaPi()); } - } else { - if (candidate.hasTOF() && (candidate.tofNSigmaKa() * candidate.tofNSigmaKa() + candidate.tpcNSigmaKa() * candidate.tpcNSigmaKa()) < (cfgnSigmaCutCombine * cfgnSigmaCutCombine)) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaKa()) < cfgnSigmaCutITSKa && clustersize > cfgAveClusSizeCoslMinKa && clustersize < cfgAveClusSizeCoslMaxKa) - return true; - } else { - return true; - } + if(i == 1) { + histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_cross_Ka"), candidate.tpcNSigmaKa(), candidate.tofNSigmaKa(), candidate.pt()); + histosQA.fill(HIST("QA/PID/histdEdxTPC_cross_Ka"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal()); + histosQA.fill(HIST("QA/PID/histnSigma_cross_Ka"), candidate.tpcNSigmaKa()); + histosQA.fill(HIST("QA/PID/histnSigma_Pt_cross_Ka"), candidate.pt(), candidate.tpcNSigmaKa()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_cross_Ka"), candidate.itsNSigmaKa()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_cross_Ka"), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_cross_Ka"), candidate.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Ka"), candidate.tpcNSigmaKa(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histPhi_Dis_cross_Ka"), candidate.phi()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Ka"), candidate.tpcNSigmaKa(), candidate.itsNSigmaKa()); } - if (!candidate.hasTOF() && std::abs(candidate.tpcNSigmaKa()) < cfgnSigmaCutTPCPi) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaKa()) < cfgnSigmaCutITSKa && clustersize > cfgAveClusSizeCoslMinKa && clustersize < cfgAveClusSizeCoslMaxKa) - return true; - } else { - return true; - } + if(i == 2) { + histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_cross_Pr"), candidate.tpcNSigmaPr(), candidate.tofNSigmaPr(), candidate.pt()); + histosQA.fill(HIST("QA/PID/histdEdxTPC_cross_Pr"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal()); + histosQA.fill(HIST("QA/PID/histnSigma_cross_Pr"), candidate.tpcNSigmaPr()); + histosQA.fill(HIST("QA/PID/histnSigma_Pt_cross_Pr"), candidate.pt(), candidate.tpcNSigmaPr()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_cross_Pr"), candidate.itsNSigmaPr()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_cross_Pr"), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_cross_Pr"), candidate.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Pr"), candidate.tpcNSigmaKa(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histPhi_Dis_cross_Pr"), candidate.phi()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Pr"), candidate.tpcNSigmaPr(), candidate.itsNSigmaPr()); } } - } else if (PID == 2) { - if (onlyTOF) { - if (candidate.hasTOF() && std::abs(candidate.tofNSigmaPr()) < cfgnSigmaCutTOFPr) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaPr()) < cfgnSigmaCutITSPr && clustersize > cfgAveClusSizeCoslMinPr && clustersize < cfgAveClusSizeCoslMaxPr) - return true; - } else { - return true; - } - } - } else if (onlyTOFHIT) { - if (candidate.hasTOF() && std::abs(candidate.tofNSigmaPr()) < cfgnSigmaCutTOFPr) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaPr()) < cfgnSigmaCutITSPr && clustersize > cfgAveClusSizeCoslMinPr && clustersize < cfgAveClusSizeCoslMaxPr) - return true; - } else { - return true; - } - } - if (!candidate.hasTOF() && std::abs(candidate.tpcNSigmaPr()) < cfgnSigmaCutTPCPr) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaPr()) < cfgnSigmaCutITSPr && clustersize > cfgAveClusSizeCoslMinPr && clustersize < cfgAveClusSizeCoslMaxPr) - return true; - } else { - return true; - } - } - } else if (onlyTPC) { - if (std::abs(candidate.tpcNSigmaPr()) < cfgnSigmaCutTPCPr) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaPr()) < cfgnSigmaCutITSPr && clustersize > cfgAveClusSizeCoslMinPr && clustersize < cfgAveClusSizeCoslMaxPr) - return true; - } else { - return true; - } - } - } else { - if (candidate.hasTOF() && (candidate.tofNSigmaPr() * candidate.tofNSigmaPr() + candidate.tpcNSigmaPr() * candidate.tpcNSigmaPr()) < (cfgnSigmaCutCombine * cfgnSigmaCutCombine)) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaPr()) < cfgnSigmaCutITSPr && clustersize > cfgAveClusSizeCoslMinPr && clustersize < cfgAveClusSizeCoslMaxPr) - return true; - } else { - return true; - } - } - if (!candidate.hasTOF() && std::abs(candidate.tpcNSigmaPr()) < cfgnSigmaCutTPCPr) { - if (openITSCut) { - if (std::abs(candidate.itsNSigmaPr()) < cfgnSigmaCutITSPr && clustersize > cfgAveClusSizeCoslMinPr && clustersize < cfgAveClusSizeCoslMaxPr) - return true; - } else { - return true; - } - } + } + // Select particle with the lowest nsigma + for (int i = 0; i < 3; ++i) { + if (std::abs(nSigmaToUse[i]) < nsigma && std::abs(nSigmaToUse[i]) < pidVector[i]) { + pid = i; + nsigma = std::abs(nSigmaToUse[i]); } } - return false; - } + return pid + 1; // shift the pid by 1, 1 = pion, 2 = kaon, 3 = proton + } HistogramRegistry histosQA{"histosQAPID", {}, OutputObjHandlingPolicy::AnalysisObject}; @@ -315,13 +211,14 @@ struct FillPIDcolums { { AxisSpec axisRigidity{cfgrigidityBins, "#it{p}^{TPC}/#it{z}"}; AxisSpec axisdEdx{cfgdedxBins, "d#it{E}/d#it{x}"}; - AxisSpec axisnSigmaTPC{cfgnSigmaBins, "n_{#sigma}TPC"}; - AxisSpec axisnSigmaTOF{cfgnSigmaBins, "n_{#sigma}TOF"}; - AxisSpec axisnSigmaITS{cfgnSigmaBins, "n_{#sigma}TOF"}; + AxisSpec axisnSigmaTPC{cfgnSigmaBinsTPC, "n_{#sigma}TPC"}; + AxisSpec axisnSigmaTOF{cfgnSigmaBinsTOF, "n_{#sigma}TOF"}; + AxisSpec axisnSigmaITS{cfgnSigmaBinsITS, "n_{#sigma}ITS"}; AxisSpec axisnSigmaCom{cfgnSigmaBinsCom, "hypot(n_{#sigma}TPC,TOF)"}; AxisSpec axisPtPID{cfgaxisptPID, "#it{p}_{T}"}; AxisSpec axisPPID{cfgaxispPID, "#it{p}"}; AxisSpec axisClusterSize{cfgaxisAverClusterCosl, " x "}; + AxisSpec axisClusterSizenSigma{cfgaxisAverClusterCoslnSigma, " x "}; AxisSpec axisPhi = {100, 0, 2.1 * constants::math::PI, "#phi"}; // TH3D NSigmaTPC,NSigmaTOF,pt histosQA.add(Form("QA/PID/histnSigma_TPC_TOF_Pi"), "", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaTOF, axisPtPID}}); @@ -330,25 +227,46 @@ struct FillPIDcolums { histosQA.add(Form("QA/PID/histnSigma_TPC_TOF_cross_Pi"), "", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaTOF, axisPtPID}}); histosQA.add(Form("QA/PID/histnSigma_TPC_TOF_cross_Ka"), "", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaTOF, axisPtPID}}); histosQA.add(Form("QA/PID/histnSigma_TPC_TOF_cross_Pr"), "", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaTOF, axisPtPID}}); - // Hist for PID Averge Cluster Size + histosQA.add(Form("QA/PID/histnSigma_TPC_TOF_AfterITS_Pi"), "", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaTOF, axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigma_TPC_TOF_AfterITS_Ka"), "", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaTOF, axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigma_TPC_TOF_AfterITS_Pr"), "", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaTOF, axisPtPID}}); + // Hist for PID Averge Cluster Size ITS related histosQA.add(Form("QA/PID/histAverClusterSizeCosl_Pi"), "", {HistType::kTH1F, {axisClusterSize}}); histosQA.add(Form("QA/PID/histAverClusterSizeCosl_Ka"), "", {HistType::kTH1F, {axisClusterSize}}); histosQA.add(Form("QA/PID/histAverClusterSizeCosl_Pr"), "", {HistType::kTH1F, {axisClusterSize}}); histosQA.add(Form("QA/PID/histAverClusterSizeCosl_cross_Pi"), "", {HistType::kTH1F, {axisClusterSize}}); histosQA.add(Form("QA/PID/histAverClusterSizeCosl_cross_Ka"), "", {HistType::kTH1F, {axisClusterSize}}); histosQA.add(Form("QA/PID/histAverClusterSizeCosl_cross_Pr"), "", {HistType::kTH1F, {axisClusterSize}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_AfterITS_Pi"), "", {HistType::kTH1F, {axisClusterSize}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_AfterITS_Ka"), "", {HistType::kTH1F, {axisClusterSize}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_AfterITS_Pr"), "", {HistType::kTH1F, {axisClusterSize}}); histosQA.add(Form("QA/PID/histAverClusterSizeCosl_P_Pi"), "", {HistType::kTH2F, {axisPPID, axisClusterSize}}); histosQA.add(Form("QA/PID/histAverClusterSizeCosl_P_Ka"), "", {HistType::kTH2F, {axisPPID, axisClusterSize}}); histosQA.add(Form("QA/PID/histAverClusterSizeCosl_P_Pr"), "", {HistType::kTH2F, {axisPPID, axisClusterSize}}); histosQA.add(Form("QA/PID/histAverClusterSizeCosl_P_cross_Pi"), "", {HistType::kTH2F, {axisPPID, axisClusterSize}}); histosQA.add(Form("QA/PID/histAverClusterSizeCosl_P_cross_Ka"), "", {HistType::kTH2F, {axisPPID, axisClusterSize}}); histosQA.add(Form("QA/PID/histAverClusterSizeCosl_P_cross_Pr"), "", {HistType::kTH2F, {axisPPID, axisClusterSize}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pi"), "", {HistType::kTH2F, {axisnSigmaTPC, axisClusterSize}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Ka"), "", {HistType::kTH2F, {axisnSigmaTPC, axisClusterSize}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pr"), "", {HistType::kTH2F, {axisnSigmaTPC, axisClusterSize}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Pi"), "", {HistType::kTH2F, {axisnSigmaTPC, axisClusterSize}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Ka"), "", {HistType::kTH2F, {axisnSigmaTPC, axisClusterSize}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Pr"), "", {HistType::kTH2F, {axisnSigmaTPC, axisClusterSize}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_P_AfterITS_Pi"), "", {HistType::kTH2F, {axisPPID, axisClusterSize}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_P_AfterITS_Ka"), "", {HistType::kTH2F, {axisPPID, axisClusterSize}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_P_AfterITS_Pr"), "", {HistType::kTH2F, {axisPPID, axisClusterSize}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pi"), "", {HistType::kTH2F, {axisnSigmaTPC, axisClusterSizenSigma}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Ka"), "", {HistType::kTH2F, {axisnSigmaTPC, axisClusterSizenSigma}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pr"), "", {HistType::kTH2F, {axisnSigmaTPC, axisClusterSizenSigma}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Pi"), "", {HistType::kTH2F, {axisnSigmaTPC, axisClusterSizenSigma}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Ka"), "", {HistType::kTH2F, {axisnSigmaTPC, axisClusterSizenSigma}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Pr"), "", {HistType::kTH2F, {axisnSigmaTPC, axisClusterSizenSigma}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_AfterITS_Pi"), "", {HistType::kTH2F, {axisnSigmaTPC, axisClusterSizenSigma}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_AfterITS_Ka"), "", {HistType::kTH2F, {axisnSigmaTPC, axisClusterSizenSigma}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_AfterITS_Pr"), "", {HistType::kTH2F, {axisnSigmaTPC, axisClusterSizenSigma}}); + histosQA.add(Form("QA/PID/histnSigmaITS_nSigmaTPC_Pi"), "", {HistType::kTH2F, {axisnSigmaTPC, axisnSigmaITS}}); + histosQA.add(Form("QA/PID/histnSigmaITS_nSigmaTPC_Ka"), "", {HistType::kTH2F, {axisnSigmaTPC, axisnSigmaITS}}); + histosQA.add(Form("QA/PID/histnSigmaITS_nSigmaTPC_Pr"), "", {HistType::kTH2F, {axisnSigmaTPC, axisnSigmaITS}}); + histosQA.add(Form("QA/PID/histnSigmaITS_nSigmaTPC_cross_Pi"), "", {HistType::kTH2F, {axisnSigmaTPC, axisnSigmaITS}}); + histosQA.add(Form("QA/PID/histnSigmaITS_nSigmaTPC_cross_Ka"), "", {HistType::kTH2F, {axisnSigmaTPC, axisnSigmaITS}}); + histosQA.add(Form("QA/PID/histnSigmaITS_nSigmaTPC_cross_Pr"), "", {HistType::kTH2F, {axisnSigmaTPC, axisnSigmaITS}}); + histosQA.add(Form("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Pi"), "", {HistType::kTH2F, {axisnSigmaTPC, axisnSigmaITS}}); + histosQA.add(Form("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Ka"), "", {HistType::kTH2F, {axisnSigmaTPC, axisnSigmaITS}}); + histosQA.add(Form("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Pr"), "", {HistType::kTH2F, {axisnSigmaTPC, axisnSigmaITS}}); // Hist for Nsigma TPC TOF histosQA.add(Form("QA/PID/histdEdxTPC_All"), "", {HistType::kTH2F, {axisRigidity, axisdEdx}}); histosQA.add(Form("QA/PID/histdEdxTPC_Pi"), "", {HistType::kTH2F, {axisRigidity, axisdEdx}}); @@ -382,6 +300,9 @@ struct FillPIDcolums { histosQA.add(Form("QA/PID/histnSigma_ITS_cross_Pi"), "", {HistType::kTH1F, {axisnSigmaITS}}); histosQA.add(Form("QA/PID/histnSigma_ITS_cross_Ka"), "", {HistType::kTH1F, {axisnSigmaITS}}); histosQA.add(Form("QA/PID/histnSigma_ITS_cross_Pr"), "", {HistType::kTH1F, {axisnSigmaITS}}); + histosQA.add(Form("QA/PID/histnSigma_ITS_AfterITS_Pi"), "", {HistType::kTH1F, {axisnSigmaITS}}); + histosQA.add(Form("QA/PID/histnSigma_ITS_AfterITS_Ka"), "", {HistType::kTH1F, {axisnSigmaITS}}); + histosQA.add(Form("QA/PID/histnSigma_ITS_AfterITS_Pr"), "", {HistType::kTH1F, {axisnSigmaITS}}); // Hist for checking the PID phi distribution histosQA.add(Form("QA/PID/histPhi_Dis_Pi"), "", {HistType::kTH1F, {axisPhi}}); histosQA.add(Form("QA/PID/histPhi_Dis_Ka"), "", {HistType::kTH1F, {axisPhi}}); @@ -389,9 +310,45 @@ struct FillPIDcolums { histosQA.add(Form("QA/PID/histPhi_Dis_cross_Pi"), "", {HistType::kTH1F, {axisPhi}}); histosQA.add(Form("QA/PID/histPhi_Dis_cross_Ka"), "", {HistType::kTH1F, {axisPhi}}); histosQA.add(Form("QA/PID/histPhi_Dis_cross_Pr"), "", {HistType::kTH1F, {axisPhi}}); + histosQA.add(Form("QA/PID/histPhi_Dis_AfterITS_Pi"), "", {HistType::kTH1F, {axisPhi}}); + histosQA.add(Form("QA/PID/histPhi_Dis_AfterITS_Ka"), "", {HistType::kTH1F, {axisPhi}}); + histosQA.add(Form("QA/PID/histPhi_Dis_AfterITS_Pr"), "", {HistType::kTH1F, {axisPhi}}); + // Hist 3D for PID check + if(cfgOpenDetailPlots){ + histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosPi"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi,axisPtPID,cfgaxisetaPID}}); + histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegPi"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi,axisPtPID,cfgaxisetaPID}}); + histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosKa"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi,axisPtPID,cfgaxisetaPID}}); + histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegKa"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi,axisPtPID,cfgaxisetaPID}}); + histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosPr"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi,axisPtPID,cfgaxisetaPID}}); + histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegPr"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi,axisPtPID,cfgaxisetaPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPi_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosKa_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPr_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPi_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosKa_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPr_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPi_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegKa_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPr_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPi_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegKa_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPr_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPi_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosKa_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPr_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPi_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosKa_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPr_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPr_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPr_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); + } } Produces pidCmeTable; - void process(TracksPID const& tracks) + void process( TracksPID const& tracks) { auto tracksWithITSPid = soa::Attach 10) { // If a track is identified as two different tracks. - if (std::abs(nSigmaArray[(pidFlag / 10) - 1]) < std::abs(nSigmaArray[(pidFlag % 10) - 1])) // The track is identified as the particle whose |nsigma| is the least. - pidFlag /= 10; - else - pidFlag %= 10; - } - } - - switch (pidFlag) { + pidFlag = selectionPidtpctof(track); + switch (pidFlag) { // no cross pid track QA plots case 1: histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_Pi"), track.tpcNSigmaPi(), track.tofNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histdEdxTPC_Pi"), track.sign() * track.tpcInnerParam(), track.tpcSignal()); - histosQA.fill(HIST("QA/PID/histnSigma_Pi"), track.tpcNSigmaPi()); - histosQA.fill(HIST("QA/PID/histnSigma_Pt_Pi"), track.pt(), track.tpcNSigmaPi()); - histosQA.fill(HIST("QA/PID/histnSigma_com_Pi"), (track.tpcNSigmaPi() * track.tpcNSigmaPi() + track.tofNSigmaPi() * track.tofNSigmaPi())); - histosQA.fill(HIST("QA/PID/histnSigma_TOF_Pi"), track.tofNSigmaPi()); - histosQA.fill(HIST("QA/PID/histnSigma_ITS_Pi"), track.itsNSigmaPi()); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_Pi"), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Pi"), track.p(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pi"), track.tpcNSigmaPi(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histPhi_Dis_Pi"), track.phi()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Pi"),track.p() ,averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pi"),track.tpcNSigmaPi() ,averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_Pi"),track.tpcNSigmaPi() ,track.itsNSigmaPi()); + histosQA.fill(HIST("QA/PID/histdEdxTPC_Pi"),track.sign() * track.tpcInnerParam(), track.tpcSignal()); + histosQA.fill(HIST("QA/PID/histnSigma_Pi"),track.tpcNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigma_Pt_Pi"),track.pt(), track.tpcNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigma_com_Pi"),std::hypot(track.tpcNSigmaPi(), track.tofNSigmaPi())); + histosQA.fill(HIST("QA/PID/histnSigma_TOF_Pi"),track.tofNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_Pi"),track.itsNSigmaPi()); + histosQA.fill(HIST("QA/PID/histPhi_Dis_Pi"),track.phi()); + if(cfgOpenDetailPlots){ + if (track.sign() >0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPi_Before"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPi_Before"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } + else if (track.sign() <0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPi_Before"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_Before"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } + } break; case 2: histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_Ka"), track.tpcNSigmaKa(), track.tofNSigmaKa(), track.pt()); - histosQA.fill(HIST("QA/PID/histdEdxTPC_Ka"), track.sign() * track.tpcInnerParam(), track.tpcSignal()); - histosQA.fill(HIST("QA/PID/histnSigma_Ka"), track.tpcNSigmaKa()); - histosQA.fill(HIST("QA/PID/histnSigma_Pt_Ka"), track.pt(), track.tpcNSigmaKa()); - histosQA.fill(HIST("QA/PID/histnSigma_com_Ka"), (track.tpcNSigmaKa() * track.tpcNSigmaKa() + track.tofNSigmaKa() * track.tofNSigmaKa())); - histosQA.fill(HIST("QA/PID/histnSigma_TOF_Ka"), track.tofNSigmaKa()); - histosQA.fill(HIST("QA/PID/histnSigma_ITS_Ka"), track.itsNSigmaKa()); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_Ka"), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Ka"), track.p(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Ka"), track.tpcNSigmaKa(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histPhi_Dis_Ka"), track.phi()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Ka"),track.p() ,averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Ka"),track.tpcNSigmaKa() ,averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_Ka"),track.tpcNSigmaKa() ,track.itsNSigmaKa()); + histosQA.fill(HIST("QA/PID/histdEdxTPC_Ka"),track.sign() * track.tpcInnerParam(), track.tpcSignal()); + histosQA.fill(HIST("QA/PID/histnSigma_Ka"),track.tpcNSigmaKa()); + histosQA.fill(HIST("QA/PID/histnSigma_Pt_Ka"),track.pt(), track.tpcNSigmaKa()); + histosQA.fill(HIST("QA/PID/histnSigma_com_Ka"),std::hypot(track.tpcNSigmaKa(), track.tofNSigmaKa())); + histosQA.fill(HIST("QA/PID/histnSigma_TOF_Ka"),track.tofNSigmaKa()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_Ka"),track.itsNSigmaKa()); + histosQA.fill(HIST("QA/PID/histPhi_Dis_Ka"),track.phi()); + if(cfgOpenDetailPlots){ + if (track.sign() >0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosKa_Before"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosKa_Before"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } + else if (track.sign() <0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegKa_Before"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_Before"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } + } break; case 3: histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_Pr"), track.tpcNSigmaPr(), track.tofNSigmaPr(), track.pt()); - histosQA.fill(HIST("QA/PID/histdEdxTPC_Pr"), track.sign() * track.tpcInnerParam(), track.tpcSignal()); - histosQA.fill(HIST("QA/PID/histnSigma_Pr"), track.tpcNSigmaPr()); - histosQA.fill(HIST("QA/PID/histnSigma_Pt_Pr"), track.pt(), track.tpcNSigmaPr()); - histosQA.fill(HIST("QA/PID/histnSigma_com_Pr"), (track.tpcNSigmaPr() * track.tpcNSigmaPr() + track.tofNSigmaPr() * track.tofNSigmaPr())); - histosQA.fill(HIST("QA/PID/histnSigma_TOF_Pr"), track.tofNSigmaPr()); - histosQA.fill(HIST("QA/PID/histnSigma_ITS_Pr"), track.itsNSigmaPr()); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_Pr"), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Pr"), track.p(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pr"), track.tpcNSigmaPr(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histPhi_Dis_Pr"), track.phi()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Pr"),track.p() ,averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pr"),track.tpcNSigmaPr() ,averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_Pr"),track.tpcNSigmaPr() ,track.itsNSigmaPr()); + histosQA.fill(HIST("QA/PID/histdEdxTPC_Pr"),track.sign() * track.tpcInnerParam(), track.tpcSignal()); + histosQA.fill(HIST("QA/PID/histnSigma_Pr"),track.tpcNSigmaPr()); + histosQA.fill(HIST("QA/PID/histnSigma_Pt_Pr"),track.pt(), track.tpcNSigmaPr()); + histosQA.fill(HIST("QA/PID/histnSigma_com_Pr"),std::hypot(track.tpcNSigmaPr(), track.tofNSigmaPr())); + histosQA.fill(HIST("QA/PID/histnSigma_TOF_Pr"),track.tofNSigmaPr()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_Pr"),track.itsNSigmaPr()); + histosQA.fill(HIST("QA/PID/histPhi_Dis_Pr"),track.phi()); + if(cfgOpenDetailPlots){ + if (track.sign() >0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPr_Before"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPr_Before"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } + else if (track.sign() <0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPr_Before"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPr_Before"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } + } + break; + } + if (cfgOpenITSCut) { + switch (pidFlag) + { + case 1: + if (!(std::abs(track.itsNSigmaPi()) < cfgnSigmaCutITS.value[0] && averClusSizeCosl > cfgAveClusSizeCoslMinPi && averClusSizeCosl < cfgAveClusSizeCoslMaxPi)) { + pidFlag = 4; + } + break; + case 2: + if (!(std::abs(track.itsNSigmaKa()) < cfgnSigmaCutITS.value[1] && averClusSizeCosl > cfgAveClusSizeCoslMinKa && averClusSizeCosl < cfgAveClusSizeCoslMaxKa)) { + pidFlag = 5; + } + break; + case 3: + if (!(std::abs(track.itsNSigmaPr()) < cfgnSigmaCutITS.value[2] && averClusSizeCosl > cfgAveClusSizeCoslMinPr && averClusSizeCosl < cfgAveClusSizeCoslMaxPr)) { + pidFlag = 6; + } + break; + } + } + switch (pidFlag) { // after ITScut QA plots + case 1: + histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_AfterITS_Pi"), track.tpcNSigmaPi(), track.tofNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_AfterITS_Pi"), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_AfterITS_Pi"), track.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_AfterITS_Pi"), track.tpcNSigmaPi(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Pi"), track.tpcNSigmaPi() , track.itsNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_AfterITS_Pi"), track.itsNSigmaPi()); + histosQA.fill(HIST("QA/PID/histPhi_Dis_AfterITS_Pi"), track.phi()); + if(cfgOpenDetailPlots){ + if (track.sign() >0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_PosPi"),track.phi(),track.pt(),track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPi_After"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPi_After"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } + else if (track.sign() <0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_NegPi"),track.phi(),track.pt(),track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPi_After"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_After"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } + } + break; + case 2: + histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_AfterITS_Ka"), track.tpcNSigmaKa(), track.tofNSigmaKa(), track.pt()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_AfterITS_Ka"), track.itsNSigmaKa()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_AfterITS_Ka"), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_AfterITS_Ka"), track.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Ka"), track.tpcNSigmaKa() , track.itsNSigmaKa()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_AfterITS_Ka"), track.tpcNSigmaKa(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histPhi_Dis_AfterITS_Ka"), track.phi()); + if(cfgOpenDetailPlots){ + if (track.sign() >0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_PosKa"),track.phi(),track.pt(),track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosKa_After"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosKa_After"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } + else if (track.sign() <0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_NegKa"),track.phi(),track.pt(),track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegKa_After"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_After"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } + } + break; + case 3: + histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_AfterITS_Pr"), track.tpcNSigmaPr(), track.tofNSigmaPr(), track.pt()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_AfterITS_Pr"), track.itsNSigmaPr()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_AfterITS_Pr"), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_AfterITS_Pr"), track.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Pr"), track.tpcNSigmaPr() , track.itsNSigmaPr()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_AfterITS_Pr"), track.tpcNSigmaPr(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histPhi_Dis_AfterITS_Pr"), track.phi()); + if(cfgOpenDetailPlots){ + if (track.sign() >0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_PosPr"),track.phi(),track.pt(),track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPr_After"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPr_After"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } + else if (track.sign() <0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_NegPr"),track.phi(),track.pt(),track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPr_After"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPr_After"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } + } + break; + } + } + pidCmeTable(pidFlag,averClusSizeCosl,track.itsNSigmaPi(),track.itsNSigmaKa(),track.itsNSigmaPr(),track.tpcNSigmaPi(),track.tpcNSigmaKa(),track.tpcNSigmaPr()); + } + } +}; + +struct QAProcessCent{ + HistogramRegistry histosQA{"histosQAwithcent", {}, OutputObjHandlingPolicy::AnalysisObject}; + Configurable> cfgCentralitybinsforQA{"cfgCentralitybinsforQA", {0,30,60}, "Centrality bins for track phi and TPC_ITS matching check"}; + Configurable cfgOpenDetailPlotscme{"cfgOpenDetailPlotscme", true, "open detail TH3D plots for nSigmaTPC-ITS Pt-eta-Phi nSigmaITS-clustersize"}; + Configurable cfgOpenPtEtaPhi{"cfgOpenPtEtaPhi", true, "open pt-#eta-#phi PID QA (Optional for limited memory usage)"}; + Configurable cfgOpenITSTPCnSigma{"cfgOpenITSTPCnSigma", true, "open ITS-TPC nSigma QA (Optional for limited memory usage)"}; + Configurable cfgOpenClusSizenSigmaTPC{"cfgOpenClusSizenSigmaITS", true, "open ITSClustersize- TPCnsigma QA (Optional for limited memory usage)"}; + Configurable cfgOpenPi{"cfgOpenPi", true, "open Pion QA (Optional for limited memory usage)"}; + Configurable cfgOpenKa{"cfgOpenKa", true, "open Kaon QA (Optional for limited memory usage)"}; + Configurable cfgOpenPr{"cfgOpenPr", true, "open Proton QA (Optional for limited memory usage)"}; + ConfigurableAxis cfgaxisetaPIDcme{"cfgaxisetaPIDcme", {90, -0.9, 0.9}, "Binning for Pt QA"}; + ConfigurableAxis cfgaxisptPIDcme{"cfgaxisptPIDcme", {120, 0, 12}, "Binning for P_{t} PID"}; + ConfigurableAxis cfgnSigmaBinsTPCcme{"cfgnSigmaBinsTPCcme", {200, -5.f, 5.f}, "Binning for n sigma TPC"}; + ConfigurableAxis cfgnSigmaBinsITScme{"cfgnSigmaBinsITScme", {200, -5.f, 5.f}, "Binning for n sigma TPC"}; + ConfigurableAxis cfgaxisAverClusterCoslnSigmacme{"cfgaxisAverClusterCoslnSigmacme", {50, 0, 5}, "Binning for average cluster size x cos(#lambda) vs nSigam"}; + + std::vector> vhistPhi_Pt_Eta_PosPi_Cen; + std::vector> vhistPhi_Pt_Eta_NegPi_Cen; + std::vector> vhistPhi_Pt_Eta_PosKa_Cen; + std::vector> vhistPhi_Pt_Eta_NegKa_Cen; + std::vector> vhistPhi_Pt_Eta_PosPr_Cen; + std::vector> vhistPhi_Pt_Eta_NegPr_Cen; + std::vector> vhistnSigmaITS_TPC_Pt_PosPi_Before_Cen; + std::vector> vhistnSigmaITS_TPC_Pt_NegPi_Before_Cen; + std::vector> vhistnSigmaITS_TPC_Pt_PosKa_Before_Cen; + std::vector> vhistnSigmaITS_TPC_Pt_NegKa_Before_Cen; + std::vector> vhistnSigmaITS_TPC_Pt_PosPr_Before_Cen; + std::vector> vhistnSigmaITS_TPC_Pt_NegPr_Before_Cen; + std::vector> vhistnSigmaITS_TPC_Pt_PosPi_After_Cen; + std::vector> vhistnSigmaITS_TPC_Pt_NegPi_After_Cen; + std::vector> vhistnSigmaITS_TPC_Pt_PosKa_After_Cen; + std::vector> vhistnSigmaITS_TPC_Pt_NegKa_After_Cen; + std::vector> vhistnSigmaITS_TPC_Pt_PosPr_After_Cen; + std::vector> vhistnSigmaITS_TPC_Pt_NegPr_After_Cen; + std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen; + std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen; + std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen; + std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen; + std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen; + std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen; + std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After_Cen; + std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After_Cen; + std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After_Cen; + std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After_Cen; + std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After_Cen; + std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After_Cen; + Filter trackPIDfilter = aod::cme_track_pid_columns::nPidFlag > (int8_t)0; + void init(InitContext const&) + { + AxisSpec axisPhicme = {100, 0, 2.1 * constants::math::PI, "#phi"}; + // Additional QA histograms for PID + if(cfgOpenDetailPlotscme) { + for (int i = 0; i < static_cast(cfgCentralitybinsforQA.value.size())-1; ++i) { + if(cfgOpenPtEtaPhi) { + if(cfgOpenPi) { + auto hPhi_Pt_Eta_PosPi = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosPi_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme,cfgaxisptPIDcme,cfgaxisetaPIDcme}}); + auto hPhi_Pt_Eta_NegPi = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegPi_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme,cfgaxisptPIDcme,cfgaxisetaPIDcme}}); + vhistPhi_Pt_Eta_PosPi_Cen.push_back(std::move(hPhi_Pt_Eta_PosPi)); + vhistPhi_Pt_Eta_NegPi_Cen.push_back(std::move(hPhi_Pt_Eta_NegPi)); + } + if(cfgOpenKa) { + auto hPhi_Pt_Eta_PosKa = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosKa_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme,cfgaxisptPIDcme,cfgaxisetaPIDcme}}); + auto hPhi_Pt_Eta_NegKa = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegKa_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme,cfgaxisptPIDcme,cfgaxisetaPIDcme}}); + vhistPhi_Pt_Eta_PosKa_Cen.push_back(std::move(hPhi_Pt_Eta_PosKa)); + vhistPhi_Pt_Eta_NegKa_Cen.push_back(std::move(hPhi_Pt_Eta_NegKa)); + } + if(cfgOpenPr) { + auto hPhi_Pt_Eta_PosPr = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosPr_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme,cfgaxisptPIDcme,cfgaxisetaPIDcme}}); + auto hPhi_Pt_Eta_NegPr = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegPr_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme,cfgaxisptPIDcme,cfgaxisetaPIDcme}}); + vhistPhi_Pt_Eta_PosPr_Cen.push_back(std::move(hPhi_Pt_Eta_PosPr)); + vhistPhi_Pt_Eta_NegPr_Cen.push_back(std::move(hPhi_Pt_Eta_NegPr)); + } + } + if(cfgOpenITSTPCnSigma) { + if(cfgOpenPi) { + auto hnSigmaITS_TPC_Pt_PosPi_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPi_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_PosPi_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPi_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_NegPi_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPi_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_NegPi_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPi_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); + vhistnSigmaITS_TPC_Pt_PosPi_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosPi_Before)); + vhistnSigmaITS_TPC_Pt_NegPi_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegPi_Before)); + vhistnSigmaITS_TPC_Pt_PosPi_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosPi_After)); + vhistnSigmaITS_TPC_Pt_NegPi_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegPi_After)); + } + if(cfgOpenKa) { + auto hnSigmaITS_TPC_Pt_PosKa_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosKa_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_PosKa_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosKa_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_NegKa_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegKa_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_NegKa_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegKa_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); + vhistnSigmaITS_TPC_Pt_PosKa_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosKa_Before)); + vhistnSigmaITS_TPC_Pt_NegKa_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegKa_Before)); + vhistnSigmaITS_TPC_Pt_PosKa_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosKa_After)); + vhistnSigmaITS_TPC_Pt_NegKa_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegKa_After)); + } + if(cfgOpenPr) { + auto hnSigmaITS_TPC_Pt_PosPr_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPr_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_PosPr_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPr_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_NegPr_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPr_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_NegPr_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPr_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); + vhistnSigmaITS_TPC_Pt_PosPr_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosPr_Before)); + vhistnSigmaITS_TPC_Pt_NegPr_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegPr_Before)); + vhistnSigmaITS_TPC_Pt_PosPr_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosPr_After)); + vhistnSigmaITS_TPC_Pt_NegPr_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegPr_After)); + } + } + if(cfgOpenClusSizenSigmaTPC) { + if(cfgOpenPi) { + auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before)); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before)); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After)); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After)); + } + if(cfgOpenKa) { + auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before)); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before)); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After)); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After)); + } + if(cfgOpenPr) { + auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before)); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before)); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After)); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After)); + } + } + } + } + } + void process(CollisionPID::iterator const& collision, soa::Filtered> const& tracks) + { + if(cfgOpenDetailPlotscme) { + const auto cent = collision.centFT0C(); + int currentBin = -1; + for (int i = 0; i < static_cast(cfgCentralitybinsforQA.value.size()) - 1; ++i) { + if (cent >= cfgCentralitybinsforQA.value[i] && cent < cfgCentralitybinsforQA.value[i + 1]) { + currentBin = i; break; } } - pidCmeTable(pidFlag); + if(currentBin >= 0){ + for (const auto& trk : tracks){ + int8_t pididx = trk.nPidFlag(); + switch (pididx) + { + case 1: + if(cfgOpenPi) { + if(trk.sign()>0){ + if(cfgOpenPtEtaPhi) { + vhistPhi_Pt_Eta_PosPi_Cen[currentBin]->Fill(trk.phi(),trk.pt(),trk.eta()); + } + if(cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_PosPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.nSigmaPiITS(),trk.pt()); + vhistnSigmaITS_TPC_Pt_PosPi_After_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.nSigmaPiITS(),trk.pt()); + } + if(cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.averClusterSizeCosl(),trk.pt()); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.averClusterSizeCosl(),trk.pt()); + } + } + else if(trk.sign()<0){ + if(cfgOpenPtEtaPhi) { + vhistPhi_Pt_Eta_NegPi_Cen[currentBin]->Fill(trk.phi(),trk.pt(),trk.eta()); + } + if(cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_NegPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.nSigmaPiITS(),trk.pt()); + vhistnSigmaITS_TPC_Pt_NegPi_After_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.nSigmaPiITS(),trk.pt()); + } + if(cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.averClusterSizeCosl(),trk.pt()); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.averClusterSizeCosl(),trk.pt()); + } + } + } + break; + case 2: + if(cfgOpenKa) { + if(trk.sign()>0){ + if(cfgOpenPtEtaPhi) { + vhistPhi_Pt_Eta_PosKa_Cen[currentBin]->Fill(trk.phi(),trk.pt(),trk.eta()); + } + if(cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_PosKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.nSigmaKaITS(),trk.pt()); + vhistnSigmaITS_TPC_Pt_PosKa_After_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.nSigmaKaITS(),trk.pt()); + } + if(cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.averClusterSizeCosl(),trk.pt()); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.averClusterSizeCosl(),trk.pt()); + } + } + else if(trk.sign()<0){ + if(cfgOpenPtEtaPhi) { + vhistPhi_Pt_Eta_NegKa_Cen[currentBin]->Fill(trk.phi(),trk.pt(),trk.eta()); + } + if(cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_NegKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.nSigmaKaITS(),trk.pt()); + vhistnSigmaITS_TPC_Pt_NegKa_After_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.nSigmaKaITS(),trk.pt()); + } + if(cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.averClusterSizeCosl(),trk.pt()); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.averClusterSizeCosl(),trk.pt()); + } + } + } + break; + case 3: + if(cfgOpenPr) { + if(trk.sign()>0){ + if(cfgOpenPtEtaPhi) { + vhistPhi_Pt_Eta_PosPr_Cen[currentBin]->Fill(trk.phi(),trk.pt(),trk.eta()); + } + if(cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_PosPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.nSigmaPrITS(),trk.pt()); + vhistnSigmaITS_TPC_Pt_PosPr_After_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.nSigmaPrITS(),trk.pt()); + } + if(cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.averClusterSizeCosl(),trk.pt()); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.averClusterSizeCosl(),trk.pt()); + } + } + else if(trk.sign()<0){ + if(cfgOpenPtEtaPhi) { + vhistPhi_Pt_Eta_NegPr_Cen[currentBin]->Fill(trk.phi(),trk.pt(),trk.eta()); + } + if(cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_NegPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.nSigmaPrITS(),trk.pt()); + vhistnSigmaITS_TPC_Pt_NegPr_After_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.nSigmaPrITS(),trk.pt()); + } + if(cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.averClusterSizeCosl(),trk.pt()); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.averClusterSizeCosl(),trk.pt()); + } + } + } + break; + case 4: + if(cfgOpenPi) { + if(trk.sign()>0){ + if(cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_PosPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.nSigmaPiITS(),trk.pt()); + } + if(cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.averClusterSizeCosl(),trk.pt()); + } + } + else if(trk.sign()<0){ + if(cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_NegPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.nSigmaPiITS(),trk.pt()); + } + if(cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.averClusterSizeCosl(),trk.pt()); + } + } + } + break; + case 5: + if(cfgOpenKa) { + if(trk.sign()>0){ + if(cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_PosKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.nSigmaKaITS(),trk.pt()); + } + if(cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.averClusterSizeCosl(),trk.pt()); + } + } + else if(trk.sign()<0){ + if(cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_NegKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.nSigmaKaITS(),trk.pt()); + } + if(cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.averClusterSizeCosl(),trk.pt()); + } + } + } + break; + case 6: + if(cfgOpenPr) { + if(trk.sign()>0){ + if(cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_PosPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.nSigmaPrITS(),trk.pt()); + } + if(cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.averClusterSizeCosl(),trk.pt()); + } + } + else if(trk.sign()<0){ + if(cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_NegPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.nSigmaPrITS(),trk.pt()); + } + if(cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.averClusterSizeCosl(),trk.pt()); + } + } + } + break; + } + } + } } } }; + struct pidcme { // o2-linter: disable=name/struct HistogramRegistry histosQA{"histosmain", {}, OutputObjHandlingPolicy::AnalysisObject}; @@ -506,7 +850,12 @@ struct pidcme { // o2-linter: disable=name/struct Configurable cfgRefBName{"cfgRefBName", "TPCneg", "The name of detector for reference B"}; Configurable cfgnTotalSystem{"cfgnTotalSystem", 7, "total qvector number"}; + Configurable cfgCutOccupancyLow{"cfgCutOccupancyLow", 0, "Low boundary cut on TPC occupancy"}; + Configurable cfgCutOccupancyHigh{"cfgCutOccupancyHigh", 3000, "High boundary cut on TPC occupancy"}; + Configurable cfgVtzCut{"cfgVtzCut", 10.0f, "Accepted z-vertex range"}; + Configurable cfgCentMin{"cfgCentMin", 0.0f, "Centrality min"}; + Configurable cfgCentMax{"cfgCentMax", 100.0f, "Centrality max"}; Configurable cfgMinPt{"cfgMinPt", 0.15, "Minimum transverse momentum for charged track"}; Configurable cfgMaxEta{"cfgMaxEta", 0.8, "Maximum pseudorapidiy for charged track"}; Configurable cfgMaxDCArToPVcut{"cfgMaxDCArToPVcut", 0.1, "Maximum transverse DCA"}; @@ -519,10 +868,26 @@ struct pidcme { // o2-linter: disable=name/struct ConfigurableAxis cfgaxiscos{"cfgaxiscos", {102, -1.02, 1.02}, ""}; ConfigurableAxis cfgaxispt{"cfgaxispt", {100, 0, 10}, ""}; ConfigurableAxis cfgaxisCentMerged{"cfgaxisCentMerged", {20, 0, 100}, ""}; + ConfigurableAxis cfgaxisCentForQA{"cfgaxisCentForQA", {100, 0, 100}, "centrality for event QA"}; + ConfigurableAxis cfgaxisNch{"cfgaxisNch", {4000, 0, 4000}, "N_{ch}"}; + ConfigurableAxis cfgaxisT0C{"cfgaxisT0C", {70, 0, 70000}, "N_{ch} (T0C)"}; + ConfigurableAxis cfgaxisT0A{"cfgaxisT0A", {200, 0, 200000}, "N_{ch} (T0A)"}; + ConfigurableAxis cfgaxisNchPV{"cfgaxisNchPV", {4000, 0, 4000}, "N_{ch} (PV)"}; ConfigurableAxis cfgaxissumpt{"cfgaxissumpt", {7, 1, 8}, "Binning for #gamma and #delta pt(particle1 + particle2)"}; ConfigurableAxis cfgaxisdeltaeta{"cfgaxisdeltaeta", {5, 0, 1}, "Binning for #gamma and #delta |#eta(particle1 - particle2)|"}; + Configurable cfgUseAdditionalEventCut{"cfgUseAdditionalEventCut", true, "Use additional event cut beyond sel8"}; + Configurable cfgOpenEvSelkIsGoodZvtxFT0vsPV{"cfgOpenEvSelkIsGoodZvtxFT0vsPV", true, "removes collisions with large differences between z of PV by tracks and z of PV from FT0 A-C time difference, use this cut at low multiplicities with caution"}; + Configurable cfgOpenEvSelkNoSameBunchPileup{"cfgOpenEvSelkNoSameBunchPileup", true, "rejects collisions which are associated with the same found-by-T0 bunch crossing"}; + Configurable cfgOpenEvSelkNoCollInTimeRangeStandard{"cfgOpenEvSelkNoCollInTimeRangeStandard", true, "no collisions in specified time range"}; + Configurable cfgOpenEvSelkIsGoodITSLayersAll{"cfgOpenEvSelkIsGoodITSLayersAll", true, "cut time intervals with dead ITS staves"}; + Configurable cfgOpenEvSelkNoCollInRofStandard{"cfgOpenEvSelkNoCollInRofStandard", true, "no other collisions in this Readout Frame with per-collision multiplicity above threshold"}; + Configurable cfgOpenEvSelkNoHighMultCollInPrevRof{"cfgOpenEvSelkNoHighMultCollInPrevRof", true, "veto an event if FT0C amplitude in previous ITS ROF is above threshold"}; + Configurable cfgOpenEvSelOccupancy{"cfgOpenEvSelOccupancy", true, "Occupancy cut"}; + Configurable cfgOpenEvSelMultCorrelation{"cfgOpenEvSelMultCorrelation", true, "Multiplicity correlation cut"}; + Configurable cfgOpenEvSelV0AT0ACut{"cfgOpenEvSelV0AT0ACut", true, "V0A T0A 5 sigma cut"}; + Configurable cfgOpenFullEventQA{"cfgOpenFullEventQA", true, "Open full QA plots for event QA"}; Configurable cfgkOpenCME{"cfgkOpenCME", true, "open PID CME"}; Configurable cfgkOpenPiPi{"cfgkOpenPiPi", true, "open Pi-Pi"}; Configurable cfgkOpenKaKa{"cfgkOpenKaKa", false, "open Ka-Ka"}; @@ -532,7 +897,8 @@ struct pidcme { // o2-linter: disable=name/struct Configurable cfgkOpenKaPr{"cfgkOpenKaPr", true, "open Ka-Pr"}; Configurable cfgkOpenHaHa{"cfgkOpenHaHa", false, "open Ha-Ha"}; Configurable cfgkOpenSsOsCrossCheck{"cfgkOpenSsOsCrossCheck", false, "open check for matter an antimatter #gamma#delta"}; - + + EventPlaneHelper helperEP; SliceCache cache; @@ -540,6 +906,14 @@ struct pidcme { // o2-linter: disable=name/struct int detId; int refAId; int refBId; + // Additional Event selection cuts - Copy from flowGenericFramework.cxx + TF1* fMultPVCutLow = nullptr; + TF1* fMultPVCutHigh = nullptr; + TF1* fMultCutLow = nullptr; + TF1* fMultCutHigh = nullptr; + TF1* fMultMultPVCut = nullptr; + TF1* fT0AV0AMean = nullptr; + TF1* fT0AV0ASigma = nullptr; template int getDetId(const T& name) @@ -566,15 +940,17 @@ struct pidcme { // o2-linter: disable=name/struct } } - Filter col = aod::evsel::sel8 == true; - Filter collisionFilter = (nabs(aod::collision::posZ) < 10.f); + Filter collisionFilter = (nabs(aod::collision::posZ) < cfgVtzCut) && (aod::cent::centFT0C > cfgCentMin) && (aod::cent::centFT0C < cfgCentMax); Filter ptfilter = aod::track::pt > cfgMinPt; Filter etafilter = aod::track::eta < cfgMaxEta; - Filter properPIDfilter = aod::cme_track_pid_columns::nPidFlag != -1; + Filter properPIDfilter = aod::cme_track_pid_columns::nPidFlag > (int8_t)0; Partition>> tracksSet1 = aod::cme_track_pid_columns::nPidFlag == 1; Partition>> tracksSet2 = aod::cme_track_pid_columns::nPidFlag == 2; Partition>> tracksSet3 = aod::cme_track_pid_columns::nPidFlag == 3; + // Partition>> tracksSet4 = aod::cme_track_pid_columns::nPidFlag == 4; + // Partition>> tracksSet5 = aod::cme_track_pid_columns::nPidFlag == 5; + // Partition>> tracksSet6 = aod::cme_track_pid_columns::nPidFlag == 6; void init(InitContext const&) { @@ -589,6 +965,23 @@ struct pidcme { // o2-linter: disable=name/struct refBId = 5; } + if (cfgUseAdditionalEventCut) { + fMultPVCutLow = new TF1("fMultPVCutLow", "[0]+[1]*x+[2]*x*x+[3]*x*x*x+[4]*x*x*x*x - 3.5*([5]+[6]*x+[7]*x*x+[8]*x*x*x+[9]*x*x*x*x)", 0, 100); + fMultPVCutLow->SetParameters(3257.29, -121.848, 1.98492, -0.0172128, 6.47528e-05, 154.756, -1.86072, -0.0274713, 0.000633499, -3.37757e-06); + fMultPVCutHigh = new TF1("fMultPVCutHigh", "[0]+[1]*x+[2]*x*x+[3]*x*x*x+[4]*x*x*x*x + 3.5*([5]+[6]*x+[7]*x*x+[8]*x*x*x+[9]*x*x*x*x)", 0, 100); + fMultPVCutHigh->SetParameters(3257.29, -121.848, 1.98492, -0.0172128, 6.47528e-05, 154.756, -1.86072, -0.0274713, 0.000633499, -3.37757e-06); + + fMultCutLow = new TF1("fMultCutLow", "[0]+[1]*x+[2]*x*x+[3]*x*x*x - 2.*([4]+[5]*x+[6]*x*x+[7]*x*x*x+[8]*x*x*x*x)", 0, 100); + fMultCutLow->SetParameters(1654.46, -47.2379, 0.449833, -0.0014125, 150.773, -3.67334, 0.0530503, -0.000614061, 3.15956e-06); + fMultCutHigh = new TF1("fMultCutHigh", "[0]+[1]*x+[2]*x*x+[3]*x*x*x + 3.*([4]+[5]*x+[6]*x*x+[7]*x*x*x+[8]*x*x*x*x)", 0, 100); + fMultCutHigh->SetParameters(1654.46, -47.2379, 0.449833, -0.0014125, 150.773, -3.67334, 0.0530503, -0.000614061, 3.15956e-06); + + fT0AV0AMean = new TF1("fT0AV0AMean", "[0]+[1]*x", 0, 200000); + fT0AV0AMean->SetParameters(-1601.0581, 9.417652e-01); + fT0AV0ASigma = new TF1("fT0AV0ASigma", "[0]+[1]*x+[2]*x*x+[3]*x*x*x+[4]*x*x*x*x", 0, 200000); + fT0AV0ASigma->SetParameters(463.4144, 6.796509e-02, -9.097136e-07, 7.971088e-12, -2.600581e-17); + } + AxisSpec axisCent{cfgaxisCent, "centrality"}; AxisSpec axisQvec{cfgaxisQvec, "Q"}; AxisSpec axisQvecF{cfgaxisQvecF, "Q"}; @@ -596,15 +989,45 @@ struct pidcme { // o2-linter: disable=name/struct AxisSpec axisCos{cfgaxiscos, "angle function"}; AxisSpec axisPt{cfgaxispt, "trasverse momentum"}; - AxisSpec axisCentMerged{cfgaxisCentMerged, "merged centrality"}; + AxisSpec axisCentMerged{cfgaxisCentMerged, "merged centrality for cme and PID v2"}; AxisSpec axissumpt{cfgaxissumpt, "#it{p}_{T}^{sum}}"}; AxisSpec axisdeltaeta{cfgaxisdeltaeta, "#Delta#eta"}; AxisSpec axisvertexz = {100, -15., 15., "vrtx_{Z} [cm]"}; - histosQA.add(Form("QA/histEventCount"), "", {HistType::kTH1F, {{2, 0.0, 2.0}}}); - histosQA.get(HIST("QA/histEventCount"))->GetXaxis()->SetBinLabel(1, "Not selected events"); - histosQA.get(HIST("QA/histEventCount"))->GetXaxis()->SetBinLabel(2, "Selected events"); + histosQA.add(Form("QA/histEventCount"), "", {HistType::kTH1F, {{3, 0.0, 3.0}}}); + histosQA.get(HIST("QA/histEventCount"))->GetXaxis()->SetBinLabel(1, "Filtered event"); + histosQA.get(HIST("QA/histEventCount"))->GetXaxis()->SetBinLabel(2, "after sel8"); + histosQA.get(HIST("QA/histEventCount"))->GetXaxis()->SetBinLabel(3, "after additional event cut"); + if(cfgUseAdditionalEventCut){ + histosQA.add(Form("QA/histEventCountDetail"), "Number of Event;; Count", {HistType::kTH1F, {{10, 0, 10}}}); + histosQA.get(HIST("QA/histEventCountDetail"))->GetXaxis()->SetBinLabel(1, "after sel8"); + histosQA.get(HIST("QA/histEventCountDetail"))->GetXaxis()->SetBinLabel(2, "kIsGoodZvtxFT0vsPV"); + histosQA.get(HIST("QA/histEventCountDetail"))->GetXaxis()->SetBinLabel(3, "kNoSameBunchPileup"); + histosQA.get(HIST("QA/histEventCountDetail"))->GetXaxis()->SetBinLabel(4, "kNoCollInTimeRangeStandard"); + histosQA.get(HIST("QA/histEventCountDetail"))->GetXaxis()->SetBinLabel(5, "kIsGoodITSLayersAll"); + histosQA.get(HIST("QA/histEventCountDetail"))->GetXaxis()->SetBinLabel(6, "kNoCollInRofStandard"); + histosQA.get(HIST("QA/histEventCountDetail"))->GetXaxis()->SetBinLabel(7, "kNoHighMultCollInPrevRof"); + histosQA.get(HIST("QA/histEventCountDetail"))->GetXaxis()->SetBinLabel(8, "occupancy"); + histosQA.get(HIST("QA/histEventCountDetail"))->GetXaxis()->SetBinLabel(9, "MultCorrelation"); + histosQA.get(HIST("QA/histEventCountDetail"))->GetXaxis()->SetBinLabel(10, "cfgEvSelV0AT0ACut"); + } + if(cfgOpenFullEventQA){ + histosQA.add("QA/hist_globalTracks_centT0C_before", "before cut;Centrality T0C;mulplicity global tracks", {HistType::kTH2D, {cfgaxisCentForQA, cfgaxisNch}}); + histosQA.add("QA/hist_PVTracks_centT0C_before", "before cut;Centrality T0C;mulplicity PV tracks", {HistType::kTH2D, {cfgaxisCentForQA, cfgaxisNchPV}}); + histosQA.add("QA/hist_globalTracks_PVTracks_before", "before cut;mulplicity PV tracks;mulplicity global tracks", {HistType::kTH2D, {cfgaxisNchPV, cfgaxisNch}}); + histosQA.add("QA/hist_globalTracks_multT0A_before", "before cut;mulplicity T0A;mulplicity global tracks", {HistType::kTH2D, {cfgaxisT0A, cfgaxisNch}}); + histosQA.add("QA/hist_globalTracks_multV0A_before", "before cut;mulplicity V0A;mulplicity global tracks", {HistType::kTH2D, {cfgaxisT0A, cfgaxisNch}}); + histosQA.add("QA/hist_multV0A_multT0A_before", "before cut;mulplicity T0A;mulplicity V0A", {HistType::kTH2D, {cfgaxisT0A, cfgaxisT0A}}); + histosQA.add("QA/hist_multT0C_centT0C_before", "before cut;Centrality T0C;mulplicity T0C", {HistType::kTH2D, {cfgaxisCentForQA, cfgaxisT0C}}); + histosQA.add("QA/hist_globalTracks_centT0C_after", "after cut;Centrality T0C;mulplicity global tracks", {HistType::kTH2D, {cfgaxisCentForQA, cfgaxisNch}}); + histosQA.add("QA/hist_PVTracks_centT0C_after", "after cut;Centrality T0C;mulplicity PV tracks", {HistType::kTH2D, {cfgaxisCentForQA, cfgaxisNchPV}}); + histosQA.add("QA/hist_globalTracks_PVTracks_after", "after cut;mulplicity PV tracks;mulplicity global tracks", {HistType::kTH2D, {cfgaxisNchPV, cfgaxisNch}}); + histosQA.add("QA/hist_globalTracks_multT0A_after", "after cut;mulplicity T0A;mulplicity global tracks", {HistType::kTH2D, {cfgaxisT0A, cfgaxisNch}}); + histosQA.add("QA/hist_globalTracks_multV0A_after", "after cut;mulplicity V0A;mulplicity global tracks", {HistType::kTH2D, {cfgaxisT0A, cfgaxisNch}}); + histosQA.add("QA/hist_multV0A_multT0A_after", "after cut;mulplicity T0A;mulplicity V0A", {HistType::kTH2D, {cfgaxisT0A, cfgaxisT0A}}); + histosQA.add("QA/hist_multT0C_centT0C_after", "after cut;Centrality T0C;mulplicity T0C", {HistType::kTH2D, {cfgaxisCentForQA, cfgaxisT0C}}); + } histosQA.add(Form("QA/histVertexZRec"), "", {HistType::kTH1F, {axisvertexz}}); histosQA.add(Form("QA/histCentrality"), "", {HistType::kTH1F, {axisCent}}); histosQA.add(Form("QA/histQvec_CorrL0_V2"), "", {HistType::kTH3F, {axisQvecF, axisQvecF, axisCent}}); @@ -639,7 +1062,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_PiPi_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiPi_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiPi_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if (cfgkOpenSsOsCrossCheck) { + if (cfgkOpenSsOsCrossCheck){ histosQA.add(Form("PIDCME/histgamama_PiPi_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiPi_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiPi_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -659,7 +1082,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_KaKa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_KaKa_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_KaKa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if (cfgkOpenSsOsCrossCheck) { + if (cfgkOpenSsOsCrossCheck){ histosQA.add(Form("PIDCME/histgamama_KaKa_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_KaKa_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_KaKa_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -679,7 +1102,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_PrPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PrPr_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PrPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if (cfgkOpenSsOsCrossCheck) { + if(cfgkOpenSsOsCrossCheck){ histosQA.add(Form("PIDCME/histgamama_PrPr_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PrPr_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PrPr_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -699,7 +1122,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_PiKa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiKa_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiKa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if (cfgkOpenSsOsCrossCheck) { + if(cfgkOpenSsOsCrossCheck){ histosQA.add(Form("PIDCME/histgamama_PiKa_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiKa_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiKa_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -719,7 +1142,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_PiPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiPr_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if (cfgkOpenSsOsCrossCheck) { + if(cfgkOpenSsOsCrossCheck){ histosQA.add(Form("PIDCME/histgamama_PiPr_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiPr_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiPr_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -739,7 +1162,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_KaPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_KaPr_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_KaPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if (cfgkOpenSsOsCrossCheck) { + if(cfgkOpenSsOsCrossCheck){ histosQA.add(Form("PIDCME/histgamama_KaPr_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_KaPr_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_KaPr_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -759,7 +1182,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_HaHa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_HaHa_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_HaHa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if (cfgkOpenSsOsCrossCheck) { + if(cfgkOpenSsOsCrossCheck){ histosQA.add(Form("PIDCME/histgamama_HaHa_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_HaHa_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_HaHa_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -774,17 +1197,72 @@ struct pidcme { // o2-linter: disable=name/struct } template - bool selEvent(const CollType& collision) + bool selEvent(const CollType& collision, const int multTrk, const float centrality) { - if (!collision.selection_bit(aod::evsel::kIsGoodZvtxFT0vsPV)) { + histosQA.fill(HIST("QA/histEventCountDetail"), 0.5); + if (cfgOpenEvSelkIsGoodZvtxFT0vsPV && !collision.selection_bit(aod::evsel::kIsGoodZvtxFT0vsPV)) { + return 0; + } + if (cfgOpenEvSelkIsGoodZvtxFT0vsPV){ + histosQA.fill(HIST("QA/histEventCountDetail"), 1.5); + } + if (cfgOpenEvSelkNoSameBunchPileup && !collision.selection_bit(aod::evsel::kNoSameBunchPileup)) { + return 0; + } + if (cfgOpenEvSelkNoSameBunchPileup){ + histosQA.fill(HIST("QA/histEventCountDetail"), 2.5); + } + if (cfgOpenEvSelkNoCollInTimeRangeStandard && !collision.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard)) { + return 0; + } + if (cfgOpenEvSelkNoCollInTimeRangeStandard){ + histosQA.fill(HIST("QA/histEventCountDetail"), 3.5); + } + if (cfgOpenEvSelkIsGoodITSLayersAll && !collision.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll)){ + return 0; + } + if (cfgOpenEvSelkIsGoodITSLayersAll){ + histosQA.fill(HIST("QA/histEventCountDetail"), 4.5); + } + if (cfgOpenEvSelkNoCollInRofStandard && !collision.selection_bit(o2::aod::evsel::kNoCollInRofStandard)){ + return 0; + } + if (cfgOpenEvSelkNoCollInRofStandard){ + histosQA.fill(HIST("QA/histEventCountDetail"), 5.5); + } + if (cfgOpenEvSelkNoHighMultCollInPrevRof && !collision.selection_bit(o2::aod::evsel::kNoHighMultCollInPrevRof)){ return 0; } - if (!collision.selection_bit(aod::evsel::kNoSameBunchPileup)) { + if (cfgOpenEvSelkNoHighMultCollInPrevRof){ + histosQA.fill(HIST("QA/histEventCountDetail"), 6.5); + } + auto multNTracksPV = collision.multNTracksPV(); + auto occupancy = collision.trackOccupancyInTimeRange(); + if (cfgOpenEvSelOccupancy && (occupancy < cfgCutOccupancyLow || occupancy > cfgCutOccupancyHigh)){ return 0; } - if (!collision.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard)) { + if(cfgOpenEvSelOccupancy){ + histosQA.fill(HIST("QA/histEventCountDetail"), 7.5); + } + if (cfgOpenEvSelMultCorrelation) { + if (multNTracksPV < fMultPVCutLow->Eval(centrality)) + return 0; + if (multNTracksPV > fMultPVCutHigh->Eval(centrality)) + return 0; + if (multTrk < fMultCutLow->Eval(centrality)) + return 0; + if (multTrk > fMultCutHigh->Eval(centrality)) + return 0; + } + if (cfgOpenEvSelMultCorrelation){ + histosQA.fill(HIST("QA/histEventCountDetail"), 8.5); + } + if (cfgOpenEvSelV0AT0ACut && (std::fabs(collision.multFV0A() - fT0AV0AMean->Eval(collision.multFT0A())) > 5 * fT0AV0ASigma->Eval(collision.multFT0A()))){ return 0; } + if (cfgOpenEvSelV0AT0ACut){ + histosQA.fill(HIST("QA/histEventCountDetail"), 9.5); + } return 1; } @@ -894,11 +1372,12 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPi_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if (cfgkOpenSsOsCrossCheck) { - if (trk1.sign() > 0 && trk2.sign() > 0) { + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() > 0){ histosQA.fill(HIST("PIDCME/histgamama_PiPi_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPi_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } else { + } + else { histosQA.fill(HIST("PIDCME/histgamama_PiPi_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPi_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -910,11 +1389,12 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPi_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if (cfgkOpenSsOsCrossCheck) { - if (trk1.sign() > 0 && trk2.sign() < 0) { + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() < 0){ histosQA.fill(HIST("PIDCME/histgamama_PiPi_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPi_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } else { + } + else { histosQA.fill(HIST("PIDCME/histgamama_PiPi_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPi_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -937,11 +1417,12 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_KaKa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if (cfgkOpenSsOsCrossCheck) { - if (trk1.sign() > 0 && trk2.sign() > 0) { + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() > 0){ histosQA.fill(HIST("PIDCME/histgamama_KaKa_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaKa_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } else { + } + else { histosQA.fill(HIST("PIDCME/histgamama_KaKa_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaKa_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -953,11 +1434,12 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_KaKa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if (cfgkOpenSsOsCrossCheck) { - if (trk1.sign() > 0 && trk2.sign() < 0) { + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() < 0){ histosQA.fill(HIST("PIDCME/histgamama_KaKa_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaKa_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } else { + } + else { histosQA.fill(HIST("PIDCME/histgamama_KaKa_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaKa_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -980,11 +1462,12 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PrPr_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if (cfgkOpenSsOsCrossCheck) { - if (trk1.sign() > 0 && trk2.sign() > 0) { + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() > 0){ histosQA.fill(HIST("PIDCME/histgamama_PrPr_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PrPr_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } else { + } + else { histosQA.fill(HIST("PIDCME/histgamama_PrPr_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PrPr_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -996,11 +1479,12 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PrPr_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if (cfgkOpenSsOsCrossCheck) { - if (trk1.sign() > 0 && trk2.sign() < 0) { + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() < 0){ histosQA.fill(HIST("PIDCME/histgamama_PrPr_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PrPr_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } else { + } + else { histosQA.fill(HIST("PIDCME/histgamama_PrPr_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PrPr_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -1023,11 +1507,12 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiKa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if (cfgkOpenSsOsCrossCheck) { - if (trk1.sign() > 0 && trk2.sign() > 0) { + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() > 0){ histosQA.fill(HIST("PIDCME/histgamama_PiKa_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiKa_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } else { + } + else { histosQA.fill(HIST("PIDCME/histgamama_PiKa_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiKa_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -1039,11 +1524,12 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiKa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if (cfgkOpenSsOsCrossCheck) { - if (trk1.sign() > 0 && trk2.sign() < 0) { + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() < 0){ histosQA.fill(HIST("PIDCME/histgamama_PiKa_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiKa_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } else { + } + else { histosQA.fill(HIST("PIDCME/histgamama_PiKa_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiKa_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -1066,11 +1552,12 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPr_ss_Dif"), collision.centFT0C(), trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()), std::cos((trk1.phi() - trk3.phi()))); - if (cfgkOpenSsOsCrossCheck) { - if (trk1.sign() > 0 && trk3.sign() > 0) { + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk3.sign() > 0){ histosQA.fill(HIST("PIDCME/histgamama_PiPr_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPr_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); - } else { + } + else { histosQA.fill(HIST("PIDCME/histgamama_PiPr_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPr_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); } @@ -1082,11 +1569,12 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPr_os_Dif"), collision.centFT0C(), trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()), std::cos((trk1.phi() - trk3.phi()))); - if (cfgkOpenSsOsCrossCheck) { - if (trk1.sign() > 0 && trk3.sign() < 0) { + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk3.sign() < 0){ histosQA.fill(HIST("PIDCME/histgamama_PiPr_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPr_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); - } else { + } + else { histosQA.fill(HIST("PIDCME/histgamama_PiPr_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPr_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); } @@ -1109,11 +1597,12 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_KaPr_ss_Dif"), collision.centFT0C(), trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()), std::cos((trk2.phi() - trk3.phi()))); - if (cfgkOpenSsOsCrossCheck) { - if (trk2.sign() > 0 && trk3.sign() > 0) { + if(cfgkOpenSsOsCrossCheck){ + if(trk2.sign() > 0 && trk3.sign() > 0){ histosQA.fill(HIST("PIDCME/histgamama_KaPr_PP"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaPr_PP"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); - } else { + } + else { histosQA.fill(HIST("PIDCME/histgamama_KaPr_NN"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaPr_NN"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); } @@ -1125,11 +1614,12 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_KaPr_os_Dif"), collision.centFT0C(), trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()), std::cos((trk2.phi() - trk3.phi()))); - if (cfgkOpenSsOsCrossCheck) { - if (trk2.sign() > 0 && trk3.sign() < 0) { + if(cfgkOpenSsOsCrossCheck){ + if(trk2.sign() > 0 && trk3.sign() < 0){ histosQA.fill(HIST("PIDCME/histgamama_KaPr_PN"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaPr_PN"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); - } else { + } + else { histosQA.fill(HIST("PIDCME/histgamama_KaPr_NP"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaPr_NP"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); } @@ -1142,15 +1632,39 @@ struct pidcme { // o2-linter: disable=name/struct } } - void process(soa::Filtered>::iterator const& collision, soa::Filtered> const& tracks) + void process(soa::Filtered>::iterator const& collision, soa::Filtered> const& tracks) { + const auto cent = collision.centFT0C(); histosQA.fill(HIST("QA/histEventCount"), 0.5); - if (!selEvent(collision)) { + if (!collision.sel8()) + return; + if (tracks.size() < 1) return; - } histosQA.fill(HIST("QA/histEventCount"), 1.5); - histosQA.fill(HIST("QA/histCentrality"), collision.centFT0C()); + if (cfgOpenFullEventQA){ + histosQA.fill(HIST("QA/hist_globalTracks_centT0C_before"), cent, tracks.size()); + histosQA.fill(HIST("QA/hist_PVTracks_centT0C_before"), cent, collision.multNTracksPV()); + histosQA.fill(HIST("QA/hist_globalTracks_PVTracks_before"), collision.multNTracksPV(), tracks.size()); + histosQA.fill(HIST("QA/hist_globalTracks_multT0A_before"), collision.multFT0A(), tracks.size()); + histosQA.fill(HIST("QA/hist_globalTracks_multV0A_before"), collision.multFV0A(), tracks.size()); + histosQA.fill(HIST("QA/hist_multV0A_multT0A_before"), collision.multFT0A(), collision.multFV0A()); + histosQA.fill(HIST("QA/hist_multT0C_centT0C_before"), cent, collision.multFT0C()); + } + if (cfgUseAdditionalEventCut && !selEvent(collision, tracks.size(),cent)) { + return; + } + histosQA.fill(HIST("QA/histEventCount"), 2.5); + histosQA.fill(HIST("QA/histCentrality"), cent); histosQA.fill(HIST("QA/histVertexZRec"), collision.posZ()); + if (cfgOpenFullEventQA){ + histosQA.fill(HIST("QA/hist_globalTracks_centT0C_after"), cent, tracks.size()); + histosQA.fill(HIST("QA/hist_PVTracks_centT0C_after"), cent, collision.multNTracksPV()); + histosQA.fill(HIST("QA/hist_globalTracks_PVTracks_after"), collision.multNTracksPV(), tracks.size()); + histosQA.fill(HIST("QA/hist_globalTracks_multT0A_after"), collision.multFT0A(), tracks.size()); + histosQA.fill(HIST("QA/hist_globalTracks_multV0A_after"), collision.multFV0A(), tracks.size()); + histosQA.fill(HIST("QA/hist_multV0A_multT0A_after"), collision.multFT0A(), collision.multFV0A()); + histosQA.fill(HIST("QA/hist_multT0C_centT0C_after"), cent, collision.multFT0C()); + } auto tracks1 = tracksSet1->sliceByCached(aod::track::collisionId, collision.globalIndex(), cache); auto tracks2 = tracksSet2->sliceByCached(aod::track::collisionId, collision.globalIndex(), cache); auto tracks3 = tracksSet3->sliceByCached(aod::track::collisionId, collision.globalIndex(), cache); @@ -1165,9 +1679,9 @@ struct pidcme { // o2-linter: disable=name/struct for (const auto& trk : tracks) { if (!selTrack(trk)) continue; - histosQA.fill(HIST("V2/histSinDetV2"), collision.centFT0C(), trk.pt(), + histosQA.fill(HIST("V2/histSinDetV2"), cent, trk.pt(), std::sin(static_cast(cfgnMods->at(i)) * (trk.phi() - psiNGlobal))); - histosQA.fill(HIST("V2/histCosDetV2"), collision.centFT0C(), trk.pt(), + histosQA.fill(HIST("V2/histCosDetV2"), cent, trk.pt(), std::cos(static_cast(cfgnMods->at(i)) * (trk.phi() - psiNGlobal))); } if (cfgkOpenCME && cfgkOpenHaHa && cfgnMods->at(i) == 2) { @@ -1176,35 +1690,37 @@ struct pidcme { // o2-linter: disable=name/struct if (trk1.globalIndex() == trk2.globalIndex()) continue; if (trk1.sign() == trk2.sign()) { - histosQA.fill(HIST("PIDCME/histgamama_HaHa_ss"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); - histosQA.fill(HIST("PIDCME/histdelta_HaHa_ss"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - histosQA.fill(HIST("PIDCME/Differential/histgamama_HaHa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/histgamama_HaHa_ss"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); + histosQA.fill(HIST("PIDCME/histdelta_HaHa_ss"), cent, std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/Differential/histgamama_HaHa_ss_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); - histosQA.fill(HIST("PIDCME/Differential/histdelta_HaHa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/Differential/histdelta_HaHa_ss_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if (cfgkOpenSsOsCrossCheck) { - if (trk1.sign() > 0 && trk2.sign() > 0) { - histosQA.fill(HIST("PIDCME/histgamama_HaHa_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); - histosQA.fill(HIST("PIDCME/histdelta_HaHa_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } else { - histosQA.fill(HIST("PIDCME/histgamama_HaHa_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); - histosQA.fill(HIST("PIDCME/histdelta_HaHa_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() > 0){ + histosQA.fill(HIST("PIDCME/histgamama_HaHa_PP"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); + histosQA.fill(HIST("PIDCME/histdelta_HaHa_PP"), cent, std::cos((trk1.phi() - trk2.phi()))); + } + else { + histosQA.fill(HIST("PIDCME/histgamama_HaHa_NN"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); + histosQA.fill(HIST("PIDCME/histdelta_HaHa_NN"), cent, std::cos((trk1.phi() - trk2.phi()))); } } } else { - histosQA.fill(HIST("PIDCME/histgamama_HaHa_os"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); - histosQA.fill(HIST("PIDCME/histdelta_HaHa_os"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - histosQA.fill(HIST("PIDCME/Differential/histgamama_HaHa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/histgamama_HaHa_os"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); + histosQA.fill(HIST("PIDCME/histdelta_HaHa_os"), cent, std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/Differential/histgamama_HaHa_os_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); - histosQA.fill(HIST("PIDCME/Differential/histdelta_HaHa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/Differential/histdelta_HaHa_os_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if (cfgkOpenSsOsCrossCheck) { - if (trk1.sign() > 0 && trk2.sign() < 0) { - histosQA.fill(HIST("PIDCME/histgamama_HaHa_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); - histosQA.fill(HIST("PIDCME/histdelta_HaHa_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } else { - histosQA.fill(HIST("PIDCME/histgamama_HaHa_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); - histosQA.fill(HIST("PIDCME/histdelta_HaHa_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + if(cfgkOpenSsOsCrossCheck){ + if(trk1.sign() > 0 && trk2.sign() < 0){ + histosQA.fill(HIST("PIDCME/histgamama_HaHa_PN"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); + histosQA.fill(HIST("PIDCME/histdelta_HaHa_PN"), cent, std::cos((trk1.phi() - trk2.phi()))); + } + else { + histosQA.fill(HIST("PIDCME/histgamama_HaHa_NP"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); + histosQA.fill(HIST("PIDCME/histdelta_HaHa_NP"), cent, std::cos((trk1.phi() - trk2.phi()))); } } } @@ -1221,6 +1737,7 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{ adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), adaptAnalysisTask(cfgc), }; } From 997d97a9c131e5d4e224aaf2262c77bfeb5dcdac Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Sun, 2 Feb 2025 08:36:40 +0000 Subject: [PATCH 04/14] Please consider the following formatting changes --- PWGCF/Flow/Tasks/pidcme.cxx | 720 +++++++++++++++++------------------- 1 file changed, 345 insertions(+), 375 deletions(-) diff --git a/PWGCF/Flow/Tasks/pidcme.cxx b/PWGCF/Flow/Tasks/pidcme.cxx index 60b96fa8687..b510ba660d9 100644 --- a/PWGCF/Flow/Tasks/pidcme.cxx +++ b/PWGCF/Flow/Tasks/pidcme.cxx @@ -66,7 +66,7 @@ DECLARE_SOA_COLUMN(NSigmaPiTPC, nSigmaPiTPC, float); DECLARE_SOA_COLUMN(NSigmaKaTPC, nSigmaKaTPC, float); DECLARE_SOA_COLUMN(NSigmaPrTPC, nSigmaPrTPC, float); } // namespace cme_track_pid_columns -DECLARE_SOA_TABLE(Flags, "AOD", "Flags", cme_track_pid_columns::NPidFlag,cme_track_pid_columns::AverClusterSizeCosl,cme_track_pid_columns::NSigmaPiITS,cme_track_pid_columns::NSigmaKaITS,cme_track_pid_columns::NSigmaPrITS,cme_track_pid_columns::NSigmaPiTPC,cme_track_pid_columns::NSigmaKaTPC,cme_track_pid_columns::NSigmaPrTPC); +DECLARE_SOA_TABLE(Flags, "AOD", "Flags", cme_track_pid_columns::NPidFlag, cme_track_pid_columns::AverClusterSizeCosl, cme_track_pid_columns::NSigmaPiITS, cme_track_pid_columns::NSigmaKaITS, cme_track_pid_columns::NSigmaPrITS, cme_track_pid_columns::NSigmaPiTPC, cme_track_pid_columns::NSigmaKaTPC, cme_track_pid_columns::NSigmaPrTPC); } // namespace o2::aod using TracksPID = soa::Join; @@ -96,10 +96,10 @@ struct FillPIDcolums { Configurable cfgOpenITSCut{"cfgOpenITSCut", true, "open ITSnsigma cut"}; Configurable cfgOpenDetailPlots{"cfgOpenDetailPlots", true, "open detail TH3D plots for nSigmaTPC-ITS Pt-eta-Phi nSigmaITS-clustersize"}; - - Configurable> cfgnSigmaCutTPC{"cfgnSigmaCutTPC", {3,3,3}, "TPC cut for pi k p respectively at low pt"}; - Configurable> cfgnSigmaCutRMS{"cfgnSigmaCutRMS", {3,3,3}, "TPC_TOF combined cut for pi k p respectively at high pt"}; - Configurable> cfgnSigmaCutITS{"cfgnSigmaCutITS", {3,2.5,2}, "TPC_TOF combined cut for pi k p respectively at high pt"}; + + Configurable> cfgnSigmaCutTPC{"cfgnSigmaCutTPC", {3, 3, 3}, "TPC cut for pi k p respectively at low pt"}; + Configurable> cfgnSigmaCutRMS{"cfgnSigmaCutRMS", {3, 3, 3}, "TPC_TOF combined cut for pi k p respectively at high pt"}; + Configurable> cfgnSigmaCutITS{"cfgnSigmaCutITS", {3, 2.5, 2}, "TPC_TOF combined cut for pi k p respectively at high pt"}; static float averageClusterSizeCosl(uint32_t itsClusterSizes, float eta) { @@ -157,7 +157,7 @@ struct FillPIDcolums { // Fill cross pid QA for (int i = 0; i < 3; ++i) { if (std::abs(nSigmaToUse[i]) < pidVector[i]) { - if(i == 0) { + if (i == 0) { histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_cross_Pi"), candidate.tpcNSigmaPi(), candidate.tofNSigmaPi(), candidate.pt()); histosQA.fill(HIST("QA/PID/histdEdxTPC_cross_Pi"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal()); histosQA.fill(HIST("QA/PID/histnSigma_cross_Pi"), candidate.tpcNSigmaPi()); @@ -169,7 +169,7 @@ struct FillPIDcolums { histosQA.fill(HIST("QA/PID/histPhi_Dis_cross_Pi"), candidate.phi()); histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Pi"), candidate.tpcNSigmaPi(), candidate.itsNSigmaPi()); } - if(i == 1) { + if (i == 1) { histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_cross_Ka"), candidate.tpcNSigmaKa(), candidate.tofNSigmaKa(), candidate.pt()); histosQA.fill(HIST("QA/PID/histdEdxTPC_cross_Ka"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal()); histosQA.fill(HIST("QA/PID/histnSigma_cross_Ka"), candidate.tpcNSigmaKa()); @@ -181,7 +181,7 @@ struct FillPIDcolums { histosQA.fill(HIST("QA/PID/histPhi_Dis_cross_Ka"), candidate.phi()); histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Ka"), candidate.tpcNSigmaKa(), candidate.itsNSigmaKa()); } - if(i == 2) { + if (i == 2) { histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_cross_Pr"), candidate.tpcNSigmaPr(), candidate.tofNSigmaPr(), candidate.pt()); histosQA.fill(HIST("QA/PID/histdEdxTPC_cross_Pr"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal()); histosQA.fill(HIST("QA/PID/histnSigma_cross_Pr"), candidate.tpcNSigmaPr()); @@ -203,7 +203,7 @@ struct FillPIDcolums { } } return pid + 1; // shift the pid by 1, 1 = pion, 2 = kaon, 3 = proton - } + } HistogramRegistry histosQA{"histosQAPID", {}, OutputObjHandlingPolicy::AnalysisObject}; @@ -314,41 +314,41 @@ struct FillPIDcolums { histosQA.add(Form("QA/PID/histPhi_Dis_AfterITS_Ka"), "", {HistType::kTH1F, {axisPhi}}); histosQA.add(Form("QA/PID/histPhi_Dis_AfterITS_Pr"), "", {HistType::kTH1F, {axisPhi}}); // Hist 3D for PID check - if(cfgOpenDetailPlots){ - histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosPi"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi,axisPtPID,cfgaxisetaPID}}); - histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegPi"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi,axisPtPID,cfgaxisetaPID}}); - histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosKa"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi,axisPtPID,cfgaxisetaPID}}); - histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegKa"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi,axisPtPID,cfgaxisetaPID}}); - histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosPr"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi,axisPtPID,cfgaxisetaPID}}); - histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegPr"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi,axisPtPID,cfgaxisetaPID}}); - histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPi_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); - histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosKa_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); - histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPr_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); - histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPi_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); - histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosKa_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); - histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPr_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); - histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPi_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); - histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegKa_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); - histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPr_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); - histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPi_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); - histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegKa_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); - histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPr_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisnSigmaITS,axisPtPID}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPi_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosKa_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPr_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPi_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosKa_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPr_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPr_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); - histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPr_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC,axisClusterSizenSigma,axisPtPID}}); + if (cfgOpenDetailPlots) { + histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosPi"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi, axisPtPID, cfgaxisetaPID}}); + histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegPi"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi, axisPtPID, cfgaxisetaPID}}); + histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosKa"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi, axisPtPID, cfgaxisetaPID}}); + histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegKa"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi, axisPtPID, cfgaxisetaPID}}); + histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosPr"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi, axisPtPID, cfgaxisetaPID}}); + histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegPr"), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhi, axisPtPID, cfgaxisetaPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPi_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaITS, axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosKa_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaITS, axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPr_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaITS, axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPi_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaITS, axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosKa_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaITS, axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPr_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaITS, axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPi_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaITS, axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegKa_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaITS, axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPr_Before"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaITS, axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPi_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaITS, axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegKa_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaITS, axisPtPID}}); + histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPr_After"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisnSigmaITS, axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPi_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisClusterSizenSigma, axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosKa_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisClusterSizenSigma, axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPr_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisClusterSizenSigma, axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPi_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisClusterSizenSigma, axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosKa_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisClusterSizenSigma, axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPr_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisClusterSizenSigma, axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisClusterSizenSigma, axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisClusterSizenSigma, axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPr_Before"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisClusterSizenSigma, axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisClusterSizenSigma, axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisClusterSizenSigma, axisPtPID}}); + histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPr_After"), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {axisnSigmaTPC, axisClusterSizenSigma, axisPtPID}}); } } Produces pidCmeTable; - void process( TracksPID const& tracks) + void process(TracksPID const& tracks) { auto tracksWithITSPid = soa::Attach0) { - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPi_Before"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPi_Before"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } - else if (track.sign() <0) { - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPi_Before"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_Before"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Pi"), track.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pi"), track.tpcNSigmaPi(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_Pi"), track.tpcNSigmaPi(), track.itsNSigmaPi()); + histosQA.fill(HIST("QA/PID/histdEdxTPC_Pi"), track.sign() * track.tpcInnerParam(), track.tpcSignal()); + histosQA.fill(HIST("QA/PID/histnSigma_Pi"), track.tpcNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigma_Pt_Pi"), track.pt(), track.tpcNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigma_com_Pi"), std::hypot(track.tpcNSigmaPi(), track.tofNSigmaPi())); + histosQA.fill(HIST("QA/PID/histnSigma_TOF_Pi"), track.tofNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_Pi"), track.itsNSigmaPi()); + histosQA.fill(HIST("QA/PID/histPhi_Dis_Pi"), track.phi()); + if (cfgOpenDetailPlots) { + if (track.sign() > 0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPi_Before"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPi_Before"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } else if (track.sign() < 0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPi_Before"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_Before"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); } } break; case 2: histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_Ka"), track.tpcNSigmaKa(), track.tofNSigmaKa(), track.pt()); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_Ka"), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Ka"),track.p() ,averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Ka"),track.tpcNSigmaKa() ,averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_Ka"),track.tpcNSigmaKa() ,track.itsNSigmaKa()); - histosQA.fill(HIST("QA/PID/histdEdxTPC_Ka"),track.sign() * track.tpcInnerParam(), track.tpcSignal()); - histosQA.fill(HIST("QA/PID/histnSigma_Ka"),track.tpcNSigmaKa()); - histosQA.fill(HIST("QA/PID/histnSigma_Pt_Ka"),track.pt(), track.tpcNSigmaKa()); - histosQA.fill(HIST("QA/PID/histnSigma_com_Ka"),std::hypot(track.tpcNSigmaKa(), track.tofNSigmaKa())); - histosQA.fill(HIST("QA/PID/histnSigma_TOF_Ka"),track.tofNSigmaKa()); - histosQA.fill(HIST("QA/PID/histnSigma_ITS_Ka"),track.itsNSigmaKa()); - histosQA.fill(HIST("QA/PID/histPhi_Dis_Ka"),track.phi()); - if(cfgOpenDetailPlots){ - if (track.sign() >0) { - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosKa_Before"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosKa_Before"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } - else if (track.sign() <0) { - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegKa_Before"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_Before"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Ka"), track.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Ka"), track.tpcNSigmaKa(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_Ka"), track.tpcNSigmaKa(), track.itsNSigmaKa()); + histosQA.fill(HIST("QA/PID/histdEdxTPC_Ka"), track.sign() * track.tpcInnerParam(), track.tpcSignal()); + histosQA.fill(HIST("QA/PID/histnSigma_Ka"), track.tpcNSigmaKa()); + histosQA.fill(HIST("QA/PID/histnSigma_Pt_Ka"), track.pt(), track.tpcNSigmaKa()); + histosQA.fill(HIST("QA/PID/histnSigma_com_Ka"), std::hypot(track.tpcNSigmaKa(), track.tofNSigmaKa())); + histosQA.fill(HIST("QA/PID/histnSigma_TOF_Ka"), track.tofNSigmaKa()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_Ka"), track.itsNSigmaKa()); + histosQA.fill(HIST("QA/PID/histPhi_Dis_Ka"), track.phi()); + if (cfgOpenDetailPlots) { + if (track.sign() > 0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosKa_Before"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosKa_Before"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } else if (track.sign() < 0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegKa_Before"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_Before"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); } } break; case 3: histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_Pr"), track.tpcNSigmaPr(), track.tofNSigmaPr(), track.pt()); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_Pr"), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Pr"),track.p() ,averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pr"),track.tpcNSigmaPr() ,averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_Pr"),track.tpcNSigmaPr() ,track.itsNSigmaPr()); - histosQA.fill(HIST("QA/PID/histdEdxTPC_Pr"),track.sign() * track.tpcInnerParam(), track.tpcSignal()); - histosQA.fill(HIST("QA/PID/histnSigma_Pr"),track.tpcNSigmaPr()); - histosQA.fill(HIST("QA/PID/histnSigma_Pt_Pr"),track.pt(), track.tpcNSigmaPr()); - histosQA.fill(HIST("QA/PID/histnSigma_com_Pr"),std::hypot(track.tpcNSigmaPr(), track.tofNSigmaPr())); - histosQA.fill(HIST("QA/PID/histnSigma_TOF_Pr"),track.tofNSigmaPr()); - histosQA.fill(HIST("QA/PID/histnSigma_ITS_Pr"),track.itsNSigmaPr()); - histosQA.fill(HIST("QA/PID/histPhi_Dis_Pr"),track.phi()); - if(cfgOpenDetailPlots){ - if (track.sign() >0) { - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPr_Before"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPr_Before"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } - else if (track.sign() <0) { - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPr_Before"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPr_Before"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Pr"), track.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pr"), track.tpcNSigmaPr(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_Pr"), track.tpcNSigmaPr(), track.itsNSigmaPr()); + histosQA.fill(HIST("QA/PID/histdEdxTPC_Pr"), track.sign() * track.tpcInnerParam(), track.tpcSignal()); + histosQA.fill(HIST("QA/PID/histnSigma_Pr"), track.tpcNSigmaPr()); + histosQA.fill(HIST("QA/PID/histnSigma_Pt_Pr"), track.pt(), track.tpcNSigmaPr()); + histosQA.fill(HIST("QA/PID/histnSigma_com_Pr"), std::hypot(track.tpcNSigmaPr(), track.tofNSigmaPr())); + histosQA.fill(HIST("QA/PID/histnSigma_TOF_Pr"), track.tofNSigmaPr()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_Pr"), track.itsNSigmaPr()); + histosQA.fill(HIST("QA/PID/histPhi_Dis_Pr"), track.phi()); + if (cfgOpenDetailPlots) { + if (track.sign() > 0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPr_Before"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPr_Before"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } else if (track.sign() < 0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPr_Before"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPr_Before"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); } } break; } if (cfgOpenITSCut) { - switch (pidFlag) - { + switch (pidFlag) { case 1: if (!(std::abs(track.itsNSigmaPi()) < cfgnSigmaCutITS.value[0] && averClusSizeCosl > cfgAveClusSizeCoslMinPi && averClusSizeCosl < cfgAveClusSizeCoslMaxPi)) { pidFlag = 4; @@ -462,19 +458,18 @@ struct FillPIDcolums { histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_AfterITS_Pi"), averClusSizeCosl); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_AfterITS_Pi"), track.p(), averClusSizeCosl); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_AfterITS_Pi"), track.tpcNSigmaPi(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Pi"), track.tpcNSigmaPi() , track.itsNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Pi"), track.tpcNSigmaPi(), track.itsNSigmaPi()); histosQA.fill(HIST("QA/PID/histnSigma_ITS_AfterITS_Pi"), track.itsNSigmaPi()); histosQA.fill(HIST("QA/PID/histPhi_Dis_AfterITS_Pi"), track.phi()); - if(cfgOpenDetailPlots){ - if (track.sign() >0) { - histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_PosPi"),track.phi(),track.pt(),track.eta()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPi_After"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPi_After"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } - else if (track.sign() <0) { - histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_NegPi"),track.phi(),track.pt(),track.eta()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPi_After"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_After"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + if (cfgOpenDetailPlots) { + if (track.sign() > 0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_PosPi"), track.phi(), track.pt(), track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPi_After"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPi_After"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } else if (track.sign() < 0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_NegPi"), track.phi(), track.pt(), track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPi_After"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_After"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); } } break; @@ -483,19 +478,18 @@ struct FillPIDcolums { histosQA.fill(HIST("QA/PID/histnSigma_ITS_AfterITS_Ka"), track.itsNSigmaKa()); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_AfterITS_Ka"), averClusSizeCosl); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_AfterITS_Ka"), track.p(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Ka"), track.tpcNSigmaKa() , track.itsNSigmaKa()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Ka"), track.tpcNSigmaKa(), track.itsNSigmaKa()); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_AfterITS_Ka"), track.tpcNSigmaKa(), averClusSizeCosl); histosQA.fill(HIST("QA/PID/histPhi_Dis_AfterITS_Ka"), track.phi()); - if(cfgOpenDetailPlots){ - if (track.sign() >0) { - histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_PosKa"),track.phi(),track.pt(),track.eta()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosKa_After"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosKa_After"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } - else if (track.sign() <0) { - histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_NegKa"),track.phi(),track.pt(),track.eta()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegKa_After"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_After"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + if (cfgOpenDetailPlots) { + if (track.sign() > 0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_PosKa"), track.phi(), track.pt(), track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosKa_After"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosKa_After"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } else if (track.sign() < 0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_NegKa"), track.phi(), track.pt(), track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegKa_After"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_After"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); } } break; @@ -504,32 +498,31 @@ struct FillPIDcolums { histosQA.fill(HIST("QA/PID/histnSigma_ITS_AfterITS_Pr"), track.itsNSigmaPr()); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_AfterITS_Pr"), averClusSizeCosl); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_AfterITS_Pr"), track.p(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Pr"), track.tpcNSigmaPr() , track.itsNSigmaPr()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Pr"), track.tpcNSigmaPr(), track.itsNSigmaPr()); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_AfterITS_Pr"), track.tpcNSigmaPr(), averClusSizeCosl); histosQA.fill(HIST("QA/PID/histPhi_Dis_AfterITS_Pr"), track.phi()); - if(cfgOpenDetailPlots){ - if (track.sign() >0) { - histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_PosPr"),track.phi(),track.pt(),track.eta()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPr_After"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPr_After"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } - else if (track.sign() <0) { - histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_NegPr"),track.phi(),track.pt(),track.eta()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPr_After"),track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPr_After"),track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + if (cfgOpenDetailPlots) { + if (track.sign() > 0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_PosPr"), track.phi(), track.pt(), track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPr_After"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPr_After"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } else if (track.sign() < 0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_NegPr"), track.phi(), track.pt(), track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPr_After"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPr_After"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); } } break; } } - pidCmeTable(pidFlag,averClusSizeCosl,track.itsNSigmaPi(),track.itsNSigmaKa(),track.itsNSigmaPr(),track.tpcNSigmaPi(),track.tpcNSigmaKa(),track.tpcNSigmaPr()); + pidCmeTable(pidFlag, averClusSizeCosl, track.itsNSigmaPi(), track.itsNSigmaKa(), track.itsNSigmaPr(), track.tpcNSigmaPi(), track.tpcNSigmaKa(), track.tpcNSigmaPr()); } } }; -struct QAProcessCent{ +struct QAProcessCent { HistogramRegistry histosQA{"histosQAwithcent", {}, OutputObjHandlingPolicy::AnalysisObject}; - Configurable> cfgCentralitybinsforQA{"cfgCentralitybinsforQA", {0,30,60}, "Centrality bins for track phi and TPC_ITS matching check"}; + Configurable> cfgCentralitybinsforQA{"cfgCentralitybinsforQA", {0, 30, 60}, "Centrality bins for track phi and TPC_ITS matching check"}; Configurable cfgOpenDetailPlotscme{"cfgOpenDetailPlotscme", true, "open detail TH3D plots for nSigmaTPC-ITS Pt-eta-Phi nSigmaITS-clustersize"}; Configurable cfgOpenPtEtaPhi{"cfgOpenPtEtaPhi", true, "open pt-#eta-#phi PID QA (Optional for limited memory usage)"}; Configurable cfgOpenITSTPCnSigma{"cfgOpenITSTPCnSigma", true, "open ITS-TPC nSigma QA (Optional for limited memory usage)"}; @@ -578,259 +571,252 @@ struct QAProcessCent{ { AxisSpec axisPhicme = {100, 0, 2.1 * constants::math::PI, "#phi"}; // Additional QA histograms for PID - if(cfgOpenDetailPlotscme) { - for (int i = 0; i < static_cast(cfgCentralitybinsforQA.value.size())-1; ++i) { - if(cfgOpenPtEtaPhi) { - if(cfgOpenPi) { - auto hPhi_Pt_Eta_PosPi = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosPi_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme,cfgaxisptPIDcme,cfgaxisetaPIDcme}}); - auto hPhi_Pt_Eta_NegPi = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegPi_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme,cfgaxisptPIDcme,cfgaxisetaPIDcme}}); + if (cfgOpenDetailPlotscme) { + for (int i = 0; i < static_cast(cfgCentralitybinsforQA.value.size()) - 1; ++i) { + if (cfgOpenPtEtaPhi) { + if (cfgOpenPi) { + auto hPhi_Pt_Eta_PosPi = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosPi_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); + auto hPhi_Pt_Eta_NegPi = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegPi_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); vhistPhi_Pt_Eta_PosPi_Cen.push_back(std::move(hPhi_Pt_Eta_PosPi)); vhistPhi_Pt_Eta_NegPi_Cen.push_back(std::move(hPhi_Pt_Eta_NegPi)); } - if(cfgOpenKa) { - auto hPhi_Pt_Eta_PosKa = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosKa_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme,cfgaxisptPIDcme,cfgaxisetaPIDcme}}); - auto hPhi_Pt_Eta_NegKa = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegKa_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme,cfgaxisptPIDcme,cfgaxisetaPIDcme}}); + if (cfgOpenKa) { + auto hPhi_Pt_Eta_PosKa = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosKa_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); + auto hPhi_Pt_Eta_NegKa = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegKa_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); vhistPhi_Pt_Eta_PosKa_Cen.push_back(std::move(hPhi_Pt_Eta_PosKa)); vhistPhi_Pt_Eta_NegKa_Cen.push_back(std::move(hPhi_Pt_Eta_NegKa)); } - if(cfgOpenPr) { - auto hPhi_Pt_Eta_PosPr = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosPr_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme,cfgaxisptPIDcme,cfgaxisetaPIDcme}}); - auto hPhi_Pt_Eta_NegPr = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegPr_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme,cfgaxisptPIDcme,cfgaxisetaPIDcme}}); + if (cfgOpenPr) { + auto hPhi_Pt_Eta_PosPr = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosPr_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); + auto hPhi_Pt_Eta_NegPr = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegPr_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); vhistPhi_Pt_Eta_PosPr_Cen.push_back(std::move(hPhi_Pt_Eta_PosPr)); vhistPhi_Pt_Eta_NegPr_Cen.push_back(std::move(hPhi_Pt_Eta_NegPr)); } } - if(cfgOpenITSTPCnSigma) { - if(cfgOpenPi) { - auto hnSigmaITS_TPC_Pt_PosPi_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPi_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_PosPi_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPi_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_NegPi_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPi_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_NegPi_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPi_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); + if (cfgOpenITSTPCnSigma) { + if (cfgOpenPi) { + auto hnSigmaITS_TPC_Pt_PosPi_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPi_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_PosPi_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPi_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_NegPi_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPi_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_NegPi_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPi_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); vhistnSigmaITS_TPC_Pt_PosPi_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosPi_Before)); vhistnSigmaITS_TPC_Pt_NegPi_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegPi_Before)); vhistnSigmaITS_TPC_Pt_PosPi_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosPi_After)); vhistnSigmaITS_TPC_Pt_NegPi_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegPi_After)); } - if(cfgOpenKa) { - auto hnSigmaITS_TPC_Pt_PosKa_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosKa_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_PosKa_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosKa_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_NegKa_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegKa_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_NegKa_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegKa_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); + if (cfgOpenKa) { + auto hnSigmaITS_TPC_Pt_PosKa_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosKa_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_PosKa_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosKa_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_NegKa_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegKa_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_NegKa_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegKa_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); vhistnSigmaITS_TPC_Pt_PosKa_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosKa_Before)); vhistnSigmaITS_TPC_Pt_NegKa_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegKa_Before)); vhistnSigmaITS_TPC_Pt_PosKa_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosKa_After)); vhistnSigmaITS_TPC_Pt_NegKa_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegKa_After)); } - if(cfgOpenPr) { - auto hnSigmaITS_TPC_Pt_PosPr_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPr_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_PosPr_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPr_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_NegPr_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPr_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_NegPr_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPr_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgnSigmaBinsITScme,cfgaxisptPIDcme}}); + if (cfgOpenPr) { + auto hnSigmaITS_TPC_Pt_PosPr_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPr_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_PosPr_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPr_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_NegPr_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPr_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITS_TPC_Pt_NegPr_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPr_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); vhistnSigmaITS_TPC_Pt_PosPr_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosPr_Before)); - vhistnSigmaITS_TPC_Pt_NegPr_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegPr_Before)); + vhistnSigmaITS_TPC_Pt_NegPr_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegPr_Before)); vhistnSigmaITS_TPC_Pt_PosPr_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosPr_After)); vhistnSigmaITS_TPC_Pt_NegPr_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegPr_After)); } } - if(cfgOpenClusSizenSigmaTPC) { - if(cfgOpenPi) { - auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); + if (cfgOpenClusSizenSigmaTPC) { + if (cfgOpenPi) { + auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before)); vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before)); vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After)); vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After)); } - if(cfgOpenKa) { - auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); + if (cfgOpenKa) { + auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before)); vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before)); vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After)); vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After)); } - if(cfgOpenPr) { - auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After_Cen_%d_%d",cfgCentralitybinsforQA.value[i],cfgCentralitybinsforQA.value[i+1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme,cfgaxisAverClusterCoslnSigmacme,cfgaxisptPIDcme}}); + if (cfgOpenPr) { + auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before)); vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before)); vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After)); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After)); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After)); } } - } + } } } void process(CollisionPID::iterator const& collision, soa::Filtered> const& tracks) { - if(cfgOpenDetailPlotscme) { + if (cfgOpenDetailPlotscme) { const auto cent = collision.centFT0C(); int currentBin = -1; for (int i = 0; i < static_cast(cfgCentralitybinsforQA.value.size()) - 1; ++i) { if (cent >= cfgCentralitybinsforQA.value[i] && cent < cfgCentralitybinsforQA.value[i + 1]) { - currentBin = i; - break; + currentBin = i; + break; } } - if(currentBin >= 0){ - for (const auto& trk : tracks){ + if (currentBin >= 0) { + for (const auto& trk : tracks) { int8_t pididx = trk.nPidFlag(); - switch (pididx) - { + switch (pididx) { case 1: - if(cfgOpenPi) { - if(trk.sign()>0){ - if(cfgOpenPtEtaPhi) { - vhistPhi_Pt_Eta_PosPi_Cen[currentBin]->Fill(trk.phi(),trk.pt(),trk.eta()); + if (cfgOpenPi) { + if (trk.sign() > 0) { + if (cfgOpenPtEtaPhi) { + vhistPhi_Pt_Eta_PosPi_Cen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } - if(cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_PosPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.nSigmaPiITS(),trk.pt()); - vhistnSigmaITS_TPC_Pt_PosPi_After_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.nSigmaPiITS(),trk.pt()); + if (cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_PosPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); + vhistnSigmaITS_TPC_Pt_PosPi_After_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); } - if(cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.averClusterSizeCosl(),trk.pt()); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.averClusterSizeCosl(),trk.pt()); + if (cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); } - } - else if(trk.sign()<0){ - if(cfgOpenPtEtaPhi) { - vhistPhi_Pt_Eta_NegPi_Cen[currentBin]->Fill(trk.phi(),trk.pt(),trk.eta()); + } else if (trk.sign() < 0) { + if (cfgOpenPtEtaPhi) { + vhistPhi_Pt_Eta_NegPi_Cen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } - if(cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_NegPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.nSigmaPiITS(),trk.pt()); - vhistnSigmaITS_TPC_Pt_NegPi_After_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.nSigmaPiITS(),trk.pt()); + if (cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_NegPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); + vhistnSigmaITS_TPC_Pt_NegPi_After_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); } - if(cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.averClusterSizeCosl(),trk.pt()); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.averClusterSizeCosl(),trk.pt()); + if (cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); } - } + } } break; case 2: - if(cfgOpenKa) { - if(trk.sign()>0){ - if(cfgOpenPtEtaPhi) { - vhistPhi_Pt_Eta_PosKa_Cen[currentBin]->Fill(trk.phi(),trk.pt(),trk.eta()); + if (cfgOpenKa) { + if (trk.sign() > 0) { + if (cfgOpenPtEtaPhi) { + vhistPhi_Pt_Eta_PosKa_Cen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } - if(cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_PosKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.nSigmaKaITS(),trk.pt()); - vhistnSigmaITS_TPC_Pt_PosKa_After_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.nSigmaKaITS(),trk.pt()); + if (cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_PosKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); + vhistnSigmaITS_TPC_Pt_PosKa_After_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); } - if(cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.averClusterSizeCosl(),trk.pt()); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.averClusterSizeCosl(),trk.pt()); - } - } - else if(trk.sign()<0){ - if(cfgOpenPtEtaPhi) { - vhistPhi_Pt_Eta_NegKa_Cen[currentBin]->Fill(trk.phi(),trk.pt(),trk.eta()); + if (cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); } - if(cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_NegKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.nSigmaKaITS(),trk.pt()); - vhistnSigmaITS_TPC_Pt_NegKa_After_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.nSigmaKaITS(),trk.pt()); + } else if (trk.sign() < 0) { + if (cfgOpenPtEtaPhi) { + vhistPhi_Pt_Eta_NegKa_Cen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } - if(cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.averClusterSizeCosl(),trk.pt()); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.averClusterSizeCosl(),trk.pt()); + if (cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_NegKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); + vhistnSigmaITS_TPC_Pt_NegKa_After_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); } - } + if (cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); + } + } } break; case 3: - if(cfgOpenPr) { - if(trk.sign()>0){ - if(cfgOpenPtEtaPhi) { - vhistPhi_Pt_Eta_PosPr_Cen[currentBin]->Fill(trk.phi(),trk.pt(),trk.eta()); + if (cfgOpenPr) { + if (trk.sign() > 0) { + if (cfgOpenPtEtaPhi) { + vhistPhi_Pt_Eta_PosPr_Cen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } - if(cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_PosPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.nSigmaPrITS(),trk.pt()); - vhistnSigmaITS_TPC_Pt_PosPr_After_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.nSigmaPrITS(),trk.pt()); + if (cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_PosPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); + vhistnSigmaITS_TPC_Pt_PosPr_After_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); } - if(cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.averClusterSizeCosl(),trk.pt()); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.averClusterSizeCosl(),trk.pt()); + if (cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); } - } - else if(trk.sign()<0){ - if(cfgOpenPtEtaPhi) { - vhistPhi_Pt_Eta_NegPr_Cen[currentBin]->Fill(trk.phi(),trk.pt(),trk.eta()); + } else if (trk.sign() < 0) { + if (cfgOpenPtEtaPhi) { + vhistPhi_Pt_Eta_NegPr_Cen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } - if(cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_NegPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.nSigmaPrITS(),trk.pt()); - vhistnSigmaITS_TPC_Pt_NegPr_After_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.nSigmaPrITS(),trk.pt()); + if (cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_NegPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); + vhistnSigmaITS_TPC_Pt_NegPr_After_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); } - if(cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.averClusterSizeCosl(),trk.pt()); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.averClusterSizeCosl(),trk.pt()); + if (cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); } - } + } } break; case 4: - if(cfgOpenPi) { - if(trk.sign()>0){ - if(cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_PosPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.nSigmaPiITS(),trk.pt()); + if (cfgOpenPi) { + if (trk.sign() > 0) { + if (cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_PosPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); } - if(cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.averClusterSizeCosl(),trk.pt()); + if (cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); } - } - else if(trk.sign()<0){ - if(cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_NegPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.nSigmaPiITS(),trk.pt()); + } else if (trk.sign() < 0) { + if (cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_NegPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); } - if(cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(),trk.averClusterSizeCosl(),trk.pt()); + if (cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); } - } + } } break; case 5: - if(cfgOpenKa) { - if(trk.sign()>0){ - if(cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_PosKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.nSigmaKaITS(),trk.pt()); + if (cfgOpenKa) { + if (trk.sign() > 0) { + if (cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_PosKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); } - if(cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.averClusterSizeCosl(),trk.pt()); + if (cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); } - } - else if(trk.sign()<0){ - if(cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_NegKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.nSigmaKaITS(),trk.pt()); + } else if (trk.sign() < 0) { + if (cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_NegKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); } - if(cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(),trk.averClusterSizeCosl(),trk.pt()); + if (cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); } - } + } } break; case 6: - if(cfgOpenPr) { - if(trk.sign()>0){ - if(cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_PosPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.nSigmaPrITS(),trk.pt()); + if (cfgOpenPr) { + if (trk.sign() > 0) { + if (cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_PosPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); } - if(cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.averClusterSizeCosl(),trk.pt()); + if (cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); } - } - else if(trk.sign()<0){ - if(cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_NegPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.nSigmaPrITS(),trk.pt()); + } else if (trk.sign() < 0) { + if (cfgOpenITSTPCnSigma) { + vhistnSigmaITS_TPC_Pt_NegPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); } - if(cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(),trk.averClusterSizeCosl(),trk.pt()); + if (cfgOpenClusSizenSigmaTPC) { + vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); } - } + } } break; } @@ -840,7 +826,6 @@ struct QAProcessCent{ } }; - struct pidcme { // o2-linter: disable=name/struct HistogramRegistry histosQA{"histosmain", {}, OutputObjHandlingPolicy::AnalysisObject}; @@ -897,8 +882,7 @@ struct pidcme { // o2-linter: disable=name/struct Configurable cfgkOpenKaPr{"cfgkOpenKaPr", true, "open Ka-Pr"}; Configurable cfgkOpenHaHa{"cfgkOpenHaHa", false, "open Ha-Ha"}; Configurable cfgkOpenSsOsCrossCheck{"cfgkOpenSsOsCrossCheck", false, "open check for matter an antimatter #gamma#delta"}; - - + EventPlaneHelper helperEP; SliceCache cache; @@ -999,7 +983,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.get(HIST("QA/histEventCount"))->GetXaxis()->SetBinLabel(1, "Filtered event"); histosQA.get(HIST("QA/histEventCount"))->GetXaxis()->SetBinLabel(2, "after sel8"); histosQA.get(HIST("QA/histEventCount"))->GetXaxis()->SetBinLabel(3, "after additional event cut"); - if(cfgUseAdditionalEventCut){ + if (cfgUseAdditionalEventCut) { histosQA.add(Form("QA/histEventCountDetail"), "Number of Event;; Count", {HistType::kTH1F, {{10, 0, 10}}}); histosQA.get(HIST("QA/histEventCountDetail"))->GetXaxis()->SetBinLabel(1, "after sel8"); histosQA.get(HIST("QA/histEventCountDetail"))->GetXaxis()->SetBinLabel(2, "kIsGoodZvtxFT0vsPV"); @@ -1012,7 +996,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.get(HIST("QA/histEventCountDetail"))->GetXaxis()->SetBinLabel(9, "MultCorrelation"); histosQA.get(HIST("QA/histEventCountDetail"))->GetXaxis()->SetBinLabel(10, "cfgEvSelV0AT0ACut"); } - if(cfgOpenFullEventQA){ + if (cfgOpenFullEventQA) { histosQA.add("QA/hist_globalTracks_centT0C_before", "before cut;Centrality T0C;mulplicity global tracks", {HistType::kTH2D, {cfgaxisCentForQA, cfgaxisNch}}); histosQA.add("QA/hist_PVTracks_centT0C_before", "before cut;Centrality T0C;mulplicity PV tracks", {HistType::kTH2D, {cfgaxisCentForQA, cfgaxisNchPV}}); histosQA.add("QA/hist_globalTracks_PVTracks_before", "before cut;mulplicity PV tracks;mulplicity global tracks", {HistType::kTH2D, {cfgaxisNchPV, cfgaxisNch}}); @@ -1062,7 +1046,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_PiPi_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiPi_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiPi_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if (cfgkOpenSsOsCrossCheck){ + if (cfgkOpenSsOsCrossCheck) { histosQA.add(Form("PIDCME/histgamama_PiPi_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiPi_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiPi_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -1082,7 +1066,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_KaKa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_KaKa_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_KaKa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if (cfgkOpenSsOsCrossCheck){ + if (cfgkOpenSsOsCrossCheck) { histosQA.add(Form("PIDCME/histgamama_KaKa_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_KaKa_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_KaKa_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -1102,7 +1086,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_PrPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PrPr_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PrPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if(cfgkOpenSsOsCrossCheck){ + if (cfgkOpenSsOsCrossCheck) { histosQA.add(Form("PIDCME/histgamama_PrPr_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PrPr_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PrPr_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -1122,7 +1106,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_PiKa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiKa_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiKa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if(cfgkOpenSsOsCrossCheck){ + if (cfgkOpenSsOsCrossCheck) { histosQA.add(Form("PIDCME/histgamama_PiKa_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiKa_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiKa_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -1142,7 +1126,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_PiPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiPr_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_PiPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if(cfgkOpenSsOsCrossCheck){ + if (cfgkOpenSsOsCrossCheck) { histosQA.add(Form("PIDCME/histgamama_PiPr_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiPr_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_PiPr_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -1162,7 +1146,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_KaPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_KaPr_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_KaPr_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if(cfgkOpenSsOsCrossCheck){ + if (cfgkOpenSsOsCrossCheck) { histosQA.add(Form("PIDCME/histgamama_KaPr_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_KaPr_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_KaPr_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -1182,7 +1166,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("PIDCME/Differential/histgamama_HaHa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_HaHa_ss_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); histosQA.add(Form("PIDCME/Differential/histdelta_HaHa_os_Dif"), "", {HistType::kTProfile3D, {axisCentMerged, axissumpt, axisdeltaeta}}); - if(cfgkOpenSsOsCrossCheck){ + if (cfgkOpenSsOsCrossCheck) { histosQA.add(Form("PIDCME/histgamama_HaHa_PP"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_HaHa_NN"), "", {HistType::kTProfile, {axisCentMerged}}); histosQA.add(Form("PIDCME/histgamama_HaHa_PN"), "", {HistType::kTProfile, {axisCentMerged}}); @@ -1203,45 +1187,45 @@ struct pidcme { // o2-linter: disable=name/struct if (cfgOpenEvSelkIsGoodZvtxFT0vsPV && !collision.selection_bit(aod::evsel::kIsGoodZvtxFT0vsPV)) { return 0; } - if (cfgOpenEvSelkIsGoodZvtxFT0vsPV){ + if (cfgOpenEvSelkIsGoodZvtxFT0vsPV) { histosQA.fill(HIST("QA/histEventCountDetail"), 1.5); } if (cfgOpenEvSelkNoSameBunchPileup && !collision.selection_bit(aod::evsel::kNoSameBunchPileup)) { return 0; } - if (cfgOpenEvSelkNoSameBunchPileup){ + if (cfgOpenEvSelkNoSameBunchPileup) { histosQA.fill(HIST("QA/histEventCountDetail"), 2.5); } if (cfgOpenEvSelkNoCollInTimeRangeStandard && !collision.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard)) { return 0; } - if (cfgOpenEvSelkNoCollInTimeRangeStandard){ + if (cfgOpenEvSelkNoCollInTimeRangeStandard) { histosQA.fill(HIST("QA/histEventCountDetail"), 3.5); } - if (cfgOpenEvSelkIsGoodITSLayersAll && !collision.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll)){ + if (cfgOpenEvSelkIsGoodITSLayersAll && !collision.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll)) { return 0; } - if (cfgOpenEvSelkIsGoodITSLayersAll){ + if (cfgOpenEvSelkIsGoodITSLayersAll) { histosQA.fill(HIST("QA/histEventCountDetail"), 4.5); } - if (cfgOpenEvSelkNoCollInRofStandard && !collision.selection_bit(o2::aod::evsel::kNoCollInRofStandard)){ + if (cfgOpenEvSelkNoCollInRofStandard && !collision.selection_bit(o2::aod::evsel::kNoCollInRofStandard)) { return 0; } - if (cfgOpenEvSelkNoCollInRofStandard){ + if (cfgOpenEvSelkNoCollInRofStandard) { histosQA.fill(HIST("QA/histEventCountDetail"), 5.5); } - if (cfgOpenEvSelkNoHighMultCollInPrevRof && !collision.selection_bit(o2::aod::evsel::kNoHighMultCollInPrevRof)){ + if (cfgOpenEvSelkNoHighMultCollInPrevRof && !collision.selection_bit(o2::aod::evsel::kNoHighMultCollInPrevRof)) { return 0; } - if (cfgOpenEvSelkNoHighMultCollInPrevRof){ + if (cfgOpenEvSelkNoHighMultCollInPrevRof) { histosQA.fill(HIST("QA/histEventCountDetail"), 6.5); } auto multNTracksPV = collision.multNTracksPV(); auto occupancy = collision.trackOccupancyInTimeRange(); - if (cfgOpenEvSelOccupancy && (occupancy < cfgCutOccupancyLow || occupancy > cfgCutOccupancyHigh)){ + if (cfgOpenEvSelOccupancy && (occupancy < cfgCutOccupancyLow || occupancy > cfgCutOccupancyHigh)) { return 0; } - if(cfgOpenEvSelOccupancy){ + if (cfgOpenEvSelOccupancy) { histosQA.fill(HIST("QA/histEventCountDetail"), 7.5); } if (cfgOpenEvSelMultCorrelation) { @@ -1254,13 +1238,13 @@ struct pidcme { // o2-linter: disable=name/struct if (multTrk > fMultCutHigh->Eval(centrality)) return 0; } - if (cfgOpenEvSelMultCorrelation){ + if (cfgOpenEvSelMultCorrelation) { histosQA.fill(HIST("QA/histEventCountDetail"), 8.5); } - if (cfgOpenEvSelV0AT0ACut && (std::fabs(collision.multFV0A() - fT0AV0AMean->Eval(collision.multFT0A())) > 5 * fT0AV0ASigma->Eval(collision.multFT0A()))){ + if (cfgOpenEvSelV0AT0ACut && (std::fabs(collision.multFV0A() - fT0AV0AMean->Eval(collision.multFT0A())) > 5 * fT0AV0ASigma->Eval(collision.multFT0A()))) { return 0; } - if (cfgOpenEvSelV0AT0ACut){ + if (cfgOpenEvSelV0AT0ACut) { histosQA.fill(HIST("QA/histEventCountDetail"), 9.5); } return 1; @@ -1372,12 +1356,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPi_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() > 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() > 0) { histosQA.fill(HIST("PIDCME/histgamama_PiPi_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPi_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_PiPi_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPi_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -1389,12 +1372,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPi_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() < 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() < 0) { histosQA.fill(HIST("PIDCME/histgamama_PiPi_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPi_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_PiPi_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPi_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -1417,12 +1399,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_KaKa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() > 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() > 0) { histosQA.fill(HIST("PIDCME/histgamama_KaKa_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaKa_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_KaKa_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaKa_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -1434,12 +1415,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_KaKa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() < 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() < 0) { histosQA.fill(HIST("PIDCME/histgamama_KaKa_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaKa_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_KaKa_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaKa_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -1462,12 +1442,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PrPr_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() > 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() > 0) { histosQA.fill(HIST("PIDCME/histgamama_PrPr_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PrPr_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_PrPr_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PrPr_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -1479,12 +1458,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PrPr_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() < 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() < 0) { histosQA.fill(HIST("PIDCME/histgamama_PrPr_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PrPr_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_PrPr_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PrPr_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -1507,12 +1485,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiKa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() > 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() > 0) { histosQA.fill(HIST("PIDCME/histgamama_PiKa_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiKa_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_PiKa_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiKa_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -1524,12 +1501,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiKa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() < 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() < 0) { histosQA.fill(HIST("PIDCME/histgamama_PiKa_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiKa_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_PiKa_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiKa_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); } @@ -1552,12 +1528,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPr_ss_Dif"), collision.centFT0C(), trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()), std::cos((trk1.phi() - trk3.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk3.sign() > 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk3.sign() > 0) { histosQA.fill(HIST("PIDCME/histgamama_PiPr_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPr_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_PiPr_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPr_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); } @@ -1569,12 +1544,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPr_os_Dif"), collision.centFT0C(), trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()), std::cos((trk1.phi() - trk3.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk3.sign() < 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk3.sign() < 0) { histosQA.fill(HIST("PIDCME/histgamama_PiPr_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPr_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_PiPr_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_PiPr_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); } @@ -1597,12 +1571,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_KaPr_ss_Dif"), collision.centFT0C(), trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()), std::cos((trk2.phi() - trk3.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk2.sign() > 0 && trk3.sign() > 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk2.sign() > 0 && trk3.sign() > 0) { histosQA.fill(HIST("PIDCME/histgamama_KaPr_PP"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaPr_PP"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_KaPr_NN"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaPr_NN"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); } @@ -1614,12 +1587,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/Differential/histdelta_KaPr_os_Dif"), collision.centFT0C(), trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()), std::cos((trk2.phi() - trk3.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk2.sign() > 0 && trk3.sign() < 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk2.sign() > 0 && trk3.sign() < 0) { histosQA.fill(HIST("PIDCME/histgamama_KaPr_PN"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaPr_PN"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_KaPr_NP"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); histosQA.fill(HIST("PIDCME/histdelta_KaPr_NP"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); } @@ -1641,7 +1613,7 @@ struct pidcme { // o2-linter: disable=name/struct if (tracks.size() < 1) return; histosQA.fill(HIST("QA/histEventCount"), 1.5); - if (cfgOpenFullEventQA){ + if (cfgOpenFullEventQA) { histosQA.fill(HIST("QA/hist_globalTracks_centT0C_before"), cent, tracks.size()); histosQA.fill(HIST("QA/hist_PVTracks_centT0C_before"), cent, collision.multNTracksPV()); histosQA.fill(HIST("QA/hist_globalTracks_PVTracks_before"), collision.multNTracksPV(), tracks.size()); @@ -1650,13 +1622,13 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.fill(HIST("QA/hist_multV0A_multT0A_before"), collision.multFT0A(), collision.multFV0A()); histosQA.fill(HIST("QA/hist_multT0C_centT0C_before"), cent, collision.multFT0C()); } - if (cfgUseAdditionalEventCut && !selEvent(collision, tracks.size(),cent)) { + if (cfgUseAdditionalEventCut && !selEvent(collision, tracks.size(), cent)) { return; } histosQA.fill(HIST("QA/histEventCount"), 2.5); histosQA.fill(HIST("QA/histCentrality"), cent); histosQA.fill(HIST("QA/histVertexZRec"), collision.posZ()); - if (cfgOpenFullEventQA){ + if (cfgOpenFullEventQA) { histosQA.fill(HIST("QA/hist_globalTracks_centT0C_after"), cent, tracks.size()); histosQA.fill(HIST("QA/hist_PVTracks_centT0C_after"), cent, collision.multNTracksPV()); histosQA.fill(HIST("QA/hist_globalTracks_PVTracks_after"), collision.multNTracksPV(), tracks.size()); @@ -1696,12 +1668,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); histosQA.fill(HIST("PIDCME/Differential/histdelta_HaHa_ss_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() > 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() > 0) { histosQA.fill(HIST("PIDCME/histgamama_HaHa_PP"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); histosQA.fill(HIST("PIDCME/histdelta_HaHa_PP"), cent, std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_HaHa_NN"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); histosQA.fill(HIST("PIDCME/histdelta_HaHa_NN"), cent, std::cos((trk1.phi() - trk2.phi()))); } @@ -1713,12 +1684,11 @@ struct pidcme { // o2-linter: disable=name/struct std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); histosQA.fill(HIST("PIDCME/Differential/histdelta_HaHa_os_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); - if(cfgkOpenSsOsCrossCheck){ - if(trk1.sign() > 0 && trk2.sign() < 0){ + if (cfgkOpenSsOsCrossCheck) { + if (trk1.sign() > 0 && trk2.sign() < 0) { histosQA.fill(HIST("PIDCME/histgamama_HaHa_PN"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); histosQA.fill(HIST("PIDCME/histdelta_HaHa_PN"), cent, std::cos((trk1.phi() - trk2.phi()))); - } - else { + } else { histosQA.fill(HIST("PIDCME/histgamama_HaHa_NP"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); histosQA.fill(HIST("PIDCME/histdelta_HaHa_NP"), cent, std::cos((trk1.phi() - trk2.phi()))); } From b9ca357dceed409fcf323acec60b85240f75b658 Mon Sep 17 00:00:00 2001 From: zhengqi-w Date: Sun, 2 Feb 2025 17:15:25 +0800 Subject: [PATCH 05/14] new --- PWGCF/Flow/Tasks/pidcme.cxx | 268 ++++++++++++++++++------------------ 1 file changed, 134 insertions(+), 134 deletions(-) diff --git a/PWGCF/Flow/Tasks/pidcme.cxx b/PWGCF/Flow/Tasks/pidcme.cxx index b510ba660d9..e731c99aa5a 100644 --- a/PWGCF/Flow/Tasks/pidcme.cxx +++ b/PWGCF/Flow/Tasks/pidcme.cxx @@ -526,7 +526,7 @@ struct QAProcessCent { Configurable cfgOpenDetailPlotscme{"cfgOpenDetailPlotscme", true, "open detail TH3D plots for nSigmaTPC-ITS Pt-eta-Phi nSigmaITS-clustersize"}; Configurable cfgOpenPtEtaPhi{"cfgOpenPtEtaPhi", true, "open pt-#eta-#phi PID QA (Optional for limited memory usage)"}; Configurable cfgOpenITSTPCnSigma{"cfgOpenITSTPCnSigma", true, "open ITS-TPC nSigma QA (Optional for limited memory usage)"}; - Configurable cfgOpenClusSizenSigmaTPC{"cfgOpenClusSizenSigmaITS", true, "open ITSClustersize- TPCnsigma QA (Optional for limited memory usage)"}; + Configurable cfgOpenClusSizenSigmaTPC{"cfgOpenClusSizenSigmaTPC", true, "open ITSClustersize-TPCnsigma QA (Optional for limited memory usage)"}; Configurable cfgOpenPi{"cfgOpenPi", true, "open Pion QA (Optional for limited memory usage)"}; Configurable cfgOpenKa{"cfgOpenKa", true, "open Kaon QA (Optional for limited memory usage)"}; Configurable cfgOpenPr{"cfgOpenPr", true, "open Proton QA (Optional for limited memory usage)"}; @@ -536,36 +536,36 @@ struct QAProcessCent { ConfigurableAxis cfgnSigmaBinsITScme{"cfgnSigmaBinsITScme", {200, -5.f, 5.f}, "Binning for n sigma TPC"}; ConfigurableAxis cfgaxisAverClusterCoslnSigmacme{"cfgaxisAverClusterCoslnSigmacme", {50, 0, 5}, "Binning for average cluster size x cos(#lambda) vs nSigam"}; - std::vector> vhistPhi_Pt_Eta_PosPi_Cen; - std::vector> vhistPhi_Pt_Eta_NegPi_Cen; - std::vector> vhistPhi_Pt_Eta_PosKa_Cen; - std::vector> vhistPhi_Pt_Eta_NegKa_Cen; - std::vector> vhistPhi_Pt_Eta_PosPr_Cen; - std::vector> vhistPhi_Pt_Eta_NegPr_Cen; - std::vector> vhistnSigmaITS_TPC_Pt_PosPi_Before_Cen; - std::vector> vhistnSigmaITS_TPC_Pt_NegPi_Before_Cen; - std::vector> vhistnSigmaITS_TPC_Pt_PosKa_Before_Cen; - std::vector> vhistnSigmaITS_TPC_Pt_NegKa_Before_Cen; - std::vector> vhistnSigmaITS_TPC_Pt_PosPr_Before_Cen; - std::vector> vhistnSigmaITS_TPC_Pt_NegPr_Before_Cen; - std::vector> vhistnSigmaITS_TPC_Pt_PosPi_After_Cen; - std::vector> vhistnSigmaITS_TPC_Pt_NegPi_After_Cen; - std::vector> vhistnSigmaITS_TPC_Pt_PosKa_After_Cen; - std::vector> vhistnSigmaITS_TPC_Pt_NegKa_After_Cen; - std::vector> vhistnSigmaITS_TPC_Pt_PosPr_After_Cen; - std::vector> vhistnSigmaITS_TPC_Pt_NegPr_After_Cen; - std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen; - std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen; - std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen; - std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen; - std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen; - std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen; - std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After_Cen; - std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After_Cen; - std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After_Cen; - std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After_Cen; - std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After_Cen; - std::vector> vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After_Cen; + std::vector> vhistPhiPtEtaPosPiCen; + std::vector> vhistPhiPtEtaNegPiCen; + std::vector> vhistPhiPtEtaPosKaCen; + std::vector> vhistPhiPtEtaNegKaCen; + std::vector> vhistPhiPtEtaPosPrCen; + std::vector> vhistPhiPtEtaNegPrCen; + std::vector> vhistnSigmaITSTPCPtPosPiBeforeCen; + std::vector> vhistnSigmaITSTPCPtNegPiBeforeCen; + std::vector> vhistnSigmaITSTPCPtPosKaBeforeCen; + std::vector> vhistnSigmaITSTPCPtNegKaBeforeCen; + std::vector> vhistnSigmaITSTPCPtPosPrBeforeCen; + std::vector> vhistnSigmaITSTPCPtNegPrBeforeCen; + std::vector> vhistnSigmaITSTPCPtPosPiAfterCen; + std::vector> vhistnSigmaITSTPCPtNegPiAfterCen; + std::vector> vhistnSigmaITSTPCPtPosKaAfterCen; + std::vector> vhistnSigmaITSTPCPtNegKaAfterCen; + std::vector> vhistnSigmaITSTPCPtPosPrAfterCen; + std::vector> vhistnSigmaITSTPCPtNegPrAfterCen; + std::vector> vhistAverClusterSizeCoslnSigmaTPCPtPosPiBeforeCen; + std::vector> vhistAverClusterSizeCoslnSigmaTPCPtNegPiBeforeCen; + std::vector> vhistAverClusterSizeCoslnSigmaTPCPtPosKaBeforeCen; + std::vector> vhistAverClusterSizeCoslnSigmaTPCPtNegKaBeforeCen; + std::vector> vhistAverClusterSizeCoslnSigmaTPCPtPosPrBeforeCen; + std::vector> vhistAverClusterSizeCoslnSigmaTPCPtNegPrBeforeCen; + std::vector> vhistAverClusterSizeCoslnSigmaTPCPtPosPiAfterCen; + std::vector> vhistAverClusterSizeCoslnSigmaTPCPtNegPiAfterCen; + std::vector> vhistAverClusterSizeCoslnSigmaTPCPtPosKaAfterCen; + std::vector> vhistAverClusterSizeCoslnSigmaTPCPtNegKaAfterCen; + std::vector> vhistAverClusterSizeCoslnSigmaTPCPtPosPrAfterCen; + std::vector> vhistAverClusterSizeCoslnSigmaTPCPtNegPrAfterCen; Filter trackPIDfilter = aod::cme_track_pid_columns::nPidFlag > (int8_t)0; void init(InitContext const&) { @@ -575,86 +575,86 @@ struct QAProcessCent { for (int i = 0; i < static_cast(cfgCentralitybinsforQA.value.size()) - 1; ++i) { if (cfgOpenPtEtaPhi) { if (cfgOpenPi) { - auto hPhi_Pt_Eta_PosPi = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosPi_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); - auto hPhi_Pt_Eta_NegPi = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegPi_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); - vhistPhi_Pt_Eta_PosPi_Cen.push_back(std::move(hPhi_Pt_Eta_PosPi)); - vhistPhi_Pt_Eta_NegPi_Cen.push_back(std::move(hPhi_Pt_Eta_NegPi)); + auto hPhiPtEtaPosPi = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosPi_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); + auto hPhiPtEtaNegPi = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegPi_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); + vhistPhiPtEtaPosPiCen.push_back(std::move(hPhiPtEtaPosPi)); + vhistPhiPtEtaNegPiCen.push_back(std::move(hPhiPtEtaNegPi)); } if (cfgOpenKa) { - auto hPhi_Pt_Eta_PosKa = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosKa_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); - auto hPhi_Pt_Eta_NegKa = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegKa_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); - vhistPhi_Pt_Eta_PosKa_Cen.push_back(std::move(hPhi_Pt_Eta_PosKa)); - vhistPhi_Pt_Eta_NegKa_Cen.push_back(std::move(hPhi_Pt_Eta_NegKa)); + auto hPhiPtEtaPosKa = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosKa_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); + auto hPhiPtEtaNegKa = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegKa_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); + vhistPhiPtEtaPosKaCen.push_back(std::move(hPhiPtEtaPosKa)); + vhistPhiPtEtaNegKaCen.push_back(std::move(hPhiPtEtaNegKa)); } if (cfgOpenPr) { - auto hPhi_Pt_Eta_PosPr = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosPr_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); - auto hPhi_Pt_Eta_NegPr = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegPr_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); - vhistPhi_Pt_Eta_PosPr_Cen.push_back(std::move(hPhi_Pt_Eta_PosPr)); - vhistPhi_Pt_Eta_NegPr_Cen.push_back(std::move(hPhi_Pt_Eta_NegPr)); + auto hPhiPtEtaPosPr = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_PosPr_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); + auto hPhiPtEtaNegPr = histosQA.add(Form("QA/PID/histPhi_Pt_Eta_NegPr_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";#phi;#p_{t};#eta", {HistType::kTH3F, {axisPhicme, cfgaxisptPIDcme, cfgaxisetaPIDcme}}); + vhistPhiPtEtaPosPrCen.push_back(std::move(hPhiPtEtaPosPr)); + vhistPhiPtEtaNegPrCen.push_back(std::move(hPhiPtEtaNegPr)); } } if (cfgOpenITSTPCnSigma) { if (cfgOpenPi) { - auto hnSigmaITS_TPC_Pt_PosPi_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPi_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_PosPi_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPi_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_NegPi_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPi_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_NegPi_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPi_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); - vhistnSigmaITS_TPC_Pt_PosPi_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosPi_Before)); - vhistnSigmaITS_TPC_Pt_NegPi_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegPi_Before)); - vhistnSigmaITS_TPC_Pt_PosPi_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosPi_After)); - vhistnSigmaITS_TPC_Pt_NegPi_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegPi_After)); + auto hnSigmaITSTPCPtPosPiBefore = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPi_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITSTPCPtPosPiAfter = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPi_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITSTPCPtNegPiBefore = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPi_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITSTPCPtNegPiAfter = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPi_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + vhistnSigmaITSTPCPtPosPiBeforeCen.push_back(std::move(hnSigmaITSTPCPtPosPiBefore)); + vhistnSigmaITSTPCPtNegPiBeforeCen.push_back(std::move(hnSigmaITSTPCPtNegPiBefore)); + vhistnSigmaITSTPCPtPosPiAfterCen.push_back(std::move(hnSigmaITSTPCPtPosPiAfter)); + vhistnSigmaITSTPCPtNegPiAfterCen.push_back(std::move(hnSigmaITSTPCPtNegPiAfter)); } if (cfgOpenKa) { - auto hnSigmaITS_TPC_Pt_PosKa_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosKa_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_PosKa_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosKa_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_NegKa_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegKa_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_NegKa_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegKa_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); - vhistnSigmaITS_TPC_Pt_PosKa_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosKa_Before)); - vhistnSigmaITS_TPC_Pt_NegKa_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegKa_Before)); - vhistnSigmaITS_TPC_Pt_PosKa_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosKa_After)); - vhistnSigmaITS_TPC_Pt_NegKa_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegKa_After)); + auto hnSigmaITSTPCPtPosKaBefore = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosKa_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITSTPCPtPosKaAfter = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosKa_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITSTPCPtNegKaBefore = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegKa_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITSTPCPtNegKaAfter = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegKa_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + vhistnSigmaITSTPCPtPosKaBeforeCen.push_back(std::move(hnSigmaITSTPCPtPosKaBefore)); + vhistnSigmaITSTPCPtNegKaBeforeCen.push_back(std::move(hnSigmaITSTPCPtNegKaBefore)); + vhistnSigmaITSTPCPtPosKaAfterCen.push_back(std::move(hnSigmaITSTPCPtPosKaAfter)); + vhistnSigmaITSTPCPtNegKaAfterCen.push_back(std::move(hnSigmaITSTPCPtNegKaAfter)); } if (cfgOpenPr) { - auto hnSigmaITS_TPC_Pt_PosPr_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPr_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_PosPr_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPr_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_NegPr_Before = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPr_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); - auto hnSigmaITS_TPC_Pt_NegPr_After = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPr_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); - vhistnSigmaITS_TPC_Pt_PosPr_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosPr_Before)); - vhistnSigmaITS_TPC_Pt_NegPr_Before_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegPr_Before)); - vhistnSigmaITS_TPC_Pt_PosPr_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_PosPr_After)); - vhistnSigmaITS_TPC_Pt_NegPr_After_Cen.push_back(std::move(hnSigmaITS_TPC_Pt_NegPr_After)); + auto hnSigmaITSTPCPtPosPrBefore = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPr_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITSTPCPtPosPrAfter = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_PosPr_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITSTPCPtNegPrBefore = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPr_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + auto hnSigmaITSTPCPtNegPrAfter = histosQA.add(Form("QA/PID/histnSigmaITS_TPC_Pt_NegPr_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + vhistnSigmaITSTPCPtPosPrBeforeCen.push_back(std::move(hnSigmaITSTPCPtPosPrBefore)); + vhistnSigmaITSTPCPtNegPrBeforeCen.push_back(std::move(hnSigmaITSTPCPtNegPrBefore)); + vhistnSigmaITSTPCPtPosPrAfterCen.push_back(std::move(hnSigmaITSTPCPtPosPrAfter)); + vhistnSigmaITSTPCPtNegPrAfterCen.push_back(std::move(hnSigmaITSTPCPtNegPrAfter)); } } if (cfgOpenClusSizenSigmaTPC) { if (cfgOpenPi) { - auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before)); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before)); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After)); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After)); + auto hAverClusterSizeCoslnSigmaTPCPtPosPiBefore = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCoslnSigmaTPCPtPosPiAfter = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCoslnSigmaTPCPtNegPiBefore = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCoslnSigmaTPCPtNegPiAfter = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + vhistAverClusterSizeCoslnSigmaTPCPtPosPiBeforeCen.push_back(std::move(hAverClusterSizeCoslnSigmaTPCPtPosPiBefore)); + vhistAverClusterSizeCoslnSigmaTPCPtNegPiBeforeCen.push_back(std::move(hAverClusterSizeCoslnSigmaTPCPtNegPiBefore)); + vhistAverClusterSizeCoslnSigmaTPCPtPosPiAfterCen.push_back(std::move(hAverClusterSizeCoslnSigmaTPCPtPosPiAfter)); + vhistAverClusterSizeCoslnSigmaTPCPtNegPiAfterCen.push_back(std::move(hAverClusterSizeCoslnSigmaTPCPtNegPiAfter)); } if (cfgOpenKa) { - auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before)); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before)); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After)); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After)); + auto hAverClusterSizeCoslnSigmaTPCPtPosKaBefore = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCoslnSigmaTPCPtPosKaAfter = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCoslnSigmaTPCPtNegKaBefore = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCoslnSigmaTPCPtNegKaAfter = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + vhistAverClusterSizeCoslnSigmaTPCPtPosKaBeforeCen.push_back(std::move(hAverClusterSizeCoslnSigmaTPCPtPosKaBefore)); + vhistAverClusterSizeCoslnSigmaTPCPtNegKaBeforeCen.push_back(std::move(hAverClusterSizeCoslnSigmaTPCPtNegKaBefore)); + vhistAverClusterSizeCoslnSigmaTPCPtPosKaAfterCen.push_back(std::move(hAverClusterSizeCoslnSigmaTPCPtPosKaAfter)); + vhistAverClusterSizeCoslnSigmaTPCPtNegKaAfterCen.push_back(std::move(hAverClusterSizeCoslnSigmaTPCPtNegKaAfter)); } if (cfgOpenPr) { - auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); - auto hAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before)); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before)); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After)); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After_Cen.push_back(std::move(hAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After)); + auto hAverClusterSizeCoslnSigmaTPCPtPosPrBefore = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCoslnSigmaTPCPtPosPrAfter = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCoslnSigmaTPCPtNegPrBefore = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + auto hAverClusterSizeCoslnSigmaTPCPtNegPrAfter = histosQA.add(Form("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After_Cen_%d_%d", cfgCentralitybinsforQA.value[i], cfgCentralitybinsforQA.value[i + 1]), ";n#sigma_{TPC}; x ;#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgaxisAverClusterCoslnSigmacme, cfgaxisptPIDcme}}); + vhistAverClusterSizeCoslnSigmaTPCPtPosPrBeforeCen.push_back(std::move(hAverClusterSizeCoslnSigmaTPCPtPosPrBefore)); + vhistAverClusterSizeCoslnSigmaTPCPtNegPrBeforeCen.push_back(std::move(hAverClusterSizeCoslnSigmaTPCPtNegPrBefore)); + vhistAverClusterSizeCoslnSigmaTPCPtPosPrAfterCen.push_back(std::move(hAverClusterSizeCoslnSigmaTPCPtPosPrAfter)); + vhistAverClusterSizeCoslnSigmaTPCPtNegPrAfterCen.push_back(std::move(hAverClusterSizeCoslnSigmaTPCPtNegPrAfter)); } } } @@ -679,27 +679,27 @@ struct QAProcessCent { if (cfgOpenPi) { if (trk.sign() > 0) { if (cfgOpenPtEtaPhi) { - vhistPhi_Pt_Eta_PosPi_Cen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); + vhistPhiPtEtaPosPiCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } if (cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_PosPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); - vhistnSigmaITS_TPC_Pt_PosPi_After_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); + vhistnSigmaITSTPCPtPosPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); + vhistnSigmaITSTPCPtPosPiAfterCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_After_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtPosPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtPosPiAfterCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); } } else if (trk.sign() < 0) { if (cfgOpenPtEtaPhi) { - vhistPhi_Pt_Eta_NegPi_Cen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); + vhistPhiPtEtaNegPiCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } if (cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_NegPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); - vhistnSigmaITS_TPC_Pt_NegPi_After_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); + vhistnSigmaITSTPCPtNegPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); + vhistnSigmaITSTPCPtNegPiAfterCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_After_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtNegPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtNegPiAfterCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); } } } @@ -708,27 +708,27 @@ struct QAProcessCent { if (cfgOpenKa) { if (trk.sign() > 0) { if (cfgOpenPtEtaPhi) { - vhistPhi_Pt_Eta_PosKa_Cen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); + vhistPhiPtEtaPosKaCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } if (cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_PosKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); - vhistnSigmaITS_TPC_Pt_PosKa_After_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); + vhistnSigmaITSTPCPtPosKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); + vhistnSigmaITSTPCPtPosKaAfterCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_After_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtPosKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtPosKaAfterCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); } } else if (trk.sign() < 0) { if (cfgOpenPtEtaPhi) { - vhistPhi_Pt_Eta_NegKa_Cen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); + vhistPhiPtEtaNegKaCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } if (cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_NegKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); - vhistnSigmaITS_TPC_Pt_NegKa_After_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); + vhistnSigmaITSTPCPtNegKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); + vhistnSigmaITSTPCPtNegKaAfterCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_After_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtNegKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtNegKaAfterCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); } } } @@ -737,27 +737,27 @@ struct QAProcessCent { if (cfgOpenPr) { if (trk.sign() > 0) { if (cfgOpenPtEtaPhi) { - vhistPhi_Pt_Eta_PosPr_Cen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); + vhistPhiPtEtaPosPrCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } if (cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_PosPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); - vhistnSigmaITS_TPC_Pt_PosPr_After_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); + vhistnSigmaITSTPCPtPosPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); + vhistnSigmaITSTPCPtPosPrAfterCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_After_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtPosPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtPosPrAfterCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); } } else if (trk.sign() < 0) { if (cfgOpenPtEtaPhi) { - vhistPhi_Pt_Eta_NegPr_Cen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); + vhistPhiPtEtaNegPrCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } if (cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_NegPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); - vhistnSigmaITS_TPC_Pt_NegPr_After_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); + vhistnSigmaITSTPCPtNegPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); + vhistnSigmaITSTPCPtNegPrAfterCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_After_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtNegPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtNegPrAfterCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); } } } @@ -766,17 +766,17 @@ struct QAProcessCent { if (cfgOpenPi) { if (trk.sign() > 0) { if (cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_PosPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); + vhistnSigmaITSTPCPtPosPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtPosPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); } } else if (trk.sign() < 0) { if (cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_NegPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); + vhistnSigmaITSTPCPtNegPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPi_Before_Cen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtNegPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); } } } @@ -785,17 +785,17 @@ struct QAProcessCent { if (cfgOpenKa) { if (trk.sign() > 0) { if (cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_PosKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); + vhistnSigmaITSTPCPtPosKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtPosKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); } } else if (trk.sign() < 0) { if (cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_NegKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); + vhistnSigmaITSTPCPtNegKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegKa_Before_Cen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtNegKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); } } } @@ -804,17 +804,17 @@ struct QAProcessCent { if (cfgOpenPr) { if (trk.sign() > 0) { if (cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_PosPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); + vhistnSigmaITSTPCPtPosPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_PosPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtPosPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); } } else if (trk.sign() < 0) { if (cfgOpenITSTPCnSigma) { - vhistnSigmaITS_TPC_Pt_NegPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); + vhistnSigmaITSTPCPtNegPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCosl_nSigmaTPC_Pt_NegPr_Before_Cen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistAverClusterSizeCoslnSigmaTPCPtNegPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); } } } @@ -1710,4 +1710,4 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) adaptAnalysisTask(cfgc), adaptAnalysisTask(cfgc), }; -} +} \ No newline at end of file From 1687ee7576b103851f561b82e5d8bc7e72099dc7 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Sun, 2 Feb 2025 09:18:41 +0000 Subject: [PATCH 06/14] Please consider the following formatting changes --- PWGCF/Flow/Tasks/pidcme.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PWGCF/Flow/Tasks/pidcme.cxx b/PWGCF/Flow/Tasks/pidcme.cxx index e731c99aa5a..24a90f918c9 100644 --- a/PWGCF/Flow/Tasks/pidcme.cxx +++ b/PWGCF/Flow/Tasks/pidcme.cxx @@ -1710,4 +1710,5 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) adaptAnalysisTask(cfgc), adaptAnalysisTask(cfgc), }; -} \ No newline at end of file +} + \ No newline at end of file From e6e6a2f4947d7f5c27867ba49bb49d015d7f501e Mon Sep 17 00:00:00 2001 From: zhengqi-w Date: Sun, 2 Feb 2025 17:36:28 +0800 Subject: [PATCH 07/14] new --- PWGCF/Flow/Tasks/pidcme.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/PWGCF/Flow/Tasks/pidcme.cxx b/PWGCF/Flow/Tasks/pidcme.cxx index 24a90f918c9..eb34dd6e7af 100644 --- a/PWGCF/Flow/Tasks/pidcme.cxx +++ b/PWGCF/Flow/Tasks/pidcme.cxx @@ -46,6 +46,7 @@ #include "CommonConstants/PhysicsConstants.h" #include +#include // o2 includes. From 41617d3e32f8c143853660f71a1014e568c81594 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Sun, 2 Feb 2025 09:38:16 +0000 Subject: [PATCH 08/14] Please consider the following formatting changes --- PWGCF/Flow/Tasks/pidcme.cxx | 1 - 1 file changed, 1 deletion(-) diff --git a/PWGCF/Flow/Tasks/pidcme.cxx b/PWGCF/Flow/Tasks/pidcme.cxx index eb34dd6e7af..5da20f846db 100644 --- a/PWGCF/Flow/Tasks/pidcme.cxx +++ b/PWGCF/Flow/Tasks/pidcme.cxx @@ -1712,4 +1712,3 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) adaptAnalysisTask(cfgc), }; } - \ No newline at end of file From ac8b80b846181e6f63bea7a8fd824734cc82e077 Mon Sep 17 00:00:00 2001 From: zhengqi-w Date: Sun, 2 Feb 2025 17:55:45 +0800 Subject: [PATCH 09/14] mew --- PWGCF/Flow/Tasks/pidcme.cxx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/PWGCF/Flow/Tasks/pidcme.cxx b/PWGCF/Flow/Tasks/pidcme.cxx index 5da20f846db..a78a2049241 100644 --- a/PWGCF/Flow/Tasks/pidcme.cxx +++ b/PWGCF/Flow/Tasks/pidcme.cxx @@ -17,6 +17,8 @@ #include #include #include +#include +#include #include #include #include @@ -45,9 +47,6 @@ #include "CommonConstants/PhysicsConstants.h" -#include -#include - // o2 includes. using namespace o2; From 5a85389c05c477e8e01a22dd9c06aa0a2251ad73 Mon Sep 17 00:00:00 2001 From: zhengqi-w Date: Wed, 19 Feb 2025 00:25:08 +0800 Subject: [PATCH 10/14] add ITS-TPC purity cut --- PWGCF/Flow/Tasks/pidcme.cxx | 1052 ++++++++++++++++++++++------------- 1 file changed, 662 insertions(+), 390 deletions(-) diff --git a/PWGCF/Flow/Tasks/pidcme.cxx b/PWGCF/Flow/Tasks/pidcme.cxx index a78a2049241..2baea1dfb10 100644 --- a/PWGCF/Flow/Tasks/pidcme.cxx +++ b/PWGCF/Flow/Tasks/pidcme.cxx @@ -14,6 +14,7 @@ /// \brief task to calculate the pikp cme signal and bacground. // C++/ROOT includes. // o2-linter: disable=name/workflow-file +#include #include #include #include @@ -57,7 +58,7 @@ namespace o2::aod { namespace cme_track_pid_columns { -DECLARE_SOA_COLUMN(NPidFlag, nPidFlag, int8_t); // Flag tracks without proper binning as -1, and indicate type of particle 0->un-Id, 1->pion, 2->kaon, 3->proton +DECLARE_SOA_COLUMN(NPidFlag, nPidFlag, int8_t); // Flag tracks without proper binning as -1, and indicate type of particle [0->(un_Id) 1->(pi_only), 2->(ka_only), 3->(pr_only), 4->(pi_ITSleft), 5->(ka_ITSleft), 6->(pr_ITSleft), 7->(pi_ka), 8->(pi_Pr), 9->(ka_pr), 10->(pi_ka_pr), 11->(pi_ka_ITSleft), 12->(pi_pr_ITSleft), 13->(ka_pr_ITSleft), 14->(pi_ka_pr_ITSleft)] DECLARE_SOA_COLUMN(AverClusterSizeCosl, averClusterSizeCosl, float); DECLARE_SOA_COLUMN(NSigmaPiITS, nSigmaPiITS, float); DECLARE_SOA_COLUMN(NSigmaKaITS, nSigmaKaITS, float); @@ -96,6 +97,8 @@ struct FillPIDcolums { Configurable cfgOpenITSCut{"cfgOpenITSCut", true, "open ITSnsigma cut"}; Configurable cfgOpenDetailPlots{"cfgOpenDetailPlots", true, "open detail TH3D plots for nSigmaTPC-ITS Pt-eta-Phi nSigmaITS-clustersize"}; + Configurable cfgOpenAllowCrossTrack{"cfgOpenAllowCrossTrack", true, "Allow one track to be identified as different kind of PID particles"}; + Configurable cfgOpenCrossTrackQAPlots{"cfgOpenCrossTrackQAPlots", true, "open cross pid track QA plots"}; Configurable> cfgnSigmaCutTPC{"cfgnSigmaCutTPC", {3, 3, 3}, "TPC cut for pi k p respectively at low pt"}; Configurable> cfgnSigmaCutRMS{"cfgnSigmaCutRMS", {3, 3, 3}, "TPC_TOF combined cut for pi k p respectively at high pt"}; @@ -151,6 +154,7 @@ struct FillPIDcolums { std::array nSigmaCombined = {std::hypot(candidate.tpcNSigmaPi(), candidate.tofNSigmaPi()), std::hypot(candidate.tpcNSigmaKa(), candidate.tofNSigmaKa()), std::hypot(candidate.tpcNSigmaPr(), candidate.tofNSigmaPr())}; // Choose which nSigma to use int pid = -1; + bool kIsPi = false, kIsKa = false, kIsPr = false; std::vector pidVector = (candidate.pt() > cfgPtMaxforTPCOnlyPID && candidate.hasTOF()) ? cfgnSigmaCutRMS.value : cfgnSigmaCutTPC.value; float nsigma = pidVector[0]; std::array nSigmaToUse = (candidate.pt() > cfgPtMaxforTPCOnlyPID && candidate.hasTOF()) ? nSigmaCombined : nSigmaTPC; @@ -158,57 +162,107 @@ struct FillPIDcolums { for (int i = 0; i < 3; ++i) { if (std::abs(nSigmaToUse[i]) < pidVector[i]) { if (i == 0) { - histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_cross_Pi"), candidate.tpcNSigmaPi(), candidate.tofNSigmaPi(), candidate.pt()); - histosQA.fill(HIST("QA/PID/histdEdxTPC_cross_Pi"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal()); - histosQA.fill(HIST("QA/PID/histnSigma_cross_Pi"), candidate.tpcNSigmaPi()); - histosQA.fill(HIST("QA/PID/histnSigma_Pt_cross_Pi"), candidate.pt(), candidate.tpcNSigmaPi()); - histosQA.fill(HIST("QA/PID/histnSigma_ITS_cross_Pi"), candidate.itsNSigmaPi()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_cross_Pi"), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_cross_Pi"), candidate.p(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Pi"), candidate.tpcNSigmaPi(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histPhi_Dis_cross_Pi"), candidate.phi()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Pi"), candidate.tpcNSigmaPi(), candidate.itsNSigmaPi()); + kIsPi = true; + if(cfgOpenCrossTrackQAPlots){ + histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_cross_Pi"), candidate.tpcNSigmaPi(), candidate.tofNSigmaPi(), candidate.pt()); + histosQA.fill(HIST("QA/PID/histdEdxTPC_cross_Pi"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal()); + histosQA.fill(HIST("QA/PID/histnSigma_cross_Pi"), candidate.tpcNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigma_Pt_cross_Pi"), candidate.pt(), candidate.tpcNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_cross_Pi"), candidate.itsNSigmaPi()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_cross_Pi"), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_cross_Pi"), candidate.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Pi"), candidate.tpcNSigmaPi(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histPhi_Dis_cross_Pi"), candidate.phi()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Pi"), candidate.tpcNSigmaPi(), candidate.itsNSigmaPi()); + } } if (i == 1) { - histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_cross_Ka"), candidate.tpcNSigmaKa(), candidate.tofNSigmaKa(), candidate.pt()); - histosQA.fill(HIST("QA/PID/histdEdxTPC_cross_Ka"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal()); - histosQA.fill(HIST("QA/PID/histnSigma_cross_Ka"), candidate.tpcNSigmaKa()); - histosQA.fill(HIST("QA/PID/histnSigma_Pt_cross_Ka"), candidate.pt(), candidate.tpcNSigmaKa()); - histosQA.fill(HIST("QA/PID/histnSigma_ITS_cross_Ka"), candidate.itsNSigmaKa()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_cross_Ka"), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_cross_Ka"), candidate.p(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Ka"), candidate.tpcNSigmaKa(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histPhi_Dis_cross_Ka"), candidate.phi()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Ka"), candidate.tpcNSigmaKa(), candidate.itsNSigmaKa()); + kIsKa = true; + if(cfgOpenCrossTrackQAPlots){ + histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_cross_Ka"), candidate.tpcNSigmaKa(), candidate.tofNSigmaKa(), candidate.pt()); + histosQA.fill(HIST("QA/PID/histdEdxTPC_cross_Ka"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal()); + histosQA.fill(HIST("QA/PID/histnSigma_cross_Ka"), candidate.tpcNSigmaKa()); + histosQA.fill(HIST("QA/PID/histnSigma_Pt_cross_Ka"), candidate.pt(), candidate.tpcNSigmaKa()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_cross_Ka"), candidate.itsNSigmaKa()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_cross_Ka"), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_cross_Ka"), candidate.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Ka"), candidate.tpcNSigmaKa(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histPhi_Dis_cross_Ka"), candidate.phi()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Ka"), candidate.tpcNSigmaKa(), candidate.itsNSigmaKa()); + } } if (i == 2) { - histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_cross_Pr"), candidate.tpcNSigmaPr(), candidate.tofNSigmaPr(), candidate.pt()); - histosQA.fill(HIST("QA/PID/histdEdxTPC_cross_Pr"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal()); - histosQA.fill(HIST("QA/PID/histnSigma_cross_Pr"), candidate.tpcNSigmaPr()); - histosQA.fill(HIST("QA/PID/histnSigma_Pt_cross_Pr"), candidate.pt(), candidate.tpcNSigmaPr()); - histosQA.fill(HIST("QA/PID/histnSigma_ITS_cross_Pr"), candidate.itsNSigmaPr()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_cross_Pr"), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_cross_Pr"), candidate.p(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Pr"), candidate.tpcNSigmaKa(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histPhi_Dis_cross_Pr"), candidate.phi()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Pr"), candidate.tpcNSigmaPr(), candidate.itsNSigmaPr()); + kIsPr = true; + if(cfgOpenCrossTrackQAPlots){ + histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_cross_Pr"), candidate.tpcNSigmaPr(), candidate.tofNSigmaPr(), candidate.pt()); + histosQA.fill(HIST("QA/PID/histdEdxTPC_cross_Pr"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal()); + histosQA.fill(HIST("QA/PID/histnSigma_cross_Pr"), candidate.tpcNSigmaPr()); + histosQA.fill(HIST("QA/PID/histnSigma_Pt_cross_Pr"), candidate.pt(), candidate.tpcNSigmaPr()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_cross_Pr"), candidate.itsNSigmaPr()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_cross_Pr"), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_cross_Pr"), candidate.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Pr"), candidate.tpcNSigmaKa(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histPhi_Dis_cross_Pr"), candidate.phi()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Pr"), candidate.tpcNSigmaPr(), candidate.itsNSigmaPr()); + } } } } - // Select particle with the lowest nsigma - for (int i = 0; i < 3; ++i) { - if (std::abs(nSigmaToUse[i]) < nsigma && std::abs(nSigmaToUse[i]) < pidVector[i]) { - pid = i; - nsigma = std::abs(nSigmaToUse[i]); + if(cfgOpenAllowCrossTrack) { + // one track can be recognized as different PID particles + int index = (kIsPr << 2) | (kIsKa << 1) | kIsPi; + const int map[] = {0, 1, 2, 7, 3, 8, 9, 10}; + return map[index]; + } else { + // Select particle with the lowest nsigma (If not allow cross track) + for (int i = 0; i < 3; ++i) { + if (std::abs(nSigmaToUse[i]) < nsigma && std::abs(nSigmaToUse[i]) < pidVector[i]) { + pid = i; + nsigma = std::abs(nSigmaToUse[i]); + } + } + return pid + 1; // shift the pid by 1, 1 = pion, 2 = kaon, 3 = proton + } + + } + + template + bool selectionITS(const T& candidate, int mode, float avgclssize) + { + switch (mode) + { + case 1: //For Pion + if(!(std::abs(candidate.itsNSigmaPi()) < cfgnSigmaCutITS.value[0] && avgclssize > cfgAveClusSizeCoslMinPi && avgclssize < cfgAveClusSizeCoslMaxPi)) { + return false; + } else { + return true; } + break; + + case 2: //For Kaon + if(!(std::abs(candidate.itsNSigmaKa()) < cfgnSigmaCutITS.value[1] && avgclssize > cfgAveClusSizeCoslMinKa && avgclssize < cfgAveClusSizeCoslMaxKa)) { + return false; + } else { + return true; + } + break; + + case 3: //For Proton + if(!(std::abs(candidate.itsNSigmaPr()) < cfgnSigmaCutITS.value[2] && avgclssize > cfgAveClusSizeCoslMinPr && avgclssize < cfgAveClusSizeCoslMaxPr)) { + return false; + } else { + return true; + } + break; } - return pid + 1; // shift the pid by 1, 1 = pion, 2 = kaon, 3 = proton + return false; } HistogramRegistry histosQA{"histosQAPID", {}, OutputObjHandlingPolicy::AnalysisObject}; void init(InitContext const&) { + AxisSpec axisRigidity{cfgrigidityBins, "#it{p}^{TPC}/#it{z}"}; AxisSpec axisdEdx{cfgdedxBins, "d#it{E}/d#it{x}"}; AxisSpec axisnSigmaTPC{cfgnSigmaBinsTPC, "n_{#sigma}TPC"}; @@ -356,163 +410,248 @@ struct FillPIDcolums { aod::pidits::ITSNSigmaPr>(tracks); int8_t pidFlag; for (const auto& track : tracksWithITSPid) { - float averClusSizeCosl = averageClusterSizeCosl(track.itsClusterSizes(), track.eta()); + const float averClusSizeCosl = averageClusterSizeCosl(track.itsClusterSizes(), track.eta()); if (!selTrackPid(track)) { pidFlag = -1; } else { histosQA.fill(HIST("QA/PID/histdEdxTPC_All"), track.sign() * track.tpcInnerParam(), track.tpcSignal()); pidFlag = selectionPidtpctof(track); - switch (pidFlag) { // no cross pid track QA plots + // First fill ITS uncut plots + if((pidFlag == 1) || (pidFlag == 7) || (pidFlag == 8) || (pidFlag == 10)) { + histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_Pi"), track.tpcNSigmaPi(), track.tofNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_Pi"), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Pi"), track.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pi"), track.tpcNSigmaPi(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_Pi"), track.tpcNSigmaPi(), track.itsNSigmaPi()); + histosQA.fill(HIST("QA/PID/histdEdxTPC_Pi"), track.sign() * track.tpcInnerParam(), track.tpcSignal()); + histosQA.fill(HIST("QA/PID/histnSigma_Pi"), track.tpcNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigma_Pt_Pi"), track.pt(), track.tpcNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigma_com_Pi"), std::hypot(track.tpcNSigmaPi(), track.tofNSigmaPi())); + histosQA.fill(HIST("QA/PID/histnSigma_TOF_Pi"), track.tofNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_Pi"), track.itsNSigmaPi()); + histosQA.fill(HIST("QA/PID/histPhi_Dis_Pi"), track.phi()); + if (cfgOpenDetailPlots) { + if (track.sign() > 0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPi_Before"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPi_Before"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } else if (track.sign() < 0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPi_Before"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_Before"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } + } + } + if((pidFlag == 2) || (pidFlag == 7) || (pidFlag == 9) || (pidFlag == 10)) { + histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_Ka"), track.tpcNSigmaKa(), track.tofNSigmaKa(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_Ka"), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Ka"), track.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Ka"), track.tpcNSigmaKa(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_Ka"), track.tpcNSigmaKa(), track.itsNSigmaKa()); + histosQA.fill(HIST("QA/PID/histdEdxTPC_Ka"), track.sign() * track.tpcInnerParam(), track.tpcSignal()); + histosQA.fill(HIST("QA/PID/histnSigma_Ka"), track.tpcNSigmaKa()); + histosQA.fill(HIST("QA/PID/histnSigma_Pt_Ka"), track.pt(), track.tpcNSigmaKa()); + histosQA.fill(HIST("QA/PID/histnSigma_com_Ka"), std::hypot(track.tpcNSigmaKa(), track.tofNSigmaKa())); + histosQA.fill(HIST("QA/PID/histnSigma_TOF_Ka"), track.tofNSigmaKa()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_Ka"), track.itsNSigmaKa()); + histosQA.fill(HIST("QA/PID/histPhi_Dis_Ka"), track.phi()); + if (cfgOpenDetailPlots) { + if (track.sign() > 0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosKa_Before"), track.tpcNSigmaKa(), track.itsNSigmaKa(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosKa_Before"), track.tpcNSigmaKa(), averClusSizeCosl, track.pt()); + } else if (track.sign() < 0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegKa_Before"), track.tpcNSigmaKa(), track.itsNSigmaKa(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_Before"), track.tpcNSigmaKa(), averClusSizeCosl, track.pt()); + } + } + } + if((pidFlag == 3) || (pidFlag == 8) || (pidFlag == 9) || (pidFlag == 10)) { + histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_Pr"), track.tpcNSigmaPr(), track.tofNSigmaPr(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_Pr"), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Pr"), track.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pr"), track.tpcNSigmaPr(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_Pr"), track.tpcNSigmaPr(), track.itsNSigmaPr()); + histosQA.fill(HIST("QA/PID/histdEdxTPC_Pr"), track.sign() * track.tpcInnerParam(), track.tpcSignal()); + histosQA.fill(HIST("QA/PID/histnSigma_Pr"), track.tpcNSigmaPr()); + histosQA.fill(HIST("QA/PID/histnSigma_Pt_Pr"), track.pt(), track.tpcNSigmaPr()); + histosQA.fill(HIST("QA/PID/histnSigma_com_Pr"), std::hypot(track.tpcNSigmaPr(), track.tofNSigmaPr())); + histosQA.fill(HIST("QA/PID/histnSigma_TOF_Pr"), track.tofNSigmaPr()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_Pr"), track.itsNSigmaPr()); + histosQA.fill(HIST("QA/PID/histPhi_Dis_Pr"), track.phi()); + if (cfgOpenDetailPlots) { + if (track.sign() > 0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPr_Before"), track.tpcNSigmaPr(), track.itsNSigmaPr(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPr_Before"), track.tpcNSigmaPr(), averClusSizeCosl, track.pt()); + } else if (track.sign() < 0) { + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPr_Before"), track.tpcNSigmaPr(), track.itsNSigmaPr(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPr_Before"), track.tpcNSigmaPr(), averClusSizeCosl, track.pt()); + } + } + } + //Second proform ITS cut + if (cfgOpenITSCut) { + int idx = -1; + switch (pidFlag) + { case 1: - histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_Pi"), track.tpcNSigmaPi(), track.tofNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_Pi"), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Pi"), track.p(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pi"), track.tpcNSigmaPi(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_Pi"), track.tpcNSigmaPi(), track.itsNSigmaPi()); - histosQA.fill(HIST("QA/PID/histdEdxTPC_Pi"), track.sign() * track.tpcInnerParam(), track.tpcSignal()); - histosQA.fill(HIST("QA/PID/histnSigma_Pi"), track.tpcNSigmaPi()); - histosQA.fill(HIST("QA/PID/histnSigma_Pt_Pi"), track.pt(), track.tpcNSigmaPi()); - histosQA.fill(HIST("QA/PID/histnSigma_com_Pi"), std::hypot(track.tpcNSigmaPi(), track.tofNSigmaPi())); - histosQA.fill(HIST("QA/PID/histnSigma_TOF_Pi"), track.tofNSigmaPi()); - histosQA.fill(HIST("QA/PID/histnSigma_ITS_Pi"), track.itsNSigmaPi()); - histosQA.fill(HIST("QA/PID/histPhi_Dis_Pi"), track.phi()); - if (cfgOpenDetailPlots) { - if (track.sign() > 0) { - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPi_Before"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPi_Before"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } else if (track.sign() < 0) { - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPi_Before"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_Before"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } + if (!selectionITS(track, 1, averClusSizeCosl)) { + pidFlag = 4; } break; case 2: - histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_Ka"), track.tpcNSigmaKa(), track.tofNSigmaKa(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_Ka"), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Ka"), track.p(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Ka"), track.tpcNSigmaKa(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_Ka"), track.tpcNSigmaKa(), track.itsNSigmaKa()); - histosQA.fill(HIST("QA/PID/histdEdxTPC_Ka"), track.sign() * track.tpcInnerParam(), track.tpcSignal()); - histosQA.fill(HIST("QA/PID/histnSigma_Ka"), track.tpcNSigmaKa()); - histosQA.fill(HIST("QA/PID/histnSigma_Pt_Ka"), track.pt(), track.tpcNSigmaKa()); - histosQA.fill(HIST("QA/PID/histnSigma_com_Ka"), std::hypot(track.tpcNSigmaKa(), track.tofNSigmaKa())); - histosQA.fill(HIST("QA/PID/histnSigma_TOF_Ka"), track.tofNSigmaKa()); - histosQA.fill(HIST("QA/PID/histnSigma_ITS_Ka"), track.itsNSigmaKa()); - histosQA.fill(HIST("QA/PID/histPhi_Dis_Ka"), track.phi()); - if (cfgOpenDetailPlots) { - if (track.sign() > 0) { - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosKa_Before"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosKa_Before"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } else if (track.sign() < 0) { - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegKa_Before"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_Before"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } + if (!selectionITS(track, 2, averClusSizeCosl)) { + pidFlag = 5; } break; case 3: - histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_Pr"), track.tpcNSigmaPr(), track.tofNSigmaPr(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_Pr"), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Pr"), track.p(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_Pr"), track.tpcNSigmaPr(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_Pr"), track.tpcNSigmaPr(), track.itsNSigmaPr()); - histosQA.fill(HIST("QA/PID/histdEdxTPC_Pr"), track.sign() * track.tpcInnerParam(), track.tpcSignal()); - histosQA.fill(HIST("QA/PID/histnSigma_Pr"), track.tpcNSigmaPr()); - histosQA.fill(HIST("QA/PID/histnSigma_Pt_Pr"), track.pt(), track.tpcNSigmaPr()); - histosQA.fill(HIST("QA/PID/histnSigma_com_Pr"), std::hypot(track.tpcNSigmaPr(), track.tofNSigmaPr())); - histosQA.fill(HIST("QA/PID/histnSigma_TOF_Pr"), track.tofNSigmaPr()); - histosQA.fill(HIST("QA/PID/histnSigma_ITS_Pr"), track.itsNSigmaPr()); - histosQA.fill(HIST("QA/PID/histPhi_Dis_Pr"), track.phi()); - if (cfgOpenDetailPlots) { - if (track.sign() > 0) { - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPr_Before"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPr_Before"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } else if (track.sign() < 0) { - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPr_Before"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPr_Before"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } + if (!selectionITS(track, 3, averClusSizeCosl)) { + pidFlag = 6; + } + break; + case 7: + idx = (selectionITS(track, 1, averClusSizeCosl) << 1) | selectionITS(track, 2, averClusSizeCosl); + switch (idx) + { + case 0: + pidFlag = 11; + break; + + case 1: + pidFlag = 2; + break; + + case 2: + pidFlag = 1; + break; } break; - } - if (cfgOpenITSCut) { - switch (pidFlag) { + case 8: + idx = (selectionITS(track, 1, averClusSizeCosl) << 1) | selectionITS(track, 3, averClusSizeCosl); + switch (idx) + { + case 0: + pidFlag = 12; + break; + case 1: - if (!(std::abs(track.itsNSigmaPi()) < cfgnSigmaCutITS.value[0] && averClusSizeCosl > cfgAveClusSizeCoslMinPi && averClusSizeCosl < cfgAveClusSizeCoslMaxPi)) { - pidFlag = 4; - } + pidFlag = 3; break; + case 2: - if (!(std::abs(track.itsNSigmaKa()) < cfgnSigmaCutITS.value[1] && averClusSizeCosl > cfgAveClusSizeCoslMinKa && averClusSizeCosl < cfgAveClusSizeCoslMaxKa)) { - pidFlag = 5; - } + pidFlag = 1; break; + } + break; + case 9: + idx = (selectionITS(track, 2, averClusSizeCosl) << 1) | selectionITS(track, 3, averClusSizeCosl); + switch (idx) + { + case 0: + pidFlag = 13; + break; + + case 1: + pidFlag = 3; + break; + + case 2: + pidFlag = 2; + break; + } + break; + case 10: + idx = (selectionITS(track, 1, averClusSizeCosl) << 2) | (selectionITS(track, 2, averClusSizeCosl) << 1) | selectionITS(track, 3, averClusSizeCosl); + switch (idx) + { + case 0: + pidFlag = 14; + break; + + case 1: + pidFlag = 3; + break; + + case 2: + pidFlag = 2; + break; + case 3: - if (!(std::abs(track.itsNSigmaPr()) < cfgnSigmaCutITS.value[2] && averClusSizeCosl > cfgAveClusSizeCoslMinPr && averClusSizeCosl < cfgAveClusSizeCoslMaxPr)) { - pidFlag = 6; - } + pidFlag = 9; + break; + + case 4: + pidFlag = 1; + break; + + case 5: + pidFlag = 8; break; + + case 6: + pidFlag = 7; + break; + } + break; } } - switch (pidFlag) { // after ITScut QA plots - case 1: - histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_AfterITS_Pi"), track.tpcNSigmaPi(), track.tofNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_AfterITS_Pi"), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_AfterITS_Pi"), track.p(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_AfterITS_Pi"), track.tpcNSigmaPi(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Pi"), track.tpcNSigmaPi(), track.itsNSigmaPi()); - histosQA.fill(HIST("QA/PID/histnSigma_ITS_AfterITS_Pi"), track.itsNSigmaPi()); - histosQA.fill(HIST("QA/PID/histPhi_Dis_AfterITS_Pi"), track.phi()); - if (cfgOpenDetailPlots) { - if (track.sign() > 0) { - histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_PosPi"), track.phi(), track.pt(), track.eta()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPi_After"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPi_After"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } else if (track.sign() < 0) { - histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_NegPi"), track.phi(), track.pt(), track.eta()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPi_After"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_After"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } + //Third Fill ITS cut plots + if((pidFlag == 1) || (pidFlag == 7) || (pidFlag == 8) || (pidFlag == 10)) { + histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_AfterITS_Pi"), track.tpcNSigmaPi(), track.tofNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_AfterITS_Pi"), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_AfterITS_Pi"), track.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_AfterITS_Pi"), track.tpcNSigmaPi(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Pi"), track.tpcNSigmaPi(), track.itsNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_AfterITS_Pi"), track.itsNSigmaPi()); + histosQA.fill(HIST("QA/PID/histPhi_Dis_AfterITS_Pi"), track.phi()); + if (cfgOpenDetailPlots) { + if (track.sign() > 0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_PosPi"), track.phi(), track.pt(), track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPi_After"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPi_After"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); + } else if (track.sign() < 0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_NegPi"), track.phi(), track.pt(), track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPi_After"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_After"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); } - break; - case 2: - histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_AfterITS_Ka"), track.tpcNSigmaKa(), track.tofNSigmaKa(), track.pt()); - histosQA.fill(HIST("QA/PID/histnSigma_ITS_AfterITS_Ka"), track.itsNSigmaKa()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_AfterITS_Ka"), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_AfterITS_Ka"), track.p(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Ka"), track.tpcNSigmaKa(), track.itsNSigmaKa()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_AfterITS_Ka"), track.tpcNSigmaKa(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histPhi_Dis_AfterITS_Ka"), track.phi()); - if (cfgOpenDetailPlots) { - if (track.sign() > 0) { - histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_PosKa"), track.phi(), track.pt(), track.eta()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosKa_After"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosKa_After"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } else if (track.sign() < 0) { - histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_NegKa"), track.phi(), track.pt(), track.eta()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegKa_After"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_After"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } + } + } + if((pidFlag == 2) || (pidFlag == 7) || (pidFlag == 9) || (pidFlag == 10)) { + histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_AfterITS_Ka"), track.tpcNSigmaKa(), track.tofNSigmaKa(), track.pt()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_AfterITS_Ka"), track.itsNSigmaKa()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_AfterITS_Ka"), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_AfterITS_Ka"), track.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Ka"), track.tpcNSigmaKa(), track.itsNSigmaKa()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_AfterITS_Ka"), track.tpcNSigmaKa(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histPhi_Dis_AfterITS_Ka"), track.phi()); + if (cfgOpenDetailPlots) { + if (track.sign() > 0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_PosKa"), track.phi(), track.pt(), track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosKa_After"), track.tpcNSigmaKa(), track.itsNSigmaKa(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosKa_After"), track.tpcNSigmaKa(), averClusSizeCosl, track.pt()); + } else if (track.sign() < 0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_NegKa"), track.phi(), track.pt(), track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegKa_After"), track.tpcNSigmaKa(), track.itsNSigmaKa(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_After"), track.tpcNSigmaKa(), averClusSizeCosl, track.pt()); } - break; - case 3: - histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_AfterITS_Pr"), track.tpcNSigmaPr(), track.tofNSigmaPr(), track.pt()); - histosQA.fill(HIST("QA/PID/histnSigma_ITS_AfterITS_Pr"), track.itsNSigmaPr()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_AfterITS_Pr"), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_AfterITS_Pr"), track.p(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Pr"), track.tpcNSigmaPr(), track.itsNSigmaPr()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_AfterITS_Pr"), track.tpcNSigmaPr(), averClusSizeCosl); - histosQA.fill(HIST("QA/PID/histPhi_Dis_AfterITS_Pr"), track.phi()); - if (cfgOpenDetailPlots) { - if (track.sign() > 0) { - histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_PosPr"), track.phi(), track.pt(), track.eta()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPr_After"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPr_After"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } else if (track.sign() < 0) { - histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_NegPr"), track.phi(), track.pt(), track.eta()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPr_After"), track.tpcNSigmaPi(), track.itsNSigmaPi(), track.pt()); - histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPr_After"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); - } + } + } + if((pidFlag == 3) || (pidFlag == 8) || (pidFlag == 9) || (pidFlag == 10)) { + histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_AfterITS_Pr"), track.tpcNSigmaPr(), track.tofNSigmaPr(), track.pt()); + histosQA.fill(HIST("QA/PID/histnSigma_ITS_AfterITS_Pr"), track.itsNSigmaPr()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_AfterITS_Pr"), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_AfterITS_Pr"), track.p(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_AfterITS_Pr"), track.tpcNSigmaPr(), track.itsNSigmaPr()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_AfterITS_Pr"), track.tpcNSigmaPr(), averClusSizeCosl); + histosQA.fill(HIST("QA/PID/histPhi_Dis_AfterITS_Pr"), track.phi()); + if (cfgOpenDetailPlots) { + if (track.sign() > 0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_PosPr"), track.phi(), track.pt(), track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_PosPr_After"), track.tpcNSigmaPr(), track.itsNSigmaPr(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_PosPr_After"), track.tpcNSigmaPr(), averClusSizeCosl, track.pt()); + } else if (track.sign() < 0) { + histosQA.fill(HIST("QA/PID/histPhi_Pt_Eta_NegPr"), track.phi(), track.pt(), track.eta()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_TPC_Pt_NegPr_After"), track.tpcNSigmaPr(), track.itsNSigmaPr(), track.pt()); + histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPr_After"), track.tpcNSigmaPr(), averClusSizeCosl, track.pt()); } - break; + } } } pidCmeTable(pidFlag, averClusSizeCosl, track.itsNSigmaPi(), track.itsNSigmaKa(), track.itsNSigmaPr(), track.tpcNSigmaPi(), track.tpcNSigmaKa(), track.tpcNSigmaPr()); @@ -673,152 +812,129 @@ struct QAProcessCent { } if (currentBin >= 0) { for (const auto& trk : tracks) { - int8_t pididx = trk.nPidFlag(); - switch (pididx) { - case 1: - if (cfgOpenPi) { - if (trk.sign() > 0) { - if (cfgOpenPtEtaPhi) { + int8_t pidFlag = trk.nPidFlag(); + if (cfgOpenPi){ + if((pidFlag == 1) || (pidFlag == 4)|| (pidFlag == 7) || (pidFlag == 8) || (pidFlag == 10) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14)) { + if (trk.sign() > 0) { + if (cfgOpenPtEtaPhi) { + if(!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { vhistPhiPtEtaPosPiCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } - if (cfgOpenITSTPCnSigma) { - vhistnSigmaITSTPCPtPosPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); + } + if (cfgOpenITSTPCnSigma) { + if(!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { vhistnSigmaITSTPCPtPosPiAfterCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); } - if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCoslnSigmaTPCPtPosPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistnSigmaITSTPCPtPosPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); + } + if (cfgOpenClusSizenSigmaTPC) { + if(!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { vhistAverClusterSizeCoslnSigmaTPCPtPosPiAfterCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); } - } else if (trk.sign() < 0) { - if (cfgOpenPtEtaPhi) { + vhistAverClusterSizeCoslnSigmaTPCPtPosPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); + } + } else if (trk.sign() < 0) { + if (cfgOpenPtEtaPhi) { + if(!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { vhistPhiPtEtaNegPiCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } - if (cfgOpenITSTPCnSigma) { - vhistnSigmaITSTPCPtNegPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); + } + if (cfgOpenITSTPCnSigma) { + if(!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { vhistnSigmaITSTPCPtNegPiAfterCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); } - if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCoslnSigmaTPCPtNegPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistnSigmaITSTPCPtNegPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); + } + if (cfgOpenClusSizenSigmaTPC) { + if(!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { vhistAverClusterSizeCoslnSigmaTPCPtNegPiAfterCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); } + vhistAverClusterSizeCoslnSigmaTPCPtNegPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); } } - break; - case 2: - if (cfgOpenKa) { - if (trk.sign() > 0) { - if (cfgOpenPtEtaPhi) { + } + } + if (cfgOpenKa) { + if((pidFlag == 2) || (pidFlag == 5) || (pidFlag == 7) || (pidFlag == 9) || (pidFlag == 10) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14)) { + if (trk.sign() > 0) { + if (cfgOpenPtEtaPhi) { + if(!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { vhistPhiPtEtaPosKaCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } - if (cfgOpenITSTPCnSigma) { - vhistnSigmaITSTPCPtPosKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); + } + if (cfgOpenITSTPCnSigma) { + if(!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { vhistnSigmaITSTPCPtPosKaAfterCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); } - if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCoslnSigmaTPCPtPosKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistnSigmaITSTPCPtPosKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); + } + if (cfgOpenClusSizenSigmaTPC) { + if(!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { vhistAverClusterSizeCoslnSigmaTPCPtPosKaAfterCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); } - } else if (trk.sign() < 0) { - if (cfgOpenPtEtaPhi) { + vhistAverClusterSizeCoslnSigmaTPCPtPosKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); + } + } else if (trk.sign() < 0) { + if (cfgOpenPtEtaPhi) { + if(!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { vhistPhiPtEtaNegKaCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } - if (cfgOpenITSTPCnSigma) { - vhistnSigmaITSTPCPtNegKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); + } + if (cfgOpenITSTPCnSigma) { + if(!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { vhistnSigmaITSTPCPtNegKaAfterCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); } - if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCoslnSigmaTPCPtNegKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistnSigmaITSTPCPtNegKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); + } + if (cfgOpenClusSizenSigmaTPC) { + if(!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { vhistAverClusterSizeCoslnSigmaTPCPtNegKaAfterCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); } + vhistAverClusterSizeCoslnSigmaTPCPtNegKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); } } - break; - case 3: - if (cfgOpenPr) { - if (trk.sign() > 0) { - if (cfgOpenPtEtaPhi) { + } + } + if (cfgOpenPr) { + if((pidFlag == 3) || (pidFlag == 6) || (pidFlag == 8) || (pidFlag == 9) || (pidFlag == 10) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14)) { + if (trk.sign() > 0) { + if (cfgOpenPtEtaPhi) { + if(!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { vhistPhiPtEtaPosPrCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } - if (cfgOpenITSTPCnSigma) { - vhistnSigmaITSTPCPtPosPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); + } + if (cfgOpenITSTPCnSigma) { + if(!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { vhistnSigmaITSTPCPtPosPrAfterCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); } - if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCoslnSigmaTPCPtPosPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); + vhistnSigmaITSTPCPtPosPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); + } + if (cfgOpenClusSizenSigmaTPC) { + if(!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { vhistAverClusterSizeCoslnSigmaTPCPtPosPrAfterCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); } - } else if (trk.sign() < 0) { - if (cfgOpenPtEtaPhi) { - vhistPhiPtEtaNegPrCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); - } - if (cfgOpenITSTPCnSigma) { - vhistnSigmaITSTPCPtNegPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); - vhistnSigmaITSTPCPtNegPrAfterCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); - } - if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCoslnSigmaTPCPtNegPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); - vhistAverClusterSizeCoslnSigmaTPCPtNegPrAfterCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); - } + vhistAverClusterSizeCoslnSigmaTPCPtPosPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); } - } - break; - case 4: - if (cfgOpenPi) { - if (trk.sign() > 0) { - if (cfgOpenITSTPCnSigma) { - vhistnSigmaITSTPCPtPosPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); - } - if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCoslnSigmaTPCPtPosPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); - } - } else if (trk.sign() < 0) { - if (cfgOpenITSTPCnSigma) { - vhistnSigmaITSTPCPtNegPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); - } - if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCoslnSigmaTPCPtNegPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); + } else if (trk.sign() < 0) { + if (cfgOpenPtEtaPhi) { + if(!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { + vhistPhiPtEtaNegPrCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } } - } - break; - case 5: - if (cfgOpenKa) { - if (trk.sign() > 0) { - if (cfgOpenITSTPCnSigma) { - vhistnSigmaITSTPCPtPosKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); - } - if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCoslnSigmaTPCPtPosKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); - } - } else if (trk.sign() < 0) { - if (cfgOpenITSTPCnSigma) { - vhistnSigmaITSTPCPtNegKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); - } - if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCoslnSigmaTPCPtNegKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); + if (cfgOpenITSTPCnSigma) { + if(!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { + vhistnSigmaITSTPCPtNegPrAfterCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); } + vhistnSigmaITSTPCPtNegPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); } - } - break; - case 6: - if (cfgOpenPr) { - if (trk.sign() > 0) { - if (cfgOpenITSTPCnSigma) { - vhistnSigmaITSTPCPtPosPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); - } - if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCoslnSigmaTPCPtPosPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); - } - } else if (trk.sign() < 0) { - if (cfgOpenITSTPCnSigma) { - vhistnSigmaITSTPCPtNegPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); - } - if (cfgOpenClusSizenSigmaTPC) { - vhistAverClusterSizeCoslnSigmaTPCPtNegPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); + if (cfgOpenClusSizenSigmaTPC) { + if(!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { + vhistAverClusterSizeCoslnSigmaTPCPtNegPrAfterCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); } + vhistAverClusterSizeCoslnSigmaTPCPtNegPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); } } - break; + } } } } @@ -858,6 +974,9 @@ struct pidcme { // o2-linter: disable=name/struct ConfigurableAxis cfgaxisT0C{"cfgaxisT0C", {70, 0, 70000}, "N_{ch} (T0C)"}; ConfigurableAxis cfgaxisT0A{"cfgaxisT0A", {200, 0, 200000}, "N_{ch} (T0A)"}; ConfigurableAxis cfgaxisNchPV{"cfgaxisNchPV", {4000, 0, 4000}, "N_{ch} (PV)"}; + ConfigurableAxis cfgaxisptPIDcme{"cfgaxisptPIDcme", {120, 0, 12}, "Binning for P_{t} PID"}; + ConfigurableAxis cfgnSigmaBinsTPCcme{"cfgnSigmaBinsTPCcme", {200, -5.f, 5.f}, "Binning for n sigma TPC"}; + ConfigurableAxis cfgnSigmaBinsITScme{"cfgnSigmaBinsITScme", {200, -5.f, 5.f}, "Binning for n sigma TPC"}; ConfigurableAxis cfgaxissumpt{"cfgaxissumpt", {7, 1, 8}, "Binning for #gamma and #delta pt(particle1 + particle2)"}; ConfigurableAxis cfgaxisdeltaeta{"cfgaxisdeltaeta", {5, 0, 1}, "Binning for #gamma and #delta |#eta(particle1 - particle2)|"}; @@ -882,7 +1001,17 @@ struct pidcme { // o2-linter: disable=name/struct Configurable cfgkOpenKaPr{"cfgkOpenKaPr", true, "open Ka-Pr"}; Configurable cfgkOpenHaHa{"cfgkOpenHaHa", false, "open Ha-Ha"}; Configurable cfgkOpenSsOsCrossCheck{"cfgkOpenSsOsCrossCheck", false, "open check for matter an antimatter #gamma#delta"}; + Configurable cfgkOpenTPCITSPurityCut{"cfgkOpenTPCITSPurityCut", true, "open ITS-TPC purity cut"}; + Configurable cfgkOpenTPCITSPurityCutQA{"cfgkOpenTPCITSPurityCutQA", true, "open ITS-TPC purity cut QA plots"}; + Configurable cfgkOpenDebugPIDCME{"cfgkOpenDebugPIDCME", false, "open pidcme workflow debug mode"}; + Configurable> cfgITSPurityCen{"cfgITSPurityCen", {20,30}, "ITS purity cut centrality"}; + Configurable> cfgPtPrCut{"cfgPtPrCut", {0.5, 0.6, 0.7, 0.8, 0.9}, "pt binings for proton ITS purity cut"}; + Configurable cfgCCDBPurityPath {"cfgCCDBPurityString", "Users/z/zhengqiw/PurityCut", "CCDB path for nsigmaITS - nSigmaTPC purity cut"}; + Configurable ccdbNoLaterThan{"ccdbNoLaterThan", std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(), "latest acceptable timestamp of creation for the object"}; + Configurable ccdbUrl{"ccdbUrl", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; + + Service ccdb; EventPlaneHelper helperEP; SliceCache cache; @@ -898,6 +1027,9 @@ struct pidcme { // o2-linter: disable=name/struct TF1* fMultMultPVCut = nullptr; TF1* fT0AV0AMean = nullptr; TF1* fT0AV0ASigma = nullptr; + // vectors for ITS-TPC contanmination cut + std::vector>> hPosPrCut; + std::vector>> hNegPrCut; template int getDetId(const T& name) @@ -927,17 +1059,20 @@ struct pidcme { // o2-linter: disable=name/struct Filter collisionFilter = (nabs(aod::collision::posZ) < cfgVtzCut) && (aod::cent::centFT0C > cfgCentMin) && (aod::cent::centFT0C < cfgCentMax); Filter ptfilter = aod::track::pt > cfgMinPt; Filter etafilter = aod::track::eta < cfgMaxEta; - Filter properPIDfilter = aod::cme_track_pid_columns::nPidFlag > (int8_t)0; + Filter properPIDfilter = aod::cme_track_pid_columns::nPidFlag >= (int8_t)0; - Partition>> tracksSet1 = aod::cme_track_pid_columns::nPidFlag == 1; - Partition>> tracksSet2 = aod::cme_track_pid_columns::nPidFlag == 2; - Partition>> tracksSet3 = aod::cme_track_pid_columns::nPidFlag == 3; - // Partition>> tracksSet4 = aod::cme_track_pid_columns::nPidFlag == 4; - // Partition>> tracksSet5 = aod::cme_track_pid_columns::nPidFlag == 5; - // Partition>> tracksSet6 = aod::cme_track_pid_columns::nPidFlag == 6; + Partition>> tracksSet1 = ((aod::cme_track_pid_columns::nPidFlag == 1) || (aod::cme_track_pid_columns::nPidFlag == 7) || (aod::cme_track_pid_columns::nPidFlag == 8) || (aod::cme_track_pid_columns::nPidFlag == 10)); + Partition>> tracksSet2 = ((aod::cme_track_pid_columns::nPidFlag == 2) || (aod::cme_track_pid_columns::nPidFlag == 7) || (aod::cme_track_pid_columns::nPidFlag == 9) || (aod::cme_track_pid_columns::nPidFlag == 10)); + Partition>> tracksSet3 = ((aod::cme_track_pid_columns::nPidFlag == 3) || (aod::cme_track_pid_columns::nPidFlag == 8) || (aod::cme_track_pid_columns::nPidFlag == 9) || (aod::cme_track_pid_columns::nPidFlag == 10)); void init(InitContext const&) { + ccdb->setURL(ccdbUrl.value); + ccdb->setCaching(true); + ccdb->setLocalObjectValidityChecking(); + ccdb->setCreatedNotAfter(ccdbNoLaterThan.value); + ccdb->setFatalWhenNull(false); + detId = getDetId(cfgDetName); refAId = getDetId(cfgRefAName); refBId = getDetId(cfgRefBName); @@ -1035,6 +1170,11 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("V2/PID/histCosDetV2_Pi_Neg"), "", {HistType::kTH3F, {axisCentMerged, axisPt, axisCos}}); histosQA.add(Form("V2/PID/histCosDetV2_Ka_Neg"), "", {HistType::kTH3F, {axisCentMerged, axisPt, axisCos}}); histosQA.add(Form("V2/PID/histCosDetV2_Pr_Neg"), "", {HistType::kTH3F, {axisCentMerged, axisPt, axisCos}}); + + if(cfgkOpenTPCITSPurityCut && cfgkOpenTPCITSPurityCutQA) { + histosQA.add(Form("QA/histITSPuritycheck_Pr_Pos_Cen_20_30"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + histosQA.add(Form("QA/histITSPuritycheck_Pr_Neg_Cen_20_30"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); + } if (cfgkOpenCME) { if (cfgkOpenPiPi) { @@ -1180,6 +1320,38 @@ struct pidcme { // o2-linter: disable=name/struct } } + void initCCDB(aod::BCsWithTimestamps::iterator const& bc) + { + std::string fullPath; + auto timestamp = bc.timestamp(); + //hPosPrCut.clear(); + //hNegPrCut.clear(); + for(auto i = 0; i < static_cast(cfgITSPurityCen->size()) - 1; i++){ + std::vector> hPosPrCutCen; + std::vector> hNegPrCutCen; + for(auto j = 0; j < static_cast(cfgPtPrCut->size()) - 1; j++){ + fullPath = cfgCCDBPurityPath; + fullPath += Form("/ProtonPos/Cen_%d_%d/Pt_%d_%d",cfgITSPurityCen->at(i),cfgITSPurityCen->at(i+1),static_cast(std::round(1e3 * cfgPtPrCut->at(j))),static_cast(std::round(1e3* cfgPtPrCut->at(j+1)))); + auto PosPrHist = ccdb->getForTimeStamp(fullPath, timestamp); + fullPath = cfgCCDBPurityPath; + fullPath += Form("/ProtonNeg/Cen_%d_%d/Pt_%d_%d",cfgITSPurityCen->at(i),cfgITSPurityCen->at(i+1),static_cast(std::round(1e3 * cfgPtPrCut->at(j))),static_cast(std::round(1e3* cfgPtPrCut->at(j+1)))); + auto NegPrHist = ccdb->getForTimeStamp(fullPath, timestamp); + if(!PosPrHist){ + LOGF(fatal, Form("could not load Pos Proton ITS TPC purity hist for Cent_%d_%d Pt_%d_%d(MeV)",cfgITSPurityCen->at(i),cfgITSPurityCen->at(i+1),static_cast(std::round(1e3 * cfgPtPrCut->at(j))),static_cast(std::round(1e3* cfgPtPrCut->at(j+1))))); + } + if(!NegPrHist){ + LOGF(fatal, Form("could not load Neg Proton ITS TPC purity hist for Cent_%d_%d Pt_%d_%d(MeV)",cfgITSPurityCen->at(i),cfgITSPurityCen->at(i+1),static_cast(std::round(1e3 * cfgPtPrCut->at(j))),static_cast(std::round(1e3* cfgPtPrCut->at(j+1))))); + } + std::shared_ptr sharedPosPrHist(PosPrHist); + std::shared_ptr sharedNegPrHist(NegPrHist); + hPosPrCutCen.push_back(std::move(sharedPosPrHist)); + hNegPrCutCen.push_back(std::move(sharedNegPrHist)); + } + hPosPrCut.push_back(std::move(hPosPrCutCen)); + hNegPrCut.push_back(std::move(hNegPrCutCen)); + } + } + template bool selEvent(const CollType& collision, const int multTrk, const float centrality) { @@ -1251,8 +1423,11 @@ struct pidcme { // o2-linter: disable=name/struct } template - bool selTrack(const TrackType track) + bool selTrack(const TrackType track, float centrality) { + if (cfgkOpenDebugPIDCME){ + LOGF(info, "====================Entering track selection============================="); + } if (!track.passedITSNCls()) return false; if (!track.passedITSChi2NDF()) @@ -1267,6 +1442,51 @@ struct pidcme { // o2-linter: disable=name/struct return false; if (!track.passedDCAz()) return false; + if (cfgkOpenTPCITSPurityCut){ + int cenBin = -1; + int ptBin = -1; + for (int i = 0; i < static_cast(cfgITSPurityCen.value.size()) - 1; ++i) { + if (centrality >= cfgITSPurityCen.value[i] && centrality < cfgITSPurityCen.value[i + 1]) { + cenBin = i; + break; + } + } + for (int i = 0; i < static_cast(cfgPtPrCut.value.size()) - 1; ++i) { + if (track.pt() >= cfgPtPrCut.value[i] && track.pt() < cfgPtPrCut.value[i + 1]) { + ptBin = i; + break; + } + } + if((cenBin >= 0) && (ptBin >= 0)){ + if((track.nPidFlag() == 3) || (track.nPidFlag() == 8) || (track.nPidFlag() == 9) || (track.nPidFlag() == 10)) { + if(cfgkOpenDebugPIDCME){ + LOGF(info, Form("=========cen_bin: %d pt_bin: %d=========",cenBin,ptBin)); + } + float nSigmaITSPr = track.nSigmaPrITS(); + int xBin = hPosPrCut[cenBin][ptBin]->GetXaxis()->FindBin(nSigmaITSPr); + float binContentPosPr = hPosPrCut[cenBin][ptBin]->GetBinContent(xBin); + float binContentNegPr = hNegPrCut[cenBin][ptBin]->GetBinContent(xBin); + if(track.sign()> 0) { + if((binContentPosPr != 0) && (track.nSigmaPrTPC() < binContentPosPr)) { + if(cfgkOpenDebugPIDCME){ + LOGF(info, "====================Track selection Finished with cut============================="); + } + return false; + } + } else { + if((binContentNegPr != 0) && (track.nSigmaPrTPC() < binContentNegPr)) { + if(cfgkOpenDebugPIDCME) { + LOGF(info, "====================Track selection Finished with cut============================="); + } + return false; + } + } + } + } + } + if(cfgkOpenDebugPIDCME){ + LOGF(info, "====================Track selection Finished without cut============================="); + } return true; } @@ -1301,43 +1521,44 @@ struct pidcme { // o2-linter: disable=name/struct if (collision.qvecAmp()[detId] < 1e-8) { return; } + auto cent = collision.centFT0C(); int detInd = detId * 4 + cfgnTotalSystem * 4 * (nmode - 2); float psiN = helperEP.GetEventPlane(collision.qvecRe()[detInd + 3], collision.qvecIm()[detInd + 3], nmode); for (const auto& trk : track1) { - if (!selTrack(trk)) + if (!selTrack(trk,cent)) continue; if (nmode == 2) { if (trk.sign() > 0) { - histosQA.fill(HIST("V2/PID/histCosDetV2_Pi"), collision.centFT0C(), trk.pt(), + histosQA.fill(HIST("V2/PID/histCosDetV2_Pi"), cent, trk.pt(), std::cos(static_cast(nmode) * (trk.phi() - psiN))); } else if (trk.sign() < 0) { - histosQA.fill(HIST("V2/PID/histCosDetV2_Pi_Neg"), collision.centFT0C(), trk.pt(), + histosQA.fill(HIST("V2/PID/histCosDetV2_Pi_Neg"), cent, trk.pt(), std::cos(static_cast(nmode) * (trk.phi() - psiN))); } } } for (const auto& trk : track2) { - if (!selTrack(trk)) + if (!selTrack(trk,cent)) continue; if (nmode == 2) { if (trk.sign() > 0) { - histosQA.fill(HIST("V2/PID/histCosDetV2_Ka"), collision.centFT0C(), trk.pt(), + histosQA.fill(HIST("V2/PID/histCosDetV2_Ka"), cent, trk.pt(), std::cos(static_cast(nmode) * (trk.phi() - psiN))); } else if (trk.sign() < 0) { - histosQA.fill(HIST("V2/PID/histCosDetV2_Ka_Neg"), collision.centFT0C(), trk.pt(), + histosQA.fill(HIST("V2/PID/histCosDetV2_Ka_Neg"), cent, trk.pt(), std::cos(static_cast(nmode) * (trk.phi() - psiN))); } } } for (const auto& trk : track3) { - if (!selTrack(trk)) + if (!selTrack(trk,cent)) continue; if (nmode == 2) { if (trk.sign() > 0) { - histosQA.fill(HIST("V2/PID/histCosDetV2_Pr"), collision.centFT0C(), trk.pt(), + histosQA.fill(HIST("V2/PID/histCosDetV2_Pr"), cent, trk.pt(), std::cos(static_cast(nmode) * (trk.phi() - psiN))); } else if (trk.sign() < 0) { - histosQA.fill(HIST("V2/PID/histCosDetV2_Pr_Neg"), collision.centFT0C(), trk.pt(), + histosQA.fill(HIST("V2/PID/histCosDetV2_Pr_Neg"), cent, trk.pt(), std::cos(static_cast(nmode) * (trk.phi() - psiN))); } } @@ -1345,40 +1566,44 @@ struct pidcme { // o2-linter: disable=name/struct if (cfgkOpenCME) { if (cfgkOpenPiPi) { for (const auto& trk1 : track1) { + if(!selTrack(trk1,cent)) + continue; for (const auto& trk2 : track1) { if (trk1.globalIndex() == trk2.globalIndex()) continue; + if (!selTrack(trk2,cent)) + continue; if (nmode == 2) { if (trk1.sign() == trk2.sign()) { - histosQA.fill(HIST("PIDCME/histgamama_PiPi_ss"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiPi_ss"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - histosQA.fill(HIST("PIDCME/Differential/histgamama_PiPi_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/histgamama_PiPi_ss"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPi_ss"), cent, std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/Differential/histgamama_PiPi_ss_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPi_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPi_ss_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); if (cfgkOpenSsOsCrossCheck) { if (trk1.sign() > 0 && trk2.sign() > 0) { - histosQA.fill(HIST("PIDCME/histgamama_PiPi_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiPi_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_PiPi_PP"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPi_PP"), cent, std::cos((trk1.phi() - trk2.phi()))); } else { - histosQA.fill(HIST("PIDCME/histgamama_PiPi_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiPi_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_PiPi_NN"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPi_NN"), cent, std::cos((trk1.phi() - trk2.phi()))); } } } else { - histosQA.fill(HIST("PIDCME/histgamama_PiPi_os"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiPi_os"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - histosQA.fill(HIST("PIDCME/Differential/histgamama_PiPi_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/histgamama_PiPi_os"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPi_os"), cent, std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/Differential/histgamama_PiPi_os_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPi_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPi_os_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); if (cfgkOpenSsOsCrossCheck) { if (trk1.sign() > 0 && trk2.sign() < 0) { - histosQA.fill(HIST("PIDCME/histgamama_PiPi_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiPi_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_PiPi_PN"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPi_PN"), cent, std::cos((trk1.phi() - trk2.phi()))); } else { - histosQA.fill(HIST("PIDCME/histgamama_PiPi_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiPi_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_PiPi_NP"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPi_NP"), cent, std::cos((trk1.phi() - trk2.phi()))); } } } @@ -1388,40 +1613,44 @@ struct pidcme { // o2-linter: disable=name/struct } if (cfgkOpenKaKa) { for (const auto& trk1 : track2) { + if(!selTrack(trk1,cent)) + continue; for (const auto& trk2 : track2) { if (trk1.globalIndex() == trk2.globalIndex()) continue; + if(!selTrack(trk2,cent)) + continue; if (nmode == 2) { if (trk1.sign() == trk2.sign()) { - histosQA.fill(HIST("PIDCME/histgamama_KaKa_ss"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_KaKa_ss"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - histosQA.fill(HIST("PIDCME/Differential/histgamama_KaKa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/histgamama_KaKa_ss"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaKa_ss"), cent, std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/Differential/histgamama_KaKa_ss_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/Differential/histdelta_KaKa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/Differential/histdelta_KaKa_ss_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); if (cfgkOpenSsOsCrossCheck) { if (trk1.sign() > 0 && trk2.sign() > 0) { - histosQA.fill(HIST("PIDCME/histgamama_KaKa_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_KaKa_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_KaKa_PP"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaKa_PP"), cent, std::cos((trk1.phi() - trk2.phi()))); } else { - histosQA.fill(HIST("PIDCME/histgamama_KaKa_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_KaKa_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_KaKa_NN"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaKa_NN"), cent, std::cos((trk1.phi() - trk2.phi()))); } } } else { - histosQA.fill(HIST("PIDCME/histgamama_KaKa_os"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_KaKa_os"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - histosQA.fill(HIST("PIDCME/Differential/histgamama_KaKa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/histgamama_KaKa_os"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaKa_os"), cent, std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/Differential/histgamama_KaKa_os_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/Differential/histdelta_KaKa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/Differential/histdelta_KaKa_os_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); if (cfgkOpenSsOsCrossCheck) { if (trk1.sign() > 0 && trk2.sign() < 0) { - histosQA.fill(HIST("PIDCME/histgamama_KaKa_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_KaKa_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_KaKa_PN"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaKa_PN"), cent, std::cos((trk1.phi() - trk2.phi()))); } else { - histosQA.fill(HIST("PIDCME/histgamama_KaKa_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_KaKa_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_KaKa_NP"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaKa_NP"), cent, std::cos((trk1.phi() - trk2.phi()))); } } } @@ -1431,40 +1660,44 @@ struct pidcme { // o2-linter: disable=name/struct } if (cfgkOpenPrPr) { for (const auto& trk1 : track3) { + if(!selTrack(trk1,cent)) + continue; for (const auto& trk2 : track3) { if (trk1.globalIndex() == trk2.globalIndex()) continue; + if(!selTrack(trk2,cent)) + continue; if (nmode == 2) { if (trk1.sign() == trk2.sign()) { - histosQA.fill(HIST("PIDCME/histgamama_PrPr_ss"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PrPr_ss"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - histosQA.fill(HIST("PIDCME/Differential/histgamama_PrPr_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/histgamama_PrPr_ss"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PrPr_ss"), cent, std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/Differential/histgamama_PrPr_ss_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/Differential/histdelta_PrPr_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/Differential/histdelta_PrPr_ss_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); if (cfgkOpenSsOsCrossCheck) { if (trk1.sign() > 0 && trk2.sign() > 0) { - histosQA.fill(HIST("PIDCME/histgamama_PrPr_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PrPr_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_PrPr_PP"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PrPr_PP"), cent, std::cos((trk1.phi() - trk2.phi()))); } else { - histosQA.fill(HIST("PIDCME/histgamama_PrPr_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PrPr_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_PrPr_NN"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PrPr_NN"), cent, std::cos((trk1.phi() - trk2.phi()))); } } } else { - histosQA.fill(HIST("PIDCME/histgamama_PrPr_os"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PrPr_os"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - histosQA.fill(HIST("PIDCME/Differential/histgamama_PrPr_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/histgamama_PrPr_os"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PrPr_os"), cent, std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/Differential/histgamama_PrPr_os_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/Differential/histdelta_PrPr_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/Differential/histdelta_PrPr_os_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); if (cfgkOpenSsOsCrossCheck) { if (trk1.sign() > 0 && trk2.sign() < 0) { - histosQA.fill(HIST("PIDCME/histgamama_PrPr_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PrPr_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_PrPr_PN"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PrPr_PN"), cent, std::cos((trk1.phi() - trk2.phi()))); } else { - histosQA.fill(HIST("PIDCME/histgamama_PrPr_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PrPr_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_PrPr_NP"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PrPr_NP"), cent, std::cos((trk1.phi() - trk2.phi()))); } } } @@ -1474,40 +1707,44 @@ struct pidcme { // o2-linter: disable=name/struct } if (cfgkOpenPiKa) { for (const auto& trk1 : track1) { + if(!selTrack(trk1,cent)) + continue; for (const auto& trk2 : track2) { if (trk1.globalIndex() == trk2.globalIndex()) continue; + if(!selTrack(trk2,cent)) + continue; if (nmode == 2) { if (trk1.sign() == trk2.sign()) { - histosQA.fill(HIST("PIDCME/histgamama_PiKa_ss"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiKa_ss"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - histosQA.fill(HIST("PIDCME/Differential/histgamama_PiKa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/histgamama_PiKa_ss"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiKa_ss"), cent, std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/Differential/histgamama_PiKa_ss_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/Differential/histdelta_PiKa_ss_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/Differential/histdelta_PiKa_ss_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); if (cfgkOpenSsOsCrossCheck) { if (trk1.sign() > 0 && trk2.sign() > 0) { - histosQA.fill(HIST("PIDCME/histgamama_PiKa_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiKa_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_PiKa_PP"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiKa_PP"), cent, std::cos((trk1.phi() - trk2.phi()))); } else { - histosQA.fill(HIST("PIDCME/histgamama_PiKa_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiKa_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_PiKa_NN"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiKa_NN"), cent, std::cos((trk1.phi() - trk2.phi()))); } } } else { - histosQA.fill(HIST("PIDCME/histgamama_PiKa_os"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiKa_os"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); - histosQA.fill(HIST("PIDCME/Differential/histgamama_PiKa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/histgamama_PiKa_os"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiKa_os"), cent, std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/Differential/histgamama_PiKa_os_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/Differential/histdelta_PiKa_os_Dif"), collision.centFT0C(), trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), + histosQA.fill(HIST("PIDCME/Differential/histdelta_PiKa_os_Dif"), cent, trk1.pt() + trk2.pt(), std::abs(trk1.eta() - trk2.eta()), std::cos((trk1.phi() - trk2.phi()))); if (cfgkOpenSsOsCrossCheck) { if (trk1.sign() > 0 && trk2.sign() < 0) { - histosQA.fill(HIST("PIDCME/histgamama_PiKa_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiKa_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_PiKa_PN"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiKa_PN"), cent, std::cos((trk1.phi() - trk2.phi()))); } else { - histosQA.fill(HIST("PIDCME/histgamama_PiKa_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiKa_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk2.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_PiKa_NP"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiKa_NP"), cent, std::cos((trk1.phi() - trk2.phi()))); } } } @@ -1517,40 +1754,44 @@ struct pidcme { // o2-linter: disable=name/struct } if (cfgkOpenPiPr) { for (const auto& trk1 : track1) { + if(!selTrack(trk1,cent)) + continue; for (const auto& trk3 : track3) { if (trk1.globalIndex() == trk3.globalIndex()) continue; + if(!selTrack(trk3,cent)) + continue; if (nmode == 2) { if (trk1.sign() == trk3.sign()) { - histosQA.fill(HIST("PIDCME/histgamama_PiPr_ss"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiPr_ss"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); - histosQA.fill(HIST("PIDCME/Differential/histgamama_PiPr_ss_Dif"), collision.centFT0C(), trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()), + histosQA.fill(HIST("PIDCME/histgamama_PiPr_ss"), cent, std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPr_ss"), cent, std::cos((trk1.phi() - trk3.phi()))); + histosQA.fill(HIST("PIDCME/Differential/histgamama_PiPr_ss_Dif"), cent, trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPr_ss_Dif"), collision.centFT0C(), trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()), + histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPr_ss_Dif"), cent, trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()), std::cos((trk1.phi() - trk3.phi()))); if (cfgkOpenSsOsCrossCheck) { if (trk1.sign() > 0 && trk3.sign() > 0) { - histosQA.fill(HIST("PIDCME/histgamama_PiPr_PP"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiPr_PP"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_PiPr_PP"), cent, std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPr_PP"), cent, std::cos((trk1.phi() - trk3.phi()))); } else { - histosQA.fill(HIST("PIDCME/histgamama_PiPr_NN"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiPr_NN"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_PiPr_NN"), cent, std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPr_NN"), cent, std::cos((trk1.phi() - trk3.phi()))); } } } else { - histosQA.fill(HIST("PIDCME/histgamama_PiPr_os"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiPr_os"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); - histosQA.fill(HIST("PIDCME/Differential/histgamama_PiPr_os_Dif"), collision.centFT0C(), trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()), + histosQA.fill(HIST("PIDCME/histgamama_PiPr_os"), cent, std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPr_os"), cent, std::cos((trk1.phi() - trk3.phi()))); + histosQA.fill(HIST("PIDCME/Differential/histgamama_PiPr_os_Dif"), cent, trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPr_os_Dif"), collision.centFT0C(), trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()), + histosQA.fill(HIST("PIDCME/Differential/histdelta_PiPr_os_Dif"), cent, trk1.pt() + trk3.pt(), std::abs(trk1.eta() - trk3.eta()), std::cos((trk1.phi() - trk3.phi()))); if (cfgkOpenSsOsCrossCheck) { if (trk1.sign() > 0 && trk3.sign() < 0) { - histosQA.fill(HIST("PIDCME/histgamama_PiPr_PN"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiPr_PN"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_PiPr_PN"), cent, std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPr_PN"), cent, std::cos((trk1.phi() - trk3.phi()))); } else { - histosQA.fill(HIST("PIDCME/histgamama_PiPr_NP"), collision.centFT0C(), std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_PiPr_NP"), collision.centFT0C(), std::cos((trk1.phi() - trk3.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_PiPr_NP"), cent, std::cos((trk1.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_PiPr_NP"), cent, std::cos((trk1.phi() - trk3.phi()))); } } } @@ -1560,40 +1801,44 @@ struct pidcme { // o2-linter: disable=name/struct } if (cfgkOpenKaPr) { for (const auto& trk2 : track2) { + if(!selTrack(trk2,cent)) + continue; for (const auto& trk3 : track3) { if (trk2.globalIndex() == trk3.globalIndex()) continue; + if(!selTrack(trk3,cent)) + continue; if (nmode == 2) { if (trk2.sign() == trk3.sign()) { - histosQA.fill(HIST("PIDCME/histgamama_KaPr_ss"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_KaPr_ss"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); - histosQA.fill(HIST("PIDCME/Differential/histgamama_KaPr_ss_Dif"), collision.centFT0C(), trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()), + histosQA.fill(HIST("PIDCME/histgamama_KaPr_ss"), cent, std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaPr_ss"), cent, std::cos((trk2.phi() - trk3.phi()))); + histosQA.fill(HIST("PIDCME/Differential/histgamama_KaPr_ss_Dif"), cent, trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/Differential/histdelta_KaPr_ss_Dif"), collision.centFT0C(), trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()), + histosQA.fill(HIST("PIDCME/Differential/histdelta_KaPr_ss_Dif"), cent, trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()), std::cos((trk2.phi() - trk3.phi()))); if (cfgkOpenSsOsCrossCheck) { if (trk2.sign() > 0 && trk3.sign() > 0) { - histosQA.fill(HIST("PIDCME/histgamama_KaPr_PP"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_KaPr_PP"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_KaPr_PP"), cent, std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaPr_PP"), cent, std::cos((trk2.phi() - trk3.phi()))); } else { - histosQA.fill(HIST("PIDCME/histgamama_KaPr_NN"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_KaPr_NN"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_KaPr_NN"), cent, std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaPr_NN"), cent, std::cos((trk2.phi() - trk3.phi()))); } } } else { - histosQA.fill(HIST("PIDCME/histgamama_KaPr_os"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_KaPr_os"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); - histosQA.fill(HIST("PIDCME/Differential/histgamama_KaPr_os_Dif"), collision.centFT0C(), trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()), + histosQA.fill(HIST("PIDCME/histgamama_KaPr_os"), cent, std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaPr_os"), cent, std::cos((trk2.phi() - trk3.phi()))); + histosQA.fill(HIST("PIDCME/Differential/histgamama_KaPr_os_Dif"), cent, trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/Differential/histdelta_KaPr_os_Dif"), collision.centFT0C(), trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()), + histosQA.fill(HIST("PIDCME/Differential/histdelta_KaPr_os_Dif"), cent, trk2.pt() + trk3.pt(), std::abs(trk2.eta() - trk3.eta()), std::cos((trk2.phi() - trk3.phi()))); if (cfgkOpenSsOsCrossCheck) { if (trk2.sign() > 0 && trk3.sign() < 0) { - histosQA.fill(HIST("PIDCME/histgamama_KaPr_PN"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_KaPr_PN"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_KaPr_PN"), cent, std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaPr_PN"), cent, std::cos((trk2.phi() - trk3.phi()))); } else { - histosQA.fill(HIST("PIDCME/histgamama_KaPr_NP"), collision.centFT0C(), std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); - histosQA.fill(HIST("PIDCME/histdelta_KaPr_NP"), collision.centFT0C(), std::cos((trk2.phi() - trk3.phi()))); + histosQA.fill(HIST("PIDCME/histgamama_KaPr_NP"), cent, std::cos((trk2.phi() + trk3.phi() - static_cast(nmode) * psiN))); + histosQA.fill(HIST("PIDCME/histdelta_KaPr_NP"), cent, std::cos((trk2.phi() - trk3.phi()))); } } } @@ -1604,8 +1849,16 @@ struct pidcme { // o2-linter: disable=name/struct } } - void process(soa::Filtered>::iterator const& collision, soa::Filtered> const& tracks) - { + void process(soa::Filtered>::iterator const& collision, aod::BCsWithTimestamps const&, soa::Filtered> const& tracks) + { + auto bc = collision.bc_as(); + if((hPosPrCut.empty()) || (hNegPrCut.empty())){ + initCCDB(bc); + LOGF(info, "==================CCDB file successfuly applied===================="); + LOGF(info, Form("size of hPosPrCut is %lu x %lu", hPosPrCut.size(), hPosPrCut[0].size())); + LOGF(info, Form("size of hNegPrCut is %lu x %lu", hNegPrCut.size(), hNegPrCut[0].size())); + LOGF(info, "==================================================================="); + } const auto cent = collision.centFT0C(); histosQA.fill(HIST("QA/histEventCount"), 0.5); if (!collision.sel8()) @@ -1637,6 +1890,9 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.fill(HIST("QA/hist_multV0A_multT0A_after"), collision.multFT0A(), collision.multFV0A()); histosQA.fill(HIST("QA/hist_multT0C_centT0C_after"), cent, collision.multFT0C()); } + if(cfgkOpenDebugPIDCME) { + LOGF(info, "==================Event Cut Finished===================="); + } auto tracks1 = tracksSet1->sliceByCached(aod::track::collisionId, collision.globalIndex(), cache); auto tracks2 = tracksSet2->sliceByCached(aod::track::collisionId, collision.globalIndex(), cache); auto tracks3 = tracksSet3->sliceByCached(aod::track::collisionId, collision.globalIndex(), cache); @@ -1649,8 +1905,20 @@ struct pidcme { // o2-linter: disable=name/struct int detIndGlobal = detId * 4 + cfgnTotalSystem * 4 * (cfgnMods->at(i) - 2); float psiNGlobal = helperEP.GetEventPlane(collision.qvecRe()[detIndGlobal + 3], collision.qvecIm()[detIndGlobal + 3], cfgnMods->at(i)); for (const auto& trk : tracks) { - if (!selTrack(trk)) + if (!selTrack(trk,cent)) continue; + if(cfgkOpenTPCITSPurityCut && cfgkOpenTPCITSPurityCutQA) { + if (cent >= 20 && cent <30) { + if((trk.nPidFlag() == 3) || (trk.nPidFlag() == 8) || (trk.nPidFlag() == 9) || (trk.nPidFlag() == 10)) + { + if(trk.sign()>0){ + histosQA.fill(HIST("QA/histITSPuritycheck_Pr_Pos_Cen_20_30"), trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); + } else { + histosQA.fill(HIST("QA/histITSPuritycheck_Pr_Neg_Cen_20_30"), trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); + } + } + } + } histosQA.fill(HIST("V2/histSinDetV2"), cent, trk.pt(), std::sin(static_cast(cfgnMods->at(i)) * (trk.phi() - psiNGlobal))); histosQA.fill(HIST("V2/histCosDetV2"), cent, trk.pt(), @@ -1658,9 +1926,13 @@ struct pidcme { // o2-linter: disable=name/struct } if (cfgkOpenCME && cfgkOpenHaHa && cfgnMods->at(i) == 2) { for (const auto& trk1 : tracks) { + if(!selTrack(trk1,cent)) + continue; for (const auto& trk2 : tracks) { if (trk1.globalIndex() == trk2.globalIndex()) continue; + if(!selTrack(trk2,cent)) + continue; if (trk1.sign() == trk2.sign()) { histosQA.fill(HIST("PIDCME/histgamama_HaHa_ss"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); histosQA.fill(HIST("PIDCME/histdelta_HaHa_ss"), cent, std::cos((trk1.phi() - trk2.phi()))); @@ -1710,4 +1982,4 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) adaptAnalysisTask(cfgc), adaptAnalysisTask(cfgc), }; -} +} \ No newline at end of file From 58eb73416db55d1777bade16096068752c4a5396 Mon Sep 17 00:00:00 2001 From: zhengqi-w Date: Wed, 19 Feb 2025 00:37:23 +0800 Subject: [PATCH 11/14] update --- PWGCF/Flow/Tasks/pidcme.cxx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/PWGCF/Flow/Tasks/pidcme.cxx b/PWGCF/Flow/Tasks/pidcme.cxx index 2baea1dfb10..2e0e2205a49 100644 --- a/PWGCF/Flow/Tasks/pidcme.cxx +++ b/PWGCF/Flow/Tasks/pidcme.cxx @@ -1007,7 +1007,7 @@ struct pidcme { // o2-linter: disable=name/struct Configurable> cfgITSPurityCen{"cfgITSPurityCen", {20,30}, "ITS purity cut centrality"}; Configurable> cfgPtPrCut{"cfgPtPrCut", {0.5, 0.6, 0.7, 0.8, 0.9}, "pt binings for proton ITS purity cut"}; - Configurable cfgCCDBPurityPath {"cfgCCDBPurityString", "Users/z/zhengqiw/PurityCut", "CCDB path for nsigmaITS - nSigmaTPC purity cut"}; + Configurable cfgCCDBPurityPath {"cfgCCDBPurityPath", "Users/z/zhengqiw/PurityCut", "CCDB path for nsigmaITS - nSigmaTPC purity cut"}; Configurable ccdbNoLaterThan{"ccdbNoLaterThan", std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(), "latest acceptable timestamp of creation for the object"}; Configurable ccdbUrl{"ccdbUrl", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; @@ -1332,18 +1332,18 @@ struct pidcme { // o2-linter: disable=name/struct for(auto j = 0; j < static_cast(cfgPtPrCut->size()) - 1; j++){ fullPath = cfgCCDBPurityPath; fullPath += Form("/ProtonPos/Cen_%d_%d/Pt_%d_%d",cfgITSPurityCen->at(i),cfgITSPurityCen->at(i+1),static_cast(std::round(1e3 * cfgPtPrCut->at(j))),static_cast(std::round(1e3* cfgPtPrCut->at(j+1)))); - auto PosPrHist = ccdb->getForTimeStamp(fullPath, timestamp); + auto posPrHist = ccdb->getForTimeStamp(fullPath, timestamp); fullPath = cfgCCDBPurityPath; fullPath += Form("/ProtonNeg/Cen_%d_%d/Pt_%d_%d",cfgITSPurityCen->at(i),cfgITSPurityCen->at(i+1),static_cast(std::round(1e3 * cfgPtPrCut->at(j))),static_cast(std::round(1e3* cfgPtPrCut->at(j+1)))); - auto NegPrHist = ccdb->getForTimeStamp(fullPath, timestamp); - if(!PosPrHist){ + auto negPrHist = ccdb->getForTimeStamp(fullPath, timestamp); + if(!posPrHist){ LOGF(fatal, Form("could not load Pos Proton ITS TPC purity hist for Cent_%d_%d Pt_%d_%d(MeV)",cfgITSPurityCen->at(i),cfgITSPurityCen->at(i+1),static_cast(std::round(1e3 * cfgPtPrCut->at(j))),static_cast(std::round(1e3* cfgPtPrCut->at(j+1))))); } - if(!NegPrHist){ + if(!negPrHist){ LOGF(fatal, Form("could not load Neg Proton ITS TPC purity hist for Cent_%d_%d Pt_%d_%d(MeV)",cfgITSPurityCen->at(i),cfgITSPurityCen->at(i+1),static_cast(std::round(1e3 * cfgPtPrCut->at(j))),static_cast(std::round(1e3* cfgPtPrCut->at(j+1))))); } - std::shared_ptr sharedPosPrHist(PosPrHist); - std::shared_ptr sharedNegPrHist(NegPrHist); + std::shared_ptr sharedPosPrHist(posPrHist); + std::shared_ptr sharedNegPrHist(negPrHist); hPosPrCutCen.push_back(std::move(sharedPosPrHist)); hNegPrCutCen.push_back(std::move(sharedNegPrHist)); } From c960c1aa575922d62a794c258ffe138eae9dd569 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Tue, 18 Feb 2025 16:38:21 +0000 Subject: [PATCH 12/14] Please consider the following formatting changes --- PWGCF/Flow/Tasks/pidcme.cxx | 413 ++++++++++++++++++------------------ 1 file changed, 203 insertions(+), 210 deletions(-) diff --git a/PWGCF/Flow/Tasks/pidcme.cxx b/PWGCF/Flow/Tasks/pidcme.cxx index 2e0e2205a49..e8368b59fce 100644 --- a/PWGCF/Flow/Tasks/pidcme.cxx +++ b/PWGCF/Flow/Tasks/pidcme.cxx @@ -163,7 +163,7 @@ struct FillPIDcolums { if (std::abs(nSigmaToUse[i]) < pidVector[i]) { if (i == 0) { kIsPi = true; - if(cfgOpenCrossTrackQAPlots){ + if (cfgOpenCrossTrackQAPlots) { histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_cross_Pi"), candidate.tpcNSigmaPi(), candidate.tofNSigmaPi(), candidate.pt()); histosQA.fill(HIST("QA/PID/histdEdxTPC_cross_Pi"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal()); histosQA.fill(HIST("QA/PID/histnSigma_cross_Pi"), candidate.tpcNSigmaPi()); @@ -173,12 +173,12 @@ struct FillPIDcolums { histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_cross_Pi"), candidate.p(), averClusSizeCosl); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Pi"), candidate.tpcNSigmaPi(), averClusSizeCosl); histosQA.fill(HIST("QA/PID/histPhi_Dis_cross_Pi"), candidate.phi()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Pi"), candidate.tpcNSigmaPi(), candidate.itsNSigmaPi()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Pi"), candidate.tpcNSigmaPi(), candidate.itsNSigmaPi()); } } if (i == 1) { kIsKa = true; - if(cfgOpenCrossTrackQAPlots){ + if (cfgOpenCrossTrackQAPlots) { histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_cross_Ka"), candidate.tpcNSigmaKa(), candidate.tofNSigmaKa(), candidate.pt()); histosQA.fill(HIST("QA/PID/histdEdxTPC_cross_Ka"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal()); histosQA.fill(HIST("QA/PID/histnSigma_cross_Ka"), candidate.tpcNSigmaKa()); @@ -188,12 +188,12 @@ struct FillPIDcolums { histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_cross_Ka"), candidate.p(), averClusSizeCosl); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Ka"), candidate.tpcNSigmaKa(), averClusSizeCosl); histosQA.fill(HIST("QA/PID/histPhi_Dis_cross_Ka"), candidate.phi()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Ka"), candidate.tpcNSigmaKa(), candidate.itsNSigmaKa()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Ka"), candidate.tpcNSigmaKa(), candidate.itsNSigmaKa()); } } if (i == 2) { kIsPr = true; - if(cfgOpenCrossTrackQAPlots){ + if (cfgOpenCrossTrackQAPlots) { histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_cross_Pr"), candidate.tpcNSigmaPr(), candidate.tofNSigmaPr(), candidate.pt()); histosQA.fill(HIST("QA/PID/histdEdxTPC_cross_Pr"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal()); histosQA.fill(HIST("QA/PID/histnSigma_cross_Pr"), candidate.tpcNSigmaPr()); @@ -203,12 +203,12 @@ struct FillPIDcolums { histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_cross_Pr"), candidate.p(), averClusSizeCosl); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSigmaTPC_cross_Pr"), candidate.tpcNSigmaKa(), averClusSizeCosl); histosQA.fill(HIST("QA/PID/histPhi_Dis_cross_Pr"), candidate.phi()); - histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Pr"), candidate.tpcNSigmaPr(), candidate.itsNSigmaPr()); + histosQA.fill(HIST("QA/PID/histnSigmaITS_nSigmaTPC_cross_Pr"), candidate.tpcNSigmaPr(), candidate.itsNSigmaPr()); } } } } - if(cfgOpenAllowCrossTrack) { + if (cfgOpenAllowCrossTrack) { // one track can be recognized as different PID particles int index = (kIsPr << 2) | (kIsKa << 1) | kIsPi; const int map[] = {0, 1, 2, 7, 3, 8, 9, 10}; @@ -223,37 +223,35 @@ struct FillPIDcolums { } return pid + 1; // shift the pid by 1, 1 = pion, 2 = kaon, 3 = proton } - } template bool selectionITS(const T& candidate, int mode, float avgclssize) { - switch (mode) - { - case 1: //For Pion - if(!(std::abs(candidate.itsNSigmaPi()) < cfgnSigmaCutITS.value[0] && avgclssize > cfgAveClusSizeCoslMinPi && avgclssize < cfgAveClusSizeCoslMaxPi)) { - return false; - } else { - return true; - } - break; - - case 2: //For Kaon - if(!(std::abs(candidate.itsNSigmaKa()) < cfgnSigmaCutITS.value[1] && avgclssize > cfgAveClusSizeCoslMinKa && avgclssize < cfgAveClusSizeCoslMaxKa)) { - return false; - } else { - return true; - } - break; + switch (mode) { + case 1: // For Pion + if (!(std::abs(candidate.itsNSigmaPi()) < cfgnSigmaCutITS.value[0] && avgclssize > cfgAveClusSizeCoslMinPi && avgclssize < cfgAveClusSizeCoslMaxPi)) { + return false; + } else { + return true; + } + break; - case 3: //For Proton - if(!(std::abs(candidate.itsNSigmaPr()) < cfgnSigmaCutITS.value[2] && avgclssize > cfgAveClusSizeCoslMinPr && avgclssize < cfgAveClusSizeCoslMaxPr)) { - return false; - } else { - return true; - } - break; + case 2: // For Kaon + if (!(std::abs(candidate.itsNSigmaKa()) < cfgnSigmaCutITS.value[1] && avgclssize > cfgAveClusSizeCoslMinKa && avgclssize < cfgAveClusSizeCoslMaxKa)) { + return false; + } else { + return true; + } + break; + + case 3: // For Proton + if (!(std::abs(candidate.itsNSigmaPr()) < cfgnSigmaCutITS.value[2] && avgclssize > cfgAveClusSizeCoslMinPr && avgclssize < cfgAveClusSizeCoslMaxPr)) { + return false; + } else { + return true; + } + break; } return false; } @@ -417,7 +415,7 @@ struct FillPIDcolums { histosQA.fill(HIST("QA/PID/histdEdxTPC_All"), track.sign() * track.tpcInnerParam(), track.tpcSignal()); pidFlag = selectionPidtpctof(track); // First fill ITS uncut plots - if((pidFlag == 1) || (pidFlag == 7) || (pidFlag == 8) || (pidFlag == 10)) { + if ((pidFlag == 1) || (pidFlag == 7) || (pidFlag == 8) || (pidFlag == 10)) { histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_Pi"), track.tpcNSigmaPi(), track.tofNSigmaPi(), track.pt()); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_Pi"), averClusSizeCosl); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Pi"), track.p(), averClusSizeCosl); @@ -439,8 +437,8 @@ struct FillPIDcolums { histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_Before"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); } } - } - if((pidFlag == 2) || (pidFlag == 7) || (pidFlag == 9) || (pidFlag == 10)) { + } + if ((pidFlag == 2) || (pidFlag == 7) || (pidFlag == 9) || (pidFlag == 10)) { histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_Ka"), track.tpcNSigmaKa(), track.tofNSigmaKa(), track.pt()); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_Ka"), averClusSizeCosl); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Ka"), track.p(), averClusSizeCosl); @@ -462,8 +460,8 @@ struct FillPIDcolums { histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_Before"), track.tpcNSigmaKa(), averClusSizeCosl, track.pt()); } } - } - if((pidFlag == 3) || (pidFlag == 8) || (pidFlag == 9) || (pidFlag == 10)) { + } + if ((pidFlag == 3) || (pidFlag == 8) || (pidFlag == 9) || (pidFlag == 10)) { histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_Pr"), track.tpcNSigmaPr(), track.tofNSigmaPr(), track.pt()); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_Pr"), averClusSizeCosl); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_Pr"), track.p(), averClusSizeCosl); @@ -486,114 +484,109 @@ struct FillPIDcolums { } } } - //Second proform ITS cut + // Second proform ITS cut if (cfgOpenITSCut) { int idx = -1; - switch (pidFlag) - { - case 1: - if (!selectionITS(track, 1, averClusSizeCosl)) { - pidFlag = 4; - } - break; - case 2: - if (!selectionITS(track, 2, averClusSizeCosl)) { - pidFlag = 5; - } - break; - case 3: - if (!selectionITS(track, 3, averClusSizeCosl)) { - pidFlag = 6; - } - break; - case 7: - idx = (selectionITS(track, 1, averClusSizeCosl) << 1) | selectionITS(track, 2, averClusSizeCosl); - switch (idx) - { - case 0: - pidFlag = 11; - break; - + switch (pidFlag) { case 1: - pidFlag = 2; + if (!selectionITS(track, 1, averClusSizeCosl)) { + pidFlag = 4; + } break; - case 2: - pidFlag = 1; - break; - } - break; - case 8: - idx = (selectionITS(track, 1, averClusSizeCosl) << 1) | selectionITS(track, 3, averClusSizeCosl); - switch (idx) - { - case 0: - pidFlag = 12; + if (!selectionITS(track, 2, averClusSizeCosl)) { + pidFlag = 5; + } break; - - case 1: - pidFlag = 3; + case 3: + if (!selectionITS(track, 3, averClusSizeCosl)) { + pidFlag = 6; + } break; + case 7: + idx = (selectionITS(track, 1, averClusSizeCosl) << 1) | selectionITS(track, 2, averClusSizeCosl); + switch (idx) { + case 0: + pidFlag = 11; + break; - case 2: - pidFlag = 1; - break; - } - break; - case 9: - idx = (selectionITS(track, 2, averClusSizeCosl) << 1) | selectionITS(track, 3, averClusSizeCosl); - switch (idx) - { - case 0: - pidFlag = 13; - break; - - case 1: - pidFlag = 3; - break; - - case 2: - pidFlag = 2; - break; - } - break; - case 10: - idx = (selectionITS(track, 1, averClusSizeCosl) << 2) | (selectionITS(track, 2, averClusSizeCosl) << 1) | selectionITS(track, 3, averClusSizeCosl); - switch (idx) - { - case 0: - pidFlag = 14; - break; - - case 1: - pidFlag = 3; - break; - - case 2: - pidFlag = 2; - break; + case 1: + pidFlag = 2; + break; - case 3: - pidFlag = 9; + case 2: + pidFlag = 1; + break; + } break; + case 8: + idx = (selectionITS(track, 1, averClusSizeCosl) << 1) | selectionITS(track, 3, averClusSizeCosl); + switch (idx) { + case 0: + pidFlag = 12; + break; + + case 1: + pidFlag = 3; + break; - case 4: - pidFlag = 1; + case 2: + pidFlag = 1; + break; + } break; + case 9: + idx = (selectionITS(track, 2, averClusSizeCosl) << 1) | selectionITS(track, 3, averClusSizeCosl); + switch (idx) { + case 0: + pidFlag = 13; + break; + + case 1: + pidFlag = 3; + break; - case 5: - pidFlag = 8; + case 2: + pidFlag = 2; + break; + } break; + case 10: + idx = (selectionITS(track, 1, averClusSizeCosl) << 2) | (selectionITS(track, 2, averClusSizeCosl) << 1) | selectionITS(track, 3, averClusSizeCosl); + switch (idx) { + case 0: + pidFlag = 14; + break; + + case 1: + pidFlag = 3; + break; + + case 2: + pidFlag = 2; + break; - case 6: - pidFlag = 7; + case 3: + pidFlag = 9; + break; + + case 4: + pidFlag = 1; + break; + + case 5: + pidFlag = 8; + break; + + case 6: + pidFlag = 7; + break; + } break; - } - break; } } - //Third Fill ITS cut plots - if((pidFlag == 1) || (pidFlag == 7) || (pidFlag == 8) || (pidFlag == 10)) { + // Third Fill ITS cut plots + if ((pidFlag == 1) || (pidFlag == 7) || (pidFlag == 8) || (pidFlag == 10)) { histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_AfterITS_Pi"), track.tpcNSigmaPi(), track.tofNSigmaPi(), track.pt()); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_AfterITS_Pi"), averClusSizeCosl); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_P_AfterITS_Pi"), track.p(), averClusSizeCosl); @@ -612,8 +605,8 @@ struct FillPIDcolums { histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegPi_After"), track.tpcNSigmaPi(), averClusSizeCosl, track.pt()); } } - } - if((pidFlag == 2) || (pidFlag == 7) || (pidFlag == 9) || (pidFlag == 10)) { + } + if ((pidFlag == 2) || (pidFlag == 7) || (pidFlag == 9) || (pidFlag == 10)) { histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_AfterITS_Ka"), track.tpcNSigmaKa(), track.tofNSigmaKa(), track.pt()); histosQA.fill(HIST("QA/PID/histnSigma_ITS_AfterITS_Ka"), track.itsNSigmaKa()); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_AfterITS_Ka"), averClusSizeCosl); @@ -632,8 +625,8 @@ struct FillPIDcolums { histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_nSIgmaTPC_Pt_NegKa_After"), track.tpcNSigmaKa(), averClusSizeCosl, track.pt()); } } - } - if((pidFlag == 3) || (pidFlag == 8) || (pidFlag == 9) || (pidFlag == 10)) { + } + if ((pidFlag == 3) || (pidFlag == 8) || (pidFlag == 9) || (pidFlag == 10)) { histosQA.fill(HIST("QA/PID/histnSigma_TPC_TOF_AfterITS_Pr"), track.tpcNSigmaPr(), track.tofNSigmaPr(), track.pt()); histosQA.fill(HIST("QA/PID/histnSigma_ITS_AfterITS_Pr"), track.itsNSigmaPr()); histosQA.fill(HIST("QA/PID/histAverClusterSizeCosl_AfterITS_Pr"), averClusSizeCosl); @@ -813,122 +806,122 @@ struct QAProcessCent { if (currentBin >= 0) { for (const auto& trk : tracks) { int8_t pidFlag = trk.nPidFlag(); - if (cfgOpenPi){ - if((pidFlag == 1) || (pidFlag == 4)|| (pidFlag == 7) || (pidFlag == 8) || (pidFlag == 10) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14)) { + if (cfgOpenPi) { + if ((pidFlag == 1) || (pidFlag == 4) || (pidFlag == 7) || (pidFlag == 8) || (pidFlag == 10) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14)) { if (trk.sign() > 0) { if (cfgOpenPtEtaPhi) { - if(!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { + if (!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { vhistPhiPtEtaPosPiCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } } if (cfgOpenITSTPCnSigma) { - if(!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { + if (!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { vhistnSigmaITSTPCPtPosPiAfterCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); } vhistnSigmaITSTPCPtPosPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - if(!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { + if (!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { vhistAverClusterSizeCoslnSigmaTPCPtPosPiAfterCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); } vhistAverClusterSizeCoslnSigmaTPCPtPosPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); } } else if (trk.sign() < 0) { if (cfgOpenPtEtaPhi) { - if(!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { + if (!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { vhistPhiPtEtaNegPiCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } } if (cfgOpenITSTPCnSigma) { - if(!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { + if (!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { vhistnSigmaITSTPCPtNegPiAfterCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); } vhistnSigmaITSTPCPtNegPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.nSigmaPiITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - if(!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { + if (!((pidFlag == 4) || (pidFlag == 11) || (pidFlag == 12) || (pidFlag == 14))) { vhistAverClusterSizeCoslnSigmaTPCPtNegPiAfterCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); } vhistAverClusterSizeCoslnSigmaTPCPtNegPiBeforeCen[currentBin]->Fill(trk.nSigmaPiTPC(), trk.averClusterSizeCosl(), trk.pt()); } } } - } + } if (cfgOpenKa) { - if((pidFlag == 2) || (pidFlag == 5) || (pidFlag == 7) || (pidFlag == 9) || (pidFlag == 10) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14)) { + if ((pidFlag == 2) || (pidFlag == 5) || (pidFlag == 7) || (pidFlag == 9) || (pidFlag == 10) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14)) { if (trk.sign() > 0) { if (cfgOpenPtEtaPhi) { - if(!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { + if (!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { vhistPhiPtEtaPosKaCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } } if (cfgOpenITSTPCnSigma) { - if(!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { + if (!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { vhistnSigmaITSTPCPtPosKaAfterCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); } vhistnSigmaITSTPCPtPosKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - if(!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { + if (!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { vhistAverClusterSizeCoslnSigmaTPCPtPosKaAfterCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); } vhistAverClusterSizeCoslnSigmaTPCPtPosKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); } } else if (trk.sign() < 0) { if (cfgOpenPtEtaPhi) { - if(!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { + if (!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { vhistPhiPtEtaNegKaCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } } if (cfgOpenITSTPCnSigma) { - if(!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { + if (!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { vhistnSigmaITSTPCPtNegKaAfterCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); } vhistnSigmaITSTPCPtNegKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.nSigmaKaITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - if(!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { + if (!((pidFlag == 5) || (pidFlag == 11) || (pidFlag == 13) || (pidFlag == 14))) { vhistAverClusterSizeCoslnSigmaTPCPtNegKaAfterCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); } vhistAverClusterSizeCoslnSigmaTPCPtNegKaBeforeCen[currentBin]->Fill(trk.nSigmaKaTPC(), trk.averClusterSizeCosl(), trk.pt()); } } } - } + } if (cfgOpenPr) { - if((pidFlag == 3) || (pidFlag == 6) || (pidFlag == 8) || (pidFlag == 9) || (pidFlag == 10) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14)) { + if ((pidFlag == 3) || (pidFlag == 6) || (pidFlag == 8) || (pidFlag == 9) || (pidFlag == 10) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14)) { if (trk.sign() > 0) { if (cfgOpenPtEtaPhi) { - if(!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { + if (!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { vhistPhiPtEtaPosPrCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } } if (cfgOpenITSTPCnSigma) { - if(!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { + if (!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { vhistnSigmaITSTPCPtPosPrAfterCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); } vhistnSigmaITSTPCPtPosPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - if(!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { + if (!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { vhistAverClusterSizeCoslnSigmaTPCPtPosPrAfterCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); } vhistAverClusterSizeCoslnSigmaTPCPtPosPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); } } else if (trk.sign() < 0) { if (cfgOpenPtEtaPhi) { - if(!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { + if (!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { vhistPhiPtEtaNegPrCen[currentBin]->Fill(trk.phi(), trk.pt(), trk.eta()); } } if (cfgOpenITSTPCnSigma) { - if(!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { + if (!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { vhistnSigmaITSTPCPtNegPrAfterCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); } vhistnSigmaITSTPCPtNegPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); } if (cfgOpenClusSizenSigmaTPC) { - if(!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { + if (!((pidFlag == 6) || (pidFlag == 12) || (pidFlag == 13) || (pidFlag == 14))) { vhistAverClusterSizeCoslnSigmaTPCPtNegPrAfterCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); } vhistAverClusterSizeCoslnSigmaTPCPtNegPrBeforeCen[currentBin]->Fill(trk.nSigmaPrTPC(), trk.averClusterSizeCosl(), trk.pt()); @@ -1005,12 +998,12 @@ struct pidcme { // o2-linter: disable=name/struct Configurable cfgkOpenTPCITSPurityCutQA{"cfgkOpenTPCITSPurityCutQA", true, "open ITS-TPC purity cut QA plots"}; Configurable cfgkOpenDebugPIDCME{"cfgkOpenDebugPIDCME", false, "open pidcme workflow debug mode"}; - Configurable> cfgITSPurityCen{"cfgITSPurityCen", {20,30}, "ITS purity cut centrality"}; + Configurable> cfgITSPurityCen{"cfgITSPurityCen", {20, 30}, "ITS purity cut centrality"}; Configurable> cfgPtPrCut{"cfgPtPrCut", {0.5, 0.6, 0.7, 0.8, 0.9}, "pt binings for proton ITS purity cut"}; - Configurable cfgCCDBPurityPath {"cfgCCDBPurityPath", "Users/z/zhengqiw/PurityCut", "CCDB path for nsigmaITS - nSigmaTPC purity cut"}; + Configurable cfgCCDBPurityPath{"cfgCCDBPurityPath", "Users/z/zhengqiw/PurityCut", "CCDB path for nsigmaITS - nSigmaTPC purity cut"}; Configurable ccdbNoLaterThan{"ccdbNoLaterThan", std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(), "latest acceptable timestamp of creation for the object"}; Configurable ccdbUrl{"ccdbUrl", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; - + Service ccdb; EventPlaneHelper helperEP; SliceCache cache; @@ -1170,8 +1163,8 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.add(Form("V2/PID/histCosDetV2_Pi_Neg"), "", {HistType::kTH3F, {axisCentMerged, axisPt, axisCos}}); histosQA.add(Form("V2/PID/histCosDetV2_Ka_Neg"), "", {HistType::kTH3F, {axisCentMerged, axisPt, axisCos}}); histosQA.add(Form("V2/PID/histCosDetV2_Pr_Neg"), "", {HistType::kTH3F, {axisCentMerged, axisPt, axisCos}}); - - if(cfgkOpenTPCITSPurityCut && cfgkOpenTPCITSPurityCutQA) { + + if (cfgkOpenTPCITSPurityCut && cfgkOpenTPCITSPurityCutQA) { histosQA.add(Form("QA/histITSPuritycheck_Pr_Pos_Cen_20_30"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); histosQA.add(Form("QA/histITSPuritycheck_Pr_Neg_Cen_20_30"), ";n#sigma_{TPC};n#sigma_{ITS};#p_{t}", {HistType::kTH3F, {cfgnSigmaBinsTPCcme, cfgnSigmaBinsITScme, cfgaxisptPIDcme}}); } @@ -1324,23 +1317,23 @@ struct pidcme { // o2-linter: disable=name/struct { std::string fullPath; auto timestamp = bc.timestamp(); - //hPosPrCut.clear(); - //hNegPrCut.clear(); - for(auto i = 0; i < static_cast(cfgITSPurityCen->size()) - 1; i++){ + // hPosPrCut.clear(); + // hNegPrCut.clear(); + for (auto i = 0; i < static_cast(cfgITSPurityCen->size()) - 1; i++) { std::vector> hPosPrCutCen; std::vector> hNegPrCutCen; - for(auto j = 0; j < static_cast(cfgPtPrCut->size()) - 1; j++){ + for (auto j = 0; j < static_cast(cfgPtPrCut->size()) - 1; j++) { fullPath = cfgCCDBPurityPath; - fullPath += Form("/ProtonPos/Cen_%d_%d/Pt_%d_%d",cfgITSPurityCen->at(i),cfgITSPurityCen->at(i+1),static_cast(std::round(1e3 * cfgPtPrCut->at(j))),static_cast(std::round(1e3* cfgPtPrCut->at(j+1)))); + fullPath += Form("/ProtonPos/Cen_%d_%d/Pt_%d_%d", cfgITSPurityCen->at(i), cfgITSPurityCen->at(i + 1), static_cast(std::round(1e3 * cfgPtPrCut->at(j))), static_cast(std::round(1e3 * cfgPtPrCut->at(j + 1)))); auto posPrHist = ccdb->getForTimeStamp(fullPath, timestamp); fullPath = cfgCCDBPurityPath; - fullPath += Form("/ProtonNeg/Cen_%d_%d/Pt_%d_%d",cfgITSPurityCen->at(i),cfgITSPurityCen->at(i+1),static_cast(std::round(1e3 * cfgPtPrCut->at(j))),static_cast(std::round(1e3* cfgPtPrCut->at(j+1)))); + fullPath += Form("/ProtonNeg/Cen_%d_%d/Pt_%d_%d", cfgITSPurityCen->at(i), cfgITSPurityCen->at(i + 1), static_cast(std::round(1e3 * cfgPtPrCut->at(j))), static_cast(std::round(1e3 * cfgPtPrCut->at(j + 1)))); auto negPrHist = ccdb->getForTimeStamp(fullPath, timestamp); - if(!posPrHist){ - LOGF(fatal, Form("could not load Pos Proton ITS TPC purity hist for Cent_%d_%d Pt_%d_%d(MeV)",cfgITSPurityCen->at(i),cfgITSPurityCen->at(i+1),static_cast(std::round(1e3 * cfgPtPrCut->at(j))),static_cast(std::round(1e3* cfgPtPrCut->at(j+1))))); + if (!posPrHist) { + LOGF(fatal, Form("could not load Pos Proton ITS TPC purity hist for Cent_%d_%d Pt_%d_%d(MeV)", cfgITSPurityCen->at(i), cfgITSPurityCen->at(i + 1), static_cast(std::round(1e3 * cfgPtPrCut->at(j))), static_cast(std::round(1e3 * cfgPtPrCut->at(j + 1))))); } - if(!negPrHist){ - LOGF(fatal, Form("could not load Neg Proton ITS TPC purity hist for Cent_%d_%d Pt_%d_%d(MeV)",cfgITSPurityCen->at(i),cfgITSPurityCen->at(i+1),static_cast(std::round(1e3 * cfgPtPrCut->at(j))),static_cast(std::round(1e3* cfgPtPrCut->at(j+1))))); + if (!negPrHist) { + LOGF(fatal, Form("could not load Neg Proton ITS TPC purity hist for Cent_%d_%d Pt_%d_%d(MeV)", cfgITSPurityCen->at(i), cfgITSPurityCen->at(i + 1), static_cast(std::round(1e3 * cfgPtPrCut->at(j))), static_cast(std::round(1e3 * cfgPtPrCut->at(j + 1))))); } std::shared_ptr sharedPosPrHist(posPrHist); std::shared_ptr sharedNegPrHist(negPrHist); @@ -1425,7 +1418,7 @@ struct pidcme { // o2-linter: disable=name/struct template bool selTrack(const TrackType track, float centrality) { - if (cfgkOpenDebugPIDCME){ + if (cfgkOpenDebugPIDCME) { LOGF(info, "====================Entering track selection============================="); } if (!track.passedITSNCls()) @@ -1442,7 +1435,7 @@ struct pidcme { // o2-linter: disable=name/struct return false; if (!track.passedDCAz()) return false; - if (cfgkOpenTPCITSPurityCut){ + if (cfgkOpenTPCITSPurityCut) { int cenBin = -1; int ptBin = -1; for (int i = 0; i < static_cast(cfgITSPurityCen.value.size()) - 1; ++i) { @@ -1457,25 +1450,25 @@ struct pidcme { // o2-linter: disable=name/struct break; } } - if((cenBin >= 0) && (ptBin >= 0)){ - if((track.nPidFlag() == 3) || (track.nPidFlag() == 8) || (track.nPidFlag() == 9) || (track.nPidFlag() == 10)) { - if(cfgkOpenDebugPIDCME){ - LOGF(info, Form("=========cen_bin: %d pt_bin: %d=========",cenBin,ptBin)); + if ((cenBin >= 0) && (ptBin >= 0)) { + if ((track.nPidFlag() == 3) || (track.nPidFlag() == 8) || (track.nPidFlag() == 9) || (track.nPidFlag() == 10)) { + if (cfgkOpenDebugPIDCME) { + LOGF(info, Form("=========cen_bin: %d pt_bin: %d=========", cenBin, ptBin)); } float nSigmaITSPr = track.nSigmaPrITS(); int xBin = hPosPrCut[cenBin][ptBin]->GetXaxis()->FindBin(nSigmaITSPr); float binContentPosPr = hPosPrCut[cenBin][ptBin]->GetBinContent(xBin); float binContentNegPr = hNegPrCut[cenBin][ptBin]->GetBinContent(xBin); - if(track.sign()> 0) { - if((binContentPosPr != 0) && (track.nSigmaPrTPC() < binContentPosPr)) { - if(cfgkOpenDebugPIDCME){ + if (track.sign() > 0) { + if ((binContentPosPr != 0) && (track.nSigmaPrTPC() < binContentPosPr)) { + if (cfgkOpenDebugPIDCME) { LOGF(info, "====================Track selection Finished with cut============================="); } return false; } } else { - if((binContentNegPr != 0) && (track.nSigmaPrTPC() < binContentNegPr)) { - if(cfgkOpenDebugPIDCME) { + if ((binContentNegPr != 0) && (track.nSigmaPrTPC() < binContentNegPr)) { + if (cfgkOpenDebugPIDCME) { LOGF(info, "====================Track selection Finished with cut============================="); } return false; @@ -1484,7 +1477,7 @@ struct pidcme { // o2-linter: disable=name/struct } } } - if(cfgkOpenDebugPIDCME){ + if (cfgkOpenDebugPIDCME) { LOGF(info, "====================Track selection Finished without cut============================="); } return true; @@ -1525,7 +1518,7 @@ struct pidcme { // o2-linter: disable=name/struct int detInd = detId * 4 + cfgnTotalSystem * 4 * (nmode - 2); float psiN = helperEP.GetEventPlane(collision.qvecRe()[detInd + 3], collision.qvecIm()[detInd + 3], nmode); for (const auto& trk : track1) { - if (!selTrack(trk,cent)) + if (!selTrack(trk, cent)) continue; if (nmode == 2) { if (trk.sign() > 0) { @@ -1538,7 +1531,7 @@ struct pidcme { // o2-linter: disable=name/struct } } for (const auto& trk : track2) { - if (!selTrack(trk,cent)) + if (!selTrack(trk, cent)) continue; if (nmode == 2) { if (trk.sign() > 0) { @@ -1551,7 +1544,7 @@ struct pidcme { // o2-linter: disable=name/struct } } for (const auto& trk : track3) { - if (!selTrack(trk,cent)) + if (!selTrack(trk, cent)) continue; if (nmode == 2) { if (trk.sign() > 0) { @@ -1566,12 +1559,12 @@ struct pidcme { // o2-linter: disable=name/struct if (cfgkOpenCME) { if (cfgkOpenPiPi) { for (const auto& trk1 : track1) { - if(!selTrack(trk1,cent)) + if (!selTrack(trk1, cent)) continue; for (const auto& trk2 : track1) { if (trk1.globalIndex() == trk2.globalIndex()) continue; - if (!selTrack(trk2,cent)) + if (!selTrack(trk2, cent)) continue; if (nmode == 2) { if (trk1.sign() == trk2.sign()) { @@ -1613,12 +1606,12 @@ struct pidcme { // o2-linter: disable=name/struct } if (cfgkOpenKaKa) { for (const auto& trk1 : track2) { - if(!selTrack(trk1,cent)) + if (!selTrack(trk1, cent)) continue; for (const auto& trk2 : track2) { if (trk1.globalIndex() == trk2.globalIndex()) continue; - if(!selTrack(trk2,cent)) + if (!selTrack(trk2, cent)) continue; if (nmode == 2) { if (trk1.sign() == trk2.sign()) { @@ -1660,12 +1653,12 @@ struct pidcme { // o2-linter: disable=name/struct } if (cfgkOpenPrPr) { for (const auto& trk1 : track3) { - if(!selTrack(trk1,cent)) + if (!selTrack(trk1, cent)) continue; for (const auto& trk2 : track3) { if (trk1.globalIndex() == trk2.globalIndex()) continue; - if(!selTrack(trk2,cent)) + if (!selTrack(trk2, cent)) continue; if (nmode == 2) { if (trk1.sign() == trk2.sign()) { @@ -1707,12 +1700,12 @@ struct pidcme { // o2-linter: disable=name/struct } if (cfgkOpenPiKa) { for (const auto& trk1 : track1) { - if(!selTrack(trk1,cent)) + if (!selTrack(trk1, cent)) continue; for (const auto& trk2 : track2) { if (trk1.globalIndex() == trk2.globalIndex()) continue; - if(!selTrack(trk2,cent)) + if (!selTrack(trk2, cent)) continue; if (nmode == 2) { if (trk1.sign() == trk2.sign()) { @@ -1754,12 +1747,12 @@ struct pidcme { // o2-linter: disable=name/struct } if (cfgkOpenPiPr) { for (const auto& trk1 : track1) { - if(!selTrack(trk1,cent)) + if (!selTrack(trk1, cent)) continue; for (const auto& trk3 : track3) { if (trk1.globalIndex() == trk3.globalIndex()) continue; - if(!selTrack(trk3,cent)) + if (!selTrack(trk3, cent)) continue; if (nmode == 2) { if (trk1.sign() == trk3.sign()) { @@ -1801,12 +1794,12 @@ struct pidcme { // o2-linter: disable=name/struct } if (cfgkOpenKaPr) { for (const auto& trk2 : track2) { - if(!selTrack(trk2,cent)) + if (!selTrack(trk2, cent)) continue; for (const auto& trk3 : track3) { if (trk2.globalIndex() == trk3.globalIndex()) continue; - if(!selTrack(trk3,cent)) + if (!selTrack(trk3, cent)) continue; if (nmode == 2) { if (trk2.sign() == trk3.sign()) { @@ -1850,9 +1843,9 @@ struct pidcme { // o2-linter: disable=name/struct } void process(soa::Filtered>::iterator const& collision, aod::BCsWithTimestamps const&, soa::Filtered> const& tracks) - { + { auto bc = collision.bc_as(); - if((hPosPrCut.empty()) || (hNegPrCut.empty())){ + if ((hPosPrCut.empty()) || (hNegPrCut.empty())) { initCCDB(bc); LOGF(info, "==================CCDB file successfuly applied===================="); LOGF(info, Form("size of hPosPrCut is %lu x %lu", hPosPrCut.size(), hPosPrCut[0].size())); @@ -1890,7 +1883,7 @@ struct pidcme { // o2-linter: disable=name/struct histosQA.fill(HIST("QA/hist_multV0A_multT0A_after"), collision.multFT0A(), collision.multFV0A()); histosQA.fill(HIST("QA/hist_multT0C_centT0C_after"), cent, collision.multFT0C()); } - if(cfgkOpenDebugPIDCME) { + if (cfgkOpenDebugPIDCME) { LOGF(info, "==================Event Cut Finished===================="); } auto tracks1 = tracksSet1->sliceByCached(aod::track::collisionId, collision.globalIndex(), cache); @@ -1905,17 +1898,16 @@ struct pidcme { // o2-linter: disable=name/struct int detIndGlobal = detId * 4 + cfgnTotalSystem * 4 * (cfgnMods->at(i) - 2); float psiNGlobal = helperEP.GetEventPlane(collision.qvecRe()[detIndGlobal + 3], collision.qvecIm()[detIndGlobal + 3], cfgnMods->at(i)); for (const auto& trk : tracks) { - if (!selTrack(trk,cent)) + if (!selTrack(trk, cent)) continue; - if(cfgkOpenTPCITSPurityCut && cfgkOpenTPCITSPurityCutQA) { - if (cent >= 20 && cent <30) { - if((trk.nPidFlag() == 3) || (trk.nPidFlag() == 8) || (trk.nPidFlag() == 9) || (trk.nPidFlag() == 10)) - { - if(trk.sign()>0){ + if (cfgkOpenTPCITSPurityCut && cfgkOpenTPCITSPurityCutQA) { + if (cent >= 20 && cent < 30) { + if ((trk.nPidFlag() == 3) || (trk.nPidFlag() == 8) || (trk.nPidFlag() == 9) || (trk.nPidFlag() == 10)) { + if (trk.sign() > 0) { histosQA.fill(HIST("QA/histITSPuritycheck_Pr_Pos_Cen_20_30"), trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); } else { histosQA.fill(HIST("QA/histITSPuritycheck_Pr_Neg_Cen_20_30"), trk.nSigmaPrTPC(), trk.nSigmaPrITS(), trk.pt()); - } + } } } } @@ -1926,12 +1918,12 @@ struct pidcme { // o2-linter: disable=name/struct } if (cfgkOpenCME && cfgkOpenHaHa && cfgnMods->at(i) == 2) { for (const auto& trk1 : tracks) { - if(!selTrack(trk1,cent)) + if (!selTrack(trk1, cent)) continue; for (const auto& trk2 : tracks) { if (trk1.globalIndex() == trk2.globalIndex()) continue; - if(!selTrack(trk2,cent)) + if (!selTrack(trk2, cent)) continue; if (trk1.sign() == trk2.sign()) { histosQA.fill(HIST("PIDCME/histgamama_HaHa_ss"), cent, std::cos((trk1.phi() + trk2.phi() - static_cast(cfgnMods->at(i)) * psiNGlobal))); @@ -1982,4 +1974,5 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) adaptAnalysisTask(cfgc), adaptAnalysisTask(cfgc), }; -} \ No newline at end of file +} + \ No newline at end of file From 3c221ada4ef8a9cc3a9f8b16cc4ccc668505f2c6 Mon Sep 17 00:00:00 2001 From: Zhengqing Wang Date: Wed, 19 Feb 2025 01:00:50 +0800 Subject: [PATCH 13/14] Update pidcme.cxx --- PWGCF/Flow/Tasks/pidcme.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PWGCF/Flow/Tasks/pidcme.cxx b/PWGCF/Flow/Tasks/pidcme.cxx index e8368b59fce..00cfe02192d 100644 --- a/PWGCF/Flow/Tasks/pidcme.cxx +++ b/PWGCF/Flow/Tasks/pidcme.cxx @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -1975,4 +1976,4 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) adaptAnalysisTask(cfgc), }; } - \ No newline at end of file + From 5146ca9c56e528c2492c39ec8e23ed6edf71bf16 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Tue, 18 Feb 2025 17:01:19 +0000 Subject: [PATCH 14/14] Please consider the following formatting changes --- PWGCF/Flow/Tasks/pidcme.cxx | 1 - 1 file changed, 1 deletion(-) diff --git a/PWGCF/Flow/Tasks/pidcme.cxx b/PWGCF/Flow/Tasks/pidcme.cxx index 00cfe02192d..baf95cdd60a 100644 --- a/PWGCF/Flow/Tasks/pidcme.cxx +++ b/PWGCF/Flow/Tasks/pidcme.cxx @@ -1976,4 +1976,3 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) adaptAnalysisTask(cfgc), }; } -