Skip to content

Commit 5aade88

Browse files
committed
Add gamma pair rejection in track-track tasks
1 parent 5fcab7c commit 5aade88

File tree

2 files changed

+79
-4
lines changed

2 files changed

+79
-4
lines changed

PWGCF/FemtoUniverse/Tasks/femtoUniversePairTaskTrackTrackMultKtExtended.cxx

Lines changed: 41 additions & 4 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
FemtoUniverseFemtoContainer<femto_universe_femto_container::EventType::same, femto_universe_femto_container::Observable::kstar> sameEventCont;
193197
FemtoUniverseFemtoContainer<femto_universe_femto_container::EventType::mixed, femto_universe_femto_container::Observable::kstar> mixedEventCont;
194198

@@ -332,6 +336,31 @@ struct FemtoUniversePairTaskTrackTrackMultKtExtended {
332336
return false;
333337
}
334338

339+
template <typename PartType>
340+
bool rejectGammaPair(PartType track1, PartType track2)
341+
{
342+
double me = 0.000511;
343+
344+
double magTrack1 = track1.px() * track1.px() + track1.py() * track1.py() + track1.pz() * track1.pz();
345+
double magTrack2 = track2.px() * track2.px() + track2.py() * track2.py() + track2.pz() * track2.pz();
346+
double dotTr1Tr2 = track1.px() * track2.px() + track1.py() * track2.py() + track1.pz() * track2.pz();
347+
348+
if ((track1.sign() * track2.sign()) < 0.0) {
349+
double theta1 = track1.theta();
350+
double theta2 = track2.theta();
351+
double dtheta = TMath::Abs(theta1 - theta2);
352+
353+
double e1 = TMath::Sqrt(me * me + magTrack1);
354+
double e2 = TMath::Sqrt(me * me + magTrack2);
355+
356+
double minv = 2 * me * me + 2 * (e1 * e2 - dotTr1Tr2);
357+
if ((TMath::Abs(minv) < confMaxEEMinv) && (dtheta < confMaxDTheta)) {
358+
return false;
359+
}
360+
}
361+
return true;
362+
}
363+
335364
void init(InitContext&)
336365
{
337366
eventHisto.init(&qaRegistry);
@@ -477,6 +506,10 @@ struct FemtoUniversePairTaskTrackTrackMultKtExtended {
477506
continue;
478507
}
479508

509+
if (confRejectGammaPair && !rejectGammaPair(p1, p2)) {
510+
continue;
511+
}
512+
480513
if (confIsCPR.value) {
481514
double rand;
482515
auto part1 = p1;
@@ -670,6 +703,10 @@ struct FemtoUniversePairTaskTrackTrackMultKtExtended {
670703
continue;
671704
}
672705

706+
if (confRejectGammaPair && !rejectGammaPair(p1, p2)) {
707+
continue;
708+
}
709+
673710
if (confIsCPR.value) {
674711
double rand;
675712
auto part1 = p1;
@@ -752,7 +789,7 @@ struct FemtoUniversePairTaskTrackTrackMultKtExtended {
752789
void processMixedEvent(soa::Filtered<o2::aod::FdCollisions> const& cols,
753790
FilteredFemtoFullParticles const& parts)
754791
{
755-
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) {
792+
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, confNEventsMix, -1, cols, cols)) {
756793

757794
const int multiplicityCol = collision1.multV0M();
758795
if (confFillDebug) {
@@ -793,7 +830,7 @@ struct FemtoUniversePairTaskTrackTrackMultKtExtended {
793830
FemtoRecoParticles const& parts,
794831
o2::aod::FdMCParticles const&)
795832
{
796-
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) {
833+
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, confNEventsMix, -1, cols, cols)) {
797834

798835
const int multiplicityCol = collision1.multV0M();
799836
if (confFillDebug) {
@@ -902,7 +939,7 @@ struct FemtoUniversePairTaskTrackTrackMultKtExtended {
902939
}
903940
};
904941

905-
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) {
942+
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, confNEventsMix, -1, cols, cols)) {
906943
const int multiplicityCol = collision1.multV0M();
907944
if (confFillDebug) {
908945
mixQaRegistry.fill(HIST("MixingQA/hMECollisionBins"), colBinning.getBin({collision1.posZ(), multiplicityCol}));
@@ -994,7 +1031,7 @@ struct FemtoUniversePairTaskTrackTrackMultKtExtended {
9941031
void processFractionsMCTruth(o2::aod::FdCollisions const& cols,
9951032
FemtoTruthParticles const&)
9961033
{
997-
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) {
1034+
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, confNEventsMix, -1, cols, cols)) {
9981035

9991036
const int multiplicityCol = collision1.multV0M();
10001037
if (confFillDebug) {

PWGCF/FemtoUniverse/Tasks/femtoUniversePairTaskTrackTrackSpherHarMultKtExtended.cxx

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,10 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
216216
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)"};
217217
Configurable<bool> cfgProcessKtMt3DCF{"cfgProcessKtMt3DCF", false, "Process 3D histograms in kT and Mult bins"};
218218

219+
Configurable<bool> confRejectGammaPair{"confRejectGammaPair", false, "Additional check to reject e+e- pairs base on theta and minv"};
220+
Configurable<double> confMaxEEMinv{"confMaxEEMinv", 0.002, "Max. minv of e-e+ pair for gamma pair rejection"};
221+
Configurable<double> confMaxDTheta{"confMaxDTheta", 0.008, "Max. DeltaTheta of pair for gamma pair rejection"};
222+
219223
FemtoUniverseSHContainer<femto_universe_sh_container::EventType::same, femto_universe_sh_container::Observable::kstar> sameEventCont;
220224
FemtoUniverseSHContainer<femto_universe_sh_container::EventType::mixed, femto_universe_sh_container::Observable::kstar> mixedEventCont;
221225

@@ -411,6 +415,31 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
411415
return false;
412416
}
413417

418+
template <typename PartType>
419+
bool rejectGammaPair(PartType track1, PartType track2)
420+
{
421+
double me = 0.000511;
422+
423+
double magTrack1 = track1.px() * track1.px() + track1.py() * track1.py() + track1.pz() * track1.pz();
424+
double magTrack2 = track2.px() * track2.px() + track2.py() * track2.py() + track2.pz() * track2.pz();
425+
double dotTr1Tr2 = track1.px() * track2.px() + track1.py() * track2.py() + track1.pz() * track2.pz();
426+
427+
if ((track1.sign() * track2.sign()) < 0.0) {
428+
double theta1 = track1.theta();
429+
double theta2 = track2.theta();
430+
double dtheta = TMath::Abs(theta1 - theta2);
431+
432+
double e1 = TMath::Sqrt(me * me + magTrack1);
433+
double e2 = TMath::Sqrt(me * me + magTrack2);
434+
435+
double minv = 2 * me * me + 2 * (e1 * e2 - dotTr1Tr2);
436+
if ((TMath::Abs(minv) < confMaxEEMinv) && (dtheta < confMaxDTheta)) {
437+
return false;
438+
}
439+
}
440+
return true;
441+
}
442+
414443
void init(InitContext&)
415444
{
416445
eventHisto.init(&qaRegistry);
@@ -536,6 +565,10 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
536565
continue;
537566
}
538567

568+
if (confRejectGammaPair && !rejectGammaPair(p1, p2)) {
569+
continue;
570+
}
571+
539572
float kT = FemtoUniverseMath::getkT(p1, mass1, p2, mass2);
540573
float lastElement = confKtKstarBins.value.back();
541574
float firstRealElement = confKtKstarBins.value[1];
@@ -565,6 +598,7 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
565598
if (!pairCleaner.isCleanPair(p1, p2, parts)) {
566599
continue;
567600
}
601+
568602
sameEventMultCont.fillMultNumDen(p1, p2, femto_universe_sh_container::EventType::same, 2, multCol, kT, twotracksconfigs.confisIdenLCMS, twotracksconfigs.confIs1D, twotracksconfigs.confIsWeight, twotracksconfigs.confisIdenPRF);
569603
}
570604
} else {
@@ -937,6 +971,10 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
937971
continue;
938972
}
939973

974+
if (confRejectGammaPair && !rejectGammaPair(p1, p2)) {
975+
continue;
976+
}
977+
940978
float kT = FemtoUniverseMath::getkT(p1, mass1, p2, mass2);
941979
float lastElement = confKtKstarBins.value.back();
942980
float firstRealElement = confKtKstarBins.value[1];

0 commit comments

Comments
 (0)