Skip to content

Commit 9e43c67

Browse files
committed
Add quantum weight in MC Truth same-event pairs, fix bug
1 parent 5c96ecc commit 9e43c67

File tree

1 file changed

+68
-53
lines changed

1 file changed

+68
-53
lines changed

PWGCF/FemtoUniverse/Tasks/femtoUniversePairTaskTrackTrackSpherHarMultKtExtended.cxx

Lines changed: 68 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
100100
Configurable<float> confCPRDistMax{"confCPRDistMax", 0.0, "Max. radial seperation between two closed-pairs"};
101101
Configurable<float> confCPRFracMax{"confCPRFracMax", 0.0, "Max. allowed fraction bad to all TPC points of radial seperation between two closed-pairs"};
102102
Configurable<bool> confCPRDphiAvgOrDist{"confCPRDphiAvgOrDist", true, "Close Pair Rejection by radial or angular seperation"};
103+
Configurable<bool> confIs1D{"confIs1D", true, "Filling 1D 2k* dist. in MC truth"};
104+
Configurable<bool> confIsIden{"confIsIden", true, "Choosing identical or non-identical pairs"};
105+
Configurable<bool> confIsWeight{"confIsWeight", true, "Fill quantum weight"};
103106
} twotracksconfigs;
104107

105108
using FemtoFullParticles = soa::Join<aod::FDParticles, aod::FDExtParticles>;
@@ -197,7 +200,6 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
197200
ConfigurableAxis confkstarBins{"confkstarBins", {60, 0.0, 0.3}, "binning kstar"};
198201
ConfigurableAxis confkTBins{"confkTBins", {150, 0., 9.}, "binning kT"};
199202
ConfigurableAxis confmTBins{"confmTBins", {225, 0., 7.5}, "binning mT"};
200-
Configurable<bool> confIsIden{"confIsIden", true, "Choosing identical or non-identical pairs"};
201203
Configurable<bool> confIsLCMS{"confIsLCMS", true, "Choosing LCMS or PRF"};
202204
Configurable<int> confNEventsMix{"confNEventsMix", 5, "Number of events for mixing"};
203205
Configurable<int> confLMax{"confLMax", 2, "Maximum value of l"};
@@ -558,7 +560,7 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
558560
if (!pairCleaner.isCleanPair(p1, p2, parts)) {
559561
continue;
560562
}
561-
sameEventMultCont.fillMultNumDen(p1, p2, femto_universe_sh_container::EventType::same, 2, multCol, kT, confIsIden);
563+
sameEventMultCont.fillMultNumDen(p1, p2, femto_universe_sh_container::EventType::same, 2, multCol, kT, twotracksconfigs.confIsIden);
562564
}
563565
} else {
564566
for (const auto& [p1, p2] : combinations(CombinationsStrictlyUpperIndexPolicy(groupPartsOne, groupPartsOne))) {
@@ -608,7 +610,6 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
608610
auto part2 = p2;
609611

610612
if (rand > 0.5) {
611-
612613
part1 = p2;
613614
part2 = p1;
614615
}
@@ -619,30 +620,30 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
619620
float qTmin = 0.0;
620621
switch (ContType) {
621622
case 2: {
622-
f3d = FemtoUniverseMath::newpairfunc(part1, mass1, part2, mass2, confIsIden);
623+
f3d = FemtoUniverseMath::newpairfunc(part1, mass1, part2, mass2, twotracksconfigs.confIsIden);
623624
qTmin = std::sqrt(f3d[1] * f3d[1] + f3d[2] * f3d[2]);
624625
if (!twotracksconfigs.confUseCCImCut) {
625626
if (!twotracksconfigs.confUseMinqTcut) {
626-
sameEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, confIsIden);
627+
sameEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, twotracksconfigs.confIsIden);
627628
} else {
628629
if (qTmin > twotracksconfigs.confMinqTcut) {
629-
sameEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, confIsIden);
630+
sameEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, twotracksconfigs.confIsIden);
630631
}
631632
}
632633
} else {
633634
if (twotracksconfigs.confUse1stand3rd) {
634635
if ((f3d[1] >= outsideref && f3d[2] >= outsideref) || (f3d[1] < outsideref && f3d[2] < outsideref)) {
635-
sameEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, confIsIden);
636+
sameEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, twotracksconfigs.confIsIden);
636637
}
637638
} else if (twotracksconfigs.confUse2ndand4th) {
638639
if ((f3d[1] < outsideref && f3d[2] >= outsideref) || (f3d[1] >= outsideref && f3d[2] < outsideref)) {
639-
sameEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, confIsIden);
640+
sameEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, twotracksconfigs.confIsIden);
640641
}
641642
}
642643
}
643644
if (twotracksconfigs.confIsMC || twotracksconfigs.confUse3D) {
644645
float weight = 1.0f;
645-
sameEventCont1D_PP.setPair<isMC>(part1, part2, multCol, twotracksconfigs.confUse3D, weight, confIsIden);
646+
sameEventCont1D_PP.setPair<isMC>(part1, part2, multCol, twotracksconfigs.confUse3D, weight, twotracksconfigs.confIsIden);
646647
}
647648
if (twotracksconfigs.confIsFillAngqLCMS) {
648649
kv = std::sqrt(f3d[1] * f3d[1] + f3d[2] * f3d[2] + f3d[3] * f3d[3]);
@@ -652,30 +653,30 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
652653
}
653654

