Skip to content

Commit 095b31d

Browse files
committed
[PWGEM,PWGEM-36] Pi0Flow: Add DeltaEtaDeltaPhiMinvPtCent histograms for SE and ME
Add DeltaEtaDeltaPhiMinvPtCent histograms with coarse binning as THnF for same event and mixed event to the mesonQA. These histograms should allow to analyze the side band and peak invairant mass regions for DeltaEta DeltaPhi correlations to study the impact of: - flow: cos(n * DeltaPhi) over all DeltaEta - resonance decays: near side peak around (DeltaEta,DeltaPhi) = (0,0), narrow in DeltaEta - back to back jets: away side excess around DeltaPhi = pi
1 parent 0786066 commit 095b31d

1 file changed

Lines changed: 37 additions & 7 deletions

File tree

‎PWGEM/PhotonMeson/Tasks/taskPi0FlowEMC.cxx‎

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,7 +1077,12 @@ struct TaskPi0FlowEMC {
10771077

10781078
float dTheta = v1.Theta() - v2.Theta();
10791079
float dPhi = v1.Phi() - v2.Phi();
1080+
float dPhiWrapped = RecoDecay::constrainAngle(v1.Phi() - v2.Phi(), -o2::constants::math::PI); // wrap to [-π, π)
10801081
float dEta = v1.Eta() - v2.Eta();
1082+
if (dPhiWrapped < 0.) { // swap the labels: flip BOTH signs
1083+
dPhiWrapped = -dPhiWrapped;
1084+
dEta = -dEta;
1085+
}
10811086
float openingAngle = std::acos(v1.Vect().Dot(v2.Vect()) / (v1.P() * v2.P()));
10821087

10831088
registry.fill(HIST("hMesonCuts"), 1);
@@ -1101,7 +1106,7 @@ struct TaskPi0FlowEMC {
11011106
registry.fill(HIST("mesonQA/hTanThetaPhi"), vMeson.M(), getAngleDegree(std::atan(dTheta / dPhi)));
11021107
registry.fill(HIST("mesonQA/hAlphaPt"), (v1.E() - v2.E()) / (v1.E() + v2.E()), vMeson.Pt());
11031108
registry.fill(HIST("mesonQA/hEtaPhiAngleMassCent"), RecoDecay::constrainAngle(std::atan2(dEta, dPhi), -o2::constants::math::PI), vMeson.M(), getCentrality(collision));
1104-
registry.fill(HIST("mesonQA/hDeltaEtaDeltaPhiMinvPtCentSE"), vMeson.M(), vMeson.Pt(), dEta, std::fabs(RecoDecay::constrainAngle(dPhi, -o2::constants::math::PI)), getCentrality(collision));
1109+
registry.fill(HIST("mesonQA/hDeltaEtaDeltaPhiMinvPtCentSE"), vMeson.M(), vMeson.Pt(), dEta, dPhiWrapped, getCentrality(collision));
11051110
}
11061111
if (mesonConfig.enableTanThetadPhi.value && mesonConfig.minTanThetadPhi > std::fabs(getAngleDegree(std::atan(dTheta / dPhi)))) {
11071112
registry.fill(HIST("hMesonCuts"), 5);
@@ -1241,7 +1246,12 @@ struct TaskPi0FlowEMC {
12411246

12421247
float dTheta = v1.Theta() - v2.Theta();
12431248
float dPhi = v1.Phi() - v2.Phi();
1244-
float dEta = v1.Eta() - eta2;
1249+
float dPhiWrapped = RecoDecay::constrainAngle(v1.Phi() - v2.Phi(), -o2::constants::math::PI); // wrap to [-π, π)
1250+
float dEta = v1.Eta() - v2.Eta();
1251+
if (dPhiWrapped < 0.) { // swap the labels: flip BOTH signs
1252+
dPhiWrapped = -dPhiWrapped;
1253+
dEta = -dEta;
1254+
}
12451255
float openingAngle = std::acos(v1.Vect().Dot(v2.Vect()) / (v1.P() * v2.P()));
12461256

12471257
registry.fill(HIST("hMesonCutsMixed"), 1);
@@ -1262,7 +1272,7 @@ struct TaskPi0FlowEMC {
12621272
registry.fill(HIST("mesonQA/hTanThetaPhiMixed"), vMeson.M(), getAngleDegree(std::atan(dTheta / dPhi)));
12631273
registry.fill(HIST("mesonQA/hAlphaPtMixed"), (v1.E() - v2.E()) / (v1.E() + v2.E()), vMeson.Pt());
12641274
registry.fill(HIST("mesonQA/hEtaPhiAngleMassCentMixed"), RecoDecay::constrainAngle(std::atan2(dEta, dPhi), -o2::constants::math::PI), vMeson.M(), getCentrality(c1));
1265-
registry.fill(HIST("mesonQA/hDeltaEtaDeltaPhiMinvPtCentME"), vMeson.M(), vMeson.Pt(), dEta, std::fabs(RecoDecay::constrainAngle(dPhi, -o2::constants::math::PI)), getCentrality(c1));
1275+
registry.fill(HIST("mesonQA/hDeltaEtaDeltaPhiMinvPtCentME"), vMeson.M(), vMeson.Pt(), dEta, dPhiWrapped, getCentrality(c1));
12661276
}
12671277
if (mesonConfig.enableTanThetadPhi.value && mesonConfig.minTanThetadPhi > std::fabs(getAngleDegree(std::atan(dTheta / dPhi)))) {
12681278
registry.fill(HIST("hMesonCutsMixed"), 5);
@@ -1335,7 +1345,12 @@ struct TaskPi0FlowEMC {
13351345

13361346
float dTheta = v1.Theta() - v2.Theta();
13371347
float dPhi = v1.Phi() - v2.Phi();
1348+
float dPhiWrapped = RecoDecay::constrainAngle(v1.Phi() - v2.Phi(), -o2::constants::math::PI); // wrap to [-π, π)
13381349
float dEta = v1.Eta() - v2.Eta();
1350+
if (dPhiWrapped < 0.) { // swap the labels: flip BOTH signs
1351+
dPhiWrapped = -dPhiWrapped;
1352+
dEta = -dEta;
1353+
}
13391354
float openingAngle = std::acos(v1.Vect().Dot(v2.Vect()) / (v1.P() * v2.P()));
13401355
registry.fill(HIST("hMesonCuts"), 1);
13411356
if (openingAngle <= mesonConfig.minOpenAngle) {
@@ -1358,7 +1373,7 @@ struct TaskPi0FlowEMC {
13581373
registry.fill(HIST("mesonQA/hTanThetaPhi"), vMeson.M(), getAngleDegree(std::atan(dTheta / dPhi)));
13591374
registry.fill(HIST("mesonQA/hAlphaPt"), (v1.E() - v2.E()) / (v1.E() + v2.E()), vMeson.Pt());
13601375
registry.fill(HIST("mesonQA/hEtaPhiAngleMassCent"), RecoDecay::constrainAngle(std::atan2(dEta, dPhi), -o2::constants::math::PI), vMeson.M(), getCentrality(collision));
1361-
registry.fill(HIST("mesonQA/hDeltaEtaDeltaPhiMinvPtCentSE"), vMeson.M(), vMeson.Pt(), dEta, std::fabs(RecoDecay::constrainAngle(dPhi, -o2::constants::math::PI)), getCentrality(collision));
1376+
registry.fill(HIST("mesonQA/hDeltaEtaDeltaPhiMinvPtCentSE"), vMeson.M(), vMeson.Pt(), dEta, dPhiWrapped, getCentrality(collision));
13621377
}
13631378
if (mesonConfig.enableTanThetadPhi.value && mesonConfig.minTanThetadPhi > std::fabs(getAngleDegree(std::atan(dTheta / dPhi)))) {
13641379
registry.fill(HIST("hMesonCuts"), 5);
@@ -1434,7 +1449,12 @@ struct TaskPi0FlowEMC {
14341449

14351450
float dTheta = v1.Theta() - v2.Theta();
14361451
float dPhi = v1.Phi() - v2.Phi();
1452+
float dPhiWrapped = RecoDecay::constrainAngle(v1.Phi() - v2.Phi(), -o2::constants::math::PI); // wrap to [-π, π)
14371453
float dEta = v1.Eta() - v2.Eta();
1454+
if (dPhiWrapped < 0.) { // swap the labels: flip BOTH signs
1455+
dPhiWrapped = -dPhiWrapped;
1456+
dEta = -dEta;
1457+
}
14381458
float openingAngle = std::acos(v1.Vect().Dot(v2.Vect()) / (v1.P() * v2.P()));
14391459

14401460
registry.fill(HIST("hMesonCutsMixed"), 1);
@@ -1455,7 +1475,7 @@ struct TaskPi0FlowEMC {
14551475
registry.fill(HIST("mesonQA/hTanThetaPhiMixed"), vMeson.M(), getAngleDegree(std::atan(dTheta / dPhi)));
14561476
registry.fill(HIST("mesonQA/hAlphaPtMixed"), (v1.E() - v2.E()) / (v1.E() + v2.E()), vMeson.Pt());
14571477
registry.fill(HIST("mesonQA/hEtaPhiAngleMassCentMixed"), RecoDecay::constrainAngle(std::atan2(dEta, dPhi), -o2::constants::math::PI), vMeson.M(), getCentrality(c1));
1458-
registry.fill(HIST("mesonQA/hDeltaEtaDeltaPhiMinvPtCentME"), vMeson.M(), vMeson.Pt(), dEta, std::fabs(RecoDecay::constrainAngle(dPhi, -o2::constants::math::PI)), getCentrality(c1));
1478+
registry.fill(HIST("mesonQA/hDeltaEtaDeltaPhiMinvPtCentME"), vMeson.M(), vMeson.Pt(), dEta, dPhiWrapped, getCentrality(c1));
14591479
}
14601480
if (mesonConfig.enableTanThetadPhi.value && mesonConfig.minTanThetadPhi > std::fabs(getAngleDegree(std::atan(dTheta / dPhi)))) {
14611481
registry.fill(HIST("hMesonCutsMixed"), 5);
@@ -1556,7 +1576,12 @@ struct TaskPi0FlowEMC {
15561576
ROOT::Math::PtEtaPhiMVector vMeson = v1 + v2;
15571577

15581578
float dPhi = v1.Phi() - v2.Phi();
1579+
float dPhiWrapped = RecoDecay::constrainAngle(v1.Phi() - v2.Phi(), -o2::constants::math::PI); // wrap to [-π, π)
15591580
float dEta = v1.Eta() - v2.Eta();
1581+
if (dPhiWrapped < 0.) { // swap the labels: flip BOTH signs
1582+
dPhiWrapped = -dPhiWrapped;
1583+
dEta = -dEta;
1584+
}
15601585
float openingAngle = std::acos(v1.Vect().Dot(v2.Vect()) / (v1.P() * v2.P()));
15611586

15621587
registry.fill(HIST("hMesonCuts"), 1);
@@ -1576,7 +1601,7 @@ struct TaskPi0FlowEMC {
15761601
registry.fill(HIST("mesonQA/hInvMassPt"), vMeson.M(), vMeson.Pt());
15771602
registry.fill(HIST("mesonQA/hAlphaPt"), (v1.E() - v2.E()) / (v1.E() + v2.E()), vMeson.Pt());
15781603
registry.fill(HIST("mesonQA/hEtaPhiAngleMassCent"), RecoDecay::constrainAngle(std::atan2(dEta, dPhi), -o2::constants::math::PI), vMeson.M(), getCentrality(collision));
1579-
registry.fill(HIST("mesonQA/hDeltaEtaDeltaPhiMinvPtCentSE"), vMeson.M(), vMeson.Pt(), dEta, std::fabs(RecoDecay::constrainAngle(dPhi, -o2::constants::math::PI)), getCentrality(collision));
1604+
registry.fill(HIST("mesonQA/hDeltaEtaDeltaPhiMinvPtCentSE"), vMeson.M(), vMeson.Pt(), dEta, dPhiWrapped, getCentrality(collision));
15801605
}
15811606
registry.fill(HIST("hMesonCuts"), 6);
15821607
runFlowAnalysis<0>(collision, vMeson);
@@ -1631,7 +1656,12 @@ struct TaskPi0FlowEMC {
16311656
ROOT::Math::PtEtaPhiMVector vMeson = v1 + v2;
16321657

16331658
float dPhi = v1.Phi() - v2.Phi();
1659+
float dPhiWrapped = RecoDecay::constrainAngle(v1.Phi() - v2.Phi(), -o2::constants::math::PI); // wrap to [-π, π)
16341660
float dEta = v1.Eta() - v2.Eta();
1661+
if (dPhiWrapped < 0.) { // swap the labels: flip BOTH signs
1662+
dPhiWrapped = -dPhiWrapped;
1663+
dEta = -dEta;
1664+
}
16351665
float openingAngle = std::acos(v1.Vect().Dot(v2.Vect()) / (v1.P() * v2.P()));
16361666

16371667
registry.fill(HIST("hMesonCutsMixed"), 1);
@@ -1651,7 +1681,7 @@ struct TaskPi0FlowEMC {
16511681
registry.fill(HIST("mesonQA/hInvMassPtMixed"), vMeson.M(), vMeson.Pt());
16521682
registry.fill(HIST("mesonQA/hAlphaPtMixed"), (v1.E() - v2.E()) / (v1.E() + v2.E()), vMeson.Pt());
16531683
registry.fill(HIST("mesonQA/hEtaPhiAngleMassCent"), RecoDecay::constrainAngle(std::atan2(dEta, dPhi), -o2::constants::math::PI), vMeson.M(), getCentrality(c1));
1654-
registry.fill(HIST("mesonQA/hDeltaEtaDeltaPhiMinvPtCentME"), vMeson.M(), vMeson.Pt(), dEta, std::fabs(RecoDecay::constrainAngle(dPhi, -o2::constants::math::PI)), getCentrality(c1));
1684+
registry.fill(HIST("mesonQA/hDeltaEtaDeltaPhiMinvPtCentME"), vMeson.M(), vMeson.Pt(), dEta, dPhiWrapped, getCentrality(c1));
16551685
}
16561686
registry.fill(HIST("hMesonCutsMixed"), 6);
16571687
runFlowAnalysis<2>(c1, vMeson);

0 commit comments

Comments
 (0)