Skip to content

Commit 5e97c36

Browse files
committed
Add mass windows and rejections cuts for Lambda, K0S + Add efficiency for generated hadrons in reconstructed jets
1 parent 21d6f8c commit 5e97c36

File tree

1 file changed

+110
-1
lines changed

1 file changed

+110
-1
lines changed

PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx

Lines changed: 110 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,16 @@ struct StrangenessInJetsIons {
168168
Configurable<bool> requireArmenterosCut{"requireArmenterosCut", true, "Require Armenteros Cut"};
169169
Configurable<float> paramArmenterosCut{"paramArmenterosCut", 0.2f, "Parameter Armenteros Cut (K0S only). This parameters multiplies alphaArm (Check if: qtarm >= this * |alphaArm|)"};
170170
Configurable<float> ctauK0s{"ctauK0s", 20.0f, "C tau K0S (cm)"};
171+
Configurable<bool> requireK0sMassCuts{"requireK0sMassCuts", true, "[K0S] Require mass window for K0S selection and for Lambda rejection"};
172+
Configurable<double> lamRejWindow{"lamRejWindow", 0.005f, "[K0S] Mass window for Lambda rejection"};
173+
Configurable<double> k0sMassWindow{"k0sMassWindow", 0.1f, "[K0S] Mass window for K0S selection"};
171174
// Lambda/anti-Lambda paramaters
172175
Configurable<double> dcaProtonToPVmin{"dcaProtonToPVmin", 0.05f, "Minimum DCA of proton/anti-proton track to primary vertex in Lambda/anti-Lambda decays (cm)"};
173176
Configurable<double> dcaPionToPVmin{"dcaPionToPVmin", 0.2f, "Minimum DCA of pion-/pion+ track to primary vertex in Lambda/anti-Lambda decays (cm)"};
174177
Configurable<float> ctauLambda{"ctauLambda", 30.0f, "C tau Lambda (cm)"};
178+
Configurable<bool> requireLambdaMassCuts{"requireLambdaMassCuts", true, "[Lambda] Require mass window for Lambda selection and for K0S rejection"};
179+
Configurable<double> k0sRejWindow{"k0sRejWindow", 0.010f, "[Lambda] Mass window for K0S rejection"};
180+
Configurable<double> lamMassWindow{"lamMassWindow", 0.1f, "[Lambda] Mass window for Lambda selection"};
175181
} configV0;
176182

