From d7995a7645e9e8e6e4a08b731b3289f80b602808 Mon Sep 17 00:00:00 2001 From: ananthapadmanabhan18 <82643666+ananthapadmanabhan18@users.noreply.github.com> Date: Mon, 16 Dec 2024 17:55:05 +0000 Subject: [PATCH 01/15] Added pT and y cuts to invmass distributions --- PWGUD/Tasks/exclusiveRhoTo4Pi.cxx | 88 ++++++++++++++++++++++--------- 1 file changed, 63 insertions(+), 25 deletions(-) diff --git a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx index 9d4cc4ca728..bb90337e371 100644 --- a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx +++ b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx @@ -82,27 +82,35 @@ struct UPCAnalysis { histos.add("tofNSigmaPi_WTS_PID_Pi", "TOF nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{100, -15, 15}}); // Track Transverse Momentum - histos.add("pT_track_WOTS", "pT without track selection; pT [GeV/c]; Events", kTH1F, {{100, 0, 2}}); - histos.add("pT_track_WTS", "pT with track selection; pT [GeV/c]; Events", kTH1F, {{100, 0, 2}}); - histos.add("pT_track_WTS_PID_Pi", "pT with track selection and PID selection of Pi; pT [GeV/c]; Events", kTH1F, {{100, 0, 2}}); + histos.add("pT_track_WOTS", "pT without track selection; pT [GeV/c]; Events", kTH1F, {{1000, 0, 2}}); + histos.add("pT_track_WTS", "pT with track selection; pT [GeV/c]; Events", kTH1F, {{1000, 0, 2}}); + histos.add("pT_track_WTS_PID_Pi", "pT with track selection and PID selection of Pi; pT [GeV/c]; Events", kTH1F, {{1000, 0, 2}}); // Zero charge Event Transverse Momentum - histos.add("pT_event_0charge_WTS_PID_Pi", "Event pT in 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Counts", kTH1F, {{100, 0, 2}}); + histos.add("pT_event_0charge_WTS_PID_Pi", "Event pT in 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Counts", kTH1F, {{1000, 0, 2}}); // Non Zero charge Event Transverse Momentum histos.add("pT_event_non0charge_WTS_PID_Pi", "Event pT in Non 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Counts", kTH1F, {{100, 0, 2}}); // Rapidity of 0 charge Events - histos.add("rapidity_event_0charge_WTS_PID_Pi", "Rapidity of Events With Track Selection and PID Selection of Pi; y; Counts", kTH1F, {{100, -2.5, 2.5}}); + histos.add("rapidity_event_0charge_WTS_PID_Pi_domainA", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} < 0.15 GeV/c; y; Counts", kTH1F, {{1000, -2.5, 2.5}}); + histos.add("rapidity_event_0charge_WTS_PID_Pi_domainB", "Rapidity of Events With Track Selection and PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; y; Counts", kTH1F, {{1000, -2.5, 2.5}}); + histos.add("rapidity_event_0charge_WTS_PID_Pi_domainC", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} > 0.80 GeV/c; y; Counts", kTH1F, {{1000, -2.5, 2.5}}); // Rapidity of non 0 charge Events - histos.add("rapidity_event_non0charge_WTS_PID_Pi", "Rapidity of Events With Track Selection and PID Selection of Pi; y; Counts", kTH1F, {{100, -2.5, 2.5}}); + histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainA", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} < 0.15 GeV/c; y; Counts", kTH1F, {{1000, -2.5, 2.5}}); + histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainB", "Rapidity of Events With Track Selection and PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c$; y; Counts", kTH1F, {{1000, -2.5, 2.5}}); + histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainC", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} > 0.80 GeV/c; y; Counts", kTH1F, {{1000, -2.5, 2.5}}); // Invariant Mass of 0 charge events - histos.add("invMass_event_0charge_WTS_PID_Pi", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{1000, 0.8, 2.5}}); + histos.add("invMass_event_0charge_WTS_PID_Pi_domainA", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for p_{T} < 0.15 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{1000, 0.8, 2.5}}); // pT < 0.15GeV + histos.add("invMass_event_0charge_WTS_PID_Pi_domainB", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{1000, 0.8, 2.5}}); // 0.15GeV < pT < 0.8GeV + histos.add("invMass_event_0charge_WTS_PID_Pi_domainC", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for p_{T} > 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{1000, 0.8, 2.5}}); // 0.8GeV < pT // Invariant mass of non 0 charge events - histos.add("invMass_event_non0charge_WTS_PID_Pi", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi; m(#pi^{+}#Pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{1000, 0.8, 2.5}}); + histos.add("invMass_event_non0charge_WTS_PID_Pi_domainA", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for p_{T} < 0.15 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{1000, 0.8, 2.5}}); // pT < 0.15GeV + histos.add("invMass_event_non0charge_WTS_PID_Pi_domainB", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{1000, 0.8, 2.5}}); // 0.15GeV < pT < 0.8GeV + histos.add("invMass_event_non0charge_WTS_PID_Pi_domainC", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for p_{T} > 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{1000, 0.8, 2.5}}); // 0.8GeV < pT // tpc signal histos.add("tpcSignal", "TPC dEdx vs p; p [GeV/c]; dEdx [a.u.]", kTH2F, {{500, 0, 10}, {5000, 0.0, 5000.0}}); @@ -120,8 +128,10 @@ struct UPCAnalysis { histos.add("V0A", "V0A amplitude", kTH1F, {{1000, 0.0, 100}}); // Collin Soper Theta and Phi - histos.add("CS_phi", "#phi Distribution; #phi; Entries", kTH1F, {{200, -3.2, 3.2}}); - histos.add("CS_costheta", "#theta Distribution;cos(#theta); Entries", kTH1F, {{200, -1, 1}}); + histos.add("CS_phi_pair_1", "#phi Distribution; #phi; Entries", kTH1F, {{200, -3.2, 3.2}}); + histos.add("CS_phi_pair_2", "#phi Distribution; #phi; Entries", kTH1F, {{200, -3.2, 3.2}}); + histos.add("CS_costheta_pair_1", "#theta Distribution;cos(#theta); Entries", kTH1F, {{200, -1, 1}}); + histos.add("CS_costheta_pair_2", "#theta Distribution;cos(#theta); Entries", kTH1F, {{200, -1, 1}}); } // End of init function //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -284,6 +294,7 @@ struct UPCAnalysis { return; } + // Selecting Events with net charge = 0 if (len_Pi_minus == 2 && len_Pi_plus == 2) { TLorentzVector p1, p2, p3, p4, p1234; @@ -307,21 +318,35 @@ struct UPCAnalysis { k23 = k2 + k3; k24 = k2 + k4; - auto phi_pair_1 = PhiCollinsSoperFrame(k13, k24, k1234); - auto phi_pair_2 = PhiCollinsSoperFrame(k14, k23, k1234); - auto cos_theta_1 = CosThetaCollinsSoperFrame(k13, k24, k1234); - auto cos_theta_2 = CosThetaCollinsSoperFrame(k14, k23, k1234); - - histos.fill(HIST("pT_event_0charge_WTS_PID_Pi"), p1234.Pt()); - histos.fill(HIST("rapidity_event_0charge_WTS_PID_Pi"), p1234.Rapidity()); - histos.fill(HIST("invMass_event_0charge_WTS_PID_Pi"), p1234.M()); - histos.fill(HIST("CS_phi"), phi_pair_1); - histos.fill(HIST("CS_phi"), phi_pair_2); - histos.fill(HIST("CS_costheta"), cos_theta_1); - histos.fill(HIST("CS_costheta"), cos_theta_2); + if (fabs(p1234.Rapidity()) < 0.5) { + histos.fill(HIST("pT_event_0charge_WTS_PID_Pi"), p1234.Pt()); + if (p1234.Pt() < 0.15) { + histos.fill(HIST("rapidity_event_0charge_WTS_PID_Pi_domainA"), p1234.Rapidity()); + histos.fill(HIST("invMass_event_0charge_WTS_PID_Pi_domainA"), p1234.M()); + + auto phi_pair_1 = PhiCollinsSoperFrame(k13, k24, k1234); + auto phi_pair_2 = PhiCollinsSoperFrame(k14, k23, k1234); + auto cos_theta_1 = CosThetaCollinsSoperFrame(k13, k24, k1234); + auto cos_theta_2 = CosThetaCollinsSoperFrame(k14, k23, k1234); + + histos.fill(HIST("CS_phi_pair_1"), phi_pair_1); + histos.fill(HIST("CS_phi_pair_2"), phi_pair_2); + histos.fill(HIST("CS_costheta_pair_1"), cos_theta_1); + histos.fill(HIST("CS_costheta_pair_2"), cos_theta_2); + } + if (p1234.Pt() > 0.15 && p1234.Pt() < 0.80) { + histos.fill(HIST("rapidity_event_0charge_WTS_PID_Pi_domainB"), p1234.Rapidity()); + histos.fill(HIST("invMass_event_0charge_WTS_PID_Pi_domainB"), p1234.M()); + } + if (p1234.Pt() > 0.80) { + histos.fill(HIST("rapidity_event_0charge_WTS_PID_Pi_domainC"), p1234.Rapidity()); + histos.fill(HIST("invMass_event_0charge_WTS_PID_Pi_domainC"), p1234.M()); + } + } // End of Rapidity range selection } // End of Analysis for 0 charge events + // Selecting Events with net charge != 0 for estimation of background if (len_Pi_minus != 2 && len_Pi_plus != 2) { TLorentzVector p1, p2, p3, p4, p1234; @@ -332,9 +357,22 @@ struct UPCAnalysis { p1234 = p1 + p2 + p3 + p4; - histos.fill(HIST("pT_event_non0charge_WTS_PID_Pi"), p1234.Pt()); - histos.fill(HIST("rapidity_event_non0charge_WTS_PID_Pi"), p1234.Rapidity()); - histos.fill(HIST("invMass_event_non0charge_WTS_PID_Pi"), p1234.M()); + if (fabs(p1234.Rapidity()) < 0.5) { + histos.fill(HIST("pT_event_non0charge_WTS_PID_Pi"), p1234.Pt()); + + if (p1234.Pt() < 0.15) { + histos.fill(HIST("rapidity_event_non0charge_WTS_PID_Pi_domainA"), p1234.Rapidity()); + histos.fill(HIST("invMass_event_non0charge_WTS_PID_Pi_domainA"), p1234.M()); + } + if (p1234.Pt() > 0.15 && p1234.Pt() < 0.80) { + histos.fill(HIST("rapidity_event_non0charge_WTS_PID_Pi_domainB"), p1234.Rapidity()); + histos.fill(HIST("invMass_event_non0charge_WTS_PID_Pi_domainB"), p1234.M()); + } + if (p1234.Pt() > 0.80) { + histos.fill(HIST("rapidity_event_non0charge_WTS_PID_Pi_domainC"), p1234.Rapidity()); + histos.fill(HIST("invMass_event_non0charge_WTS_PID_Pi_domainC"), p1234.M()); + } + } // End of Rapidity range selection } // End of Analysis for non 0 charge events From 7eb7c4e41846a24d3e0b0d31a50b25e557d42568 Mon Sep 17 00:00:00 2001 From: ananthapadmanabhan18 <82643666+ananthapadmanabhan18@users.noreply.github.com> Date: Thu, 19 Dec 2024 17:17:05 +0000 Subject: [PATCH 02/15] Add Configurable for nBins of pT, IM, Cos theta and phi --- PWGUD/Tasks/exclusiveRhoTo4Pi.cxx | 42 ++++++++++++++++++------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx index bb90337e371..dfc1eab2550 100644 --- a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx +++ b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx @@ -61,6 +61,12 @@ struct UPCAnalysis { Configurable nSigmaTPC_cut{"nsigmatpccut", 3, "TPC cut"}; Configurable nSigmaTOF_cut{"nsigmatofcut", 3, "TOF cut"}; Configurable StrictEventSelection{"StrictEventSelection", true, "Event Selection"}; + + Configurable nBins_pT{"nBins_pT", 1000, "Number of bins for pT"}; + Configurable nBins_IM{"nBins_IM", 1000, "Number of bins for Invariant Mass"}; + Configurable nBins_y{"nBins_y", 1000, "Number of bins for Rapidity"}; + Configurable nBins_Phi{"nBins_phi", 360, "Number of bins for Phi"}; + Configurable nBins_CosTheta{"nBins_cosTheta", 360, "Number of bins for cos Theta"}; //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Begin of Init Function----------------------------------------------------------------------------------------------------------------------------------------------------- @@ -82,15 +88,15 @@ struct UPCAnalysis { histos.add("tofNSigmaPi_WTS_PID_Pi", "TOF nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{100, -15, 15}}); // Track Transverse Momentum - histos.add("pT_track_WOTS", "pT without track selection; pT [GeV/c]; Events", kTH1F, {{1000, 0, 2}}); - histos.add("pT_track_WTS", "pT with track selection; pT [GeV/c]; Events", kTH1F, {{1000, 0, 2}}); - histos.add("pT_track_WTS_PID_Pi", "pT with track selection and PID selection of Pi; pT [GeV/c]; Events", kTH1F, {{1000, 0, 2}}); + histos.add("pT_track_WOTS", "pT without track selection; pT [GeV/c]; Events", kTH1F, {{nBins_pT, 0, 2}}); + histos.add("pT_track_WTS", "pT with track selection; pT [GeV/c]; Events", kTH1F, {{nBins_pT, 0, 2}}); + histos.add("pT_track_WTS_PID_Pi", "pT with track selection and PID selection of Pi; pT [GeV/c]; Events", kTH1F, {{nBins_pT, 0, 2}}); // Zero charge Event Transverse Momentum - histos.add("pT_event_0charge_WTS_PID_Pi", "Event pT in 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Counts", kTH1F, {{1000, 0, 2}}); + histos.add("pT_event_0charge_WTS_PID_Pi", "Event pT in 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Counts", kTH1F, {{nBins_pT, 0, 2}}); // Non Zero charge Event Transverse Momentum - histos.add("pT_event_non0charge_WTS_PID_Pi", "Event pT in Non 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Counts", kTH1F, {{100, 0, 2}}); + histos.add("pT_event_non0charge_WTS_PID_Pi", "Event pT in Non 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Counts", kTH1F, {{nBins_pT, 0, 2}}); // Rapidity of 0 charge Events histos.add("rapidity_event_0charge_WTS_PID_Pi_domainA", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} < 0.15 GeV/c; y; Counts", kTH1F, {{1000, -2.5, 2.5}}); @@ -98,19 +104,19 @@ struct UPCAnalysis { histos.add("rapidity_event_0charge_WTS_PID_Pi_domainC", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} > 0.80 GeV/c; y; Counts", kTH1F, {{1000, -2.5, 2.5}}); // Rapidity of non 0 charge Events - histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainA", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} < 0.15 GeV/c; y; Counts", kTH1F, {{1000, -2.5, 2.5}}); - histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainB", "Rapidity of Events With Track Selection and PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c$; y; Counts", kTH1F, {{1000, -2.5, 2.5}}); - histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainC", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} > 0.80 GeV/c; y; Counts", kTH1F, {{1000, -2.5, 2.5}}); + histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainA", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} < 0.15 GeV/c; y; Counts", kTH1F, {{nBins_y, -2.5, 2.5}}); + histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainB", "Rapidity of Events With Track Selection and PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c$; y; Counts", kTH1F, {{nBins_y, -2.5, 2.5}}); + histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainC", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} > 0.80 GeV/c; y; Counts", kTH1F, {{nBins_y, -2.5, 2.5}}); // Invariant Mass of 0 charge events - histos.add("invMass_event_0charge_WTS_PID_Pi_domainA", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for p_{T} < 0.15 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{1000, 0.8, 2.5}}); // pT < 0.15GeV - histos.add("invMass_event_0charge_WTS_PID_Pi_domainB", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{1000, 0.8, 2.5}}); // 0.15GeV < pT < 0.8GeV - histos.add("invMass_event_0charge_WTS_PID_Pi_domainC", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for p_{T} > 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{1000, 0.8, 2.5}}); // 0.8GeV < pT + histos.add("invMass_event_0charge_WTS_PID_Pi_domainA", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for p_{T} < 0.15 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBins_IM, 0.8, 2.5}}); // pT < 0.15GeV + histos.add("invMass_event_0charge_WTS_PID_Pi_domainB", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBins_IM, 0.8, 2.5}}); // 0.15GeV < pT < 0.8GeV + histos.add("invMass_event_0charge_WTS_PID_Pi_domainC", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for p_{T} > 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBins_IM, 0.8, 2.5}}); // 0.8GeV < pT // Invariant mass of non 0 charge events - histos.add("invMass_event_non0charge_WTS_PID_Pi_domainA", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for p_{T} < 0.15 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{1000, 0.8, 2.5}}); // pT < 0.15GeV - histos.add("invMass_event_non0charge_WTS_PID_Pi_domainB", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{1000, 0.8, 2.5}}); // 0.15GeV < pT < 0.8GeV - histos.add("invMass_event_non0charge_WTS_PID_Pi_domainC", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for p_{T} > 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{1000, 0.8, 2.5}}); // 0.8GeV < pT + histos.add("invMass_event_non0charge_WTS_PID_Pi_domainA", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for p_{T} < 0.15 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBins_IM, 0.8, 2.5}}); // pT < 0.15GeV + histos.add("invMass_event_non0charge_WTS_PID_Pi_domainB", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBins_IM, 0.8, 2.5}}); // 0.15GeV < pT < 0.8GeV + histos.add("invMass_event_non0charge_WTS_PID_Pi_domainC", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for p_{T} > 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBins_IM, 0.8, 2.5}}); // 0.8GeV < pT // tpc signal histos.add("tpcSignal", "TPC dEdx vs p; p [GeV/c]; dEdx [a.u.]", kTH2F, {{500, 0, 10}, {5000, 0.0, 5000.0}}); @@ -128,10 +134,10 @@ struct UPCAnalysis { histos.add("V0A", "V0A amplitude", kTH1F, {{1000, 0.0, 100}}); // Collin Soper Theta and Phi - histos.add("CS_phi_pair_1", "#phi Distribution; #phi; Entries", kTH1F, {{200, -3.2, 3.2}}); - histos.add("CS_phi_pair_2", "#phi Distribution; #phi; Entries", kTH1F, {{200, -3.2, 3.2}}); - histos.add("CS_costheta_pair_1", "#theta Distribution;cos(#theta); Entries", kTH1F, {{200, -1, 1}}); - histos.add("CS_costheta_pair_2", "#theta Distribution;cos(#theta); Entries", kTH1F, {{200, -1, 1}}); + histos.add("CS_phi_pair_1", "#phi Distribution; #phi; Entries", kTH1F, {{nBins_Phi, -3.2, 3.2}}); + histos.add("CS_phi_pair_2", "#phi Distribution; #phi; Entries", kTH1F, {{nBins_Phi, -3.2, 3.2}}); + histos.add("CS_costheta_pair_1", "#theta Distribution;cos(#theta); Entries", kTH1F, {{nBins_CosTheta, -1, 1}}); + histos.add("CS_costheta_pair_2", "#theta Distribution;cos(#theta); Entries", kTH1F, {{nBins_CosTheta, -1, 1}}); } // End of init function //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- From 3f566525f45cb3196aec254a0fd2acbcd5459725 Mon Sep 17 00:00:00 2001 From: ananthapadmanabhan18 <82643666+ananthapadmanabhan18@users.noreply.github.com> Date: Fri, 20 Dec 2024 04:46:58 +0000 Subject: [PATCH 03/15] Changed float to int which caused error --- PWGUD/Tasks/exclusiveRhoTo4Pi.cxx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx index dfc1eab2550..42025b7ae0c 100644 --- a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx +++ b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx @@ -62,11 +62,11 @@ struct UPCAnalysis { Configurable nSigmaTOF_cut{"nsigmatofcut", 3, "TOF cut"}; Configurable StrictEventSelection{"StrictEventSelection", true, "Event Selection"}; - Configurable nBins_pT{"nBins_pT", 1000, "Number of bins for pT"}; - Configurable nBins_IM{"nBins_IM", 1000, "Number of bins for Invariant Mass"}; - Configurable nBins_y{"nBins_y", 1000, "Number of bins for Rapidity"}; - Configurable nBins_Phi{"nBins_phi", 360, "Number of bins for Phi"}; - Configurable nBins_CosTheta{"nBins_cosTheta", 360, "Number of bins for cos Theta"}; + Configurable nBins_pT{"nBins_pT", 1000, "Number of bins for pT"}; + Configurable nBins_IM{"nBins_IM", 1000, "Number of bins for Invariant Mass"}; + Configurable nBins_y{"nBins_y", 1000, "Number of bins for Rapidity"}; + Configurable nBins_Phi{"nBins_phi", 360, "Number of bins for Phi"}; + Configurable nBins_CosTheta{"nBins_cosTheta", 360, "Number of bins for cos Theta"}; //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Begin of Init Function----------------------------------------------------------------------------------------------------------------------------------------------------- From 392f4109a51577f23cd6fe290f78900f43f320fb Mon Sep 17 00:00:00 2001 From: ananthapadmanabhan18 <82643666+ananthapadmanabhan18@users.noreply.github.com> Date: Sun, 22 Dec 2024 17:00:05 +0000 Subject: [PATCH 04/15] Added few more TPC N Sigmas --- PWGUD/Tasks/exclusiveRhoTo4Pi.cxx | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx index 42025b7ae0c..8e37eac8166 100644 --- a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx +++ b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx @@ -82,11 +82,23 @@ struct UPCAnalysis { histos.add("tpcNSigmaPi_WTS", "TPC nSigma Pion with track selection; Events", kTH1F, {{100, -15, 15}}); histos.add("tpcNSigmaPi_WTS_PID_Pi", "TPC nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{100, -15, 15}}); + // TPC nSigma of other particles with selected pion tracks + histos.add("tpcNSigmaPi_WTS_PID_Pi_Ka", "TPC nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{100, -15, 15}}); + histos.add("tpcNSigmaPi_WTS_PID_Pi_Pr", "TPC nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{100, -15, 15}}); + histos.add("tpcNSigmaPi_WTS_PID_Pi_El", "TPC nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{100, -15, 15}}); + histos.add("tpcNSigmaPi_WTS_PID_Pi_Mu", "TPC nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{100, -15, 15}}); + // TOF nSigma histos.add("tofNSigmaPi_WTS", "TOF nSigma Pion with track selection; Events", kTH1F, {{100, -15, 15}}); histos.add("tofNSigmaPi_WOTS", "TOF nSigma Pion without track selection; Events", kTH1F, {{100, -15, 15}}); histos.add("tofNSigmaPi_WTS_PID_Pi", "TOF nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{100, -15, 15}}); + // TOF nSigma of other particles with selected pion tracks + histos.add("tofNSigmaPi_WTS_PID_Pi_Ka", "TOF nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{100, -15, 15}}); + histos.add("tofNSigmaPi_WTS_PID_Pi_Pr", "TOF nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{100, -15, 15}}); + histos.add("tofNSigmaPi_WTS_PID_Pi_El", "TOF nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{100, -15, 15}}); + histos.add("tofNSigmaPi_WTS_PID_Pi_Mu", "TOF nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{100, -15, 15}}); + // Track Transverse Momentum histos.add("pT_track_WOTS", "pT without track selection; pT [GeV/c]; Events", kTH1F, {{nBins_pT, 0, 2}}); histos.add("pT_track_WTS", "pT with track selection; pT [GeV/c]; Events", kTH1F, {{nBins_pT, 0, 2}}); @@ -291,8 +303,19 @@ struct UPCAnalysis { histos.fill(HIST("tpcSignal_Pi"), TMath::Sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].tpcSignal()); histos.fill(HIST("tofBeta_Pi"), TMath::Sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].beta()); + histos.fill(HIST("tpcNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaPi()); + histos.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_Ka"), WTS_PID_Pi_tracks[i].tpcNSigmaKa()); + histos.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_Pr"), WTS_PID_Pi_tracks[i].tpcNSigmaPr()); + histos.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_El"), WTS_PID_Pi_tracks[i].tpcNSigmaEl()); + histos.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_Mu"), WTS_PID_Pi_tracks[i].tpcNSigmaMu()); + histos.fill(HIST("tofNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaPi()); + histos.fill(HIST("tofNSigmaPi_WTS_PID_Pi_Ka"), WTS_PID_Pi_tracks[i].tofNSigmaKa()); + histos.fill(HIST("tofNSigmaPi_WTS_PID_Pi_Pr"), WTS_PID_Pi_tracks[i].tofNSigmaPr()); + histos.fill(HIST("tofNSigmaPi_WTS_PID_Pi_El"), WTS_PID_Pi_tracks[i].tofNSigmaEl()); + histos.fill(HIST("tofNSigmaPi_WTS_PID_Pi_Mu"), WTS_PID_Pi_tracks[i].tofNSigmaMu()); + histos.fill(HIST("pT_track_WTS_PID_Pi"), TMath::Sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); } // End of loop over tracks with selection and PID selection of Pions From e60c23942111b5f7a2938602f6312d5abf5a7e59 Mon Sep 17 00:00:00 2001 From: ananthapadmanabhan18 <82643666+ananthapadmanabhan18@users.noreply.github.com> Date: Mon, 23 Dec 2024 06:18:07 +0000 Subject: [PATCH 05/15] Rebinned nSigmas --- PWGUD/Tasks/exclusiveRhoTo4Pi.cxx | 32 +++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx index 8e37eac8166..c19b7bb9065 100644 --- a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx +++ b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx @@ -78,26 +78,26 @@ struct UPCAnalysis { histos.add("EventCounts", "Total Events; Events", kTH1F, {{10, 0, 10}}); // 2=#Events, 3= #Selected Events, 5=#Selected Events with Zero Net charge, 6=Selected Events with Non-Zero Net charge // TPC nSigma - histos.add("tpcNSigmaPi_WOTS", "TPC nSigma Pion without track selection; Events", kTH1F, {{100, -15, 15}}); - histos.add("tpcNSigmaPi_WTS", "TPC nSigma Pion with track selection; Events", kTH1F, {{100, -15, 15}}); - histos.add("tpcNSigmaPi_WTS_PID_Pi", "TPC nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{100, -15, 15}}); + histos.add("tpcNSigmaPi_WOTS", "TPC nSigma Pion without track selection; Events", kTH1F, {{1000, -15, 15}}); + histos.add("tpcNSigmaPi_WTS", "TPC nSigma Pion with track selection; Events", kTH1F, {{1000, -15, 15}}); + histos.add("tpcNSigmaPi_WTS_PID_Pi", "TPC nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{1000, -15, 15}}); // TPC nSigma of other particles with selected pion tracks - histos.add("tpcNSigmaPi_WTS_PID_Pi_Ka", "TPC nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{100, -15, 15}}); - histos.add("tpcNSigmaPi_WTS_PID_Pi_Pr", "TPC nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{100, -15, 15}}); - histos.add("tpcNSigmaPi_WTS_PID_Pi_El", "TPC nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{100, -15, 15}}); - histos.add("tpcNSigmaPi_WTS_PID_Pi_Mu", "TPC nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{100, -15, 15}}); + histos.add("tpcNSigmaPi_WTS_PID_Pi_Ka", "TPC nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histos.add("tpcNSigmaPi_WTS_PID_Pi_Pr", "TPC nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histos.add("tpcNSigmaPi_WTS_PID_Pi_El", "TPC nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histos.add("tpcNSigmaPi_WTS_PID_Pi_Mu", "TPC nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); // TOF nSigma - histos.add("tofNSigmaPi_WTS", "TOF nSigma Pion with track selection; Events", kTH1F, {{100, -15, 15}}); - histos.add("tofNSigmaPi_WOTS", "TOF nSigma Pion without track selection; Events", kTH1F, {{100, -15, 15}}); - histos.add("tofNSigmaPi_WTS_PID_Pi", "TOF nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{100, -15, 15}}); + histos.add("tofNSigmaPi_WTS", "TOF nSigma Pion with track selection; Events", kTH1F, {{1000, -15, 15}}); + histos.add("tofNSigmaPi_WOTS", "TOF nSigma Pion without track selection; Events", kTH1F, {{1000, -15, 15}}); + histos.add("tofNSigmaPi_WTS_PID_Pi", "TOF nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{1000, -15, 15}}); // TOF nSigma of other particles with selected pion tracks - histos.add("tofNSigmaPi_WTS_PID_Pi_Ka", "TOF nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{100, -15, 15}}); - histos.add("tofNSigmaPi_WTS_PID_Pi_Pr", "TOF nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{100, -15, 15}}); - histos.add("tofNSigmaPi_WTS_PID_Pi_El", "TOF nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{100, -15, 15}}); - histos.add("tofNSigmaPi_WTS_PID_Pi_Mu", "TOF nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{100, -15, 15}}); + histos.add("tofNSigmaPi_WTS_PID_Pi_Ka", "TOF nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histos.add("tofNSigmaPi_WTS_PID_Pi_Pr", "TOF nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histos.add("tofNSigmaPi_WTS_PID_Pi_El", "TOF nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histos.add("tofNSigmaPi_WTS_PID_Pi_Mu", "TOF nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); // Track Transverse Momentum histos.add("pT_track_WOTS", "pT without track selection; pT [GeV/c]; Events", kTH1F, {{nBins_pT, 0, 2}}); @@ -347,7 +347,7 @@ struct UPCAnalysis { k23 = k2 + k3; k24 = k2 + k4; - if (fabs(p1234.Rapidity()) < 0.5) { + if (std::fabs(p1234.Rapidity()) < 0.5) { histos.fill(HIST("pT_event_0charge_WTS_PID_Pi"), p1234.Pt()); if (p1234.Pt() < 0.15) { histos.fill(HIST("rapidity_event_0charge_WTS_PID_Pi_domainA"), p1234.Rapidity()); @@ -386,7 +386,7 @@ struct UPCAnalysis { p1234 = p1 + p2 + p3 + p4; - if (fabs(p1234.Rapidity()) < 0.5) { + if (std::fabs(p1234.Rapidity()) < 0.5) { histos.fill(HIST("pT_event_non0charge_WTS_PID_Pi"), p1234.Pt()); if (p1234.Pt() < 0.15) { From 3ce0ee3b5e3b290c4e3372353a47fd438da2096d Mon Sep 17 00:00:00 2001 From: ananthapadmanabhan18 <82643666+ananthapadmanabhan18@users.noreply.github.com> Date: Mon, 23 Dec 2024 07:28:20 +0000 Subject: [PATCH 06/15] Renamed Struct Name --- PWGUD/Tasks/exclusiveRhoTo4Pi.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx index c19b7bb9065..647b999b5a2 100644 --- a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx +++ b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx @@ -37,7 +37,7 @@ using namespace o2::framework; using namespace o2::framework::expressions; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -struct UPCAnalysis { +struct exclusiveRhoTo4Pi { SGSelector sgSelector; HistogramRegistry histos{"HistoReg", {}, OutputObjHandlingPolicy::AnalysisObject, true, true}; @@ -414,5 +414,5 @@ struct UPCAnalysis { WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{ - adaptAnalysisTask(cfgc)}; + adaptAnalysisTask(cfgc)}; } From e585d9659fac221d2bacf307797e1ff712e838d8 Mon Sep 17 00:00:00 2001 From: ananthapadmanabhan18 <82643666+ananthapadmanabhan18@users.noreply.github.com> Date: Wed, 25 Dec 2024 16:35:53 +0000 Subject: [PATCH 07/15] Removing o2 linter errors --- PWGUD/Tasks/exclusiveRhoTo4Pi.cxx | 137 +++++++++++++++--------------- 1 file changed, 69 insertions(+), 68 deletions(-) diff --git a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx index 647b999b5a2..835e5c56adf 100644 --- a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx +++ b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx @@ -8,12 +8,13 @@ // In applying this license CERN does not waive the privileges and immunities // granted to it by virtue of its status as an Intergovernmental Organization // or submit itself to any jurisdiction. -// \Single Gap Event Analyzer -// \author Anantha Padmanabhan M Nair, anantha.manoj.nair@cern.ch -// \since May 2024 +/// \author AnanthaPadmanabhan +/// \brief Task for analyzing exclusive rho decays to 4 pions +/// \file exclusiveRhoTo4Pi.cxx #include #include +#include #include "Framework/runDataProcessing.h" #include "Framework/AnalysisTask.h" #include "Framework/AnalysisDataModel.h" @@ -37,36 +38,36 @@ using namespace o2::framework; using namespace o2::framework::expressions; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -struct exclusiveRhoTo4Pi { +struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct SGSelector sgSelector; HistogramRegistry histos{"HistoReg", {}, OutputObjHandlingPolicy::AnalysisObject, true, true}; //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Configurable FV0_cut{"FV0", 50., "FV0A threshold"}; - Configurable FT0A_cut{"FT0A", 150., "FT0A threshold"}; - Configurable FT0C_cut{"FT0C", 50., "FT0C threshold"}; - Configurable FDDA_cut{"FDDA", 10000., "FDDA threshold"}; - Configurable FDDC_cut{"FDDC", 10000., "FDDC threshold"}; - Configurable ZDC_cut{"ZDC", 10., "ZDC threshold"}; - - Configurable PV_cut{"PV_cut", 1.0, "Use Only PV tracks"}; - Configurable dcaZ_cut{"dcaZ_cut", 3.2, "dcaZ cut"}; - Configurable dcaXY_cut{"dcaXY_cut", 2.4, "dcaXY cut (0 for Pt-function)"}; - Configurable tpcChi2_cut{"tpcChi2_cut", 4, "Max tpcChi2NCl"}; - Configurable tpcNClsFindable_cut{"tpcNClsFindable_cut", 80, "Min tpcNClsFindable"}; - Configurable itsChi2_cut{"itsChi2_cut", 36, "Max itsChi2NCl"}; - Configurable eta_cut{"eta_cut", 0.9, "Track Pseudorapidity"}; - Configurable pt_cut{"pt_cut", 0, "Track Pt"}; - - Configurable nSigmaTPC_cut{"nsigmatpccut", 3, "TPC cut"}; - Configurable nSigmaTOF_cut{"nsigmatofcut", 3, "TOF cut"}; - Configurable StrictEventSelection{"StrictEventSelection", true, "Event Selection"}; - - Configurable nBins_pT{"nBins_pT", 1000, "Number of bins for pT"}; - Configurable nBins_IM{"nBins_IM", 1000, "Number of bins for Invariant Mass"}; - Configurable nBins_y{"nBins_y", 1000, "Number of bins for Rapidity"}; - Configurable nBins_Phi{"nBins_phi", 360, "Number of bins for Phi"}; - Configurable nBins_CosTheta{"nBins_cosTheta", 360, "Number of bins for cos Theta"}; + Configurable FV0_cut{"FV0_cut", 50., "FV0A threshold"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable FT0A_cut{"FT0A_cut", 150., "FT0A threshold"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable FT0C_cut{"FT0C_cut", 50., "FT0C threshold"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable FDDA_cut{"FDDA_cut", 10000., "FDDA threshold"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable FDDC_cut{"FDDC_cut", 10000., "FDDC threshold"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable ZDC_cut{"ZDC_cut", 10., "ZDC threshold"}; // o2-linter: disable=name/function-variable,name/configurable + + Configurable PV_cut{"PV_cut", 1.0, "Use Only PV tracks"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable dcaZ_cut{"dcaZ_cut", 3.2, "dcaZ cut"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable dcaXY_cut{"dcaXY_cut", 2.4, "dcaXY cut (0 for Pt-function)"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable tpcChi2_cut{"tpcChi2_cut", 4, "Max tpcChi2NCl"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable tpcNClsFindable_cut{"tpcNClsFindable_cut", 80, "Min tpcNClsFindable"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable itsChi2_cut{"itsChi2_cut", 36, "Max itsChi2NCl"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable eta_cut{"eta_cut", 0.9, "Track Pseudorapidity"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable pt_cut{"pt_cut", 0, "Track Pt"}; // o2-linter: disable=name/function-variable,name/configurable + + Configurable nSigmaTPC_cut{"nSigmaTPC_cut", 3, "TPC cut"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable nSigmaTOF_cut{"nSigmaTOF_cut", 3, "TOF cut"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable StrictEventSelection{"StrictEventSelection", true, "Event Selection"}; // o2-linter: disable=name/function-variable,name/configurable + + Configurable nBins_pT{"nBins_pT", 1000, "Number of bins for pT"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable nBins_IM{"nBins_IM", 1000, "Number of bins for Invariant Mass"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable nBins_y{"nBins_y", 1000, "Number of bins for Rapidity"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable nBins_Phi{"nBins_phi", 360, "Number of bins for Phi"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable nBins_CosTheta{"nBins_cosTheta", 360, "Number of bins for cos Theta"}; // o2-linter: disable=name/function-variable,name/configurable //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Begin of Init Function----------------------------------------------------------------------------------------------------------------------------------------------------- @@ -75,7 +76,7 @@ struct exclusiveRhoTo4Pi { histos.add("GapSide", "Gap Side; Events", kTH1F, {{4, -1.5, 2.5}}); histos.add("TrueGapSide", "Gap Side; Events", kTH1F, {{4, -1.5, 2.5}}); - histos.add("EventCounts", "Total Events; Events", kTH1F, {{10, 0, 10}}); // 2=#Events, 3= #Selected Events, 5=#Selected Events with Zero Net charge, 6=Selected Events with Non-Zero Net charge + histos.add("EventCounts", "Total Events; Events", kTH1F, {{10, 0, 10}}); // TPC nSigma histos.add("tpcNSigmaPi_WOTS", "TPC nSigma Pion without track selection; Events", kTH1F, {{1000, -15, 15}}); @@ -162,14 +163,14 @@ struct exclusiveRhoTo4Pi { //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Calculate the Collins-Soper Frame---------------------------------------------------------------------------------------------------------------------------- - Double_t CosThetaCollinsSoperFrame(ROOT::Math::PtEtaPhiMVector pair1, ROOT::Math::PtEtaPhiMVector pair2, ROOT::Math::PtEtaPhiMVector fourpion) + double cosThetaCollinsSoperFrame(ROOT::Math::PtEtaPhiMVector pair1, ROOT::Math::PtEtaPhiMVector pair2, ROOT::Math::PtEtaPhiMVector fourpion) { - Double_t HalfSqrtSnn = 2680.; - Double_t MassOfLead208 = 193.6823; - Double_t MomentumBeam = TMath::Sqrt(HalfSqrtSnn * HalfSqrtSnn * 208 * 208 - MassOfLead208 * MassOfLead208); + double halfSqrtSnn = 2680.; + double massOfLead208 = 193.6823; + double momentumBeam = std::sqrt(halfSqrtSnn * halfSqrtSnn * 208 * 208 - massOfLead208 * massOfLead208); - TLorentzVector pProjCM(0., 0., -MomentumBeam, HalfSqrtSnn * 208); // projectile - TLorentzVector pTargCM(0., 0., MomentumBeam, HalfSqrtSnn * 208); // target + TLorentzVector pProjCM(0., 0., -momentumBeam, halfSqrtSnn * 208); // projectile + TLorentzVector pTargCM(0., 0., momentumBeam, halfSqrtSnn * 208); // target // TVector3 beta = (-1. / fourpion.E()) * fourpion.Vect(); ROOT::Math::PtEtaPhiMVector v1 = pair1; @@ -180,43 +181,43 @@ struct exclusiveRhoTo4Pi { ROOT::Math::Boost boostv12{v12.BoostToCM()}; ROOT::Math::XYZVectorF v1_CM{(boostv12(v1).Vect()).Unit()}; ROOT::Math::XYZVectorF v2_CM{(boostv12(v2).Vect()).Unit()}; - ROOT::Math::XYZVectorF Beam1_CM{(boostv12(pProjCM).Vect()).Unit()}; - ROOT::Math::XYZVectorF Beam2_CM{(boostv12(pTargCM).Vect()).Unit()}; + ROOT::Math::XYZVectorF beam1_CM{(boostv12(pProjCM).Vect()).Unit()}; + ROOT::Math::XYZVectorF beam2_CM{(boostv12(pTargCM).Vect()).Unit()}; // Axes - ROOT::Math::XYZVectorF zaxis_CS{((Beam1_CM.Unit() - Beam2_CM.Unit()).Unit())}; + ROOT::Math::XYZVectorF zaxis_CS{((beam1_CM.Unit() - beam2_CM.Unit()).Unit())}; - Double_t CosThetaCS = zaxis_CS.Dot((v1_CM)); + double CosThetaCS = zaxis_CS.Dot((v1_CM)); return CosThetaCS; - } // End of CosThetaCollinsSoperFrame function------------------------------------------------------------------------------------------------------------------------ + } // End of cosThetaCollinsSoperFrame function------------------------------------------------------------------------------------------------------------------------ // Calculate Phi in Collins-Soper Frame------------------------------------------------------------------------------------------------------------------------ - Double_t PhiCollinsSoperFrame(ROOT::Math::PtEtaPhiMVector pair1, ROOT::Math::PtEtaPhiMVector pair2, ROOT::Math::PtEtaPhiMVector fourpion) + double phiCollinsSoperFrame(ROOT::Math::PtEtaPhiMVector pair1, ROOT::Math::PtEtaPhiMVector pair2, ROOT::Math::PtEtaPhiMVector fourpion) { // Half of the energy per pair of the colliding nucleons. - Double_t HalfSqrtSnn = 2680.; - Double_t MassOfLead208 = 193.6823; - Double_t MomentumBeam = TMath::Sqrt(HalfSqrtSnn * HalfSqrtSnn * 208 * 208 - MassOfLead208 * MassOfLead208); + double halfSqrtSnn = 2680.; + double massOfLead208 = 193.6823; + double momentumBeam = std::sqrt(halfSqrtSnn * halfSqrtSnn * 208 * 208 - massOfLead208 * massOfLead208); - TLorentzVector pProjCM(0., 0., -MomentumBeam, HalfSqrtSnn * 208); // projectile - TLorentzVector pTargCM(0., 0., MomentumBeam, HalfSqrtSnn * 208); // target + TLorentzVector pProjCM(0., 0., -momentumBeam, halfSqrtSnn * 208); // projectile + TLorentzVector pTargCM(0., 0., momentumBeam, halfSqrtSnn * 208); // target ROOT::Math::PtEtaPhiMVector v1 = pair1; ROOT::Math::PtEtaPhiMVector v2 = pair2; ROOT::Math::PtEtaPhiMVector v12 = fourpion; // Boost to center of mass frame ROOT::Math::Boost boostv12{v12.BoostToCM()}; - ROOT::Math::XYZVectorF v1_CM{(boostv12(v1).Vect()).Unit()}; - ROOT::Math::XYZVectorF v2_CM{(boostv12(v2).Vect()).Unit()}; - ROOT::Math::XYZVectorF Beam1_CM{(boostv12(pProjCM).Vect()).Unit()}; - ROOT::Math::XYZVectorF Beam2_CM{(boostv12(pTargCM).Vect()).Unit()}; + ROOT::Math::XYZVectorF v1_CM{(boostv12(v1).Vect()).Unit()}; // o2-linter: disable=name/function-variable,name/configurable + ROOT::Math::XYZVectorF v2_CM{(boostv12(v2).Vect()).Unit()}; // o2-linter: disable=name/function-variable,name/configurable + ROOT::Math::XYZVectorF beam1_CM{(boostv12(pProjCM).Vect()).Unit()}; // o2-linter: disable=name/function-variable,name/configurable + ROOT::Math::XYZVectorF beam2_CM{(boostv12(pTargCM).Vect()).Unit()}; // o2-linter: disable=name/function-variable,name/configurable // Axes - ROOT::Math::XYZVectorF zaxis_CS{((Beam1_CM.Unit() - Beam2_CM.Unit()).Unit())}; - ROOT::Math::XYZVectorF yaxis_CS{(Beam1_CM.Cross(Beam2_CM)).Unit()}; - ROOT::Math::XYZVectorF xaxis_CS{(yaxis_CS.Cross(zaxis_CS)).Unit()}; + ROOT::Math::XYZVectorF zaxis_CS{((beam1_CM.Unit() - beam2_CM.Unit()).Unit())}; // o2-linter: disable=name/function-variable,name/configurable + ROOT::Math::XYZVectorF yaxis_CS{(beam1_CM.Cross(beam2_CM)).Unit()}; // o2-linter: disable=name/function-variable,name/configurable + ROOT::Math::XYZVectorF xaxis_CS{(yaxis_CS.Cross(zaxis_CS)).Unit()}; // o2-linter: disable=name/function-variable,name/configurable - Double_t phi = TMath::ATan2(yaxis_CS.Dot(v1_CM), xaxis_CS.Dot(v1_CM)); + double phi = std::atan2(yaxis_CS.Dot(v1_CM), xaxis_CS.Dot(v1_CM)); return phi; - } // End of PhiCollinsSoperFrame function------------------------------------------------------------------------------------------------------------------------ + } // End of phiCollinsSoperFrame function------------------------------------------------------------------------------------------------------------------------ // Begin of Process function-------------------------------------------------------------------------------------------------------------------------------------------------- void process(UDCollisionFull const& collision, udtracksfull const& tracks) @@ -257,7 +258,7 @@ struct exclusiveRhoTo4Pi { std::vector Pi_plus_tracks; std::vector Pi_minus_tracks; - for (auto& t0 : tracks) { + for (const auto& t0 : tracks) { WOTS_tracks.push_back(t0); @@ -287,22 +288,22 @@ struct exclusiveRhoTo4Pi { for (int i = 0; i < len_WOTS; i++) { histos.fill(HIST("tpcNSigmaPi_WOTS"), WOTS_tracks[i].tpcNSigmaPi()); histos.fill(HIST("tofNSigmaPi_WOTS"), WOTS_tracks[i].tofNSigmaPi()); - histos.fill(HIST("pT_track_WOTS"), TMath::Sqrt(WOTS_tracks[i].px() * WOTS_tracks[i].px() + WOTS_tracks[i].py() * WOTS_tracks[i].py())); + histos.fill(HIST("pT_track_WOTS"), std::sqrt(WOTS_tracks[i].px() * WOTS_tracks[i].px() + WOTS_tracks[i].py() * WOTS_tracks[i].py())); } // End of loop over tracks without selection for (int i = 0; i < len_WTS; i++) { - histos.fill(HIST("tpcSignal"), TMath::Sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].tpcSignal()); - histos.fill(HIST("tofBeta"), TMath::Sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].beta()); + histos.fill(HIST("tpcSignal"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].tpcSignal()); + histos.fill(HIST("tofBeta"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].beta()); histos.fill(HIST("tpcNSigmaPi_WTS"), WTS_tracks[i].tpcNSigmaPi()); histos.fill(HIST("tofNSigmaPi_WTS"), WTS_tracks[i].tofNSigmaPi()); - histos.fill(HIST("pT_track_WTS"), TMath::Sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py())); + histos.fill(HIST("pT_track_WTS"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py())); } // End of loop over tracks with selection only for (int i = 0; i < len_WTS_PID_Pi; i++) { - histos.fill(HIST("tpcSignal_Pi"), TMath::Sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].tpcSignal()); - histos.fill(HIST("tofBeta_Pi"), TMath::Sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].beta()); + histos.fill(HIST("tpcSignal_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].tpcSignal()); + histos.fill(HIST("tofBeta_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].beta()); histos.fill(HIST("tpcNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaPi()); histos.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_Ka"), WTS_PID_Pi_tracks[i].tpcNSigmaKa()); @@ -316,7 +317,7 @@ struct exclusiveRhoTo4Pi { histos.fill(HIST("tofNSigmaPi_WTS_PID_Pi_El"), WTS_PID_Pi_tracks[i].tofNSigmaEl()); histos.fill(HIST("tofNSigmaPi_WTS_PID_Pi_Mu"), WTS_PID_Pi_tracks[i].tofNSigmaMu()); - histos.fill(HIST("pT_track_WTS_PID_Pi"), TMath::Sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histos.fill(HIST("pT_track_WTS_PID_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); } // End of loop over tracks with selection and PID selection of Pions if (len_WTS_PID_Pi != 4) { @@ -353,10 +354,10 @@ struct exclusiveRhoTo4Pi { histos.fill(HIST("rapidity_event_0charge_WTS_PID_Pi_domainA"), p1234.Rapidity()); histos.fill(HIST("invMass_event_0charge_WTS_PID_Pi_domainA"), p1234.M()); - auto phi_pair_1 = PhiCollinsSoperFrame(k13, k24, k1234); - auto phi_pair_2 = PhiCollinsSoperFrame(k14, k23, k1234); - auto cos_theta_1 = CosThetaCollinsSoperFrame(k13, k24, k1234); - auto cos_theta_2 = CosThetaCollinsSoperFrame(k14, k23, k1234); + auto phi_pair_1 = phiCollinsSoperFrame(k13, k24, k1234); + auto phi_pair_2 = phiCollinsSoperFrame(k14, k23, k1234); + auto cos_theta_1 = cosThetaCollinsSoperFrame(k13, k24, k1234); + auto cos_theta_2 = cosThetaCollinsSoperFrame(k14, k23, k1234); histos.fill(HIST("CS_phi_pair_1"), phi_pair_1); histos.fill(HIST("CS_phi_pair_2"), phi_pair_2); From 7a68b9ce06a2623ca5bab6767012c15a013df187 Mon Sep 17 00:00:00 2001 From: ananthapadmanabhan18 <82643666+ananthapadmanabhan18@users.noreply.github.com> Date: Sun, 29 Dec 2024 06:17:05 +0000 Subject: [PATCH 08/15] Fixed all O2 linter errors --- PWGUD/Tasks/exclusiveRhoTo4Pi.cxx | 83 ++++++++++++++++--------------- 1 file changed, 42 insertions(+), 41 deletions(-) diff --git a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx index 835e5c56adf..a719146d922 100644 --- a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx +++ b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx @@ -8,9 +8,10 @@ // In applying this license CERN does not waive the privileges and immunities // granted to it by virtue of its status as an Intergovernmental Organization // or submit itself to any jurisdiction. -/// \author AnanthaPadmanabhan -/// \brief Task for analyzing exclusive rho decays to 4 pions + /// \file exclusiveRhoTo4Pi.cxx +/// \brief Task for analyzing exclusive rho decays to 4 pions +/// \author Anantha Padmanabhan M Nair #include #include @@ -156,8 +157,8 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - using udtracks = soa::Join; - using udtracksfull = soa::Join; + // using udtracks = soa::Join; + using UDtracksfull = soa::Join; using UDCollisionsFull = soa::Join; // using UDCollisionFull = UDCollisionsFull::iterator; //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -179,16 +180,16 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct // Boost to center of mass frame ROOT::Math::Boost boostv12{v12.BoostToCM()}; - ROOT::Math::XYZVectorF v1_CM{(boostv12(v1).Vect()).Unit()}; - ROOT::Math::XYZVectorF v2_CM{(boostv12(v2).Vect()).Unit()}; - ROOT::Math::XYZVectorF beam1_CM{(boostv12(pProjCM).Vect()).Unit()}; - ROOT::Math::XYZVectorF beam2_CM{(boostv12(pTargCM).Vect()).Unit()}; + ROOT::Math::XYZVectorF v1CM{(boostv12(v1).Vect()).Unit()}; + ROOT::Math::XYZVectorF v2CM{(boostv12(v2).Vect()).Unit()}; + ROOT::Math::XYZVectorF beam1CM{(boostv12(pProjCM).Vect()).Unit()}; + ROOT::Math::XYZVectorF beam2CM{(boostv12(pTargCM).Vect()).Unit()}; // Axes - ROOT::Math::XYZVectorF zaxis_CS{((beam1_CM.Unit() - beam2_CM.Unit()).Unit())}; + ROOT::Math::XYZVectorF zaxisCS{((beam1CM.Unit() - beam2CM.Unit()).Unit())}; - double CosThetaCS = zaxis_CS.Dot((v1_CM)); - return CosThetaCS; + double cosThetaCS = zaxisCS.Dot((v1CM)); + return cosThetaCS; } // End of cosThetaCollinsSoperFrame function------------------------------------------------------------------------------------------------------------------------ // Calculate Phi in Collins-Soper Frame------------------------------------------------------------------------------------------------------------------------ @@ -206,27 +207,27 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct ROOT::Math::PtEtaPhiMVector v12 = fourpion; // Boost to center of mass frame ROOT::Math::Boost boostv12{v12.BoostToCM()}; - ROOT::Math::XYZVectorF v1_CM{(boostv12(v1).Vect()).Unit()}; // o2-linter: disable=name/function-variable,name/configurable - ROOT::Math::XYZVectorF v2_CM{(boostv12(v2).Vect()).Unit()}; // o2-linter: disable=name/function-variable,name/configurable - ROOT::Math::XYZVectorF beam1_CM{(boostv12(pProjCM).Vect()).Unit()}; // o2-linter: disable=name/function-variable,name/configurable - ROOT::Math::XYZVectorF beam2_CM{(boostv12(pTargCM).Vect()).Unit()}; // o2-linter: disable=name/function-variable,name/configurable + ROOT::Math::XYZVectorF v1CM{(boostv12(v1).Vect()).Unit()}; + ROOT::Math::XYZVectorF v2CM{(boostv12(v2).Vect()).Unit()}; + ROOT::Math::XYZVectorF beam1CM{(boostv12(pProjCM).Vect()).Unit()}; + ROOT::Math::XYZVectorF beam2CM{(boostv12(pTargCM).Vect()).Unit()}; // Axes - ROOT::Math::XYZVectorF zaxis_CS{((beam1_CM.Unit() - beam2_CM.Unit()).Unit())}; // o2-linter: disable=name/function-variable,name/configurable - ROOT::Math::XYZVectorF yaxis_CS{(beam1_CM.Cross(beam2_CM)).Unit()}; // o2-linter: disable=name/function-variable,name/configurable - ROOT::Math::XYZVectorF xaxis_CS{(yaxis_CS.Cross(zaxis_CS)).Unit()}; // o2-linter: disable=name/function-variable,name/configurable + ROOT::Math::XYZVectorF zaxisCS{((beam1CM.Unit() - beam2CM.Unit()).Unit())}; + ROOT::Math::XYZVectorF yaxisCS{(beam1CM.Cross(beam2CM)).Unit()}; + ROOT::Math::XYZVectorF xaxisCS{(yaxisCS.Cross(zaxisCS)).Unit()}; - double phi = std::atan2(yaxis_CS.Dot(v1_CM), xaxis_CS.Dot(v1_CM)); + double phi = std::atan2(yaxisCS.Dot(v1CM), xaxisCS.Dot(v1CM)); return phi; } // End of phiCollinsSoperFrame function------------------------------------------------------------------------------------------------------------------------ // Begin of Process function-------------------------------------------------------------------------------------------------------------------------------------------------- - void process(UDCollisionFull const& collision, udtracksfull const& tracks) + void process(UDCollisionFull const& collision, UDtracksfull const& tracks) { int gapSide = collision.gapSide(); - float FIT_cut[5] = {FV0_cut, FT0A_cut, FT0C_cut, FDDA_cut, FDDC_cut}; + float fitCuts[5] = {FV0_cut, FT0A_cut, FT0C_cut, FDDA_cut, FDDC_cut}; std::vector parameters = {PV_cut, dcaZ_cut, dcaXY_cut, tpcChi2_cut, tpcNClsFindable_cut, itsChi2_cut, eta_cut, pt_cut}; - int truegapSide = sgSelector.trueGap(collision, FIT_cut[0], FIT_cut[1], FIT_cut[2], ZDC_cut); + int truegapSide = sgSelector.trueGap(collision, fitCuts[0], fitCuts[1], fitCuts[2], ZDC_cut); histos.fill(HIST("GapSide"), gapSide); histos.fill(HIST("TrueGapSide"), truegapSide); histos.fill(HIST("EventCounts"), 1); @@ -279,19 +280,19 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct } // End of loop over tracks - int len_WOTS = static_cast(WOTS_tracks.size()); - int len_WTS = static_cast(WTS_tracks.size()); - int len_WTS_PID_Pi = static_cast(WTS_PID_Pi_tracks.size()); - int len_Pi_plus = static_cast(Pi_plus_tracks.size()); - int len_Pi_minus = static_cast(Pi_minus_tracks.size()); + int numTracksWOTS = static_cast(WOTS_tracks.size()); + int numTracksWTS = static_cast(WTS_tracks.size()); + int numTracksWTSandPIDpi = static_cast(WTS_PID_Pi_tracks.size()); + int numPiPlusTracks = static_cast(Pi_plus_tracks.size()); + int numPionMinusTRacks = static_cast(Pi_minus_tracks.size()); - for (int i = 0; i < len_WOTS; i++) { + for (int i = 0; i < numTracksWOTS; i++) { histos.fill(HIST("tpcNSigmaPi_WOTS"), WOTS_tracks[i].tpcNSigmaPi()); histos.fill(HIST("tofNSigmaPi_WOTS"), WOTS_tracks[i].tofNSigmaPi()); histos.fill(HIST("pT_track_WOTS"), std::sqrt(WOTS_tracks[i].px() * WOTS_tracks[i].px() + WOTS_tracks[i].py() * WOTS_tracks[i].py())); } // End of loop over tracks without selection - for (int i = 0; i < len_WTS; i++) { + for (int i = 0; i < numTracksWTS; i++) { histos.fill(HIST("tpcSignal"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].tpcSignal()); histos.fill(HIST("tofBeta"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].beta()); @@ -300,7 +301,7 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct histos.fill(HIST("pT_track_WTS"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py())); } // End of loop over tracks with selection only - for (int i = 0; i < len_WTS_PID_Pi; i++) { + for (int i = 0; i < numTracksWTSandPIDpi; i++) { histos.fill(HIST("tpcSignal_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].tpcSignal()); histos.fill(HIST("tofBeta_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].beta()); @@ -320,12 +321,12 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct histos.fill(HIST("pT_track_WTS_PID_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); } // End of loop over tracks with selection and PID selection of Pions - if (len_WTS_PID_Pi != 4) { + if (numTracksWTSandPIDpi != 4) { return; } // Selecting Events with net charge = 0 - if (len_Pi_minus == 2 && len_Pi_plus == 2) { + if (numPionMinusTRacks == 2 && numPiPlusTracks == 2) { TLorentzVector p1, p2, p3, p4, p1234; ROOT::Math::PtEtaPhiMVector k1, k2, k3, k4, k1234, k13, k14, k23, k24; @@ -354,15 +355,15 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct histos.fill(HIST("rapidity_event_0charge_WTS_PID_Pi_domainA"), p1234.Rapidity()); histos.fill(HIST("invMass_event_0charge_WTS_PID_Pi_domainA"), p1234.M()); - auto phi_pair_1 = phiCollinsSoperFrame(k13, k24, k1234); - auto phi_pair_2 = phiCollinsSoperFrame(k14, k23, k1234); - auto cos_theta_1 = cosThetaCollinsSoperFrame(k13, k24, k1234); - auto cos_theta_2 = cosThetaCollinsSoperFrame(k14, k23, k1234); + auto phiPair1 = phiCollinsSoperFrame(k13, k24, k1234); + auto phiPair2 = phiCollinsSoperFrame(k14, k23, k1234); + auto cosThetaPair1 = cosThetaCollinsSoperFrame(k13, k24, k1234); + auto cosThetaPair2 = cosThetaCollinsSoperFrame(k14, k23, k1234); - histos.fill(HIST("CS_phi_pair_1"), phi_pair_1); - histos.fill(HIST("CS_phi_pair_2"), phi_pair_2); - histos.fill(HIST("CS_costheta_pair_1"), cos_theta_1); - histos.fill(HIST("CS_costheta_pair_2"), cos_theta_2); + histos.fill(HIST("CS_phi_pair_1"), phiPair1); + histos.fill(HIST("CS_phi_pair_2"), phiPair2); + histos.fill(HIST("CS_costheta_pair_1"), cosThetaPair1); + histos.fill(HIST("CS_costheta_pair_2"), cosThetaPair2); } if (p1234.Pt() > 0.15 && p1234.Pt() < 0.80) { histos.fill(HIST("rapidity_event_0charge_WTS_PID_Pi_domainB"), p1234.Rapidity()); @@ -377,7 +378,7 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct } // End of Analysis for 0 charge events // Selecting Events with net charge != 0 for estimation of background - if (len_Pi_minus != 2 && len_Pi_plus != 2) { + if (numPionMinusTRacks != 2 && numPiPlusTracks != 2) { TLorentzVector p1, p2, p3, p4, p1234; p1.SetXYZM(WTS_PID_Pi_tracks[0].px(), WTS_PID_Pi_tracks[0].py(), WTS_PID_Pi_tracks[0].pz(), o2::constants::physics::MassPionCharged); From 03d4b7847b7f1be4e3da4ab33fd7ce63dd3d4766 Mon Sep 17 00:00:00 2001 From: ananthapadmanabhan18 <82643666+ananthapadmanabhan18@users.noreply.github.com> Date: Sun, 29 Dec 2024 12:30:07 +0000 Subject: [PATCH 09/15] Fixed all o2 linter errors with out disabling the check --- PWGUD/Tasks/exclusiveRhoTo4Pi.cxx | 96 +++++++++++++++---------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx index a719146d922..f5a44f5848e 100644 --- a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx +++ b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx @@ -44,31 +44,31 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct HistogramRegistry histos{"HistoReg", {}, OutputObjHandlingPolicy::AnalysisObject, true, true}; //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - Configurable FV0_cut{"FV0_cut", 50., "FV0A threshold"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable FT0A_cut{"FT0A_cut", 150., "FT0A threshold"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable FT0C_cut{"FT0C_cut", 50., "FT0C threshold"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable FDDA_cut{"FDDA_cut", 10000., "FDDA threshold"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable FDDC_cut{"FDDC_cut", 10000., "FDDC threshold"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable ZDC_cut{"ZDC_cut", 10., "ZDC threshold"}; // o2-linter: disable=name/function-variable,name/configurable - - Configurable PV_cut{"PV_cut", 1.0, "Use Only PV tracks"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable dcaZ_cut{"dcaZ_cut", 3.2, "dcaZ cut"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable dcaXY_cut{"dcaXY_cut", 2.4, "dcaXY cut (0 for Pt-function)"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable tpcChi2_cut{"tpcChi2_cut", 4, "Max tpcChi2NCl"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable tpcNClsFindable_cut{"tpcNClsFindable_cut", 80, "Min tpcNClsFindable"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable itsChi2_cut{"itsChi2_cut", 36, "Max itsChi2NCl"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable eta_cut{"eta_cut", 0.9, "Track Pseudorapidity"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable pt_cut{"pt_cut", 0, "Track Pt"}; // o2-linter: disable=name/function-variable,name/configurable - - Configurable nSigmaTPC_cut{"nSigmaTPC_cut", 3, "TPC cut"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable nSigmaTOF_cut{"nSigmaTOF_cut", 3, "TOF cut"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable StrictEventSelection{"StrictEventSelection", true, "Event Selection"}; // o2-linter: disable=name/function-variable,name/configurable - - Configurable nBins_pT{"nBins_pT", 1000, "Number of bins for pT"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable nBins_IM{"nBins_IM", 1000, "Number of bins for Invariant Mass"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable nBins_y{"nBins_y", 1000, "Number of bins for Rapidity"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable nBins_Phi{"nBins_phi", 360, "Number of bins for Phi"}; // o2-linter: disable=name/function-variable,name/configurable - Configurable nBins_CosTheta{"nBins_cosTheta", 360, "Number of bins for cos Theta"}; // o2-linter: disable=name/function-variable,name/configurable + Configurable fv0Cut{"fv0Cut", 50., "FV0A threshold"}; + Configurable ft0aCut{"ft0aCut", 150., "FT0A threshold"}; + Configurable ft0cCut{"ft0cCut", 50., "FT0C threshold"}; + Configurable fddaCut{"fddaCut", 10000., "FDDA threshold"}; + Configurable fddcCut{"fddcCut", 10000., "FDDC threshold"}; + Configurable zdcCut{"zdcCut", 10., "ZDC threshold"}; + + Configurable pvCut{"pvCut", 1.0, "Use Only PV tracks"}; + Configurable dcaZcut{"dcaZcut", 3.2, "dcaZ cut"}; + Configurable dcaXYcut{"dcaXYcut", 2.4, "dcaXY cut (0 for Pt-function)"}; + Configurable tpcChi2Cut{"tpcChi2Cut", 4, "Max tpcChi2NCl"}; + Configurable tpcNClsFindableCut{"tpcNClsFindableCut", 80, "Min tpcNClsFindable"}; + Configurable itsChi2Cut{"itsChi2Cut", 36, "Max itsChi2NCl"}; + Configurable etaCut{"etaCut", 0.9, "Track Pseudorapidity"}; + Configurable pTcut{"pTcut", 0, "Track Pt"}; + + Configurable nSigmaTPCcut{"nSigmaTPCcut", 3, "TPC cut"}; + Configurable nSigmaTOFcut{"nSigmaTOFcut", 3, "TOF cut"}; + Configurable strictEventSelection{"strictEventSelection", true, "Event Selection"}; + + Configurable nBinsPt{"nBinsPt", 1000, "Number of bins for pT"}; + Configurable nBinsInvariantMass{"nBinsInvariantMass", 1000, "Number of bins for Invariant Mass"}; + Configurable nBinsRapidity{"nBinsRapidity", 1000, "Number of bins for Rapidity"}; + Configurable nBinsPhi{"nBinsPhi", 360, "Number of bins for Phi"}; + Configurable nBinsCosTheta{"nBinsCosTheta", 360, "Number of bins for cos Theta"}; //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Begin of Init Function----------------------------------------------------------------------------------------------------------------------------------------------------- @@ -102,15 +102,15 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct histos.add("tofNSigmaPi_WTS_PID_Pi_Mu", "TOF nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); // Track Transverse Momentum - histos.add("pT_track_WOTS", "pT without track selection; pT [GeV/c]; Events", kTH1F, {{nBins_pT, 0, 2}}); - histos.add("pT_track_WTS", "pT with track selection; pT [GeV/c]; Events", kTH1F, {{nBins_pT, 0, 2}}); - histos.add("pT_track_WTS_PID_Pi", "pT with track selection and PID selection of Pi; pT [GeV/c]; Events", kTH1F, {{nBins_pT, 0, 2}}); + histos.add("pT_track_WOTS", "pT without track selection; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); + histos.add("pT_track_WTS", "pT with track selection; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); + histos.add("pT_track_WTS_PID_Pi", "pT with track selection and PID selection of Pi; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); // Zero charge Event Transverse Momentum - histos.add("pT_event_0charge_WTS_PID_Pi", "Event pT in 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Counts", kTH1F, {{nBins_pT, 0, 2}}); + histos.add("pT_event_0charge_WTS_PID_Pi", "Event pT in 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Counts", kTH1F, {{nBinsPt, 0, 2}}); // Non Zero charge Event Transverse Momentum - histos.add("pT_event_non0charge_WTS_PID_Pi", "Event pT in Non 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Counts", kTH1F, {{nBins_pT, 0, 2}}); + histos.add("pT_event_non0charge_WTS_PID_Pi", "Event pT in Non 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Counts", kTH1F, {{nBinsPt, 0, 2}}); // Rapidity of 0 charge Events histos.add("rapidity_event_0charge_WTS_PID_Pi_domainA", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} < 0.15 GeV/c; y; Counts", kTH1F, {{1000, -2.5, 2.5}}); @@ -118,19 +118,19 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct histos.add("rapidity_event_0charge_WTS_PID_Pi_domainC", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} > 0.80 GeV/c; y; Counts", kTH1F, {{1000, -2.5, 2.5}}); // Rapidity of non 0 charge Events - histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainA", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} < 0.15 GeV/c; y; Counts", kTH1F, {{nBins_y, -2.5, 2.5}}); - histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainB", "Rapidity of Events With Track Selection and PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c$; y; Counts", kTH1F, {{nBins_y, -2.5, 2.5}}); - histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainC", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} > 0.80 GeV/c; y; Counts", kTH1F, {{nBins_y, -2.5, 2.5}}); + histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainA", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} < 0.15 GeV/c; y; Counts", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); + histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainB", "Rapidity of Events With Track Selection and PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c$; y; Counts", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); + histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainC", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} > 0.80 GeV/c; y; Counts", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); // Invariant Mass of 0 charge events - histos.add("invMass_event_0charge_WTS_PID_Pi_domainA", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for p_{T} < 0.15 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBins_IM, 0.8, 2.5}}); // pT < 0.15GeV - histos.add("invMass_event_0charge_WTS_PID_Pi_domainB", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBins_IM, 0.8, 2.5}}); // 0.15GeV < pT < 0.8GeV - histos.add("invMass_event_0charge_WTS_PID_Pi_domainC", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for p_{T} > 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBins_IM, 0.8, 2.5}}); // 0.8GeV < pT + histos.add("invMass_event_0charge_WTS_PID_Pi_domainA", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for p_{T} < 0.15 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // pT < 0.15GeV + histos.add("invMass_event_0charge_WTS_PID_Pi_domainB", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // 0.15GeV < pT < 0.8GeV + histos.add("invMass_event_0charge_WTS_PID_Pi_domainC", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for p_{T} > 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // 0.8GeV < pT // Invariant mass of non 0 charge events - histos.add("invMass_event_non0charge_WTS_PID_Pi_domainA", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for p_{T} < 0.15 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBins_IM, 0.8, 2.5}}); // pT < 0.15GeV - histos.add("invMass_event_non0charge_WTS_PID_Pi_domainB", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBins_IM, 0.8, 2.5}}); // 0.15GeV < pT < 0.8GeV - histos.add("invMass_event_non0charge_WTS_PID_Pi_domainC", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for p_{T} > 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBins_IM, 0.8, 2.5}}); // 0.8GeV < pT + histos.add("invMass_event_non0charge_WTS_PID_Pi_domainA", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for p_{T} < 0.15 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // pT < 0.15GeV + histos.add("invMass_event_non0charge_WTS_PID_Pi_domainB", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // 0.15GeV < pT < 0.8GeV + histos.add("invMass_event_non0charge_WTS_PID_Pi_domainC", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for p_{T} > 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // 0.8GeV < pT // tpc signal histos.add("tpcSignal", "TPC dEdx vs p; p [GeV/c]; dEdx [a.u.]", kTH2F, {{500, 0, 10}, {5000, 0.0, 5000.0}}); @@ -148,10 +148,10 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct histos.add("V0A", "V0A amplitude", kTH1F, {{1000, 0.0, 100}}); // Collin Soper Theta and Phi - histos.add("CS_phi_pair_1", "#phi Distribution; #phi; Entries", kTH1F, {{nBins_Phi, -3.2, 3.2}}); - histos.add("CS_phi_pair_2", "#phi Distribution; #phi; Entries", kTH1F, {{nBins_Phi, -3.2, 3.2}}); - histos.add("CS_costheta_pair_1", "#theta Distribution;cos(#theta); Entries", kTH1F, {{nBins_CosTheta, -1, 1}}); - histos.add("CS_costheta_pair_2", "#theta Distribution;cos(#theta); Entries", kTH1F, {{nBins_CosTheta, -1, 1}}); + histos.add("CS_phi_pair_1", "#phi Distribution; #phi; Entries", kTH1F, {{nBinsPhi, -3.2, 3.2}}); + histos.add("CS_phi_pair_2", "#phi Distribution; #phi; Entries", kTH1F, {{nBinsPhi, -3.2, 3.2}}); + histos.add("CS_costheta_pair_1", "#theta Distribution;cos(#theta); Entries", kTH1F, {{nBinsCosTheta, -1, 1}}); + histos.add("CS_costheta_pair_2", "#theta Distribution;cos(#theta); Entries", kTH1F, {{nBinsCosTheta, -1, 1}}); } // End of init function //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -225,9 +225,9 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct { int gapSide = collision.gapSide(); - float fitCuts[5] = {FV0_cut, FT0A_cut, FT0C_cut, FDDA_cut, FDDC_cut}; - std::vector parameters = {PV_cut, dcaZ_cut, dcaXY_cut, tpcChi2_cut, tpcNClsFindable_cut, itsChi2_cut, eta_cut, pt_cut}; - int truegapSide = sgSelector.trueGap(collision, fitCuts[0], fitCuts[1], fitCuts[2], ZDC_cut); + float fitCuts[5] = {fv0Cut, ft0aCut, ft0cCut, fddaCut, fddcCut}; + std::vector parameters = {pvCut, dcaZcut, dcaXYcut, tpcChi2Cut, tpcNClsFindableCut, itsChi2Cut, etaCut, pTcut}; + int truegapSide = sgSelector.trueGap(collision, fitCuts[0], fitCuts[1], fitCuts[2], zdcCut); histos.fill(HIST("GapSide"), gapSide); histos.fill(HIST("TrueGapSide"), truegapSide); histos.fill(HIST("EventCounts"), 1); @@ -243,7 +243,7 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct histos.fill(HIST("ZDC_A"), collision.energyCommonZNA()); histos.fill(HIST("ZDC_C"), collision.energyCommonZNC()); - if (StrictEventSelection) { + if (strictEventSelection) { if (collision.numContrib() != 4) { return; } @@ -266,7 +266,7 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct if (trackselector(t0, parameters)) { WTS_tracks.push_back(t0); - if (selectionPIDPion(t0, true, nSigmaTPC_cut, nSigmaTOF_cut)) { + if (selectionPIDPion(t0, true, nSigmaTPCcut, nSigmaTOFcut)) { WTS_PID_Pi_tracks.push_back(t0); if (t0.sign() == 1) { Pi_plus_tracks.push_back(t0); From 2b3c3b25e5ee9de9b6eefe7753bcead25dfbb8c1 Mon Sep 17 00:00:00 2001 From: ananthapadmanabhan18 <82643666+ananthapadmanabhan18@users.noreply.github.com> Date: Sat, 1 Feb 2025 19:45:12 +0000 Subject: [PATCH 10/15] MC Analysis --- PWGUD/Tasks/exclusiveRhoTo4Pi.cxx | 522 ++++++++++++++++++++++-------- 1 file changed, 386 insertions(+), 136 deletions(-) diff --git a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx index f5a44f5848e..127c96f625b 100644 --- a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx +++ b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx @@ -23,6 +23,7 @@ #include "Framework/ASoAHelpers.h" #include "PWGUD/DataModel/UDTables.h" #include "PWGUD/Core/SGSelector.h" +#include "PWGUD/Core/UDHelpers.h" #include "PWGUD/Core/SGTrackSelector.h" #include "Common/DataModel/PIDResponse.h" #include @@ -31,6 +32,7 @@ #include "Math/Vector4D.h" #include "Math/Vector3D.h" #include "Math/GenVector/Boost.h" +#include using namespace std; using namespace o2; @@ -41,7 +43,10 @@ using namespace o2::framework::expressions; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct SGSelector sgSelector; - HistogramRegistry histos{"HistoReg", {}, OutputObjHandlingPolicy::AnalysisObject, true, true}; + + HistogramRegistry histosData{"histosData", {}, OutputObjHandlingPolicy::AnalysisObject, true, true}; + HistogramRegistry histosMCgen{"histosMCgen", {}, OutputObjHandlingPolicy::AnalysisObject, true, true}; + HistogramRegistry histosMCreco{"histosMCreco", {}, OutputObjHandlingPolicy::AnalysisObject, true, true}; //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Configurable fv0Cut{"fv0Cut", 50., "FV0A threshold"}; @@ -55,7 +60,7 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct Configurable dcaZcut{"dcaZcut", 3.2, "dcaZ cut"}; Configurable dcaXYcut{"dcaXYcut", 2.4, "dcaXY cut (0 for Pt-function)"}; Configurable tpcChi2Cut{"tpcChi2Cut", 4, "Max tpcChi2NCl"}; - Configurable tpcNClsFindableCut{"tpcNClsFindableCut", 80, "Min tpcNClsFindable"}; + Configurable tpcNClsFindableCut{"tpcNClsFindableCut", 70, "Min tpcNClsFindable"}; Configurable itsChi2Cut{"itsChi2Cut", 36, "Max itsChi2NCl"}; Configurable etaCut{"etaCut", 0.9, "Track Pseudorapidity"}; Configurable pTcut{"pTcut", 0, "Track Pt"}; @@ -63,104 +68,143 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct Configurable nSigmaTPCcut{"nSigmaTPCcut", 3, "TPC cut"}; Configurable nSigmaTOFcut{"nSigmaTOFcut", 3, "TOF cut"}; Configurable strictEventSelection{"strictEventSelection", true, "Event Selection"}; + Configurable ifDataAnalysis{"ifDataAnalysis", false, "Data Analysis"}; + Configurable ifMCAnalysis{"ifMCAnalysis", true, "MC Analysis"}; Configurable nBinsPt{"nBinsPt", 1000, "Number of bins for pT"}; Configurable nBinsInvariantMass{"nBinsInvariantMass", 1000, "Number of bins for Invariant Mass"}; Configurable nBinsRapidity{"nBinsRapidity", 1000, "Number of bins for Rapidity"}; Configurable nBinsPhi{"nBinsPhi", 360, "Number of bins for Phi"}; Configurable nBinsCosTheta{"nBinsCosTheta", 360, "Number of bins for cos Theta"}; + //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Begin of Init Function----------------------------------------------------------------------------------------------------------------------------------------------------- void init(InitContext const&) { - histos.add("GapSide", "Gap Side; Events", kTH1F, {{4, -1.5, 2.5}}); - histos.add("TrueGapSide", "Gap Side; Events", kTH1F, {{4, -1.5, 2.5}}); - histos.add("EventCounts", "Total Events; Events", kTH1F, {{10, 0, 10}}); - - // TPC nSigma - histos.add("tpcNSigmaPi_WOTS", "TPC nSigma Pion without track selection; Events", kTH1F, {{1000, -15, 15}}); - histos.add("tpcNSigmaPi_WTS", "TPC nSigma Pion with track selection; Events", kTH1F, {{1000, -15, 15}}); - histos.add("tpcNSigmaPi_WTS_PID_Pi", "TPC nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{1000, -15, 15}}); - - // TPC nSigma of other particles with selected pion tracks - histos.add("tpcNSigmaPi_WTS_PID_Pi_Ka", "TPC nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histos.add("tpcNSigmaPi_WTS_PID_Pi_Pr", "TPC nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histos.add("tpcNSigmaPi_WTS_PID_Pi_El", "TPC nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histos.add("tpcNSigmaPi_WTS_PID_Pi_Mu", "TPC nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - - // TOF nSigma - histos.add("tofNSigmaPi_WTS", "TOF nSigma Pion with track selection; Events", kTH1F, {{1000, -15, 15}}); - histos.add("tofNSigmaPi_WOTS", "TOF nSigma Pion without track selection; Events", kTH1F, {{1000, -15, 15}}); - histos.add("tofNSigmaPi_WTS_PID_Pi", "TOF nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{1000, -15, 15}}); - - // TOF nSigma of other particles with selected pion tracks - histos.add("tofNSigmaPi_WTS_PID_Pi_Ka", "TOF nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histos.add("tofNSigmaPi_WTS_PID_Pi_Pr", "TOF nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histos.add("tofNSigmaPi_WTS_PID_Pi_El", "TOF nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histos.add("tofNSigmaPi_WTS_PID_Pi_Mu", "TOF nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - - // Track Transverse Momentum - histos.add("pT_track_WOTS", "pT without track selection; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); - histos.add("pT_track_WTS", "pT with track selection; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); - histos.add("pT_track_WTS_PID_Pi", "pT with track selection and PID selection of Pi; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); - - // Zero charge Event Transverse Momentum - histos.add("pT_event_0charge_WTS_PID_Pi", "Event pT in 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Counts", kTH1F, {{nBinsPt, 0, 2}}); - - // Non Zero charge Event Transverse Momentum - histos.add("pT_event_non0charge_WTS_PID_Pi", "Event pT in Non 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Counts", kTH1F, {{nBinsPt, 0, 2}}); - - // Rapidity of 0 charge Events - histos.add("rapidity_event_0charge_WTS_PID_Pi_domainA", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} < 0.15 GeV/c; y; Counts", kTH1F, {{1000, -2.5, 2.5}}); - histos.add("rapidity_event_0charge_WTS_PID_Pi_domainB", "Rapidity of Events With Track Selection and PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; y; Counts", kTH1F, {{1000, -2.5, 2.5}}); - histos.add("rapidity_event_0charge_WTS_PID_Pi_domainC", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} > 0.80 GeV/c; y; Counts", kTH1F, {{1000, -2.5, 2.5}}); - - // Rapidity of non 0 charge Events - histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainA", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} < 0.15 GeV/c; y; Counts", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); - histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainB", "Rapidity of Events With Track Selection and PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c$; y; Counts", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); - histos.add("rapidity_event_non0charge_WTS_PID_Pi_domainC", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} > 0.80 GeV/c; y; Counts", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); - - // Invariant Mass of 0 charge events - histos.add("invMass_event_0charge_WTS_PID_Pi_domainA", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for p_{T} < 0.15 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // pT < 0.15GeV - histos.add("invMass_event_0charge_WTS_PID_Pi_domainB", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // 0.15GeV < pT < 0.8GeV - histos.add("invMass_event_0charge_WTS_PID_Pi_domainC", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for p_{T} > 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // 0.8GeV < pT - - // Invariant mass of non 0 charge events - histos.add("invMass_event_non0charge_WTS_PID_Pi_domainA", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for p_{T} < 0.15 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // pT < 0.15GeV - histos.add("invMass_event_non0charge_WTS_PID_Pi_domainB", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // 0.15GeV < pT < 0.8GeV - histos.add("invMass_event_non0charge_WTS_PID_Pi_domainC", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for p_{T} > 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // 0.8GeV < pT - - // tpc signal - histos.add("tpcSignal", "TPC dEdx vs p; p [GeV/c]; dEdx [a.u.]", kTH2F, {{500, 0, 10}, {5000, 0.0, 5000.0}}); - histos.add("tpcSignal_Pi", "TPC dEdx vs p for pions; p [GeV/c]; dEdx [a.u.]", kTH2F, {{500, 0, 10}, {5000, 0.0, 5000.0}}); - - // tof beta - histos.add("tofBeta", "TOF beta vs p; p [GeV/c]; #beta", kTH2F, {{500, 0, 10}, {500, 0.0, 1.0}}); - histos.add("tofBeta_Pi", "TOF beta vs p for pions; p [GeV/c]; #beta", kTH2F, {{500, 0, 10}, {500, 0.0, 1.0}}); - - // Other signals - histos.add("FT0A", "T0A amplitude", kTH1F, {{200, 0.0, 500.0}}); - histos.add("FT0C", "T0C amplitude", kTH1F, {{200, 0.0, 500.0}}); - histos.add("ZDC_A", "ZDC amplitude", kTH1F, {{1000, 0.0, 15}}); - histos.add("ZDC_C", "ZDC amplitude", kTH1F, {{1000, 0.0, 15}}); - histos.add("V0A", "V0A amplitude", kTH1F, {{1000, 0.0, 100}}); - - // Collin Soper Theta and Phi - histos.add("CS_phi_pair_1", "#phi Distribution; #phi; Entries", kTH1F, {{nBinsPhi, -3.2, 3.2}}); - histos.add("CS_phi_pair_2", "#phi Distribution; #phi; Entries", kTH1F, {{nBinsPhi, -3.2, 3.2}}); - histos.add("CS_costheta_pair_1", "#theta Distribution;cos(#theta); Entries", kTH1F, {{nBinsCosTheta, -1, 1}}); - histos.add("CS_costheta_pair_2", "#theta Distribution;cos(#theta); Entries", kTH1F, {{nBinsCosTheta, -1, 1}}); + if (ifDataAnalysis) { + histosData.add("GapSide", "Gap Side; Events", kTH1F, {{4, -1.5, 2.5}}); + histosData.add("TrueGapSide", "Gap Side; Events", kTH1F, {{4, -1.5, 2.5}}); + histosData.add("EventCounts", "Total Events; Events", kTH1F, {{10, 0, 10}}); + + // TPC nSigma + histosData.add("tpcNSigmaPi_WOTS", "TPC nSigma Pion without track selection; Events", kTH1F, {{1000, -15, 15}}); + histosData.add("tpcNSigmaPi_WTS", "TPC nSigma Pion with track selection; Events", kTH1F, {{1000, -15, 15}}); + histosData.add("tpcNSigmaPi_WTS_PID_Pi", "TPC nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{1000, -15, 15}}); + + // TPC nSigma of other particles with selected pion tracks + histosData.add("tpcNSigmaPi_WTS_PID_Pi_Ka", "TPC nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tpcNSigmaPi_WTS_PID_Pi_Pr", "TPC nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tpcNSigmaPi_WTS_PID_Pi_El", "TPC nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tpcNSigmaPi_WTS_PID_Pi_Mu", "TPC nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + + // TOF nSigma + histosData.add("tofNSigmaPi_WTS", "TOF nSigma Pion with track selection; Events", kTH1F, {{1000, -15, 15}}); + histosData.add("tofNSigmaPi_WOTS", "TOF nSigma Pion without track selection; Events", kTH1F, {{1000, -15, 15}}); + histosData.add("tofNSigmaPi_WTS_PID_Pi", "TOF nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{1000, -15, 15}}); + + // TOF nSigma of other particles with selected pion tracks + histosData.add("tofNSigmaPi_WTS_PID_Pi_Ka", "TOF nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tofNSigmaPi_WTS_PID_Pi_Pr", "TOF nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tofNSigmaPi_WTS_PID_Pi_El", "TOF nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tofNSigmaPi_WTS_PID_Pi_Mu", "TOF nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + + // Track Transverse Momentum + histosData.add("pT_track_WOTS", "pT without track selection; pT [GeV/c]; Counts", kTH1F, {{nBinsPt, 0, 2}}); + histosData.add("pT_track_WTS", "pT with track selection; pT [GeV/c]; Counts", kTH1F, {{nBinsPt, 0, 2}}); + histosData.add("pT_track_WTS_PID_Pi", "pT with track selection and PID selection of Pi; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); + + // Zero charge Event Transverse Momentum + histosData.add("pT_event_0charge_WTS_PID_Pi", "Event pT in 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); + + // Non Zero charge Event Transverse Momentum + histosData.add("pT_event_non0charge_WTS_PID_Pi", "Event pT in Non 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); + + // Rapidity of 0 charge Events + histosData.add("rapidity_event_0charge_WTS_PID_Pi_domainA", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} < 0.15 GeV/c; y; Events", kTH1F, {{1000, -2.5, 2.5}}); + histosData.add("rapidity_event_0charge_WTS_PID_Pi_domainB", "Rapidity of Events With Track Selection and PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; y; Events", kTH1F, {{1000, -2.5, 2.5}}); + histosData.add("rapidity_event_0charge_WTS_PID_Pi_domainC", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} > 0.80 GeV/c; y; Events", kTH1F, {{1000, -2.5, 2.5}}); + + // Rapidity of non 0 charge Events + histosData.add("rapidity_event_non0charge_WTS_PID_Pi_domainA", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} < 0.15 GeV/c; y; Events", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); + histosData.add("rapidity_event_non0charge_WTS_PID_Pi_domainB", "Rapidity of Events With Track Selection and PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c$; y; Events", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); + histosData.add("rapidity_event_non0charge_WTS_PID_Pi_domainC", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} > 0.80 GeV/c; y; Events", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); + + // Invariant Mass of 0 charge events + histosData.add("invMass_event_0charge_WTS_PID_Pi_domainA", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for p_{T} < 0.15 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // pT < 0.15GeV + histosData.add("invMass_event_0charge_WTS_PID_Pi_domainB", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // 0.15GeV < pT < 0.8GeV + histosData.add("invMass_event_0charge_WTS_PID_Pi_domainC", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for p_{T} > 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // 0.8GeV < pT + + // Invariant mass of non 0 charge events + histosData.add("invMass_event_non0charge_WTS_PID_Pi_domainA", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for p_{T} < 0.15 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // pT < 0.15GeV + histosData.add("invMass_event_non0charge_WTS_PID_Pi_domainB", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // 0.15GeV < pT < 0.8GeV + histosData.add("invMass_event_non0charge_WTS_PID_Pi_domainC", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for p_{T} > 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // 0.8GeV < pT + + // tpc signal + histosData.add("tpcSignal", "TPC dEdx vs p; p [GeV/c]; dEdx [a.u.]", kTH2F, {{500, 0, 10}, {5000, 0.0, 5000.0}}); + histosData.add("tpcSignal_Pi", "TPC dEdx vs p for pions; p [GeV/c]; dEdx [a.u.]", kTH2F, {{500, 0, 10}, {5000, 0.0, 5000.0}}); + + // tof beta + histosData.add("tofBeta", "TOF beta vs p; p [GeV/c]; #beta", kTH2F, {{500, 0, 10}, {500, 0.0, 1.0}}); + histosData.add("tofBeta_Pi", "TOF beta vs p for pions; p [GeV/c]; #beta", kTH2F, {{500, 0, 10}, {500, 0.0, 1.0}}); + + // Other signals + histosData.add("FT0A", "T0A amplitude", kTH1F, {{200, 0.0, 500.0}}); + histosData.add("FT0C", "T0C amplitude", kTH1F, {{200, 0.0, 500.0}}); + histosData.add("ZDC_A", "ZDC amplitude", kTH1F, {{1000, 0.0, 15}}); + histosData.add("ZDC_C", "ZDC amplitude", kTH1F, {{1000, 0.0, 15}}); + histosData.add("V0A", "V0A amplitude", kTH1F, {{1000, 0.0, 100}}); + + // Collin Soper Theta and Phi + histosData.add("CS_phi_pair_1", "#phi Distribution; #phi; Events", kTH1F, {{nBinsPhi, -3.2, 3.2}}); + histosData.add("CS_phi_pair_2", "#phi Distribution; #phi; Events", kTH1F, {{nBinsPhi, -3.2, 3.2}}); + histosData.add("CS_costheta_pair_1", "#theta Distribution;cos(#theta); Counts", kTH1F, {{nBinsCosTheta, -1, 1}}); + histosData.add("CS_costheta_pair_2", "#theta Distribution;cos(#theta); Counts", kTH1F, {{nBinsCosTheta, -1, 1}}); + } - } // End of init function - //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + // MC Gen Stuff + if (ifMCAnalysis) { + + // Track Stuff + histosMCgen.add("MCgen_particle_pT", "Generated pT; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 10}}); + histosMCgen.add("MCgen_particle_rapidity", "Generated Rapidity; y; Events", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); + + // Generated Transverse Momentum, Rapidty and Invariant Mass + histosMCgen.add("MCgen_4pion_pT", "Generated pT; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); + histosMCgen.add("MCgen_4pion_rapidity", "Generated Rapidity; y; Events", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); + histosMCgen.add("MCgen_4pion_invmass", "Invariant Mass of 4-Pions; m(4-pion); Events", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); + + // Collin Soper Theta and Phi + histosMCgen.add("MCgen_CS_phi_pair_1", "#phi Distribution; #phi; Events", kTH1F, {{nBinsPhi, -3.2, 3.2}}); + histosMCgen.add("MCgen_CS_phi_pair_2", "#phi Distribution; #phi; Events", kTH1F, {{nBinsPhi, -3.2, 3.2}}); + histosMCgen.add("MCgen_CS_costheta_pair_1", "#theta Distribution;cos(#theta); Events", kTH1F, {{nBinsCosTheta, -1, 1}}); + histosMCgen.add("MCgen_CS_costheta_pair_2", "#theta Distribution;cos(#theta); Events", kTH1F, {{nBinsCosTheta, -1, 1}}); + + // MC Reco Stuff + + // Track Stuff + histosMCreco.add("MCreco_particle_pT", "Generated pT; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 10}}); + histosMCreco.add("MCreco_particle_rapidity", "Generated Rapidity; y; Events", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); + + // For 0 charge events + histosMCreco.add("MCreco_0charge_4pion_pT", "Generated pT; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); + histosMCreco.add("MCreco_0charge_4pion_rapidity", "Generated Rapidity; y; Events", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); + histosMCreco.add("MCreco_0charge_4pion_invmass", "Invariant Mass of 4-Pions; m(4-pion); Events", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); + + // For non 0 charge events + histosMCreco.add("MCreco_non0charge_4pion_pT", "Generated pT; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); + histosMCreco.add("MCreco_non0charge_4pion_rapidity", "Generated Rapidity; y; Events", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); + histosMCreco.add("MCreco_non0charge_4pion_invmass", "Invariant Mass of 4-Pions; m(4-pion); Events", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); + + // Collin Soper Theta and Phi + histosMCreco.add("MCreco_CS_phi_pair_1", "#phi Distribution; #phi; Events", kTH1F, {{nBinsPhi, -3.2, 3.2}}); + histosMCreco.add("MCreco_CS_phi_pair_2", "#phi Distribution; #phi; Events", kTH1F, {{nBinsPhi, -3.2, 3.2}}); + histosMCreco.add("MCreco_CS_costheta_pair_1", "#theta Distribution;cos(#theta); Events", kTH1F, {{nBinsCosTheta, -1, 1}}); + histosMCreco.add("MCreco_CS_costheta_pair_2", "#theta Distribution;cos(#theta); Events", kTH1F, {{nBinsCosTheta, -1, 1}}); + } - //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - // using udtracks = soa::Join; - using UDtracksfull = soa::Join; - using UDCollisionsFull = soa::Join; // - using UDCollisionFull = UDCollisionsFull::iterator; + } // End of init function //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Calculate the Collins-Soper Frame---------------------------------------------------------------------------------------------------------------------------- @@ -220,28 +264,34 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct return phi; } // End of phiCollinsSoperFrame function------------------------------------------------------------------------------------------------------------------------ + //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + using UDtracksfull = soa::Join; + using UDCollisionsFull = soa::Join; // + using UDCollisionFull = UDCollisionsFull::iterator; + //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + // Begin of Process function-------------------------------------------------------------------------------------------------------------------------------------------------- - void process(UDCollisionFull const& collision, UDtracksfull const& tracks) + void processData(UDCollisionFull const& collision, UDtracksfull const& tracks) { int gapSide = collision.gapSide(); float fitCuts[5] = {fv0Cut, ft0aCut, ft0cCut, fddaCut, fddcCut}; std::vector parameters = {pvCut, dcaZcut, dcaXYcut, tpcChi2Cut, tpcNClsFindableCut, itsChi2Cut, etaCut, pTcut}; int truegapSide = sgSelector.trueGap(collision, fitCuts[0], fitCuts[1], fitCuts[2], zdcCut); - histos.fill(HIST("GapSide"), gapSide); - histos.fill(HIST("TrueGapSide"), truegapSide); - histos.fill(HIST("EventCounts"), 1); + histosData.fill(HIST("GapSide"), gapSide); + histosData.fill(HIST("TrueGapSide"), truegapSide); + histosData.fill(HIST("EventCounts"), 1); gapSide = truegapSide; if ((gapSide != 2)) { return; } - histos.fill(HIST("V0A"), collision.totalFV0AmplitudeA()); - histos.fill(HIST("FT0A"), collision.totalFT0AmplitudeA()); - histos.fill(HIST("FT0C"), collision.totalFT0AmplitudeC()); - histos.fill(HIST("ZDC_A"), collision.energyCommonZNA()); - histos.fill(HIST("ZDC_C"), collision.energyCommonZNC()); + histosData.fill(HIST("V0A"), collision.totalFV0AmplitudeA()); + histosData.fill(HIST("FT0A"), collision.totalFT0AmplitudeA()); + histosData.fill(HIST("FT0C"), collision.totalFT0AmplitudeC()); + histosData.fill(HIST("ZDC_A"), collision.energyCommonZNA()); + histosData.fill(HIST("ZDC_C"), collision.energyCommonZNC()); if (strictEventSelection) { if (collision.numContrib() != 4) { @@ -287,38 +337,38 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct int numPionMinusTRacks = static_cast(Pi_minus_tracks.size()); for (int i = 0; i < numTracksWOTS; i++) { - histos.fill(HIST("tpcNSigmaPi_WOTS"), WOTS_tracks[i].tpcNSigmaPi()); - histos.fill(HIST("tofNSigmaPi_WOTS"), WOTS_tracks[i].tofNSigmaPi()); - histos.fill(HIST("pT_track_WOTS"), std::sqrt(WOTS_tracks[i].px() * WOTS_tracks[i].px() + WOTS_tracks[i].py() * WOTS_tracks[i].py())); + histosData.fill(HIST("tpcNSigmaPi_WOTS"), WOTS_tracks[i].tpcNSigmaPi()); + histosData.fill(HIST("tofNSigmaPi_WOTS"), WOTS_tracks[i].tofNSigmaPi()); + histosData.fill(HIST("pT_track_WOTS"), std::sqrt(WOTS_tracks[i].px() * WOTS_tracks[i].px() + WOTS_tracks[i].py() * WOTS_tracks[i].py())); } // End of loop over tracks without selection for (int i = 0; i < numTracksWTS; i++) { - histos.fill(HIST("tpcSignal"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].tpcSignal()); - histos.fill(HIST("tofBeta"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].beta()); - histos.fill(HIST("tpcNSigmaPi_WTS"), WTS_tracks[i].tpcNSigmaPi()); - histos.fill(HIST("tofNSigmaPi_WTS"), WTS_tracks[i].tofNSigmaPi()); - histos.fill(HIST("pT_track_WTS"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py())); + histosData.fill(HIST("tpcSignal"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].tpcSignal()); + histosData.fill(HIST("tofBeta"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].beta()); + histosData.fill(HIST("tpcNSigmaPi_WTS"), WTS_tracks[i].tpcNSigmaPi()); + histosData.fill(HIST("tofNSigmaPi_WTS"), WTS_tracks[i].tofNSigmaPi()); + histosData.fill(HIST("pT_track_WTS"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py())); } // End of loop over tracks with selection only for (int i = 0; i < numTracksWTSandPIDpi; i++) { - histos.fill(HIST("tpcSignal_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].tpcSignal()); - histos.fill(HIST("tofBeta_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].beta()); + histosData.fill(HIST("tpcSignal_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].tpcSignal()); + histosData.fill(HIST("tofBeta_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].beta()); - histos.fill(HIST("tpcNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaPi()); - histos.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_Ka"), WTS_PID_Pi_tracks[i].tpcNSigmaKa()); - histos.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_Pr"), WTS_PID_Pi_tracks[i].tpcNSigmaPr()); - histos.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_El"), WTS_PID_Pi_tracks[i].tpcNSigmaEl()); - histos.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_Mu"), WTS_PID_Pi_tracks[i].tpcNSigmaMu()); + histosData.fill(HIST("tpcNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaPi()); + histosData.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_Ka"), WTS_PID_Pi_tracks[i].tpcNSigmaKa()); + histosData.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_Pr"), WTS_PID_Pi_tracks[i].tpcNSigmaPr()); + histosData.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_El"), WTS_PID_Pi_tracks[i].tpcNSigmaEl()); + histosData.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_Mu"), WTS_PID_Pi_tracks[i].tpcNSigmaMu()); - histos.fill(HIST("tofNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaPi()); - histos.fill(HIST("tofNSigmaPi_WTS_PID_Pi_Ka"), WTS_PID_Pi_tracks[i].tofNSigmaKa()); - histos.fill(HIST("tofNSigmaPi_WTS_PID_Pi_Pr"), WTS_PID_Pi_tracks[i].tofNSigmaPr()); - histos.fill(HIST("tofNSigmaPi_WTS_PID_Pi_El"), WTS_PID_Pi_tracks[i].tofNSigmaEl()); - histos.fill(HIST("tofNSigmaPi_WTS_PID_Pi_Mu"), WTS_PID_Pi_tracks[i].tofNSigmaMu()); + histosData.fill(HIST("tofNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaPi()); + histosData.fill(HIST("tofNSigmaPi_WTS_PID_Pi_Ka"), WTS_PID_Pi_tracks[i].tofNSigmaKa()); + histosData.fill(HIST("tofNSigmaPi_WTS_PID_Pi_Pr"), WTS_PID_Pi_tracks[i].tofNSigmaPr()); + histosData.fill(HIST("tofNSigmaPi_WTS_PID_Pi_El"), WTS_PID_Pi_tracks[i].tofNSigmaEl()); + histosData.fill(HIST("tofNSigmaPi_WTS_PID_Pi_Mu"), WTS_PID_Pi_tracks[i].tofNSigmaMu()); - histos.fill(HIST("pT_track_WTS_PID_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosData.fill(HIST("pT_track_WTS_PID_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); } // End of loop over tracks with selection and PID selection of Pions if (numTracksWTSandPIDpi != 4) { @@ -350,28 +400,28 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct k24 = k2 + k4; if (std::fabs(p1234.Rapidity()) < 0.5) { - histos.fill(HIST("pT_event_0charge_WTS_PID_Pi"), p1234.Pt()); + histosData.fill(HIST("pT_event_0charge_WTS_PID_Pi"), p1234.Pt()); if (p1234.Pt() < 0.15) { - histos.fill(HIST("rapidity_event_0charge_WTS_PID_Pi_domainA"), p1234.Rapidity()); - histos.fill(HIST("invMass_event_0charge_WTS_PID_Pi_domainA"), p1234.M()); + histosData.fill(HIST("rapidity_event_0charge_WTS_PID_Pi_domainA"), p1234.Rapidity()); + histosData.fill(HIST("invMass_event_0charge_WTS_PID_Pi_domainA"), p1234.M()); auto phiPair1 = phiCollinsSoperFrame(k13, k24, k1234); auto phiPair2 = phiCollinsSoperFrame(k14, k23, k1234); auto cosThetaPair1 = cosThetaCollinsSoperFrame(k13, k24, k1234); auto cosThetaPair2 = cosThetaCollinsSoperFrame(k14, k23, k1234); - histos.fill(HIST("CS_phi_pair_1"), phiPair1); - histos.fill(HIST("CS_phi_pair_2"), phiPair2); - histos.fill(HIST("CS_costheta_pair_1"), cosThetaPair1); - histos.fill(HIST("CS_costheta_pair_2"), cosThetaPair2); + histosData.fill(HIST("CS_phi_pair_1"), phiPair1); + histosData.fill(HIST("CS_phi_pair_2"), phiPair2); + histosData.fill(HIST("CS_costheta_pair_1"), cosThetaPair1); + histosData.fill(HIST("CS_costheta_pair_2"), cosThetaPair2); } if (p1234.Pt() > 0.15 && p1234.Pt() < 0.80) { - histos.fill(HIST("rapidity_event_0charge_WTS_PID_Pi_domainB"), p1234.Rapidity()); - histos.fill(HIST("invMass_event_0charge_WTS_PID_Pi_domainB"), p1234.M()); + histosData.fill(HIST("rapidity_event_0charge_WTS_PID_Pi_domainB"), p1234.Rapidity()); + histosData.fill(HIST("invMass_event_0charge_WTS_PID_Pi_domainB"), p1234.M()); } if (p1234.Pt() > 0.80) { - histos.fill(HIST("rapidity_event_0charge_WTS_PID_Pi_domainC"), p1234.Rapidity()); - histos.fill(HIST("invMass_event_0charge_WTS_PID_Pi_domainC"), p1234.M()); + histosData.fill(HIST("rapidity_event_0charge_WTS_PID_Pi_domainC"), p1234.Rapidity()); + histosData.fill(HIST("invMass_event_0charge_WTS_PID_Pi_domainC"), p1234.M()); } } // End of Rapidity range selection @@ -389,28 +439,228 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct p1234 = p1 + p2 + p3 + p4; if (std::fabs(p1234.Rapidity()) < 0.5) { - histos.fill(HIST("pT_event_non0charge_WTS_PID_Pi"), p1234.Pt()); + histosData.fill(HIST("pT_event_non0charge_WTS_PID_Pi"), p1234.Pt()); if (p1234.Pt() < 0.15) { - histos.fill(HIST("rapidity_event_non0charge_WTS_PID_Pi_domainA"), p1234.Rapidity()); - histos.fill(HIST("invMass_event_non0charge_WTS_PID_Pi_domainA"), p1234.M()); + histosData.fill(HIST("rapidity_event_non0charge_WTS_PID_Pi_domainA"), p1234.Rapidity()); + histosData.fill(HIST("invMass_event_non0charge_WTS_PID_Pi_domainA"), p1234.M()); } if (p1234.Pt() > 0.15 && p1234.Pt() < 0.80) { - histos.fill(HIST("rapidity_event_non0charge_WTS_PID_Pi_domainB"), p1234.Rapidity()); - histos.fill(HIST("invMass_event_non0charge_WTS_PID_Pi_domainB"), p1234.M()); + histosData.fill(HIST("rapidity_event_non0charge_WTS_PID_Pi_domainB"), p1234.Rapidity()); + histosData.fill(HIST("invMass_event_non0charge_WTS_PID_Pi_domainB"), p1234.M()); } if (p1234.Pt() > 0.80) { - histos.fill(HIST("rapidity_event_non0charge_WTS_PID_Pi_domainC"), p1234.Rapidity()); - histos.fill(HIST("invMass_event_non0charge_WTS_PID_Pi_domainC"), p1234.M()); + histosData.fill(HIST("rapidity_event_non0charge_WTS_PID_Pi_domainC"), p1234.Rapidity()); + histosData.fill(HIST("invMass_event_non0charge_WTS_PID_Pi_domainC"), p1234.M()); } } // End of Rapidity range selection } // End of Analysis for non 0 charge events - } // End of process function + } // End of 4 Pion Analysis Process function for Data + PROCESS_SWITCH(exclusiveRhoTo4Pi, processData, "The Process for 4 Pion Analysis from data", ifDataAnalysis); //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -}; // End of Struct UPCAnalysis + // Begin of MC Generation function----------------------------------------------------------------------------------------------------------------------------------------------- + void processMCgen(aod::UDMcCollisions::iterator const& mccollisions, aod::UDMcParticles const& mcParts) + { + std::vector piPlusvectors; + std::vector piMinusvectors; + TLorentzVector tempVector, p1, p2, p3, p4; + TLorentzVector p1234; + + for (const auto& particle : mcParts) { + tempVector.SetXYZM(particle.px(), particle.py(), particle.pz(), o2::constants::physics::MassPionCharged); + + if (!particle.has_mothers()) { + continue; + } + + for (const auto& mother : particle.mothers_as()) { + if (mother.pdgCode() == 30113) { + if (particle.pdgCode() == 211) { + piPlusvectors.push_back(tempVector); + histosMCgen.fill(HIST("MCgen_particle_pT"), tempVector.Pt()); + histosMCgen.fill(HIST("MCgen_particle_rapidity"), tempVector.Rapidity()); + } + if (particle.pdgCode() == -211) { + piMinusvectors.push_back(tempVector); + histosMCgen.fill(HIST("MCgen_particle_pT"), tempVector.Pt()); + histosMCgen.fill(HIST("MCgen_particle_rapidity"), tempVector.Rapidity()); + } + } // End of Mother ID 30113 rho prime + } // End of loop over mothers + } // End of loop over MC particles + + if (piPlusvectors.size() != 2 || piMinusvectors.size() != 2) { + return; + } + + p1234 = piPlusvectors[0] + piPlusvectors[1] + piMinusvectors[0] + piMinusvectors[1]; + histosMCgen.fill(HIST("MCgen_4pion_pT"), p1234.Pt()); + histosMCgen.fill(HIST("MCgen_4pion_rapidity"), p1234.Rapidity()); + histosMCgen.fill(HIST("MCgen_4pion_invmass"), p1234.M()); + + ROOT::Math::PtEtaPhiMVector k1, k2, k3, k4, k1234, k13, k14, k23, k24; + + k1.SetCoordinates(piPlusvectors[0].Pt(), piPlusvectors[0].Eta(), piPlusvectors[0].Phi(), o2::constants::physics::MassPionCharged); + k2.SetCoordinates(piPlusvectors[1].Pt(), piPlusvectors[1].Eta(), piPlusvectors[1].Phi(), o2::constants::physics::MassPionCharged); + k3.SetCoordinates(piMinusvectors[0].Pt(), piMinusvectors[0].Eta(), piMinusvectors[0].Phi(), o2::constants::physics::MassPionCharged); + k4.SetCoordinates(piMinusvectors[1].Pt(), piMinusvectors[1].Eta(), piMinusvectors[1].Phi(), o2::constants::physics::MassPionCharged); + + k1234 = k1 + k2 + k3 + k4; + + k13 = k1 + k3; + k14 = k1 + k4; + k23 = k2 + k3; + k24 = k2 + k4; + + auto phiPair1 = phiCollinsSoperFrame(k13, k24, k1234); + auto phiPair2 = phiCollinsSoperFrame(k14, k23, k1234); + auto cosThetaPair1 = cosThetaCollinsSoperFrame(k13, k24, k1234); + auto cosThetaPair2 = cosThetaCollinsSoperFrame(k14, k23, k1234); + + histosMCgen.fill(HIST("MCgen_CS_phi_pair_1"), phiPair1); + histosMCgen.fill(HIST("MCgen_CS_phi_pair_2"), phiPair2); + histosMCgen.fill(HIST("MCgen_CS_costheta_pair_1"), cosThetaPair1); + histosMCgen.fill(HIST("MCgen_CS_costheta_pair_2"), cosThetaPair2); + + } // End of 4 Pion MC Generation Process function + PROCESS_SWITCH(exclusiveRhoTo4Pi, processMCgen, "The Process for 4 Pion Analysis from MC Generation", ifMCAnalysis); + + using CollisionStuff = soa::Join; // + using CollisionTotal = CollisionStuff::iterator; + using TrackStuff = soa::Join; + + void processMCrec(CollisionTotal const& collision, TrackStuff const& track) + { + + if (!collision.has_udMcCollision()) { + return; + } + + int gapSide = collision.gapSide(); + float fitCuts[5] = {fv0Cut, ft0aCut, ft0cCut, fddaCut, fddcCut}; + std::vector parameters = {pvCut, dcaZcut, dcaXYcut, tpcChi2Cut, tpcNClsFindableCut, itsChi2Cut, etaCut, pTcut}; + int truegapSide = sgSelector.trueGap(collision, fitCuts[0], fitCuts[1], fitCuts[2], zdcCut); + // histosMCreco.fill(HIST("MCreco_GapSide"), gapSide); + // histosMCreco.fill(HIST("MCreco_TrueGapSide"), truegapSide); + // histosMCreco.fill(HIST("MCreco_EventCounts"), 1); + gapSide = truegapSide; + + if ((gapSide != 2)) { + return; + } + + std::vector WOTS_tracks; + std::vector WTS_tracks; + std::vector WTS_PID_Pi_tracks; + std::vector Pi_plus_tracks; + std::vector Pi_minus_tracks; + + for (const auto& t0 : track) { + + WOTS_tracks.push_back(t0); + + if (!t0.has_udMcParticle()) { + continue; + } + if (trackselector(t0, parameters)) { + WTS_tracks.push_back(t0); + if (selectionPIDPion(t0, true, nSigmaTPCcut, nSigmaTOFcut)) { + WTS_PID_Pi_tracks.push_back(t0); + if (t0.sign() == 1) { + Pi_plus_tracks.push_back(t0); + } + if (t0.sign() == -1) { + Pi_minus_tracks.push_back(t0); + } + } // End of Selection PID Pion + } // End of track selections + } // End of loop over tracks + + int numTracksWOTS = static_cast(WOTS_tracks.size()); + int numTracksWTS = static_cast(WTS_tracks.size()); + int numTracksWTSandPIDpi = static_cast(WTS_PID_Pi_tracks.size()); + int numPiPlusTracks = static_cast(Pi_plus_tracks.size()); + int numPionMinusTRacks = static_cast(Pi_minus_tracks.size()); + + if (numTracksWTSandPIDpi != 4) { + return; + } + + // Selecting Events with net charge = 0 + + if (numPionMinusTRacks == 2 && numPiPlusTracks == 2) { + + TLorentzVector p1, p2, p3, p4, p1234; + ROOT::Math::PtEtaPhiMVector k1, k2, k3, k4, k1234, k13, k14, k23, k24; + + p1.SetXYZM(Pi_plus_tracks[0].px(), Pi_plus_tracks[0].py(), Pi_plus_tracks[0].pz(), o2::constants::physics::MassPionCharged); + p2.SetXYZM(Pi_plus_tracks[1].px(), Pi_plus_tracks[1].py(), Pi_plus_tracks[1].pz(), o2::constants::physics::MassPionCharged); + p3.SetXYZM(Pi_minus_tracks[0].px(), Pi_minus_tracks[0].py(), Pi_minus_tracks[0].pz(), o2::constants::physics::MassPionCharged); + p4.SetXYZM(Pi_minus_tracks[1].px(), Pi_minus_tracks[1].py(), Pi_minus_tracks[1].pz(), o2::constants::physics::MassPionCharged); + + histosMCreco.fill(HIST("MCreco_particle_pT"), p1.Pt()); + histosMCreco.fill(HIST("MCreco_particle_pT"), p2.Pt()); + histosMCreco.fill(HIST("MCreco_particle_pT"), p3.Pt()); + histosMCreco.fill(HIST("MCreco_particle_pT"), p4.Pt()); + + k1.SetCoordinates(p1.Pt(), p1.Eta(), p1.Phi(), o2::constants::physics::MassPionCharged); + k2.SetCoordinates(p2.Pt(), p2.Eta(), p2.Phi(), o2::constants::physics::MassPionCharged); + k3.SetCoordinates(p3.Pt(), p3.Eta(), p3.Phi(), o2::constants::physics::MassPionCharged); + k4.SetCoordinates(p4.Pt(), p4.Eta(), p4.Phi(), o2::constants::physics::MassPionCharged); + + p1234 = p1 + p2 + p3 + p4; + k1234 = k1 + k2 + k3 + k4; + + k13 = k1 + k3; + k14 = k1 + k4; + k23 = k2 + k3; + k24 = k2 + k4; + + histosMCreco.fill(HIST("MCreco_0charge_4pion_pT"), p1234.Pt()); + histosMCreco.fill(HIST("MCreco_0charge_4pion_rapidity"), p1234.Rapidity()); + histosMCreco.fill(HIST("MCreco_0charge_4pion_invmass"), p1234.M()); + + auto phiPair1 = phiCollinsSoperFrame(k13, k24, k1234); + auto phiPair2 = phiCollinsSoperFrame(k14, k23, k1234); + auto cosThetaPair1 = cosThetaCollinsSoperFrame(k13, k24, k1234); + auto cosThetaPair2 = cosThetaCollinsSoperFrame(k14, k23, k1234); + + histosMCreco.fill(HIST("MCreco_CS_phi_pair_1"), phiPair1); + histosMCreco.fill(HIST("MCreco_CS_phi_pair_2"), phiPair2); + histosMCreco.fill(HIST("MCreco_CS_costheta_pair_1"), cosThetaPair1); + histosMCreco.fill(HIST("MCreco_CS_costheta_pair_2"), cosThetaPair2); + + } // End of Analysis for 0 charge events + + // Selecting Events with net charge != 0 for estimation of background + if (numPionMinusTRacks != 2 || numPiPlusTracks != 2) { + + TLorentzVector p1, p2, p3, p4, p1234; + p1.SetXYZM(WTS_PID_Pi_tracks[0].px(), WTS_PID_Pi_tracks[0].py(), WTS_PID_Pi_tracks[0].pz(), o2::constants::physics::MassPionCharged); + p2.SetXYZM(WTS_PID_Pi_tracks[1].px(), WTS_PID_Pi_tracks[1].py(), WTS_PID_Pi_tracks[1].pz(), o2::constants::physics::MassPionCharged); + p3.SetXYZM(WTS_PID_Pi_tracks[2].px(), WTS_PID_Pi_tracks[2].py(), WTS_PID_Pi_tracks[2].pz(), o2::constants::physics::MassPionCharged); + p4.SetXYZM(WTS_PID_Pi_tracks[3].px(), WTS_PID_Pi_tracks[3].py(), WTS_PID_Pi_tracks[3].pz(), o2::constants::physics::MassPionCharged); + + p1234 = p1 + p2 + p3 + p4; + + histosMCreco.fill(HIST("MCreco_particle_pT"), p1.Pt()); + histosMCreco.fill(HIST("MCreco_particle_pT"), p2.Pt()); + histosMCreco.fill(HIST("MCreco_particle_pT"), p3.Pt()); + histosMCreco.fill(HIST("MCreco_particle_pT"), p4.Pt()); + + histosMCreco.fill(HIST("MCreco_non0charge_4pion_pT"), p1234.Pt()); + histosMCreco.fill(HIST("MCreco_non0charge_4pion_rapidity"), p1234.Rapidity()); + histosMCreco.fill(HIST("MCreco_non0charge_4pion_invmass"), p1234.M()); + + } // End of Analysis for non 0 charge events + + } // End of 4 Pion Analysis Process function for MC Reconstruction + PROCESS_SWITCH(exclusiveRhoTo4Pi, processMCrec, "The Process for 4 Pion Analysis from MC Reconstruction", ifMCAnalysis); + +}; // End of Struct exclusiveRhoTo4Pi ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) From 58dee4bf73f726b6261742e635022f35ee16e39c Mon Sep 17 00:00:00 2001 From: ananthapadmanabhan18 <82643666+ananthapadmanabhan18@users.noreply.github.com> Date: Sat, 1 Feb 2025 19:53:58 +0000 Subject: [PATCH 11/15] Fixed MegaLinter --- PWGUD/Tasks/exclusiveRhoTo4Pi.cxx | 1 - 1 file changed, 1 deletion(-) diff --git a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx index 127c96f625b..8f9deb2aaf6 100644 --- a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx +++ b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx @@ -32,7 +32,6 @@ #include "Math/Vector4D.h" #include "Math/Vector3D.h" #include "Math/GenVector/Boost.h" -#include using namespace std; using namespace o2; From ef0c76ac6cd775a3badc69e85f0833cac5ae1c25 Mon Sep 17 00:00:00 2001 From: ananthapadmanabhan18 <82643666+ananthapadmanabhan18@users.noreply.github.com> Date: Sun, 2 Feb 2025 09:11:57 +0000 Subject: [PATCH 12/15] Removed unused variables --- PWGUD/Tasks/exclusiveRhoTo4Pi.cxx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx index 8f9deb2aaf6..3dd61dd0f6b 100644 --- a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx +++ b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx @@ -461,7 +461,7 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Begin of MC Generation function----------------------------------------------------------------------------------------------------------------------------------------------- - void processMCgen(aod::UDMcCollisions::iterator const& mccollisions, aod::UDMcParticles const& mcParts) + void processMCgen(aod::UDMcCollisions::iterator const&, aod::UDMcParticles const& mcParts) { std::vector piPlusvectors; std::vector piMinusvectors; @@ -578,8 +578,6 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct } // End of track selections } // End of loop over tracks - int numTracksWOTS = static_cast(WOTS_tracks.size()); - int numTracksWTS = static_cast(WTS_tracks.size()); int numTracksWTSandPIDpi = static_cast(WTS_PID_Pi_tracks.size()); int numPiPlusTracks = static_cast(Pi_plus_tracks.size()); int numPionMinusTRacks = static_cast(Pi_minus_tracks.size()); From f4f7950aa33ed7e9ce0e5565845baee982c02e07 Mon Sep 17 00:00:00 2001 From: ananthapadmanabhan18 <82643666+ananthapadmanabhan18@users.noreply.github.com> Date: Mon, 3 Feb 2025 16:33:46 +0000 Subject: [PATCH 13/15] Added TPC and TOF stuffs in MCreco --- PWGUD/Tasks/exclusiveRhoTo4Pi.cxx | 265 ++++++++++++++++++++++-------- 1 file changed, 194 insertions(+), 71 deletions(-) diff --git a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx index 3dd61dd0f6b..1017101449c 100644 --- a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx +++ b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx @@ -93,10 +93,10 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct histosData.add("tpcNSigmaPi_WTS_PID_Pi", "TPC nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{1000, -15, 15}}); // TPC nSigma of other particles with selected pion tracks - histosData.add("tpcNSigmaPi_WTS_PID_Pi_Ka", "TPC nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosData.add("tpcNSigmaPi_WTS_PID_Pi_Pr", "TPC nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosData.add("tpcNSigmaPi_WTS_PID_Pi_El", "TPC nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosData.add("tpcNSigmaPi_WTS_PID_Pi_Mu", "TPC nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tpcNSigmaKa_WTS_PID_Pi", "TPC nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tpcNSigmaPr_WTS_PID_Pi", "TPC nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tpcNSigmaEl_WTS_PID_Pi", "TPC nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tpcNSigmaMu_WTS_PID_Pi", "TPC nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); // TOF nSigma histosData.add("tofNSigmaPi_WTS", "TOF nSigma Pion with track selection; Events", kTH1F, {{1000, -15, 15}}); @@ -104,10 +104,10 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct histosData.add("tofNSigmaPi_WTS_PID_Pi", "TOF nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{1000, -15, 15}}); // TOF nSigma of other particles with selected pion tracks - histosData.add("tofNSigmaPi_WTS_PID_Pi_Ka", "TOF nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosData.add("tofNSigmaPi_WTS_PID_Pi_Pr", "TOF nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosData.add("tofNSigmaPi_WTS_PID_Pi_El", "TOF nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosData.add("tofNSigmaPi_WTS_PID_Pi_Mu", "TOF nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tofNSigmaKa_WTS_PID_Pi", "TOF nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tofNSigmaPr_WTS_PID_Pi", "TOF nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tofNSigmaEl_WTS_PID_Pi", "TOF nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tofNSigmaMu_WTS_PID_Pi", "TOF nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); // Track Transverse Momentum histosData.add("pT_track_WOTS", "pT without track selection; pT [GeV/c]; Counts", kTH1F, {{nBinsPt, 0, 2}}); @@ -182,25 +182,83 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct // MC Reco Stuff - // Track Stuff - histosMCreco.add("MCreco_particle_pT", "Generated pT; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 10}}); - histosMCreco.add("MCreco_particle_rapidity", "Generated Rapidity; y; Events", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); + histosMCreco.add("GapSide", "Gap Side; Events", kTH1F, {{4, -1.5, 2.5}}); + histosMCreco.add("TrueGapSide", "Gap Side; Events", kTH1F, {{4, -1.5, 2.5}}); + histosMCreco.add("EventCounts", "Total Events; Events", kTH1F, {{10, 0, 10}}); + + // TPC nSigma + histosMCreco.add("tpcNSigmaPi_WOTS", "TPC nSigma Pion without track selection; Events", kTH1F, {{1000, -15, 15}}); + histosMCreco.add("tpcNSigmaPi_WTS", "TPC nSigma Pion with track selection; Events", kTH1F, {{1000, -15, 15}}); + histosMCreco.add("tpcNSigmaPi_WTS_PID_Pi", "TPC nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{1000, -15, 15}}); + + // TPC nSigma of other particles with selected pion tracks + histosMCreco.add("tpcNSigmaKa_WTS_PID_Pi", "TPC nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosMCreco.add("tpcNSigmaPr_WTS_PID_Pi", "TPC nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosMCreco.add("tpcNSigmaEl_WTS_PID_Pi", "TPC nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosMCreco.add("tpcNSigmaMu_WTS_PID_Pi", "TPC nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + + // TOF nSigma + histosMCreco.add("tofNSigmaPi_WTS", "TOF nSigma Pion with track selection; Events", kTH1F, {{1000, -15, 15}}); + histosMCreco.add("tofNSigmaPi_WOTS", "TOF nSigma Pion without track selection; Events", kTH1F, {{1000, -15, 15}}); + histosMCreco.add("tofNSigmaPi_WTS_PID_Pi", "TOF nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{1000, -15, 15}}); + + // TOF nSigma of other particles with selected pion tracks + histosMCreco.add("tofNSigmaKa_WTS_PID_Pi", "TOF nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosMCreco.add("tofNSigmaPr_WTS_PID_Pi", "TOF nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosMCreco.add("tofNSigmaEl_WTS_PID_Pi", "TOF nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosMCreco.add("tofNSigmaMu_WTS_PID_Pi", "TOF nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - // For 0 charge events - histosMCreco.add("MCreco_0charge_4pion_pT", "Generated pT; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); - histosMCreco.add("MCreco_0charge_4pion_rapidity", "Generated Rapidity; y; Events", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); - histosMCreco.add("MCreco_0charge_4pion_invmass", "Invariant Mass of 4-Pions; m(4-pion); Events", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); + // Track Transverse Momentum + histosMCreco.add("pT_track_WOTS", "pT without track selection; pT [GeV/c]; Counts", kTH1F, {{nBinsPt, 0, 2}}); + histosMCreco.add("pT_track_WTS", "pT with track selection; pT [GeV/c]; Counts", kTH1F, {{nBinsPt, 0, 2}}); + histosMCreco.add("pT_track_WTS_PID_Pi", "pT with track selection and PID selection of Pi; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); + + // Zero charge Event Transverse Momentum + histosMCreco.add("pT_event_0charge_WTS_PID_Pi", "Event pT in 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); - // For non 0 charge events - histosMCreco.add("MCreco_non0charge_4pion_pT", "Generated pT; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); - histosMCreco.add("MCreco_non0charge_4pion_rapidity", "Generated Rapidity; y; Events", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); - histosMCreco.add("MCreco_non0charge_4pion_invmass", "Invariant Mass of 4-Pions; m(4-pion); Events", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); + // Non Zero charge Event Transverse Momentum + histosMCreco.add("pT_event_non0charge_WTS_PID_Pi", "Event pT in Non 0 Charge Events With Track Selection and PID Selection of Pi; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 2}}); + + // Rapidity of 0 charge Events + histosMCreco.add("rapidity_event_0charge_WTS_PID_Pi_domainA", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} < 0.15 GeV/c; y; Events", kTH1F, {{1000, -2.5, 2.5}}); + histosMCreco.add("rapidity_event_0charge_WTS_PID_Pi_domainB", "Rapidity of Events With Track Selection and PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; y; Events", kTH1F, {{1000, -2.5, 2.5}}); + histosMCreco.add("rapidity_event_0charge_WTS_PID_Pi_domainC", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} > 0.80 GeV/c; y; Events", kTH1F, {{1000, -2.5, 2.5}}); + + // Rapidity of non 0 charge Events + histosMCreco.add("rapidity_event_non0charge_WTS_PID_Pi_domainA", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} < 0.15 GeV/c; y; Events", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); + histosMCreco.add("rapidity_event_non0charge_WTS_PID_Pi_domainB", "Rapidity of Events With Track Selection and PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c$; y; Events", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); + histosMCreco.add("rapidity_event_non0charge_WTS_PID_Pi_domainC", "Rapidity of Events With Track Selection and PID Selection of Pi for p_{T} > 0.80 GeV/c; y; Events", kTH1F, {{nBinsRapidity, -2.5, 2.5}}); + + // Invariant Mass of 0 charge events + histosMCreco.add("invMass_event_0charge_WTS_PID_Pi_domainA", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for p_{T} < 0.15 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // pT < 0.15GeV + histosMCreco.add("invMass_event_0charge_WTS_PID_Pi_domainB", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // 0.15GeV < pT < 0.8GeV + histosMCreco.add("invMass_event_0charge_WTS_PID_Pi_domainC", "Invariant Mass Distribution of 0 charge Events with PID Selection of Pi for p_{T} > 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // 0.8GeV < pT + + // Invariant mass of non 0 charge events + histosMCreco.add("invMass_event_non0charge_WTS_PID_Pi_domainA", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for p_{T} < 0.15 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // pT < 0.15GeV + histosMCreco.add("invMass_event_non0charge_WTS_PID_Pi_domainB", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for 0.15< p_{T} < 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // 0.15GeV < pT < 0.8GeV + histosMCreco.add("invMass_event_non0charge_WTS_PID_Pi_domainC", "Invariant Mass Distribution of non 0 charge Events with PID Selection of Pi for p_{T} > 0.80 GeV/c; m(#pi^{+}#pi^{-}#pi^{+}#pi^{-}) [GeV/c]", kTH1F, {{nBinsInvariantMass, 0.8, 2.5}}); // 0.8GeV < pT + + // tpc signal + histosMCreco.add("tpcSignal", "TPC dEdx vs p; p [GeV/c]; dEdx [a.u.]", kTH2F, {{500, 0, 10}, {5000, 0.0, 5000.0}}); + histosMCreco.add("tpcSignal_Pi", "TPC dEdx vs p for pions; p [GeV/c]; dEdx [a.u.]", kTH2F, {{500, 0, 10}, {5000, 0.0, 5000.0}}); + + // tof beta + histosMCreco.add("tofBeta", "TOF beta vs p; p [GeV/c]; #beta", kTH2F, {{500, 0, 10}, {500, 0.0, 1.0}}); + histosMCreco.add("tofBeta_Pi", "TOF beta vs p for pions; p [GeV/c]; #beta", kTH2F, {{500, 0, 10}, {500, 0.0, 1.0}}); + + // Other signals + histosMCreco.add("FT0A", "T0A amplitude", kTH1F, {{200, 0.0, 500.0}}); + histosMCreco.add("FT0C", "T0C amplitude", kTH1F, {{200, 0.0, 500.0}}); + histosMCreco.add("ZDC_A", "ZDC amplitude", kTH1F, {{1000, 0.0, 15}}); + histosMCreco.add("ZDC_C", "ZDC amplitude", kTH1F, {{1000, 0.0, 15}}); + histosMCreco.add("V0A", "V0A amplitude", kTH1F, {{1000, 0.0, 100}}); // Collin Soper Theta and Phi - histosMCreco.add("MCreco_CS_phi_pair_1", "#phi Distribution; #phi; Events", kTH1F, {{nBinsPhi, -3.2, 3.2}}); - histosMCreco.add("MCreco_CS_phi_pair_2", "#phi Distribution; #phi; Events", kTH1F, {{nBinsPhi, -3.2, 3.2}}); - histosMCreco.add("MCreco_CS_costheta_pair_1", "#theta Distribution;cos(#theta); Events", kTH1F, {{nBinsCosTheta, -1, 1}}); - histosMCreco.add("MCreco_CS_costheta_pair_2", "#theta Distribution;cos(#theta); Events", kTH1F, {{nBinsCosTheta, -1, 1}}); + histosMCreco.add("CS_phi_pair_1", "#phi Distribution; #phi; Events", kTH1F, {{nBinsPhi, -3.2, 3.2}}); + histosMCreco.add("CS_phi_pair_2", "#phi Distribution; #phi; Events", kTH1F, {{nBinsPhi, -3.2, 3.2}}); + histosMCreco.add("CS_costheta_pair_1", "#theta Distribution;cos(#theta); Counts", kTH1F, {{nBinsCosTheta, -1, 1}}); + histosMCreco.add("CS_costheta_pair_2", "#theta Distribution;cos(#theta); Counts", kTH1F, {{nBinsCosTheta, -1, 1}}); } } // End of init function @@ -342,7 +400,6 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct } // End of loop over tracks without selection for (int i = 0; i < numTracksWTS; i++) { - histosData.fill(HIST("tpcSignal"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].tpcSignal()); histosData.fill(HIST("tofBeta"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].beta()); histosData.fill(HIST("tpcNSigmaPi_WTS"), WTS_tracks[i].tpcNSigmaPi()); @@ -356,16 +413,16 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct histosData.fill(HIST("tofBeta_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].beta()); histosData.fill(HIST("tpcNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaPi()); - histosData.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_Ka"), WTS_PID_Pi_tracks[i].tpcNSigmaKa()); - histosData.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_Pr"), WTS_PID_Pi_tracks[i].tpcNSigmaPr()); - histosData.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_El"), WTS_PID_Pi_tracks[i].tpcNSigmaEl()); - histosData.fill(HIST("tpcNSigmaPi_WTS_PID_Pi_Mu"), WTS_PID_Pi_tracks[i].tpcNSigmaMu()); + histosData.fill(HIST("tpcNSigmaKa_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaKa()); + histosData.fill(HIST("tpcNSigmaPr_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaPr()); + histosData.fill(HIST("tpcNSigmaEl_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaEl()); + histosData.fill(HIST("tpcNSigmaMu_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaMu()); histosData.fill(HIST("tofNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaPi()); - histosData.fill(HIST("tofNSigmaPi_WTS_PID_Pi_Ka"), WTS_PID_Pi_tracks[i].tofNSigmaKa()); - histosData.fill(HIST("tofNSigmaPi_WTS_PID_Pi_Pr"), WTS_PID_Pi_tracks[i].tofNSigmaPr()); - histosData.fill(HIST("tofNSigmaPi_WTS_PID_Pi_El"), WTS_PID_Pi_tracks[i].tofNSigmaEl()); - histosData.fill(HIST("tofNSigmaPi_WTS_PID_Pi_Mu"), WTS_PID_Pi_tracks[i].tofNSigmaMu()); + histosData.fill(HIST("tofNSigmaKa_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaKa()); + histosData.fill(HIST("tofNSigmaPr_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaPr()); + histosData.fill(HIST("tofNSigmaEl_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaEl()); + histosData.fill(HIST("tofNSigmaMu_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaMu()); histosData.fill(HIST("pT_track_WTS_PID_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); } // End of loop over tracks with selection and PID selection of Pions @@ -531,7 +588,7 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct using CollisionTotal = CollisionStuff::iterator; using TrackStuff = soa::Join; - void processMCrec(CollisionTotal const& collision, TrackStuff const& track) + void processMCrec(CollisionTotal const& collision, TrackStuff const& tracks) { if (!collision.has_udMcCollision()) { @@ -542,30 +599,44 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct float fitCuts[5] = {fv0Cut, ft0aCut, ft0cCut, fddaCut, fddcCut}; std::vector parameters = {pvCut, dcaZcut, dcaXYcut, tpcChi2Cut, tpcNClsFindableCut, itsChi2Cut, etaCut, pTcut}; int truegapSide = sgSelector.trueGap(collision, fitCuts[0], fitCuts[1], fitCuts[2], zdcCut); - // histosMCreco.fill(HIST("MCreco_GapSide"), gapSide); - // histosMCreco.fill(HIST("MCreco_TrueGapSide"), truegapSide); - // histosMCreco.fill(HIST("MCreco_EventCounts"), 1); + histosMCreco.fill(HIST("GapSide"), gapSide); + histosMCreco.fill(HIST("TrueGapSide"), truegapSide); + histosMCreco.fill(HIST("EventCounts"), 1); gapSide = truegapSide; if ((gapSide != 2)) { return; } - std::vector WOTS_tracks; - std::vector WTS_tracks; - std::vector WTS_PID_Pi_tracks; - std::vector Pi_plus_tracks; - std::vector Pi_minus_tracks; + histosMCreco.fill(HIST("V0A"), collision.totalFV0AmplitudeA()); + histosMCreco.fill(HIST("FT0A"), collision.totalFT0AmplitudeA()); + histosMCreco.fill(HIST("FT0C"), collision.totalFT0AmplitudeC()); + histosMCreco.fill(HIST("ZDC_A"), collision.energyCommonZNA()); + histosMCreco.fill(HIST("ZDC_C"), collision.energyCommonZNC()); + + if (strictEventSelection) { + if (collision.numContrib() != 4) { + return; + } + } else { + if (collision.numContrib() >= 10) { + return; + } + } + + std::vector WOTS_tracks; + std::vector WTS_tracks; + std::vector WTS_PID_Pi_tracks; + std::vector Pi_plus_tracks; + std::vector Pi_minus_tracks; - for (const auto& t0 : track) { + for (const auto& t0 : tracks) { WOTS_tracks.push_back(t0); - if (!t0.has_udMcParticle()) { - continue; - } - if (trackselector(t0, parameters)) { + if (trackselector(t0, parameters) && t0.has_udMcParticle()) { WTS_tracks.push_back(t0); + if (selectionPIDPion(t0, true, nSigmaTPCcut, nSigmaTOFcut)) { WTS_PID_Pi_tracks.push_back(t0); if (t0.sign() == 1) { @@ -575,19 +646,56 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct Pi_minus_tracks.push_back(t0); } } // End of Selection PID Pion + } // End of track selections + } // End of loop over tracks + int numTracksWOTS = static_cast(WOTS_tracks.size()); + int numTracksWTS = static_cast(WTS_tracks.size()); int numTracksWTSandPIDpi = static_cast(WTS_PID_Pi_tracks.size()); int numPiPlusTracks = static_cast(Pi_plus_tracks.size()); int numPionMinusTRacks = static_cast(Pi_minus_tracks.size()); + for (int i = 0; i < numTracksWOTS; i++) { + histosMCreco.fill(HIST("tpcNSigmaPi_WOTS"), WOTS_tracks[i].tpcNSigmaPi()); + histosMCreco.fill(HIST("tofNSigmaPi_WOTS"), WOTS_tracks[i].tofNSigmaPi()); + histosMCreco.fill(HIST("pT_track_WOTS"), std::sqrt(WOTS_tracks[i].px() * WOTS_tracks[i].px() + WOTS_tracks[i].py() * WOTS_tracks[i].py())); + } // End of loop over tracks without selection + + for (int i = 0; i < numTracksWTS; i++) { + histosMCreco.fill(HIST("tpcSignal"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].tpcSignal()); + histosMCreco.fill(HIST("tofBeta"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].beta()); + histosMCreco.fill(HIST("tpcNSigmaPi_WTS"), WTS_tracks[i].tpcNSigmaPi()); + histosMCreco.fill(HIST("tofNSigmaPi_WTS"), WTS_tracks[i].tofNSigmaPi()); + histosMCreco.fill(HIST("pT_track_WTS"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py())); + } // End of loop over tracks with selection only + + for (int i = 0; i < numTracksWTSandPIDpi; i++) { + + histosMCreco.fill(HIST("tpcSignal_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].tpcSignal()); + histosMCreco.fill(HIST("tofBeta_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].beta()); + + histosMCreco.fill(HIST("tpcNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaPi()); + histosMCreco.fill(HIST("tpcNSigmaKa_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaKa()); + histosMCreco.fill(HIST("tpcNSigmaPr_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaPr()); + histosMCreco.fill(HIST("tpcNSigmaEl_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaEl()); + histosMCreco.fill(HIST("tpcNSigmaMu_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaMu()); + + histosMCreco.fill(HIST("tofNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaPi()); + histosMCreco.fill(HIST("tofNSigmaKa_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaKa()); + histosMCreco.fill(HIST("tofNSigmaPr_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaPr()); + histosMCreco.fill(HIST("tofNSigmaEl_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaEl()); + histosMCreco.fill(HIST("tofNSigmaMu_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaMu()); + + histosMCreco.fill(HIST("pT_track_WTS_PID_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + } // End of loop over tracks with selection and PID selection of Pions + if (numTracksWTSandPIDpi != 4) { return; } // Selecting Events with net charge = 0 - if (numPionMinusTRacks == 2 && numPiPlusTracks == 2) { TLorentzVector p1, p2, p3, p4, p1234; @@ -598,11 +706,6 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct p3.SetXYZM(Pi_minus_tracks[0].px(), Pi_minus_tracks[0].py(), Pi_minus_tracks[0].pz(), o2::constants::physics::MassPionCharged); p4.SetXYZM(Pi_minus_tracks[1].px(), Pi_minus_tracks[1].py(), Pi_minus_tracks[1].pz(), o2::constants::physics::MassPionCharged); - histosMCreco.fill(HIST("MCreco_particle_pT"), p1.Pt()); - histosMCreco.fill(HIST("MCreco_particle_pT"), p2.Pt()); - histosMCreco.fill(HIST("MCreco_particle_pT"), p3.Pt()); - histosMCreco.fill(HIST("MCreco_particle_pT"), p4.Pt()); - k1.SetCoordinates(p1.Pt(), p1.Eta(), p1.Phi(), o2::constants::physics::MassPionCharged); k2.SetCoordinates(p2.Pt(), p2.Eta(), p2.Phi(), o2::constants::physics::MassPionCharged); k3.SetCoordinates(p3.Pt(), p3.Eta(), p3.Phi(), o2::constants::physics::MassPionCharged); @@ -616,24 +719,36 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct k23 = k2 + k3; k24 = k2 + k4; - histosMCreco.fill(HIST("MCreco_0charge_4pion_pT"), p1234.Pt()); - histosMCreco.fill(HIST("MCreco_0charge_4pion_rapidity"), p1234.Rapidity()); - histosMCreco.fill(HIST("MCreco_0charge_4pion_invmass"), p1234.M()); + if (std::fabs(p1234.Rapidity()) < 0.5) { + histosMCreco.fill(HIST("pT_event_0charge_WTS_PID_Pi"), p1234.Pt()); + if (p1234.Pt() < 0.15) { + histosMCreco.fill(HIST("rapidity_event_0charge_WTS_PID_Pi_domainA"), p1234.Rapidity()); + histosMCreco.fill(HIST("invMass_event_0charge_WTS_PID_Pi_domainA"), p1234.M()); - auto phiPair1 = phiCollinsSoperFrame(k13, k24, k1234); - auto phiPair2 = phiCollinsSoperFrame(k14, k23, k1234); - auto cosThetaPair1 = cosThetaCollinsSoperFrame(k13, k24, k1234); - auto cosThetaPair2 = cosThetaCollinsSoperFrame(k14, k23, k1234); + auto phiPair1 = phiCollinsSoperFrame(k13, k24, k1234); + auto phiPair2 = phiCollinsSoperFrame(k14, k23, k1234); + auto cosThetaPair1 = cosThetaCollinsSoperFrame(k13, k24, k1234); + auto cosThetaPair2 = cosThetaCollinsSoperFrame(k14, k23, k1234); - histosMCreco.fill(HIST("MCreco_CS_phi_pair_1"), phiPair1); - histosMCreco.fill(HIST("MCreco_CS_phi_pair_2"), phiPair2); - histosMCreco.fill(HIST("MCreco_CS_costheta_pair_1"), cosThetaPair1); - histosMCreco.fill(HIST("MCreco_CS_costheta_pair_2"), cosThetaPair2); + histosMCreco.fill(HIST("CS_phi_pair_1"), phiPair1); + histosMCreco.fill(HIST("CS_phi_pair_2"), phiPair2); + histosMCreco.fill(HIST("CS_costheta_pair_1"), cosThetaPair1); + histosMCreco.fill(HIST("CS_costheta_pair_2"), cosThetaPair2); + } + if (p1234.Pt() > 0.15 && p1234.Pt() < 0.80) { + histosMCreco.fill(HIST("rapidity_event_0charge_WTS_PID_Pi_domainB"), p1234.Rapidity()); + histosMCreco.fill(HIST("invMass_event_0charge_WTS_PID_Pi_domainB"), p1234.M()); + } + if (p1234.Pt() > 0.80) { + histosMCreco.fill(HIST("rapidity_event_0charge_WTS_PID_Pi_domainC"), p1234.Rapidity()); + histosMCreco.fill(HIST("invMass_event_0charge_WTS_PID_Pi_domainC"), p1234.M()); + } + } // End of Rapidity range selection } // End of Analysis for 0 charge events // Selecting Events with net charge != 0 for estimation of background - if (numPionMinusTRacks != 2 || numPiPlusTracks != 2) { + if (numPionMinusTRacks != 2 && numPiPlusTracks != 2) { TLorentzVector p1, p2, p3, p4, p1234; p1.SetXYZM(WTS_PID_Pi_tracks[0].px(), WTS_PID_Pi_tracks[0].py(), WTS_PID_Pi_tracks[0].pz(), o2::constants::physics::MassPionCharged); @@ -643,14 +758,22 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct p1234 = p1 + p2 + p3 + p4; - histosMCreco.fill(HIST("MCreco_particle_pT"), p1.Pt()); - histosMCreco.fill(HIST("MCreco_particle_pT"), p2.Pt()); - histosMCreco.fill(HIST("MCreco_particle_pT"), p3.Pt()); - histosMCreco.fill(HIST("MCreco_particle_pT"), p4.Pt()); + if (std::fabs(p1234.Rapidity()) < 0.5) { + histosMCreco.fill(HIST("pT_event_non0charge_WTS_PID_Pi"), p1234.Pt()); - histosMCreco.fill(HIST("MCreco_non0charge_4pion_pT"), p1234.Pt()); - histosMCreco.fill(HIST("MCreco_non0charge_4pion_rapidity"), p1234.Rapidity()); - histosMCreco.fill(HIST("MCreco_non0charge_4pion_invmass"), p1234.M()); + if (p1234.Pt() < 0.15) { + histosMCreco.fill(HIST("rapidity_event_non0charge_WTS_PID_Pi_domainA"), p1234.Rapidity()); + histosMCreco.fill(HIST("invMass_event_non0charge_WTS_PID_Pi_domainA"), p1234.M()); + } + if (p1234.Pt() > 0.15 && p1234.Pt() < 0.80) { + histosMCreco.fill(HIST("rapidity_event_non0charge_WTS_PID_Pi_domainB"), p1234.Rapidity()); + histosMCreco.fill(HIST("invMass_event_non0charge_WTS_PID_Pi_domainB"), p1234.M()); + } + if (p1234.Pt() > 0.80) { + histosMCreco.fill(HIST("rapidity_event_non0charge_WTS_PID_Pi_domainC"), p1234.Rapidity()); + histosMCreco.fill(HIST("invMass_event_non0charge_WTS_PID_Pi_domainC"), p1234.M()); + } + } // End of Rapidity range selection } // End of Analysis for non 0 charge events From 45754bce0067e1e09957141ce9e7351550d54db3 Mon Sep 17 00:00:00 2001 From: ananthapadmanabhan18 <82643666+ananthapadmanabhan18@users.noreply.github.com> Date: Fri, 7 Feb 2025 13:29:52 +0000 Subject: [PATCH 14/15] Added Nsigmas vs pT instead of just Nsigmas --- PWGUD/Tasks/exclusiveRhoTo4Pi.cxx | 185 ++++++++++++++++-------------- 1 file changed, 100 insertions(+), 85 deletions(-) diff --git a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx index 1017101449c..b7a4d86bb4d 100644 --- a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx +++ b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx @@ -62,7 +62,7 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct Configurable tpcNClsFindableCut{"tpcNClsFindableCut", 70, "Min tpcNClsFindable"}; Configurable itsChi2Cut{"itsChi2Cut", 36, "Max itsChi2NCl"}; Configurable etaCut{"etaCut", 0.9, "Track Pseudorapidity"}; - Configurable pTcut{"pTcut", 0, "Track Pt"}; + Configurable pTcut{"pTcut", 0.15, "Track Pt"}; Configurable nSigmaTPCcut{"nSigmaTPCcut", 3, "TPC cut"}; Configurable nSigmaTOFcut{"nSigmaTOFcut", 3, "TOF cut"}; @@ -88,26 +88,26 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct histosData.add("EventCounts", "Total Events; Events", kTH1F, {{10, 0, 10}}); // TPC nSigma - histosData.add("tpcNSigmaPi_WOTS", "TPC nSigma Pion without track selection; Events", kTH1F, {{1000, -15, 15}}); - histosData.add("tpcNSigmaPi_WTS", "TPC nSigma Pion with track selection; Events", kTH1F, {{1000, -15, 15}}); - histosData.add("tpcNSigmaPi_WTS_PID_Pi", "TPC nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tpcNSigmaPi_WOTS", "TPC nSigma Pion without track selection; Events", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosData.add("tpcNSigmaPi_WTS", "TPC nSigma Pion with track selection; Events", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosData.add("tpcNSigmaPi_WTS_PID_Pi", "TPC nSigma Pion with track selection and PID Selection of Pi; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); // TPC nSigma of other particles with selected pion tracks - histosData.add("tpcNSigmaKa_WTS_PID_Pi", "TPC nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosData.add("tpcNSigmaPr_WTS_PID_Pi", "TPC nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosData.add("tpcNSigmaEl_WTS_PID_Pi", "TPC nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosData.add("tpcNSigmaMu_WTS_PID_Pi", "TPC nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tpcNSigmaKa_WTS_PID_Pi", "TPC nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosData.add("tpcNSigmaPr_WTS_PID_Pi", "TPC nSigma Proton with track selection and PID Selection of Pion; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosData.add("tpcNSigmaEl_WTS_PID_Pi", "TPC nSigma Electron with track selection and PID Selection of Pion; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosData.add("tpcNSigmaMu_WTS_PID_Pi", "TPC nSigma Muon with track selection and PID Selection of Pion; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); // TOF nSigma - histosData.add("tofNSigmaPi_WTS", "TOF nSigma Pion with track selection; Events", kTH1F, {{1000, -15, 15}}); - histosData.add("tofNSigmaPi_WOTS", "TOF nSigma Pion without track selection; Events", kTH1F, {{1000, -15, 15}}); - histosData.add("tofNSigmaPi_WTS_PID_Pi", "TOF nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tofNSigmaPi_WTS", "TOF nSigma Pion with track selection; Events", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosData.add("tofNSigmaPi_WOTS", "TOF nSigma Pion without track selection; Events", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosData.add("tofNSigmaPi_WTS_PID_Pi", "TOF nSigma Pion with track selection and PID Selection of Pi; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); // TOF nSigma of other particles with selected pion tracks - histosData.add("tofNSigmaKa_WTS_PID_Pi", "TOF nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosData.add("tofNSigmaPr_WTS_PID_Pi", "TOF nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosData.add("tofNSigmaEl_WTS_PID_Pi", "TOF nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosData.add("tofNSigmaMu_WTS_PID_Pi", "TOF nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosData.add("tofNSigmaKa_WTS_PID_Pi", "TOF nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosData.add("tofNSigmaPr_WTS_PID_Pi", "TOF nSigma Proton with track selection and PID Selection of Pion; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosData.add("tofNSigmaEl_WTS_PID_Pi", "TOF nSigma Electron with track selection and PID Selection of Pion; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosData.add("tofNSigmaMu_WTS_PID_Pi", "TOF nSigma Muon with track selection and PID Selection of Pion; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); // Track Transverse Momentum histosData.add("pT_track_WOTS", "pT without track selection; pT [GeV/c]; Counts", kTH1F, {{nBinsPt, 0, 2}}); @@ -187,26 +187,26 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct histosMCreco.add("EventCounts", "Total Events; Events", kTH1F, {{10, 0, 10}}); // TPC nSigma - histosMCreco.add("tpcNSigmaPi_WOTS", "TPC nSigma Pion without track selection; Events", kTH1F, {{1000, -15, 15}}); - histosMCreco.add("tpcNSigmaPi_WTS", "TPC nSigma Pion with track selection; Events", kTH1F, {{1000, -15, 15}}); - histosMCreco.add("tpcNSigmaPi_WTS_PID_Pi", "TPC nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{1000, -15, 15}}); + histosMCreco.add("tpcNSigmaPi_WOTS", "TPC nSigma Pion without track selection; Events", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosMCreco.add("tpcNSigmaPi_WTS", "TPC nSigma Pion with track selection; Events", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosMCreco.add("tpcNSigmaPi_WTS_PID_Pi", "TPC nSigma Pion with track selection and PID Selection of Pi; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); // TPC nSigma of other particles with selected pion tracks - histosMCreco.add("tpcNSigmaKa_WTS_PID_Pi", "TPC nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosMCreco.add("tpcNSigmaPr_WTS_PID_Pi", "TPC nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosMCreco.add("tpcNSigmaEl_WTS_PID_Pi", "TPC nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosMCreco.add("tpcNSigmaMu_WTS_PID_Pi", "TPC nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosMCreco.add("tpcNSigmaKa_WTS_PID_Pi", "TPC nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosMCreco.add("tpcNSigmaPr_WTS_PID_Pi", "TPC nSigma Proton with track selection and PID Selection of Pion; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosMCreco.add("tpcNSigmaEl_WTS_PID_Pi", "TPC nSigma Electron with track selection and PID Selection of Pion; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosMCreco.add("tpcNSigmaMu_WTS_PID_Pi", "TPC nSigma Muon with track selection and PID Selection of Pion; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); // TOF nSigma - histosMCreco.add("tofNSigmaPi_WTS", "TOF nSigma Pion with track selection; Events", kTH1F, {{1000, -15, 15}}); - histosMCreco.add("tofNSigmaPi_WOTS", "TOF nSigma Pion without track selection; Events", kTH1F, {{1000, -15, 15}}); - histosMCreco.add("tofNSigmaPi_WTS_PID_Pi", "TOF nSigma Pion with track selection and PID Selection of Pi; Entries", kTH1F, {{1000, -15, 15}}); + histosMCreco.add("tofNSigmaPi_WTS", "TOF nSigma Pion with track selection; Events", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosMCreco.add("tofNSigmaPi_WOTS", "TOF nSigma Pion without track selection; Events", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosMCreco.add("tofNSigmaPi_WTS_PID_Pi", "TOF nSigma Pion with track selection and PID Selection of Pi; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); // TOF nSigma of other particles with selected pion tracks - histosMCreco.add("tofNSigmaKa_WTS_PID_Pi", "TOF nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosMCreco.add("tofNSigmaPr_WTS_PID_Pi", "TOF nSigma Proton with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosMCreco.add("tofNSigmaEl_WTS_PID_Pi", "TOF nSigma Electron with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); - histosMCreco.add("tofNSigmaMu_WTS_PID_Pi", "TOF nSigma Muon with track selection and PID Selection of Pion; Entries", kTH1F, {{1000, -15, 15}}); + histosMCreco.add("tofNSigmaKa_WTS_PID_Pi", "TOF nSigma Kaon with track selection and PID Selection of Pion; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosMCreco.add("tofNSigmaPr_WTS_PID_Pi", "TOF nSigma Proton with track selection and PID Selection of Pion; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosMCreco.add("tofNSigmaEl_WTS_PID_Pi", "TOF nSigma Electron with track selection and PID Selection of Pion; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); + histosMCreco.add("tofNSigmaMu_WTS_PID_Pi", "TOF nSigma Muon with track selection and PID Selection of Pion; Entries", kTH2F, {{1000, -15, 15}, {nBinsPt, 0, 10}}); // Track Transverse Momentum histosMCreco.add("pT_track_WOTS", "pT without track selection; pT [GeV/c]; Counts", kTH1F, {{nBinsPt, 0, 2}}); @@ -331,6 +331,10 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct void processData(UDCollisionFull const& collision, UDtracksfull const& tracks) { + if (std::abs(collision.posZ()) > 10) { + return; + } + int gapSide = collision.gapSide(); float fitCuts[5] = {fv0Cut, ft0aCut, ft0cCut, fddaCut, fddcCut}; std::vector parameters = {pvCut, dcaZcut, dcaXYcut, tpcChi2Cut, tpcNClsFindableCut, itsChi2Cut, etaCut, pTcut}; @@ -394,16 +398,16 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct int numPionMinusTRacks = static_cast(Pi_minus_tracks.size()); for (int i = 0; i < numTracksWOTS; i++) { - histosData.fill(HIST("tpcNSigmaPi_WOTS"), WOTS_tracks[i].tpcNSigmaPi()); - histosData.fill(HIST("tofNSigmaPi_WOTS"), WOTS_tracks[i].tofNSigmaPi()); + histosData.fill(HIST("tpcNSigmaPi_WOTS"), WOTS_tracks[i].tpcNSigmaPi(), std::sqrt(WOTS_tracks[i].px() * WOTS_tracks[i].px() + WOTS_tracks[i].py() * WOTS_tracks[i].py())); + histosData.fill(HIST("tofNSigmaPi_WOTS"), WOTS_tracks[i].tofNSigmaPi(), std::sqrt(WOTS_tracks[i].px() * WOTS_tracks[i].px() + WOTS_tracks[i].py() * WOTS_tracks[i].py())); histosData.fill(HIST("pT_track_WOTS"), std::sqrt(WOTS_tracks[i].px() * WOTS_tracks[i].px() + WOTS_tracks[i].py() * WOTS_tracks[i].py())); } // End of loop over tracks without selection for (int i = 0; i < numTracksWTS; i++) { histosData.fill(HIST("tpcSignal"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].tpcSignal()); histosData.fill(HIST("tofBeta"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].beta()); - histosData.fill(HIST("tpcNSigmaPi_WTS"), WTS_tracks[i].tpcNSigmaPi()); - histosData.fill(HIST("tofNSigmaPi_WTS"), WTS_tracks[i].tofNSigmaPi()); + histosData.fill(HIST("tpcNSigmaPi_WTS"), WTS_tracks[i].tpcNSigmaPi(), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py())); + histosData.fill(HIST("tofNSigmaPi_WTS"), WTS_tracks[i].tofNSigmaPi(), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py())); histosData.fill(HIST("pT_track_WTS"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py())); } // End of loop over tracks with selection only @@ -412,17 +416,17 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct histosData.fill(HIST("tpcSignal_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].tpcSignal()); histosData.fill(HIST("tofBeta_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].beta()); - histosData.fill(HIST("tpcNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaPi()); - histosData.fill(HIST("tpcNSigmaKa_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaKa()); - histosData.fill(HIST("tpcNSigmaPr_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaPr()); - histosData.fill(HIST("tpcNSigmaEl_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaEl()); - histosData.fill(HIST("tpcNSigmaMu_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaMu()); + histosData.fill(HIST("tpcNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaPi(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosData.fill(HIST("tpcNSigmaKa_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaKa(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosData.fill(HIST("tpcNSigmaPr_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaPr(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosData.fill(HIST("tpcNSigmaEl_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaEl(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosData.fill(HIST("tpcNSigmaMu_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaMu(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); - histosData.fill(HIST("tofNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaPi()); - histosData.fill(HIST("tofNSigmaKa_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaKa()); - histosData.fill(HIST("tofNSigmaPr_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaPr()); - histosData.fill(HIST("tofNSigmaEl_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaEl()); - histosData.fill(HIST("tofNSigmaMu_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaMu()); + histosData.fill(HIST("tofNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaPi(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosData.fill(HIST("tofNSigmaKa_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaKa(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosData.fill(HIST("tofNSigmaPr_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaPr(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosData.fill(HIST("tofNSigmaEl_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaEl(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosData.fill(HIST("tofNSigmaMu_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaMu(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); histosData.fill(HIST("pT_track_WTS_PID_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); } // End of loop over tracks with selection and PID selection of Pions @@ -535,14 +539,19 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct for (const auto& mother : particle.mothers_as()) { if (mother.pdgCode() == 30113) { if (particle.pdgCode() == 211) { - piPlusvectors.push_back(tempVector); - histosMCgen.fill(HIST("MCgen_particle_pT"), tempVector.Pt()); - histosMCgen.fill(HIST("MCgen_particle_rapidity"), tempVector.Rapidity()); + + if (tempVector.Pt() > 0.15 && tempVector.Rapidity() < 0.5) { + piPlusvectors.push_back(tempVector); + histosMCgen.fill(HIST("MCgen_particle_pT"), tempVector.Pt()); + histosMCgen.fill(HIST("MCgen_particle_rapidity"), tempVector.Rapidity()); + } } if (particle.pdgCode() == -211) { - piMinusvectors.push_back(tempVector); - histosMCgen.fill(HIST("MCgen_particle_pT"), tempVector.Pt()); - histosMCgen.fill(HIST("MCgen_particle_rapidity"), tempVector.Rapidity()); + if (tempVector.Pt() > 0.15 && tempVector.Rapidity() < 0.5) { + piMinusvectors.push_back(tempVector); + histosMCgen.fill(HIST("MCgen_particle_pT"), tempVector.Pt()); + histosMCgen.fill(HIST("MCgen_particle_rapidity"), tempVector.Rapidity()); + } } } // End of Mother ID 30113 rho prime } // End of loop over mothers @@ -553,33 +562,35 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct } p1234 = piPlusvectors[0] + piPlusvectors[1] + piMinusvectors[0] + piMinusvectors[1]; - histosMCgen.fill(HIST("MCgen_4pion_pT"), p1234.Pt()); - histosMCgen.fill(HIST("MCgen_4pion_rapidity"), p1234.Rapidity()); - histosMCgen.fill(HIST("MCgen_4pion_invmass"), p1234.M()); + if (std::abs(p1234.Rapidity()) < 0.5) { + histosMCgen.fill(HIST("MCgen_4pion_pT"), p1234.Pt()); + histosMCgen.fill(HIST("MCgen_4pion_rapidity"), p1234.Rapidity()); + histosMCgen.fill(HIST("MCgen_4pion_invmass"), p1234.M()); - ROOT::Math::PtEtaPhiMVector k1, k2, k3, k4, k1234, k13, k14, k23, k24; + ROOT::Math::PtEtaPhiMVector k1, k2, k3, k4, k1234, k13, k14, k23, k24; - k1.SetCoordinates(piPlusvectors[0].Pt(), piPlusvectors[0].Eta(), piPlusvectors[0].Phi(), o2::constants::physics::MassPionCharged); - k2.SetCoordinates(piPlusvectors[1].Pt(), piPlusvectors[1].Eta(), piPlusvectors[1].Phi(), o2::constants::physics::MassPionCharged); - k3.SetCoordinates(piMinusvectors[0].Pt(), piMinusvectors[0].Eta(), piMinusvectors[0].Phi(), o2::constants::physics::MassPionCharged); - k4.SetCoordinates(piMinusvectors[1].Pt(), piMinusvectors[1].Eta(), piMinusvectors[1].Phi(), o2::constants::physics::MassPionCharged); + k1.SetCoordinates(piPlusvectors[0].Pt(), piPlusvectors[0].Eta(), piPlusvectors[0].Phi(), o2::constants::physics::MassPionCharged); + k2.SetCoordinates(piPlusvectors[1].Pt(), piPlusvectors[1].Eta(), piPlusvectors[1].Phi(), o2::constants::physics::MassPionCharged); + k3.SetCoordinates(piMinusvectors[0].Pt(), piMinusvectors[0].Eta(), piMinusvectors[0].Phi(), o2::constants::physics::MassPionCharged); + k4.SetCoordinates(piMinusvectors[1].Pt(), piMinusvectors[1].Eta(), piMinusvectors[1].Phi(), o2::constants::physics::MassPionCharged); - k1234 = k1 + k2 + k3 + k4; + k1234 = k1 + k2 + k3 + k4; - k13 = k1 + k3; - k14 = k1 + k4; - k23 = k2 + k3; - k24 = k2 + k4; + k13 = k1 + k3; + k14 = k1 + k4; + k23 = k2 + k3; + k24 = k2 + k4; - auto phiPair1 = phiCollinsSoperFrame(k13, k24, k1234); - auto phiPair2 = phiCollinsSoperFrame(k14, k23, k1234); - auto cosThetaPair1 = cosThetaCollinsSoperFrame(k13, k24, k1234); - auto cosThetaPair2 = cosThetaCollinsSoperFrame(k14, k23, k1234); + auto phiPair1 = phiCollinsSoperFrame(k13, k24, k1234); + auto phiPair2 = phiCollinsSoperFrame(k14, k23, k1234); + auto cosThetaPair1 = cosThetaCollinsSoperFrame(k13, k24, k1234); + auto cosThetaPair2 = cosThetaCollinsSoperFrame(k14, k23, k1234); - histosMCgen.fill(HIST("MCgen_CS_phi_pair_1"), phiPair1); - histosMCgen.fill(HIST("MCgen_CS_phi_pair_2"), phiPair2); - histosMCgen.fill(HIST("MCgen_CS_costheta_pair_1"), cosThetaPair1); - histosMCgen.fill(HIST("MCgen_CS_costheta_pair_2"), cosThetaPair2); + histosMCgen.fill(HIST("MCgen_CS_phi_pair_1"), phiPair1); + histosMCgen.fill(HIST("MCgen_CS_phi_pair_2"), phiPair2); + histosMCgen.fill(HIST("MCgen_CS_costheta_pair_1"), cosThetaPair1); + histosMCgen.fill(HIST("MCgen_CS_costheta_pair_2"), cosThetaPair2); + } } // End of 4 Pion MC Generation Process function PROCESS_SWITCH(exclusiveRhoTo4Pi, processMCgen, "The Process for 4 Pion Analysis from MC Generation", ifMCAnalysis); @@ -591,6 +602,10 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct void processMCrec(CollisionTotal const& collision, TrackStuff const& tracks) { + if (std::abs(collision.posZ()) > 10) { + return; + } + if (!collision.has_udMcCollision()) { return; } @@ -658,16 +673,16 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct int numPionMinusTRacks = static_cast(Pi_minus_tracks.size()); for (int i = 0; i < numTracksWOTS; i++) { - histosMCreco.fill(HIST("tpcNSigmaPi_WOTS"), WOTS_tracks[i].tpcNSigmaPi()); - histosMCreco.fill(HIST("tofNSigmaPi_WOTS"), WOTS_tracks[i].tofNSigmaPi()); + histosMCreco.fill(HIST("tpcNSigmaPi_WOTS"), WOTS_tracks[i].tpcNSigmaPi(), std::sqrt(WOTS_tracks[i].px() * WOTS_tracks[i].px() + WOTS_tracks[i].py() * WOTS_tracks[i].py())); + histosMCreco.fill(HIST("tofNSigmaPi_WOTS"), WOTS_tracks[i].tofNSigmaPi(), std::sqrt(WOTS_tracks[i].px() * WOTS_tracks[i].px() + WOTS_tracks[i].py() * WOTS_tracks[i].py())); histosMCreco.fill(HIST("pT_track_WOTS"), std::sqrt(WOTS_tracks[i].px() * WOTS_tracks[i].px() + WOTS_tracks[i].py() * WOTS_tracks[i].py())); } // End of loop over tracks without selection for (int i = 0; i < numTracksWTS; i++) { histosMCreco.fill(HIST("tpcSignal"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].tpcSignal()); histosMCreco.fill(HIST("tofBeta"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py() + WTS_tracks[i].pz() * WTS_tracks[i].pz()), WTS_tracks[i].beta()); - histosMCreco.fill(HIST("tpcNSigmaPi_WTS"), WTS_tracks[i].tpcNSigmaPi()); - histosMCreco.fill(HIST("tofNSigmaPi_WTS"), WTS_tracks[i].tofNSigmaPi()); + histosMCreco.fill(HIST("tpcNSigmaPi_WTS"), WTS_tracks[i].tpcNSigmaPi(), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py())); + histosMCreco.fill(HIST("tofNSigmaPi_WTS"), WTS_tracks[i].tofNSigmaPi(), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py())); histosMCreco.fill(HIST("pT_track_WTS"), std::sqrt(WTS_tracks[i].px() * WTS_tracks[i].px() + WTS_tracks[i].py() * WTS_tracks[i].py())); } // End of loop over tracks with selection only @@ -676,17 +691,17 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct histosMCreco.fill(HIST("tpcSignal_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].tpcSignal()); histosMCreco.fill(HIST("tofBeta_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py() + WTS_PID_Pi_tracks[i].pz() * WTS_PID_Pi_tracks[i].pz()), WTS_PID_Pi_tracks[i].beta()); - histosMCreco.fill(HIST("tpcNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaPi()); - histosMCreco.fill(HIST("tpcNSigmaKa_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaKa()); - histosMCreco.fill(HIST("tpcNSigmaPr_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaPr()); - histosMCreco.fill(HIST("tpcNSigmaEl_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaEl()); - histosMCreco.fill(HIST("tpcNSigmaMu_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaMu()); - - histosMCreco.fill(HIST("tofNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaPi()); - histosMCreco.fill(HIST("tofNSigmaKa_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaKa()); - histosMCreco.fill(HIST("tofNSigmaPr_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaPr()); - histosMCreco.fill(HIST("tofNSigmaEl_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaEl()); - histosMCreco.fill(HIST("tofNSigmaMu_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaMu()); + histosMCreco.fill(HIST("tpcNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaPi(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosMCreco.fill(HIST("tpcNSigmaKa_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaKa(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosMCreco.fill(HIST("tpcNSigmaPr_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaPr(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosMCreco.fill(HIST("tpcNSigmaEl_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaEl(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosMCreco.fill(HIST("tpcNSigmaMu_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tpcNSigmaMu(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + + histosMCreco.fill(HIST("tofNSigmaPi_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaPi(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosMCreco.fill(HIST("tofNSigmaKa_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaKa(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosMCreco.fill(HIST("tofNSigmaPr_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaPr(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosMCreco.fill(HIST("tofNSigmaEl_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaEl(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); + histosMCreco.fill(HIST("tofNSigmaMu_WTS_PID_Pi"), WTS_PID_Pi_tracks[i].tofNSigmaMu(), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); histosMCreco.fill(HIST("pT_track_WTS_PID_Pi"), std::sqrt(WTS_PID_Pi_tracks[i].px() * WTS_PID_Pi_tracks[i].px() + WTS_PID_Pi_tracks[i].py() * WTS_PID_Pi_tracks[i].py())); } // End of loop over tracks with selection and PID selection of Pions From 5b2743f3436ef7069446268a79db2b3593c09afb Mon Sep 17 00:00:00 2001 From: ananthapadmanabhan18 <82643666+ananthapadmanabhan18@users.noreply.github.com> Date: Fri, 7 Feb 2025 18:04:04 +0000 Subject: [PATCH 15/15] Removed pT and y cuts from MC Gen --- PWGUD/Tasks/exclusiveRhoTo4Pi.cxx | 71 ++++++++++++++++--------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx index b7a4d86bb4d..40f024f737c 100644 --- a/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx +++ b/PWGUD/Tasks/exclusiveRhoTo4Pi.cxx @@ -164,6 +164,8 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct // MC Gen Stuff if (ifMCAnalysis) { + // counts + histosMCgen.add("rhoPrimeCounts", "Total Rho prime Events; Events", kTH1F, {{10, 0, 10}}); // Track Stuff histosMCgen.add("MCgen_particle_pT", "Generated pT; pT [GeV/c]; Events", kTH1F, {{nBinsPt, 0, 10}}); @@ -529,6 +531,8 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct TLorentzVector tempVector, p1, p2, p3, p4; TLorentzVector p1234; + bool flag = false; + for (const auto& particle : mcParts) { tempVector.SetXYZM(particle.px(), particle.py(), particle.pz(), o2::constants::physics::MassPionCharged); @@ -538,20 +542,21 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct for (const auto& mother : particle.mothers_as()) { if (mother.pdgCode() == 30113) { - if (particle.pdgCode() == 211) { - if (tempVector.Pt() > 0.15 && tempVector.Rapidity() < 0.5) { - piPlusvectors.push_back(tempVector); - histosMCgen.fill(HIST("MCgen_particle_pT"), tempVector.Pt()); - histosMCgen.fill(HIST("MCgen_particle_rapidity"), tempVector.Rapidity()); - } + if (flag == false) { + histosMCgen.fill(HIST("rhoPrimeCounts"), 5); + } + flag = true; + + if (particle.pdgCode() == 211) { + piPlusvectors.push_back(tempVector); + histosMCgen.fill(HIST("MCgen_particle_pT"), tempVector.Pt()); + histosMCgen.fill(HIST("MCgen_particle_rapidity"), tempVector.Rapidity()); } if (particle.pdgCode() == -211) { - if (tempVector.Pt() > 0.15 && tempVector.Rapidity() < 0.5) { - piMinusvectors.push_back(tempVector); - histosMCgen.fill(HIST("MCgen_particle_pT"), tempVector.Pt()); - histosMCgen.fill(HIST("MCgen_particle_rapidity"), tempVector.Rapidity()); - } + piMinusvectors.push_back(tempVector); + histosMCgen.fill(HIST("MCgen_particle_pT"), tempVector.Pt()); + histosMCgen.fill(HIST("MCgen_particle_rapidity"), tempVector.Rapidity()); } } // End of Mother ID 30113 rho prime } // End of loop over mothers @@ -562,35 +567,33 @@ struct exclusiveRhoTo4Pi { // o2-linter: disable=name/workflow-file,name/struct } p1234 = piPlusvectors[0] + piPlusvectors[1] + piMinusvectors[0] + piMinusvectors[1]; - if (std::abs(p1234.Rapidity()) < 0.5) { - histosMCgen.fill(HIST("MCgen_4pion_pT"), p1234.Pt()); - histosMCgen.fill(HIST("MCgen_4pion_rapidity"), p1234.Rapidity()); - histosMCgen.fill(HIST("MCgen_4pion_invmass"), p1234.M()); + histosMCgen.fill(HIST("MCgen_4pion_pT"), p1234.Pt()); + histosMCgen.fill(HIST("MCgen_4pion_rapidity"), p1234.Rapidity()); + histosMCgen.fill(HIST("MCgen_4pion_invmass"), p1234.M()); - ROOT::Math::PtEtaPhiMVector k1, k2, k3, k4, k1234, k13, k14, k23, k24; + ROOT::Math::PtEtaPhiMVector k1, k2, k3, k4, k1234, k13, k14, k23, k24; - k1.SetCoordinates(piPlusvectors[0].Pt(), piPlusvectors[0].Eta(), piPlusvectors[0].Phi(), o2::constants::physics::MassPionCharged); - k2.SetCoordinates(piPlusvectors[1].Pt(), piPlusvectors[1].Eta(), piPlusvectors[1].Phi(), o2::constants::physics::MassPionCharged); - k3.SetCoordinates(piMinusvectors[0].Pt(), piMinusvectors[0].Eta(), piMinusvectors[0].Phi(), o2::constants::physics::MassPionCharged); - k4.SetCoordinates(piMinusvectors[1].Pt(), piMinusvectors[1].Eta(), piMinusvectors[1].Phi(), o2::constants::physics::MassPionCharged); + k1.SetCoordinates(piPlusvectors[0].Pt(), piPlusvectors[0].Eta(), piPlusvectors[0].Phi(), o2::constants::physics::MassPionCharged); + k2.SetCoordinates(piPlusvectors[1].Pt(), piPlusvectors[1].Eta(), piPlusvectors[1].Phi(), o2::constants::physics::MassPionCharged); + k3.SetCoordinates(piMinusvectors[0].Pt(), piMinusvectors[0].Eta(), piMinusvectors[0].Phi(), o2::constants::physics::MassPionCharged); + k4.SetCoordinates(piMinusvectors[1].Pt(), piMinusvectors[1].Eta(), piMinusvectors[1].Phi(), o2::constants::physics::MassPionCharged); - k1234 = k1 + k2 + k3 + k4; + k1234 = k1 + k2 + k3 + k4; - k13 = k1 + k3; - k14 = k1 + k4; - k23 = k2 + k3; - k24 = k2 + k4; + k13 = k1 + k3; + k14 = k1 + k4; + k23 = k2 + k3; + k24 = k2 + k4; - auto phiPair1 = phiCollinsSoperFrame(k13, k24, k1234); - auto phiPair2 = phiCollinsSoperFrame(k14, k23, k1234); - auto cosThetaPair1 = cosThetaCollinsSoperFrame(k13, k24, k1234); - auto cosThetaPair2 = cosThetaCollinsSoperFrame(k14, k23, k1234); + auto phiPair1 = phiCollinsSoperFrame(k13, k24, k1234); + auto phiPair2 = phiCollinsSoperFrame(k14, k23, k1234); + auto cosThetaPair1 = cosThetaCollinsSoperFrame(k13, k24, k1234); + auto cosThetaPair2 = cosThetaCollinsSoperFrame(k14, k23, k1234); - histosMCgen.fill(HIST("MCgen_CS_phi_pair_1"), phiPair1); - histosMCgen.fill(HIST("MCgen_CS_phi_pair_2"), phiPair2); - histosMCgen.fill(HIST("MCgen_CS_costheta_pair_1"), cosThetaPair1); - histosMCgen.fill(HIST("MCgen_CS_costheta_pair_2"), cosThetaPair2); - } + histosMCgen.fill(HIST("MCgen_CS_phi_pair_1"), phiPair1); + histosMCgen.fill(HIST("MCgen_CS_phi_pair_2"), phiPair2); + histosMCgen.fill(HIST("MCgen_CS_costheta_pair_1"), cosThetaPair1); + histosMCgen.fill(HIST("MCgen_CS_costheta_pair_2"), cosThetaPair2); } // End of 4 Pion MC Generation Process function PROCESS_SWITCH(exclusiveRhoTo4Pi, processMCgen, "The Process for 4 Pion Analysis from MC Generation", ifMCAnalysis);