Skip to content

Commit ec95efa

Browse files
[PWGCF] FemtoUniverse: Add mother QA to helicity bins. (#15532)
1 parent 3b1d5d1 commit ec95efa

File tree

1 file changed

+37
-15
lines changed

1 file changed

+37
-15
lines changed

PWGCF/FemtoUniverse/Tasks/femtoUniversePairTaskTrackV0Helicity.cxx

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ struct FemtoUniversePairTaskTrackV0Helicity {
111111
Configurable<int> confPDGCodeV0{"confPDGCodeV0", 3122, "V0 -- PDG code"};
112112
Configurable<int> confPDGCodePosChild{"confPDGCodePosChild", 2212, "Positive Child -- PDG code"};
113113
Configurable<int> confPDGCodeNegChild{"confPDGCodeNegChild", 211, "Negative Child -- PDG code"};
114+
Configurable<bool> confSeparateInvMassCheck{"confSeparateInvMassCheck", false, "Apply additional cut separate for mLambda and mAntiLambda"};
114115
} V0configs;
115116

116117
/// Partitioning for particle 2
@@ -159,12 +160,13 @@ struct FemtoUniversePairTaskTrackV0Helicity {
159160
ConfigurableAxis confmTBins3D{"confmTBins3D", {VARIABLE_WIDTH, 1.02f, 1.14f, 1.20f, 1.26f, 1.38f, 1.56f, 1.86f, 4.50f}, "mT binning for the 3D plot: k* vs multiplicity vs mT (set <confUse3D> to true in order to use)"};
160161
ConfigurableAxis confMultBins3D{"confMultBins3D", {VARIABLE_WIDTH, 0.0f, 20.0f, 30.0f, 40.0f, 99999.0f}, "multiplicity binning for the 3D plot: k* vs multiplicity vs mT (set <confUse3D> to true in order to use)"};
161162

162-
/// Helicity ranges (approximate)
163+
/// Helicity ranges and configurables
163164
Configurable<bool> cfgProcessHel{"cfgProcessHel", true, "Process particle pairs from all helicity ranges"};
164-
Configurable<bool> cfgProcessHel1{"cfgProcessHel1", false, "Process particle pairs from the helicity range 1"}; // 1.0 > cosineTheta >= 0.1
165+
Configurable<bool> cfgProcessHel1{"cfgProcessHel1", false, "Process particle pairs from the helicity range 1"}; // 1.0 >= cosineTheta >= 0.1
165166
Configurable<bool> cfgProcessHel2{"cfgProcessHel2", false, "Process particle pairs from the helicity range 2"}; // 0.1 > cosineTheta >= -0.1
166167
Configurable<bool> cfgProcessHel3{"cfgProcessHel3", false, "Process particle pairs from the helicity range 3"}; // -0.1 > cosineTheta >= -0.5
167168
Configurable<bool> cfgProcessHel4{"cfgProcessHel4", false, "Process particle pairs from the helicity range 4"}; // -0.5 > cosineTheta >= -1.0
169+
ConfigurableAxis confInvMassMotherpTBinsHel{"confInvMassMotherpTBinsHel", {5, 0, 5}, "pT binning in the pT vs. InvMassMother plot for helicity"};
168170

169171
/// Efficiency
170172
Configurable<std::string> confLocalEfficiency{"confLocalEfficiency", "", "Local path to efficiency .root file"};
@@ -218,10 +220,17 @@ struct FemtoUniversePairTaskTrackV0Helicity {
218220
}
219221
}
220222

221-
bool invMLambda(float invMassLambda, float invMassAntiLambda)
223+
bool invMLambda(float invMassLambda, float invMassAntiLambda, int V0Type)
222224
{
223-
if ((invMassLambda < V0configs.confV0InvMassLowLimit || invMassLambda > V0configs.confV0InvMassUpLimit) && (invMassAntiLambda < V0configs.confV0InvMassLowLimit || invMassAntiLambda > V0configs.confV0InvMassUpLimit)) {
224-
return false;
225+
if (V0configs.confSeparateInvMassCheck) {
226+
const float pMass = V0Type ? invMassAntiLambda : invMassLambda;
227+
if (pMass < V0configs.confV0InvMassLowLimit || pMass > V0configs.confV0InvMassUpLimit) {
228+
return false;
229+
}
230+
} else {
231+
if ((invMassLambda < V0configs.confV0InvMassLowLimit || invMassLambda > V0configs.confV0InvMassUpLimit) && (invMassAntiLambda < V0configs.confV0InvMassLowLimit || invMassAntiLambda > V0configs.confV0InvMassUpLimit)) {
232+
return false;
233+
}
225234
}
226235
return true;
227236
}
@@ -287,6 +296,10 @@ struct FemtoUniversePairTaskTrackV0Helicity {
287296
thetaRegistry.add("Theta/NegativeChild/hThetaPt", " ; p_{T} (GeV/#it{c}); cos(#theta)", kTH2F, {{100, 0, 10}, {110, -1.1, 1.1}});
288297
thetaRegistry.add("Theta/NegativeChild/hThetaEta", " ; #eta; cos(#theta)", kTH2F, {{100, -1, 1}, {110, -1.1, 1.1}});
289298
thetaRegistry.add("Theta/NegativeChild/hThetaPhi", " ; #phi; cos(#theta)", kTH2F, {{100, -1, 7}, {110, -1.1, 1.1}});
299+
thetaRegistry.add("Theta/Mother/hInvMassMotherHel1", " ; p_{T}, M_{#Lambda};", kTH2F, {confInvMassMotherpTBinsHel, {100, 0.5, 1.5}});
300+
thetaRegistry.add("Theta/Mother/hInvMassMotherHel2", " ; p_{T}, M_{#Lambda};", kTH2F, {confInvMassMotherpTBinsHel, {100, 0.5, 1.5}});
301+
thetaRegistry.add("Theta/Mother/hInvMassMotherHel3", " ; p_{T}, M_{#Lambda};", kTH2F, {confInvMassMotherpTBinsHel, {100, 0.5, 1.5}});
302+
thetaRegistry.add("Theta/Mother/hInvMassMotherHel4", " ; p_{T}, M_{#Lambda};", kTH2F, {confInvMassMotherpTBinsHel, {100, 0.5, 1.5}});
290303

291304
/// MC Truth
292305
registryMCtruth.add("plus/MCtruthLambda", "MC truth Lambdas;#it{p}_{T} (GeV/c); #eta", {HistType::kTH2F, {{500, 0, 5}, {400, -1.0, 1.0}}});
@@ -427,7 +440,7 @@ struct FemtoUniversePairTaskTrackV0Helicity {
427440

428441
/// Histogramming same event
429442
for (const auto& part : groupPartsTwo) {
430-
if (!invMLambda(part.mLambda(), part.mAntiLambda()))
443+
if (!invMLambda(part.mLambda(), part.mAntiLambda(), V0configs.confV0Type1))
431444
continue;
432445
const auto& posChild = parts.iteratorAt(part.index() - 2);
433446
const auto& negChild = parts.iteratorAt(part.index() - 1);
@@ -453,6 +466,15 @@ struct FemtoUniversePairTaskTrackV0Helicity {
453466
thetaRegistry.fill(HIST("Theta/NegativeChild/hThetaPt"), negChild.pt(), cosineTheta);
454467
thetaRegistry.fill(HIST("Theta/NegativeChild/hThetaEta"), negChild.eta(), cosineTheta);
455468
thetaRegistry.fill(HIST("Theta/NegativeChild/hThetaPhi"), negChild.phi(), cosineTheta);
469+
470+
if (cosineTheta <= 1.0 && cosineTheta >= 0.1)
471+
thetaRegistry.fill(HIST("Theta/Mother/hInvMassMotherHel1"), part.pt(), part.mLambda());
472+
else if (cosineTheta < 0.1 && cosineTheta >= -0.1)
473+
thetaRegistry.fill(HIST("Theta/Mother/hInvMassMotherHel2"), part.pt(), part.mLambda());
474+
else if (cosineTheta < -0.1 && cosineTheta >= -0.5)
475+
thetaRegistry.fill(HIST("Theta/Mother/hInvMassMotherHel3"), part.pt(), part.mLambda());
476+
else if (cosineTheta < -0.5 && cosineTheta >= -1)
477+
thetaRegistry.fill(HIST("Theta/Mother/hInvMassMotherHel4"), part.pt(), part.mLambda());
456478
}
457479

458480
for (const auto& part : groupPartsOne) {
@@ -476,7 +498,7 @@ struct FemtoUniversePairTaskTrackV0Helicity {
476498
/// Now build the combinations
477499
for (const auto& [p1, p2] : combinations(CombinationsFullIndexPolicy(groupPartsOne, groupPartsTwo))) {
478500
// Lambda invariant mass cut
479-
if (!invMLambda(p2.mLambda(), p2.mAntiLambda()))
501+
if (!invMLambda(p2.mLambda(), p2.mAntiLambda(), V0configs.confV0Type1))
480502
continue;
481503
/// PID using stored binned nsigma
482504
if (!isParticleCombined(p1, trackconfigs.confTrackChoicePartOne))
@@ -517,7 +539,7 @@ struct FemtoUniversePairTaskTrackV0Helicity {
517539
}
518540

519541
case 1: {
520-
if (cosineTheta < 1.0 && cosineTheta >= 0.1)
542+
if (cosineTheta <= 1.0 && cosineTheta >= 0.1)
521543
sameEventContHel1.setPair<false>(p1, p2, multCol, confUse3D, weight);
522544

523545
break;
@@ -592,7 +614,7 @@ struct FemtoUniversePairTaskTrackV0Helicity {
592614

593615
/// Histogramming same event
594616
for (const auto& part : groupPartsTwo) {
595-
if (!invMLambda(part.mLambda(), part.mAntiLambda()))
617+
if (!invMLambda(part.mLambda(), part.mAntiLambda(), V0configs.confV0Type2))
596618
continue;
597619
const auto& posChild = parts.iteratorAt(part.index() - 2);
598620
const auto& negChild = parts.iteratorAt(part.index() - 1);
@@ -613,10 +635,10 @@ struct FemtoUniversePairTaskTrackV0Helicity {
613635

614636
auto pairProcessFunc = [&](auto& p1, auto& p2) -> void {
615637
// Lambda invariant mass cut for p1
616-
if (!invMLambda(p1.mLambda(), p1.mAntiLambda()))
638+
if (!invMLambda(p1.mLambda(), p1.mAntiLambda(), V0configs.confV0Type2))
617639
return;
618640
// Lambda invariant mass cut for p2
619-
if (!invMLambda(p2.mLambda(), p2.mAntiLambda()))
641+
if (!invMLambda(p2.mLambda(), p2.mAntiLambda(), V0configs.confV0Type2))
620642
return;
621643
// track cleaning
622644
if (!pairCleanerV0.isCleanPair(p1, p2, parts)) {
@@ -773,7 +795,7 @@ struct FemtoUniversePairTaskTrackV0Helicity {
773795

774796
for (const auto& [p1, p2] : combinations(CombinationsFullIndexPolicy(groupPartsOne, groupPartsTwo))) {
775797
// Lambda invariant mass cut
776-
if (!invMLambda(p2.mLambda(), p2.mAntiLambda()))
798+
if (!invMLambda(p2.mLambda(), p2.mAntiLambda(), V0configs.confV0Type1))
777799
continue;
778800
/// PID using stored binned nsigma
779801
if (!isParticleCombined(p1, trackconfigs.confTrackChoicePartOne))
@@ -815,7 +837,7 @@ struct FemtoUniversePairTaskTrackV0Helicity {
815837
}
816838

817839
case 1: {
818-
if (cosineTheta < 1.0 && cosineTheta >= 0.1)
840+
if (cosineTheta <= 1.0 && cosineTheta >= 0.1)
819841
mixedEventContHel1.setPair<false>(p1, p2, multCol, confUse3D, weight);
820842

821843
break;
@@ -907,11 +929,11 @@ struct FemtoUniversePairTaskTrackV0Helicity {
907929

908930
for (const auto& [p1, p2] : combinations(CombinationsFullIndexPolicy(groupPartsOne, groupPartsTwo))) {
909931
// Lambda invariant mass cut for p1
910-
if (!invMLambda(p1.mLambda(), p1.mAntiLambda())) {
932+
if (!invMLambda(p1.mLambda(), p1.mAntiLambda(), V0configs.confV0Type2)) {
911933
continue;
912934
}
913935
// Lambda invariant mass cut for p2
914-
if (!invMLambda(p2.mLambda(), p2.mAntiLambda())) {
936+
if (!invMLambda(p2.mLambda(), p2.mAntiLambda(), V0configs.confV0Type2)) {
915937
continue;
916938
}
917939

0 commit comments

Comments
 (0)