|
29 | 29 | #include <Framework/HistogramSpec.h> |
30 | 30 | #include <Framework/Logger.h> |
31 | 31 |
|
| 32 | +#include <Math/Vector3D.h> // IWYU pragma: keep (do not replace with Math/Vector3Dfwd.h) |
| 33 | +#include <Math/Vector3Dfwd.h> |
32 | 34 | #include <Math/Vector4D.h> // IWYU pragma: keep (do not replace with Math/Vector4Dfwd.h) |
33 | 35 | #include <Math/Vector4Dfwd.h> |
34 | 36 | #include <TH1.h> |
@@ -105,6 +107,19 @@ enum PairHist { |
105 | 107 | kKstarVsMtVsMinvVsKtVsPt1VsPt2VsMultVsCent, |
106 | 108 | // dalitz plots |
107 | 109 | kDalitz, // between a track and pos/neg daughter of another particle |
| 110 | + // angles |
| 111 | + kAlpha, // angle between pT1 and pT2 of the paritcles in the lab frame |
| 112 | + kAlphaVsKstar, |
| 113 | + kAlphaVsKt, |
| 114 | + kAlphaVsMt, |
| 115 | + kBetaLab, // angle between kT and kstar in lab frame |
| 116 | + kBetaLabVsKstar, |
| 117 | + kBetaLabVsKt, |
| 118 | + kBetaLabVsMt, |
| 119 | + kKstarVsAlphaVsMtVsMult, |
| 120 | + kKstarVsAlphaVsMtVsPt1VsPt2VsMult, |
| 121 | + kKstarVsBetaLabVsMtVsMult, |
| 122 | + kKstarVsBetaLabVsMtVsPt1VsPt2VsMult, |
108 | 123 | // reco-vs-mc-truth correlation (requires BOTH a reco pair and matched mc info) |
109 | 124 | kTrueKstarVsKstar, |
110 | 125 | kTrueKtVsKt, |
@@ -213,6 +228,14 @@ struct ConfPairBinning : o2::framework::ConfigurableGroup { |
213 | 228 | o2::framework::Configurable<bool> plotKstarVsMtVsMinvVsKtVsPt1VsPt2VsMultVsCent{"plotKstarVsMtVsMinvVsKtVsPt1VsPt2VsMultVsCent", false, "(Reco) Enable 8D histogram (Kstar Vs Mt Vs Minv Vs Kt Vs Pt1 Vs Pt2 Vs Mult Vs Cent)"}; |
214 | 229 | o2::framework::Configurable<bool> plotDalitz{"plotDalitz", false, "(Reco) Enable dalitz plot. Not supported for pure mc-truth pairs (no trackTable/daughter structure)"}; |
215 | 230 | o2::framework::Configurable<bool> plotDeltaEtaDeltaPhi{"plotDeltaEtaDeltaPhi", false, "(Reco/Mc) Plot #Delta#phi vs #Delta#eta"}; |
| 231 | + o2::framework::Configurable<bool> plotAlpha{"plotAlpha", false, "(Reco/Mc) Plot alpha (angle between pT1 and pT2) 1D distribution, and (if plot2D) vs kstar/kT/mT"}; |
| 232 | + o2::framework::ConfigurableAxis alpha{"alpha", {{180, -o2::constants::math::PI, o2::constants::math::PI}}, "alpha (angle between pT1 and pT2)"}; |
| 233 | + o2::framework::Configurable<bool> plotKstarVsAlphaVsMtVsMult{"plotKstarVsAlphaVsMtVsMult", false, "(Reco/Mc) Enable 4D histogram (Kstar Vs Alpha Vs Mt Vs Mult)"}; |
| 234 | + o2::framework::Configurable<bool> plotKstarVsAlphaVsMtVsPt1VsPt2VsMult{"plotKstarVsAlphaVsMtVsPt1VsPt2VsMult", false, "(Reco/Mc) Enable 6D histogram (Kstar Vs Alpha Vs Mt Vs Pt1 Vs Pt2 Vs Mult)"}; |
| 235 | + o2::framework::Configurable<bool> plotBetaLab{"plotBetaLab", false, "(Reco/Mc) Plot betaLab (angle between kT and k* in lab frame) 1D distribution, and (if plot2D) vs kstar/kT/mT"}; |
| 236 | + o2::framework::ConfigurableAxis betaLab{"betaLab", {{90, 0.f, o2::constants::math::PI}}, "betaLab (angle between kT and k* in lab frame)"}; |
| 237 | + o2::framework::Configurable<bool> plotKstarVsBetaLabVsMtVsMult{"plotKstarVsBetaLabVsMtVsMult", false, "(Reco/Mc) Enable 4D histogram (Kstar Vs BetaLab Vs Mt Vs Mult)"}; |
| 238 | + o2::framework::Configurable<bool> plotKstarVsBetaLabVsMtVsPt1VsPt2VsMult{"plotKstarVsBetaLabVsMtVsPt1VsPt2VsMult", false, "(Reco/Mc) Enable 6D histogram (Kstar Vs BetaLab Vs Mt Vs Pt1 Vs Pt2 Vs Mult)"}; |
216 | 239 | o2::framework::ConfigurableAxis kstar{"kstar", {{600, 0, 6}}, "kstar"}; |
217 | 240 | o2::framework::ConfigurableAxis kt{"kt", {{600, 0, 6}}, "kt"}; |
218 | 241 | o2::framework::ConfigurableAxis mt{"mt", {{500, 0.8, 5.8}}, "mt"}; |
@@ -355,6 +378,19 @@ constexpr std::array<histmanager::HistInfo<PairHist>, kPairHistogramLast> |
355 | 378 | {kMeVtz1VsMult1VsCent1VsVtz2VsMult2VsCent2, o2::framework::HistType::kTHnSparseF, "hVtz1VsMult1VsCent1VsVtz2VsMult2VsCent2", "Mixing bins; V_{z,1} (cm); multiplicity_{1}; centrality_{1} (%); V_{z,2} (cm); multiplicity_{2}; centrality_{2} (%)"}, |
356 | 379 | // angular |
357 | 380 | {kDeltaEtaDeltaPhi, o2::framework::HistType::kTH2F, "hDeltaEtaDeltaPhi", "#Delta#phi vs #Delta#eta; #Delta#phi; #Delta#eta"}, |
| 381 | + // angles |
| 382 | + {kAlpha, o2::framework::HistType::kTH1F, "hAlpha", "angle between p_{T,1} and p_{T,2}; #alpha; Entries"}, |
| 383 | + {kAlphaVsKstar, o2::framework::HistType::kTH2F, "hAlphaVsKstar", "#alpha vs k*; #alpha; k* (GeV/#it{c})"}, |
| 384 | + {kAlphaVsKt, o2::framework::HistType::kTH2F, "hAlphaVsKt", "#alpha vs k_{T}; #alpha; k_{T} (GeV/#it{c})"}, |
| 385 | + {kAlphaVsMt, o2::framework::HistType::kTH2F, "hAlphaVsMt", "#alpha vs m_{T}; #alpha; m_{T} (GeV/#it{c}^{2})"}, |
| 386 | + {kBetaLab, o2::framework::HistType::kTH1F, "hBetaLab", "angle between k_{T} and k* (lab frame); #beta_{lab}; Entries"}, |
| 387 | + {kBetaLabVsKstar, o2::framework::HistType::kTH2F, "hBetaLabVsKstar", "#beta_{lab} vs k*; #beta_{lab}; k* (GeV/#it{c})"}, |
| 388 | + {kBetaLabVsKt, o2::framework::HistType::kTH2F, "hBetaLabVsKt", "#beta_{lab} vs k_{T}; #beta_{lab}; k_{T} (GeV/#it{c})"}, |
| 389 | + {kBetaLabVsMt, o2::framework::HistType::kTH2F, "hBetaLabVsMt", "#beta_{lab} vs m_{T}; #beta_{lab}; m_{T} (GeV/#it{c}^{2})"}, |
| 390 | + {kKstarVsAlphaVsMtVsMult, o2::framework::HistType::kTHnSparseF, "hKstarVsAlphaVsMtVsMult", "k* vs #alpha vs m_{T} vs multiplicity; k* (GeV/#it{c}); #alpha; m_{T} (GeV/#it{c}^{2}); Multiplicity;"}, |
| 391 | + {kKstarVsAlphaVsMtVsPt1VsPt2VsMult, o2::framework::HistType::kTHnSparseF, "hKstarVsAlphaVsMtVsPt1VsPt2VsMult", "k* vs #alpha vs m_{T} vs p_{T,1} vs p_{T,2} vs multiplicity; k* (GeV/#it{c}); #alpha; m_{T} (GeV/#it{c}^{2}); p_{T,1} (GeV/#it{c}); p_{T,2} (GeV/#it{c}); Multiplicity;"}, |
| 392 | + {kKstarVsBetaLabVsMtVsMult, o2::framework::HistType::kTHnSparseF, "hKstarVsBetaLabVsMtVsMult", "k* vs #beta_{lab} vs m_{T} vs multiplicity; k* (GeV/#it{c}); #beta_{lab}; m_{T} (GeV/#it{c}^{2}); Multiplicity;"}, |
| 393 | + {kKstarVsBetaLabVsMtVsPt1VsPt2VsMult, o2::framework::HistType::kTHnSparseF, "hKstarVsBetaLabVsMtVsPt1VsPt2VsMult", "k* vs #beta_{lab} vs m_{T} vs p_{T,1} vs p_{T,2} vs multiplicity; k* (GeV/#it{c}); #beta_{lab}; m_{T} (GeV/#it{c}^{2}); p_{T,1} (GeV/#it{c}); p_{T,2} (GeV/#it{c}); Multiplicity;"}, |
358 | 394 | // Bertsch-Pratt 3D decomposition in LCMS |
359 | 395 | {kQout, o2::framework::HistType::kTH1F, "hQout", "q_{out} in LCMS; q_{out} (GeV/#it{c}); Entries"}, |
360 | 396 | {kQside, o2::framework::HistType::kTH1F, "hQside", "q_{side} in LCMS; q_{side} (GeV/#it{c}); Entries"}, |
@@ -410,6 +446,18 @@ constexpr std::array<histmanager::HistInfo<PairHist>, kPairHistogramLast> |
410 | 446 | {kKstarVsMtVsMinvVsKtVsPt1VsPt2VsMultVsCent, {(confAnalysis).kstar, (confAnalysis).mt, (confAnalysis).massInv, (confAnalysis).kt, (confAnalysis).pt1, (confAnalysis).pt2, (confAnalysis).multiplicity, (confAnalysis).centrality}}, \ |
411 | 447 | {kDalitz, {(confAnalysis).kstar, (confAnalysis).dalitzMtot, (confAnalysis).dalitzM12, (confAnalysis).dalitzM13}}, \ |
412 | 448 | {kDeltaEtaDeltaPhi, {(confAnalysis).binningDeltaPhi, (confAnalysis).binningDeltaEta}}, \ |
| 449 | + {kAlpha, {(confAnalysis).alpha}}, \ |
| 450 | + {kAlphaVsKstar, {(confAnalysis).alpha, (confAnalysis).kstar}}, \ |
| 451 | + {kAlphaVsKt, {(confAnalysis).alpha, (confAnalysis).kt}}, \ |
| 452 | + {kAlphaVsMt, {(confAnalysis).alpha, (confAnalysis).mt}}, \ |
| 453 | + {kBetaLab, {(confAnalysis).betaLab}}, \ |
| 454 | + {kBetaLabVsKstar, {(confAnalysis).betaLab, (confAnalysis).kstar}}, \ |
| 455 | + {kBetaLabVsKt, {(confAnalysis).betaLab, (confAnalysis).kt}}, \ |
| 456 | + {kBetaLabVsMt, {(confAnalysis).betaLab, (confAnalysis).mt}}, \ |
| 457 | + {kKstarVsAlphaVsMtVsMult, {(confAnalysis).kstar, (confAnalysis).alpha, (confAnalysis).mt, (confAnalysis).multiplicity}}, \ |
| 458 | + {kKstarVsAlphaVsMtVsPt1VsPt2VsMult, {(confAnalysis).kstar, (confAnalysis).alpha, (confAnalysis).mt, (confAnalysis).pt1, (confAnalysis).pt2, (confAnalysis).multiplicity}}, \ |
| 459 | + {kKstarVsBetaLabVsMtVsMult, {(confAnalysis).kstar, (confAnalysis).betaLab, (confAnalysis).mt, (confAnalysis).multiplicity}}, \ |
| 460 | + {kKstarVsBetaLabVsMtVsPt1VsPt2VsMult, {(confAnalysis).kstar, (confAnalysis).betaLab, (confAnalysis).mt, (confAnalysis).pt1, (confAnalysis).pt2, (confAnalysis).multiplicity}}, \ |
413 | 461 | {kQout, {(confAnalysis).qout}}, \ |
414 | 462 | {kQside, {(confAnalysis).qside}}, \ |
415 | 463 | {kQlong, {(confAnalysis).qlong}}, \ |
@@ -588,6 +636,12 @@ class PairHistManager |
588 | 636 |
|
589 | 637 | mPlotDalitz = ConfPairBinning.plotDalitz.value; |
590 | 638 | mPlotDeltaEtaDeltaPhi = ConfPairBinning.plotDeltaEtaDeltaPhi.value; |
| 639 | + mPlotAlpha = ConfPairBinning.plotAlpha.value; |
| 640 | + mPlotKstarVsAlphaVsMtVsMult = ConfPairBinning.plotKstarVsAlphaVsMtVsMult.value; |
| 641 | + mPlotKstarVsAlphaVsMtVsPt1VsPt2VsMult = ConfPairBinning.plotKstarVsAlphaVsMtVsPt1VsPt2VsMult.value; |
| 642 | + mPlotBetaLab = ConfPairBinning.plotBetaLab.value; |
| 643 | + mPlotKstarVsBetaLabVsMtVsMult = ConfPairBinning.plotKstarVsBetaLabVsMtVsMult.value; |
| 644 | + mPlotKstarVsBetaLabVsMtVsPt1VsPt2VsMult = ConfPairBinning.plotKstarVsBetaLabVsMtVsPt1VsPt2VsMult.value; |
591 | 645 | mPlotBertschPratt = ConfPairBinning.plotBertschPratt.value; |
592 | 646 | mPlotEventShape = ConfPairBinning.plotEventShape.value; |
593 | 647 |
|
@@ -1004,6 +1058,34 @@ class PairHistManager |
1004 | 1058 | if (mPlotDeltaEtaDeltaPhi) { |
1005 | 1059 | mHistogramRegistry->add(analysisDir + getHistNameV2(kDeltaEtaDeltaPhi, HistTable), getHistDesc(kDeltaEtaDeltaPhi, HistTable), getHistType(kDeltaEtaDeltaPhi, HistTable), {Specs.at(kDeltaEtaDeltaPhi)}); |
1006 | 1060 | } |
| 1061 | + if (mPlotAlpha) { |
| 1062 | + mHistogramRegistry->add(analysisDir + getHistNameV2(kAlpha, HistTable), getHistDesc(kAlpha, HistTable), getHistType(kAlpha, HistTable), {Specs.at(kAlpha)}); |
| 1063 | + if (mPlot2d) { |
| 1064 | + mHistogramRegistry->add(analysisDir + getHistNameV2(kAlphaVsKstar, HistTable), getHistDesc(kAlphaVsKstar, HistTable), getHistType(kAlphaVsKstar, HistTable), {Specs.at(kAlphaVsKstar)}); |
| 1065 | + mHistogramRegistry->add(analysisDir + getHistNameV2(kAlphaVsKt, HistTable), getHistDesc(kAlphaVsKt, HistTable), getHistType(kAlphaVsKt, HistTable), {Specs.at(kAlphaVsKt)}); |
| 1066 | + mHistogramRegistry->add(analysisDir + getHistNameV2(kAlphaVsMt, HistTable), getHistDesc(kAlphaVsMt, HistTable), getHistType(kAlphaVsMt, HistTable), {Specs.at(kAlphaVsMt)}); |
| 1067 | + } |
| 1068 | + } |
| 1069 | + if (mPlotKstarVsAlphaVsMtVsMult) { |
| 1070 | + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsAlphaVsMtVsMult, HistTable), getHistDesc(kKstarVsAlphaVsMtVsMult, HistTable), getHistType(kKstarVsAlphaVsMtVsMult, HistTable), {Specs.at(kKstarVsAlphaVsMtVsMult)}); |
| 1071 | + } |
| 1072 | + if (mPlotKstarVsAlphaVsMtVsPt1VsPt2VsMult) { |
| 1073 | + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsAlphaVsMtVsPt1VsPt2VsMult, HistTable), getHistDesc(kKstarVsAlphaVsMtVsPt1VsPt2VsMult, HistTable), getHistType(kKstarVsAlphaVsMtVsPt1VsPt2VsMult, HistTable), {Specs.at(kKstarVsAlphaVsMtVsPt1VsPt2VsMult)}); |
| 1074 | + } |
| 1075 | + if (mPlotBetaLab) { |
| 1076 | + mHistogramRegistry->add(analysisDir + getHistNameV2(kBetaLab, HistTable), getHistDesc(kBetaLab, HistTable), getHistType(kBetaLab, HistTable), {Specs.at(kBetaLab)}); |
| 1077 | + if (mPlot2d) { |
| 1078 | + mHistogramRegistry->add(analysisDir + getHistNameV2(kBetaLabVsKstar, HistTable), getHistDesc(kBetaLabVsKstar, HistTable), getHistType(kBetaLabVsKstar, HistTable), {Specs.at(kBetaLabVsKstar)}); |
| 1079 | + mHistogramRegistry->add(analysisDir + getHistNameV2(kBetaLabVsKt, HistTable), getHistDesc(kBetaLabVsKt, HistTable), getHistType(kBetaLabVsKt, HistTable), {Specs.at(kBetaLabVsKt)}); |
| 1080 | + mHistogramRegistry->add(analysisDir + getHistNameV2(kBetaLabVsMt, HistTable), getHistDesc(kBetaLabVsMt, HistTable), getHistType(kBetaLabVsMt, HistTable), {Specs.at(kBetaLabVsMt)}); |
| 1081 | + } |
| 1082 | + } |
| 1083 | + if (mPlotKstarVsBetaLabVsMtVsMult) { |
| 1084 | + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsBetaLabVsMtVsMult, HistTable), getHistDesc(kKstarVsBetaLabVsMtVsMult, HistTable), getHistType(kKstarVsBetaLabVsMtVsMult, HistTable), {Specs.at(kKstarVsBetaLabVsMtVsMult)}); |
| 1085 | + } |
| 1086 | + if (mPlotKstarVsBetaLabVsMtVsPt1VsPt2VsMult) { |
| 1087 | + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsBetaLabVsMtVsPt1VsPt2VsMult, HistTable), getHistDesc(kKstarVsBetaLabVsMtVsPt1VsPt2VsMult, HistTable), getHistType(kKstarVsBetaLabVsMtVsPt1VsPt2VsMult, HistTable), {Specs.at(kKstarVsBetaLabVsMtVsPt1VsPt2VsMult)}); |
| 1088 | + } |
1007 | 1089 | if (mPlotBertschPratt) { |
1008 | 1090 | mHistogramRegistry->add(analysisDir + getHistNameV2(kQout, HistTable), getHistDesc(kQout, HistTable), getHistType(kQout, HistTable), {Specs.at(kQout)}); |
1009 | 1091 | mHistogramRegistry->add(analysisDir + getHistNameV2(kQside, HistTable), getHistDesc(kQside, HistTable), getHistType(kQside, HistTable), {Specs.at(kQside)}); |
@@ -1262,6 +1344,13 @@ class PairHistManager |
1262 | 1344 | mDeltaPhi = RecoDecay::constrainAngle(particle1.phi() - particle2.phi(), -o2::constants::math::PIHalf); |
1263 | 1345 | } |
1264 | 1346 |
|
| 1347 | + if (mPlotAlpha || mPlotKstarVsAlphaVsMtVsMult || mPlotKstarVsAlphaVsMtVsPt1VsPt2VsMult) { |
| 1348 | + mAlpha = getAlpha(mParticle1, mParticle2); |
| 1349 | + } |
| 1350 | + if (mPlotBetaLab || mPlotKstarVsBetaLabVsMtVsMult || mPlotKstarVsBetaLabVsMtVsPt1VsPt2VsMult) { |
| 1351 | + mBetaLab = getBetaLab(mParticle1, mParticle2); |
| 1352 | + } |
| 1353 | + |
1265 | 1354 | if (mPlotDalitz) { |
1266 | 1355 | if constexpr (modes::isEqual(particleType1, modes::Particle::kTrack) && (modes::isEqual(particleType2, modes::Particle::kV0) || modes::isEqual(particleType2, modes::Particle::kTwoTrackResonance) || modes::isEqual(particleType2, modes::Particle::kCharmHadron)) && |
1267 | 1356 | requires(T2 p) { p.posDauId(); p.negDauId(); }) { |
@@ -1372,6 +1461,34 @@ class PairHistManager |
1372 | 1461 | if (mPlotDeltaEtaDeltaPhi) { |
1373 | 1462 | mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kDeltaEtaDeltaPhi, HistTable)), mDeltaPhi, mDeltaEta); |
1374 | 1463 | } |
| 1464 | + if (mPlotAlpha) { |
| 1465 | + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kAlpha, HistTable)), mAlpha); |
| 1466 | + if (mPlot2d) { |
| 1467 | + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kAlphaVsKstar, HistTable)), mAlpha, mKstar); |
| 1468 | + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kAlphaVsKt, HistTable)), mAlpha, mKt); |
| 1469 | + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kAlphaVsMt, HistTable)), mAlpha, mMt); |
| 1470 | + } |
| 1471 | + } |
| 1472 | + if (mPlotKstarVsAlphaVsMtVsMult) { |
| 1473 | + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstarVsAlphaVsMtVsMult, HistTable)), mKstar, mAlpha, mMt, mMult); |
| 1474 | + } |
| 1475 | + if (mPlotKstarVsAlphaVsMtVsPt1VsPt2VsMult) { |
| 1476 | + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstarVsAlphaVsMtVsPt1VsPt2VsMult, HistTable)), mKstar, mAlpha, mMt, mParticle1.Pt(), mParticle2.Pt(), mMult); |
| 1477 | + } |
| 1478 | + if (mPlotBetaLab) { |
| 1479 | + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kBetaLab, HistTable)), mBetaLab); |
| 1480 | + if (mPlot2d) { |
| 1481 | + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kBetaLabVsKstar, HistTable)), mBetaLab, mKstar); |
| 1482 | + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kBetaLabVsKt, HistTable)), mBetaLab, mKt); |
| 1483 | + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kBetaLabVsMt, HistTable)), mBetaLab, mMt); |
| 1484 | + } |
| 1485 | + } |
| 1486 | + if (mPlotKstarVsBetaLabVsMtVsMult) { |
| 1487 | + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstarVsBetaLabVsMtVsMult, HistTable)), mKstar, mBetaLab, mMt, mMult); |
| 1488 | + } |
| 1489 | + if (mPlotKstarVsBetaLabVsMtVsPt1VsPt2VsMult) { |
| 1490 | + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstarVsBetaLabVsMtVsPt1VsPt2VsMult, HistTable)), mKstar, mBetaLab, mMt, mParticle1.Pt(), mParticle2.Pt(), mMult); |
| 1491 | + } |
1375 | 1492 | if (mPlotBertschPratt) { |
1376 | 1493 | mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kQout, HistTable)), mQout); |
1377 | 1494 | mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kQside, HistTable)), mQside); |
@@ -1537,6 +1654,22 @@ class PairHistManager |
1537 | 1654 | return static_cast<float>(0.5 * std::sqrt(std::max(0.0, kallen) / s)); |
1538 | 1655 | } |
1539 | 1656 |
|
| 1657 | + float getAlpha(ROOT::Math::PtEtaPhiMVector const& part1, ROOT::Math::PtEtaPhiMVector const& part2) |
| 1658 | + { |
| 1659 | + return static_cast<float>(RecoDecay::constrainAngle(part2.phi() - part1.phi(), -o2::constants::math::PI)); |
| 1660 | + } |
| 1661 | + |
| 1662 | + float getBetaLab(ROOT::Math::PtEtaPhiMVector const& part1, ROOT::Math::PtEtaPhiMVector const& part2) |
| 1663 | + { |
| 1664 | + ROOT::Math::XYZVector p1(part1.Px(), part1.Py(), part1.Pz()); |
| 1665 | + ROOT::Math::XYZVector p2(part2.Px(), part2.Py(), part2.Pz()); |
| 1666 | + |
| 1667 | + ROOT::Math::XYZVector kstar = p1 - p2; |
| 1668 | + ROOT::Math::XYZVector kt = p1 + p2; |
| 1669 | + |
| 1670 | + return static_cast<float>(std::acos(kstar.Dot(kt) / std::sqrt(kstar.Mag2() * kt.Mag2()))); |
| 1671 | + } |
| 1672 | + |
1540 | 1673 | std::tuple<float, float, float> computeBertschPrattLCMS(ROOT::Math::PtEtaPhiMVector const& part1, ROOT::Math::PtEtaPhiMVector const& part2) |
1541 | 1674 | { |
1542 | 1675 | const ROOT::Math::PxPyPzEVector p1(part1); |
@@ -1700,6 +1833,8 @@ class PairHistManager |
1700 | 1833 | double mMass12 = 0.; |
1701 | 1834 | double mMass13 = 0.; |
1702 | 1835 | double mMassTot2 = 0.; |
| 1836 | + float mAlpha = 0.f; |
| 1837 | + float mBetaLab = 0.f; |
1703 | 1838 |
|
1704 | 1839 | // mc (used for both reco-vs-truth correlation AND pure mc-truth-only pairs — |
1705 | 1840 | // for the latter, these are simply the primary/only kinematic values, not a |
@@ -1762,6 +1897,13 @@ class PairHistManager |
1762 | 1897 | bool mPlotDalitz = false; |
1763 | 1898 | bool mPlotDeltaEtaDeltaPhi = false; |
1764 | 1899 |
|
| 1900 | + bool mPlotAlpha = false; |
| 1901 | + bool mPlotKstarVsAlphaVsMtVsMult = false; |
| 1902 | + bool mPlotKstarVsAlphaVsMtVsPt1VsPt2VsMult = false; |
| 1903 | + bool mPlotBetaLab = false; |
| 1904 | + bool mPlotKstarVsBetaLabVsMtVsMult = false; |
| 1905 | + bool mPlotKstarVsBetaLabVsMtVsPt1VsPt2VsMult = false; |
| 1906 | + |
1765 | 1907 | bool mPlotBertschPratt = false; |
1766 | 1908 |
|
1767 | 1909 | bool mPlotEventShape = false; |
|
0 commit comments