654655
case 3: {
655-
f3d = FemtoUniverseMath::newpairfunc(part1, mass1, part2, mass2, confIsIden);
656+
f3d = FemtoUniverseMath::newpairfunc(part1, mass1, part2, mass2, twotracksconfigs.confIsIden);
656657
qTmin = std::sqrt(f3d[1] * f3d[1] + f3d[2] * f3d[2]);
657658
if (!twotracksconfigs.confUseCCImCut) {
658659
if (!twotracksconfigs.confUseMinqTcut) {
659-
sameEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, confIsIden);
660+
sameEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, twotracksconfigs.confIsIden);
660661
} else {
661662
if (qTmin > twotracksconfigs.confMinqTcut) {
662-
sameEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, confIsIden);
663+
sameEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, twotracksconfigs.confIsIden);
663664
}
664665
}
665666
} else {
666667
if (twotracksconfigs.confUse1stand3rd) {
667668
if ((f3d[1] >= outsideref && f3d[2] >= outsideref) || (f3d[1] < outsideref && f3d[2] < outsideref)) {
668-
sameEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, confIsIden);
669+
sameEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, twotracksconfigs.confIsIden);
669670
}
670671
} else if (twotracksconfigs.confUse2ndand4th) {
671672
if ((f3d[1] < outsideref && f3d[2] >= outsideref) || (f3d[1] >= outsideref && f3d[2] < outsideref)) {
672-
sameEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, confIsIden);
673+
sameEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, twotracksconfigs.confIsIden);
673674
}
674675
}
675676
}
676677
if (twotracksconfigs.confIsMC || twotracksconfigs.confUse3D) {
677678
float weight = 1.0f;
678-
sameEventCont1D_MM.setPair<isMC>(part1, part2, multCol, twotracksconfigs.confUse3D, weight, confIsIden);
679+
sameEventCont1D_MM.setPair<isMC>(part1, part2, multCol, twotracksconfigs.confUse3D, weight, twotracksconfigs.confIsIden);
679680
}
680681
if (twotracksconfigs.confIsFillAngqLCMS) {
681682
kv = std::sqrt(f3d[1] * f3d[1] + f3d[2] * f3d[2] + f3d[3] * f3d[3]);
@@ -820,7 +821,7 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
820821
const auto& pdgParticleTwo = pdg->GetParticle(pdgCodePartTwo);
821822
if (pdgParticleOne && pdgParticleTwo && (pdgCodePartOne == trackonefilter.confPDGCodePartOne) && (pdgCodePartTwo == tracktwofilter.confPDGCodePartTwo)) {
822823
float kT = FemtoUniverseMath::getkT(p1, mass1, p2, mass2);
823-
sameEventMultCont.fillMultNumDen(p1, p2, femto_universe_sh_container::EventType::same, 2, multCol, kT, confIsIden);
824+
sameEventMultCont.fillMultNumDen(p1, p2, femto_universe_sh_container::EventType::same, 2, multCol, kT, twotracksconfigs.confIsIden);
824825
}
825826
}
826827
} else {
@@ -837,21 +838,33 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
837838
std::vector<double> f3d;
838839
if (pdgParticleOne && pdgParticleTwo && (pdgCodePartOne == trackonefilter.confPDGCodePartOne) && (pdgCodePartTwo == tracktwofilter.confPDGCodePartTwo)) {
839840

841+
auto part1 = p1;
842+
auto part2 = p2;
843+
844+
if (rand > 0.5) {
845+
part1 = p2;
846+
part2 = p1;
847+
}
848+
840849
switch (ContType) {
841850
case 2: {
842-
if (rand > 0.5) {
843-
sameEventMultContPP.fillMultNumDen(p1, p2, femto_universe_sh_container::EventType::same, 2, multCol, kT, confIsIden);
844-
} else if (rand <= 0.5) {
845-
sameEventMultContPP.fillMultNumDen(p2, p1, femto_universe_sh_container::EventType::same, 2, multCol, kT, confIsIden);
851+
if (twotracksconfigs.confIs1D) {
852+
f3d = FemtoUniverseMath::newpairfunc(part1, mass1, part2, mass2, twotracksconfigs.confIsIden, twotracksconfigs.confIsWeight);
853+
float weight = f3d[5];
854+
sameEventCont1D_PP.setPair<isMC>(part1, part2, multCol, twotracksconfigs.confUse3D, weight, twotracksconfigs.confIsIden);
855+
} else {
856+
sameEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, twotracksconfigs.confIsIden);
846857
}
847858
break;
848859
}
849860

850861
case 3: {
851-
if (rand > 0.5) {
852-
sameEventMultContMM.fillMultNumDen(p1, p2, femto_universe_sh_container::EventType::same, 2, multCol, kT, confIsIden);
853-
} else if (rand <= 0.5) {
854-
sameEventMultContMM.fillMultNumDen(p2, p1, femto_universe_sh_container::EventType::same, 2, multCol, kT, confIsIden);
862+
if (twotracksconfigs.confIs1D) {
863+
f3d = FemtoUniverseMath::newpairfunc(part1, mass1, part2, mass2, twotracksconfigs.confIsIden, twotracksconfigs.confIsWeight);
864+
float weight = f3d[5];
865+
sameEventCont1D_MM.setPair<isMC>(part1, part2, multCol, twotracksconfigs.confUse3D, weight, twotracksconfigs.confIsIden);
866+
} else {
867+
sameEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::same, 2, multCol, kT, twotracksconfigs.confIsIden);
855868
}
856869
break;
857870
}
@@ -965,7 +978,6 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
965978
auto part2 = p2;
966979

967980
if (rand > 0.5) {
968-
969981
part1 = p2;
970982
part2 = p1;
971983
}
@@ -977,39 +989,35 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
977989

978990
switch (ContType) {
979991
case 1: {
980-
if (rand > 0.5) {
981-
mixedEventMultCont.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, confIsIden);
982-
} else {
983-
mixedEventMultCont.fillMultNumDen(part2, part1, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, confIsIden);
984-
}
992+
mixedEventMultCont.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, twotracksconfigs.confIsIden);
985993
break;
986994
}
987995

988996
case 2: {
989-
f3d = FemtoUniverseMath::newpairfunc(part1, mass1, part2, mass2, confIsIden);
997+
f3d = FemtoUniverseMath::newpairfunc(part1, mass1, part2, mass2, twotracksconfigs.confIsIden);
990998
qTmin = std::sqrt(f3d[1] * f3d[1] + f3d[2] * f3d[2]);
991999
if (!twotracksconfigs.confUseCCImCut) {
9921000
if (!twotracksconfigs.confUseMinqTcut) {
993-
mixedEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, confIsIden);
1001+
mixedEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, twotracksconfigs.confIsIden);
9941002
} else {
9951003
if (qTmin > twotracksconfigs.confMinqTcut) {
996-
mixedEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, confIsIden);
1004+
mixedEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, twotracksconfigs.confIsIden);
9971005
}
9981006
}
9991007
} else {
10001008
if (twotracksconfigs.confUse1stand3rd) {
10011009
if ((f3d[1] >= outsideref && f3d[2] >= outsideref) || (f3d[1] < outsideref && f3d[2] < outsideref)) {
1002-
mixedEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, confIsIden);
1010+
mixedEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, twotracksconfigs.confIsIden);
10031011
}
10041012
} else if (twotracksconfigs.confUse2ndand4th) {
10051013
if ((f3d[1] < outsideref && f3d[2] >= outsideref) || (f3d[1] >= outsideref && f3d[2] < outsideref)) {
1006-
mixedEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, confIsIden);
1014+
mixedEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, twotracksconfigs.confIsIden);
10071015
}
10081016
}
10091017
}
10101018
if (twotracksconfigs.confIsMC || twotracksconfigs.confUse3D) {
10111019
float weight = 1.0f;
1012-
mixedEventCont1D_PP.setPair<isMC>(part1, part2, multCol, twotracksconfigs.confUse3D, weight, confIsIden);
1020+
mixedEventCont1D_PP.setPair<isMC>(part1, part2, multCol, twotracksconfigs.confUse3D, weight, twotracksconfigs.confIsIden);
10131021
}
10141022

