Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ struct FemtoUniversePairTaskTrackV0Helicity {
Configurable<int> confPDGCodeV0{"confPDGCodeV0", 3122, "V0 -- PDG code"};
Configurable<int> confPDGCodePosChild{"confPDGCodePosChild", 2212, "Positive Child -- PDG code"};
Configurable<int> confPDGCodeNegChild{"confPDGCodeNegChild", 211, "Negative Child -- PDG code"};
Configurable<bool> confSeparateInvMassCheck{"confSeparateInvMassCheck", false, "Apply additional cut separate for mLambda and mAntiLambda"};
} V0configs;

/// Partitioning for particle 2
Expand Down Expand Up @@ -159,12 +160,13 @@ struct FemtoUniversePairTaskTrackV0Helicity {
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)"};
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)"};

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

/// Efficiency
Configurable<std::string> confLocalEfficiency{"confLocalEfficiency", "", "Local path to efficiency .root file"};
Expand Down Expand Up @@ -218,10 +220,17 @@ struct FemtoUniversePairTaskTrackV0Helicity {
}
}

bool invMLambda(float invMassLambda, float invMassAntiLambda)
bool invMLambda(float invMassLambda, float invMassAntiLambda, int V0Type)
{
if ((invMassLambda < V0configs.confV0InvMassLowLimit || invMassLambda > V0configs.confV0InvMassUpLimit) && (invMassAntiLambda < V0configs.confV0InvMassLowLimit || invMassAntiLambda > V0configs.confV0InvMassUpLimit)) {
return false;
if (V0configs.confSeparateInvMassCheck) {
const float pMass = V0Type ? invMassAntiLambda : invMassLambda;
if (pMass < V0configs.confV0InvMassLowLimit || pMass > V0configs.confV0InvMassUpLimit) {
return false;
}
} else {
if ((invMassLambda < V0configs.confV0InvMassLowLimit || invMassLambda > V0configs.confV0InvMassUpLimit) && (invMassAntiLambda < V0configs.confV0InvMassLowLimit || invMassAntiLambda > V0configs.confV0InvMassUpLimit)) {
return false;
}
}
return true;
}
Expand Down Expand Up @@ -287,6 +296,10 @@ struct FemtoUniversePairTaskTrackV0Helicity {
thetaRegistry.add("Theta/NegativeChild/hThetaPt", " ; p_{T} (GeV/#it{c}); cos(#theta)", kTH2F, {{100, 0, 10}, {110, -1.1, 1.1}});
thetaRegistry.add("Theta/NegativeChild/hThetaEta", " ; #eta; cos(#theta)", kTH2F, {{100, -1, 1}, {110, -1.1, 1.1}});
thetaRegistry.add("Theta/NegativeChild/hThetaPhi", " ; #phi; cos(#theta)", kTH2F, {{100, -1, 7}, {110, -1.1, 1.1}});
thetaRegistry.add("Theta/Mother/hInvMassMotherHel1", " ; p_{T}, M_{#Lambda};", kTH2F, {confInvMassMotherpTBinsHel, {100, 0.5, 1.5}});
thetaRegistry.add("Theta/Mother/hInvMassMotherHel2", " ; p_{T}, M_{#Lambda};", kTH2F, {confInvMassMotherpTBinsHel, {100, 0.5, 1.5}});
thetaRegistry.add("Theta/Mother/hInvMassMotherHel3", " ; p_{T}, M_{#Lambda};", kTH2F, {confInvMassMotherpTBinsHel, {100, 0.5, 1.5}});
thetaRegistry.add("Theta/Mother/hInvMassMotherHel4", " ; p_{T}, M_{#Lambda};", kTH2F, {confInvMassMotherpTBinsHel, {100, 0.5, 1.5}});

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

/// Histogramming same event
for (const auto& part : groupPartsTwo) {
if (!invMLambda(part.mLambda(), part.mAntiLambda()))
if (!invMLambda(part.mLambda(), part.mAntiLambda(), V0configs.confV0Type1))
continue;
const auto& posChild = parts.iteratorAt(part.index() - 2);
const auto& negChild = parts.iteratorAt(part.index() - 1);
Expand All @@ -453,6 +466,15 @@ struct FemtoUniversePairTaskTrackV0Helicity {
thetaRegistry.fill(HIST("Theta/NegativeChild/hThetaPt"), negChild.pt(), cosineTheta);
thetaRegistry.fill(HIST("Theta/NegativeChild/hThetaEta"), negChild.eta(), cosineTheta);
thetaRegistry.fill(HIST("Theta/NegativeChild/hThetaPhi"), negChild.phi(), cosineTheta);

if (cosineTheta <= 1.0 && cosineTheta >= 0.1)
thetaRegistry.fill(HIST("Theta/Mother/hInvMassMotherHel1"), part.pt(), part.mLambda());
else if (cosineTheta < 0.1 && cosineTheta >= -0.1)
thetaRegistry.fill(HIST("Theta/Mother/hInvMassMotherHel2"), part.pt(), part.mLambda());
else if (cosineTheta < -0.1 && cosineTheta >= -0.5)
thetaRegistry.fill(HIST("Theta/Mother/hInvMassMotherHel3"), part.pt(), part.mLambda());
else if (cosineTheta < -0.5 && cosineTheta >= -1)
thetaRegistry.fill(HIST("Theta/Mother/hInvMassMotherHel4"), part.pt(), part.mLambda());
}

for (const auto& part : groupPartsOne) {
Expand All @@ -476,7 +498,7 @@ struct FemtoUniversePairTaskTrackV0Helicity {
/// Now build the combinations
for (const auto& [p1, p2] : combinations(CombinationsFullIndexPolicy(groupPartsOne, groupPartsTwo))) {
// Lambda invariant mass cut
if (!invMLambda(p2.mLambda(), p2.mAntiLambda()))
if (!invMLambda(p2.mLambda(), p2.mAntiLambda(), V0configs.confV0Type1))
continue;
/// PID using stored binned nsigma
if (!isParticleCombined(p1, trackconfigs.confTrackChoicePartOne))
Expand Down Expand Up @@ -517,7 +539,7 @@ struct FemtoUniversePairTaskTrackV0Helicity {
}

case 1: {
if (cosineTheta < 1.0 && cosineTheta >= 0.1)
if (cosineTheta <= 1.0 && cosineTheta >= 0.1)
sameEventContHel1.setPair<false>(p1, p2, multCol, confUse3D, weight);

break;
Expand Down Expand Up @@ -592,7 +614,7 @@ struct FemtoUniversePairTaskTrackV0Helicity {

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

auto pairProcessFunc = [&](auto& p1, auto& p2) -> void {
// Lambda invariant mass cut for p1
if (!invMLambda(p1.mLambda(), p1.mAntiLambda()))
if (!invMLambda(p1.mLambda(), p1.mAntiLambda(), V0configs.confV0Type2))
return;
// Lambda invariant mass cut for p2
if (!invMLambda(p2.mLambda(), p2.mAntiLambda()))
if (!invMLambda(p2.mLambda(), p2.mAntiLambda(), V0configs.confV0Type2))
return;
// track cleaning
if (!pairCleanerV0.isCleanPair(p1, p2, parts)) {
Expand Down Expand Up @@ -773,7 +795,7 @@ struct FemtoUniversePairTaskTrackV0Helicity {

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

case 1: {
if (cosineTheta < 1.0 && cosineTheta >= 0.1)
if (cosineTheta <= 1.0 && cosineTheta >= 0.1)
mixedEventContHel1.setPair<false>(p1, p2, multCol, confUse3D, weight);

break;
Expand Down Expand Up @@ -907,11 +929,11 @@ struct FemtoUniversePairTaskTrackV0Helicity {

for (const auto& [p1, p2] : combinations(CombinationsFullIndexPolicy(groupPartsOne, groupPartsTwo))) {
// Lambda invariant mass cut for p1
if (!invMLambda(p1.mLambda(), p1.mAntiLambda())) {
if (!invMLambda(p1.mLambda(), p1.mAntiLambda(), V0configs.confV0Type2)) {
continue;
}
// Lambda invariant mass cut for p2
if (!invMLambda(p2.mLambda(), p2.mAntiLambda())) {
if (!invMLambda(p2.mLambda(), p2.mAntiLambda(), V0configs.confV0Type2)) {
continue;
}

Expand Down
Loading