Skip to content
Merged
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
cd7667f
Removed filters for Event and track counts
ananthapadmanabhan18 Jul 18, 2025
dc0c051
modified track selection criteria
ananthapadmanabhan18 Jul 20, 2025
55ddf1f
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Jul 20, 2025
37d9411
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Jul 23, 2025
f4af283
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Jul 23, 2025
9a8d0fb
added 2 different track selection criteria
ananthapadmanabhan18 Jul 23, 2025
85c290c
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Jul 26, 2025
ae5fa6c
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Jul 26, 2025
2626c7a
Added filters for fast analysis and new process for event and track c…
ananthapadmanabhan18 Jul 26, 2025
407fb6c
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Jul 27, 2025
d24e5db
made the event and track counters seperate function
ananthapadmanabhan18 Jul 27, 2025
a3e1777
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Jul 31, 2025
171d571
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Aug 1, 2025
2feff8e
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Aug 3, 2025
85c1d07
modified the Counter histograms
ananthapadmanabhan18 Aug 3, 2025
e033a1e
modifies the collin-soper angle selection criteria
ananthapadmanabhan18 Aug 3, 2025
5085e63
Added cut labels to counters
ananthapadmanabhan18 Aug 3, 2025
9a56077
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Aug 3, 2025
72861f4
fix cpplint error
ananthapadmanabhan18 Aug 3, 2025
3c487cf
fixed the cpplint issues
ananthapadmanabhan18 Aug 3, 2025
c8f0433
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Aug 6, 2025
5c037c1
Added counter histo within mass range
ananthapadmanabhan18 Aug 6, 2025
7a3ec1e
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Aug 13, 2025
b44bd47
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Aug 14, 2025
5f14f28
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Aug 17, 2025
6296b44
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Aug 19, 2025
6071b93
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Aug 20, 2025
0924aa7
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Aug 23, 2025
6d75199
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Aug 24, 2025
c3c9dbf
new RCT flag added
ananthapadmanabhan18 Aug 26, 2025
30437fd
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Aug 26, 2025
88a7e56
Added variable labels for histogram
ananthapadmanabhan18 Aug 26, 2025
0529536
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Aug 27, 2025
041772d
isCBTHadronZdcOK->isCBTHadronOk
ananthapadmanabhan18 Aug 27, 2025
0008e53
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Sep 14, 2025
53e407a
Modified all the histograms and added more QA plots
ananthapadmanabhan18 Sep 14, 2025
13bc202
Modified MC and other histograms
ananthapadmanabhan18 Sep 14, 2025
026da16
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Sep 26, 2025
44b6e11
Added MC truth process
ananthapadmanabhan18 Sep 26, 2025
eb2e876
Fixed unused variable
ananthapadmanabhan18 Sep 26, 2025
346a7ec
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Sep 27, 2025
536f7d3
Removed unnecessary includes
ananthapadmanabhan18 Sep 27, 2025
d7bf8e4
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Oct 6, 2025
507cb19
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Oct 21, 2025
22c0bf9
Modified Combinatorial Background Estimation
ananthapadmanabhan18 Oct 21, 2025
6554b74
Merge branch 'AliceO2Group:master' into master
ananthapadmanabhan18 Oct 27, 2025
749231f
Added Event loss/cuts in tracks counter
ananthapadmanabhan18 Oct 27, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 100 additions & 28 deletions PWGUD/Tasks/exclusiveRhoTo4Pi.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,12 @@ struct ExclusiveRhoTo4Pi {
int numFourPionTracks = 4;
int numPiPlus = 2;
int numPiMinus = 2;
// Numbers for background estimation
int zero = 0;
int one = 1;
int three = 3;
int four = 4;
// PDG Codes and rho mass
double mRho0 = 0.77526; // GeV/c^2
int rhoPrime = 30113;
// Pb-Pb at 5.36 TeV
Expand Down Expand Up @@ -112,7 +118,8 @@ struct ExclusiveRhoTo4Pi {
{
// QA plots: Event and Track Counter
histosDataCounter.add("EventsCounts_vs_runNo", "Event Counter Run by Run; Run Number; Number of Events", kTH2F, {{113, 0, 113}, {14, 0, 14}});
histosDataCounter.add("TracksCounts_vs_runNo", "Track Counter Run by Run; Run Number; Number of Tracks", kTH2F, {{113, 0, 113}, {14, 0, 14}});
histosDataCounter.add("TracksCounts_vs_runNo", "Track Counter Run by Run; Run Number; Number of Track", kTH2F, {{113, 0, 113}, {14, 0, 14}});
histosDataCounter.add("LostInTrackCut_vs_runNo", "Track Counter Run by Run; Run Number; Number of Tracks", kTH2F, {{113, 0, 113}, {14, 0, 14}});
// QA plots: event selection-selected events
histosQA.add("Events/selected/UPCmode", "UPC mode; Events", kTH1F, {{5, 0, 5}});
histosQA.add("Events/selected/GapSide", "Gap Side;Gap Side; Events", kTH1F, {{4, 0, 4}});
Expand Down Expand Up @@ -235,19 +242,19 @@ struct ExclusiveRhoTo4Pi {
histosKin.add("all", ";pT [GeV/c]; #eta;#varphi", kTH3F, {pTAxis, etaAxis, phiAxis});
histosKin.add("selected", ";pT [GeV/c]; #eta;#varphi", kTH3F, {pTAxis, etaAxis, phiAxis});
histosKin.add("pions", ";pT [GeV/c]; #eta;#varphi", kTH3F, {pTAxis, etaAxis, phiAxis});
histosKin.add("pions-from-4pi", ";pT [GeV/c]; #eta;#varphi;y ", kTHnSparseF, {pTAxis, etaAxis, phiAxis, rapidityAxis});
histosKin.add("pions-from-4pion", ";pT [GeV/c]; #eta;#varphi;y ", kTHnSparseF, {pTAxis, etaAxis, phiAxis, rapidityAxis});
// Rho Prime Kinematics
histos4piKin.add("two-pion-mass", ";m_{#pi^{+}#pi^{-}} [GeV/c^2];m_{#pi^{+}#pi^{-}} [GeV/c^2];m_{#pi^{+}#pi^{-}} [GeV/c^2];m_{#pi^{+}#pi^{-}} [GeV/c^2];m_{4#pi} [GeV/c^{2}]", kTHnSparseF, {{100, 0, 2}, {100, 0, 2}, {100, 0, 2}, {100, 0, 2}, invMassAxis});
histos4piKin.add("2PiPlusPiMinusMass", ";m_{#pi^{+}#pi^{+}#pi^{-}} [GeV/c^2];m_{#pi^{+}#pi^{+}#pi^{-}} [GeV/c^2];m_{#pi^{+}#pi^{-}#pi^{+}}#pi^{-}} [GeV/c^2]", kTHnSparseF, {{200, 0, 2.5}, {200, 0, 2.5}, invMassAxis});
histos4piKin.add("2PiMinusPiPlusMass", ";m_{#pi^{-}#pi^{-}#pi^{+}} [GeV/c^2];m_{#pi^{-}#pi^{-}#pi^{+}} [GeV/c^2];m_{#pi^{+}#pi^{-}#pi^{+}}#pi^{-}} [GeV/c^2]", kTHnSparseF, {{200, 0, 2.5}, {200, 0, 2.5}, invMassAxis});
histos4piKin.add("two-pion", ";p_{T}^{4#pi} [GeV/c] ;m_{#pi^{+}#pi^{-}} [GeV/c^2];m_{#pi^{+}#pi^{-}} [GeV/c^2];m_{#pi^{+}#pi^{-}} [GeV/c^2];m_{#pi^{+}#pi^{-}} [GeV/c^2];m_{4#pi} [GeV/c^{2}]", kTHnSparseF, {{100, 0, 2}, {100, 0, 2}, {100, 0, 2}, {100, 0, 2}, invMassAxis});
histos4piKin.add("zero-charge", ";pT [GeV/c]; #eta; #varphi [rad];y; m_{4#pi} [GeV/c^{2}]; Collin-Soper cos(#theta); Collin-Soper #varphi [rad];Run Number", kTHnSparseF, {pTAxis, etaAxis, phiAxis, rapidityAxis, invMassAxis, cosThetaAxis, phiAxis, {113, 0, 113}});
histos4piKin.add("non-zero-charge", ";pT [GeV/c]; #eta; #varphi [rad];y; m_{4#pi} [GeV/c^{2}];Run Number", kTHnSparseF, {pTAxis, etaAxis, phiAxis, rapidityAxis, invMassAxis, {113, 0, 113}});
histos4piKin.add("3piMinus-1piPlus", ";pT [GeV/c]; #eta; #varphi [rad];y; m_{4#pi} [GeV/c^{2}]; Run Number", kTHnSparseF, {pTAxis, etaAxis, phiAxis, rapidityAxis, invMassAxis, {113, 0, 113}});
histos4piKin.add("3piPlus-1piMinus", ";pT [GeV/c]; #eta; #varphi [rad];y; m_{4#pi} [GeV/c^{2}]; Run Number", kTHnSparseF, {pTAxis, etaAxis, phiAxis, rapidityAxis, invMassAxis, {113, 0, 113}});
histos4piKin.add("4piPlus", ";pT [GeV/c]; #eta; #varphi [rad];y; m_{4#pi} [GeV/c^{2}]; Run Number", kTHnSparseF, {pTAxis, etaAxis, phiAxis, rapidityAxis, invMassAxis, {113, 0, 113}});
histos4piKin.add("4piMinus", ";pT [GeV/c]; #eta; #varphi [rad];y; m_{4#pi} [GeV/c^{2}]; Run Number", kTHnSparseF, {pTAxis, etaAxis, phiAxis, rapidityAxis, invMassAxis, {113, 0, 113}});
// MC truth
histosMCtruth.add("pions-from-4pi", ";pT [GeV/c]; #eta;#varphi;y ", kTHnSparseF, {pTAxis, etaAxis, phiAxis, rapidityAxis, {113, 0, 113}});
histosMCtruth.add("4-pi-pions", ";pT [GeV/c]; #eta;#varphi;y ", kTHnSparseF, {pTAxis, etaAxis, phiAxis, rapidityAxis, {113, 0, 113}});
histosMCtruth.add("Four-pion", ";pT [GeV/c]; #eta; #varphi [rad];y; m_{4#pi} [GeV/c^{2}];Run Number", kTHnSparseF, {pTAxis, etaAxis, phiAxis, rapidityAxis, invMassAxis, {113, 0, 113}});

//___________________________________________________________________________________________________________________________

//_______________________________________________________________________________________________________________________________________________
setHistBinLabels();
} // End of init function

Expand Down Expand Up @@ -460,25 +467,19 @@ struct ExclusiveRhoTo4Pi {
PxPyPzMVector p4(selectedPionMinusTracks[1].px(), selectedPionMinusTracks[1].py(), selectedPionMinusTracks[1].pz(), o2::constants::physics::MassPionCharged);

// Kinematics for pions from 4 pion events
histosKin.fill(HIST("pions-from-4pi"), p1.Pt(), p1.Eta(), p1.Phi(), p1.Rapidity());
histosKin.fill(HIST("pions-from-4pi"), p2.Pt(), p2.Eta(), p2.Phi(), p2.Rapidity());
histosKin.fill(HIST("pions-from-4pi"), p3.Pt(), p3.Eta(), p3.Phi(), p3.Rapidity());
histosKin.fill(HIST("pions-from-4pi"), p4.Pt(), p4.Eta(), p4.Phi(), p4.Rapidity());
histosKin.fill(HIST("pions-from-4pion"), p1.Pt(), p1.Eta(), p1.Phi(), p1.Rapidity());
histosKin.fill(HIST("pions-from-4pion"), p2.Pt(), p2.Eta(), p2.Phi(), p2.Rapidity());
histosKin.fill(HIST("pions-from-4pion"), p3.Pt(), p3.Eta(), p3.Phi(), p3.Rapidity());
histosKin.fill(HIST("pions-from-4pion"), p4.Pt(), p4.Eta(), p4.Phi(), p4.Rapidity());

PxPyPzMVector p1234 = p1 + p2 + p3 + p4;
PxPyPzMVector p13 = p1 + p3;
PxPyPzMVector p14 = p1 + p4;
PxPyPzMVector p23 = p2 + p3;
PxPyPzMVector p24 = p2 + p4;
PxPyPzMVector p123 = p1 + p2 + p3;
PxPyPzMVector p124 = p1 + p2 + p4;
PxPyPzMVector p134 = p1 + p3 + p4;
PxPyPzMVector p234 = p2 + p3 + p4;

// Two Pion Mass combinations
histos4piKin.fill(HIST("two-pion-mass"), p13.M(), p14.M(), p23.M(), p24.M(), p1234.M());
histos4piKin.fill(HIST("2PiPlusPiMinusMass"), p123.M(), p124.M(), p1234.M());
histos4piKin.fill(HIST("2PiMinusPiPlusMass"), p134.M(), p234.M(), p1234.M());
histos4piKin.fill(HIST("two-pion"), p1234.Pt(), p13.M(), p14.M(), p23.M(), p24.M(), p1234.M());

double fourPiPhiPair1 = collinSoperPhi(p13, p1234);
double fourPiPhiPair2 = collinSoperPhi(p14, p1234);
Expand Down Expand Up @@ -513,6 +514,15 @@ struct ExclusiveRhoTo4Pi {
PxPyPzMVector p4(selectedPionTracks[3].px(), selectedPionTracks[3].py(), selectedPionTracks[3].pz(), o2::constants::physics::MassPionCharged);
PxPyPzMVector p1234 = p1 + p2 + p3 + p4;
// Kinematics for 4 pion system from non 0 charge events
if (numPionMinusTracks == three && numPiPlusTracks == one) {
histos4piKin.fill(HIST("3piMinus-1piPlus"), p1234.Pt(), p1234.Eta(), p1234.Phi(), p1234.Rapidity(), p1234.M(), runIndex);
} else if (numPionMinusTracks == one && numPiPlusTracks == three) {
histos4piKin.fill(HIST("3piPlus-1piMinus"), p1234.Pt(), p1234.Eta(), p1234.Phi(), p1234.Rapidity(), p1234.M(), runIndex);
} else if (numPionMinusTracks == four && numPiPlusTracks == zero) {
histos4piKin.fill(HIST("4piMinus"), p1234.Pt(), p1234.Eta(), p1234.Phi(), p1234.Rapidity(), p1234.M(), runIndex);
} else if (numPionMinusTracks == zero && numPiPlusTracks == four) {
histos4piKin.fill(HIST("4piPlus"), p1234.Pt(), p1234.Eta(), p1234.Phi(), p1234.Rapidity(), p1234.M(), runIndex);
}
histos4piKin.fill(HIST("non-zero-charge"), p1234.Pt(), p1234.Eta(), p1234.Phi(), p1234.Rapidity(), p1234.M(), runIndex);
} // End of Analysis for non 0 charge events
} // End of 4 Pion Analysis Process function for Pass5 Data
Expand Down Expand Up @@ -586,74 +596,121 @@ struct ExclusiveRhoTo4Pi {
{
int runIndex = getRunNumberIndex(collision.runNumber());
// Check if the Event is reconstructed in UPC mode
if (collision.flags() != ifUPC) {
if ((collision.flags() != ifUPC) || (!sgSelector.isCBTHadronZdcOk(collision))) {
return;
}

bool ifRejectedEvent = false;

for (const auto& track : tracks) {

if (ifRejectedEvent) {
break;
}

histosDataCounter.fill(HIST("TracksCounts_vs_runNo"), runIndex, 0);
PxPyPzMVector trackVector(track.px(), track.py(), track.pz(), o2::constants::physics::MassPionCharged);
// is PV contributor
if (track.isPVContributor() != useOnlyPVtracks) {
histosDataCounter.fill(HIST("LostInTrackCut_vs_runNo"), runIndex, 1);
ifRejectedEvent = true;
continue;
}
histosDataCounter.fill(HIST("TracksCounts_vs_runNo"), runIndex, 1);

// pt cut
if (trackVector.Pt() < pTcut) {
histosDataCounter.fill(HIST("LostInTrackCut_vs_runNo"), runIndex, 2);
ifRejectedEvent = true;
continue;
}
histosDataCounter.fill(HIST("TracksCounts_vs_runNo"), runIndex, 2);

// eta cut
if (std::abs(trackVector.Eta()) > etaCut) {
histosDataCounter.fill(HIST("LostInTrackCut_vs_runNo"), runIndex, 3);
ifRejectedEvent = true;
continue;
}
histosDataCounter.fill(HIST("TracksCounts_vs_runNo"), runIndex, 3);

// DCA Z cut
if (std::abs(track.dcaZ()) > dcaZcut) {
histosDataCounter.fill(HIST("LostInTrackCut_vs_runNo"), runIndex, 4);
ifRejectedEvent = true;
continue;
}
histosDataCounter.fill(HIST("TracksCounts_vs_runNo"), runIndex, 4);

// DCA XY cut
float maxDCAxy = 0.0105 + 0.035 / std::pow(trackVector.Pt(), 1.1);
if (dcaXYcut == 0 && (std::fabs(track.dcaXY()) > maxDCAxy)) {
histosDataCounter.fill(HIST("LostInTrackCut_vs_runNo"), runIndex, 5);
ifRejectedEvent = true;
continue;
} else if (dcaXYcut != 0 && (std::fabs(track.dcaXY()) > dcaXYcut)) {
histosDataCounter.fill(HIST("LostInTrackCut_vs_runNo"), runIndex, 5);
ifRejectedEvent = true;
continue;
}
histosDataCounter.fill(HIST("TracksCounts_vs_runNo"), runIndex, 5);

// ITS Track only
if (useITStracksOnly && !track.hasITS()) {
histosDataCounter.fill(HIST("LostInTrackCut_vs_runNo"), runIndex, 6);
ifRejectedEvent = true;
continue;
}
histosDataCounter.fill(HIST("TracksCounts_vs_runNo"), runIndex, 6);

// TPC Track only
if (useTPCtracksOnly && !track.hasTPC()) {
histosDataCounter.fill(HIST("LostInTrackCut_vs_runNo"), runIndex, 7);
ifRejectedEvent = true;
continue;
}
histosDataCounter.fill(HIST("TracksCounts_vs_runNo"), runIndex, 7);

// ITS Chi2 N Clusters cut
if (track.hasITS() && track.itsChi2NCl() > itsChi2NClsCut) {
histosDataCounter.fill(HIST("LostInTrackCut_vs_runNo"), runIndex, 8);
ifRejectedEvent = true;
continue;
}
histosDataCounter.fill(HIST("TracksCounts_vs_runNo"), runIndex, 8);

// TPC Chi2 N Clusters cut
if (track.hasTPC() && track.tpcChi2NCl() > tpcChi2NClsCut) {
histosDataCounter.fill(HIST("LostInTrackCut_vs_runNo"), runIndex, 9);
ifRejectedEvent = true;
continue;
}
histosDataCounter.fill(HIST("TracksCounts_vs_runNo"), runIndex, 9);

// TPC N Clusters Findable cut
if (track.hasTPC() && track.tpcNClsFindable() < tpcNClsFindableCut) {
histosDataCounter.fill(HIST("LostInTrackCut_vs_runNo"), runIndex, 10);
ifRejectedEvent = true;
continue;
}
histosDataCounter.fill(HIST("TracksCounts_vs_runNo"), runIndex, 10);

// Selection PID Pion
if (ifPion(track, useTOF, nSigmaTPCcut, nSigmaTOFcut)) {
histosDataCounter.fill(HIST("TracksCounts_vs_runNo"), runIndex, 11);
if (track.sign() == 1) {
histosDataCounter.fill(HIST("TracksCounts_vs_runNo"), runIndex, 12);
} else {
histosDataCounter.fill(HIST("LostInTrackCut_vs_runNo"), runIndex, 12);
}
if (track.sign() == -1) {
histosDataCounter.fill(HIST("TracksCounts_vs_runNo"), runIndex, 13);
} else {
histosDataCounter.fill(HIST("LostInTrackCut_vs_runNo"), runIndex, 13);
}
} else {
histosDataCounter.fill(HIST("LostInTrackCut_vs_runNo"), runIndex, 11);
ifRejectedEvent = true;
} // End of Selection PID Pion
} // End of loop over tracks
} // End of processCounter function
Expand Down Expand Up @@ -856,10 +913,10 @@ struct ExclusiveRhoTo4Pi {
PxPyPzMVector p4(selectedPionMinusTracks[1].px(), selectedPionMinusTracks[1].py(), selectedPionMinusTracks[1].pz(), o2::constants::physics::MassPionCharged);

// Kinematics for pions from 4 pion events
histosKin.fill(HIST("pions-from-4pi"), p1.Pt(), p1.Eta(), p1.Phi(), p1.Rapidity());
histosKin.fill(HIST("pions-from-4pi"), p2.Pt(), p2.Eta(), p2.Phi(), p2.Rapidity());
histosKin.fill(HIST("pions-from-4pi"), p3.Pt(), p3.Eta(), p3.Phi(), p3.Rapidity());
histosKin.fill(HIST("pions-from-4pi"), p4.Pt(), p4.Eta(), p4.Phi(), p4.Rapidity());
histosKin.fill(HIST("pions-from-4pion"), p1.Pt(), p1.Eta(), p1.Phi(), p1.Rapidity());
histosKin.fill(HIST("pions-from-4pion"), p2.Pt(), p2.Eta(), p2.Phi(), p2.Rapidity());
histosKin.fill(HIST("pions-from-4pion"), p3.Pt(), p3.Eta(), p3.Phi(), p3.Rapidity());
histosKin.fill(HIST("pions-from-4pion"), p4.Pt(), p4.Eta(), p4.Phi(), p4.Rapidity());

PxPyPzMVector p1234 = p1 + p2 + p3 + p4;
PxPyPzMVector p13 = p1 + p3;
Expand All @@ -868,7 +925,7 @@ struct ExclusiveRhoTo4Pi {
PxPyPzMVector p24 = p2 + p4;

// Two Pion Mass combinations
histos4piKin.fill(HIST("two-pion-mass"), p13.M(), p14.M(), p23.M(), p24.M(), p1234.M());
histos4piKin.fill(HIST("two-pion"), p13.M(), p14.M(), p23.M(), p24.M(), p1234.M());

double fourPiPhiPair1 = collinSoperPhi(p13, p1234);
double fourPiPhiPair2 = collinSoperPhi(p14, p1234);
Expand All @@ -884,6 +941,7 @@ struct ExclusiveRhoTo4Pi {
double mDiff14 = std::abs((p14.M() - mRho0));
double mDiff23 = std::abs((p23.M() - mRho0));
double mDiff24 = std::abs((p24.M() - mRho0));

if ((mDiff13 < mDiff14) && (mDiff13 < mDiff23) && (mDiff13 < mDiff24)) {
histos4piKin.fill(HIST("zero-charge"), p1234.Pt(), p1234.Eta(), p1234.Phi(), p1234.Rapidity(), p1234.M(), fourPiCosThetaPair1, fourPiPhiPair1, runIndex);
} else if ((mDiff14 < mDiff13) && (mDiff14 < mDiff23) && (mDiff14 < mDiff24)) {
Expand All @@ -903,6 +961,15 @@ struct ExclusiveRhoTo4Pi {
PxPyPzMVector p4(selectedPionTracks[3].px(), selectedPionTracks[3].py(), selectedPionTracks[3].pz(), o2::constants::physics::MassPionCharged);
PxPyPzMVector p1234 = p1 + p2 + p3 + p4;
// Kinematics for 4 pion system from non 0 charge events
if (numPionMinusTracks == three && numPiPlusTracks == one) {
histos4piKin.fill(HIST("3piMinus-1piPlus"), p1234.Pt(), p1234.Eta(), p1234.Phi(), p1234.Rapidity(), p1234.M(), runIndex);
} else if (numPionMinusTracks == one && numPiPlusTracks == three) {
histos4piKin.fill(HIST("3piPlus-1piMinus"), p1234.Pt(), p1234.Eta(), p1234.Phi(), p1234.Rapidity(), p1234.M(), runIndex);
} else if (numPionMinusTracks == four && numPiPlusTracks == zero) {
histos4piKin.fill(HIST("4piMinus"), p1234.Pt(), p1234.Eta(), p1234.Phi(), p1234.Rapidity(), p1234.M(), runIndex);
} else if (numPionMinusTracks == zero && numPiPlusTracks == four) {
histos4piKin.fill(HIST("4piPlus"), p1234.Pt(), p1234.Eta(), p1234.Phi(), p1234.Rapidity(), p1234.M(), runIndex);
}
histos4piKin.fill(HIST("non-zero-charge"), p1234.Pt(), p1234.Eta(), p1234.Phi(), p1234.Rapidity(), p1234.M(), runIndex);
} // End of Analysis for non 0 charge events
} // End of 4 Pion Analysis Process function for Pass5 MC
Expand All @@ -924,11 +991,11 @@ struct ExclusiveRhoTo4Pi {
for (const auto& daughter : particle.daughters_as<aod::UDMcParticles>()) {
PxPyPzMVector dVector(daughter.px(), daughter.py(), daughter.pz(), o2::constants::physics::MassPionCharged);
if (daughter.pdgCode() == PDG_t::kPiPlus) {
histosMCtruth.fill(HIST("pions-from-4pi"), dVector.Pt(), dVector.Eta(), dVector.Phi(), dVector.Rapidity(), runIndex);
histosMCtruth.fill(HIST("4-pi-pions"), dVector.Pt(), dVector.Eta(), dVector.Phi(), dVector.Rapidity(), runIndex);
p1234 = p1234 + dVector;
}
if (daughter.pdgCode() == PDG_t::kPiMinus) {
histosMCtruth.fill(HIST("pions-from-4pi"), dVector.Pt(), dVector.Eta(), dVector.Phi(), dVector.Rapidity(), runIndex);
histosMCtruth.fill(HIST("4-pi-pions"), dVector.Pt(), dVector.Eta(), dVector.Phi(), dVector.Rapidity(), runIndex);
p1234 = p1234 + dVector;
}
} // End of loop over daughters
Expand Down Expand Up @@ -1105,6 +1172,7 @@ struct ExclusiveRhoTo4Pi {

auto h1 = histosDataCounter.get<TH2>(HIST("EventsCounts_vs_runNo"));
auto h2 = histosDataCounter.get<TH2>(HIST("TracksCounts_vs_runNo"));
auto h21 = histosDataCounter.get<TH2>(HIST("LostInTrackCut_vs_runNo"));

auto h3 = histos4piKin.get<THnSparse>(HIST("zero-charge"));
auto h4 = histos4piKin.get<THnSparse>(HIST("non-zero-charge"));
Expand All @@ -1115,9 +1183,13 @@ struct ExclusiveRhoTo4Pi {
}
for (int i = 0; i < numTrackCuts; ++i) {
h2->GetYaxis()->SetBinLabel(i + 1, trackLabels[i].c_str());
h21->GetYaxis()->SetBinLabel(i + 1, trackLabels[i].c_str());
}
for (int i = 0; i < numRunNums; ++i) {
std::string runLabel = std::to_string(runNos[i]);
h1->GetXaxis()->SetBinLabel(i + 1, runLabel.c_str());
h2->GetXaxis()->SetBinLabel(i + 1, runLabel.c_str());
h21->GetXaxis()->SetBinLabel(i + 1, runLabel.c_str());
h3->GetAxis(7)->SetBinLabel(i + 1, runLabel.c_str());
h4->GetAxis(5)->SetBinLabel(i + 1, runLabel.c_str());
h5->GetAxis(5)->SetBinLabel(i + 1, runLabel.c_str());
Expand Down
Loading