Skip to content

Commit 5297bc9

Browse files
authored
[PWGCF] FemtoUniverse: Add gamma pair rejection in track-track tasks (#15782)
1 parent 4d5d8a6 commit 5297bc9

File tree

3 files changed

+59
-9
lines changed

3 files changed

+59
-9
lines changed

PWGCF/FemtoUniverse/Core/FemtoUniverseDetaDphiStar.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -780,6 +780,31 @@ class FemtoUniverseDetaDphiStar
780780
}
781781
}
782782

783+
template <typename PartType>
784+
bool isGammaPair(PartType track1, PartType track2, double maxEEMinv, double maxDTheta)
785+
{
786+
double me = o2::constants::physics::MassElectron;
787+
788+
double magTrack1 = track1.px() * track1.px() + track1.py() * track1.py() + track1.pz() * track1.pz();
789+
double magTrack2 = track2.px() * track2.px() + track2.py() * track2.py() + track2.pz() * track2.pz();
790+
double dotTr1Tr2 = track1.px() * track2.px() + track1.py() * track2.py() + track1.pz() * track2.pz();
791+
792+
if ((track1.sign() * track2.sign()) < 0.0) {
793+
double theta1 = track1.theta();
794+
double theta2 = track2.theta();
795+
double dtheta = TMath::Abs(theta1 - theta2);
796+
797+
double e1 = TMath::Sqrt(me * me + magTrack1);
798+
double e2 = TMath::Sqrt(me * me + magTrack2);
799+
800+
double minv = 2 * me * me + 2 * (e1 * e2 - dotTr1Tr2);
801+
if ((TMath::Abs(minv) < maxEEMinv) && (dtheta < maxDTheta)) {
802+
return true;
803+
}
804+
}
805+
return false;
806+
}
807+
783808
/// Check if pair is close or not
784809
template <typename Part>
785810
void ClosePairqLCMS(Part const& part1, Part const& part2, float lmagfield, uint8_t ChosenEventType, double qlcms) // add typename Parts and variable parts for adding MClabels