10151023
if (twotracksconfigs.confIsFillAngqLCMS) {
@@ -1020,30 +1028,30 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
10201028
}
10211029

10221030
case 3: {
1023-
f3d = FemtoUniverseMath::newpairfunc(part1, mass1, part2, mass2, confIsIden);
1031+
f3d = FemtoUniverseMath::newpairfunc(part1, mass1, part2, mass2, twotracksconfigs.confIsIden);
10241032
qTmin = std::sqrt(f3d[1] * f3d[1] + f3d[2] * f3d[2]);
10251033
if (!twotracksconfigs.confUseCCImCut) {
10261034
if (!twotracksconfigs.confUseMinqTcut) {
1027-
mixedEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, confIsIden);
1035+
mixedEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, twotracksconfigs.confIsIden);
10281036
} else {
10291037
if (qTmin > twotracksconfigs.confMinqTcut) {
1030-
mixedEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, confIsIden);
1038+
mixedEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, twotracksconfigs.confIsIden);
10311039
}
10321040
}
10331041
} else {
10341042
if (twotracksconfigs.confUse1stand3rd) {
10351043
if ((f3d[1] >= outsideref && f3d[2] >= outsideref) || (f3d[1] < outsideref && f3d[2] < outsideref)) {
1036-
mixedEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, confIsIden);
1044+
mixedEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, twotracksconfigs.confIsIden);
10371045
}
10381046
} else if (twotracksconfigs.confUse2ndand4th) {
10391047
if ((f3d[1] < outsideref && f3d[2] >= outsideref) || (f3d[1] >= outsideref && f3d[2] < outsideref)) {
1040-
mixedEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, confIsIden);
1048+
mixedEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, twotracksconfigs.confIsIden);
10411049
}
10421050
}
10431051
}
10441052
if (twotracksconfigs.confIsMC || twotracksconfigs.confUse3D) {
10451053
float weight = 1.0f;
1046-
mixedEventCont1D_MM.setPair<isMC>(part1, part2, multCol, twotracksconfigs.confUse3D, weight, confIsIden);
1054+
mixedEventCont1D_MM.setPair<isMC>(part1, part2, multCol, twotracksconfigs.confUse3D, weight, twotracksconfigs.confIsIden);
10471055
}
10481056
if (twotracksconfigs.confIsFillAngqLCMS) {
10491057
kv = std::sqrt(f3d[1] * f3d[1] + f3d[2] * f3d[2] + f3d[3] * f3d[3]);
@@ -1250,32 +1258,39 @@ struct femtoUniversePairTaskTrackTrackSpherHarMultKtExtended {
12501258
float kT = FemtoUniverseMath::getkT(p1, mass1, p2, mass2);
12511259
double rand;
12521260
rand = randgen->Rndm();
1261+
std::vector<double> f3d;
1262+
12531263
if (pdgParticleOne && pdgParticleTwo && (pdgCodePartOne == trackonefilter.confPDGCodePartOne) && (pdgCodePartTwo == tracktwofilter.confPDGCodePartTwo)) {
12541264

1265+
auto part1 = p1;
1266+
auto part2 = p2;
1267+
1268+
if (rand > 0.5) {
1269+
part1 = p2;
1270+
part2 = p1;
1271+
}
12551272
switch (ContType) {
12561273
case 1: {
1257-
if (rand > 0.5) {
1258-
mixedEventMultCont.fillMultNumDen(p1, p2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, confIsIden);
1259-
} else {
1260-
mixedEventMultCont.fillMultNumDen(p2, p1, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, confIsIden);
1261-
}
1274+
mixedEventMultCont.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, twotracksconfigs.confIsIden);
12621275
break;
12631276
}
12641277

12651278
case 2: {
1266-
if (rand > 0.5) {
1267-
mixedEventMultContPP.fillMultNumDen(p1, p2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, confIsIden);
1279+
if (twotracksconfigs.confIs1D) {
1280+
float weight = 1.0;
1281+
mixedEventCont1D_PP.setPair<isMC>(part1, part2, multCol, twotracksconfigs.confUse3D, weight, twotracksconfigs.confIsIden);
12681282
} else {
1269-
mixedEventMultContPP.fillMultNumDen(p2, p1, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, confIsIden);
1283+
mixedEventMultContPP.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, twotracksconfigs.confIsIden);
12701284
}
12711285
break;
12721286
}
12731287

12741288
case 3: {
1275-
if (rand > 0.5) {
1276-
mixedEventMultContMM.fillMultNumDen(p1, p2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, confIsIden);
1289+
if (twotracksconfigs.confIs1D) {
1290+
float weight = 1.0;
1291+
mixedEventCont1D_MM.setPair<isMC>(part1, part2, multCol, twotracksconfigs.confUse3D, weight, twotracksconfigs.confIsIden);
12771292
} else {
1278-
mixedEventMultContMM.fillMultNumDen(p2, p1, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, confIsIden);
1293+
mixedEventMultContMM.fillMultNumDen(part1, part2, femto_universe_sh_container::EventType::mixed, 2, multCol, kT, twotracksconfigs.confIsIden);
12791294
}
12801295
break;
12811296
}

0 commit comments

Comments
 (0)