177183
// Cascade analysis parameters
@@ -359,7 +365,7 @@ struct StrangenessInJetsIons {
359365
}
360366
if (particleOfInterestDict[ParticleOfInterest::kPions]) {
361367
registryMC.add("PionPos_generated_jet", "PionPos_generated_jet", HistType::kTH2F, {multAxis, ptAxisLongLived});
362-
registryMC.add("PionNeg_generated_jet", "PionNeg_generated_jet", HistType::kTH2F, {multAxis, ptAxisLongLived});
368+
registryMC.add("PionNeg_generated_jet", "PionNeg_generated_jet", HistType::kTH2F, {multAxis, ptAxisLongLived});
363369
registryMC.add("PionPos_generated_ue", "PionPos_generated_ue", HistType::kTH2F, {multAxis, ptAxisLongLived});
364370
registryMC.add("PionNeg_generated_ue", "PionNeg_generated_ue", HistType::kTH2F, {multAxis, ptAxisLongLived});
365371

@@ -426,6 +432,14 @@ struct StrangenessInJetsIons {
426432
registryMC.add("AntiLambda_reconstructed_jet_incl", "AntiLambda_reconstructed_jet_incl", HistType::kTH2F, {multAxis, ptAxis});
427433
registryMC.add("AntiLambda_reconstructed_ue_incl", "AntiLambda_reconstructed_ue_incl", HistType::kTH2F, {multAxis, ptAxis});
428434

435+
// Histograms for generated particles in reconstructed events
436+
registryMC.add("K0s_gen_recoEvent_jet", "K0s_gen_recoEvent_jet", HistType::kTH2F, {multAxis, ptAxis});
437+
registryMC.add("K0s_gen_recoEvent_ue", "K0s_gen_recoEvent_ue", HistType::kTH2F, {multAxis, ptAxis});
438+
registryMC.add("Lambda_gen_recoEvent_jet", "Lambda_gen_recoEvent_jet", HistType::kTH2F, {multAxis, ptAxis});
439+
registryMC.add("Lambda_gen_recoEvent_ue", "Lambda_gen_recoEvent_ue", HistType::kTH2F, {multAxis, ptAxis});
440+
registryMC.add("AntiLambda_gen_recoEvent_jet", "AntiLambda_gen_recoEvent_jet", HistType::kTH2F, {multAxis, ptAxis});
441+
registryMC.add("AntiLambda_gen_recoEvent_ue", "AntiLambda_gen_recoEvent_ue", HistType::kTH2F, {multAxis, ptAxis});
442+
429443
// Histograms for the full event (without jets)
430444
registryMC.add("K0s_reconstructed_MB", "K0s_reconstructed_MB", HistType::kTH2F, {multAxis, ptAxis});
431445
registryMC.add("Lambda_reconstructed_MB", "Lambda_reconstructed_MB", HistType::kTH2F, {multAxis, ptAxis});
@@ -667,6 +681,14 @@ struct StrangenessInJetsIons {
667681
if (ntrack.tpcNSigmaPi() < configTracks.nsigmaTPCmin || ntrack.tpcNSigmaPi() > configTracks.nsigmaTPCmax)
668682
return false;
669683

684+
if (configV0.requireLambdaMassCuts &&
685+
std::abs(v0.mK0Short() - o2::constants::physics::MassK0Short) < configV0.k0sRejWindow)
686+
return false;
687+
688+
if (configV0.requireLambdaMassCuts &&
689+
std::abs(v0.mLambda() - o2::constants::physics::MassLambda) > configV0.lamMassWindow)
690+
return false;
691+
670692
// PID selections (TOF): positive track = proton, negative track = pion
671693
if (configTracks.requireTOF) {
672694
if (ptrack.tofNSigmaPr() < configTracks.nsigmaTOFmin || ptrack.tofNSigmaPr() > configTracks.nsigmaTOFmax)
@@ -720,6 +742,14 @@ struct StrangenessInJetsIons {
720742
if (ntrack.tpcNSigmaPr() < configTracks.nsigmaTPCmin || ntrack.tpcNSigmaPr() > configTracks.nsigmaTPCmax)
721743
return false;
722744

745+
if (configV0.requireLambdaMassCuts &&
746+
std::abs(v0.mK0Short() - o2::constants::physics::MassK0Short) < configV0.k0sRejWindow)
747+
return false;
748+
749+
if (configV0.requireLambdaMassCuts &&
750+
std::abs(v0.mLambda() - o2::constants::physics::MassLambda) > configV0.lamMassWindow)
751+
return false;
752+
723753
// PID selections (TOF): negative track = proton, positive track = pion
724754
if (configTracks.requireTOF) {
725755
if (ptrack.tofNSigmaPi() < configTracks.nsigmaTOFmin || ptrack.tofNSigmaPi() > configTracks.nsigmaTOFmax)
@@ -778,6 +808,15 @@ struct StrangenessInJetsIons {
778808
if (ntrack.tpcNSigmaPi() < configTracks.nsigmaTPCmin || ntrack.tpcNSigmaPi() > configTracks.nsigmaTPCmax)
779809
return false;
780810

811+
if (configV0.requireK0sMassCuts &&
812+
(std::abs(v0.mLambda() - o2::constants::physics::MassLambda) < configV0.lamRejWindow ||
813+
std::abs(v0.mAntiLambda() - o2::constants::physics::MassLambda) < configV0.lamRejWindow))
814+
return false;
815+
816+
if (configV0.requireK0sMassCuts &&
817+
std::abs(v0.mK0Short() - o2::constants::physics::MassK0Short) > configV0.k0sMassWindow)
818+
return false;
819+
781820
// PID selections (TOF)
782821
if (configTracks.requireTOF) {
783822
if (ptrack.tofNSigmaPi() < configTracks.nsigmaTOFmin || ptrack.tofNSigmaPi() > configTracks.nsigmaTOFmax)
@@ -1971,6 +2010,7 @@ struct StrangenessInJetsIons {
19712010
auto v0sPerColl = fullV0s.sliceBy(perCollisionV0, collision.globalIndex());
19722011
auto cascPerColl = Cascades.sliceBy(perCollisionCasc, collision.globalIndex());
19732012
auto tracksPerColl = mcTracks.sliceBy(perCollisionTrk, collision.globalIndex());
2013+
const auto& mcParticlesPerColl = mcParticles.sliceBy(perMCCollision, mcCollision.globalIndex());
19742014

19752015
FillFullEventHistoMCREC(collision, mcParticles, v0sPerColl,
19762016
cascPerColl, tracksPerColl, multiplicity);
@@ -2035,6 +2075,75 @@ struct StrangenessInJetsIons {
20352075
// Loop over selected jets
20362076
for (int i = 0; i < static_cast<int>(selectedJet.size()); i++) {
20372077

2078+
// ------------------------------------------------
2079+
// --- Generated hadrons in reconstructed jets ----
2080+
for (auto& particle : mcParticlesPerColl) {
2081+
if (!particle.isPhysicalPrimary() || std::abs(particle.eta()) > 0.8)
2082+
continue;
2083+
2084+
int absPdg = std::abs(particle.pdgCode());
2085+
if (absPdg != kK0Short && absPdg != kLambda0 )
2086+
continue;
2087+
2088+
TVector3 momVec(particle.px(), particle.py(), particle.pz());
2089+
2090+
// Compute distance of particles from jet and UE axes
2091+
const double deltaEtaJet = momVec.Eta() - selectedJet[i].Eta();
2092+
const double deltaPhiJet = getDeltaPhi(momVec.Phi(), selectedJet[i].Phi());
2093+
const double deltaRJet = std::sqrt(deltaEtaJet * deltaEtaJet + deltaPhiJet * deltaPhiJet);
2094+
const double deltaEtaUe1 = momVec.Eta() - ue1[i].Eta();
2095+
const double deltaPhiUe1 = getDeltaPhi(momVec.Phi(), ue1[i].Phi());
2096+
const double deltaRUe1 = std::sqrt(deltaEtaUe1 * deltaEtaUe1 + deltaPhiUe1 * deltaPhiUe1);
2097+
const double deltaEtaUe2 = momVec.Eta() - ue2[i].Eta();
2098+
const double deltaPhiUe2 = getDeltaPhi(momVec.Phi(), ue2[i].Phi());
2099+
const double deltaRUe2 = std::sqrt(deltaEtaUe2 * deltaEtaUe2 + deltaPhiUe2 * deltaPhiUe2);
2100+
2101+
// Select particles inside jet
2102+
if (deltaRJet < rJet) {
2103+
switch (particle.pdgCode()) {
2104+
case kK0Short:
2105+
if (particleOfInterestDict[ParticleOfInterest::kV0Particles]) {
2106+
registryMC.fill(HIST("K0s_gen_recoEvent_jet"), multiplicity, momVec.Pt());
2107+
}
2108+
break;
2109+
case kLambda0:
2110+
if (particleOfInterestDict[ParticleOfInterest::kV0Particles]) {
2111+
registryMC.fill(HIST("Lambda_gen_recoEvent_jet"), multiplicity, momVec.Pt());
2112+
}
2113+
break;
2114+
case kLambda0Bar:
2115+
if (particleOfInterestDict[ParticleOfInterest::kV0Particles]) {
2116+
registryMC.fill(HIST("AntiLambda_gen_recoEvent_jet"), multiplicity, momVec.Pt());
2117+
}
2118+
break;
2119+
default:
2120+
break;
2121+
}
2122+
}
2123+
if (deltaRUe1 < rJet || deltaRUe2 < rJet) {
2124+
switch (particle.pdgCode()) {
2125+
case kK0Short:
2126+
if (particleOfInterestDict[ParticleOfInterest::kV0Particles]) {
2127+
registryMC.fill(HIST("K0s_gen_recoEvent_ue"), multiplicity, momVec.Pt());
2128+
}
2129+
break;
2130+
case kLambda0:
2131+
if (particleOfInterestDict[ParticleOfInterest::kV0Particles]) {
2132+
registryMC.fill(HIST("Lambda_gen_recoEvent_ue"), multiplicity, momVec.Pt());
2133+
}
2134+
break;
2135+
case kLambda0Bar:
2136+
if (particleOfInterestDict[ParticleOfInterest::kV0Particles]) {
2137+
registryMC.fill(HIST("AntiLambda_gen_recoEvent_ue"), multiplicity, momVec.Pt());
2138+
}
2139+
break;
2140+
default:
2141+
break;
2142+
}
2143+
}
2144+
}
2145+
// ----------------------------------------
2146+
20382147
// V0 particles
20392148
if (particleOfInterestDict[ParticleOfInterest::kV0Particles]) {
20402149
for (const auto& v0 : v0sPerColl) {

0 commit comments

Comments
 (0)