PWGCF/FemtoUniverse/Tasks/femtoUniversePairTaskTrackTrackMultKtExtended.cxx

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,10 @@ struct FemtoUniversePairTaskTrackTrackMultKtExtended {
189189
Configurable<bool> cfgProcessKtBins{"cfgProcessKtBins", false, "Process kstar histograms in kT bins (if 'cfgProcessMultBins' is false, it will not be processed regardless of 'cfgProcessKtBins' state)"};
190190
Configurable<bool> cfgProcessKtMt3DCF{"cfgProcessKtMt3DCF", false, "Process 3D histograms in kT and MultBins"};
191191

192+
Configurable<bool> confRejectGammaPair{"confRejectGammaPair", false, "Additional check to reject e+e- pairs base on theta and minv"};
193+
Configurable<double> confMaxEEMinv{"confMaxEEMinv", 0.002, "Max. minv of e-e+ pair for gamma pair rejection"};
194+
Configurable<double> confMaxDTheta{"confMaxDTheta", 0.008, "Max. DeltaTheta of pair for gamma pair rejection"};
195+
192196
ConfigurableAxis confDeltaEtaAxis{"confDeltaEtaAxis", {100, -0.15, 0.15}, "DeltaEta"};
193197
ConfigurableAxis confDeltaPhiStarAxis{"confDeltaPhiStarAxis", {100, -0.15, 0.15}, "DeltaPhiStar"};
194198

@@ -483,6 +487,15 @@ struct FemtoUniversePairTaskTrackTrackMultKtExtended {
483487
continue;
484488
}
485489

490+
if (confRejectGammaPair && pairCloseRejection.isGammaPair(p1, p2, confMaxEEMinv, confMaxDTheta)) {
491+
continue;
492+
}
493+
494+
// track cleaning
495+
if (!pairCleaner.isCleanPair(p1, p2, parts)) {
496+
continue;
497+
}
498+
486499
if (confIsCPR.value) {
487500
double rand;
488501
auto part1 = p1;
@@ -503,11 +516,6 @@ struct FemtoUniversePairTaskTrackTrackMultKtExtended {
503516
}
504517
}
505518

506-
// track cleaning
507-
if (!pairCleaner.isCleanPair(p1, p2, parts)) {
508-
continue;
509-
}
510-
511519
float kstar = FemtoUniverseMath::getkstar(p1, mass1, p2, mass2);
512520
float kT = FemtoUniverseMath::getkT(p1, mass1, p2, mass2);
513521

@@ -676,6 +684,10 @@ struct FemtoUniversePairTaskTrackTrackMultKtExtended {
676684
continue;
677685
}
678686

687+
if (confRejectGammaPair && pairCloseRejection.isGammaPair(p1, p2, confMaxEEMinv, confMaxDTheta)) {
688+
continue;
689+
}
690+
679691
if (confIsCPR.value) {
680692
double rand;
681693
auto part1 = p1;
@@ -758,7 +770,7 @@ struct FemtoUniversePairTaskTrackTrackMultKtExtended {
758770
void processMixedEvent(soa::Filtered<o2::aod::FdCollisions> const& cols,
759771
FilteredFemtoFullParticles const& parts)
760772
{
761-
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) {
773+
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, confNEventsMix, -1, cols, cols)) {
762774

763775
const int multiplicityCol = collision1.multV0M();
764776
if (confFillDebug) {
@@ -799,7 +811,7 @@ struct FemtoUniversePairTaskTrackTrackMultKtExtended {
799811
FemtoRecoParticles const& parts,
800812
o2::aod::FdMCParticles const&)
801813
{
802-
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) {
814+
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, confNEventsMix, -1, cols, cols)) {
803815

804816
const int multiplicityCol = collision1.multV0M();
805817
if (confFillDebug) {
@@ -908,7 +920,7 @@ struct FemtoUniversePairTaskTrackTrackMultKtExtended {
908920
}
909921
};
910922

911-
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) {
923+
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, confNEventsMix, -1, cols, cols)) {
912924
const int multiplicityCol = collision1.multV0M();
913925
if (confFillDebug) {
914926
mixQaRegistry.fill(HIST("MixingQA/hMECollisionBins"), colBinning.getBin({collision1.posZ(), multiplicityCol}));
@@ -1003,7 +1015,7 @@ struct FemtoUniversePairTaskTrackTrackMultKtExtended {
10031015
void processFractionsMCTruth(o2::aod::FdCollisions const& cols,
10041016
FemtoTruthParticles const&)
10051017
{
1006-
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) {
1018+
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, confNEventsMix, -1, cols, cols)) {
10071019

10081020
const int multiplicityCol = collision1.multV0M();
10091021
if (confFillDebug) {

PWGCF/FemtoUniverse/Tasks/femtoUniversePairTaskTrackTrackSpherHarMultKtExtended.cxx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,10 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
247247
Configurable<bool> cfgProcessKtBins{"cfgProcessKtBins", true, "Process kstar histograms in kT bins (if cfgProcessMultBins is set false, this will not be processed regardless this Configurable state)"};
248248
Configurable<bool> cfgProcessKtMt3DCF{"cfgProcessKtMt3DCF", false, "Process 3D histograms in kT and Mult bins"};
249249

250+
Configurable<bool> confRejectGammaPair{"confRejectGammaPair", false, "Additional check to reject e+e- pairs base on theta and minv"};
251+
Configurable<double> confMaxEEMinv{"confMaxEEMinv", 0.002, "Max. minv of e-e+ pair for gamma pair rejection"};
252+
Configurable<double> confMaxDTheta{"confMaxDTheta", 0.008, "Max. DeltaTheta of pair for gamma pair rejection"};
253+
250254
FemtoUniverseSHContainer<femto_universe_sh_container::EventType::same, femto_universe_sh_container::Observable::kstar> sameEventCont;
251255
FemtoUniverseSHContainer<femto_universe_sh_container::EventType::mixed, femto_universe_sh_container::Observable::kstar> mixedEventCont;
252256

@@ -579,6 +583,10 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
579583
continue;
580584
}
581585

586+
if (confRejectGammaPair && pairCloseRejection.isGammaPair(p1, p2, confMaxEEMinv, confMaxDTheta)) {
587+
continue;
588+
}
589+
582590
float kT = FemtoUniverseMath::getkT(p1, mass1, p2, mass2);
583591
float lastElement = confKtKstarBins.value.back();
584592
float firstRealElement = confKtKstarBins.value[1];
@@ -612,6 +620,7 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
612620
if (!pairCleaner.isCleanPair(p1, p2, parts)) {
613621
continue;
614622
}
623+
615624
sameEventMultCont.fillMultNumDen(p1, p2, femto_universe_sh_container::EventType::same, 2, multCol, kT, twotracksconfigs.confisIdenLCMS, twotracksconfigs.confIs1D, twotracksconfigs.confIsWeight, twotracksconfigs.confisIdenPRF);
616625
}
617626
} else {
@@ -994,6 +1003,10 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
9941003
continue;
9951004
}
9961005

1006+
if (confRejectGammaPair && pairCloseRejection.isGammaPair(p1, p2, confMaxEEMinv, confMaxDTheta)) {
1007+
continue;
1008+
}
1009+
9971010
float kT = FemtoUniverseMath::getkT(p1, mass1, p2, mass2);
9981011
float lastElement = confKtKstarBins.value.back();
9991012
float firstRealElement = confKtKstarBins.value[1];

0 commit comments

Comments
 (0)