Skip to content

Commit 2a704bc

Browse files
[PWGLF] Add lifetime preselection + QA histogram in strangenessbuilder (#11340)
1 parent cba6bc8 commit 2a704bc

File tree

1 file changed

+195
-46
lines changed

1 file changed

+195
-46
lines changed

PWGLF/TableProducer/Strangeness/strangenessbuilder.cxx

Lines changed: 195 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,9 @@ using TracksWithExtra = soa::Join<aod::Tracks, aod::TracksExtra>;
149149
// For dE/dx association in pre-selection
150150
using TracksExtraWithPID = soa::Join<aod::TracksExtra, aod::pidTPCFullEl, aod::pidTPCFullPi, aod::pidTPCFullPr, aod::pidTPCFullKa, aod::pidTPCFullHe>;
151151

152+
// simple checkers, but ensure 8 bit integers
153+
#define BITSET(var, nbit) ((var) |= (static_cast<uint8_t>(1) << static_cast<uint8_t>(nbit)))
154+
152155
struct StrangenessBuilder {
153156
// helper object
154157
o2::pwglf::strangenessBuilderHelper straHelper;
@@ -193,6 +196,16 @@ struct StrangenessBuilder {
193196
kCascFoundTags,
194197
nTables };
195198

199+
enum V0PreSelection : uint8_t { selGamma = 0,
200+
selK0Short,
201+
selLambda,
202+
selAntiLambda };
203+
204+
enum CascPreSelection : uint8_t { selXiMinus = 0,
205+
selXiPlus,
206+
selOmegaMinus,
207+
selOmegaPlus };
208+
196209
struct : ProducesGroup {
197210
//__________________________________________________
198211
// V0 tables
@@ -356,12 +369,24 @@ struct StrangenessBuilder {
356369
static constexpr float defaultLambdaWindowParameters[1][4] = {{1.17518e-03, 1.24099e-04, 5.47937e-03, 3.08009e-01}};
357370
static constexpr float defaultXiMassWindowParameters[1][4] = {{1.43210e-03, 2.03561e-04, 2.43187e-03, 7.99668e-01}};
358371
static constexpr float defaultOmMassWindowParameters[1][4] = {{1.43210e-03, 2.03561e-04, 2.43187e-03, 7.99668e-01}};
372+
373+
static constexpr float defaultLifetimeCuts[1][4] = {{20, 60, 40, 20}};
374+
359375
// preselection options
360376
struct : ConfigurableGroup {
361377
std::string prefix = "preSelectOpts";
362378
Configurable<bool> preselectOnlyDesiredV0s{"preselectOnlyDesiredV0s", false, "preselect only V0s with compatible TPC PID and mass info"};
363379
Configurable<bool> preselectOnlyDesiredCascades{"preselectOnlyDesiredCascades", false, "preselect only Cascades with compatible TPC PID and mass info"};
364380

381+
// lifetime preselection options
382+
// apply lifetime cuts to V0 and cascade candidates
383+
// unit of measurement: centimeters
384+
// lifetime of K0Short ~2.6844 cm, no feeddown and plenty to cut
385+
// lifetime of Lambda ~7.9 cm but keep in mind feeddown from cascades
386+
// lifetime of Xi ~4.91 cm
387+
// lifetime of Omega ~2.461 cm
388+
Configurable<LabeledArray<float>> lifetimeCut{"lifetimeCut", {defaultLifetimeCuts[0], 4, {"lifetimeCutK0S", "lifetimeCutLambda", "lifetimeCutXi", "lifetimeCutOmega"}}, "Lifetime cut for V0s and cascades (cm)"};
389+
365390
// mass preselection options
366391
Configurable<float> massCutPhoton{"massCutPhoton", 0.3, "Photon max mass"};
367392
Configurable<LabeledArray<float>> massCutK0{"massCutK0", {defaultK0MassWindowParameters[0], 4, {"constant", "linear", "expoConstant", "expoRelax"}}, "mass parameters for K0"};
@@ -514,6 +539,46 @@ struct StrangenessBuilder {
514539
hDeduplicationStatistics->GetXaxis()->SetBinLabel(2, "Deduplicated V0s");
515540
}
516541

542+
if (preSelectOpts.preselectOnlyDesiredV0s.value == true) {
543+
auto hPreselectionV0s = histos.add<TH1>("hPreselectionV0s", "hPreselectionV0s", kTH1D, {{16, -0.5f, 15.5f}});
544+
hPreselectionV0s->GetXaxis()->SetBinLabel(1, "Not preselected");
545+
hPreselectionV0s->GetXaxis()->SetBinLabel(2, "#gamma");
546+
hPreselectionV0s->GetXaxis()->SetBinLabel(3, "K^{0}_{S}");
547+
hPreselectionV0s->GetXaxis()->SetBinLabel(4, "#gamma, K^{0}_{S}");
548+
hPreselectionV0s->GetXaxis()->SetBinLabel(5, "#Lambda");
549+
hPreselectionV0s->GetXaxis()->SetBinLabel(6, "#gamma, #Lambda");
550+
hPreselectionV0s->GetXaxis()->SetBinLabel(7, "K^{0}_{S}, #Lambda");
551+
hPreselectionV0s->GetXaxis()->SetBinLabel(8, "#gamma, K^{0}_{S}, #Lambda");
552+
hPreselectionV0s->GetXaxis()->SetBinLabel(9, "#bar{#Lambda}");
553+
hPreselectionV0s->GetXaxis()->SetBinLabel(10, "#gamma, #bar{#Lambda}");
554+
hPreselectionV0s->GetXaxis()->SetBinLabel(11, "K^{0}_{S}, #bar{#Lambda}");
555+
hPreselectionV0s->GetXaxis()->SetBinLabel(12, "#gamma, K^{0}_{S}, #bar{#Lambda}");
556+
hPreselectionV0s->GetXaxis()->SetBinLabel(13, "#Lambda, #bar{#Lambda}");
557+
hPreselectionV0s->GetXaxis()->SetBinLabel(14, "#gamma, #Lambda, #bar{#Lambda}");
558+
hPreselectionV0s->GetXaxis()->SetBinLabel(15, "K^{0}_{S}, #Lambda, #bar{#Lambda}");
559+
hPreselectionV0s->GetXaxis()->SetBinLabel(16, "#gamma, K^{0}_{S}, #Lambda, #bar{#Lambda}");
560+
}
561+
562+
if (preSelectOpts.preselectOnlyDesiredCascades.value == true) {
563+
auto hPreselectionCascades = histos.add<TH1>("hPreselectionCascades", "hPreselectionCascades", kTH1D, {{16, -0.5f, 15.5f}});
564+
hPreselectionCascades->GetXaxis()->SetBinLabel(1, "Not preselected");
565+
hPreselectionCascades->GetXaxis()->SetBinLabel(2, "#Xi^{-}");
566+
hPreselectionCascades->GetXaxis()->SetBinLabel(3, "#Xi^{+}");
567+
hPreselectionCascades->GetXaxis()->SetBinLabel(4, "#Xi^{-}, #Xi^{+}");
568+
hPreselectionCascades->GetXaxis()->SetBinLabel(5, "#Omega^{-}");
569+
hPreselectionCascades->GetXaxis()->SetBinLabel(6, "#Xi^{-}, #Omega^{-}");
570+
hPreselectionCascades->GetXaxis()->SetBinLabel(7, "#Xi^{+}, #Omega^{-}");
571+
hPreselectionCascades->GetXaxis()->SetBinLabel(8, "#Xi^{-}, #Xi^{+}, #Omega^{-}");
572+
hPreselectionCascades->GetXaxis()->SetBinLabel(9, "#Omega^{+}");
573+
hPreselectionCascades->GetXaxis()->SetBinLabel(10, "#Xi^{-}, #Omega^{+}");
574+
hPreselectionCascades->GetXaxis()->SetBinLabel(11, "#Xi^{+}, #Omega^{+}");
575+
hPreselectionCascades->GetXaxis()->SetBinLabel(12, "#Xi^{-}, #Xi^{+}, #Omega^{+}");
576+
hPreselectionCascades->GetXaxis()->SetBinLabel(13, "#Omega^{-}, #Omega^{+}");
577+
hPreselectionCascades->GetXaxis()->SetBinLabel(14, "#Xi^{-}, #Omega^{-}, #Omega^{+}");
578+
hPreselectionCascades->GetXaxis()->SetBinLabel(15, "#Xi^{+}, #Omega^{-}, #Omega^{+}");
579+
hPreselectionCascades->GetXaxis()->SetBinLabel(16, "#Xi^{-}, #Xi^{+}, #Omega^{-}, #Omega^{+}");
580+
}
581+
517582
if (mc_findableMode.value > 0) {
518583
// save statistics of findable candidate processing
519584
auto hFindable = histos.add<TH1>("hFindableStatistics", "hFindableStatistics", kTH1D, {{6, -0.5f, 5.5f}});
@@ -648,6 +713,11 @@ struct StrangenessBuilder {
648713
straHelper.cascadeselections.maxDaughterEta = cascadeBuilderOpts.maxDaughterEta;
649714
}
650715

716+
bool verifyMask(uint8_t bitmap, uint8_t mask)
717+
{
718+
return (bitmap & mask) == mask;
719+
}
720+
651721
// for sorting
652722
template <typename T>
653723
std::vector<std::size_t> sort_indices(const std::vector<T>& v, bool doSorting = false)
@@ -1367,23 +1437,55 @@ struct StrangenessBuilder {
13671437
straHelper.v0.positiveMomentum[0] + straHelper.v0.negativeMomentum[0],
13681438
straHelper.v0.positiveMomentum[1] + straHelper.v0.negativeMomentum[1]);
13691439

1370-
if (
1371-
!( // photon PID and mass selection
1372-
std::abs(posTrack.tpcNSigmaEl()) < preSelectOpts.maxTPCpidNsigma &&
1373-
std::abs(negTrack.tpcNSigmaEl()) < preSelectOpts.maxTPCpidNsigma &&
1374-
std::abs(straHelper.v0.massGamma) < preSelectOpts.massCutPhoton) &&
1375-
!( // K0Short PID and mass selection
1376-
std::abs(posTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
1377-
std::abs(negTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
1378-
std::abs(straHelper.v0.massK0Short - o2::constants::physics::MassKaonNeutral) < preSelectOpts.massWindownumberOfSigmas * getMassSigmaK0Short(lPt) + preSelectOpts.massWindowSafetyMargin) &&
1379-
!( // Lambda PID and mass selection
1380-
std::abs(posTrack.tpcNSigmaPr()) < preSelectOpts.maxTPCpidNsigma &&
1381-
std::abs(negTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
1382-
std::abs(straHelper.v0.massLambda - o2::constants::physics::MassLambda) < preSelectOpts.massWindownumberOfSigmas * getMassSigmaLambda(lPt) + preSelectOpts.massWindowSafetyMargin) &&
1383-
!( // antiLambda PID and mass selection
1384-
std::abs(posTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
1385-
std::abs(negTrack.tpcNSigmaPr()) < preSelectOpts.maxTPCpidNsigma &&
1386-
std::abs(straHelper.v0.massAntiLambda - o2::constants::physics::MassLambda) < preSelectOpts.massWindownumberOfSigmas * getMassSigmaLambda(lPt) + preSelectOpts.massWindowSafetyMargin)) {
1440+
float lPtot = RecoDecay::sqrtSumOfSquares(
1441+
straHelper.v0.positiveMomentum[0] + straHelper.v0.negativeMomentum[0],
1442+
straHelper.v0.positiveMomentum[1] + straHelper.v0.negativeMomentum[1],
1443+
straHelper.v0.positiveMomentum[2] + straHelper.v0.negativeMomentum[2]);
1444+
1445+
float lLengthTraveled = RecoDecay::sqrtSumOfSquares(
1446+
straHelper.v0.position[0] - pvX,
1447+
straHelper.v0.position[1] - pvY,
1448+
straHelper.v0.position[2] - pvZ);
1449+
1450+
uint8_t maskV0Preselection = 0;
1451+
1452+
if ( // photon PID, mass, lifetime selection
1453+
std::abs(posTrack.tpcNSigmaEl()) < preSelectOpts.maxTPCpidNsigma &&
1454+
std::abs(negTrack.tpcNSigmaEl()) < preSelectOpts.maxTPCpidNsigma &&
1455+
std::abs(straHelper.v0.massGamma) < preSelectOpts.massCutPhoton) {
1456+
BITSET(maskV0Preselection, selGamma);
1457+
}
1458+
1459+
if ( // K0Short PID, mass, lifetime selection
1460+
std::abs(posTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
1461+
std::abs(negTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
1462+
o2::constants::physics::MassKaonNeutral * lLengthTraveled / (lPtot + 1e-13) < preSelectOpts.lifetimeCut->get("lifetimeCutK0S") &&
1463+
std::abs(straHelper.v0.massK0Short - o2::constants::physics::MassKaonNeutral) < preSelectOpts.massWindownumberOfSigmas * getMassSigmaK0Short(lPt) + preSelectOpts.massWindowSafetyMargin) {
1464+
BITSET(maskV0Preselection, selK0Short);
1465+
}
1466+
1467+
if ( // Lambda PID, mass, lifetime selection
1468+
std::abs(posTrack.tpcNSigmaPr()) < preSelectOpts.maxTPCpidNsigma &&
1469+
std::abs(negTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
1470+
o2::constants::physics::MassLambda * lLengthTraveled / (lPtot + 1e-13) < preSelectOpts.lifetimeCut->get("lifetimeCutLambda") &&
1471+
std::abs(straHelper.v0.massLambda - o2::constants::physics::MassLambda) < preSelectOpts.massWindownumberOfSigmas * getMassSigmaLambda(lPt) + preSelectOpts.massWindowSafetyMargin) {
1472+
BITSET(maskV0Preselection, selLambda);
1473+
}
1474+
1475+
if ( // antiLambda PID, mass, lifetime selection
1476+
std::abs(posTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
1477+
std::abs(negTrack.tpcNSigmaPr()) < preSelectOpts.maxTPCpidNsigma &&
1478+
o2::constants::physics::MassLambda * lLengthTraveled / (lPtot + 1e-13) < preSelectOpts.lifetimeCut->get("lifetimeCutLambda") &&
1479+
std::abs(straHelper.v0.massAntiLambda - o2::constants::physics::MassLambda) < preSelectOpts.massWindownumberOfSigmas * getMassSigmaLambda(lPt) + preSelectOpts.massWindowSafetyMargin) {
1480+
BITSET(maskV0Preselection, selAntiLambda);
1481+
}
1482+
1483+
histos.fill(HIST("hPreselectionV0s"), maskV0Preselection);
1484+
1485+
if (!verifyMask(maskV0Preselection, selGamma) &&
1486+
!verifyMask(maskV0Preselection, selK0Short) &&
1487+
!verifyMask(maskV0Preselection, selLambda) &&
1488+
!verifyMask(maskV0Preselection, selAntiLambda)) {
13871489
products.v0dataLink(-1, -1);
13881490
continue;
13891491
}
@@ -1871,35 +1973,82 @@ struct StrangenessBuilder {
18711973

18721974
if constexpr (requires { posTrack.tpcNSigmaEl(); }) {
18731975
if (preSelectOpts.preselectOnlyDesiredCascades) {
1874-
if (
1875-
float lPt = RecoDecay::sqrtSumOfSquares(
1876-
straHelper.cascade.bachelorMomentum[0] + straHelper.cascade.positiveMomentum[0] + straHelper.cascade.negativeMomentum[0],
1877-
straHelper.cascade.bachelorMomentum[1] + straHelper.cascade.positiveMomentum[1] + straHelper.cascade.negativeMomentum[1]);
1878-
1879-
!( // XiMinus PID and mass selection
1880-
straHelper.cascade.charge < 0 &&
1881-
std::abs(posTrack.tpcNSigmaPr()) < preSelectOpts.maxTPCpidNsigma &&
1882-
std::abs(negTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
1883-
std::abs(bachTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
1884-
std::abs(straHelper.cascade.massXi - o2::constants::physics::MassXiMinus) < preSelectOpts.massWindownumberOfSigmas * getMassSigmaXi(lPt) + preSelectOpts.massWindowSafetyMargin) &&
1885-
!( // XiPlus PID and mass selection
1886-
straHelper.cascade.charge > 0 &&
1887-
std::abs(posTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
1888-
std::abs(negTrack.tpcNSigmaPr()) < preSelectOpts.maxTPCpidNsigma &&
1889-
std::abs(bachTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
1890-
std::abs(straHelper.cascade.massXi - o2::constants::physics::MassXiMinus) < preSelectOpts.massWindownumberOfSigmas * getMassSigmaXi(lPt) + preSelectOpts.massWindowSafetyMargin) &&
1891-
!( // OmegaMinus PID and mass selection
1892-
straHelper.cascade.charge < 0 &&
1893-
std::abs(posTrack.tpcNSigmaPr()) < preSelectOpts.maxTPCpidNsigma &&
1894-
std::abs(negTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
1895-
std::abs(bachTrack.tpcNSigmaKa()) < preSelectOpts.maxTPCpidNsigma &&
1896-
std::abs(straHelper.cascade.massOmega - o2::constants::physics::MassOmegaMinus) < preSelectOpts.massWindownumberOfSigmas * getMassSigmaOmega(lPt) + preSelectOpts.massWindowSafetyMargin) &&
1897-
!( // OmegaPlus PID and mass selection
1898-
straHelper.cascade.charge > 0 &&
1899-
std::abs(posTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
1900-
std::abs(negTrack.tpcNSigmaPr()) < preSelectOpts.maxTPCpidNsigma &&
1901-
std::abs(bachTrack.tpcNSigmaKa()) < preSelectOpts.maxTPCpidNsigma &&
1902-
std::abs(straHelper.cascade.massOmega - o2::constants::physics::MassOmegaMinus) < preSelectOpts.massWindownumberOfSigmas * getMassSigmaOmega(lPt) + preSelectOpts.massWindowSafetyMargin)) {
1976+
float lPt = RecoDecay::sqrtSumOfSquares(
1977+
straHelper.cascade.bachelorMomentum[0] + straHelper.cascade.positiveMomentum[0] + straHelper.cascade.negativeMomentum[0],
1978+
straHelper.cascade.bachelorMomentum[1] + straHelper.cascade.positiveMomentum[1] + straHelper.cascade.negativeMomentum[1]);
1979+
1980+
float lPtot = RecoDecay::sqrtSumOfSquares(
1981+
straHelper.cascade.bachelorMomentum[0] + straHelper.cascade.positiveMomentum[0] + straHelper.cascade.negativeMomentum[0],
1982+
straHelper.cascade.bachelorMomentum[1] + straHelper.cascade.positiveMomentum[1] + straHelper.cascade.negativeMomentum[1],
1983+
straHelper.cascade.bachelorMomentum[2] + straHelper.cascade.positiveMomentum[2] + straHelper.cascade.negativeMomentum[2]);
1984+
1985+
float lV0Ptot = RecoDecay::sqrtSumOfSquares(
1986+
straHelper.cascade.positiveMomentum[0] + straHelper.cascade.negativeMomentum[0],
1987+
straHelper.cascade.positiveMomentum[1] + straHelper.cascade.negativeMomentum[1],
1988+
straHelper.cascade.positiveMomentum[2] + straHelper.cascade.negativeMomentum[2]);
1989+
1990+
float lLengthTraveled = RecoDecay::sqrtSumOfSquares(
1991+
straHelper.cascade.cascadePosition[0] - pvX,
1992+
straHelper.cascade.cascadePosition[1] - pvY,
1993+
straHelper.cascade.cascadePosition[2] - pvZ);
1994+
1995+
float lV0LengthTraveled = RecoDecay::sqrtSumOfSquares(
1996+
straHelper.cascade.v0Position[0] - straHelper.cascade.cascadePosition[0],
1997+
straHelper.cascade.v0Position[1] - straHelper.cascade.cascadePosition[1],
1998+
straHelper.cascade.v0Position[2] - straHelper.cascade.cascadePosition[2]);
1999+
2000+
uint8_t maskCascadePreselection = 0;
2001+
2002+
if ( // XiMinus PID and mass selection
2003+
straHelper.cascade.charge < 0 &&
2004+
std::abs(posTrack.tpcNSigmaPr()) < preSelectOpts.maxTPCpidNsigma &&
2005+
std::abs(negTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
2006+
std::abs(bachTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
2007+
o2::constants::physics::MassLambda * lV0LengthTraveled / (lV0Ptot + 1e-13) < preSelectOpts.lifetimeCut->get("lifetimeCutLambda") &&
2008+
o2::constants::physics::MassXiMinus * lLengthTraveled / (lPtot + 1e-13) < preSelectOpts.lifetimeCut->get("lifetimeCutXi") &&
2009+
std::abs(straHelper.cascade.massXi - o2::constants::physics::MassXiMinus) < preSelectOpts.massWindownumberOfSigmas * getMassSigmaXi(lPt) + preSelectOpts.massWindowSafetyMargin) {
2010+
BITSET(maskCascadePreselection, selXiMinus);
2011+
}
2012+
2013+
if ( // XiPlus PID and mass selection
2014+
straHelper.cascade.charge > 0 &&
2015+
std::abs(posTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
2016+
std::abs(negTrack.tpcNSigmaPr()) < preSelectOpts.maxTPCpidNsigma &&
2017+
std::abs(bachTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
2018+
o2::constants::physics::MassLambda * lV0LengthTraveled / (lV0Ptot + 1e-13) < preSelectOpts.lifetimeCut->get("lifetimeCutLambda") &&
2019+
o2::constants::physics::MassXiMinus * lLengthTraveled / (lPtot + 1e-13) < preSelectOpts.lifetimeCut->get("lifetimeCutXi") &&
2020+
std::abs(straHelper.cascade.massXi - o2::constants::physics::MassXiMinus) < preSelectOpts.massWindownumberOfSigmas * getMassSigmaXi(lPt) + preSelectOpts.massWindowSafetyMargin) {
2021+
BITSET(maskCascadePreselection, selXiPlus);
2022+
}
2023+
2024+
if ( // OmegaMinus PID and mass selection
2025+
straHelper.cascade.charge < 0 &&
2026+
std::abs(posTrack.tpcNSigmaPr()) < preSelectOpts.maxTPCpidNsigma &&
2027+
std::abs(negTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
2028+
std::abs(bachTrack.tpcNSigmaKa()) < preSelectOpts.maxTPCpidNsigma &&
2029+
o2::constants::physics::MassLambda * lV0LengthTraveled / (lV0Ptot + 1e-13) < preSelectOpts.lifetimeCut->get("lifetimeCutLambda") &&
2030+
o2::constants::physics::MassOmegaMinus * lLengthTraveled / (lPtot + 1e-13) < preSelectOpts.lifetimeCut->get("lifetimeCutOmega") &&
2031+
std::abs(straHelper.cascade.massOmega - o2::constants::physics::MassOmegaMinus) < preSelectOpts.massWindownumberOfSigmas * getMassSigmaOmega(lPt) + preSelectOpts.massWindowSafetyMargin) {
2032+
BITSET(maskCascadePreselection, selOmegaMinus);
2033+
}
2034+
2035+
if ( // OmegaPlus PID and mass selection
2036+
straHelper.cascade.charge > 0 &&
2037+
std::abs(posTrack.tpcNSigmaPi()) < preSelectOpts.maxTPCpidNsigma &&
2038+
std::abs(negTrack.tpcNSigmaPr()) < preSelectOpts.maxTPCpidNsigma &&
2039+
std::abs(bachTrack.tpcNSigmaKa()) < preSelectOpts.maxTPCpidNsigma &&
2040+
o2::constants::physics::MassLambda * lV0LengthTraveled / (lV0Ptot + 1e-13) < preSelectOpts.lifetimeCut->get("lifetimeCutLambda") &&
2041+
o2::constants::physics::MassOmegaMinus * lLengthTraveled / (lPtot + 1e-13) < preSelectOpts.lifetimeCut->get("lifetimeCutOmega") &&
2042+
std::abs(straHelper.cascade.massOmega - o2::constants::physics::MassOmegaMinus) < preSelectOpts.massWindownumberOfSigmas * getMassSigmaOmega(lPt) + preSelectOpts.massWindowSafetyMargin) {
2043+
BITSET(maskCascadePreselection, selOmegaPlus);
2044+
}
2045+
2046+
histos.fill(HIST("hPreselectionCascades"), maskCascadePreselection);
2047+
2048+
if (!verifyMask(maskCascadePreselection, selXiMinus) &&
2049+
!verifyMask(maskCascadePreselection, selXiPlus) &&
2050+
!verifyMask(maskCascadePreselection, selOmegaMinus) &&
2051+
!verifyMask(maskCascadePreselection, selOmegaPlus)) {
19032052
products.cascdataLink(-1);
19042053
interlinks.cascadeToCascCores.push_back(-1);
19052054
continue;

0 commit comments

Comments
 (0)